C语言课程设计任务(学生考勤系统)_第1页
C语言课程设计任务(学生考勤系统)_第2页
C语言课程设计任务(学生考勤系统)_第3页
C语言课程设计任务(学生考勤系统)_第4页
C语言课程设计任务(学生考勤系统)_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程程序设计计课程设计计报告设计题目目:学生生考勤管管理系统统设计院系:生生命科技技学院班级:农农学1222姓名:刘刘玉柱学号:220122011142003河南科技技学院20133年 冬季 学期设计任务务:C语语言课程程设计任任务书110题目:学学生考勤勤系统设设计功能:学学生考勤勤系统应应包含各各班学生生的全部部信息。每个学学生是一一条记录录,包括括姓名、性别、学号、日期、节次、出勤情情况等信信息。本本系统可可以模拟拟考勤过过程、记记录考勤勤结果,并并能在课课程结束束后按照照设定的的考勤评评分标准准自动给给出每个个学生的的考勤分分数。要求:11、用CC语言实实现程序序设计;2、利用用结

2、构体体进行相相关信息息处理;3、系统统的各个个功能模模块要求求用函数数的形式式实现;4、界面面友好(良良好的人人机交互互),程程序加必必要的注注释。平时成绩绩:验收答辩辩成绩:设计报告告成绩:总评成绩绩:指导教师师:一、总体体设计1程序序的总体体设计确定界界面,使使用户可可选择操操作项目目(录入入,修改改,查询询,评分分,界面面美化)。录入功功能:使使用结构构体,要要求用户户输入姓姓名、性性别、学学号、日日期、节节次、当当前出勤勤情况等等信息,并并写入文文件。 修改功功能:使使用户输输入学号号,姓名名其中一一项可以以修改考考勤其信信息。对对于修改改功能的的实现,是是先将所所有文件件内容读读入到

3、内内存中,然然后修改改考勤值值,最后后再重新新覆盖写写入文件件。查询模模块:使使用字符符串比较较函数,利利用循环环找到对对应结构构体数组组元素,然然后输出出需要信信息。对对于查询询功能的的实现,同同修改,是是先将所所有文件件内容读读入到内内存中,然然后查找找到其中中某项,最最后输出出到屏幕幕。评分模模块:系系统根据据总的应应道考勤勤数按照照百分制制,求出出每个学学生的分分数,并并输出到到屏幕。界面设设置模块块:系统统提供背背景及前前景颜色色选项,用用户通过过选择可可以自由由调节界界面颜色色。2. 数数据结构构学生信息息用结构构体记录录,包括括姓名(字字符数组组)、性性别(字字符型)、日期(年年

4、月日三三个字符符数组)、节次(整整型)、出情况况(整型型)。3. 函函数原型型声明 vooid maiin() /主函数数voidd reecorrd(); /录入入数据函函数voiid aamennd(); /修修改数据据函数voiid ssearrch(); /查查询数据据函数voiid ggoall(); /计计算总评评函数voiid llookk(); /界界面设置置函数二、详细细设计1.maain( )函函数voidd maain()voiid rrecoord(); /录录入数据据函数voiid aamennd(); /修修改数据据函数voiid ssearrch(); /查查询数

5、据据函数voiid ggoall(); /计计算总评评函数 viiod koook(); /界面设设置函数数 chaar iitemm; priintff( nn);priintff( n);priintff( 学 生 考 勤 管 理 系 统 n);priintff( n);priintff( 刘玉柱柱河南科科技学院院农学1122n);priintff( n); priintff( n);priintff( n); priintff( 1.学生信信息及考考勤情况况录入 n); priintff( n);priintff( 2.学生信信息及考考勤情况况修改 n); priintff( n);pr

