- 516.62 KB
- 2022-05-17 13:44:29 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
大连科技学院面向对象程序设计(A)课程设计题目学生考勤管理系统报告学生姓名xxx专业班级软件工程12-1指导教师李孝贵职称讲师所在单位信息科学系软件工程教研室教学部主任王立娟完成日期2014年7月6日
课程设计报告单学号Xxx姓名Xxx专业班级软件工程12-1考核项目评分备注平时工作态度及遵守纪律情况1(10分)掌握基本理论、关键知识、基本技能的程度和阅2读参考资料的水平(10分)独立工作能力、综合运用所学知识分析和解决问3题能力及实际工作能力提高的程度(20分)完成课程设计说明书及软件的情况与水平(小组分工情况、规范性、整洁清楚、叙述完整性、思4路清晰程度、工作量及实际运行情况和创新性)(60分)总评成绩综合评定:(优、良、中、及格、不及格)指导教师签字:年月日
《面向对象程序设计(A)课程设计》任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求:(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标:要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。第2个工作日-第4个工作日:设计程序结构、模块图。第5个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。穿插进行课程设计报告的撰写。第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。指导教师签字:年月日
目录大连科技学院...................................................................................错误!未定义书签。题目:.........................................................................................................错误!未定义书签。1.需求分析..........................................................................................错误!未定义书签。2.概要设计...........................................................................................错误!未定义书签。3.详细设计...........................................................................................错误!未定义书签。4.编码...................................................................................................错误!未定义书签。5.调试分析...........................................................................................错误!未定义书签。6.测试结果及运行效果.......................................................................错误!未定义书签。7.系统开发所用到的技术...................................................................错误!未定义书签。参考文献.....................................................................................................错误!未定义书签。附录全部代码...........................................................................................错误!未定义书签。
题目:c++课程设计学生考勤管理系统报告1.需求分析1.录入学生的缺课记录;2.修改某个学生的缺课记录;3.查询某个学生的缺课情况;4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;5.统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;6.系统以菜单方式工作。课题意义程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力学生考勤管理程序可以大大减缓学生考勤人员的工作量,方便了平时上课学生的出勤率的管理。2.概要设计根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。数据管理中可以对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改。查询管理通过根据学生姓名,课程姓名时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。功能模块图如图1所示:学生考勤管理程序建修查查查载储立改询看看入存学学学单学学学生生生科生生生缺缺缺旷旷旷旷课课课课课课课记记记记记记记录录录录录录录图2-1功能模块图这个程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch
语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判断,Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。3.详细设计数据结构设计structxueke{charxueke_name[50];intpeople_num;};这是定义了一个xueke结构体,用来存放一个学科名及其相应的旷课人数;structstudent{charname[50];longtime;intlesson_time;charlesson_name[50];intchidao_num;intzaotui_num;intqingjia_num;intkuangke_num;structstudent*next;};这是定义了一个student的结构体,用来存放一个学生的考勤记录,其中有,字符数组name[50],lesson_name[50],分别存放学生名字,缺课课程名字;int型变量lesson_time,chidao_num,zaotui_num,qingjia_num,kuangke_num,分别来存放,缺课节次,迟到次数,早退次数,请假次数,旷课次数long型变量time,记录时间。主模块设计建立学生缺课记录子模块要建立的学生人数,学生基本信息(包括缺课时间、学生姓名、课程名称、节次、迟到次数、早退次数、请假次数、旷课次数)可用creat()函数如图1.
开始inti,b;structstudent*head,*p1,*p2;printf("请输入要建立资料的学生人数:");scanf("%d",&b);head=p2=NULL;p1=(structstudent*)malloc(LEN);输入第一个学生成绩head=p1;p2=p1;i=0;student_num++;inext=p1;p2=p1;student_num++;i++p2->next=NULL结束图3-1建立学生缺课记录子模块修改学生缺课记录子模块,根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项目进行单项修改,如图2:
开始charxiugai_name[50];charxiugai_xueke_name[50];intk;printf("请输入要修改的学生姓名与学科名称:");scanf("%s%s",xiugai_name,xiugai_xueke_name);structstudent*p1,*p2;p2=(structstudent*)malloc(LEN);p1=head;strcmp(xiugai_name,p1->name)!=0&&(p1-p1=p1->next;>next!=NULL)&&strcmp(xiugai_xueke_name,p1->lesson_name)!strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0显示修改菜单选择修改项目并完成修改结束图3-2修改学生缺课记录子模块修改学生缺课记录子模块,根据人名可以查出该学生的所有缺课记录,如图3:
开始inti=0;charchaxun_name[50];structstudent*p;p=head;printf("请输入要查询的人名:");scanf("%s",chaxun_name);iname)==0输出p所指向的结构体数据结束图3-3修改学生缺课记录子模块查看单科旷课记录子模块,根据学科名称和时间范围查出所有在该范围内旷课的学生以及次数:如图4
开始structstudent*p1,*p2,*p3;charlesson[50];longlook_time1,look_time2;intxunhuan_num=0;p3=(structstudent*)malloc(LEN);p1=head;p2=p1->nextYxunhuan_numkuangke_num>p1-N>kuangke_numYp1=head;p1=p2;交换p1与p2指向数p2=p1->next;p2=p2->next;据xunhuan_num++;printf("请输入要查看的学科名称:");scanf("%s",lesson);printf("请输入要查看的时间范围");scanf("%ld%ld",&look_time1,&look_time2);p1=head;p1!=NULLstrcmp(lesson,p1->lesson_name)==0&&look_time1<=p1->time&&p1-p1=p1->next;>time<=look_time2输出学生姓名和旷课次数结束图3-4查看单科旷课记录子模块查看学生旷课记录子模块,根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数,如图5
开始intn,i,j,zhongjian;structstudent*p1;charzhongjian_name[50];longlook_time1,look_time2;printf("请输入第%d个学科名称:",i+1);scanf("%s",a[i].xueke_name);a[i].people_num=0;printf("请输入要查看的时间范围由小到大");scanf("%ld%ld",&look_time1,&look_time2);p1=head;i=0;Yitime&&p1->time<=look_time2p1=head;i++;N(strcmp(a[i].xueke_name,Np1->lesson_name)==0i=0p1=p1->next;Ya[i].people_num+=p1->kuangke_num;Yjnext;结束图3-7储存学生旷课记录子模快4.编码voidmain(){structstudent*head;inta,b,c;zhuye:cout<<"$$$$$$$$$$$$$$$$$$$$$$欢迎使用学生考勤管理系统$$$$$$$$$$$$$$$$$$n";
cout<<"1_进入管理nnn";cout<<"2_查看系统相关信息nnn";cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$nnnnn";cin>>a;if(a==1){do{cout<<"********************************************************************************n";cout<<"1_建立学生缺课记录n";cout<<"2_修改学生缺课记录n";cout<<"3_查询学生缺课记录n";cout<<"4_查看单科旷课记录n";cout<<"5_查看学生旷课记录n";cout<<"6_载入学生旷课记录n";cout<<"7_储存学生旷课记录n";cout<<"8_退出考勤管理程序n";cout<<"********************************************************************************n";cin>>b;switch(b){case1:head=creat();print(head);break;case2:head=xiugai(head);print(head);break;case3:chaxun(head);break;
case4:head=tongji_lesson(head);break;case5:head=tongji_student(head);break;case6:head=zairu();print(head);break;case7:chucun(head);break;}}while(b!=8);}else{cout<<"******************************欢迎使用本系统**************************************n";cout<<"******************************返回主页请按1*************************************n";cin>>c;5.调试分析在调试过程中出现了许多错误,并经过一系列分析之后,终于把错误改正。程序错误主要出现在逻辑上。编译无语法错误,而在运行时出现异常,使程序不能运行下去,这是常见且难以解决的错误,需要不断地实践且总结经验。在该整个程序中,主要出现的错误主要出现在指针方面。尤其是对链表中的结点的一系列删除操作中,若链表为定义头结点,则需分删除链表第一个结点而不是第一个结点这两种情况进行编程。另外,对于数据成员的输入,需要按一定的要求来输入,虽然有一些输入提示信息,但由于输入操作符的限制,还是因输入错误导致而导致程运行出现不合理的结果。6.测试结果及运行效果运行开始菜单
图6-1开始菜单主菜单图6-2主菜单建立学生缺课记录
图6-3建立学生缺课记录储存学生旷课记录图6-4储存学生旷课记录7.系统开发所用到的技术VisualC++应用语言C++注释:C++是在C语言引入了面向机制而形成的一种程序设计语言,程序结构灵活,
代码简洁清晰,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。所以它是一种应用广泛的系统语言。
参考文献[1]张红梅,于明,程序设计实验教程,中国铁道出版社,2004[2]徐武,周启涛,葛卉娟,VisualC++与Oracle数据库编程案例,电子工业出版社,2004[3]网冠科技,VisualC++时尚编程百例,机械工业出版社,2003[4]求是科技,VisualC++程序设计与开发技术大全,人民邮电出版社,2004[5]广正工作室《C++Builder实用教程》[M].机械工业出版社1998年[6]MattTells《高级编程指南——C++Builder》[M].中国水利水电出版社1998年
附录全部代码#includeueke_name;a[i].people_num=0;}cout<<"请输入要查看的时间范围由小到大【输入格式:时间(空格)时间】";cin>>look_time1>>look_time2;p1=head;for(i=0;itime&&p1->time<=look_time2){if(a[i].xueke_name==p1->lesson_name)a[i].people_num+=p1->kuangke_num;p1=p1->next;}p1=head;}for(j=0;j0){zhongjian=a[i+1].people_num;a[i+1].people_num=a[i].people_num;a[i].people_num=zhongjian;strcpy(zhongjian_name,a[i+1].xueke_name);strcpy(a[i+1].xueke_name,a[i].xueke_name);strcpy(a[i].xueke_name,zhongjian_name);}}
for(i=0;ichidao_num=student_ziliao[i].chidao_num;p1->kuangke_num=student_ziliao[i].kuangke_num;strcpy(p1->lesson_name,student_ziliao[i].lesson_name);p1->lesson_time=student_ziliao[i].lesson_time;strcpy(p1->name,student_ziliao[i].name);p1->qingjia_num=student_ziliao[i].qingjia_num;p1->time=student_ziliao[i].time;p1->zaotui_num=student_ziliao[i].zaotui_num;p2->next=p1;
p2=p1;p1=(structstudent*)malloc(LEN);}p2->next=NULL;return(head);}voidchucun(structstudent*head){structstudent*p1;p1=head;fp1=fopen("","wb+");while(p1!=NULL){fwrite(p1,LEN,1,fp1);p1=p1->next;}fclose(fp1);cout<<"储存成功n";}voidmain(){structstudent*head;inta,b,c;zhuye:cout<<"$$$$$$$$$$$$$$$$$$$$$$欢迎使用学生考勤管理系统$$$$$$$$$$$$$$$$$$n";cout<<"1_进入管理nnn";cout<<"2_查看系统相关信息nnn";cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$nnnnn";cin>>a;if(a==1){do{cout<<"********************************************************************************n";cout<<"1_建立学生缺课记录n";cout<<"2_修改学生缺课记录n";cout<<"3_查询学生缺课记录n";
cout<<"4_查看单科旷课记录n";cout<<"5_查看学生旷课记录n";cout<<"6_载入学生旷课记录n";cout<<"7_储存学生旷课记录n";cout<<"8_退出考勤管理程序n";cout<<"********************************************************************************n";cin>>b;switch(b){case1:head=creat();print(head);break;case2:head=xiugai(head);print(head);break;case3:chaxun(head);break;case4:head=tongji_lesson(head);break;case5:head=tongji_student(head);break;case6:head=zairu();print(head);break;case7:chucun(head);break;}}while(b!=8);}
else{cout<<"******************************欢迎使用本系统**************************************n";cout<<"******************************返回主页请按1*************************************n";cin>>c;if(c==1)gotozhuye;