2022年考勤系统_第1页
2022年考勤系统_第2页
2022年考勤系统_第3页
2022年考勤系统_第4页
2022年考勤系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、目录 TOC o 1-2 h z u HYPERLINK l _Toc358212274 一、系统开发的背景 PAGEREF _Toc358212274 h 1 HYPERLINK l _Toc358212275 二、系统分析与设计 PAGEREF _Toc358212275 h 1 HYPERLINK l _Toc358212276 (一)系统功能要求 PAGEREF _Toc358212276 h 1 HYPERLINK l _Toc358212277 (二)系统模块结构设计 PAGEREF _Toc358212277 h 1 HYPERLINK l _Toc358212278 三、系统的

2、设计与实现 PAGEREF _Toc358212278 h 2 HYPERLINK l _Toc358212279 (一)学生基本信息浏览:basic_b() PAGEREF _Toc358212279 h 2 HYPERLINK l _Toc358212280 (二) PAGEREF _Toc358212280 h 2 HYPERLINK l _Toc358212281 四、系统测试 PAGEREF _Toc358212281 h 2 HYPERLINK l _Toc358212282 (一)测试main_form()函数 PAGEREF _Toc358212282 h 2 HYPERLIN

3、K l _Toc358212283 (二). PAGEREF _Toc358212283 h 3 HYPERLINK l _Toc358212284 五、总结 PAGEREF _Toc358212284 h 3 HYPERLINK l _Toc358212285 六、附件(代码、部分图表) PAGEREF _Toc358212285 h 3学生综合测评系统一、系统开发的背景为了方便快捷的记录学生的考勤信息,因此用C语言设计了一个方便的考勤系统。二、系统分析与设计系统功能要求功能:设计一考勤系统。考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟

4、到、早退、请假及旷课)。系统具有以下要求:(1)录入学生的缺课记录;(2)修改某个学生的缺课记录;(3)查询某个学生的缺课情况;(4)统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;(5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;(6)系统以菜单方式工作。系统模块结构设计通过对系统功能的分析,学生考勤系统功能如下图所示。考 勤 系 统统计模块2统计模块1查询模块录入模块修改模块图1 学生考勤系统功能图通过上图的功能分析,把整个系统划分为5个模块:学生基本信息录入,该模块主要实现:学生基本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(

5、迟到、早退、请假及旷课)的输出,借助函数void enter()来实现;2、修改,该模块主要实现:对某个学生的基本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及旷课)的修改,借助函数void modify()来实现;3、查询,该模块主要实现:对某个学生的基本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及旷课)的查询,借助函数void search()来实现;4、统计1,该模块主要实现:统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;借助函数void Statistic_1()来实现;5、统计2,该模块主