6、iintff( 3.学生信信息及考考勤情况况查询 n); priintff( n);priintff( 4.学生考考勤总评评分数查查询 n);priintff( n); priintff( nn); /用用户界面面设置priintff(n);priintff( 请选选择您需需要的操操作nn);scaanf(%cc,&iteem); swiitchh(ittem) casse 1: reecorrd();brreakk; casse 2: ammendd();breeak; casse 3: seearcch();brreakk; casse 4: gooal();bbreaak; casse

7、5;loook();bbreaak; /实实现功能能选择流程图:开 始45Look()1breakgoal()search()amend()record()32switch(item) switch(item)switch(item)输出界面结束2.reecorrd() 函数数voidd reecorrd()intt i,j=00,jxx=1;priintff( *学 生生 基 本 信信 息 录 入入*n);if(fpp=foopenn(ddatee.txxt,w)=NUULL)prrinttf(文件打打开失败败n); exxit(0);forr(i=0;jjx=1;ii+) /输入入信息循循

8、环 foor(;j=0;) /输输入确认认循环geetchhar();prrinttf(请输入入第%dd个学生生的姓名名 ,i+11);geets(stuui.naame);prrinttf(请输入入第%dd个学生生的学号号 ,i+11);geets(stuui.nuumbeer);prrinttf(请输入入第%dd个学生生的性别别(男:m 女女:f) ,i+11);sttuii.ssex=gettchaar();prrinttf(请输入入第%dd个学生生的生日日(格式式:年 月 日日) ,i+1);sccanff(%d%dd%d,&sstui.yeaar,&stuui.moonthh,&ss

9、tui.dayy); prrinttf(请输入入第%dd个学生生的当前前考勤次次数 ,i+1);scannf(%d,&sstui.kq);prrinttf(您输入入的信息息为姓名名 %ss 学号号 %ss 性别别 %cc 生日日 %dd年%d月%d日n 0 重输 11 确认认,sstui.namme,sstui.nummberr,sttuii.ssex,stuui.yeear,stuui.moonthh,sttuii.dday);scannf(%d,&jj); /输输入确认认 j=0; iff(fwwritte(&stuui,siizeoof(sstruuct stuudennt),1,ffp

10、)!=1) prrinttf(文件写写入错误误n); /写写入文件件prrinttf( 是否继继续输入入下一个个学生信信息 00 终止止 11 继续续n);sccanff(%d,&jxx); /继续续输入选选择fcllosee(fpp); priintff(00 返回回主菜单单n);gettchaar();a=geetchhar();gettchaar();if(a=0) mmainn(); /返回主主菜单流程图:开始0=j打开文件1=jx0=ijx=1?Yj=0?Y输入i+1个学生信息生信息N输入j值选择是否确认写入文件i+1=i输入jx值选择是否继续结束3. aamennd()函数void

11、d ammendd() intt i=0,jj=0,swaay,tt,x; chaar nnamee100,nnumbber10;priintff( *学学 生 考 勤勤 修 改*n); if(fpp=foopenn(ddatee.txxt,r)=NUULL) /将文件件内容读读入内存存prrinttf(文件打打开失败败n); exxit(0);forr(i=0;ffeoff(fpp)=0;ii+) frreadd(&sstui,sizzeoff(sttrucct sstuddentt),11,fpp); /读读取文件件内容fcllosee(fpp); /关关闭文件件priintff(选选择查

12、找找方式 1 按按照姓名名查找 2 按照学学号查找找);scaanf(%dd,&swaay); /*按照照姓名查查找开始始*/if(swaay=1)prrinttf(请输入入需要修修改学生生的姓名名 );/priintff(ii=%dd,ii);sccanff(%s,namme);foor(jj=0;t!=0;jj+) tt=sttrcmmp(sstuj.namme,nnamee);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别

