[管理学]学生考勤管理系统_第1页
[管理学]学生考勤管理系统_第2页
[管理学]学生考勤管理系统_第3页
[管理学]学生考勤管理系统_第4页
[管理学]学生考勤管理系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、閤浙2和垮隴课程设计报告课程名称 课题名称面向对象程序设计学生考勤管理系统专 业 班 级 学 号 姓 名 指导教师计算机科学与技术1181 班201113030128李珍辉谭小兰2012年 12 月 15日湖南工程学院课程设计任务书课程名称面向对象程序设计课 题 学生考勤管理系统专业班级 计算机1181班学生姓名蔡彪学 号 201113030128指导老师李珍辉谭小兰审 批任务书下达日期2012年12月15日任务完成日期 2013年01月05日一、设计内容与设计要求1课程设计目的:面向对象程序设计课程设计是集屮实践性环节z,是学习完面向对象程序设 计课程后进行的一次全面的综合练习。要求学生达到

2、熟练掌握c+语言的基本知识和 技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解 决简单的面向对彖程序设计问题,从而提高动手编程解决实际问题的能力。2. 课题题目学生考勤管理系统3. 设计要求:(1)根据自己对应的课题完成以下主要工作:完成系统需求分析:包括 系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。完 成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模 块图)。完成系统详细设计:包括数据库需求分析;数据库概念结构设计(e r图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。系 统调试:调试出现的主要问题,编译语法错

3、误及修改,重点是运行逻辑问题修 改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出 每一步的操作步骤。关键源程序(带注释)(2)按规定格式完成课程设计报告,将其打印稿(a4纸)上交给老师存档。(3)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。进度安排第17周星期二8: 0012: 00星期三8: 0012: 00星期四8: 0012: 00星期五8: 0012: 00星期六8: 0012: 00第18周星期五8: 0012: 00三、参考书籍1. c+程序设计课程设计刘振安编著tp312c5632. c+ builder和delphi课程设计与系统开发案例伍俊良

4、 清华大学出版社 7-302-06072-x3. visual c+课程设计案例精编 严华峰 中国水利水电出版社 7-5084-2007-1 20044. visual c+课程设计与系统开发案例 伍俊良 清华大学出版社7-302-05968-320025. visual c+语言课程设计:案例精选与编程指导陈清华朱红东南大学出版社 7-81089-275-4 20036. visualc+课程设计案例精编中国水利水电出版社7-5084-1004-1 20027. 数据结构课程设计案例精编:用c/c+描述李建学李光元吴春芳 清华大学 出版社 7-302-14536-9 2007(编程平台不限,

5、vc+, c+ builder等等。)课题:学生考勤管理系统(一)、课程设计题目:学半考勤管理系统(二)、目的与要求:1、目的:(1)要求学生达到熟练掌握c+语言的基本知识和技能;(2)基木掌握面向对象程序设计的基木思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问 题。2、基本要求:(1)要求利用面向对象的方法以及c+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计屮,至少要用到面向对彖的一种机制。3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行

6、修改的功能。4、写出设计说明书(三)、设计方法和基本原理:1、问题描述(功能要求):考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续多 节课用begin-end的形式表示)、课程名称(课程名称中不会岀现空格)、学生 姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提 供以下功能:1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘 输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输 入格式为:缺课日期第几节课 课程名称学牛姓名缺课类型每行一条纪录。例如:2008-04-29 3-4 c+程序设计实验张三迟到2008-04-28 3-

7、4 c+程序设计李四旷课2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改, 然后显示一下修改后的纪录。3).查询某个学生的缺课情况:查询结果按照口期升序排序,同一天内 按照所缺课程的时间升序排序。4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询 结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多 到少排序,旷课人次相同的课程按课程名称升序排序;6).系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功 能)2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系

