大连科技学院面向程序设计(A)课程设计题目上海卓越学生考勤系统学生姓名王文广专业班级软件工程08-2指导教师陈伟俊职称高级工程师所在单位信息科学系软件工程教研室教学部主任王立娟完成日期2011年9月9日课程设计报告单学号0801030202姓名王文广专业班级软件工程08-2考核项目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综合评定:(优、良、中、及格、不及格)指导教师签字:2011年9月9日《面向对象程序设计(A)课程设计》任务书一、课程设计任务及要求:任务:针对学生考勤信息,使用面向对象程序设计思想,编写出的星空超能学生考勤系统要求:(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标:要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。第2个工作日-第4个工作日:设计程序结构、模块图。第5个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。指导教师签字:2011年8月29日目录题目:上海卓越学生考勤系统.................................................................11系统需求分析....................................................................................................12详细设计..............................................................................................................33编码.......................................................................................................................74调试分析............................................................................................................105测试结果及运行效果....................................................................................116系统开发所用到的技术................................................................................13参考资料...................................................................................................................14课程设计总结.........................................................................................................15附录...................................................................................................................161题目:上海卓越学生考勤系统1系统需求分析考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin-end的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能:1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期第几节课课程名称学生姓名缺课类型每行一条纪录。例如:2009-04-292-4中国近现代文学史李云龙迟到2009-04-282-4大学生社交礼仪马志鹏旷课2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序;5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序;6).系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能。学生可以通过以上功能录入信息、修改信息、查询信息、整理统计出所要了解的信息,除了要实现上述的基本功能之外,本系统还应该在细节上下工夫,使用户使用方便,在使用的过程中保持一个愉快的心情。学生考勤管理系统有广大的用户群,这其中有老师、有教务处主任、有公司管理人员,也可以供给一般用户使用。总之该系统可以满足用户需求,实现对其管理的人员的考勤工作。概要设计学生考勤管理系统包含五个大的功能,分别是:录入学生缺课信息、修改学生缺课信息、查询某个学生的缺课情况、统计某段时间内(以天为单位),旷课学生姓名及旷课节数和统计某段时间内,有学生旷课的课程及旷课人次。学生的缺课信息主要包含缺课日期,第几节课、课程名称,学生姓名,缺课类型。在录入学生缺课信息时根据系统提示逐一输入。每输入完一条信息,系统会2提示是否继续输入,用户可以选择继续或返回主菜单。在修改学生缺课信息时,用户首先输入要修改的学生姓名,系统会检索如果系统中有该学生的相关信息则系统首先会提示用户修改该学生的那一部分信息,用户可自行选择。如果系统中没有该学生的相关信息,则系统会给相关提示,用户可以继续输入要修改的学生姓名或选择退出返回主菜单。在查询学生缺课信息时,用户先输入要查询的学生姓名,系统检索判断是否存在该学生的信息然后做出相应的提示。总之,用户可以方便的在系统提示下进行使用。选择图1-1学生考勤管理系统中功能模块图修改某学生的缺课信息查询某学生的缺课信息统计某段时间内旷课学生姓名及旷课节数统计某段时间内,有学生旷课的课程及旷课人次录入学生的缺课信息学生考勤管理系统录入缺课学生的姓名、缺课日期、缺课节次、缺课课程名称、缺课类型修改某学生的缺课日期、缺课节次、缺课课程名称、缺课类型查询某学生的缺课日期、缺课节次、缺课课程名称、缺课类型按时间升序显示旷课学生姓名及旷课节数按时间升序显示有学生旷课的课程及旷课人次32详细设计图2-1学生考勤管理系统中四个类的类层次图学生考勤管理系统中各功能模块的实现:图2-2学生考勤管理系统中菜单函数的功能图1学生缺课信息录用功能模块:菜单录入学生的缺课信息修改某学生的缺课信息查询某学生的缺课信息统计某段时间内旷课学生姓名及旷课节数统计某段时间内,有学生旷课的课程及旷课人次Time类Xinx类qstu类qkechen类4图4学生缺课信息录入的功能1、修改某学生缺课信息功能的模块图图5学生考勤管理系统修改学生缺课信息功能图3查询某学生缺课信息功能图:图2-5学生考勤管理系统查询学生缺课信息功能图输入要查询的学生姓名修改某学生的缺课课程修改某学生的缺课类型图2-4图2-3学生缺课信息录入功能学生缺课信息录用功能录入学生缺课节次录入学生缺课日期录入学生缺课课程名称录入缺课学生姓名录入学生缺课类型修改某学生缺课信息功能修改某学生的缺课节次查询某学生缺课信息功能显示要查询的学生缺课信息继续查询或返回菜单54、统计某段时间内旷课学生姓名及旷课节数功能模块:图2-6统计某段时间内旷课学生姓名及旷课节数功能图5、统计某段时间内,有学生旷课的课程及旷课人次功能模块图2-7统计某段时间内,有学生旷课的课程及旷课人次功能图学生考勤管理系统中四个类的UML图为:统计某段时间内旷课学生姓名及旷课节数显示某段时间内旷课学生姓名及旷课节数返回菜单统计某段时间内旷课学生姓名及旷课节数功能统计某段时间内,有学生旷课的课程及旷课人次功能统计某段时间内,有学生旷课的课程及旷课人次返回菜单显示某段时间内,有学生旷课的课程及旷课人次6图2-8学生考勤管理系统中四个类的UML图Tine-year:int-month:int-day:int+time()+~time()Xinxi-name[20]:char-kechen[10]:char-jieci[3]:char-queke[10]:char-tm[3]:char-tiaoshu:int=0+xinxi()+~xinxi()+setname(n:char*):void+settime(y:int,m:int,d:int):void+setqklx(qk:char*):void+setjieci(jc:char*):void+setkechen(kc:char*):void+getname():char*+getqklx():char*+getjieci():char*+getkechen():char*+gettime():int*qkechen-renci:int-kcshu:int=0+qkechen()+~qkechen()+getrc(st1[]:xinxi,n:int,j:int):int+qkn[20]:charqstu-jieshu:int-qst:int+qstu()+~qstu()+print(st1:xinxi&):void+getjs(st1[]:xinxi,n:int,j:int):int+setjs(js:int=0):int+qstn[20]:char基类派生类派生类派生类73编码//时间类classtime{public:time(inty=0,intm=0,intd=0){year=y;month=m;day=d;}~time(){}protected:intyear,month,day;};//信息类classxinxi:publictime{public:xinxi(){tiaoshu++;}~xinxi(){tiaoshu--;}voidsetname(char*n){strcpy(name,n);}voidsettime(inty,intm,intd){year=y;month=m;day=d;}voidsetqklx(char*qk){strcpy(queke,qk);}voidsetjieci(char*jc){strcpy(jieci,jc);}voidsetkechen(char*kc){strcpy(kechen,kc);}char*getname(){char*n;n=name;returnn;}char*getqklx(){char*qk=queke;returnqk;}char*getjieci(){char*jc;jc=jieci;returnjc;}char*ge