6、要实现:统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;借助函数void Statisti_2()来实现;三、系统的设计与实现学生基本信息的录入void enter()该模块的具体代码如下所示。void enter()int i,j,n;printf(n*录入*n); printf(请输入日期:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day);printf(请输入学号初值:);scanf(%d,&n); printf(n注:在姓名栏输入 # 返回上一层n);for(i=n-1;i43;i+) STUDENTi.

7、num=i+1; printf(nn学号:%.2dn,STUDENTi.num); printf(请输入姓名:); scanf(%s,&STUDENT);if(STUDENT0=#)STUDENT0=0;printf(nnn);printf( 返回 n);printf( n);break;/*作用:if语句执行结束break到main函数*/ for(j=0;j+) printf(注:已到请输入0,迟到请输入1,早退请输入2,旷课请输入3,请假请输入4,无课请输入5!n);printf(节数:);scanf(%d,&STUDENTi.C1);printf(请

8、输入数学考勤情况:);scanf(%d,&STUDENTi.math);if(STUDENTi.math=0)break;elseprintf(n*输入有误,请重新输入*nn);for(j=0;j+)printf(节数:);scanf(%d,&STUDENTi.C2);printf(请输入英语考勤情况:);scanf(%d,&STUDENTi.english);if(STUDENTi.english=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C3);printf(请输入计算机考

9、勤情况:);scanf(%d,&STUDENTputer);if(STUDENTputer=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C4);printf(请输入马原考勤情况:);scanf(%d,&STUDENTi.my);if(STUDENTi.my=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C5); printf(请输入体育考勤情况:);scanf(%d,

10、&STUDENTi.pe);if(STUDENTi.pe=0)break;elseprintf(n*输入有误,请重新输入*nn); /* if (STUDENTi.math=3) STUDENT_1.summath+; if (STUDENTi.english=3) STUDENT_1.sumenglish+; if (STUDENTputer=3) STUDENT_1.sumcomputer+; if (STUDENTi.my=3) STUDENT_1.summy+; if (STUDENTi.pe=3) STUDENT_1.sumpe+; */ if(STUDENTi.math=3) ST

11、UDENTi.sum+; if(STUDENTi.english=3) STUDENTi.sum+; if(STUDENTputer=3) STUDENTi.sum+; if(STUDENTi.my=3) STUDENTi.sum+; if(STUDENTi.pe=3)STUDENTi.sum+;printf(旷课次数:%d,STUDENTi.sum); 分析:首先输出菜单,然后依次按照条件录入每位同学信息。输入日期DATE输入学号初值ni43YN输入学号STUDENTi.num输入姓名STUDENT输入节数、数学出勤STUDENTi.c1STUDENTi.math输入节数、英语出

12、勤STUDENTi.c2STUDENTi.english输入节数、计算机出勤STUDENTi.c3STUDENTputer开 始输入节数、马原出勤STUDENTi.c4STUDENTi.my输入节数、体育出勤STUDENTi.c5STUDENTi.pe结 束 修改某个学生的缺课记录void modify();分析:首先输出菜单,然后依次按照条件修改每位同学的基本信息。流程图如下图所示。输入修改日期DATE修改学号初值ni43YN修改学号STUDENTi.num修改姓名STUDENT修改节数、数学出勤STUDENTi.c1STUDENTi.math修改节数、英语出勤STUDENTi.

13、c2STUDENTi.english修改节数、计算机出勤STUDENTi.c3STUDENTputer开 始修改节数、马原出勤STUDENTi.c4STUDENTi.my修改节数、体育出勤STUDENTi.c5STUDENTi.pe结 束该模块的具体代码如下所示void modify()int i,j,n;printf(n);printf(n*修改*n); printf(注:已到0,迟到1,早退2,旷课3,请假4,无课5!n);for(i;i+) printf(请输入修改的时间:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day);p

14、rintf(请输入需要修改出勤情况的学生的学号:);scanf(%d,&n);printf(n学号:%.2dn姓名:%sn节次:%dn数学出勤:%dn节次:%dn英语出勤:%dn节次:%dn计算机出勤:%dn节次:%dn体育出勤:%dn节次:%dn马原出勤:%dn,STUDENTn-1.num,STUDENT,STUDENTn-1.C1,STUDENTn-1.math,STUDENTn-1.C2,STUDENTn-1.english,STUDENTn-1.C3,STUDENTn-puter,STUDENTn-1.C5,STUDENTn-1.pe,STUDENTn-1.C4,ST

15、UDENTn-1.my);printf(请输入要修改的姓名:);scanf(%s,&STUDENT);for(j=0;j+) printf(请输入需要修改的数学节次:);scanf(%d,&STUDENTn-1.C1);printf(请输入需要修改的数学考勤:);scanf(%d,&STUDENTn-1.math);if(STUDENTn-1.math=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+)printf(请输入需要修改的英语节次:);scanf(%d,&STUDENTn-1.C2);printf(请输入需要修改的英语考勤

16、:);scanf(%d,&STUDENTn-1.english);if(STUDENTn-1.english=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(请输入需要修改的计算机节次:);scanf(%d,&STUDENTn-1.C3);printf(请输入需要修改的计算机考勤:);scanf(%d,&STUDENTn-puter);if(STUDENTn-puter=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+)printf(请输入需要修改的数学节次:);scanf(%d,&S

17、TUDENTn-1.C4);printf(请输入需要修改的体育考勤:);scanf(%d,&STUDENTn-1.pe);if(STUDENTn-1.pe=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(请输入需要修改的马原节次:);scanf(%d,&STUDENTn-1.C5);printf(请输入需要修改的马原考勤:);scanf(%d,&STUDENTn-1.my);if(STUDENTn-1.my=0)break;elseprintf(n*输入有误,请重新输入*nn);printf(nn是否继续修改请输入(y/n)n);

18、 if(getchar()=y)continue;if(getchar()=n) break;查询某个学生的缺课记录void search();分析:首先输出菜单,然后依次按照条件修改每位同学的基本信息。流程图如下图所示。开 始输入查询时间DATE输入查询学号n输出所要查询的各种信息y结 束n程序如下: void search()int n,i;printf(n*查询*n);for(i=0;i+) printf(请输入查询的时间:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day); printf(注:已到0,迟到1,早退2,旷课3,

19、请假4,无课5!n);printf(n请输入要查询的学号:); scanf(%d,&n); printf(n学号:%.2dn姓名:%sn节次:%dn数学出勤:%dn节次:%dn英语出勤:%dn节次:%dn计算机出勤:%dn节次:%dn马原出勤:%dn节次:%dn体育出勤:%dn旷课次数:%dnn,STUDENTn-1.num,STUDENT,STUDENTn-1.C1,STUDENTn-1.math,STUDENTn-1.C2,STUDENTn-1.english,STUDENTn-1.C3,STUDENTn-puter,STUDENTn-1.C4,STUDENTn-1.my,

20、STUDENTn-1.C5,STUDENTn-1.pe,STUDENTn-1.sum);printf(nn是否继续查询请输入(y/n)n); if(getchar()=y)continue;/*提前结束本次循环,接着执行下次循环*/if(getchar()=n) break;/*break语句只能用于循环语句和switch语句;switch中的break语句使得流程跳出switch结构。循环语句中的break语句提前结束循环接着执行下面的语句*/统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序void Statistic_1();程序如下:void Statistic_1() /

21、*统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序*/int i,j;for(i=0;i43;i+)STUDENT_0i=STUDENTi;for(i=0;i42;i+)for(j=0;jSTUDENT_0j+1.sum)STUDENT_1=STUDENT_0j;STUDENT_0j=STUDENT_0j+1;STUDENT_0j+1=STUDENT_1;printf(n*旷课排名*n); printf(姓名 旷课次数n);for(i=42;i=0;i-)printf(%s,STUDENT_0); if(STUDENT_0i.sum0) printf( %dn,STU

22、DENT_0i.sum); 流程图如下:开 始结 束i43i42j0YSTUDENT_0i.sumN四、系统测试测试void main()函数测试该函数使用的测试方法,测试的具体步骤,测试用例的选取,测试的结果。测试void enter()函数测试void search()函数测试void modify()函数测试void Statistic_1()函数五、总结系统完成了:1、学生基本信息录入,该模块主要实现:学生基本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及旷课)的输出,借助函数void enter()来实现;2、修改,该模块主要实现:对某个学生的基

23、本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及旷课)的修改,借助函数void modify()来实现;3、查询,该模块主要实现:对某个学生的基本信息(缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假及旷课)的查询,借助函数void search()来实现;4、统计1,该模块主要实现:统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序;借助函数void Statistic_1()来实现;5、统计2,该模块主要实现:统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序;借助函数void Statisti_

24、2()来实现等5个功能。系统有时间没有做到与替他的功能的链接;第5个部分因为自己不会处理不同函数名之间的排序,所以没有做出来;界面还不美观;使用者应用还不方便;等缺点。我的收获:刚开始上课时,还在迷茫这门课程是用来做什么的。不过,这些感受都是在对这门课程不了解的情况下产生的。后来慢慢的接触多了,听老师讲的多了,了解多了,渐渐的产生了兴趣。尤其这一学期学到语句和函数时,上机操作程序,经过编译,调试和运行后,出现界面,当时觉得很好奇,想真正的学好这门课程。通过半个学期的学习,我掌握了一些自己以前没有掌握的基本知识。开始编写修改和排序时,很头疼,去向其他人寻求帮助,在别人的帮助和提示下,我编完了修改

25、程序,但编译时老出错,修改后的内容将文本内的信息全部覆盖了。困难之时,我们班里的同学帮助了我,完成了修改和排序,这让我认识到团结的力量。这样的话,整个程序基本上全部完成了,但还有一个不会做。经过几天也没做出来,别人的思路又要自己重做,所以不得已放弃了。 。六、附件(代码、部分图表)#includestdio.h#includestring.h/*字符串*/struct dateint year;int month;int day;DATE40;struct studentint num; /*学号为整型*/char name20; /*姓名为字符串*/*struct date Date; 缺课

26、日期Date属于struct date*/int C1; /*节数为整型*/int C2;int C3; int C4; int C5; char Class20; /*课程名称为字符串*/int math; /*数学*/int english; /*英语*/int computer; /*计算机*/int my; /*马原*/int pe; /*体育*/int sum;int summath;int sumenglish;int sumcomputer;int summy;int sumpe;STUDENT43,STUDENT_043,STUDENT_1; /*定义结构体数组(变量)*/vo

27、id main()int x,i;void enter(); /*录入*/void modify(); /*修改*/ void search(); /*查询*/void Statistic_1(); /*统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序*/void Statistic_2(); /*统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序*/for(i=0;i+)printf(n*开始菜单*n);printf(请选择:n);printf(1录入n);printf(2修改n);printf(3查询n);printf(4统计某段时间内,旷课学生姓名及旷课次数

28、n);printf(5统计某段时间内,有学生旷课的课程及旷课人次n);printf(n);scanf(%d,&x);switch(x)case 1:enter();break;case 2:modify();break;case 3:search();break; case 4:Statistic_1();break; /* case 5:Statistic_2();break;*/void enter()int i,j,n;printf(n*录入*n); printf(请输入日期:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day)

29、;printf(请输入学号初值:);scanf(%d,&n); printf(n注:在姓名栏输入 # 返回上一层n);for(i=n-1;i43;i+) STUDENTi.num=i+1; printf(nn学号:%.2dn,STUDENTi.num); printf(请输入姓名:); scanf(%s,&STUDENT);if(STUDENT0=#)STUDENT0=0;printf(nnn);printf( 返回 n);printf( n);break;/*作用:if语句执行结束break到main函数*/ for(j=0;j+) printf(注:已到

30、请输入0,迟到请输入1,早退请输入2,旷课请输入3,请假请输入4,无课请输入5!n);printf(节数:);scanf(%d,&STUDENTi.C1);printf(请输入数学考勤情况:);scanf(%d,&STUDENTi.math);if(STUDENTi.math=0)break;elseprintf(n*输入有误,请重新输入*nn);for(j=0;j+)printf(节数:);scanf(%d,&STUDENTi.C2);printf(请输入英语考勤情况:);scanf(%d,&STUDENTi.english);if(STUDENTi.english=0)break;else

31、printf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C3);printf(请输入计算机考勤情况:);scanf(%d,&STUDENTputer);if(STUDENTputer=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C4);printf(请输入马原考勤情况:);scanf(%d,&STUDENTi.my);if(STUDENTi.my=0)break;elseprintf(n*输入有误,请

32、重新输入*nn); for(j=0;j+) printf(节数:);scanf(%d,&STUDENTi.C5); printf(请输入体育考勤情况:);scanf(%d,&STUDENTi.pe);if(STUDENTi.pe=0)break;elseprintf(n*输入有误,请重新输入*nn); /* if (STUDENTi.math=3) STUDENT_1.summath+; if (STUDENTi.english=3) STUDENT_1.sumenglish+; if (STUDENTputer=3) STUDENT_1.sumcomputer+; if (STUDENTi.

33、my=3) STUDENT_1.summy+; if (STUDENTi.pe=3) STUDENT_1.sumpe+; */ if(STUDENTi.math=3) STUDENTi.sum+; if(STUDENTi.english=3) STUDENTi.sum+; if(STUDENTputer=3) STUDENTi.sum+; if(STUDENTi.my=3) STUDENTi.sum+; if(STUDENTi.pe=3)STUDENTi.sum+;printf(旷课次数:%d,STUDENTi.sum); void search()int n,i;printf(n*查询*n)

