版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计(C+ )课程设计任务书学院计算机与信息工程学院专业通信工程课程名称面向对象程序设计(C+题目学生考勤管理系统的设计与实现完成期限自2017年6月12日至2017年6月17日共6天内容及任务一、项目目的1 巩固和加深学生对程序设计课程基本知识的理解,综合该 课程中所学的理论知识,独立或联合完成一个应用课题的设计;2 根据选题需要,通过查阅手册和文献资料,培养分析和解 决实际问题的能力;3 进一步提高使用C+进行软件开发的能力。二、项目任务的主要内容和要求设计一个学生考勤管理系统。可以实现对学生信息的添加功 能、查询功能、显示功能、编辑功能、删除功能、统计功能、保 存功能、读取功
2、能、排序功能。实现:学生信息的录入:修改: 删除和查询,按姓名或学号查询。应用系统分析,建立该系统的 功能模块框图以及界面的组织和设计,分析系统中的各个实体及 它们之间的关系,根据问题描述,设计系统的类层次;完成系统 的应用模块。三、项目设计(研究)思路考勤管理系统要实现对学生考勤的信息录入,根据给定信息 对学生考勤结果进行分类统计,以及结果查询。四、具体成果形式和要求成果形式:程序和报告。具体要求:建立一个学生考勤信息数据库,文件名为“学生 考勤管理系统.txt ”并从该文件写入数据。学生考勤管理系统要 实现对学生考勤的信息录入,根据给疋信息对学生考勤进行分类。进度 安 排起止日期工作内容2
3、017年6月12日需求分析,按照课题要求,搜集查询相关 参考资料。2017年6月13日至2017年6月14日概要设计和详细设计阶段,根据前期的需 求分析结果,定义系统实现所需要的自定 义函数数据类型及个功能函数。2017年6月15日至2017年6月17日程序的进一步完善,调试与测试撰写课程 设计报告。主 要 参 资 料 考1 .谭浩强.C程序设计(第三版)M.北京:清华大学出版 社,20142 .梁旭.C语言课程设计(第三版)M.北京:电子工业出 版社,20133 .刁成嘉.面向对象程序设计M.北京:机械工业出版社,20044 .张鸿.C+语言程序设计M.北京:中国电力出版社,2014指导教师
4、意见(签字):年 月曰系(教研室)主任意见(签字):年 月曰面向对象程序设计(C+ )课程设计说明书学院名称:计算机与信息工程学院班级名称:通信162学生姓名:沈杰学号:2016211881题目:学生考勤管理系统的设计与实现指导教师姓名:王南洋起止日期:2017年6月12日至2017年6月17日目录1系统需求分析 5.1.1录入学生的缺课记录 5.1.2修改学生的缺课记录5.1.3 查询学生的缺课情况 5.1.4统计5.1.4.1 统计姓名及节数5.1.4.2统计课程及人次5.1.5 小结5.2总体设计6.3详细设计7.3.1学生缺课信息录用功能模块83.2修改某学生缺课信息功能的模块图83.
5、3查询某学生缺课信息功能图93.4统计某段时间内旷课学生姓名及旷课节数功能模块 93.5统计某段时间内有学生旷课的课程及旷课人次功能模块 94系统调试104.1系统实现104.2类的设计105结果分析185.1综合测试原始界面 195.1.1录入学生缺课记录 195.1.2修改学生缺课记录195.1.3 查询学生缺课情况 205.1.4统计某段时间旷课学生姓名及旷课节数 206总结201系统需求分析考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用 begin-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺 课类型(迟到、早退、请假及旷课)。试设计考勤管理系
6、统,使之能提供以下功 能:1.1录入学生的缺课记录从键盘输入数据提示,为遏兌空勢录省血轴垛拯淡応目匚将数霁芹镭仁 文件中,禾U用输入重定向功能读入。输入格式为:缺课日期、第几节课、课程名 称、学生姓名、缺课类型,每行一条纪录。例如:2016- 04-29 2-4 中国近代史 李某 迟到2017- 04-28 2-4 大学生心理素质马某旷课1.2修改学生的缺课记录可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。1.3查询学生的缺课情况查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。1.4统计1.4.1统计姓名及节数统计某段时间内(以天为单位)旷课学生姓名及旷课节数,查询
7、结果先按旷 课节数降序排序,旷课节数相同的学生按姓名升序排序。1.4.2统计课程及人次统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序 旷课人次相同的课程按课程名称升序排序。1.5小结系统以菜单方式工作。所谓菜单指用户可以自由选择所要执行的功能。学生可以通过以上功能录入信息、修改信息、查询信息、整理统计出所要了解的信息 除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方 便,在使用的过程中保持一个愉快的心 环 学生詣勘營理系统有广应帆冃户群 这其中有老师、有教务处主任、有公司管理人员,也可以供给一般用户使用。总 之,该系统可以满足用户需求,实现对其管理的人
8、员的考勤工作。2总体设计学生考勤管理系统包含五个大的功能。分别是:录入学生缺课信息、修改学 生缺课信息、查询某个学生的缺课情况、统计某段时间内(以天为单位)旷课学 生姓名及旷课节数和统计某段时间内, 有学生旷课的课程及旷课人次。学生的缺 课信息主要包含缺课日期、第几节课、课程名称、学生姓名、缺课类型。在录入 学生缺课信息时根据系统提示逐一输入。每输入完一条信息,系统会提示是否继 续输入、用户可以选择继续或返回主菜单。在修改学生缺课信息时,用户首先输 入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会 提示用户修改该学生的那一部分信息,用户可自行选择。如果系统中没有该 学生的
9、相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓 名或选择退出返回主菜单。在查询学生缺课信息时,用户先输入要查询的学生姓 名。系统检索判断是否存在该学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使用。学生考勤管理系统统计某段时 间内旷课学 生姓名及矿 课节数录入学牛的 缺谯信息统H某段吋间 内,有学生W课 的课程及0课 人次录入缺课学修改某学生牛的姓珮、的缺课日缺课曰Wh期、缺课节缺课节次、次、缺课课缺课课程稈#称、缺名称说课课类空类型I杳询某学生 的缺谍H 期、缺课节 次、缺课课 程名称、缺升旷姓课 间示生旷 吋显学及数 按序课常节按时间升 序显示冇 学主
10、旷课 的课程及 旷麋人次图1学生考勤管理系统中功能模块图3详细设计学生考勤管理系统中四个类的类层次图为Time :类图2学生考勤管理系统中中四个类的类层次图学生考勤管理系统中各功能模块的实现图3学生考勤管理系统中菜单函数的功能图3.1学生缺课信息录用功能模块图4 学生缺课信息录入的功能3.2修改某学生缺课信息功能的模块图图5学生考勤管理系统修改学生缺课信息功能图3.3查询某学生缺课信息功能图杏询某 学生缺 麋信息 功能4输入要査询的学生姓名显示要查询的学生缺课信息继续查询或返回菜单图6学生考勤管理系统查询学生缺课信息功能图3.4统计某段时间内旷课学生姓名及旷课节数功能模块统计某段 时间内旷 课
11、学生姓 名及旷课 节数功能统计某段时间内旷课学生姓金及旷 课节数*显示某段时同内旷课学生姓名及 旷课节数返回菜单图7统计某段时间内旷课学生姓名及旷课节数功能图3.5统计某段时间内有学生旷课的课程及旷课人次功能模块图8统计某段时间内有学生旷课的课程及旷课人次功能图4系统调试4.1系统实现程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:当录 入学生缺课信息时,出现了无法退出录入函数的情况,主要原因是输入函数中 while循环语句没有设置跳出循环的条件。除此之外,修改某学生缺课信息时, 如果没有该学生的缺课信息,系统没有提示要用户没有该学生信息,也没有建议用户重新输入要修改的学生姓名。
12、由此我发现了该系统修改学生缺课信息的不 足。在该函数中,也可查询要修改的学生缺课信息。如果没有,则提示用户没有 该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退出修改环 节,可以在循环语句中改变循环进行的条件从而终止循环。系统实现了提示用户 的功能,如果系统中没有你要查询的学生缺课信息,系统将会提示用户,用户可以继续输入要查询的学生姓名也可以通过按系统设置的退出键选择退出查询环 节。通过认真调试,我发现我有了收获。4.2类的设计附录:源程序代码(部分主要程序)/缺课课程类class qkeche n:public xinxipublic:qkeche n( )kcshu+;qkec
13、he n( )kcshu-;int getrc(x inxi st1,i nt n ,i nt j);char qkn 20;/公有数据成员private:int renci;static int kcshu;/静态数据成员;int qkeche n:kcshu=0;int qkeche n:getrc(x inxi st1,i nt n ,i nt j) ren ci=0;ren ci+;for(i nt i=0;i< n;i+)if(*(st1i+1.gettime()+1)=*(st1j.gettime()+1)&&*(st1i+1.gettime ()+2)= *
14、(st1j.gettime()+2)if(strcmp(qk n,st1i.getkeche n()=0)ren ci+;return renci;/缺课学生类class qstu:public xinxipublic:qstu()qst+;qstu()qst-;void prin t(x inxi & st1);int getjs(x inxi st1,i nt n ,i nt j);int setjs(i nt js=0)jieshu=js;char qst n 20;private:int jieshu;static int qst; /静态数据成员;int qstu:qst=O
15、;/全局变量int g,k=1,b=1;int q=-1;char name20,keche n10,queke10,jieci3;int y,m,d;/主函数定义15条信息类对象int main() xinxi tl15;qstu qt10;qkeche n qk6; int ch;while(1)cout«"*驶汕蛙学三弓藏背即誤统*"<<endl;caida n();coutvv"请选择菜单项:"<<endl;cin> >ch;switch(ch)case 1: g=shuru(tl); break;
16、case 2: xiugai(tl,g); break; case 3: chax un (tl,qt); break; case 4: ton gji1(tl,qt); break; case 5: ton gji2(tl,qk); break; case 6: exit(0);return 0;/修改函数void xiugai(x inxi st1,i nt n)int k=1,j=O,a1O;int flgh;int h;while(k=1) coutvv"请输入你要修改缺课记录的学生姓名"<<e ndl;cin>>n ame;flgh=0;f
17、or(i nt i=0;i< n;i+)if(strcmp( name,st1i.get name()=0)do aj=i;cout<<"1.修改日期2.修改节次3.修改课程名称4.修改缺课类型"<<endl;coutvv"请输入要选择的数值(1,2,3,4)"vvendl;int b;cin> >b;if(b=1) coutvv" 请输入新日期"<<endl;cin>>y> >m>>d;st1i.settime(y,m,d);else if(b
18、=2)coutvv"请输入新节次"<<endl;cin> >jieci;st1i.setjieci(jieci);else if(b=3)coutvv"请输入新课程名称"vvendl;cin> >keche n;st1i.setkeche n( keche n);else if(b=4) cout«"请输入新缺课类型"<<endl;cin>> queke;st1i.setqklx(queke);flgh=1;j+;while(b<1|b>4);if(fl
19、gh=0)coutvv" 没有你要找的学生姓名 帛理式要迅V青妹0"<<endl;cin> >k;elsecoutvv"还要继续吗(10)退出请按0"<<endl;cin> >k;for(i nt i=0;i<j;i+) h=ai;xia nsi(st1h);/查询函数void chax un(xinxi st1,qstu qt)char n='y'int u10;while( n=二'y') int j=0;coutvv"输入你要查询的学生姓名:"
20、<<endl;cin>>n ame;int i=0;for(;i<g;i+)if(strcmp( name,st1i.get name()=O) uj=i;j+;没有你所要的学生名字!";没有找到if(j=O) cout«"coutvv"是否退出退出请按nn"cin>>n;for(i nt a=0;a<j;a+) / 只有一条信息if(j<2)第几节课|"<<"课程名称|"<<"缺"<<*st1i.gett
21、ime()<<"|"<<*(st1i.gettime()+2)<<"|<<st1i.getkeche n() <<"| i=ua;cout<<"|缺课日期 |"<<"课类型|"<<endl;cout<<"|"<<*(st1i.gettime()+1)<<"|"<<st1i.getjieci()<<"|"
22、"<<st1i.getqklx()<<"| "<<e ndl;/两条信息以上排序elsei=ua;if(*(st1i.gettime()+1)<*(st1i+1.gettime()+1) qti.pri nt(st1i);elseif(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&&*(st1i.gettime()+2)v*(st1i+1.gettime()+2)qti.pri nt(st1i);elseif(*(st1i.gettime()+1)=*(st1i+1.g
23、ettime()+1)&&*(st1i.gettime() +2)=*(st1i+1.gettime()+2)if(strcmp(st1i.getjieci(),st1i+1.getjieci()=-1)qti.pri nt(st1i);coutvv"是否继续查询(y/n)继续请按y退出按n"<<endl;cin>>n;/统计某段时间内旷课学生姓名及旷课节数void ton gji1(xi nxi st1,qstu qt1) int d1=0,js=0;xinxi mi n;if(g=0)coutvv"没有你要统计的学生信息
24、请返回菜单录入学生缺课信息else if(g=1) coutvv" 姓名:"<<st1O.get name()<<e ndl;if(*(st10.getjieci()+2)!='0')js=+2;elsejs+;coutvv" 节数:"vvjsvve ndl;/显示函数void xia nsi(x inxi & st1)vve ndl;学生姓 coutvv"|缺课日期|"vv"第几节课|"vv"课程名称|"vv" 名|"<
25、<" 缺课类型|"<<endl;coutv<Tvv*(st1.gettime()vvTvv*(st1.gettime()+1)vv*(st1.gettime()+2)<<"|"<<st1.getjieci()<<"|"<<st1.getkeche n() v<T<vst1.get name()v<T<<st1.getqklx()<<"|"<<e ndl;/ 删除信息主要代码如下void de
26、l(records *r)/ 删除学生信息if(r->n=O)cout«"记录为空!"<<endl;return;coutvv"请输入要删除的记录的序号:(输入-1删除全部)"vvflush;int flag;cin> >flag;if(flag>r-> n-1 &&flagv-1)coutvv"不存在所要删除的记录!"<<endl;return;else if(flag=-1)r- >n=0;elsefor(i nt i=flag;i<r-
27、>n-1;i+)r->ri.set(r->ri+1);r->n-;char yn;cout«"保存修改?(y/n) "vvflush;cin»yn;if(yn二二'y')wt(r);else return;5结果分析这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序 可以看出的是数组用得比较多,反正是没啥特色。不仅如此,还写得功能不全, 实在是惭愧。现在在这里也只能说说它的不足之处了。类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当, 我有这个感觉。但我不知如何改进。 函数参数设定不够完
28、美,整个程序中对指针的运用比较少。对于指针的巧妙运用 把握得不够。还有就是容易missing或者是 N謨杲些应询改掠旳£疥:除此 以外,我对于怎样用文件保存数据还没深入了解。但我将数据保存到文件后又因 文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到熟稔运用。在调试过程中我发现在主函数中把字符数组名n ame赋值给字符指针p即p=name然后用cout<<p;语句可以输出字符数组里全部的内容,但 利用函数返回指针值却不能做到这一点。在我思考一番后终于明白了,这与内存 中的地址值有关。具体为什么我是解释不清了,调用系统的显示,如果在 getna
29、me()函数前加一个*号输出的只是一个字符,不加反而能输出所功能时有字 符。getname()函数的返回值为指针类型。但前面说过利用函数返回指针类型的 值并不能输出字符数组中所有的字符,为什么这里又可以呢?我不知道这一知 识,这也算我的程序的不足之处吧! 对于两个统计函数的功能不全, 我感到无能 为力,我为了这两函数苦思了两天硬是没凑合来。到后来脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。结果不是很好,但过程够了就行。5.1综合测试原始界面贋*水*材*欢迎进入学生考勤管理系统 *学生考勤管理系统r.4.录入学生的缺课记录修改学生的缺课记录杳询学生的缺课情况 一统计某段时间内旷课学生姓名及旷
30、课节数 统计某段时间内旷课的课程及旷课人次一 退岀系统请选择菜单项:图9综合测试原始界面5.1.1录入学生缺课记录宅水和:水材和欠迎进入学土老7勤管理系统衬揪*P§C ?|c«r?|c #:?|CZC?§C 5P§C s« ?Jc冶学生考勤管理系统冶aC 3C3 3C3Caa 3*a3C3C33C3a3C3C(rC 31.2.3.4.5.6.录入学生的缺课记录 修改学生的缺课记录 査询学生的缺课情况 统计某段时间内旷课学生姓名及旷课节数 统计某段时间内旷课的课程及旷课人次一 退出系统 请选择菜单项:*:7-输入开始请输入学生姓名图10录入学生缺
31、课记录5.1.2修改学生缺课记录*材:t*欢迎进入学生考勤管理系统 *;:;>:常倉*常*圳富*京*富* *富窗京*:案*常*寒*案*歎*常常*帝*歎歩常富*:富*:常案丈学生考勤管理系统tfc 5C 3S ZCZC "2| DC rZ5§C P|j 5|jC3C ZZ "ri 3C 313CZZ 51 ZC ?|C"31 ZC ZC "SC ZC ZC |C"5|C3C IC ZZ ZjrZZ "?|C*'*录入学生的缺课记录 修改学生的缺课记录 査询学生的缺课情况 统计某段时间内旷课学生姓名及旷课节数 一统
32、计某段时间内旷课的课程及旷课人次一 退出系统 请选择菜单项:请输入你要修改缺课记录的学生姓名 抚木没着你要找的学生姓名Q请重试要退出请按Q图11修改学生缺课记录5.1.3查询学生缺课情况材申*半*欢迎进入学生考勤管理系统 *水衬料林:*;5)C"Cr-P-|C?C-4PC -ZP4 r"1-rJ1- -"4学生考勤管理系统JLJ J *J % J U|R. J b J <1 " ", J ur,- J 11、-,. J Ufa. J °;=7占",J %" J U.3 L;J t. J L. J * J*" % .J 7” JLJ %. J 气話>, J J*. J U. J、J Lp.J % . J 1.5 i J . J1.2.3.5.6.录入学生的缺课记录 修改学主的缺课记录 査询学生的缺课情
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 分包工程安全协议完整版
- 维修合同的标的和标的物
- 影视剧制片人聘用合同协议书范本签约版5
- 铝锭生产线建设合同(2024版):生产线建设协议
- 二零二四年度高校毕业设计指导服务协议3篇
- 房屋托管出租的合同范本
- 公路排水沟施工合同范本
- 2024年度仪器设备采购与安装合同
- 《产后出血的处理》课件
- 2024版高层住宅工程防火设施合同
- 农村经济管理 课件
- 教学第8章-Kmeans聚类算法课件
- traveling-around-the-world的英语知识课件
- PS基础教程课件
- 六年级上科学苏教版17钢筋混凝土与现代建筑业课件
- 中国古陶瓷鉴赏课件
- 最新 麻醉相关危重症急抢救流程与流程图
- 小学心理健康教育人教六年级下册目录生命只有一次教学设计
- 幼儿园中班语言《小兔子开铺子》课件
- 五年级上册美术课件-第4课 未来的交通工具丨赣美版
- 碳酸饮料对人体危害
评论
0/150
提交评论