C课程设计报告86187

上传人:仙*** 文档编号:103703447 上传时间:2022-06-09 格式:DOC 页数:19 大小:228KB
收藏 版权申诉 举报 下载
C课程设计报告86187_第1页
第1页 / 共19页
C课程设计报告86187_第2页
第2页 / 共19页
C课程设计报告86187_第3页
第3页 / 共19页
资源描述:

《C课程设计报告86187》由会员分享,可在线阅读,更多相关《C课程设计报告86187(19页珍藏版)》请在装配图网上搜索。

1、面向对象程序设计C+课程设计任务书学 院计算机与信息工程学院专 业通信工程课程名称面向对象程序设计C+题 目学生考勤管理系统的设计与实现完成期限自2017年6月12日至2017年6月17日共6天内容及任务一、项目目的1巩固和加深学生对程序设计课程基本知识的理解,综合该课程中所学的理论知识,独立或联合完成一个应用课题的设计;2根据选题需要,通过查阅手册和文献资料,培养分析和解决实际问题的能力;3进一步提高使用C+进行软件开发的能力。二、项目任务的主要内容和要求设计一个学生考勤管理系统。可以实现对学生信息的添加功能、查询功能、显示功能、编辑功能、删除功能、统计功能、保存功能、读取功能、排序功能。实

2、现:学生信息的录入:修改:删除和查询,按姓名或学号查询。应用系统分析,建立该系统的功能模块框图以及界面的组织和设计,分析系统中的各个实体及它们之间的关系,根据问题描述,设计系统的类层次;完成系统的应用模块。三、项目设计研究思路考勤管理系统要实现对学生考勤的信息录入,根据给定信息对学生考勤结果进行分类统计,以及结果查询。四、具体成果形式和要求成果形式:程序和报告。具体要求:建立一个学生考勤信息数据库,文件名为学生考勤管理系统.txt并从该文件写入数据。学生考勤管理系统要实现对学生考勤的信息录入,根据给定信息对学生考勤进行分类。进度安排起止日期工作内容2017年6月12日需求分析,按照课题要求,搜

3、集查询相关参考资料。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日19 / 19目录1 系统需求分析51.1 录入学生的缺课记录51.2 修改学生的缺课记录51.3 查询学生的缺课情况51.4 统计51.4.1 统计姓名及节数51.4.2 统计课程及人次51.5 小结52 总体设计63 详细设计73.1 学生缺课信息录用功能模块73.2 修改某学生缺课信息功能的模块图83.3 查询某学生缺课信息功能图83.4 统计某

5、段时间内旷课学生姓名及旷课节数功能模块83.5 统计某段时间内有学生旷课的课程及旷课人次功能模块94 系统调试94.1系统实现94.2类的设计105 结果分析175.1 综合测试原始界面185.1.1 录入学生缺课记录185.1.2 修改学生缺课记录185.1.3 查询学生缺课情况195.1.4 统计某段时间旷课学生姓名及旷课节数196 总结201 系统需求分析 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课连续用begin-end的形式表示、课程名称课程名称中不会出现空格、学生姓名、缺课类型迟到、早退、请假及旷课。试设计考勤管理系统,使之能提供以下功能:1.1 录入学生的缺课记录从

6、键盘输入数据提示,为避免重复从键盘输入数据测试时可将数据存储在文件中,利用输入重定向功能读入。输入格式为:缺课日期、第几节课、课程名称、学生姓名、缺课类型,每行一条纪录。 例如: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 小结系统以菜单方式工作。所谓菜单指用户可以自由选择所要执行的功能。学生可以通过以上功能录入信息、修改信息、查询信息、整理统计出所要了解的信息除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。学生考勤管理系统有广大的用户群这其中有老师、有教务处主任、有公司管理人员,也可以供给一般用户使用。总之,该系统可以满足用户需求,实现对其管理的人员的考勤工作。 2 总体设计学生考勤管理系统包含

8、五个大的功能。分别是:录入学生缺课信息、修改学生缺课信息、查询某个学生的缺课情况、统计某段时间内以天为单位旷课学生姓名及旷课节数和统计某段时间内,有学生旷课的课程及旷课人次。学生的缺课信息主要包含缺课日期、第几节课、课程名称、学生姓名、缺课类型。在录入学生缺课信息时根据系统提示逐一输入。每输入完一条信息,系统会提示是否继续输入、用户可以选择继续或返回主菜单。在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。如果系统中没有该学生的相关信息,则系统会给相关提示,用户可以选择继续输入要修改的学生姓名