13、%c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq); pprinntf(是否否修改该该生考勤勤信息 0 否 1 是是); /选择是是否修改改考勤 sscannf(%d,&xx); /输输入选择择变量值值iif(xx=11)priintff(请请输入新新的考勤勤值 );scaanf(%dd,&stuuj-1.kq); /输入新新的考勤勤值 if(fpp=foopenn(dda

14、tee.txxt,w)=NUULL) /以只只写方式式打开文文件 pprinntf(文件件打开失失败nn); eexitt(0); forr(j=0;jji;j+) iif(ffwriite(&sttujj,ssizeeof(strructt sttudeent),1,fp)!=11) pprinntf(文件件写入错错误nn); /写入文文件 fcllosee(fpp); /关关闭文件件prrinttf(是否继继续修改改其他学学生考勤勤 0 否 1 是是);sccanff(%d,&x);iff(x=1) ammendd();/*按照照姓名查查找结束束*/ /*按按照学号号查找开开始*/if(s

15、waay=2)prrinttf(请输入入需要修修改学生生的学号号 );/priintff(ii=%dd,ii);sccanff(%s,nummberr);foor(jj=0;t!=0;jj+) tt=sttrcmmp(sstuj.nummberr,nuumbeer);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummb

16、err,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq); pprinntf(是否否修改该该生考勤勤信息 0 否 1 是是); /选择是是否修改改考勤 sscannf(%d,&xx); /输输入选择择变量值值iif(xx=11)priintff(请请输入新新的考勤勤值 );scaanf(%dd,&stuuj-1.kq); /输入新新的考勤勤值 if(fpp=foopenn(ddatee.txxt,w)=NUULL) /以只只写方式式打开文文件 pprinntf(文件件打开失失败nn); eexi

17、tt(0); forr(j=0;jji;j+) iif(ffwriite(&sttujj,ssizeeof(strructt sttudeent),1,fp)!=11) pprinntf(文件件写入错错误nn); /写入文文件 fcllosee(fpp); /关关闭文件件prrinttf(是否继继续修改改其他学学生考勤勤 0 否 1 是是);sccanff(%d,&x);iff(x=1) ammendd();/*按照照学号查查找结束束*/priintff(00 返回回主菜单单n);gettchaar();a=ggetccharr();gettchaar();if(a=0) mmainn();开

18、始打开文件将文件内容全部读入结构体数组输入sway值选择查找方式Sway=1?NSway=2?Y输入要查找的学号输入要查找的姓名N查找学号查找姓名输入X值选择是否修改考勤X=1?Y输入新的考勤值写入文件结束4. ssearrch()函数数voidd seearcch() intt i=0,jj=0,swaay,tt,x; chaar nnamee100,nnumbber10;priintff( *学 生生 信 息 查查 询*n); if(fpp=foopenn(ddatee.txxt,r)=NUULL) /将文文件内容容读入内内存prrinttf(文件打打开失败败n); exxit(0);fo

19、rr(i=0;ffeoff(fpp)=0;ii+) frreadd(&sstui,sizzeoff(sttrucct sstuddentt),11,fpp); /读读取文件件内容fcllosee(fpp); /关关闭文件件priintff(选选择查找找方式 1 按按照姓名名查找 2 按照学学号查找找);scaanf(%dd,&swaay); /*按照照姓名查查找开始始*/if(swaay=1)prrinttf(请输入入需要修修改学生生的姓名名 );/priintff(ii=%dd,ii);sccanff(%s,namme);foor(jj=0;t!=0;jj+) tt=sttrcmmp(sst

20、uj.namme,nnamee);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq); prrinttf(是否继继续查询询其他学学生信息息 0 否 1 是是);s

21、ccanff(%d,&x);iff(x=1) seearcch();/*按按照姓名名查找结结束*/ /*按按照学号号查找开开始*/if(swaay=2)prrinttf(请输入入需要修修改学生生的学号号 );/priintff(ii=%dd,ii);sccanff(%s,nummberr);foor(jj=0;t!=0;jj+) tt=sttrcmmp(sstuj.nummberr,nuumbeer);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学

