- 17.41 KB
- 2022-05-17 13:47:08 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
附件6:北京理工大学珠海学院课程设计说明书_2021—_2021学年第_1_学期题目:考勤统计程序学院:计算机学院专业班级:10数字媒体技术3班学号:学生姓名:罗威豪指导教师:夏力前成绩:时间:2011-12-212011年12月21日
考勤统计程序摘要学生考勤管理程序是作为学校考勤的基本管理,是学校对学生考勤管理的基本依据。开发考勤管理系统,正是完善学校信息化管理的重要环节。人工考勤已经很难满足学校规范化管理的要求,面对庞大的信息量,该放手现在存在很多弊病。因此,简历现代化的只能考情管理系统势在必行。这样也大大减轻了考勤工作人员的工作量,提高了工作效率,使原本复杂和鼓噪无味的工作变得简单而轻松。本文以“考勤信息管理系统”的设计与实现为例,阐述了考勤系统的设计开发的全过程。该系统侧重于学生信息管理和学生考勤信息的登记与查询。本系统使用的开发工具是vc++开发程序,通过已编制好的程序,完成对学生信息的输入、输出、插入、修改、删除操作,以及学生迟到、早退、旷课考勤信息的登记和查询,完善学校管理现代化,方便管理人员统计,考勤学生出勤情况,方便学生管理部门查询,考核学生的出勤率,准确地掌握学生出勤情况和相关资料,有效管理、掌握学生各项情况。关键词:考勤管理visualC++文件保存查询统计
目录1需求分析11.1问题描述1基本要求12概要分析22.1数据需求2程序模块及之间的调用关系23详细设计33.1类的设计33.2学生考勤系统的显示模块33.3学生考勤系统的查询模块43.4学生考勤系统的修改模块43.5学生考勤系统的删除模块63.6学生考勤系统的录入模块63.7学生管理系统的统计模块84程序测试105参考文献13心得体会14教师评语15
1需求分析1.1问题描述考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能:1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期第几节课课程名称学生姓名缺课类型每行一条纪录。例如:0804294C++程序设计实验张三迟到0804284C++程序设计李四旷课2).修改某个学生的缺课记录。3).查询某个学生的缺课情况。4).某段时间内旷课情况的统计。基本要求统要实现的是学生考勤管理系统,在设计时应该使系统便于考勤管理员、学生操作,系统应有的基本功能如下:(1)、学生考勤管理相关信息的管理功能;(2)、统计功能;(3)、查询功能;(4)、文件保存功能;
2概要分析2.1数据需求本系统主要涉及的数据有学生缺课信息类和有关信息排序类:学生缺课信息包括缺课时间、学生姓名、课程名称、第几节、学生缺课类型(迟到、早退、旷课、请假)。有关信息排序类包括对课程排序和对姓名排序。2.1.1程序模块及之间的调用关系图2.1学生考勤管理系统中菜单函数的功能图
3详细设计3.1类的设计此系统设计了两个类,一个是record类,一个是records类。Record类完成对学生基本信息的声明与获取,包括学生姓名、缺课日期、缺课课程名称、缺课课程类型、缺课节次。Record类的设计classrecord{public:voidset(stringd,intcno,stringc,strings,inttype){date.assign(d);//缺课日期cname.assign(c);//缺课课程名称sname.assign(s);//学生姓名this->cno=cno;//缺课节次this->type=type;//缺课类型}voidset(recordre){date.assign(re.date);//获取缺课日期cname.assign(reame);//获取缺课课程名称sname.assign(re.sname);//获取学生姓名this->cno=reo;//获取缺课节次this->type=re.type;//获取缺课类型}stringdate,cname,sname;//定义日期,课程名称,学生姓名intcno,type;//定义缺课节次,缺课类型};3.2学生考勤系统的显示模块voidpri(records*r)//函数{if(r->n==0){cout<<"记录为空!"<n;i++){cout<r[i]);}}3.3学生考勤系统的查询模块voidpri(records*r)//函数{if(r->n==0){cout<<"记录为空!"<n;i++){cout<r[i]);}}3.4学生考勤系统的修改模块voidedt(records*r)//函数{if(r->n==0){cout<<"记录为空!"<>tmp;t1.assign(tmp);for(inti=0;in;i++)if(r->r[i].sname==t1){flag=7;break;
}if(!flag){cout<<"查无此学生!"<r[i].date;t2=r->r[i]o;t3=r->r[i]ame;t4=r->r[i].sname;t5=r->r[i].type;cout<<"请输入要修改的项目:n(1.缺课日期2.缺课节次3.缺课名称4.学生姓名5.缺课类型6.全部)"<>flag;switch(flag){case1:gotoe1;case2:gotoe2;case3:gotoe3;case4:gotoe4;case5:gotoe5;case6:gotoe1;default:gotoe0;}e1:cout<<"请输入缺课日期:(例如100216)"<>t1;if(flag!=6)gotoe6;e2:cout<<"请输入缺第几节课:"<>t2;if(flag!=6)gotoe6;e3:cout<<"请输入缺课名称:"<>t3;if(flag!=6)gotoe6;e4:cout<<"请输入缺课学生姓名:"<>t4;if(flag!=6)gotoe6;e5:cout<<"请输入缺课类型:(1.迟到2.早退3.请假4.旷课)"<>t5;
e6:r->r[i].set(t1,t2,t3,t4,t5);charyn;cout<<"保存修改?(y/n)"<>yn;if(yn=="y")wt(r);elsereturn;}3.5学生考勤系统的删除模块voiddel(records*r)//函数{if(r->n==0){cout<<"记录为空!"<>flag;if(flag>r->n-1&&flag<-1){cout<<"不存在所要删除的记录!"<n=0;else{for(inti=flag;in-1;i++)r->r[i].set(r->r[i+1]);r->n--;}charyn;cout<<"保存修改?(y/n)"<>yn;if(yn=="y")wt(r);elsereturn;}3.6学生考勤系统的录入模块voidinput(records*r)//录入{
stringt1,t3,t4;intt2,t5,flag=0;charyn;cout<<"请输入学生缺课记录:"<>t1;if(!(timechk(t1)))gotom1;m2:cout<<"请输入缺第几节课:"<>t2;if(t2<1||t2>10){cout<<"节次录入有误!请重新录入:"<>t3;cout<<"请输入缺课学生姓名:"<>t4;m3:cout<<"请输入缺课类型:(1.迟到2.早退3.请假4.旷课)"<>t5;if(t5<1||t5>4){cout<<"类型输入有误!请重新录入:"<n;i++)if(r->r[i].date==t1&&r->r[i]o==t2&&r->r[i]ame==t3&&r->r[i].sname==t4&&r->r[i].type==t5){cout<<"该条记录已存在,是否添加为新记录?(y/n)"<>yn;if(yn=="y")break;elseif(yn=="n")goton2;elsegoton1;}r->r[r->n++].set(t1,t2,t3,t4,t5);n2:cout<<"是否继续输入?(y/n)"<>yn;
if(yn=="y")gotom1;elseif(yn=="n"){cout<<"保存修改?(y/n)"<>yn;if(yn=="y")wt(r);elsereturn;}elsegoton3;}3.7学生管理系统的统计模块voidsearch_s(records*r)//统计{if(r->n==0){cout<<"记录为空!"<>tmp;ld.assign(tmp.substr(0,6));hd.assign(tmp.substr(7,6));if(!timechk(ld)||!timechk(hd))gotog1;for(inti=0;in;i++)if(r->r[i].datepare(ld)>=0&&r->r[i].datepare(hd)<=0&&r->r[i].type==4)r1->r[r1->n++].set(r->r[i]);cout<<"请选择统计方式:(1.学生旷课情况降序显示2.课程旷课情况降序显示)"<>i;switch(i){case1:cout<<"n在"<order_s();break;case2:cout<<"n在"<order_c();
break;default:gotog2;}}
4程序测试1程序开始运行的界面2程序显示功能的界面3程序录入功能的界面4程序查询功能的界面5程序修改功能的界面6程序删除功能的界面
5参考文献[1]郑阿奇:《c++面向对象》[M],电子工业出版社2021年版,第374页。
心得体会经过本次课程设计,发现做软件真的需要做很多工作,不仅仅是敲代码。首先,必须要有需求分析。就拿这次的题目来说,一个清晰的需求分析能让我省去很多工作,能让我把代码写的更清晰,让我的代码能有更好的重用性,以此简化程序。而这次的题目其实也算不上需求分析,只能算是功能分析吧。从界面到用户登陆判断,从增删改查基本功能到文件读写。如果能够把代码细化,把基本功能都封装成函数,这样应该会提高代码的重用性。其次,有了清晰的需求分析,还要有注释。注释也很重要,特别是写过之后重用和测试代码时,都必须得看。否则就不得不将已写好的封装函数从头到尾再看一遍,再理解,这样很浪费时间。有了注释,就可以省去这些重新理解函数的时间,可以提高效率。再次,写注释是为了使函数更简单的被理解。而写注释之前,必须要测试这段代码的可行性。必须要尽可能多的考虑会出现的情况,对不希望出现的情况予以相对的措施或者提示。这样在代码重用的时候也可以放心的重用,而不必因为代码写的不够完善而再来修改,这样也会浪费很多时间。最后,程序的测试。一个完善的程序应该经得起测试。自己的程序写得好不好,最终得看测试。如果输入了非法的输入或者操作,程序是否能够正常运行?还是会像这次一输入错误就会死循环?这是程序的健壮性。做好以上几个方面,程序基本就做好了。但是任何一个程序都不可能没有BUG,金无足赤人无完人。如果要追求完美,就不得不锲而不舍,定期得到用户的反馈然后修复相关问题。就像微软一样,总是会在问题出现之后就发布漏洞补丁
教师评语
您可能关注的文档
- 公司考勤管理规章制度范本
- 公司考勤管理办法
- 1山东华龙人事考勤管理规定
- 2薪资考勤管理~1
- 004考勤管理实施细则
- 9考勤管理规定(09-B)
- 09HR培训_考勤管理_公式快速入门
- 22考勤管理规定
- 12HR培训_考勤管理_系统内置公式函数算法介绍
- DDS感应卡考勤管理系统介绍
- 08HR培训_考勤管理
- HR培训考勤管理公式快速入门讲义
- WINBOX-HR-T03-05考勤管理V4
- 沧州新联合置业考勤管理规定
- 第3章--“查询”__Access的检索系统-考勤管理
- 第5章--报表__Access的“统计系统”-考勤管理
- 第4章--窗体——Access的“查询界面”-考勤管理
- 感应式智能卡一卡通考勤管理系统方案书