9、或选择退出返回主菜单。在查询学生缺课信息时,用户先输入要查询的学生姓名。系统检索判断是否存在该学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使用。图1 学生考勤管理系统中功能模块图3 详细设计学生考勤管理系统中四个类的类层次图为图2 学生考勤管理系统中中四个类的类层次图学生考勤管理系统中各功能模块的实现图3 学生考勤管理系统中菜单函数的功能图3.1 学生缺课信息录用功能模块图4 学生缺课信息录入的功能3.2 修改某学生缺课信息功能的模块图图5 学生考勤管理系统修改学生缺课信息功能图3.3 查询某学生缺课信息功能图图6 学生考勤管理系统查询学生缺课信息功能图3.4 统计某段时

10、间内旷课学生姓名及旷课节数功能模块图7统计某段时间内旷课学生姓名及旷课节数功能图3.5 统计某段时间内有学生旷课的课程及旷课人次功能模块图8 统计某段时间内有学生旷课的课程及旷课人次功能图4 系统调试4.1系统实现程序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:当录入学生缺课信息时,出现了无法退出录入函数的情况,主要原因是输入函数中while循环语句没有设置跳出循环的条件。除此之外,修改某学生缺课信息时,如果没有该学生的缺课信息,系统没有提示要用户没有该学生信息,也没有建议用户重新输入要修改的学生姓名。由此我发现了该系统修改学生缺课信息的不足。在该函数中,也可查询要修改的学生缺课

11、信息。如果没有,则提示用户没有该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退出修改环节,可以在循环语句中改变循环进行的条件从而终止循环。系统实现了提示用户的功能,如果系统中没有你要查询的学生缺课信息,系统将会提示用户,用户可以继续输入要查询的学生姓名也可以通过按系统设置的退出键选择退出查询环节。通过认真调试,我发现我有了收获。 4.2类的设计附录:源程序代码部分主要程序 /缺课课程类 class qkechen:public xinxi public: qkechenkcshu+; qkechenkcshu-; int getrc; char qkn20;/公有数据成员 priv

12、ate: int renci; static int kcshu;/静态数据成员 ; int qkechen:kcshu=0; int qkechen:getrc renci=0; renci+; forint i=0;i if*st1i+1.gettime+1=*st1j.gettime+1&*st1i+1.gettime+2= *st1j.gettime+2 ifstrcmpqkn,st1i.getkechen=0 renci+; return renci; /缺课学生类 class qstu:public xinxi public: qstuqst+; qstuqst-; void pr

13、int; int getjs; int setjs jieshu=js; char qstn20; private: int jieshu; static int qst; /静态数据成员 ; int qstu:qst=0;/全局变量 int g,k=1,b=1; int q=-1; char name20,kechen10,queke10,jieci3; int y,m,d; /主函数 int main xinxi tl15;/定义15条信息类对象 qstu qt10; qkechen qk6; int ch; while cout*欢迎进入学生考勤管理系统*endl; caidan; co

14、ut-请选择菜单项:ch; switch case 1: g=shuru; break; case 2: xiugai; break; case 3: chaxun; break; case 4: tongji1; break; case 5: tongji2; break; case 6: exit; return 0; /修改函数 void xiugai int k=1,j=0,a10; int flgh; int h; while cout请输入你要修改缺课记录的学生姓名name; flgh=0; forint i=0;i ifstrcmpname,st1i.getname=0 do a

15、j=i; cout1.修改日期2.修改节次3.修改课程名称4.修改缺课类型endl; cout请输入要选择的数值b; if cout请输入新日期ymd; st1i.settime; else if cout请输入新节次jieci; st1i.setjieci; else if cout请输入新课程名称kechen; st1i.setkechen; else if cout请输入新缺课类型queke; st1i.setqklx; flgh=1;j+; whileb4; if cout没有你要找的学生姓名请重试要退出请按0k; else cout还要继续吗退出请按0k; forint i=0;i

16、h=ai; xiansi; / 查询函数 void chaxun char n=y; int u10; while int j=0; cout输入你要查询的学生姓名:name; int i=0; for;i ifstrcmpname,st1i.getname=0 uj=i; j+; if cout没有你所要的学生名字!;/没有找到 coutn; forint a=0;a /只有一条信息 ifj i=ua; cout| 缺课日期 | 第几节课 | 课程名称 | 缺课类型|endl; cout| *st1i.gettime| *st1i.gettime+1| *st1i.gettime+2| st