34、;for(i=0;i+) printf(请输入查询的时间:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day); printf(注:已到0,迟到1,早退2,旷课3,请假4,无课5!n);printf(n请输入要查询的学号:); scanf(%d,&n); printf(n学号:%.2dn姓名:%sn节次:%dn数学出勤:%dn节次:%dn英语出勤:%dn节次:%dn计算机出勤:%dn节次:%dn马原出勤:%dn节次:%dn体育出勤:%dn旷课次数:%dnn,STUDENTn-1.num,STUDENT,STUDENTn

35、-1.C1,STUDENTn-1.math,STUDENTn-1.C2,STUDENTn-1.english,STUDENTn-1.C3,STUDENTn-puter,STUDENTn-1.C4,STUDENTn-1.my,STUDENTn-1.C5,STUDENTn-1.pe,STUDENTn-1.sum);printf(nn是否继续查询请输入(y/n)n); if(getchar()=y)continue;/*提前结束本次循环,接着执行下次循环*/if(getchar()=n) break;/*break语句只能用于循环语句和switch语句;switch中的break语句使得流程跳出sw

36、itch结构。循环语句中的break语句提前结束循环接着执行下面的语句*/void modify()int i,j,n;printf(n);printf(n*修改*n); printf(注:已到0,迟到1,早退2,旷课3,请假4,无课5!n);for(i;i+) printf(请输入修改的时间:);scanf(%d,%d,%d,&DATE40.year,&DATE40.month,&DATE40.day);printf(请输入需要修改出勤情况的学生的学号:);scanf(%d,&n);printf(n学号:%.2dn姓名:%sn节次:%dn数学出勤:%dn节次:%dn英语出勤:%dn节次:%d

37、n计算机出勤:%dn节次:%dn体育出勤:%dn节次:%dn马原出勤:%dn,STUDENTn-1.num,STUDENT,STUDENTn-1.C1,STUDENTn-1.math,STUDENTn-1.C2,STUDENTn-1.english,STUDENTn-1.C3,STUDENTn-puter,STUDENTn-1.C5,STUDENTn-1.pe,STUDENTn-1.C4,STUDENTn-1.my);printf(请输入要修改的姓名:);scanf(%s,&STUDENT);for(j=0;j+) printf(请输入需要修改的数学节次:);scanf(%d,&STUDENTn-1.C1);printf(请输入需要修改的数学考勤:);scanf(%d,&STUDENTn-1.math);if(STUDENTn-1.math=0)break;elseprintf(n*输入有误,请重新输入*nn); for(j=0;j+)printf(请输入需要修改的英语节次:);scanf(%d,&STUDENTn-1.C2);prin

温馨提示

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

评论

0/150

提交评论