8、统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系包括属性和行为;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述(包括属性和方法);(5)完成类屮各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告以及系统使用说明书目录1.系统需求分析12 总体设计23. 详细设计44. 系统调试65. 结果分析96. 总结10附录1系统需求分析考勤信息记录了学生的缺课情况,它包括:缺课日期、第儿节课 (连续用begin-end的形式表示)、课程名称(课程名称中不会出 现空格)、学生姓名、缺课类型(迟到、早退、

9、请假及旷课)。试 设计考勤管理系统,使之能提供以下功能:(1) .录入学生的缺课记录:从键盘输入数据(提示:为避免 重复从键盘输入数据,测试时可将数据存储在文件中,利用输入 重定向功能读入),输入格式为:缺课日期第几节课 课程名称学 生姓名缺课类型每行一条纪录。例如:2009-04-29 2-4中国近现代文学史 李云龙 迟到2009-04-28 2-4大学生社交礼仪马志鹏旷课(2) .修改某个学生的缺课记录:可以对缺课纪录的任意部分 进行修改,然后显示一下修改后的纪录。(3) .查询某个学生的缺课情况:查询结果按照日期升序排序, 同一天内按照所缺课程的时间升序排序。(4) .统计某段时间内(以

10、天为单位),旷课学生姓名及旷课 节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按 姓名升序排序;(5) .统计某段时间内,有学生旷课的课程及旷课人次,按 旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序;(6) .系统以菜单方式工作。(所谓菜单指用户可以自由选择 所要执行的功能。学生可以通过以上功能录入信息、修改信息、 查询信息、整理统计出所要了解的信息,除了要实现上述的基本 功能之外,本系统还应该在细节上下工夫,使用户使用方便,在 使用的过程中保持一个愉快的心情。学生考勤管理系统有广大的 用户群,这其中有老师、有教务处主任、有公司管理人员,也可 以供给一般用户使用。总之该系

11、统可以满足用户需求,实现对其 管理的人员的考勤工作。2 总体设计学生考勤管理系统包含五个大的功能,分别是:录入学生缺课信 息、修改学生缺课信息、查询某个学生的缺课情况、统计某段时间内 (以天为单位),旷课学生姓名及旷课节数和统计某段时间内,有学 生旷课的课程及旷课人次。学生的缺课信息主要包含缺课日期,第几 节课、课程名称,学生姓名,缺课类型。在录入学生缺课信息时根据系统提示逐一输入。每输入完一条信 息,系统会提示是否继续输入,用户可以选择继续或返回主菜单。在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统 会检索如果系统中有该学生的相关信息则系统首先会提示用户修改 该学生的那一部分信息,

12、用户可自行选择。如果系统中没有该学生的 相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学 生姓名或选择退出返回主菜单。在查询学生缺课信息时,用户先输入要查询的学生姓名,系统检 索判断是否存在该学生的信息然后做出相应的提示。总之,用户可以 方便的在系统提示下进行使用。学生考勤管理系统中功能模块图:菜单录入缺课学 牛的姓名、 缺课日期、 缺课节次、 缺课课程修改某学生的 缺课日期、缺 课节次、缺课 课程名称、缺 课类型查询某学牛的 缺课日期、缺 课节次、缺课 课程名称、缺 课类型按时间升序 显示旷课学 生姓名及旷 课节数按时间升序 显示有学生 旷课的课程 及旷课人次3.详细设计(1)

13、类的设计此系统设计了两个类,一个是record类,一个是records类。record类完 成对学生基本信息的声明与获取,包括学生姓名、缺课日期、缺课课程名称、缺 课课程类型、缺课节次。record类的设计class recordpublic:void set(string d, int eno, string c, string s, int type) date, assign(d) ;/缺课日期 cname. assign(c) ;/缺课课程名称 sname. assign(s) ;/学生姓名 thi s->cno=cno; /缺课节次 this->type=type;/缺课

14、类型void set(record re)date, assign (re. date) ;/获取缺课日期 cname. assign (re. cname) ;/获取缺课课程名称 sname. assign (re. sname) ;/获取学生姓名 this->cno=re. eno;/获取缺课节次 this->type=re. type;/获取缺课类型string date, cname, sname;/定义fl期,课程名称,学生姓名 int eno, type;/定义缺课节次,缺课类型;(2) 学生考勤系统的显示模块void pri (records *r)/函数 if(r-

15、>n=0)cout<<,ifi 录为空! /z<<endl; return;cout«,zn序号t缺课日期 节次t课程名称t学生姓名t缺课z,«endl ; for(int i=0;i<r->n;i+)cout<<i<<,zt,z<<flush;prione(r->ri);(3) 学生考勤系统的查询模块void pri (records *r)/函数if(r->n=0)cout<<z,记录为空!,z<<endl;return;cout«,n序号t缺课日

16、期节次t课程名称t学生姓名t缺课类型/z«endl;for(int i=0;i<i >n;i+)cout<<i<<z,tz,<<flush;prione(厂-讥i);(4) 学生考勤系统的修改模块void edt (records *r)/函数if (r->n二二0)cout<<z,记录为空! z,<<cndl;return;cout<</z请输入要修改缺课记录的学牛姓名:flush;string tl,t3,t4;char tmp30;int t2,t5,flag=0;cin>>t

17、mp;tl. assign(tmp);for(int i=0;i<r->n;i+)if (r->ri sname=tl)flag=7;break;if (!flag)cout<<z,查无此学生! /z<<endl; return;tl=r->ri date;t2=r->ri eno;t3=i>ri. cname;t4=r->ri. sname;t5=r->ri type;cout«,z请输入要修改的项目:n(l缺课日期2.缺课节次3缺课名称4. 学生姓名5.缺课类型6.全部)flush;eo:cin>>

18、;flag;switch(flag)case 1:goto el;case 2:goto e2;case 3:goto e3;case 4:goto c4;case 5:goto e5;case 6:goto el;default:goto eo;el:cout<<,z请输入缺课日期:(例如100216) "flush;cin>>tl;if(flag!=6)goto e6;e2:cout<<,z请输入缺第几节课:"flush;cin>>t2;if(flag!=6)goto e6;e3:cout<</,请输入缺课名称

19、:ush;cin>>t3;if (flag!=6)goto e6;e4:cout<</z请输入缺课学牛姓名:flush;cin>>t4;if(flag!=6)goto c6;e5:cout«,/请输入缺课类型:(1.迟到2.早退3.请假4.旷课)flush; cin>>t5;e6:r->ri. set (tl, t2, t3, t4, t5);char yn;cout<<z,保存修改? (y/n) "flush;cin>>yn;i f (yn二二'y,) wt (r);else retur

20、n;(5) 学生考勤系统的删除模块void del (records *r)/函数if(r->n=-0)cout<<z,记录为空!,z<<endl;return;cout«,z请输入要删除的记录的序号:(输入t删除全部)"flush; int flag;cin>>flag;i f(flag>r->nl&&f1ag<l)cout«,z不存在所要删除的记录!/z«endl;return;else if(flagl)r->n=0;elsefor(int i=flag;i<r

21、->nl;i+) r->ri. set(r->ri+l);r>n一;char yn;cout<<,z保存修改? (y/n) "flush;cin>>yn;i f (yn二二'y,) wt (r);else rcturn;(6) 学生考勤系统的录入模块void input (records *r)/录入string tl, t3, t4;int t2,t5,flag=0;char yn;cout<<,/请输入学生缺课记录:,z<<endl ;ml:cout<<,z请输入缺课日期:(例如10021