17、1i.getjieci| st1i.getkechen| st1i.getqklx| endl; /两条信息以上排序 else i=ua; if*st1i.gettime+1*st1i+1.gettime+1 qti.print; else if*st1i.gettime+1=*st1i+1.gettime+1&*st1i.gettime+2*st1i+1.gettime+2 qti.print; else if*st1i.gettime+1=*st1i+1.gettime+1&*st1i.gettime+2=*st1i+1.gettime+2 ifstrcmpst1i.getjieci,st

18、1i+1.getjieci=-1 qti.print; cout是否继续查询继续请按y退出按nn; /统计某段时间内旷课学生姓名及旷课节数 void tongji1 int d1=0,js=0; xinxi min; if cout没有你要统计的学生信息请返回菜单录入学生缺课信息endl; else if cout姓名:st10.getnameendl; if*st10.getjieci+2!=0 js=+2; else js+; cout节数:jsendl; /显示函数 void xiansi cout| 缺课日期 | 第几节课 | 课程名称 | 学生姓名| 缺课类型|endl; cout|

19、*st1.gettime|*st1.gettime+1*st1.gettime+2 |st1.getjieci|st1.getkechen|st1.getname|st1.getqklx|endl; /删除信息主要代码如下void del/删除学生信息ifn=0cout记录为空!endl;return;cout请输入要删除的记录的序号: flag;ifr-n-1&flagcout不存在所要删除的记录!endl;return;else ifr-n=0;elseforint i=flag;in-1;i+r-ri.setri+1;r-n-;char yn;cout保存修改? yn;ifwt;else

20、 return;5 结果分析这次的课设,我写的程序也没有什么独到之处,我觉得唯一可以从我的程序可以看出的是数组用得比较多,反正是没啥特色。不仅如此,还写得功能不全,实在是惭愧。现在在这里也只能说说它的不足之处了。类层次不够清晰,纵观整个程序可以发现四个类之间的关系不甚恰当,我有这个感觉。但我不知如何改进。 函数参数设定不够完美,整个程序中对指针的运用比较少。对于指针的巧妙运用把握得不够。还有就是容易missing或者是这都是些应该改掉的毛病。 除此以外,我对于怎样用文件保存数据还没深入了解。但我将数据保存到文件后又因文件打不开而无法访问文件中的数据,对于动态链表,我不是很清晰,也就是说无法做到

21、熟稔运用。在调试过程中我发现在主函数中把字符数组名name赋值给字符指针p即p=name;然后用coutp;语句可以输出字符数组里全部的内容,但利用函数返回指针值却不能做到这一点。在我思考一番后终于明白了,这与内存中的地址值有关。具体为什么我是解释不清了,调用系统的显示,如果在getname函数前加一个*号输出的只是一个字符,不加反而能输出所功能时有字符。getname函数的返回值为指针类型。但前面说过利用函数返回指针类型的值并不能输出字符数组中所有的字符,为什么这里又可以呢?我不知道这一知识,这也算我的程序的不足之处吧!对于两个统计函数的功能不全,我感到无能为力,我为了这两函数苦思了两天硬是

22、没凑合来。到后来脑子里都乱了,运行时屏幕上尽是些乱七八糟的东西。结果不是很好,但过程够了就行。 5.1 综合测试原始界面图9 综合测试原始界面5.1.1 录入学生缺课记录图10 录入学生缺课记录5.1.2 修改学生缺课记录图11 修改学生缺课记录查询学生缺课情况图12 查询学生缺课情况5.1.4 统计某段时间旷课学生姓名及旷课节数图13 统计某段时间旷课学生姓名及旷课节数6 总结这次的程序设计相对于上学期还是有了进步的。学生考勤管理系统要求至少要有四个类,在起初,对于定义哪四个类我是不清楚的,通过仔细的研读问题描叙终于在脑海里确定了这四个类。既然是学生考勤管理系统,那由学生缺课信息中的日期我想

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

24、继承与派生这一章的知识,我以为自己勉强掌握了,这次实验后我发现我掌握得还不够。基类的保护成员公有继承到派生类,类外是否可以通过对象来访问呢?原先我认为是可以的,经过这次程序设计我知道我错了。 总之,我觉得做学问不应该马虎。对于所学一定要有深入的理解这也是我这次课程设计得到的启示。 参考文献1.谭浩强.C程序设计第三版M.北京:清华大学出版社,20142.梁旭.C语言课程设计第三版M.北京:电子工业出版社,20133.刁成嘉.面向对象程序设计M.北京:机械工业出版社,20044.张鸿.C+语言程序设计M.北京:中国电力出版社,2014学生姓名: 填表日期:2017 年 06 月17 日指导教师评语成绩评定指导教师签名: 填表日期: 年 月 日

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!