22、学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq);prrinttf(是否继继续查询询其他学学生信息息 0 否 1 是是);sccanff(%d,&x);iff(x=1) seearcch();/*按照照学号查查找结束束*/priintff(00 返回回主菜单单n);gettchaar();a=ggetccharr();gettchaar();if(a=

23、0) mmainn(); 流程图图:开始打开文件将文件内容全部读入结构体数组输入sway值选择查找方式Sway=1?NSway=2?Y输入要查找的学号输入要查找的姓名查找学号查找姓名输出该生信息5.gooal()函数数voidd gooal() intt i=0,jj=0,swaay,tt,x; flooat scoore; chaar nnamee100,nnumbber10;priintff( *学 生生 考 勤 分分 数 计 算算*n);if(kqccs=0)priintff(请请输入应应到考勤勤总数 ); /请请输入应应到考勤勤总数scaanf(%ff,&kqccs); if(fpp=

24、foopenn(ddatee.txxt,r)=NUULL) /将将文件内内容读入入内存prrinttf(文件打打开失败败n); exxit(0);forr(i=0;ffeoff(fpp)=0;ii+) frreadd(&sstui,sizzeoff(sttrucct sstuddentt),11,fpp); /读读取文件件内容fcllosee(fpp); /关关闭文件件priintff(选选择查找找方式 1 按按照姓名名查找 2 按照学学号查找找);scaanf(%dd,&swaay); /*按照照姓名查查找开始始*/if(swaay=1)prrinttf(请输入入需要修修改学生生的姓名名 )

25、;/priintff(ii=%dd,ii);sccanff(%s,namme);foor(jj=0;t!=0;jj+) tt=sttrcmmp(sstuj.namme,nnamee);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1

26、.moonthh,sttujj-1.daay,sstuj-11.kkq); sscorre=(stuuj-1.kq)/kqqcs*1000; pprinntf(该生生当前考考勤分数数为 %5.22f,scoore);prrinttf(是否继继续计算算其他学学生考勤勤分数 0 否否 11 是);sccanff(%d,&x);iff(x=1) gooal();/*按按照姓名名查找结结束*/ /*按按照学号号查找开开始*/if(swaay=2)prrinttf(请输入入需要修修改学生生的学号号 );/priintff(ii=%dd,ii);sccanff(%s,nummberr);foor(jj=0

27、;t!=0;jj+) tt=sttrcmmp(sstuj.nummberr,nuumbeer);iif(jj=ii) t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n); if(jii) /查询成成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq);sscorre

28、=(stuuj-1.kq)/kqqcs*1000; pprinntf(该生生当前考考勤分数数为 %5.22f,scoore);prrinttf(是否继继续计算算其他学学生考勤勤分数 0 否否 11 是);sccanff(%d,&x);iff(x=1) gooal();/*按照照学号查查找结束束*/priintff(00 返回回主菜单单n);gettchaar();a=ggetccharr();gettchaar();if(a=0) mmainn();流程图:开始输入应到考勤次数kqcs值打开文件将文件内容全部读入结构体数组输入sway值选择查找方式Sway=1?YNSway=2?输入要查找的学

29、号输入要查找的姓名查找学号查找姓名输出该生信息计算考勤分数输出考勤分数结束Lookk()函函数:voidd loook() intt i,j;priintff(背背景颜色色:0:黑、11:蓝、2:绿绿、3:湖蓝色色、4:红、55:紫、6:黄黄、7:白);scaanf(%dd,&i);swiitchh(i)casse 00:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;ccasee

