考勤系统设计_第1页
考勤系统设计_第2页
考勤系统设计_第3页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、编 号:B04731017学 号:2HUBEI教学院 课程名称 专 业 班 级 姓 名实训报告计算机大型软件项目实训网络工程二班何娟2016年 9月 20日.实训内容1实训目的与要求1.1、目的:(1)要求学生达到熟练掌握 C+语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。1.2、基本要求:(1 )要求利用面向对象的方法以及 C+的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(4)在系统的设计中,至少要用到面向对象的

2、一种机制。1.3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。2项目背景2.1对现有系统的分析目前高校学生上课考勤管理都是以任课老师上课点名,记录学生上课情况。对于请假需要通过向辅导员递交请假条并获得同意方能生效。这种模式在目前高校管理中暴露了不可避免的弊端:a)学生对自己整个学期的上课出勤情况没有整体的统计信息b)班主任及辅导员对本班学生整个学期的上课出勤情况不易查看;c)学生请假不方便,如:学生生病或有其他急事需请假,必须找辅导员 批假条,而辅导员事情比较多不可能经常坐在办公室里等着;d)在这种方式下,由于学生考勤信息需要多次登记、反复输入,因而出 错率较高,

3、效率也低下。e)各学院与学生考勤管理中心各自记录所有学生的考勤情况,对于各考 勤表,考勤管理员要反复的执行登记、核对、统计,稍不注意就出错,对于错 误的改正,更是麻烦。浪费人力并且效率低。f)数据不能共享,无法互相利用,互相参照,导致大量数据冗余。g)难避免考勤中的弄虚作假现象。在这种情况下,学生考勤管理中心只能一次又一次地扩大员工队伍,期望借此提高效率。但是事实上,工作效率不但没有改善,工资支出却年年增高, 增加了学校的经济支出。在此情况下,开发一个新的、高效的、更加灵活方便、能实时记录学生考勤信息的学生考勤管理系统迫在眉睫。2.2处理流程和数据流程人工的考勤系统主要包括请假系统,考勤系统,

4、管理中心,主要供学生, 辅导员,任课老师,班主任所使用。如下为系统流程图:人工学生考勤系统在请假系统中,学生想要请假需要向辅导员老师写请假条并说明原因, 获得辅导员的同意才能请假成功,否则失败。而学生的请假情况记录在请假 条的存根上,在向任课老师请假时也需自己或请同学向老师出示请假条并说 明原因,由任课老师在学生名单上记录为“请假”。辅导员、任课老师、学 生只有通过查询请假条的存根或考勤表才可知道请假情况。2.3局限性该系统会浪费很多的时间而且会很麻烦,当学生需要请假时必须找到辅导员写 请假条才行,另外课堂上由于是由任课老师通过点名的方式考勤所以会造成混乱不 清更问题。因此,开发一个新的高校学

5、生考勤管理系统迫在眉睫,同时,我们的系 统也应运而生。3. 功能需求这是一个记录学生上课情况的一个考勤系统,方便记录、查询、统计学生 考勤信息。学生考勤管理系统用于记录学生的缺课情况,它包括:缺课日期、 第几节课、课程名称、学生姓名、学号、缺课类型(迟到、早退、请假及旷课) 优化界面使学生使用更加便捷,在保证信息共享的同时又注重了信息的安全性 而不被篡改。该系统除了用于学生课堂的考勤,还可用于学生出早操情况的考 核,开会出勤情况的考核等。而且可以进一步开发,与教务处学生成绩数据库 相连接,将考勤结果作为平时成绩或期末成绩及评优的参考。另外该系统还可 作为请假系统代替传统写请假条请假的问题。在安

6、全方面,登陆系统时,需验 证身份和密码,只有通过验证的身份才能进入系统进行相关的操作。系统间信 息的传递也需要进行安全设置,以防止学生的考勤信息被恶意篡改。主要分为 6大模块,分为录入学生的缺课记录、修改某个学生的缺课记录、查询某个学 生的缺课情况、统计旷课学生姓名及旷课节数、统计旷课课程及旷课人次和系 统以菜单方式工作。具体需求如下:考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用 beg in-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、 缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以 下功能:1)录入学生的缺课记录:从键盘输入数

7、据(提示:为避免重复从键盘输入数 据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为: 缺课日期 第几节课 课程名称学生姓名 缺课类型每行一条纪录。例如:2016-04-29 2-4 C+面向对象程序设计李强迟到2009-04-28 2-4 高数马志旷课2)修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显 示一下修改后的纪录。3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所 缺课程的时间升序排序。4)统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先 按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;5)统计某段时间内,

