ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:879.31KB ,
资源ID:7813158      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7813158.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课程设计学生考勤系统docx.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课程设计学生考勤系统docx.docx

1、C语言课程设计学生考勤系统docxC语言程序设计课程设计报告设计题目:学生考勤系统设计专 业微电子科学与工程班 级 微电 131学 生 赵杨怡指导教师 年学期设计任务:C语言课程设计任务书10题目:学生考勤系统设计功能:学生考勤系统应包含各班学生的全部信息。 每个学生是一条记录,包 括姓名、性别、学号、日期、节次、出勤情况等信息。本系统可以模拟考勤 过程、记录考勤结果,并能在课程结束后按照设定的考勤评分标准自动给出 每个学生的考勤分数。要求:1、用C语言实现程序设计;2、 利用结构体进行相关信息处理;3、 系统的各个功能模块要求用函数的形式实现;4、 界面友好(良好的人机交互),程序加必要的注

2、释。平时成绩:验收答辩成绩:设计报告成绩:总评成绩:指导教师:一、总体设计1 程序的总体设计确定界面,使用户可选择操作项目(录入,修改,查询,评 分)。录入功能:使用结构体,要求用户输入姓名、性别、学号、日 期、节次、当前出勤情况等信息,并写入文件。修改功能:使用户输入学号,姓名其中一项可以修改考勤其信 息。对于修改功能的实现,是先将所有文件内容读入到内存中,然 后修改考勤值,最后再重新覆盖写入文件。查询模块:使用字符串比较函数,利用循环找到对应结构体数 组元素,然后输出需要信息。对于查询功能的实现,同修改,是先 将所有文件内容读入到内存中,然后查找到其中某项,最后输出到 屏幕。评分模块:系统

3、根据总的应道考勤数按照百分制, 求出每个学生的分数,并输出到屏幕。2.数据结构学生信息用结构体记录,包括姓名(字符数组)、性别(字符型)、日期(年月日三个字符数组)、节次(整型)、出情况(整型)3.函数原型声明VOid mai n() /VOid in put(); /void Cha nge(); /void SearCh(); /void evaluate(); /、详细设计主函数录入数据函数修改数据函数查询数据函数计算总评函数1. main()函数void mai n()void in put(); /void Cha nge(); /void SearCh(); /void evalu

4、ate(); / Char item;SyStem(color 34);Printf( n);Printf(n);Printf(管理系统 );Printf(n);Printf( n);录入数据函数修改数据函数查询数据函数 计算总评函数 学生考勤 BY 朱胜佳Prin tf( n);Prin tf( n);Printf( n);Printf(1.学生信息及考勤情况录入 n);Printf( n);Printf(2.学生信息及考勤情况修改 n);Printf( n);Printf(3.学生信息及考勤情况查询 n);Printf( n);Printf(4.学生考勤总评分数查询 n);Printf(

5、n);Printf( n); / 用户界面Prin tf(n);Printf( 请选择您需要的操作n);SCan f(%c,&item);SWitCh(item)CaSe 1: in put();break;CaSe 2: Cha nge();break;CaSe 3: SearCh();break;CaSe 4: evaluate();break; / 实现功能选择流程图:2. input ()函数VOid in put()int i,j=0,jx=1;r r*r4F/11 *学生基本信息录入*n);if(fp=fope n(date.txt,w)=NULL)Printf( exit(0);

6、文件打开失败n);for(i=0;jx=1;i+) / 输入信息循环 for(;j=0;) / 输入确认循环getchar();Printf( 请输入第d个学生的姓名,i+1);gets(stui. name);Printf( 请输入第d个学生的学号,i+1);gets(stui. nu mber);Printf( 请输入第d个学生的性别(男:m女:f) ,i+1);stui.sex=getchar();Printf(请输入第d个学生的生日(格式:年 月 日),i+1);SCa nf(%d%d%d,&stui.year,&stui.mo nth,&stui.day);Printf( 请输入第c

7、个学生的当前考勤次数,i+1);SCa nf(%d, &stui.kq);Printf( 您输入的信息为 姓名%s学号%s性别c生日%d 年 %d 月 %d 日 n 0 重输 1 确认,stui. name,stui. nu mber,stui.sex,stui.year,stui.m Onth,stui.day);SCa nf(%d,&j); / 输入确认j=0;if(fwrite(&stui,sizeof(struct StUde nt),1,fp)!=1)Printf( 文件写入错误n); / 写入文件Printf( 是否继续输入下一个学生信息 0终止1继续n);SCa nf(%d,&j

8、x); / 继续输入选择fclose(fp);Printf(0 返回主菜单n);getchar(); a=getchar();getchar();if(a=0) mai n(); / 返回主菜单流程图:开始输入jx值选择是否继续结束3.Change()函数VOid Cha nge() int i=0,j=0,sway,t,x;Char name10, nu mber10;Printf( 文件打开失败n); exit(0);fclose(fp);/关闭文件Prin tf( 选择查找方式1按照姓名查找2按照学号查找);SCan f(%d,&sway);/*按照姓名查找开for(i=0;feof(f

9、p)=0;i+)StUde nt),1,fp); / 读取文件内容fread(&stui,sizeof(struct始*/if(sway=1)Printf( 请输入需要修改学生的姓名);/ Prin tf(i=%d,i);SCa nf(%s, name); for(j=0;t!=0;j+)t=strcmp(stuj. name, name);if(j=i)t=0;Printf( 未找到您所查询的数据,请重新输入n);if(ji) Zz 查询成功数 %dn,stuj-1. name,stuj-1. nu mber,stuj-1.sex,stuj-1.y ear,stuj-1.mo nth,stu