30、1:sysstemm(ccoloor 001);breeak;ccasee 2:sysstemm(ccoloor 002);breeak;ccasee 3:sysstemm(ccoloor 003);breeak;ccasee 4:sysstemm(ccoloor 004);breeak;ccasee 5:sysstemm(ccoloor 005);breeak;ccasee 6:sysstemm(ccoloor 006);breeak;ccasee 7:sysstemm(ccoloor 007);breeak;bbreaak;casse 11:pprinntf(前景景颜色:0:黑黑、1:蓝、

31、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:sysstemm(ccoloor 110);breeak;ccasee 1:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;ccasee 2:sysstemm(ccoloor 112);breeak;ccasee 3:sysstemm(ccoloor 113);breeak;ccasee 4:systtem(coolorr 144);breeak;ccasee 5:sysstemm(ccoloor 115);breeak;ccas

32、ee 6:sysstemm(ccoloor 116);breeak;ccasee 7:sysstemm(ccoloor 117);breeak;bbreaak;casse 22:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:sysstemm(ccoloor 220);breeak;ccasee 1:sysstemm(ccoloor 221);breeak;ccasee 2:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;ccas

33、ee 3:sysstemm(ccoloor 223);breeak;ccasee 4:sysstemm(ccoloor 224);breeak;ccasee 5:sysstemm(ccoloor 225);breeak;ccasee 6:sysstemm(ccoloor 226);breeak;ccasee 7:sysstemm(ccoloor 227);breeak;bbreaak;casse 33:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:sysst

34、emm(ccoloor 330);breeak;ccasee 1:sysstemm(ccoloor 331);breeak;ccasee 2:sysstemm(ccoloor 332);breeak;ccasee 3:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;ccasee 4:sysstemm(ccoloor 334);breaak;ccasee 5:sysstemm(ccoloor 335);breeak;ccasee 6:sysstemm(ccoloor 336);breeak;ccasee 7:sysstemm(ccoloor 337);breeak;

35、bbreaak;casse 44:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:sysstemm(ccoloor 440);breeak;ccasee 1:sysstemm(ccoloor 441);breeak;ccasee 2:sysstemm(ccoloor 442);breeak;ccasee 3:sysstemm(ccoloor 443);breeak;ccasee 4:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;

36、ccasee 5:sysstemm(ccoloor 445);breeak;ccasee 6:sysstemm(ccoloor 446);breeak;ccasee 7:sysstemm(ccoloor 447);breeak;bbreaak;casse 55:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)casse 00:sysstemm(ccoloor 550);breeak;ccasee 1:sysstemm(ccoloor 551);breeak;ccasee 2:s

37、ysstemm(ccoloor 552);breeak;ccasee 3:sysstemm(ccoloor 553);breeak;ccasee 4:sysstemm(ccoloor 554);breeak;ccasee 5:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;ccasee 6:sysstemm(ccoloor 556);breeak;ccasee 7:sysstemm(ccoloor 557);breeak;bbreaak;casse 66:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白)

38、;sscannf(%d,&jj);sswittch(j)ccasee 0:sysstemm(ccoloor 660);breeak;ccasee 1:sysstemm(ccoloor 661);breeak;ccasee 2:sysstemm(ccoloor 662);breeak;ccasee 3:sysstemm(ccoloor 663);breeak;ccasee 4:sysstemm(ccoloor 664);breeak;ccasee 5:sysstemm(ccoloor 665);breeak;ccasee 6:priintff(输输入无效效!背景景和前景景颜色相相同!n);bre

39、eak;ccasee 7:sysstemm(ccoloor 667);breeak;bbreaak;casse 77:pprinntf(前景景颜色:0:黑黑、1:蓝、22:绿、3:湖湖蓝色、4:红红、5:紫、66:黄、7:白白);sscannf(%d,&jj);sswittch(j)ccasee 0:sysstemm(ccoloor 770);breeak;ccasee 1:sysstemm(ccoloor 771);breeak;ccasee 2:sysstemm(ccoloor 772);breeak;ccasee 3:sysstemm(ccoloor 773);breeak;ccasee

40、 4:sysstemm(ccoloor 774);breeak;ccasee 5:sysstemm(ccoloor 775);breeak;ccasee 6:sysstemm(ccoloor 776);breeak;ccasee 7:priintff(输输入无效效!背景景和前景景颜色相相同!n);breeak;bbreaak;priintff(00 返回回主菜单单、1 重新设设置界面面颜色n);gettchaar();a=ggetccharr();gettchaar();if(a=0) maain(); elsse iif(aa=1)loook();elsseprrinttf(输入错错误!n)

