1、目录目录 一、系统开发的背景.1 二、系统分析与设计.1 (一)系统功能要求.1 (二)系统模块结构设计.1 三、系统的设计与实现.2 (一)学生基本信息浏览:BASIC_B().2 (二).2 四、系统测试.2 (一)测试MAIN_FORM()函数2 (二).3 五、总结.3 六、附件(代码、部分图表).3 学生综合测评系统学生综合测评系统 一、一、系统开发的系统开发的背景背景 为了方便快捷的记录学生的考勤信息,因此用 C 语言设计了一个方便 的考勤系统。 二、系统分析与设计二、系统分析与设计 (一)(一) 系统功能要求系统功能要求 功能:设计一考勤系统。考勤信息记录了学生的缺课情况,它包功能:设计一考勤系统。考勤信息记录了学生的缺课情况,它包 括:缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类括:缺课日期、第几节课、课程名称、学生姓名、学生学号、缺课类 型(迟到、早退、请假及旷课)型(迟到、早退、请假及旷课) 。系统具有以下要求:。系统具有以下要求: (1 1)录入学生的缺课记录;)录入学生的缺课记录; (2 2)修改某个学生的缺课记录;)修改某个学生的缺课记录; (3
2、3)查询某个学生的缺课情况;)查询某个学生的缺课情况; (4 4)统计某段时间内,旷课学生姓名及旷课次数,按旷课次数)统计某段时间内,旷课学生姓名及旷课次数,按旷课次数 由多到少排序;由多到少排序; (5 5)统计某段时间内,有学生旷课的课程及旷课人次,按旷课)统计某段时间内,有学生旷课的课程及旷课人次,按旷课 人次由多到少排序;人次由多到少排序; (6 6)系统以菜单方式工作。)系统以菜单方式工作。 (二)(二) 系统模块结构设计系统模块结构设计 通过对系统功能的分析,学生考勤系统功能如下图所示。 图 1 学生考勤系统功能图 通过上图的功能分析,把整个系统划分为 5 个模块: 1、 学生基本信息录入,该模块主要实现:学生基本信息(缺课日期、 第几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请 假及旷课)的输出,借助函数 void enter()来实现; 2、修改,该模块主要实现:对某个学生的基本信息(缺课日期、第 几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假 及旷课)的修改,借助函数 void modify()来实现; 3、查询,该模块主要实现:对某
3、个学生的基本信息(缺课日期、第 几节课、课程名称、学生姓名、学生学号、缺课类型(迟到、早退、请假 及旷课)的查询,借助函数 void search()来实现; 4、统计 1,该模块主要实现:统计某段时间内,旷课学生姓名及旷课 考 勤 系 统 录 入 模 块 修 改 模 块 查 询 模 块 统 计 模 块 1 统 计 模 块 2 次数,按旷课次数由多到少排序;借助函数 void Statistic_1()来实现; 5、统计 2,该模块主要实现:统计某段时间内,有学生旷课的课程及 旷课人次,按旷课人次由多到少排序;借助函数 void Statisti_2()来 实现; 三、系统的设计三、系统的设计与实现与实现 (一)学生基本信息的录入学生基本信息的录入 voidvoid enter()enter() 该模块的具体代码如下所示。 void enter() int i,j,n; printf(“n*录入*n“); printf(“请输入日期:“); scanf(“%d,%d,%d“, printf(“请输入学号初值:“); scanf(“%d“, printf(“n-注:在姓名栏输入 # 返回
4、上一层n“); for(i=n-1;i=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“节数:“); scanf(“%d“, printf(“请输入英语考勤情况:“); scanf(“%d“, if(STUDENTi.english=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“节数:“); scanf(“%d“, printf(“请输入计算机考勤情况:“); scanf(“%d“, if(STUDENTputer=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“节数:“); scanf(“%d“, printf(“请输入马原考勤情况:“); scanf(“%d“, if(STUDENTi.my=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“节数:“); scanf(“%d“, pr
5、intf(“请输入体育考勤情况:“); scanf(“%d“, if(STUDENTi.pe=0) break; else printf(“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) 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.
6、sum); 分析:首先输出菜单,然后依次按照条件录入每位同学信 息。 输入日期 DATE 输入学号初值 n i=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“请输入需要修改的英语节次:“); scanf(“%d“, printf(“请输入需要修改的英语考勤:“); scanf(“%d“, if(STUDENTn-1.english=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“请输入需要修改的计算机节次:“); scanf(“%d“, printf(“请输入需要修改的计算机考勤:“); scanf(“%d“, if(STUDENTn-puter=0) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“请输入需要修改的数学节次:“); scanf(“%d“, printf(“请输入需要修改的体育考勤:“); scanf(“%d“, if(STUDENTn-1.pe=0
7、) break; else printf(“n*输入有误,请重新输入*nn“); for(j=0;j+) printf(“请输入需要修改的马原节次:“); scanf(“%d“, printf(“请输入需要修改的马原考勤:“); scanf(“%d“, if(STUDENTn-1.my=0) break; else printf(“n*输入有误,请重新输入*nn“); printf(“nn-是否继续修改请输入(y/n)n“); if(getchar()=y) continue; if(getchar()=n) break; (三)(三) 查询某个学生的缺课记录查询某个学生的缺课记录 voidvoid search()search(); 分析:首先输出菜单,然后依次按照条件修改每位同学的基 本信息。流程图如下图所示。 程序如下:程序如下: void search() int n,i; printf(“n*查询*n“); for(i=0;i+) printf(“请输入查询的时间:“); scanf(“%d,%d,%d“, printf(“注:已到 0,迟到 1,早退 2,旷课 3,请假 4
8、,无课 5!n“); printf(“n-请输入要查询的学号:“); scanf(“%d“, printf(“n 学号:%.2dn 姓名:%sn 节次:%dn 数学出勤:%dn 节次:%dn 英语出勤:%dn 节 次:%dn 计算机出勤:%dn 节次:%dn 马原出勤:%dn 节次:%dn 体育出勤:%dn 旷课次数: %dnn“,STUDENTn-1.num,STUDENTn-1.name,STUDENTn-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;/*提前结束本次循环,接着执行下次循环*/ 开 始 输入查询时间 DATE 输入查询学号 n 输出所要查询的各种 信息 y 结 束 n if(getchar()=n) break;/*break 语句只能用于循环语句和 switch 语句;switch 中的 break 语句使得流程 跳出 switch 结构。循环语句中的 break 语句提前结束循环接着执行下面的语句*/ (四)(四) 统计某段时间内,旷课学生姓名及旷课次数,按旷课次统计某段时间内,旷课学生姓名及旷课次数,按旷课次 数由多到少排序数由多到少排序 voidvoid Statistic_1()Statistic_1(); 程序如下:程序如下: void Statistic_1() /*统计某段时间内,旷课学生姓名及旷课次数,按旷课次数由多到少排序*/ int i,j; for(i=0;iSTUDENT_0j+1.sum) STUDENT_1=STUDENT_0j; STUDENT_0j=STUDENT_0j+1; STUDENT_0j+1=STUDENT_1
《考勤系统》由会员F****n分享,可在线阅读,更多相关《考勤系统》请在金锄头文库上搜索。