10、j-1.day,stuj-1.kq);Printf( 是否修改该生考 勤信息 0否 1是);ZZ选择是否修改考勤SCan f(%d, &x); ZZ 输入选择变量值if(x=1) Printf(请输入新的考勤值);输入SCa nf(%d, &stuj-1.kq); ZZ新的考勤值if(fp=fope n( date.txt,w)=NULL) ZZ以只写方式打开文件*if(sway=2)Printf(请输入需要修改学生的学号);ZZ Prin tf(i=%d,i);SCa nf(%s ,nu mber);for(j=0;t!=0;j+)t=strcmp(stuj. nu mber, nu mbe

11、r); if(j=i) t=0;Printf( 未找到您所查询的数据,请重新输入n); if(ji)Printf(别 c生日数 %dn,stuj-1. name,stuj-1. nu mber,stuj-1.sex,stuj-1.y ear,stuj-1.mo nth,stuj-1.day,stuj-1.kq);Printf( 是否修改该生考 勤信息 0否 1是);/选择是否修改考勤SCan f(%d, &x); / 输入选择变量值if(x=1)Printf(请输入新的考勤值);SCa nf(%d,&stuj-1.kq); / 输入新的考勤值if(fp=fope n( date.txt,w)=

12、NULL) /以只写方式打开文件Printf( 文件打开失败n);exit(0);for(j=0;ji;j+)if(fwrite(&stuj,SiZeOf(StruCt StUde nt),1,fp)!=1) pri ntf( 文件写入错误n); / 写入文件fclose(fp); / 关闭文件Printf( 是否继续修改其他学生考勤0否1是);SCa nf(%d, &x); if(x=1) Cha nge();按照 学号查 找结束*输入SWay值选择查找方式输入X值选择 是否修改考勤X=1?4.SearCh() 函数VOid SearChO int i=0,j=0,sway,t,x;Char

13、 name10, nu mber10;Printf(*n);if(fp=fope n( date.txt,r)=NULL) 文件内容读入内存学生信息查询/ 将fread(&stui,sizeof(struct关闭文件Printf( 文件打开失败n); exit(0); for(i=0;feof(fp)=0;i+)StUde nt),1,fp); / 读取文件内容fclose(fp); /Printf( 选择查找方式1按照姓名查找2按照学号查找);SCan f(%d,&sway);按照学号查找开始/*if(sway=2)Printf(请输入需要修改学生的学号);/ Prin tf(i=%d,i)

14、;SCa nf(%s ,nu mber);for(j=0;t!=0;j+) t=strcmp(stuj. nu mber, nu mber);if(j=i)t=0;Printf( 未找到您所查询的数据,请重新输入n);if(ji) / 查询成功Printf( 您查找的学生信息如下n姓名%s学号%s性%c生日 %d年 %d月 %d日 当前考勤次数 %dn,stuj-1. name,stuj-1. nu mber,stuj-1.sex,stuj-1.year,stuj-1.mo nth,stuj-1.day,stuj-1.kq);Printf( 是否继续查询其他学生信息0否1是);SCa nf(%

15、d, &x); if(x=1) SearCh();按照 学号查 找结束*/*Printf(0 返回主菜单n); getchar();a=getchar();getchar();if(a=0) main();流程图:5.evaluate。函数VOid evaluate() int i=0,j=0,sway,t,x; float score;Char name10,number10;Printf( * *n);if(kqcs=0)Printf( 请输入应到考勤总数);SCan f(%f,&kqcs);if(fp=fope n(date.txt,r)=NULL)学生考勤分数计算/ 请输入应到考勤总数