41、;三、测试试及调试试(测试试方案、存在的的问题及及解决方方法)测试方案案:按照照每个函函数功能能进行测测试,在在做完每每个函数数对其进进行测试试,主函函数测试试,先将将所有需需要的功功能模块块函数设设置为空空,每个个函数用用一个pprinntf语语句来测测试主函函数。存在问题题:开始始将生日日定义为为字符数数组,当当用sccanff来输入入年月日日时,年年月日之之间用空空格分隔隔,但在在输出时时发现年年月日出出现错误误。分析原因因:用sscannf输入入年月日日时,系系统会把把用来分分隔的空空格当做做字符读读入。解决方法法:将年年月日定定义为整整型,这这样就可可以用sscannf输入入,用空空

42、格隔开开。存在问题题2:在在查找数数据时,需需要先将将所有数数据读入入一个结结构体数数组,在在读取后后未关闭闭文件,执执行查找找时查找找不到相相关信息息。分析原因因:再利利用foor循环环读取全全部文件件内容后后,文件件指针将将会移至至文件末末尾,这这样再执执行查找找时就会会从文件件末尾开开始,显显然不符符合要求求,所以以会出现现错误。解决方法法:在读读取完数数据后先先关闭文文件,在在查找时时再次打打开文件件,这时时文件指指针就会会指向文文件开头头。存在问题题3:再再多个使使用geetchhar或或者geets输输入的时时候,会会出现直直接跳过过输入的的情况。分析原因因:在使使用geetchh

43、ar或或者geets输输入的时时候,系系统会将将前一步步用来确确认执行行的回车车当成字字符读入入,导致致跳过该该步输入入。解决方法法:再ggetccharr或者ggetss前面加加上geetchhar()语句句,读掉掉回车,下下面的ggetccharr或者ggetss就可以以正常输输入。4. 存存在的问问题:ssysttem(“collor atttr”)命令令中,aattrr不能是是变量!解决方方法:使使用swwitcch语句句一个一一个写。四、小结结通过编写写该程序序,熟悉悉了C语语言的基基本语法法,选择择,循环环等结构构,深入入练习了了函数的的调用方方法,和和文件的的读写方方法,熟熟悉了

44、结结构体的的使用,更更加深化化了面向向过程语语言思想想,和一一些基本本算法。通过对程程序的后后期调试试,熟悉悉了C常常见错误误,锻炼炼了思维维的严密密性,和和完备性性。通过对程程序的注注释和画画流程图图,形成成了一套套自己编编程的风风格,和和清晰地地思路,使使思维更更加条理理化,清清晰化。附件:主主要源程程序代码码(需打打印)#inccludde#inccludde#inccluddeFILEE *ffp; charr a; floaat kkqcss=0; struuct stuudennt chaar nnamee100;chaar nnumbber11;chaar ssex;intt y