22、6) "flush;cin>>tl;if (! (timechk(t1)goto ml;m2:cout<<,z请输入缺第几节课:"flush;cin>>t2;if (t2<l|t2>10)cout<<z,节次录入有误!请重新录入:"cndl; goto m2;cout<</z请输入缺课名称:"flush;cin>>t3;cout«,z请输入缺课学生姓名:flush;cin>>t4;m3:cout«,z请输入缺课类型:(1迟到2.早退3请假4

23、旷课),«flush; cin>>t5;if(t5<l|t5>4)cout<</z类型输入有误!请重新录入:endl; goto m3;for(int i=0;i<r->n;i+)if(r->ri. date=tl&&r->ri. cno=t2&&r->ri. cname=13&&r->ri. sname二二t4&&r->ri. type二二t5) cout<<,z该条记录已存在,是否添加为新记录?(y/n) "flush

24、;nl:cin>>yn;辻(yn二二'y')break;else if (yn二二'n')goto n2;else goto nl;r->rr->n+. set (tl, t2, t3, t4, t5);n2:cout«z,是否继续输入? (y/n) z,«flush;n3:cin>>yn;if (yn=,y,) goto ml;else if(yn='n')cout<<z,保存修改?(y/n) "flush;cin>>yn;if (yn=,y')

