C语言课程设计学生考勤系统(27页).doc
《C语言课程设计学生考勤系统(27页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计学生考勤系统(27页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言课程设计学生考勤系统-第 27 页C语言程序设计课程设计报告设计题目:学生考勤系统设计专 业 微电子科学与工程班 级 微电 131 学 生 赵 杨 怡 指导教师 年 学期设计任务:C语言课程设计任务书10题目:学生考勤系统设计功能:学生考勤系统应包含各班学生的全部信息。每个学生是一条记录,包括姓名、性别、学号、日期、节次、出勤情况等信息。本系统可以模拟考勤过程、记录考勤结果,并能在课程结束后按照设定的考勤评分标准自动给出每个学生的考勤分数。要求:1、用C语言实现程序设计;2、利用结构体进行相关信息处理;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必
2、要的注释。平时成绩:验收答辩成绩:设计报告成绩:总评成绩:指导教师:一、总体设计1程序的总体设计 确定界面,使用户可选择操作项目(录入,修改,查询,评分)。 录入功能:使用结构体,要求用户输入姓名、性别、学号、日期、节次、当前出勤情况等信息,并写入文件。 修改功能:使用户输入学号,姓名其中一项可以修改考勤其信息。对于修改功能的实现,是先将所有文件内容读入到内存中,然后修改考勤值,最后再重新覆盖写入文件。 查询模块:使用字符串比较函数,利用循环找到对应结构体数组元素,然后输出需要信息。对于查询功能的实现,同修改,是先将所有文件内容读入到内存中,然后查找到其中某项,最后输出到屏幕。 评分模块:系统
3、根据总的应道考勤数按照百分制,求出每个学生的分数,并输出到屏幕。2. 数据结构学生信息用结构体记录,包括姓名(字符数组)、性别(字符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)。3. 函数原型声明 void main() /主函数void input(); /录入数据函数void change(); /修改数据函数void search(); /查询数据函数void evaluate(); /计算总评函数二、详细设计1.main( )函数void main()void input(); /录入数据函数void change(); /修改数据函数void search(); /
4、查询数据函数void evaluate(); /计算总评函数 char item; system(color 34);printf( n);printf( n);printf( 学 生 考 勤 管 理 系 统 n);printf( n);printf( BY 朱胜佳 n);printf( n);printf( n);printf( n);printf( 1.学生信息及考勤情况录入 n);printf( n);printf( 2.学生信息及考勤情况修改 n);printf( n);printf( 3.学生信息及考勤情况查询 n);printf( n);printf( 4.学生考勤总评分数查询 n
5、);printf( n);printf( n); /用户界面printf(n);printf( 请选择您需要的操作n);scanf(%c,&item); switch(item) case 1: input();break; case 2: change();break; case 3: search();break; case 4: evaluate();break; /实现功能选择流程图: 开 始1breakgoal()search()amend()record()432switch(item) switch(item)switch(item)输出界面 结束2. input() 函数voi
6、d input()int i,j=0,jx=1;printf( *学 生 基 本 信 息 录 入*n);if(fp=fopen(date.txt,w)=NULL)printf(文件打开失败n); exit(0);for(i=0;jx=1;i+) /输入信息循环 for(;j=0;) /输入确认循环getchar();printf(请输入第%d个学生的姓名 ,i+1);gets(stui.name);printf(请输入第%d个学生的学号 ,i+1);gets(stui.number);printf(请输入第%d个学生的性别(男:m 女:f) ,i+1);stui.sex=getchar();p
7、rintf(请输入第%d个学生的生日(格式:年 月 日) ,i+1);scanf(%d%d%d,&stui.year,&stui.month,&stui.day); printf(请输入第%d个学生的当前考勤次数 ,i+1);scanf(%d,&stui.kq);printf(您输入的信息为 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日n 0 重输 1 确认,stui.name,stui.number,stui.sex,stui.year,stui.month,stui.day);scanf(%d,&j); /输入确认 j=0; if(fwrite(&stui,sizeof(s
8、truct student),1,fp)!=1) printf(文件写入错误n); /写入文件printf( 是否继续输入下一个学生信息 0 终止 1 继续n);scanf(%d,&jx); /继续输入选择fclose(fp); printf(0 返回主菜单n);getchar();a=getchar();getchar();if(a=0) main(); /返回主菜单流程图:开始0=j打开文件1=jx0=ijx=1?Yj=0?Y输入i+1个学生信息生信息N输入j值选择是否确认写入文件i+1=i输入jx值选择是否继续结束3. change()函数void change() int i=0,j=
9、0,sway,t,x; char name10,number10;printf( *学 生 考 勤 修 改*n); if(fp=fopen(date.txt,r)=NULL) /将文件内容读入内存printf(文件打开失败n); exit(0);for(i=0;feof(fp)=0;i+) fread(&stui,sizeof(struct student),1,fp); /读取文件内容fclose(fp); /关闭文件printf(选择查找方式 1 按照姓名查找 2 按照学号查找);scanf(%d,&sway); /*按照姓名查找开始*/if(sway=1)printf(请输入需要修改学生
10、的姓名 );/printf(i=%d,i);scanf(%s,name);for(j=0;t!=0;j+) t=strcmp(stuj.name,name);if(j=i) t=0;printf(未找到您所查询的数据,请重新输入n); if(ji) /查询成功printf(您查找的学生信息如下n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %dn,stuj-1.name,stuj-1.number,stuj-1.sex,stuj-1.year,stuj-1.month,stuj-1.day,stuj-1.kq); printf(是否修改该生考勤信息 0 否 1
11、是); /选择是否修改考勤 scanf(%d,&x); /输入选择变量值if(x=1)printf(请输入新的考勤值 );scanf(%d,&stuj-1.kq); /输入新的考勤值 if(fp=fopen(date.txt,w)=NULL) /以只写方式打开文件 printf(文件打开失败n); exit(0); for(j=0;ji;j+) if(fwrite(&stuj,sizeof(struct student),1,fp)!=1) printf(文件写入错误n); /写入文件 fclose(fp); /关闭文件printf(是否继续修改其他学生考勤 0 否 1 是);scanf(%d
12、,&x);if(x=1) change();/*按照姓名查找结束*/ /*按照学号查找开始*/if(sway=2)printf(请输入需要修改学生的学号 );/printf(i=%d,i);scanf(%s,number);for(j=0;t!=0;j+) t=strcmp(stuj.number,number);if(j=i) t=0;printf(未找到您所查询的数据,请重新输入n); if(ji) /查询成功printf(您查找的学生信息如下n 姓名 %s 学号 %s 性别 %c 生日 %d年%d月%d日 当前考勤次数 %dn,stuj-1.name,stuj-1.number,stuj
13、-1.sex,stuj-1.year,stuj-1.month,stuj-1.day,stuj-1.kq); printf(是否修改该生考勤信息 0 否 1 是); /选择是否修改考勤 scanf(%d,&x); /输入选择变量值if(x=1)printf(请输入新的考勤值 );scanf(%d,&stuj-1.kq); /输入新的考勤值 if(fp=fopen(date.txt,w)=NULL) /以只写方式打开文件 printf(文件打开失败n); exit(0); for(j=0;ji;j+) if(fwrite(&stuj,sizeof(struct student),1,fp)!=1
14、) printf(文件写入错误n); /写入文件 fclose(fp); /关闭文件printf(是否继续修改其他学生考勤 0 否 1 是);scanf(%d,&x);if(x=1) change();/*按照学号查找结束*/printf(0 返回主菜单n);getchar();a=getchar();getchar();if(a=0) main();开始 打开文件将文件内容全部读入结构体数组输入sway值选择查找方式Sway=1?NSway=2?Y输入要查找的学号输入要查找的姓名N查找学号查找姓名输入X值选择是否修改考勤X=1?Y输入新的考勤值写入文件结束4. search()函数void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 考勤 系统 27
限制150内