8、有学生旷课的课程及旷课人次,按旷课人次由多到少排 序,旷课人次相同的课程按课程名称升序排序;6).系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能)学生可以通过以上功能录入信息、修改信息、查询信息、整理统计出所 要了解的信息,除了要实现上述的基本功能之外,本系统还应该在细节上下 工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。学生考勤管 理系统有广大的用户群,这其中有老师、有教务处主任、有公司管理人员, 也可以供给一般用户使用。总之该系统可以满足用户需求,实现对其管理的 人员的考勤工作。4、总体设计学生考勤管理系统包含五个大的功能,分别是:录入学生缺课信息、修改学生缺课信

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

10、信息时,用户先输入要查询的学生姓名,系统检索判断是 否存在该学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使 用。学生考勤管理系统中功能模块图:5、详细设计我在我们小组中负责的是修改某学生缺课信息功能和统计学生旷课的课 程及旷课人次等这两大功能模块。1修改某学生缺课信息功能的模块图图1学生考勤管理系统修改学生缺课信息功能图2、统计某段时间内,有学生旷课的课程及旷课人次功能模块图2统计学生旷课的课程及旷课人次功能图此系统不仅可以直接统计某段时间内的旷课课程及旷课人次,除此之外, 还可以查看学生的旷课课程及旷课人次。下面是部分代码分析/时间类class timepublic :