45、eear;intt moonthh;intt daay;intt kqq;stuu1000; /定义义储存学学生信息息的结构构体数组组/*主 函函 数 开 始始*voidd maain()voiid llookk(); /系系统界面面颜色这这只函数数voiid rrecoord(); /录录入数据据函数voiid aamennd(); /修修改数据据函数voiid ssearrch(); /查查询数据据函数voiid ggoall(); /计计算总评评函数chaar iitemm;priintff( nn);priintff( n);priintff( 学 生 考 勤 管 理 系 统 n);p

46、riintff( n);priintff( 刘刘玉柱 河南科科技学院院 农农学1222 n);priintff( n);priintff( nn);priintff( n);priintff( 1.学生信信息及考考勤情况况录入 n);priintff( n);priintff( 2.学生信信息及考考勤情况况修改 n);priintff( n);priintff( 3.学生信信息及考考勤情况况查询 n);priintff( n);priintff( 4.学生考考勤总评评分数查查询 n);priintff( n);priintff( 5.系统界界面设置置 n);priintff( n);priin

47、tff( nn); priintff(n);priintff( 请选选择您需需要的操操作nn);scaanf(%cc,&iteem);swiitchh(ittem)caase 5: llookk();breeak;caase 1: rrecoord();bbreaak;caase 2: aamennd();brreakk;caase 3: ssearrch();bbreaak;caase 4: ggoall();breeak; /*主 函函 数 结 束束*/*录入入数据函函数内容容开始*voidd reecorrd()intt i,j=00,jxx=1;priintff( *学 生生 基 本

48、信信 息 录 入入*n);if(fpp=foopenn(ddatee.txxt,w)=NUULL)prrinttf(文件打打开失败败n);exxit(0);forr(i=0;jjx=1;ii+) /输入入信息循循环 foor(;j=0;) /输输入确认认循环ggetccharr();pprinntf(请输输入第%d个学学生的姓姓名 ,i+1);ggetss(sttuii.nnamee);pprinntf(请输输入第%d个学学生的学学号 ,i+1);ggetss(sttuii.nnumbber);pprinntf(请输输入第%d个学学生的性性别(男男:m 女:ff) ,i+1);sstui.se

49、xx=geetchhar();pprinntf(请输输入第%d个学学生的生生日(格格式:年年 月 日) ,ii+1);sscannf(%d%d%dd,&stuui.yeear,&sttuii.mmontth,&stuui.daay);pprinntf(请输输入第%d个学学生的当当前考勤勤次数 ,ii+1);sscannf(%d,&sstui.kq);pprinntf(您输输入的信信息为 姓名 %s 学号 %s 性别 %c 生日 %d年年%d月月%d日日n 0 重输 1 确确认,stuui.naame,stuui.nuumbeer,sstui.sexx,sttuii.yyearr,sttuii.

50、mmontth,sstui.dayy);sscannf(%d,&jj); /输输入确认认j=0;iff(fwwritte(&stuui,siizeoof(sstruuct stuudennt),1,ffp)!=1) prrinttf(文件写写入错误误n); /写写入文件件prrinttf( 是否继继续输入入下一个个学生信信息 00 终止止 11 继续续n);sccanff(%d,&jxx); /继续续输入选选择fcllosee(fpp);priintff(00 返回回主菜单单n);gettchaar();a=ggetccharr();gettchaar();if(a=0) mmainn();

51、/返回主主菜单/*录入入数据函函数内容容结束*/*修改改数据函函数内容容开始*voidd ammendd() intt i=0,jj=0,swaay,tt,x;chaar nnamee100,nnumbber10;priintff( *学学 生 考 勤勤 修 改*n);if(fpp=foopenn(ddatee.txxt,r)=NUULL) /将文件件内容读读入内存存prrinttf(文件打打开失败败n);exxit(0);forr(i=0;ffeoff(fpp)=0;ii+) frreadd(&sstui,sizzeoff(sttrucct sstuddentt),11,fpp); /读读取

52、文件件内容fcllosee(fpp); /关关闭文件件priintff(选选择查找找方式 1 按按照姓名名查找 2 按照学学号查找找);scaanf(%dd,&swaay);/*按照照姓名查查找开始始*/if(swaay=1)prrinttf(请输入入需要修修改学生生的姓名名 );sccanff(%s,namme);foor(jj=0;t!=0;jj+)tt=sttrcmmp(sstuj.namme,nnamee);iif(jj=ii)t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n);iff(ji) /查询询成功pprinntf(您查查找的学学生信息息如下n 姓姓名

53、 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq);pprinntf(是否否修改该该生考勤勤信息 0 否 1 是是); /选择是是否修改改考勤sscannf(%d,&xx); /输输入选择择变量值值iif(xx=11)priintff(请请输入新新的考勤勤值 );scaanf(%dd,&stuuj-1.kq); /输入新新的考勤勤值if(fpp

54、=foopenn(ddatee.txxt,w)=NUULL) /以只只写方式式打开文文件priintff(文文件打开开失败n);exiit(00);forr(j=0;jji;j+) iif(ffwriite(&sttujj,ssizeeof(strructt sttudeent),1,fp)!=11) pprinntf(文件件写入错错误nn); /写入文文件fcllosee(fpp); /关关闭文件件prrinttf(是否继继续修改改其他学学生考勤勤 0 否 1 是是);sccanff(%d,&x);iff(x=1) ammendd();/*按照照姓名查查找结束束*/*按照照学号查查找开始始*

