考勤统计程序设计.docx

上传人:牧羊曲112 文档编号:1926215 上传时间:2022-12-26 格式:DOCX 页数:21 大小:181.09KB
返回 下载 相关 举报
考勤统计程序设计.docx_第1页
第1页 / 共21页
考勤统计程序设计.docx_第2页
第2页 / 共21页
考勤统计程序设计.docx_第3页
第3页 / 共21页
考勤统计程序设计.docx_第4页
第4页 / 共21页
考勤统计程序设计.docx_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《考勤统计程序设计.docx》由会员分享,可在线阅读,更多相关《考勤统计程序设计.docx(21页珍藏版)》请在三一办公上搜索。

1、附件6:北京理工大学珠海学院课程设计说明书_2011_2012学年第_ 1_学期题目: 考勤统计程序 学 院: 计算机学院 专业班级: 10数字媒体技术3班 学 号:100204031007学生姓名: 罗威豪 指导教师: 夏力前 成 绩: 时 间: 2011-12-21 2011年12月21日考勤统计程序摘 要学生考勤管理程序是作为学校考勤的基本管理,是学校对学生考勤管理的基本依据。开发考勤管理系统,正是完善学校信息化管理的重要环节。人工考勤已经很难满足学校规范化管理的要求,面对庞大的信息量,该放手现在存在很多弊病。因此,简历现代化的只能考情管理系统势在必行。这样也大大减轻了考勤工作人员的工作

2、量,提高了工作效率,使原本复杂和鼓噪无味的工作变得简单而轻松。本文以“考勤信息管理系统”的设计与实现为例,阐述了考勤系统的设计开发的全过程。该系统侧重于学生信息管理和学生考勤信息的登记与查询。本系统使用的开发工具是vc+开发程序,通过已编制好的程序,完成对学生信息的输入、输出、插入、修改、删除操作,以及学生迟到、早退、旷课考勤信息的登记和查询,完善学校管理现代化,方便管理人员统计,考勤学生出勤情况,方便学生管理部门查询,考核学生的出勤率,准确地掌握学生出勤情况和相关资料,有效管理、掌握学生各项情况。关键词:考勤管理 visualC+ 文件保存 查询 统计目 录1需求分析11.1问题描述11.1

3、.1基本要求12概要分析22.1数据需求22.1.1程序模块及之间的调用关系23 详细设计33.1类的设计33.2学生考勤系统的显示模块33.3学生考勤系统的查询模块43.4学生考勤系统的修改模块43.5学生考勤系统的删除模块63.6学生考勤系统的录入模块63.7学生管理系统的统计模块84程序测试105参考文献13心得 体会14教师 评语151需求分析1.1问题描述 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及 旷课)。试设计考勤管理系统,使之能提供以下功能: 1)录入学生的缺课记录:从键盘输入数据(提示:

4、为避免重复从键盘输入数据,测试时 可将数据存储在文件中,利用输入重定向功能读入),输入格式为: 缺课日期第几节课 课程名称学生姓名 缺课类型 每行一条纪录。 例如: 080429 4 C+程序设计实验 张三 迟到 080428 4 C+程序设计 李四 旷课2)修改某个学生的缺课记录。3)查询某个学生的缺课情况。4). 某段时间内旷课情况的统计。1.1.1基本要求 统要实现的是学生考勤管理系统,在设计时应该使系统便于考勤管理员、学生操作,系统应有的基本功能如下:(1)、学生考勤管理相关信息的管理功能;(2)、统计功能;(3)、查询功能;(4)、文件保存功能;2概要分析2.1数据需求本系统主要涉及

5、的数据有学生缺课信息类和有关信息排序类:学生缺课信息包括缺课时间、学生姓名、课程名称、第几节、学生缺课类型(迟到、早退、旷课、请假)。有关信息排序类包括对课程排序和对姓名排序。2.1.1程序模块及之间的调用关系 图2.1 学生考勤管理系统中菜单函数的功能图3 详细设计3.1类的设计此系统设计了两个类,一个是record类,一个是records类。Record类完成对学生基本信息的声明与获取,包括学生姓名、缺课日期、缺课课程名称、缺课课程类型、缺课节次。Record类的设计class recordpublic:void set(string d,int cno,string c,string s

6、,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,sname;/定义日期,课程名称,学生姓名in

7、t cno,type;/定义缺课节次,缺课类型;3.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.3学生考勤系统的查询模块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.4学生考勤系统的修改模块void

8、 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.缺课类型 6.全部) flag;switch(flag)case 1:goto e1;case

9、 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;if(flag!=6)goto e6;e5:cout请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课) t5;e6:r-r

10、i.set(t1,t2,t3,t4,t5);char yn;cout保存修改? (y/n) yn;if(yn=y)wt(r);else return;3.5学生考勤系统的删除模块void del(records *r)/函数if(r-n=0)cout记录为空!endl;return;cout请输入要删除的记录的序号: (输入-1删除全部) flag;if(flagr-n-1&flag-1)cout不存在所要删除的记录!n=0;elsefor(int i=flag;in-1;i+)r-ri.set(r-ri+1);r-n-;char yn;cout保存修改? (y/n) yn;if(yn=y)w

11、t(r);else return;3.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节次录入有误! 请重新录入: endl;goto m2;cout请输入缺课名称: t3;cout请输入缺课学生姓名: t4;m3:cout请输入缺课类型: (1.迟到 2.早退 3.请假 4.旷课

12、) 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 goto 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;

13、if(yn=y)wt(r);else return;else goto n3;3.7学生管理系统的统计模块void search_s(records *r)/统计if(r-n=0)cout记录为空!endl;return;records *r1=new records();g1:cout请输入要检索的时间范围: (例如080610-080612) tmp;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)

14、=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期间课程旷课情况如下:order_c();break;default:goto g2;4程序测试1程序开始运行的界面2程序显示功能的界面3程序录入功能的界面4程序查询功能的界面5程序修改功能的界面6程序删除功能的界面5参考文献1 郑阿奇:c+面向对象M,电子工业出版社2011年版,

15、第374页。心得 体会经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。首先,必须要有需求分析。就拿这次的题目来说,一个清晰的需求分析能让我省去很多工作,能让我把代码写的更清晰,让我的代码能有更好的重用性,以此简化程序。而这次的题目其实也算不上需求分析,只能算是功能分析吧。从界面到用户登陆判断,从增删改查基本功能到文件读写。如果能够把代码细化,把基本功能都封装成函数,这样应该会提高代码的重用性。其次,有了清晰的需求分析,还要有注释。注释也很重要,特别是写过之后重用和测试代码时,都必须得看。否则就不得不将已写好的封装函数从头到尾再看一遍,再理解,这样很浪费时间。有了注释,就可以省去

16、这些重新理解函数的时间,可以提高效率。再次,写注释是为了使函数更简单的被理解。而写注释之前,必须要测试这段代码的可行性。必须要尽可能多的考虑会出现的情况,对不希望出现的情况予以相对的措施或者提示。这样在代码重用的时候也可以放心的重用,而不必因为代码写的不够完善而再来修改,这样也会浪费很多时间。最后,程序的测试。一个完善的程序应该经得起测试。自己的程序写得好不好,最终得看测试。如果输入了非法的输入或者操作,程序是否能够正常运行?还是会像这次一输入错误就会死循环?这是程序的健壮性。做好以上几个方面,程序基本就做好了。但是任何一个程序都不可能没有BUG,金无足赤人无完人。如果要追求完美,就不得不锲而不舍,定期得到用户的反馈然后修复相关问题。就像微软一样,总是会在问题出现之后就发布漏洞补丁教师 评语

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号