学生考勤管理系统课程设计.docx
- 文档编号:29775908
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:14
- 大小:163.27KB
学生考勤管理系统课程设计.docx
《学生考勤管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生考勤管理系统课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
学生考勤管理系统课程设计
学号
2012-2013学年第二学期
17
《高级语言程序设计》
课程设计报告
题目:
学生考勤管理系统
专业:
计算机科学与技术
班级:
12
(2)班
姓名:
李天栋
指导教师:
孙淮宁
成绩:
计算机与信息工程系
2013年6月30日
1设计内容及要求.........................................3
设计内容.....................................................3
设计任务及具体要求...........................................3
2概要设计.........................................................4
该系统的功能简介.............................................4
总体程序框图.................................................4
各个模块之间的主要关系........................................5
3设计过程或程序代码............................................5
各个模块的程序流程图及运行界面................................5
对关键代码加以分析说明.......................................10
4程序调试分析.....................................................14
5小结.............................................................17
致谢...........................................................17
参考文献...........................................................17
附:
源程序..........................................................18
1设计内容及要求
设计内容
学生考勤信息记录了学生的缺课情况,它包括:
缺课日期、第几节课(连续用begin-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。
设计任务及具体要求
任务:
(1)给出软件结构,说明各模块的功能。
(2)设计相关的类,并说明该类的作用。
特别要用图形说明类之间的继承关系。
(3)编写代码
具体要求:
(1)定义相关的数据,比如:
学生学号
学生姓名
课程名称
上课时间
到课时间
出勤状态[旷课/病假/事假/迟到/早退]
(2)能够进行以下操作:
A.能够对数据进行增、删、改、查操作。
B.能够按学号顺序列出某一课程的出勤状况
2概要设计
系统的功能简介
考勤管理系统,有以下功能:
?
(1).录入学生的缺课记录:
从键盘输入数据(提示:
为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:
缺课日期?
第几节课?
课程名称学生姓名?
缺课类型?
每行一条纪录。
?
例如:
?
2013-04-29?
2-4?
中国近现代文学史?
李云龙?
迟到?
2013-04-28?
2-4?
大学生社交礼仪?
马志鹏?
旷课?
(2).修改某个学生的缺课记录:
可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。
?
(3).查询某个学生的缺课情况:
查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。
?
(4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;?
(5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序。
?
?
总体程序框图
各个模块之间的主要关系
本程序用结构体新定义一种数据类型,系统包含一个主函数和6个子函数(insert(),check(),rivise(),Delete(),output(),deleteallchain()),6个子函数分别用来插入、查询、修改、删除、输出、收回动态分配的空间,在主函数中通过调用子函数来实现所需功能。
3设计过程或程序代码
各个模块的程序流程图及运行界面
学生考勤管理系统中四个类的类层次图为:
图2学生考勤管理系统中中四个类的类层次图
学生考勤管理系统中各功能模块的实现:
图3学生考勤管理系统中菜单函数的功能图
1、学生缺课信息录用功能模块:
图4学生缺课信息录入的功能
2、修改某学生缺课信息功能的模块图
图5学生考勤管理系统修改学生缺课信息功能图
3查询某学生缺课信息功能图:
图6学生考勤管理系统查询学生缺课信息功能图
4、统计某段时间内旷课学生姓名及旷课节数功能模块:
图7统计某段时间内旷课学生姓名及旷课节数功能图
5、统计某段时间内,有学生旷课的课程及旷课人次功能模块
图8统计某段时间内,有学生旷课的课程及旷课人次功能图
图9学生考勤管理系统中四个类的UML图
对关键代码加以分析说明
#include<>
#include<>
#include<>
structchuqin{ettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==
*(st1[j].gettime()+2))
if(strcmp(qkn,st1[i].getkechen())==0)
renci++;
returnrenci;
}
etjieci()+2)!
='\0')
js=+2;
else
js++;
for(i=0;i if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==*(st1[j].gettime()+2)) if(strcmp(st1[i+1].getname(),qstn)==0) { if(*(st1[i].getjieci()+2)! ='\0') js=+2; else js++; } jieshu=js; returnjieshu; } etname(name); cout<<"请输入课程名称"< cin>>kechen; st1[q].setkechen(kechen); cout<<"请输入缺课日期"< cin>>y>>m>>d; st1[q].settime(y,m,d); cout<<"请输入缺课类型"< cin>>queke; st1[q].setqklx(queke); cout<<"请输入缺课节次"< cin>>jieci; st1[q].setjieci(jieci); cout<<"是否还要继续输入: (y/n)"< cin>>a; }while(a=='y'); returnq+1; } etname())==0) do{a[j]=i; cout<<"1.修改日期2.修改节次3.修改课程名称4.修改缺课类型"< cout<<"请输入要选择的数值(1,2,3,4)"< intb; cin>>b; if(b==1) {cout<<"请输入新日期"< cin>>y>>m>>d; st1[i].settime(y,m,d); } elseif(b==2) {cout<<"请输入新节次"< cin>>jieci; st1[i].setjieci(jieci); } elseif(b==3) {cout<<"请输入新课程名称"< cin>>kechen; st1[i].setkechen(kechen); } elseif(b==4) {cout<<"请输入新缺课类型"< cin>>queke; st1[i].setqklx(queke); } flgh=1;j++; }while(b<1||b>4); if(flgh==0) {cout<<"没有你要找的学生姓名,请重试要退出请按0"< cin>>k; } else {cout<<"还要继续吗(1\0)退出请按0"< cin>>k; } } for(inti=0;i {h=a[i]; xiansi(st1[h]); } } etname())==0) {u[j]=i; j++; } if(j==0) {cout<<"没有你所要的学生名字! ";ettime()<<"|"<<*(st1[i].gettime()+1)<<"|"<<*(st1[i].gettime()+2)<<"|"< < } ettime()+1)<*(st1[i+1].gettime()+1)) qt[i].print(st1[i]); elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) qt[i].print(st1[i]); elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1) qt[i].print(st1[i]); } cout<<"是否继续查询(y/n)继续请按y退出按n"< cin>>n; } } } etname()< if(*(st1[0].getjieci()+2)! ='\0') js=+2; else js++; cout<<"节数: "< } else ettime()+1)<*(st1[i+1].gettime()+1)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) d1++; } for(intj=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)< for(i=0;i {setqstn(st1,qt1,g); cout<<"姓名: "< cout<<"节数: "< } } } } etkechen()< rc++; cout<<"人数: "< } else { inti=0; for(;i { if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2)) {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];} elseif(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2)) d1++; } for(intj=0;j<(g-d1);j++) { cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)< for(i=0;i {setqkn(st1,qk1,g); cout<<"课程名: "< cout<<"人数: "< } } } } stn,st1[i].getname()); elseif(strcmp(st1[i].getname(),st1[i+1].getname())! =0) {strcpy(qt1[i].qstn,st1[i].getname()); k++; } } } kn,st1[i].getkechen()); elseif(strcmp(st1[i].getkechen(),st1[i+1].getkechen())! =0) {strcpy(qk[i].qkn,st1[i+1].getkechen()); b++; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 考勤 管理 系统 课程设计