55、/if(swaay=2)prrinttf(请输入入需要修修改学生生的学号号 );sccanff(%s,nummberr);foor(jj=0;t!=0;jj+)tt=sttrcmmp(sstuj.nummberr,nuumbeer);iif(jj=ii)t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n);iff(ji) /查询询成功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,s

56、stuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq);pprinntf(是否否修改该该生考勤勤信息 0 否 1 是是); /选择是是否修改改考勤sscannf(%d,&xx); /输输入选择择变量值值iif(xx=11)priintff(请请输入新新的考勤勤值 );scaanf(%dd,&stuuj-1.kq); /输入新新的考勤勤值if(fpp=foopenn(ddatee.txxt,w)=NUULL) /以只只写方式式打开文文件priintff(文文件打开开失败n);exiit(00);forr(j=0;jji;j+) ii

57、f(ffwriite(&sttujj,ssizeeof(strructt sttudeent),1,fp)!=11) pprinntf(文件件写入错错误nn); /写入文文件fcllosee(fpp); /关关闭文件件prrinttf(是否继继续修改改其他学学生考勤勤 0 否 1 是是);sccanff(%d,&x);iff(x=1) ammendd();/*按照照学号查查找结束束*/priintff(00 返回回主菜单单n);gettchaar();a=ggetccharr();gettchaar();if(a=0) mmainn();/*修改改数据函函数内容容结束*/*查询询数据函函数内容

58、容开始*voiid ssearrch() innt ii=0,j=00,swway,t,xx;chhar namme110,nummberr100;prrinttf( *学 生 信信 息 查 询询*n);iff(ffp=ffopeen(datte.ttxt,rr)=NNULLL) /将将文件内内容读入入内存pprinntf(文件件打开失失败nn);eexitt(0);foor(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /读取文文件内容容fcclosse(ffp); /关闭文文件prrint

59、tf(选择查查找方式式 1 按照姓姓名查找找 22 按照照学号查查找);sccanff(%d,&swway);/*按照照姓名查查找开始始*/iff(swway=1)pprinntf(请输输入需要要修改学学生的姓姓名 );sscannf(%s,naame);ffor(j=00;t!=0;j+)t=sstrccmp(stuuj.naame,namme);if(j=i)t=00;priintff(未未找到您您所查询询的数据据,请重重新输入入n);iif(jji) /查查询成功功pprinntf(您查查找的学学生信息息如下n 姓姓名 %s 学学号 %s 性性别 %c 生生日 %d年%d月%d日 当前考

60、考勤次数数 %ddn,sttujj-1.naame,stuuj-1.nummberr,sttujj-1.seex,sstuj-11.yyearr,sttujj-1.moonthh,sttujj-1.daay,sstuj-11.kkq);prrinttf(是否继继续查询询其他学学生信息息 0 否 1 是是);sccanff(%d,&x);iff(x=1) seearcch();/*按照照姓名查查找结束束*/*按照照学号查查找开始始*/if(swaay=2)prrinttf(请输入入需要修修改学生生的学号号 );sccanff(%s,nummberr);foor(jj=0;t!=0;jj+)tt=

温馨提示

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

评论

0/150

提交评论