25、wt (r);else return;else goto n3;(7) 学生考勤系统的统计模块void search_s(records *r)/统计if(r->n=0)cout<<z,记录为空!,z<<endl;return;records *rl二new records ();gl:cout«,z请输入要检索的时间范围:(例如080610-080612),z«flush; string tmp, id, hd;cin>>tmp;id. assign(tmp. substr (0, 6);hd. assign(tmp. subst

26、r (7, 6);if(!timechk(ld)| |!timechk(hd)goto gl;for (int i=0;i<r->n;i+)if(r->ri. date, compare(id)>二0&&r->ri. date, compare(hd)<二0&&r->r i. type=4)rl->rrl->n+ set (r->ri);cout«,/请选择统计方式:(1.学生旷课情况降序显示2课程旷课情况降序 显示)"flush;g2:cin>>i;switch (i)

27、case 1: cout<<,zn 在,z<<ld<<,z到期间学生旷课情况如下:,z<<endl; rl->order_s();break;case 2: cout«,zn在,z«ld«,z到hd«期间课程旷课情况如下:z,«cndl; rl->order_c ();break;default:goto g2;4.程序调试(1)程序开始运行的界面c *c: docu>ent s and sett ingsad*inist rat or桌面c+课程设计51cto下载-c况录录缩&

28、gt; 录星记的/? 记录课课课况/6 课记缺缺缺情/5 缺课的的的课/4 生缺生生生旷/3 s2zs/2 亠勺生个个个间统<1 列示入询改鶴出择 能修删某退选 12 3 4 5 6 7 空w(2)程序显示功能的界面641节次631型昭假退课證课课到 缺请早旷迟旷旷旷迟名姓生生四王白都零八称名 h 蒙语语数概as理性 课高英英亠咼毛fls缺课日期080412080623020808021314080314080623080401111211贩回功能列表? <y/n>c*c: docu«ent s and sett ingsad>inist r at or 桌面

29、c+课程设计51cto下载-c_2 日回计1 况录录统> 录暑记的/? 记录课课课况/6 课记缺缺缺情/5 缺课的的的课/4 生缺生生生旷/3/2 有生个个个间统<1 列天询改羈岀择 能思唾>.«腺-m选 功 12 3 4 5 6 7uw(3)程序录入功能的界面4旷课2(4)程序查询功能的界面i itivaa ui«i搜狗拼音半学生考勤管理系统u1.0.02 6> 87 0:-> /5记織:c+名<l/n 虫课课姓 3 型? /2生日几名4妻入 x计 况录录统> s记的 记录课课课况 课记缺缺缺情 缺课的的的课 生缺生生生旷 篇 o

30、fw 有生个个个间统<1学譬课谍醤<亍某某某紫条缺專缺缺续 列父询改麒岀择一入入入入入继 能显番_修删某退选入否功b,3,4,5,|6,7-青录请请请请请是口2.c: docu>ent s and sett ingsad>inist rat or桌面.c+课程设计51ct0下载-c_2 四 计3李 况录录统> : 录记的/7名 记录课课课况z6姓 课记缺缺缺情z5生 缺课的的的课z4学 生缺生生生旷/3的 篇wwz2询 有生个个个间统<1查:要 列t询改脣出择入 能显善一修删某退选输 功1 2 3 4 5 £ ?请请豔类型警主姓名 季四邊程名称 央

31、语(5)程序修改功能的界面助能列養lptasf春询某个学生的缺课情况4 修改某个学生的缺课记录 匕删篌某个堂生的缺课记录 養髏前旷课情况的统计情选择:<1/2/3/4/5/6/7> 45 缺课类型6 全部2惰触入要修改缺课记录的学生姓名:黄白 情输入要修敌的玻自:cl 缺塀日期2 缺课节次3 缺课名称4学生姓名 请筮入缺第几节课:5 保存修改? <p/n> (6)程序删除功能的界面计 况录录统 录暑记的 记录课课课况 课记缺缺缺情 缺课的的的课 生缺生生生旷 篇筈hke i :有生个个个间统<1删?列曲 :要改能立 列示入询改專岀择入修功如 能显善一修删某退选回沏

32、 功鑒13-乳5-|6-|7-请请保返坤/录y /> </2z除 3表b5.结果分析这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序可以看 出的是数组用得比较多,反正是没啥特色,不仅如此,述写得功能不全,实在是惭愧。 现在在这里也只能说说它的不足之处了。类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当,我有这个感 觉,但我不知如何改进。函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把 握得不够。述有就是容易missing;或者是,这都是些应该改掉的毛病。除此以外,我对于怎样用文件保存数据还没深入了解,但我将数据保存到文件后又 因

33、文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法 做到熟稔运用。在调试过程中我发现在主函数中把字符数组名name赋值给字符指针p 即p=name;然后用cout«p;语句可以输出字符数组里全部的内容,但利用函数返回指针 值却不能做到这一点,在我思考一番后终于明白了,这与内存中的地址值有关。具体为 什么我是解释不清了在调用系统的显示功能时,如果在getname()函数前加一个*号输出的只是一个字符, 不加反而能输岀所有字符。getname()函数的返回值为指针类型,但前面说过利用函数返 回指针类型的值并不能输出字符数组中所有的字符,为什么这里又可以呢?这是为什

34、 么?我不知道这一知识,这也算我的程序的不足之处吧!对于两个统计函数的功能不全,我感到无能为力,我为了这两函数苦思了两天,硬 是没凑合来。到后来,脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。结果不是 很好,但过程够了就行。这也是自欺欺人的看法,让我再一次自责吧。6 总结这次的程序设计相对于上学期还是有了进步的。学生考勤管理系统要求 至少要有四个类,在起初,对于定义哪四个类我是不清楚的,通过仔细的 研读问题描叙终于在脑海里确定了这四个类。既然是学生考勤管理系统, 那由学牛缺课信息中的fi期我想到了时间类,这是一个很简单的类。从系 统的几人功能我又想到了系统的基础就是缺课学生的缺课信息,于是我

35、又 想到了一个信息类,还有两个类是根据两个统计功能想到的,在现在看来 似乎有些不妥。通过这次的课程设计我明白了学习程序设计语言必须要勤 做实验,通过实验总结经验。平时遇到的一些小问题一定要重视,越是基 础的知识越要理解透彻。比如指针与数组方面的知识,一旦没有弄清楚, 在设计程序时就会吃亏。这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了, 有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思 考就不能真正的掌握一门知识。这次的实验给以了我警示,它让我明白我 所掌握的知识还很欠缺,对于继承与派生这一章的知识,我以为自己勉强 掌握了,这次实验后我发现我掌握得还不够。基类的

36、保护成员公有继承到 派生类,类外是否可以通过对象来访问呢,原先我认为是可以的,经过这 次程序设计,我知道我错了。总之,我觉得做学问不应该马虎,对于所学一定要有深入的理解,这也 是我这次课设得到的启示。附录:源程序#include<iostream># include<cstring>#include<windows.h>using namespace std;吋间类class timepublic:time(int y=o?int m=o,int d=0)yearly ;month=m;day=d;time()protected:int year,month

37、,day;信息类class xinxi:public time public:xinxi() tiaoshu+;-xinxi()tiaoshu;void setname(char *n)strcpy(name.n);void settime(int yjnt mjnt d) year=y;month=m;day=d;void setqklx(char *qk) strcpy(queke9qk);void setjieci(char *jc)strcpy(jieci jc);void setkechen(char *kc)strcpy(kechen,kc);char *getname()char

38、 *n;n=name;return n;char *getqklx()char *qk=queke;return qk;char *getjieci()char *jc;jc=jieci;return jc;)char *getkechen()char *gk;gk=kechen;retum gk;int *gettime();private:char name20;/ 姓名char jieci3 ,kechen 10 ,queke 10;int tm3;static int tiaoshu;int xinxi:tiaoshu=0;int *xinxi:gettime() int *t;t=t

39、m;tm0=year;tm 1 =month;tm2=day;return t;缺课课程类class qkechen:public xinxipublic:qkechen() kcshu+;q kechen() kcshu-;int getrc(xinxi stl,int n,int j);char qkn2o;/公有数据成员private:int renci;static int kcshu;/静态数据成员int qkechen:kcshu=o;int qkechen:getrc(xinxi stl ,int n,int j) renci=o;renci+;for(int i=o;i<

40、n;i+)if(*(st li+ l.gettime()+1 )=*(stl j.gettime()+1 )&&*(st li+ l.gettime()+2)= *(stl jgettime()+2)if(strcmp(qkn,stl i .getkechen()=o)renci+;return renci;缺课学生类class qstu:public xinxipublic:qstu()qst+;-qstu()qst-;void print(xinxi &stl);int getjs(xinxi stl(lint njnt j);int setjs(int js=o)

41、jieshu=js;char qstn20;private:int jieshu;static int qst; 静态数据成员;int qstu:qst=o;类的实现void qstu:print(xinxi &stl)cout«h|缺课日期r,«"第几节课|”vv”课程名称r*«n缺课类型|n«endl;cout«'t'«*stl.gettime()«,t,«*(stl.gettime()+l)«*(stl.gettime()+2)«'t,«

42、stl.getjieci(«stl .getkechen()«'t'«stl .getqklx()«"|"«endl;int qstu:getjs(xinxi stl ,int n,int j) int i=o,js=o;xinxi min;if(*(st 1 j .getj ieci()+2)!='0')js 二+2;elsejs+;for(i=0;i<n;i+)if(*(stli4-l.gettime()+l)=*(stlj.gettime()4-l)&&*(stl

43、i+l.gettime()+2)=*(stl j.gettime()+2)if(strcmp(st 1 i+1 .getname(),qstn)=o)if(*(stl i.getjieci()+2)!=,0,)js=+2;elsejs+;jieshu=js;return jieshu;/函数声明int shuru(xinxi stl);void chaxun(xinxi stl,qstu qt);void xiugai(xinxi stl ,int n);void tongj订(xinxi stl,qstu qtlfl);void tongji2(xinxi stl,qkechen qkl);

44、void caidan();void xiansi(xinxi &stl);void setqstn(xinxi stl,qstu qtl,int n);void setqkn(xinxi stlflqkechen qk,int n);全局变量int g,k=l,b=l;int q二 1;char name201 .kechen 101 ,queke 10 jieci31; int y,m,d;主函数int main() xinxi tl15;/定义15条信息类对象 qstu qt10;qkechen qk6;int ch;*"«endl;while(l)coutv

45、v”*欢迎进入学牛考勤管理系统!caidan();cout«"请选择菜单项:"«endl;cin»ch;switch(ch)case 1: g=shuru(tl); break; case 2: xiugai(thg); break; case 3: chaxun(tl,qt); break; case 4: tongjil(tl,qt); break; case 5: tongji2(tl,qk); break; case 6: exit(0);return 0;菜单函数 void caidan() system(”color a”);cou

46、tw” * “we ndl, cout«cout«h*学生考勤管理系统*n«endl;cout«h 1. 录入学生的缺课 i己录 *”vvendl;cout«"2.修改学生的缺课记录*h«endl;cout«h3.查询学生的缺课情况*n«endl;cout«n4.统计某段时间内旷课学生姓名及旷课节数*h«endl;cout«n5.统计某段时间内旷课的课程及旷课人次*u«endl;cout«h6.退出系统*n«endl;输入函数int shuru(

47、xinxi stl) char a;cout«"输入开始!.h«endl;do q+;cout«h请输入学生姓名n«endl;cin»name;stl q.setname(name);cout«"请输入课程名称"«endl;cin»kechen;stl q.setkechen(kechen);cout«"请输入缺课口期"«endl;cin»y»m»d;stl q.settime(y,m,d);cout«&q

48、uot;请输入缺课类型m«endl;cin»queke;stl q.setqklx(queke);cout«h请输入缺课节次"«endl;cin»jieci;stlql.setjieci(jieci);cout«n是否还要继续输入:(y/n)h«endl;cin»a;while(a=y);return q+1;修改函数void xiugai(xinxi stl,int n)int k=l,j=0,a10;int flgh;int h;while(k=l) cout«n请输入你耍修改缺课记录的学生

49、姓名h«endl;cin»name;flgh=o;for(int i二0;ivn;i+)if(strcmp(name,st lij .getname()=0)do aj=i;coutvvt.修改日期2.修改节次3.修改课程名称4.修改缺课类型vvendl; cout«h请输入要选择的数值(l,2,3,4)”vvendl;int b;cin»b;if(b=l) cout«n请输入新日期u«endl; cin»y»m»d;stl i.settime(y,m,d);else if(b=2)cout«n

50、请输入新节次"«endl;cin»jieci;stli.setjieci(jieci);else if(b=3)cout«n请输入新课程名称u«endl;cin»kechen;stl i.setkechen(kechen);else if(b=4) cout«h请输入新缺课类型n«endl;cin»queke;st 1 i.setqklx(queke);flgh=l;j+;while(b<l|b>4);if(flgh=o)cout«lf没有你要找的学生姓名,请重试要退出请按oyven

51、dl; cin»k;elsecout«n还要继续吗(1o)退出请按oh«endl;cin»k;for(int i=o;ivj;i+)h=ai;xiansi(stlh);/查询函数void chaxun(xinxi stl,qstu qt)char n-y'int u10; while(n=,y,)int j=0;cout«h输入你要查询的学生姓名:h«endl;cin»name;int i=0;for(;i<g;i+)if(strcmp(name,st li .getname()=o)uj=i;j+;if(j=

52、o)cout«"没有你所要的学生名字r;没有找到cout«h是否退出退出请按nnn;cin»n;for(int a=o;a<j;a+)只有一条信息if(j<2) i=ua;cout«"|缺课日期第几节课课程名称缺课类型|n«endl;cout«h|n«*stli.gettime()«n|h «*(st 1 i .gettime()+1 )«h |n«*(stli.gettime()+2)«n| n«stl i.getjieci()&#

53、171;n|n«stl i.getkechen()«"| u«stl i.getqklx()«"| "«endl;两条信息以上排序elsei=ua;if(*(st 1 i .gettime()+1 )<*(st 1 f i+1 .gettime()+1)qti.print(stli);elseif(*(stl i.gettime()+1 )=*(stli+l .gettime()+1 )&&*(stl i.gettime()+2)<*(stl i+1 .gettime()+2)qti.p

54、rint(stli);elseif(*(st li .gettime()+1 )=*(st li+l .gettime()+1 )&&*(st li .gettime()+2)=*(st 1 i+1 .gettime()+2)if(strcmp(stl i.getjieci(),stl i+l.getjieci()=-l) qti.print(stli);cout«m是否继续查询(y/n)继续请按y退岀按n"«endl; cin»n;统计某段时间内旷课学生姓名及旷课节数void tongjil (xinxi stl 5qstu qtl)

55、int dl=o,js=o;xinxi min;if(g=o)cout«"没有你要统计的学生信息请返回菜单录入学生缺课信息” vvendl; else if(g=l) cout«"姓名:n«stl o.getname()«endl;if(*(st l0 .getjieci()+2) !=,0*)js=+2;elsejs+;cout«h 节数:"«js«endl;else信息按时间排序int i=0;for(;i<(g-l);i+)if(*(st li.gettime()+ l)<*(

56、stli+l .gettime()+1)min=st 1 i ;st 1 i=st 1 i+1 ;st 1 i+1 =st 1 i ;elseif(*(stl i.gettime()+l)=*(stl i+1 l.gettime()+1)&&*(stl i.gettime()+2)<*(stl i+l.gettime()+2)min=stli ;st li=st li+l ;stli+ l=stli;elseif(*(stl i.gettime()+1 )=*(stli+ l.gettime()+1 )&&*(stl i.gettime()+2)=*(stl i+ l.gettim e()+2)dl+;for(int j=o;j<(g-dl );j+)cout«*stl j .gettime()«*(st 1 j .gettime()+ l)«*(st 1 j .gettime()+2)«endl; for(i=0;i<k;i+) setqstn(stl,q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论