学生考勤管理系统课程设计报告.docx
《学生考勤管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统课程设计报告.docx(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学生考勤管理系统课程设计报告目录1设计内容及要求.31.1设计内容.31.2设计任务及具体要求.32概要设计.42.1该系统的功能简介.42.2 总体程序框图.42.3各个模块之间的主要关系.53 设计过程或程序代码.53.1各个模块的程序流程图及运行界面.53.2对关键代码加以分析说明.104程序调试分析.145小结.17 致谢.17 参考文献.17 附:源程序.181 设计内容及要求1.1设计内容学生考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。1.2设计任务
2、及具体要求任务:(1)给出软件结构,说明各模块的功能。(2)设计相关的类,并说明该类的作用。特别要用图形说明类之间的继承关系。 (3)编写代码具体要求:(1)定义相关的数据,比如:学生学号 学生姓名 课程名称 上课时间 到课时间出勤状态 旷课/病假/事假/迟到/早退(2)能够进行以下操作:A能够对数据进行增、删、改、查操作。B能够按学号顺序列出某一课程的出勤状况2 概要设计2.1系统的功能简介考勤管理系统,有以下功能:(1)录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期第几节课课程名称学生姓名缺课类
3、型每行一条纪录。例如:2013-04-292-4中国近现代文学史李云龙迟到2013-04-282-4大学生社交礼仪(2)修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。(3)查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。(4)统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;(5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序。2.2 总体程序框图修改某学生的缺课信息查询某学生的缺课信息统计某段
4、时间内旷课学生姓名及旷课节数统计某段时间内,有学生旷课的课程及旷课人次录入学生的缺课信息学生考勤管理系统录入缺课学生的姓名、缺课日期、缺课节次、缺课课程名称、缺课类型修改某学生的缺课日期、缺课节次、缺课课程名称、缺课类型查询某学生的缺课日期、缺课节次、缺课课程名称、缺课类型按时间升序显示旷课学生姓名及旷课节数按时间升序显示有学生旷课的课程及旷课人次 2.3各个模块之间的主要关系本程序用结构体新定义一种数据类型,系统包含一个主函数和6个子函数(insert(),check(),rivise(),Delete(),output(),deleteallchain()),6个子函数分别用来插入、查询、
5、修改、删除、输出、收回动态分配的空间,在主函数中通过调用子函数来实现所需功能。3设计过程或程序代码3.1各个模块的程序流程图及运行界面学生考勤管理系统中四个类的类层次图为:Time类Xinxi类qstu类qkechen类图2 学生考勤管理系统中中四个类的类层次图学生考勤管理系统中各功能模块的实现:菜单 统计某段时间内,有学生旷课的课程及旷课人次统计某段时间内旷课学生姓名及旷课节数查询某学生的缺课信息录入学生的缺课信息修改某学生的缺课信息 图3 学生考勤管理系统中菜单函数的功能图1、 学生缺课信息录用功能模块: 学生缺课信息录用功能录入学生缺课节次录入学生缺课日期录入学生缺课课程名称录入缺课学生
6、姓名录入学生缺课类型 图4 学生缺课信息录入的功能2、 修改某学生缺课信息功能的模块图修改某学生缺课信息功能修改某学生的缺课节次修改某学生的缺课日期修改某学生的缺课课程修改某学生的缺课类型图5 学生考勤管理系统修改学生缺课信息功能图3 查询某学生缺课信息功能图:查询某学生缺课信息功能输入要查询的学生姓名显示要查询的学生缺课信息继续查询或返回菜单图6 学生考勤管理系统查询学生缺课信息功能图4、 统计某段时间内旷课学生姓名及旷课节数功能模块:统计某段时间内旷课学生姓名及旷课节数功能统计某段时间内旷课学生姓名及旷课节数显示某段时间内旷课学生姓名及旷课节数返回菜单 图7统计某段时间内旷课学生姓名及旷课
7、节数功能图5、统计某段时间内,有学生旷课的课程及旷课人次功能模块统计某段时间内,有学生旷课的课程及旷课人次统计某段时间内,有学生旷课的课程及旷课人次功能显示某段时间内,有学生旷课的课程及旷课人次返回菜单图8 统计某段时间内,有学生旷课的课程及旷课人次功能图Tine-year:int-month:int-day:int+time()+time()Xinxi-name20:char-kechen10:char-jieci3:char- queke10:char-tm3:char-tiaoshu:int=0+xinxi()+xinxi()+setname(n:char*):void +settime
8、(y:int, m:int,d:int):void+setqklx(qk: char*): void+setjieci(jc: char*):void+setkechen(kc: char*):void+getname():char*+getqklx():char*+getjieci():char*+getkechen():char* +gettime():int*qkechen-renci:int-kcshu:int=0+qkechen()+qkechen()+getrc(st1:xinxi,n:int ,j:int):int+qkn20:charqstu-jieshu:int -qst:i
9、nt+qstu()+qstu()+print(st1:xinxi &):void+getjs( st1:xinxi,n:int, j:int):int+setjs(js:int=0):int +qstn20:char基类派生类派生类派生类 图 9 学生考勤管理系统中四个类的UML图3.2对关键代码加以分析说明#include#include#includestruct chuqin /用结构体定义一个新的数据类型出勤chuqinchar name10,number20,subject15,time115,time215,zhuangtai10;chuqin *next;/-void inser
10、t(chuqin* &head1)/创建单向链表并插入数据chuqin *n;/定义一个chuqin类型指针nwhile(1)/一个死循环n=new chuqin;/用new运算符动态分配一个chuqin空间给指针ncoutn-name;/输入姓名if(n-name0=N) /判断刚才输入的第一个字母是否为Ndelete n;/若输入的第一个字母为N,则用delete运算符收回刚才动态分配的空间break;/跳出死循环,结束插入cinn-numbern-subjectn-time1n-time2n-zhuangtai;/若条件不满足,则继续输入学号、课程、上课时间到课时间等if(!head1)
11、 head1=n,n-next=NULL;/*假如head指针为空,则直接让head指针指向n指向的存储空间(head=n),将n-next赋值为空,即不指向任何存储空间*/else n-next=head1,head1=n;/若head指针非空,则将n指向的存储空间插在最前面/-void check(chuqin *head)/子函数实现查询功能char number110;/定义一个字符串数组name1临时存放要查询的姓名int flag=1;coutnumber1;/输入要查询的学号while(head)/用while循环检索查询是否有匹配的姓名if(strcmp(number1,hea
12、d-number)=0) /用函数strcmp()判断是否有匹配姓名if(flag) cout找到!nsetw(12)姓名setw(12)学号setw(12)课程;coutsetw(12)上课时间setw(12)到课时间setw(12)出勤状态n;/*若条件为真,则输出提示信息*/coutsetw(12)namesetw(12)numbersetw(12)subject;coutsetw(12)time1setw(12)time2setw(12)zhuangtainext;/更新head指针,是它指向下一个chuqin类型的存储空间if(flag) cout未找到!;/假如flag值为1,则输
13、出未找到!/-void rivise(chuqin *head)/定义子函数实现修改功能 char name110;/定义一个字符串数组name1临时存放要修改的姓名coutname1;/输入要查询的姓名while(head)if(strcmp(name1,head-name)=0) cout找到此人!thead-subjecthead-time1head-time2head-zhuangtai;/输入新的课程、上课时间、到课时间break;head=head-next;if(head=NULL) cout未找到此人!无法修改!n;/-void Delete(chuqin* &head)/定义
14、子函数实现删除功能 char name110;int flag=1;chuqin *p1=NULL,*p2,*p3=head;coutname1;while(head)if(strcmp(name1,head-name)=0)coutnext;delete p1;else if(p2-next=NULL) p1-next=NULL;delete p2;head=p3;else p1-next=p2-next;delete p2;head=p3;flag=0;break;p1=head;head=head-next;p2=head;if(flag)cout未找到此人!无法删除!n;/-void
15、output(chuqin *head)/定义子函数实现输出功能if(head=NULL) cout记录为空!;else cout所有的记录依次为:nsetw(12)姓名setw(12)学号setw(12)课程;coutsetw(12)上课时间setw(12)到课时间setw(12)出勤状态n;while(head)coutsetw(12)namesetw(12)numbersetw(12)subject;coutsetw(12)time1setw(12)time2setw(12)zhuangtainext;/-void deleteallchain(chuqin *head)/定义子函数来收
16、回所有动态分配的存储空间chuqin *p;while(head)p=head;head=head-next;delete p;/-void main()/主函数int a;/定义一个整型变量chuqin *head;/定义一个head指针head=NULL;while(1)/死循环cout请输入一个数字(1表示插入,2表示查询,3表示修改,;couta;/输入一个整型值if(a=6) break;/若该值为6则跳出整个循环switch(a)/若a值不为6,执行一下程序case 1: insert(head);break;case 2: check(head);break;case 3: ri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 管理 系统 课程设计 报告
限制150内