欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    学生考勤管理系统方案.docx

    • 资源ID:15496492       资源大小:191.51KB        全文页数:39页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    学生考勤管理系统方案.docx

    1、学生考勤管理系统方案课 程 设 计 报 告课程名称 面向对象程序设计 课题名称 学生考勤管理系统 专 业 计算机科学与技术 班 级 1181班 学 号 * 姓 名 蔡彪 指导教师 李珍辉 谭小兰 2012年 12 月 15日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序设计 课 题 学生考勤管理系统 专业班级 计算机1181班 学生姓名 蔡彪 学 号 * 指导老师 李珍辉 谭小兰 审 批 任务书下达日期 2012 年 12 月 15 日任务完成日期 2013 年 01 月 05 日一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计是集中实践性环节之一,是学习完面向对

    2、象程序设计课程后进行的一次全面的综合练习。要求学生达到熟练掌握C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2.课题题目 学生考勤管理系统3设计要求: (1)根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。完成系统详细设计:包括数据库需求分析;数据库概念结构设计(ER图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。系

    3、统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序(带注释)(2) 按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。(3)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二、进度安排第 17 周 星期二 8:0012:00 星期三 8:0012:00 星期四 8:0012:00 星期五 8:0012:00 星期六 8:0012:00第 18 周 星期五 8:0012:00 三、参考书籍 1.C程序设计课程设计 刘振安编著 TP312C563 2.C+ Bu

    4、ilder和Delphi课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-06072-X 3.Visual C+课程设计案例精编 严华峰 中国水利水电出版社 7-5084-2007-1 2004 4.Visual C+课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-05968-3 20025.Visual C+语言课程设计 : 案例精选与编程指导 陈清华朱红 东南大学出版社 7-81089-275-4 2003 6.VisualC+课程设计案例精编 中国水利水电出版社 7-5084-1004-1 2002 7.数据结构课程设计案例精编 : 用C/C+描述 李建学李光元吴春

    5、芳 清华大学出版社 7-302-14536-9 2007 (编程平台不限,vc+, c+ Builder等等。) 课题:学生考勤管理系统(一)、课程设计题目: 学生考勤管理系统 (二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,

    6、至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三)、设计方法和基本原理: 1、问题描述(功能要求): 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续多节课用 begin-end 的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能:1)录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期第几节课 课程名称学生姓名 缺课类

    7、型每行一条纪录。例如:2008-04-29 3-4 C+程序设计实验 张三 迟到2008-04-28 3-4 C+程序设计 李四 旷课2)修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。3)查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。4)统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序; 6)系统以菜单方式工作。(所谓菜单指用户可以自由选择所

    8、要执行的功能)2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告以及系统使用说明书 附录 1.系统需求分析 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型

    9、(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能:(1)录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期 第几节课 课程名称学生姓名 缺课类型每行一条纪录。例如:2009-04-29 2-4 中国近现代文学史 李云龙 迟到2009-04-28 2-4 大学生社交礼仪 马志鹏 旷课(2)修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。(3)查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。(4)统计某段时间内(以天

    10、为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;(5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序; (6)系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能。学生可以通过以上功能录入信息、修改信息、查询信息、整理统计出所要了解的信息,除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。学生考勤管理系统有广大的用户群,这其中有老师、有教务处主任、有公司管理人员,也可以供给一般用户使用。总之该系统可以满足用户需求,实现对

    11、其管理的人员的考勤工作。2.总体设计学生考勤管理系统包含五个大的功能,分别是:录入学生缺课信息、修改学生缺课信息、查询某个学生的缺课情况、统计某段时间内(以天为单位),旷课学生姓名及旷课节数和统计某段时间内,有学生旷课的课程及旷课人次。学生的缺课信息主要包含缺课日期,第几节课、课程名称,学生姓名,缺课类型。在录入学生缺课信息时根据系统提示逐一输入。每输入完一条信息,系统会提示是否继续输入,用户可以选择继续或返回主菜单。在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。如果系统中没有该学生的相关

    12、信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓名或选择退出返回主菜单。在查询学生缺课信息时,用户先输入要查询的学生姓名,系统检索判断是否存在该学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使用。学生考勤管理系统中功能模块图: 菜单3.详细设计(1)类的设计 此系统设计了两个类,一个是record类,一个是records类。Record类完成对学生基本信息的声明与获取,包括学生姓名、缺课日期、缺课课程名称、缺课课程类型、缺课节次。Record类的设计 class recordpublic: void set(string d,int cno,string c,s

    13、tring s,int type) date.assign(d);/缺课日期 cname.assign(c);/缺课课程名称 sname.assign(s);/学生姓名 this-cno=cno;/缺课节次 this-type=type;/缺课类型 void set(record re) date.assign(re.date);/获取缺课日期 cname.assign(ame);/获取缺课课程名称 sname.assign(re.sname);/获取学生姓名 this-cno=o;/获取缺课节次 this-type=re.type;/获取缺课类型 string date,cname,snam

    14、e;/定义日期,课程名称,学生姓名 int cno,type;/定义缺课节次,缺课类型;(2)学生考勤系统的显示模块void pri(records *r)/函数if(r-n=0) cout记录为空!endl;return; coutn序号t缺课日期 节次t课程名称t学生姓名t缺课endl; for(int i=0;in;i+) coutitri); (3)学生考勤系统的查询模块void pri(records *r)/函数 if(r-n=0) cout记录为空!endl; return; coutn序号t缺课日期 节次t课程名称t学生姓名t缺课类型endl; for(int i=0;in;i

    15、+) coutitri); (4)学生考勤系统的修改模块void edt(records *r)/函数 if(r-n=0) cout记录为空!endl; return; cout请输入要修改缺课记录的学生姓名: tmp; t1.assign(tmp); for(int i=0;in;i+) if(r-ri.sname=t1) flag=7; break; if(!flag) cout查无此学生!ri.date; t2=r-o; t3=r-ame; t4=r-ri.sname; t5=r-ri.type; cout请输入要修改的项目:n(1.缺课日期 2.缺课节次 3.缺课名称 4.学生姓名 5

    16、.缺课类型 6.全部) flag; switch(flag) case 1:goto e1; case 2:goto e2; case 3:goto e3; case 4:goto e4; case 5:goto e5; case 6:goto e1; default:goto e0; e1: cout请输入缺课日期: (例如100216) t1; if(flag!=6)goto e6;e2: cout请输入缺第几节课: t2; if(flag!=6)goto e6;e3: cout请输入缺课名称: t3; if(flag!=6)goto e6;e4: cout请输入缺课学生姓名: t4; i

    17、f(flag!=6)goto e6;e5: cout请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) t5;e6: r-ri.set(t1,t2,t3,t4,t5); char yn; cout保存修改? (y/n) yn; if(yn=y)wt(r); else return;(5)学生考勤系统的删除模块void del(records *r)/函数 if(r-n=0) cout记录为空!endl; return; cout请输入要删除的记录的序号: (输入-1删除全部) flag; if(flagr-n-1&flag-1) cout不存在所要删除的记录!n=0; else fo

    18、r(int i=flag;in-1;i+) r-ri.set(r-ri+1); r-n-; char yn; cout保存修改? (y/n) yn; if(yn=y)wt(r); else return;(6)学生考勤系统的录入模块void input(records *r)/录入 string t1,t3,t4; int t2,t5,flag=0; char yn; cout请输入学生缺课记录:endl;m1: cout请输入缺课日期: (例如100216) t1; if(!(timechk(t1)goto m1;m2: cout请输入缺第几节课: t2; if(t210) cout节次录入

    19、有误! 请重新录入: endl; goto m2; cout请输入缺课名称: t3; cout请输入缺课学生姓名: t4;m3: cout请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) t5; if(t54) cout类型输入有误! 请重新录入: endl; goto m3; for(int i=0;in;i+) if(r-ri.date=t1&r-o=t2&r-ame=t3&r-ri.sname=t4&r-ri.type=t5) cout该条记录已存在,是否添加为新记录? (y/n) yn; if(yn=y)break; else if(yn=n)goto n2; else g

    20、oto n1; r-rr-n+.set(t1,t2,t3,t4,t5);n2: cout是否继续输入? (y/n) yn; if(yn=y)goto m1; else if(yn=n) cout保存修改? (y/n) yn; if(yn=y)wt(r); else return; else goto n3;(7)学生考勤系统的统计模块void search_s(records *r)/统计 if(r-n=0) cout记录为空!endl; return; records *r1=new records();g1: cout请输入要检索的时间范围: (例如080610-080612) tmp;

    21、ld.assign(tmp.substr(0,6); hd.assign(tmp.substr(7,6); if(!timechk(ld)|!timechk(hd)goto g1; for(int i=0;in;i+) if(r-ripare(ld)=0&r-ripare(hd)ri.type=4) r1-rr1-n+.set(r-ri); cout请选择统计方式: (1.学生旷课情况降序显示 2.课程旷课情况降序显示)i; switch(i) case 1: coutn在ld到hd期间学生旷课情况如下:order_s(); break; case 2: coutn在ld到hd期间课程旷课情况

    22、如下:order_c(); break; default:goto g2; 4.程序调试(1)程序开始运行的界面(2)程序显示功能的界面(3)程序录入功能的界面(4)程序查询功能的界面(5)程序修改功能的界面(6)程序删除功能的界面5.结果分析这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序可以看出的是数组用得比较多,反正是没啥特色,不仅如此,还写得功能不全,实在是惭愧。现在在这里也只能说说它的不足之处了。类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当,我有这个感觉,但我不知如何改进。函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把握得不

    23、够。还有就是容易missing;或者是,这都是些应该改掉的毛病。除此以外,我对于怎样用文件保存数据还没深入了解,但我将数据保存到文件后又因文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到熟稔运用。在调试过程中我发现在主函数中把字符数组名name赋值给字符指针p即p=name;然后用coutp;语句可以输出字符数组里全部的内容,但利用函数返回指针值却不能做到这一点,在我思考一番后终于明白了,这与内存中的地址值有关。具体为什么我是解释不清了在调用系统的显示功能时,如果在getname()函数前加一个*号输出的只是一个字符,不加反而能输出所有字符。getname()函数

    24、的返回值为指针类型,但前面说过利用函数返回指针类型的值并不能输出字符数组中所有的字符,为什么这里又可以呢?这是为什么?我不知道这一知识,这也算我的程序的不足之处吧!对于两个统计函数的功能不全,我感到无能为力,我为了这两函数苦思了两天,硬是没凑合来。到后来,脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。结果不是很好,但过程够了就行。这也是自欺欺人的看法,让我再一次自责吧。6.总结这次的程序设计相对于上学期还是有了进步的。学生考勤管理系统要求至少要有四个类,在起初,对于定义哪四个类我是不清楚的,通过仔细的研读问题描叙终于在脑海里确定了这四个类。既然是学生考勤管理系统,那由学生缺课信息中的日期我想

    25、到了时间类,这是一个很简单的类。从系统的几大功能我又想到了系统的基础就是缺课学生的缺课信息,于是我又想到了一个信息类,还有两个类是根据两个统计功能想到的,在现在看来似乎有些不妥。通过这次的课程设计我明白了学习程序设计语言必须要勤做实验,通过实验总结经验。平时遇到的一些小问题一定要重视,越是基础的知识越要理解透彻。比如指针与数组方面的知识,一旦没有弄清楚,在设计程序时就会吃亏。这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真正的掌握一门知识。这次的实验给以了我警示,它让我明白我所掌握的知识还很欠缺,对于继承

    26、与派生这一章的知识,我以为自己勉强掌握了,这次实验后我发现我掌握得还不够。基类的保护成员公有继承到派生类,类外是否可以通过对象来访问呢,原先我认为是可以的,经过这次程序设计,我知道我错了。 总之,我觉得做学问不应该马虎,对于所学一定要有深入的理解,这也是我这次课设得到的启示。附录:源程序#include#include#includeusing namespace std; /时间类class timepublic: time(int y=0,int m=0,int d=0) year=y;month=m;day=d; time()protected: int year,month,day; /信息类 class xinxi:public time public: xinxi() tiaoshu+; xinxi()tiaoshu-; void setname(char *n)strcpy(name,n); void settime(int y,int m


    注意事项

    本文(学生考勤管理系统方案.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开