- 121.17 KB
- 2022-05-17 13:48:04 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
信息科学与技术学院程序设计基础课程设计报告题目名称:学生考勤管理系统学生姓名:郭晨晨学号:二专业班级:13级计科(3)班指导教师:郭理2013年6月6日目录目录错误!未指定书签。1.课程设计题目与要求错误!未指定书签。1.1课题目的和要求错误!未指定书签。1.3课题意义错误!未指定书签。2总体设计错误!未指定书签。2.1功能模块设计错误!未指定书签。2.2系统设计方案错误!未指定书签。3详细设计错误!未指定书签。1.1数据结构设计错误!未指定书签。1.2丰模块设计错误!未指定书签。1.2.1建立学生缺课记录子模块错误!未指定书签。
1.1.1修改学生缺课记录子模块错误!未指定书签。1.1.2修改学生缺课记录子模块错误!未指定书签。1.1.3查看单科旷课记录子模块错误!未指定书签。1.1.4查看学生旷课记录子模块错误!未指定书签。1.1.5载入学生旷课记录子模块错误!未指定书签。1.1.6储存学生旷课记录子模快错误!未指定书签。4.运行结果错误!未指定书签。4.1运行错误!未指定书签。5.课程设计总结错误!未指定书签。结束语错误!未指定书签。参考文献错误!未指定书签。附录:源代码错误!未指定书签。1.课程设计题目与要求1.1课题目的和要求设计目的:要求实现一“学生考勤管理程序”记录学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。1.2设计要求:1.录入学生的缺课记录;2.修改某个学生的缺课记录;3,查询某个学生的缺课情况;4.统计某段时间内,某门课旷课学生姓名及旷课次数,按旷课次数由多到少排序;5.统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;6.系统以菜单方式工作。1.3课题意义程序实践是本科生重要教学环节之一。通过程序实践,强化学生的计算机应用技能,使学生验证、巩固和充实所学的理论知识,加深对相关内容的理解,拓宽知识面,培养学生的创新精神和实践能力
学生考勤管理程序可以大大减缓学生考勤人员的工作量,方便了平时上课学生的出勤率的管理。2总体设计2.1功能模块设计根据分析整个系统主要划分为7个功能模块,分别执行要求中的功能。数据管理中可以对学生的基本信息、课程的基本信息、学生缺课的查询、添加、删除和修改。查询管理通过根据学生姓名,课程姓名时间段儿等信息,查询单个学生的缺课记录,单科课的旷课记录,单个学生的旷课记录。功能模块图如图1所示:图1功能模块图2.2系统设计方案这个程序是过程性语言设计的。运用多种条件语句,主体采用的是链表指针。系统的设计采用了数组语句、选择语句和循环语句,在需要处理大量同类数据时,这样就使程序书写更加简洁。程序使用了布尔函数。选择语句多采用if多分支选择结构与switch语句。首先计算switch表达式,然后在caes子句中寻找值相等的常量表达式,并以此为入口符号,由此开始顺序执行。循环语句采用了for语句等、do-while语句,for语句用于已知循环次数的循环结构,括号中的三个量分别用来表示循环变量初值、循环终值和循环增量。do-while语句先循环后判断,Break语句在switch语句中,保证多分支情况的正确执行,在循环语句中,强制终止本层循环。保存和读取函数是典型的函数功能,一个程序是由若干个函数组成的,保存和读取函数是和其他函数互相调用的。3详细设计3.1数据结构设计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,记录时间。3.2主模块设计要建立的学生人数,学生基本信息(包括缺课时间、学生姓名、课程名
称、节次、迟到次数、早退次数、请假次数、旷课次数)可用creat()函数如图1.图1根据要修改的学生姓名以及科目名称找到相应的信息,再选择要修改的项
目进行单项修改如图2根据人名可以查出该学生的所有缺课记录如图3图3
如图4根据学科名称和时间范围查出所有在该范围内旷课的学生以及次数根据要查询的学科名称及时间段查出在改时间段内该门课上旷课的人数如图5可以载入实现储存在当前文件夹中txt文件中所储存的数据如图6进入系统界面,顺序的完成各项操作,进行数据的输入,信息的保存调用相应的
函数打开相应的地址,查询各项信息。如图7图74.运行结果4.1运行开始菜单图1开始菜单主菜单图2主菜单建立学生缺课记录图2建立学生缺课记录储存学生旷课记录图3储存学生旷课记录5.课程设计总结课程设计顺利完成,题目所要求的功能基本实现,可以对学生的缺课信息进行添加,修改,删除以及查询的显示。不过这个程序还不够完善,例如不能往当前文件夹中的txt文件中添加记录。结束语整个系统的设计过程对于我来说是个学习、探索的过程,通过借鉴别人,学习设计程序,在整个设计过程中,出现过很多的问题,很多繁琐的东西都需要反复的修改,主要是因为前期的学习不认真,对系统的需求分析的要求认识不清楚,使得在后边的工作中不得不经常反复请教别人去修改。使我体会到设置中每一步的重要性。所以在分析一个问题时,我们需要站在一个有远见的高度。通过此次设计,我对C++吾言编程有了深刻的认识,积累了使用软件工程的思想来开发软件的经验,更重要的是学会了在对待问题时应该考虑到哪些方面和怎么解决问题。虽然时间紧迫但我学会了不少,感到自身知识的贫乏,希望在日后积极学习并尝试努力中能做出完善的系统。参考文献
谭浩强.C++语言程序设计.清华大学出版社求是科技.VisualC++6.0信息系统开发.人民邮电出版社附录:源代码#include//cstdio是将stdio.h的内容用C++头文件的形式表示出来#include#include//malloc的全称是memoryallocation,中文叫动态内查分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。#include//当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供了这样一种方法,它返回一个客户程序可读不可改的指向字符数组的指针。#include//I/O流控制头文件#defineNULL0#defineguding10#defineLENsizeof(structstudent)usingnamespacestd;intstudent_num;FILE*fp1;structxueke{charxueke_name[50];intpeople_num;};structstudent{charname[50];longtime;intlesson_time;charlesson_name[50];intchidao_num;intzaotui_num;intqingjia_num;intkuangke_num;structstudent*next;);voidchaxun(structstudent*head){inti;charchaxun_name[50];
cout<<"请输入要查询的人名:";cin>>chaxun_name;structstudent*p;if(head==NULL)cout<<"联系人为空";p=head;for(i=0;iname)==0){cout<<”缺课时间:"<time<<"学生姓名:"<name<<”课程名称:"<lesson_name<<"节次:"<lesson_time<chidao_num<<"早退次数:"<zaotui_num<<”请假次数:"<qingjia_num<<”旷课次数:"<kuangke_num<next;})structstudent*xiugai(structstudent*head){charxiugai_name[50];charxiugai_xueke_name[50];intk;cout<<"请输入要修改的学生姓名与学科名称【格式:学生姓名(空格)学科名称】:;;cin>>xiugai_name>>xiugai_xueke_name;structstudent*p1,*p2;p2=(structstudent*)malloc(LEN);p1=head;if(head==NULL){cout<<"没有学生信息n";returnhead;}while((strcmp(xiugai_name,p1->name)!=0||strcmp(xiugai_xueke_name,p1->lesson_name)!=0)&&(p1->next!=NULL))p1=p1->next;if(strcmp(xiugai_name,p1->name)==0&&strcmp(xiugai_xueke_name,p1->lesson_name)==0){cout<<"====================================修改信息n";cout<<"1-修改缺课时间
2-修改学生姓名3-修改课程名称修改第几节缺课5-修改迟到次数6-修改早退次数7-修改请假次数8-修改旷课次数n";cout<<"n";cout<<"n";cout<<"4-n";cout<<"n";cout<<"n";cout<<"n";cout<<"nn";cout<<"================================================================================n";cin>>k;switch(k){case1:cout<<"请输入新的缺课时间:";cin>>p1->time;break;case2:cout<<”请输入新的学生姓名:";cin>>p1->name;break;case3:cout<<”请输入新的课程名称:";cin>>p1->lesson_name;break;case4:cout<<"请输入新的缺课节次:";cin>>p1->lesson_time;break;case5:cout<<"请输入新的迟到次数:";cin>>p1->chidao_num;break;case6:cout<<"请输入新的早退次数:";cin>>p1->zaotui_num;break;case7:cout<<"请输入新的请假次数:";cin>>p1->qingjia_num;
break;case2:cout<<"请输入新的旷课次数:";cin>>p1->kuangke_num;break;}}returnhead;}structstudent*creat(){inti,b;structstudent*head,*p1,*p2;cout<<"请输入要建立资料的学生人数:";cin>>b;head=p2=NULL;p1=(structstudent*)malloc(LEN);cout<<"【输入格式:缺课时间(空格)学生姓名(空格)课程名称(空格)第几节(空格)迟到次数(空格)早退次数(空格)请假次数(空格)旷课次数】n";cout<<"请输入第1名学生信息:";cin>>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num;head=p1;p2=p1;student_num+=1;for(i=1;i>p1->time>>p1->name>>p1->lesson_name>>p1->lesson_time>>p1->chidao_num>>p1->zaotui_num>>p1->qingjia_num>>p1->kuangke_num;p2->next=p1;p2=p1;student_num+=1;}p2->next=NULL;returnhead;}voidprint(structstudent*head){structstudent*p;p=head;if(p==NULL)cout<<"没有学生信息n";while(p!=NULL){cout<<"缺课时间:"<time<<"学生姓名:"<name<<"课程名称:"<lesson_name<<"节次:"<lesson_time<chidao_num<<"早退次数:"<zaotui_num<<"请假次数:"<qingjia_num<<"旷课次数:"<kuangke_num<next;}}structstudent*tongji_lesson(structstudent*head){structstudent*p1,*p2,*p3;charlesson[50];longlook_time1,look_time2;intxunhuan_num=0;p3=(structstudent*)malloc(LEN);if(head==NULL){cout<<"没有学生信息";return(head);}p1=head;p2=p1->next;while(xunhuan_numkuangke_num>p1->kuangke_num){p3->chidao_num=p2->chidao_num;p3->kuangke_num=p2->kuangke_num;p3->qingjia_num=p2->qingjia_num;p3->zaotui_num=p2->zaotui_num;p3->lesson_time=p2->lesson_time;p3->time=p2->time;strcpy(p3->lesson_name,p2->lesson_name);strcpy(p3->name,p2->name);p2->chidao_num=p1->chidao_num;p2->kuangke_num=p1->kuangke_num;p2->qingjia_num=p1->qingjia_num;p2->zaotui_num=p1->zaotui_num;p2->lesson_time=p1->lesson_time;p2->time=p1->time;strcpy(p2->lesson_name,p1->lesson_name);strcpy(p2->name,p1->name);p1->chidao_num=p3->chidao_num;p1->kuangke_num=p3->kuangke_num;p1->qingjia_num=p3->qingjia_num;p1->zaotui_num=p3->zaotui_num;p1->lesson_time=p3->lesson_time;p1->time=p3->time;strcpy(p1->lesson_name,p3->lesson_name);strcpy(p1->name,p3->name);}p1=p2;p2=p2->next;
}p1=head;p2=p1->next;xunhuan_num++;}cout<<"请输入要查看的学科名称:";cin>>lesson;cout<<"请输入要查看的时间范围【输入格式:时间(空格)时间】";cin>>look_time1>>look_time2;p1=head;while(p1!=NULL){if(strcmp(lesson,p1->lesson_name)==0&&look_time1<=p1->time&&p1->time<=look_time2)cout<<"学生姓名:"<name<<"旷课次数:"<kuangke_num<next;}returnhead;}structstudent*tongji_student(structstudent*head){structxuekea[10];intn,i,j,zhongjian;structstudent*p1;charzhongjian_name[50];longlook_time1,look_time2;if(head==NULL){cout<<"没有学生信息n";returnhead;}cout<<"请输入一共的学科数:";cin>>n;for(i=0;i>a[i].xueke_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("xueshengziliao.txt","wb+");while(p1!=NULL){fwrite(p1,LEN,1,fp1);p1=p1->next;}fclose(fp1);cout<<"储存成功n";}voidmain(){structstudent*head;inta,b,c;zhuye:cout<<"$$$$$$$$$$$$$$$$$$$$$$欢迎使用学生考勤管理系统V1.0.0$$$$$$$$$$$$$$$$$$n";cout<<"cout<<"进入管理nnn";查看系统相关信息nnn";
cout<<$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$nnnnn";cin>>a;if(a==1)(docout<<"*************n";cout<<"cout<<"cout<<"cout<<"cout<<"cout<<"cout<<"cout<<"1_建立学生缺课记录n"2_修改学生缺课记录n"3_查询学生缺课记录n"4_查看单科旷课记录n"5_查看学生旷课记录n"6_载入学生旷课记录n"7_储存学生旷课记录n"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;}