16、/ 将文件内容读入内存Printf( 文件打开失败n);exit(0);for(i=0;feof(fp)=0;i+) fread(&stui,sizeof(structStude nt),1,fp); / 读取文件内容fclose(fp);Prin tf( 选择查找方式SCan f(%d,&sway);名查找开/*/if(sway=1);Prin tf(请输入需要修改学生的姓名/ Prin tf(i=%d,i);SCa nf(%s, name); for(j=0;t!=0;j+) t=strcmp(stuj. name, name); if(j=i) t=0;Printf( 未找到您所查询的数

17、据,请重新输入n);您查找的学生信息如下n姓名%s学号%s %d年%d月%d日 当前考勤数 %dn,stuj-1. name,stuj-1. nu mber,stuj-1.sex,stuj-1.year,stuj-1.mo nth,stuj-1.day,stuj-1.kq);SCOre=(StUj-1.kq)kqcs*100;Printf( 该生当前考勤分数为5.2f,score);Printf( 是否继续计算其他学生考勤分数 0否1是);SCa nf(%d, &x); if(x=1) evaluate();按照姓名查找结/*/按照学号查找开始*IIIif(sway=2)Printf(请输入需

18、要修改学生的学号);II Prin tf(i=%d,i);SCa nf(%s, nu mber); for(j=0;t!=0;j+)t=strcmp(stuj. nu mber, nu mber); if(j=i)t=0;Printf( 未找到您所查询的数据,请重新输入n); if(ji)Printf(别 c生日II 查询成功您查找的学生信息如下n%d年%d月 %d 日姓名 %s学号%s性 当前考勤次Printf( 该生当前考勤分数为5.2f,score);数 %dn,stuj-1. name,stuj-1. nu mber,stuj-1.sex,stuj-1.y ear,stuj-1.mo

19、nth,stuj-1.day,stuj-1.kq);SCOre=(StuIj-1.kq)kqcs*100;Printf( 是否继续计算其他学生考勤分数 0否1是);SCa nf(%d, &x); if(x=1) evaluate();*按照 学号查 找结束*IIIPrintf(0 返回主菜单n); getchar();a=getchar();getchar();if(a=0) main();流程图:三、测试及调试(测试方案、存在的问题及解决方法)测试方案:按照每个函数功能进行测试,在做完每个函数对其进行 测试,主函数测试,先将所有需要的功能模块函数设置为空,每个 函数用一个Printf 语句来

20、测试主函数。1.存在问题:开始将生日定义为字符数组,当用SCanf来输入年月日时,年月日之间用空格分隔,但在输出时发现年月日出现错误。分析原因:用SCanf输入年月日时,系统会把用来分隔的空格当做字符读入。 解决方法:将年月日定义为整型,这样就可以用 SCanf输入,用空格隔开。2.存在问题2:在查找数据时,需要先将所有数据读入一个结构体数组,在读取后未关闭文件,执行查找时查找不到相关信息。分析原因:再利用for循环读取全部文件内容后,文件指针将会移至文件末 尾,这样再执行查找时就会从文件末尾开始, 显然不符合要求,所以会出现 错误。解决方法:在读取完数据后先关闭文件,在查找时再次打开文件,这

21、时文件 指针就会指向文件开头。3.存在问题3:再多个使用getchar或者gets输入的时候,会出现直接跳过 输入的情况。分析原因:在使用getchar或者gets输入的时候,系统会将前一步用来确认执行的回车当成字符读入,导致跳过该步输入。解决方法:再getchar或者gets前面加上getchar()语句,读掉回车,下面的getchar或者gets就可以正常输入。四、小结通过编写该程序,熟悉了 C语言的基本语法,选择,循环等结构,深入练 习了函数的调用方法,和文件的读写方法,熟悉了结构体的使用,更加深化了 面向过程语言思想,和一些基本算法。通过对程序的后期调试,熟悉了 C常见错误,锻炼了思维

22、的严密性,和完 备性。通过对程序的注释和画流程图,形成了一套自己编程的风格,和清晰地思 路,使思维更加条理化,清晰化。附件:主要源程序代码(需打印)#i nclude#i nclude#i ncludeFlLE *fp; /定义文件Char a; 返回选择变量float kqcs=0; 应到考勤次数变量StrUCt StUde nt Char n ame10;Char nu mber11;Char sex;int year;int mon th;int day;int kq;stu100; /定义储存学生信息的结构体数组主函数开女台 *void main() VOid inPut ();/录入

23、数据函数VOid Cha nge();修改数据函数void SearCh();/查询数据函数void evaluate ();/计算总评函数Char item;SyStem(color 34);Printf( n);Printf( n);Printf( 学生考勤管理系统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);Printf( n);*if(fp=fope n( 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. nu mber);Printf(请输入第%d个学生的性别(男:m女:f) ,i+1);stui.sex=getchar();P

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1