11、time( int y = 0, int m= 0, int d = 0)year = y; month = m day = d;time()protected :int year, mon th, day;这是一个基类,用来记录时间信息,记录年份,月份以及时刻点,以供其它类来进行派生。/信息类class xinxi : public timepublic :xin xi() tiaoshu+; xin xi() tiaoshu-; voidvoidvoidvoidsetname( char * n) strcpy_s(name, settime( setqklx( setjieci(n);

12、int y, int m int d) year = char * qk) strcpy_s(queke, char * jc ) strcpy_s(jieci,voidcharcharcharcharsetkechen( char * kc) strcpy_s(kechen, *get name() *getqklx() *getjieci() *getkeche n()char *n; n = n ame;char *qk = queke;char *jc; jc = jieci;returnchar *gk; gk = keche n;y; mon th = m day = d; qk)

13、; jc); kc);n; return qk; return jc; return gk; int *gettime();private :char name20; / 姓名 char jieci3, kechen10, queke10; int tm3;static int tiaoshu;这是一个信息类,用来记录学生的姓名,以及上课课程名,还有缺课课程名和节次,以供后期查询/缺课课程类class qkechen : public xinxipublic :qkeche n() kcshu+; qkeche n() kcshu-; int getrc( xinxi st1, int n,

14、int j); char qkn20; /公有数据成员private :int renci;static int kcshu; /静态数据成员;int qkeche n:kcshu = 0;int qkechen:getrc( xinxi st1 , int n, int j) |renci = 0;ren ci+;for ( int i = 0; i< n; i+)st1 iif (*( st1 i + 1.gettime() + 1) = *(st1 j .gettime() + 1) && *(+ 1.gettime() + 2)=*( st1 j .gettime

15、() + 2)if (strcmp(qkn,st1 i.getkechen() = 0)ren ci+;return renci;/缺课学生类class qstu : public xinxipublic :qstu() qst+; qstu() qst-; void print( xinxi &st1);int getjs( xinxi st1, int n, int j);;/菜单函数void caidan()system( "color A");cout <<<< en dl;<< en dl;H*“cout <<

16、; "*学生考勤管理系统*" << endl;cout <<H*"cout << "1. 录入学生的缺课记录<< en dl; cout <<"2. 修改学生的缺课记录*"<< en dl; cout << "3. 查询学生的缺课情况*"<< en dl;cout << "4. 统计某段时间内旷课学生姓名及旷课节数*"<< en dl;cout << "5

17、. 统计某段时间内旷课的课程及旷课人次*"<< en dl;cout << "6. 退出系统*"<< en dl; /输入函数int shuru( xinxi st1 )char a;cout << " 输入开始! -"<< endl;doq+;cout << "请输入学生姓名"<< endl;cin >> n ame;st1 q.set name( name);cout << "请输入课程名称"&

18、lt;< endl;cin >> keche n;st1 q.setkeche n( keche n);cout << "请输入缺课日期"<< endl;cin >> y >> m >> d;st1 q.settime(y, m, d);cout << "请输入缺课类型"<< endl;cin >> queke;st1 q.setqklx(queke);cout << "请输入缺课节次"<< end

19、l;cin >> jieci;st1 q.setjieci(jieci);cout << "是否还要继续输入:(y/n)"<< endl;cin >> a; while (a ='y');return q + 1; I |/修改函数void xiugai( xinxi st1 , int n) Iint k = 1, j = 0, a10;int flgh;int h;while (k = 1)cout << "请输入你要修改缺课记录的学生姓名"<< endl;cin

20、 >> n ame;flgh = 0;for ( int i = 0; i< n; i+)if (strcmp(name,st1 i.getname() = 0)doaj = i;cout << "1.修改日期2.修改节次3.修改课程名称4.修改缺课类型"<<en dl;cout << "请输入要选择的数值(1,2,3,4)"<< endl;int b;cin >> b;if (b = 1)cout << "请输入新日期"<< end

21、l; cin >> y >> m >> d;st1 i.settime(y, m, d);else if (b = 2)cout << "请输入新节次"<< endl;cin >> jieci;st1 i.setjieci(jieci);else if (b = 3)cout << "请输入新课程名称"<< endl;cin >> keche n;st1 i.setkeche n( keche n);else if (b = 4)cout <

22、< "请输入新缺课类型"<< endl;cin >> queke;st1 i.setqklx(queke);flgh = 1; j+; while (b<1 | b>4);if (flgh = 0)0" << endl;cout << "没有你要找的学生姓名,请重试要退出请按 cin >> k; Celsecout << "还要继续吗(10)退出请按0" << endl;cin >> k;二.项目调试与测试:1.系统调试程

23、序编写完成后,我进行了程序调试。调试过程中,出现了以下问题:当 录入学生缺课信息时,出现了无法退出录入函数的情况,主要原因是输入函数 中while循环语句没有设置跳出循环的条件。除此之外,修改某学生缺课信息 时,如果没有该学生的缺课信息,系统没有提示要用户没有该学生信息,也没 有建议用户重新输入要修改的学生姓名。由此我发现了该系统修改学生缺课信 息的不足。于是,我对修改函数进行了修改与完善。在该函数中,我设置了if语句用来判断系统中是否存有用户要修改的学生缺课信息。如果没有,则提示 用户没有该学生的缺课信息,用户可以选择继续输入要修改的学生姓名或者退 出修改环节,可以在 循环语句中改变循环进行

24、的条件从而终止循环。至于在 修改后显示该学生的缺课信息,运行时发现系统并没有做到这一点,对源代码 检查之后发现是修改函数中显示函数的调用出了点问题,显示函数的实参有 误,应该把要修改缺课信息的学生所在的信息类对象作为实参,然后用显示函 数的形参引用实参对象,通过对象调用信息类的成员函数,从而实现显示功能。 至于该系统的查询功能的实现,在调试时发现还有欠缺,当随便输入一个学生 姓名时,系统没有显示该学生的缺课信息,也没有提示系统没有找到该学生的 有关信息,经过在查询函数 while循环中加入一个if 条件语句后,系统实 现了提示用户的功能,如果系统中没有你要查询的学生缺课信息,系统将会提 示用户

25、,用户可以继续输入要查询的学生姓名也可以通过按系统设置的退出键 选择退出查询环节。至于两个统计功能至今没有完善,主要是特定时间学生缺 课次数和课程的缺课人次的统计问题尚待解决,现如今只完成了一两条学生缺 课信息的统计。主要问题是特定时间这个前提条件对我造成了一定的障碍。对 系统中存储的信息进行查找和统计运用对象指针比较方便,但我没有使用,也 算有点遗憾。在调试过程中我出现的最严重的问题是函数形参引用对象数组, 结果系统提示将近几十个错误,在我把函数形参改为对象数组后,错误一下减 少了很多。还有比较突出的问题是整个程序不知哪掉了个号系统会提示有错,但就不懂那专业术语啥意思。还有就是我以为派生类公

26、有继承的基类的保 护成员在派生类内为公有成员,可编译时才发现是不对的。通过认真调试,我 发现我有了收获。2.运行结果分析1刚进入系统时界面raw 匚入亦 n dev; ss yste m 32<md.ex*欢迎进入学生考勤管理?学生考勤管理系统一数二 一 一节次- -一课人一 一一一旷课一 一 一及旷一 一 一名及- S-養lr一 记 一fl 幺* 入改询禺扌 gSF统统单菜¥4J这是开启系统时的进入界面,用户可以根据要求选择不同的菜单项,输入 对应的数字即可,然后再根据提示进行信息录入。2这是录入学生的缺课记录界面请输八学生妊名heJuan请输入课程名称请输入缺课日期2016 07 24请输入缺课类型请输人缺课节次是否还要继续输A = <y/n>*欢迎进人学生考勤管理系统!皿这个是用来录入学生的缺课记录,用来实现录入缺课信息功能,输入学生的姓名、缺课课程名、缺课日期、缺课类型以及缺课节次等信息用来录入。3 这是录入学生的缺课记录界面;请选择菜单项青输入你要修改缺课记录的学生姓名1-W日期2 修改节次3 .修改课程名称4 修改触课类型 fefA要选择甬数值&l

温馨提示

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

评论

0/150

提交评论