




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE PAGE 55C語(yǔ)言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告設(shè)計(jì)題目:學(xué)生考考勤系統(tǒng)統(tǒng)設(shè)計(jì)專 業(yè)微微電子科科學(xué)與工工程班 級(jí)微微電1331 學(xué) 生趙趙 楊 怡指導(dǎo)教師 年 學(xué)期設(shè)計(jì)任務(wù):C語(yǔ)言言課程設(shè)設(shè)計(jì)任務(wù)務(wù)書(shū)100題目:學(xué)生生考勤系系統(tǒng)設(shè)計(jì)計(jì)功能:學(xué)生生考勤系系統(tǒng)應(yīng)包包含各班班學(xué)生的的全部信信息。每每個(gè)學(xué)生生是一條條記錄,包包括姓名名、性別別、學(xué)號(hào)號(hào)、日期期、節(jié)次次、出勤勤情況等等信息。本本系統(tǒng)可可以模擬擬考勤過(guò)過(guò)程、記記錄考勤勤結(jié)果,并并能在課課程結(jié)束束后按照照設(shè)定的的考勤評(píng)評(píng)分標(biāo)準(zhǔn)準(zhǔn)自動(dòng)給給出每個(gè)個(gè)學(xué)生的的考勤分分?jǐn)?shù)。要求:1、用用C語(yǔ)言言實(shí)現(xiàn)程程序設(shè)計(jì)計(jì);2、利用結(jié)結(jié)構(gòu)體進(jìn)進(jìn)行相關(guān)關(guān)信息處處理
2、;3、系統(tǒng)的的各個(gè)功功能模塊塊要求用用函數(shù)的的形式實(shí)實(shí)現(xiàn);4、界面友友好(良良好的人人機(jī)交互互),程程序加必必要的注注釋。平時(shí)成績(jī):驗(yàn)收答辯成成績(jī):設(shè)計(jì)報(bào)告成成績(jī):總評(píng)成績(jī):指導(dǎo)教師:一、總體設(shè)設(shè)計(jì)1程序的的總體設(shè)設(shè)計(jì)確定界面面,使用用戶可選選擇操作作項(xiàng)目(錄錄入,修修改,查查詢,評(píng)評(píng)分)。錄入功能能:使用用結(jié)構(gòu)體體,要求求用戶輸輸入姓名名、性別別、學(xué)號(hào)號(hào)、日期期、節(jié)次次、當(dāng)前前出勤情情況等信信息,并并寫(xiě)入文文件。 修改功能能:使用用戶輸入入學(xué)號(hào),姓姓名其中中一項(xiàng)可可以修改改考勤其其信息。對(duì)對(duì)于修改改功能的的實(shí)現(xiàn),是是先將所所有文件件內(nèi)容讀讀入到內(nèi)內(nèi)存中,然然后修改改考勤值值,最后后再重新新覆
3、蓋寫(xiě)寫(xiě)入文件件。查詢模塊塊:使用用字符串串比較函函數(shù),利利用循環(huán)環(huán)找到對(duì)對(duì)應(yīng)結(jié)構(gòu)構(gòu)體數(shù)組組元素,然然后輸出出需要信信息。對(duì)對(duì)于查詢?cè)児δ艿牡膶?shí)現(xiàn),同同修改,是是先將所所有文件件內(nèi)容讀讀入到內(nèi)內(nèi)存中,然然后查找找到其中中某項(xiàng),最最后輸出出到屏幕幕。評(píng)分模塊塊:系統(tǒng)統(tǒng)根據(jù)總總的應(yīng)道道考勤數(shù)數(shù)按照百百分制,求求出每個(gè)個(gè)學(xué)生的的分?jǐn)?shù),并并輸出到到屏幕。2. 數(shù)據(jù)據(jù)結(jié)構(gòu)學(xué)生信息用用結(jié)構(gòu)體體記錄,包包括姓名名(字符符數(shù)組)、性性別(字字符型)、日日期(年年月日三三個(gè)字符符數(shù)組)、節(jié)節(jié)次(整整型)、出出情況(整整型)。3. 函數(shù)數(shù)原型聲聲明 voiid mmainn() /主主函數(shù)void inpput()
4、; /錄錄入數(shù)據(jù)據(jù)函數(shù)void chaangee(); /修改改數(shù)據(jù)函函數(shù)void seaarchh(); /查詢數(shù)數(shù)據(jù)函數(shù)數(shù)void evaaluaate(); /計(jì)算算總評(píng)函函數(shù)二、詳細(xì)設(shè)設(shè)計(jì)1.maiin( )函數(shù)數(shù)void maiin()void inpput(); /錄錄入數(shù)據(jù)據(jù)函數(shù)void chaangee(); /修改改數(shù)據(jù)函函數(shù)void seaarchh(); /查詢數(shù)數(shù)據(jù)函數(shù)數(shù)void evaaluaate(); /計(jì)算算總評(píng)函函數(shù) ccharr ittem; ssysttem(coolorr 344);printtf( n);printtf( n);printtf( 學(xué) 生
5、 考 勤 管 理 系 統(tǒng) n);printtf( n);printtf( BY 朱勝佳佳 n);printtf( n);printtf( n);printtf( n);printtf( 1.學(xué)生信信息及考考勤情況況錄入 n);printtf( n);printtf( 2.學(xué)生信信息及考考勤情況況修改 n);printtf( n);printtf( 3.學(xué)生信信息及考考勤情況況查詢 n);printtf( n);printtf( 4.學(xué)生考考勤總評(píng)評(píng)分?jǐn)?shù)查查詢 n);printtf( n);printtf( n); /用戶戶界面printtf(n);printtf( 請(qǐng)請(qǐng)選擇您您需要的的操作n)
6、;scanff(%c,&ittem); sswittch(iteem) caase 1: iinpuut();brreakk; caase 2: cchannge();bbreaak; caase 3: ssearrch();bbreaak; caase 4: eevalluatte();brreakk; /實(shí)現(xiàn)功功能選擇擇流程圖:開(kāi) 始開(kāi) 始1breakgoal()search()amend()record()432switch(item) switch(item)switch(item)輸出界面1breakgoal()search()amend()record()432switch(ite
7、m) switch(item)switch(item)輸出界面結(jié)束結(jié)束2.inpput() 函函數(shù)void inpput()int ii,j=0,jjx=11;printtf( *學(xué) 生 基基 本 信 息息 錄 入*n);if(ffp=ffopeen(datte.ttxt,ww)=NNULLL)printtf(文件打打開(kāi)失敗敗n); eexitt(0);for(ii=0;jx=1;i+) /輸輸入信息息循環(huán) ffor(;j=0;) /輸入確確認(rèn)循環(huán)環(huán)getchhar();printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的姓名名 ,i+11);gets(stuui.naame);printtf(請(qǐng)輸入入
8、第%dd個(gè)學(xué)生生的學(xué)號(hào)號(hào) ,i+11);gets(stuui.nuumbeer);printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的性別別(男:m 女女:f) ,i+11);stuii.ssex=gettchaar();printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的生日日(格式式:年 月 日日) ,i+1);scanff(%d%dd%d,&sstui.yeaar,&stuui.moonthh,&sstui.dayy); priintff(請(qǐng)請(qǐng)輸入第第%d個(gè)個(gè)學(xué)生的的當(dāng)前考考勤次數(shù)數(shù) ,i+11);scanff(%d,&sttuii.kkq);printtf(您輸入入的信息息為 姓姓名 %s 學(xué)學(xué)號(hào) %s
9、性性別 %c 生生日 %d年%d月%d日n 0 重重輸 11 確認(rèn)認(rèn),sstui.namme,sstui.nummberr,sttuii.ssex,stuui.yeear,stuui.moonthh,sttuii.dday);scanff(%d,&j); /輸入入確認(rèn) jj=0; iif(ffwriite(&sttuii,ssizeeof(strructt sttudeent),1,fp)!=11) pprinntf(文件件寫(xiě)入錯(cuò)錯(cuò)誤nn); /寫(xiě)入文文件printtf( 是否繼繼續(xù)輸入入下一個(gè)個(gè)學(xué)生信信息 00 終止止 11 繼續(xù)續(xù)n);scanff(%d,&jxx); /繼續(xù)續(xù)輸入選選擇f
10、closse(ffp); pprinntf(0 返回主主菜單n);getchhar();a=gettchaar();getchhar();if(a=00) maiin(); /返回回主菜單單流程圖:開(kāi)始開(kāi)始0=j0=j打開(kāi)文件打開(kāi)文件1=jx1=jx0=i0=ijx=1?jx=1?YYj=0?j=0?Y輸入i+1個(gè)學(xué)生信息生信息輸入i+1個(gè)學(xué)生信息生信息NN輸入j值選擇是否確認(rèn)輸入j值選擇是否確認(rèn)寫(xiě)入文件寫(xiě)入文件i+1=ii+1=i輸入jx值選擇是否繼續(xù)輸入jx值選擇是否繼續(xù)結(jié)束結(jié)束3.chaangee()函函數(shù)void chaangee() iint i=00,j=0,sswayy,t,x;
11、 ccharr naame10,nuumbeer110;printtf( *學(xué) 生生 考 勤 修修 改*nn); iif(fp=foppen(daate.txtt,r)=NULLL) /將將文件內(nèi)內(nèi)容讀入入內(nèi)存printtf(文件打打開(kāi)失敗敗n); eexitt(0);for(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /讀取文文件內(nèi)容容fclosse(ffp); /關(guān)閉文文件printtf(選擇查查找方式式 1 按照姓姓名查找找 22 按照照學(xué)號(hào)查查找);scanff(%d,&swway)
12、; /*按按照姓名名查找開(kāi)開(kāi)始*/if(swway=1)printtf(請(qǐng)輸入入需要修修改學(xué)生生的姓名名 );/priintff(ii=%dd,ii);scanff(%s,namme);for(jj=0;t!=0;jj+) t=strrcmpp(sttujj.nnamee,naame);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-
13、11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq); prrinttf(是否修修改該生生考勤信信息 0 否否 11 是); /選選擇是否否修改考考勤 sscannf(%d,&xx); /輸輸入選擇擇變量值值if(x=1)printtf(請(qǐng)輸入入新的考考勤值 );scanff(%d,&sttujj-1.kqq); /輸入入新的考考勤值 iif(fp=foppen(daate.txtt,w)=NULLL) /以只寫(xiě)寫(xiě)方式打打開(kāi)文件件 pprinntf(文件件打開(kāi)失失敗nn); exiit
14、(00); ffor(j=00;ji;jj+) iff(fwwritte(&stuuj,siizeoof(sstruuct stuudennt),1,ffp)!=1) prrinttf(文件寫(xiě)寫(xiě)入錯(cuò)誤誤n); /寫(xiě)寫(xiě)入文件件 ffcloose(fp); /關(guān)閉閉文件printtf(是否繼繼續(xù)修改改其他學(xué)學(xué)生考勤勤 0 否 1 是是);scanff(%d,&x);if(x=1) chhangge();/*按照姓姓名查找找結(jié)束*/ /*按按照學(xué)號(hào)號(hào)查找開(kāi)開(kāi)始*/if(swway=2)printtf(請(qǐng)輸入入需要修修改學(xué)生生的學(xué)號(hào)號(hào) );/priintff(ii=%dd,ii);scanff(%s,
15、nummberr);for(jj=0;t!=0;jj+) t=strrcmpp(sttujj.nnumbber,nummberr);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.k
16、qq); prrinttf(是否修修改該生生考勤信信息 0 否否 11 是); /選選擇是否否修改考考勤 sscannf(%d,&xx); /輸輸入選擇擇變量值值if(x=1)printtf(請(qǐng)輸入入新的考考勤值 );scanff(%d,&sttujj-1.kqq); /輸入入新的考考勤值 iif(fp=foppen(daate.txtt,w)=NULLL) /以只寫(xiě)寫(xiě)方式打打開(kāi)文件件 pprinntf(文件件打開(kāi)失失敗nn); exiit(00); ffor(j=00;ji;jj+) iff(fwwritte(&stuuj,siizeoof(sstruuct stuudennt),1,ffp
17、)!=1) prrinttf(文件寫(xiě)寫(xiě)入錯(cuò)誤誤n); /寫(xiě)寫(xiě)入文件件 ffcloose(fp); /關(guān)閉閉文件printtf(是否繼繼續(xù)修改改其他學(xué)學(xué)生考勤勤 0 否 1 是是);scanff(%d,&x);if(x=1) chhangge();/*按照學(xué)學(xué)號(hào)查找找結(jié)束*/printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00) maiin();開(kāi)始開(kāi)始打開(kāi)文件打開(kāi)文件將文件內(nèi)容全部讀入結(jié)構(gòu)體數(shù)組將文件內(nèi)容全部讀入結(jié)構(gòu)體數(shù)組輸入sway值選擇查找方式輸入sway值選擇查找方式Sway=1?Sway=1?NNSway=2?
18、YSway=2?Y輸入要查找的學(xué)號(hào)輸入要查找的姓名輸入要查找的學(xué)號(hào)輸入要查找的姓名N查找學(xué)號(hào)查找姓名N查找學(xué)號(hào)查找姓名輸入X值選擇是否修改考勤輸入X值選擇是否修改考勤X=1?X=1?YY輸入新的考勤值輸入新的考勤值寫(xiě)入文件寫(xiě)入文件結(jié)束結(jié)束4. seearcch()函數(shù)void seaarchh() iint i=00,j=0,sswayy,t,x; ccharr naame10,nuumbeer110;printtf( *學(xué) 生 信信 息 查 詢?cè)?n); iif(fp=foppen(daate.txtt,r)=NULLL) /將文件件內(nèi)容讀讀入內(nèi)存存printtf(文件打打開(kāi)失敗敗n); e
19、exitt(0);for(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /讀取文文件內(nèi)容容fclosse(ffp); /關(guān)閉文文件printtf(選擇查查找方式式 1 按照姓姓名查找找 22 按照照學(xué)號(hào)查查找);scanff(%d,&swway); /*按按照姓名名查找開(kāi)開(kāi)始*/if(swway=1)printtf(請(qǐng)輸入入需要修修改學(xué)生生的姓名名 );/priintff(ii=%dd,ii);scanff(%s,namme);for(jj=0;t!=0;jj+) t=strrcmpp(stt
20、ujj.nnamee,naame);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq); printtf(是否繼繼續(xù)查詢?cè)兤渌麑W(xué)學(xué)生信息息 0 否 1 是是);scanff(%
21、d,&x);if(x=1) seearcch();/*按照姓姓名查找找結(jié)束*/ /*按按照學(xué)號(hào)號(hào)查找開(kāi)開(kāi)始*/if(swway=2)printtf(請(qǐng)輸入入需要修修改學(xué)生生的學(xué)號(hào)號(hào) );/priintff(ii=%dd,ii);scanff(%s,nummberr);for(jj=0;t!=0;jj+) t=strrcmpp(sttujj.nnumbber,nummberr);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日
22、%dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq);printtf(是否繼繼續(xù)查詢?cè)兤渌麑W(xué)學(xué)生信息息 0 否 1 是是);scanff(%d,&x);if(x=1) seearcch();/*按照學(xué)學(xué)號(hào)查找找結(jié)束*/printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00) maiin(); 流流程圖:開(kāi)始開(kāi)始打開(kāi)文件打開(kāi)
23、文件將文件內(nèi)容全部讀入結(jié)構(gòu)體數(shù)組將文件內(nèi)容全部讀入結(jié)構(gòu)體數(shù)組輸入sway值選擇查找方式輸入sway值選擇查找方式Sway=1?Sway=1?NNSway=2?YSway=2?Y輸入要查找的學(xué)號(hào)輸入要查找的姓名輸入要查找的學(xué)號(hào)輸入要查找的姓名查找學(xué)號(hào)查找姓名查找學(xué)號(hào)查找姓名輸出該生信息輸出該生信息5.evaaluaate()函數(shù)數(shù)void evaaluaate() iint i=00,j=0,sswayy,t,x; ffloaat sscorre; ccharr naame10,nuumbeer110;printtf( *學(xué) 生 考考 勤 分 數(shù)數(shù) 計(jì) 算*n);if(kqqcs=0)print
24、tf(請(qǐng)輸入入應(yīng)到考考勤總數(shù)數(shù) ); /請(qǐng)輸入入應(yīng)到考考勤總數(shù)數(shù)scanff(%f,&kqqcs); iif(fp=foppen(daate.txtt,r)=NULLL) /將文文件內(nèi)容容讀入內(nèi)內(nèi)存printtf(文件打打開(kāi)失敗敗n); eexitt(0);for(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /讀取文文件內(nèi)容容fclosse(ffp); /關(guān)閉文文件printtf(選擇查查找方式式 1 按照姓姓名查找找 22 按照照學(xué)號(hào)查查找);scanff(%d,&swway); /*按按
25、照姓名名查找開(kāi)開(kāi)始*/if(swway=1)printtf(請(qǐng)輸入入需要修修改學(xué)生生的姓名名 );/priintff(ii=%dd,ii);scanff(%s,namme);for(jj=0;t!=0;jj+) t=strrcmpp(sttujj.nnamee,naame);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnu
26、mbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq); sscorre=(stuuj-1.kq)/kqqcs*1000; pprinntf(該生生當(dāng)前考考勤分?jǐn)?shù)數(shù)為 %5.22f,scoore);printtf(是否繼繼續(xù)計(jì)算算其他學(xué)學(xué)生考勤勤分?jǐn)?shù) 0 否否 11 是);scanff(%d,&x);if(x=1) evvaluuatee();/*按照姓姓名查找找結(jié)束*/ /*按按照學(xué)號(hào)號(hào)查找開(kāi)開(kāi)始*/if(swway=2)printtf(請(qǐng)輸入入需要修修改學(xué)生生的學(xué)號(hào)號(hào) );/priintff(i
27、i=%dd,ii);scanff(%s,nummberr);for(jj=0;t!=0;jj+) t=strrcmpp(sttujj.nnumbber,nummberr);if(j=i) t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stu
28、uj-1.dayy,sttujj-1.kqq);scoree=(sstuj-11.kkq)/kqccs*1100; pprinntf(該生生當(dāng)前考考勤分?jǐn)?shù)數(shù)為 %5.22f,scoore);printtf(是否繼繼續(xù)計(jì)算算其他學(xué)學(xué)生考勤勤分?jǐn)?shù) 0 否否 11 是);scanff(%d,&x);if(x=1) evvaluuatee();/*按照學(xué)學(xué)號(hào)查找找結(jié)束*/printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00) maiin();流程圖:開(kāi)始開(kāi)始輸入應(yīng)到考勤次數(shù)輸入應(yīng)到考勤次數(shù)kqcs值打開(kāi)文件打開(kāi)文件將文件內(nèi)容全
29、部讀入結(jié)構(gòu)體數(shù)組將文件內(nèi)容全部讀入結(jié)構(gòu)體數(shù)組輸入sway值選擇查找方式輸入sway值選擇查找方式Sway=1?Sway=1?YNYNSway=2?Sway=2?輸入要查找的學(xué)號(hào)輸入要查找的姓名輸入要查找的學(xué)號(hào)輸入要查找的姓名查找學(xué)號(hào)查找姓名查找學(xué)號(hào)查找姓名輸出該生信息輸出該生信息計(jì)算考勤分?jǐn)?shù)計(jì)算考勤分?jǐn)?shù)輸出考勤分?jǐn)?shù)輸出考勤分?jǐn)?shù)結(jié)束結(jié)束三、測(cè)試及及調(diào)試(測(cè)測(cè)試方案案、存在在的問(wèn)題題及解決決方法)測(cè)試方案:按照每每個(gè)函數(shù)數(shù)功能進(jìn)進(jìn)行測(cè)試試,在做做完每個(gè)個(gè)函數(shù)對(duì)對(duì)其進(jìn)行行測(cè)試,主主函數(shù)測(cè)測(cè)試,先先將所有有需要的的功能模模塊函數(shù)數(shù)設(shè)置為為空,每每個(gè)函數(shù)數(shù)用一個(gè)個(gè)priintff語(yǔ)句來(lái)來(lái)測(cè)試主主函數(shù)。存
30、在問(wèn)題:開(kāi)始將將生日定定義為字字符數(shù)組組,當(dāng)用用scaanf來(lái)來(lái)輸入年年月日時(shí)時(shí),年月月日之間間用空格格分隔,但但在輸出出時(shí)發(fā)現(xiàn)現(xiàn)年月日日出現(xiàn)錯(cuò)錯(cuò)誤。分析原因:用sccanff輸入年年月日時(shí)時(shí),系統(tǒng)統(tǒng)會(huì)把用用來(lái)分隔隔的空格格當(dāng)做字字符讀入入。解決方法:將年月月日定義義為整型型,這樣樣就可以以用sccanff輸入,用用空格隔隔開(kāi)。存在問(wèn)題22:在查查找數(shù)據(jù)據(jù)時(shí),需需要先將將所有數(shù)數(shù)據(jù)讀入入一個(gè)結(jié)結(jié)構(gòu)體數(shù)數(shù)組,在在讀取后后未關(guān)閉閉文件,執(zhí)執(zhí)行查找找時(shí)查找找不到相相關(guān)信息息。分析原因:再利用用forr循環(huán)讀讀取全部部文件內(nèi)內(nèi)容后,文文件指針針將會(huì)移移至文件件末尾,這這樣再執(zhí)執(zhí)行查找找時(shí)就會(huì)會(huì)從文件件
31、末尾開(kāi)開(kāi)始,顯顯然不符符合要求求,所以以會(huì)出現(xiàn)現(xiàn)錯(cuò)誤。解決方法:在讀取取完數(shù)據(jù)據(jù)后先關(guān)關(guān)閉文件件,在查查找時(shí)再再次打開(kāi)開(kāi)文件,這這時(shí)文件件指針就就會(huì)指向向文件開(kāi)開(kāi)頭。存在問(wèn)題33:再多多個(gè)使用用gettchaar或者者getts輸入入的時(shí)候候,會(huì)出出現(xiàn)直接接跳過(guò)輸輸入的情情況。分析原因:在使用用gettchaar或者者getts輸入入的時(shí)候候,系統(tǒng)統(tǒng)會(huì)將前前一步用用來(lái)確認(rèn)認(rèn)執(zhí)行的的回車(chē)當(dāng)當(dāng)成字符符讀入,導(dǎo)導(dǎo)致跳過(guò)過(guò)該步輸輸入。解決方法:再geetchhar或或者geets前前面加上上gettchaar()語(yǔ)句,讀讀掉回車(chē)車(chē),下面面的geetchhar或或者geets就就可以正正常輸入入。四、小
32、結(jié)通過(guò)編寫(xiě)該該程序,熟熟悉了CC語(yǔ)言的的基本語(yǔ)語(yǔ)法,選選擇,循循環(huán)等結(jié)結(jié)構(gòu),深深入練習(xí)習(xí)了函數(shù)數(shù)的調(diào)用用方法,和和文件的的讀寫(xiě)方方法,熟熟悉了結(jié)結(jié)構(gòu)體的的使用,更更加深化化了面向向過(guò)程語(yǔ)語(yǔ)言思想想,和一一些基本本算法。通過(guò)對(duì)程序序的后期期調(diào)試,熟熟悉了CC常見(jiàn)錯(cuò)錯(cuò)誤,鍛鍛煉了思思維的嚴(yán)嚴(yán)密性,和和完備性性。通過(guò)對(duì)程序序的注釋釋和畫(huà)流流程圖,形形成了一一套自己己編程的的風(fēng)格,和和清晰地地思路,使使思維更更加條理理化,清清晰化。附件:主要要源程序序代碼(需需打?。?inclludee#inclludee#inclludeeFILE *fpp; /定義文文件char a; /返回回選擇變變量floa
33、tt kqqcs=0; /應(yīng)應(yīng)到考勤勤次數(shù)變變量strucct sstuddentt chaar nnamee100;char nummberr111;char sexx;int yyearr;int mmontth;int dday;int kkq;stu1000; /定義儲(chǔ)儲(chǔ)存學(xué)生生信息的的結(jié)構(gòu)體體數(shù)組/*主主 函 數(shù) 開(kāi)開(kāi) 始*void maiin()void inpput(); /錄錄入數(shù)據(jù)據(jù)函數(shù)void chaangee(); /修改改數(shù)據(jù)函函數(shù)void seaarchh(); /查詢數(shù)數(shù)據(jù)函數(shù)數(shù)void evaaluaate(); /計(jì)算算總評(píng)函函數(shù)char iteem;syste
34、em(collor 34);printtf( n);printtf( n);printtf( 學(xué) 生 考 勤 管 理 系 統(tǒng) n);printtf( n);printtf( BY 朱勝佳佳 n);printtf( n);printtf( n);printtf( n);printtf( 1.學(xué)生信信息及考考勤情況況錄入 n);printtf( n);printtf( 2.學(xué)生信信息及考考勤情況況修改 n);printtf( n);printtf( 3.學(xué)生信信息及考考勤情況況查詢 n);printtf( n);printtf( 4.學(xué)生考考勤總評(píng)評(píng)分?jǐn)?shù)查查詢 n);printtf( n);pri
35、nttf( n); /用戶界界面printtf(n);printtf( 請(qǐng)請(qǐng)選擇您您需要的的操作n);scanff(%c,&ittem);switcch(iitemm)case 1: iinpuut();brreakk;case 2: cchannge();bbreaak;case 3: ssearrch();bbreaak;case 4: eevalluatte();brreakk; /實(shí)現(xiàn)功功能選擇擇/*主主 函 數(shù) 結(jié)結(jié) 束*/*錄入數(shù)數(shù)據(jù)函數(shù)數(shù)內(nèi)容開(kāi)開(kāi)始*void reccordd()int ii,j=0,jjx=11;printtf( *學(xué) 生 基基 本 信 息息 錄 入*n);if
36、(ffp=ffopeen(datte.ttxt,ww)=NNULLL)printtf(文件打打開(kāi)失敗敗n);exit(0);for(ii=0;jx=1;i+) /輸輸入信息息循環(huán) ffor(;j=0;) /輸入確確認(rèn)循環(huán)環(huán)getchhar();printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的姓名名 ,i+11);gets(stuui.naame);printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的學(xué)號(hào)號(hào) ,i+11);gets(stuui.nuumbeer);printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的性別別(男:m 女女:f) ,i+11);stuii.ssex=gettchaar();printtf(請(qǐng)輸
37、入入第%dd個(gè)學(xué)生生的生日日(格式式:年 月 日日) ,i+1);scanff(%d%dd%d,&sstui.yeaar,&stuui.moonthh,&sstui.dayy);printtf(請(qǐng)輸入入第%dd個(gè)學(xué)生生的當(dāng)前前考勤次次數(shù) ,i+1);scanff(%d,&sttuii.kkq);printtf(您輸入入的信息息為 姓姓名 %s 學(xué)學(xué)號(hào) %s 性性別 %c 生生日 %d年%d月%d日n 0 重重輸 11 確認(rèn)認(rèn),sstui.namme,sstui.nummberr,sttuii.ssex,stuui.yeear,stuui.moonthh,sttuii.dday);scanff(
38、%d,&j); /輸入入確認(rèn)j=0;if(fwwritte(&stuui,siizeoof(sstruuct stuudennt),1,ffp)!=1) prrinttf(文件寫(xiě)寫(xiě)入錯(cuò)誤誤n); /寫(xiě)寫(xiě)入文件件printtf( 是否繼繼續(xù)輸入入下一個(gè)個(gè)學(xué)生信信息 00 終止止 11 繼續(xù)續(xù)n);scanff(%d,&jxx); /繼續(xù)續(xù)輸入選選擇fclosse(ffp);printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00) maiin(); /返回回主菜單單/*錄入數(shù)數(shù)據(jù)函數(shù)數(shù)內(nèi)容結(jié)結(jié)束*/*修改數(shù)數(shù)據(jù)函數(shù)數(shù)內(nèi)容開(kāi)開(kāi)
39、始*void chaangee() iint i=00,j=0,sswayy,t,x;char namme110,nummberr100;printtf( *學(xué) 生生 考 勤 修修 改*nn);if(ffp=ffopeen(datte.ttxt,rr)=NNULLL) /將文文件內(nèi)容容讀入內(nèi)內(nèi)存printtf(文件打打開(kāi)失敗敗n);exit(0);for(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /讀取文文件內(nèi)容容fclosse(ffp); /關(guān)閉文文件printtf(選擇查查找方式式 1
40、 按照姓姓名查找找 22 按照照學(xué)號(hào)查查找);scanff(%d,&swway);/*按照姓姓名查找找開(kāi)始*/if(swway=1)printtf(請(qǐng)輸入入需要修修改學(xué)生生的姓名名 );/priintff(ii=%dd,ii);scanff(%s,namme);for(jj=0;t!=0;jj+)t=strrcmpp(sttujj.nnamee,naame);if(j=i)t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%d
41、d日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq);printtf(是否修修改該生生考勤信信息 0 否否 11 是); /選選擇是否否修改考考勤scanff(%d,&x); /輸入入選擇變變量值if(x=1)printtf(請(qǐng)輸入入新的考考勤值 );scanff(%d,&sttujj-1.kqq); /輸入入新的考考勤值if(ffp=ffopeen(datte.ttxt,ww)=NNULLL) /以以只寫(xiě)方方式打
42、開(kāi)開(kāi)文件printtf(文件打打開(kāi)失敗敗n);exit(0);for(jj=0;jii;j+) if(fwrritee(&sstuj,sizzeoff(sttrucct sstuddentt),11,fpp)!=1) priintff(文文件寫(xiě)入入錯(cuò)誤n); /寫(xiě)入入文件fclosse(ffp); /關(guān)閉文文件printtf(是否繼繼續(xù)修改改其他學(xué)學(xué)生考勤勤 0 否 1 是是);scanff(%d,&x);if(x=1) chhangge();/*按照姓姓名查找找結(jié)束*/*按照學(xué)學(xué)號(hào)查找找開(kāi)始*/if(swway=2)printtf(請(qǐng)輸入入需要修修改學(xué)生生的學(xué)號(hào)號(hào) );/priintff(i
43、i=%dd,ii);scanff(%s,nummberr);for(jj=0;t!=0;jj+)t=strrcmpp(sttujj.nnumbber,nummberr);if(j=i)t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj
44、-1.dayy,sttujj-1.kqq);printtf(是否修修改該生生考勤信信息 0 否否 11 是); /選選擇是否否修改考考勤scanff(%d,&x); /輸入入選擇變變量值if(x=1)printtf(請(qǐng)輸入入新的考考勤值 );scanff(%d,&sttujj-1.kqq); /輸入入新的考考勤值if(ffp=ffopeen(datte.ttxt,ww)=NNULLL) /以以只寫(xiě)方方式打開(kāi)開(kāi)文件printtf(文件打打開(kāi)失敗敗n);exit(0);for(jj=0;jii;j+) if(fwrritee(&sstuj,sizzeoff(sttrucct sstuddentt)
45、,11,fpp)!=1) priintff(文文件寫(xiě)入入錯(cuò)誤n); /寫(xiě)入入文件fclosse(ffp); /關(guān)閉文文件printtf(是否繼繼續(xù)修改改其他學(xué)學(xué)生考勤勤 0 否 1 是是);scanff(%d,&x);if(x=1) chhangge();/*按照學(xué)學(xué)號(hào)查找找結(jié)束*/printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00) maiin();/*修改數(shù)數(shù)據(jù)函數(shù)數(shù)內(nèi)容結(jié)結(jié)束*/*查詢數(shù)數(shù)據(jù)函數(shù)數(shù)內(nèi)容開(kāi)開(kāi)始*void seaarchh() iint i=00,j=0,sswayy,t,x;char namme1
46、10,nummberr100;printtf( *學(xué) 生 信信 息 查 詢?cè)?n);if(ffp=ffopeen(datte.ttxt,rr)=NNULLL) /將將文件內(nèi)內(nèi)容讀入入內(nèi)存printtf(文件打打開(kāi)失敗敗n);exit(0);for(ii=0;feoof(ffp)=0;i+) ffreaad(&stuui,siizeoof(sstruuct stuudennt),1,ffp); /讀取文文件內(nèi)容容fclosse(ffp); /關(guān)閉文文件printtf(選擇查查找方式式 1 按照姓姓名查找找 22 按照照學(xué)號(hào)查查找);scanff(%d,&swway);/*按照姓姓名查找找開(kāi)始*/
47、if(swway=1)printtf(請(qǐng)輸入入需要修修改學(xué)生生的姓名名 );/priintff(ii=%dd,ii);scanff(%s,namme);for(jj=0;t!=0;jj+)t=strrcmpp(sttujj.nnamee,naame);if(j=i)t=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1
48、.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq);printtf(是否繼繼續(xù)查詢?cè)兤渌麑W(xué)學(xué)生信息息 0 否 1 是是);scanff(%d,&x);if(x=1) seearcch();/*按照姓姓名查找找結(jié)束*/*按照學(xué)學(xué)號(hào)查找找開(kāi)始*/if(swway=2)printtf(請(qǐng)輸入入需要修修改學(xué)生生的學(xué)號(hào)號(hào) );/priintff(ii=%dd,ii);scanff(%s,nummberr);for(jj=0;t!=0;jj+)t=strrcmpp(sttujj.nnumbber,nummberr);if(j=i)t
49、=0;printtf(未找到到您所查查詢的數(shù)數(shù)據(jù),請(qǐng)請(qǐng)重新輸輸入nn);if(ji) /查詢?cè)兂晒rinttf(您查找找的學(xué)生生信息如如下nn 姓名名 %ss 學(xué)號(hào)號(hào) %ss 性別別 %cc 生日日 %dd年%dd月%dd日 當(dāng)當(dāng)前考勤勤次數(shù) %dn,stuuj-1.namme,sstuj-11.nnumbber,stuuj-1.sexx,sttujj-1.yeear,stuuj-1.monnth,stuuj-1.dayy,sttujj-1.kqq);printtf(是否繼繼續(xù)查詢?cè)兤渌麑W(xué)學(xué)生信息息 0 否 1 是是);scanff(%d,&x);if(x=1) seearcch();/*按照學(xué)學(xué)號(hào)查找找結(jié)束*/printtf(0 返返回主菜菜單nn);getchhar();a=gettchaar();getchhar();if(a=00)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- xxx項(xiàng)目可行性研究報(bào)告
- 物聯(lián)網(wǎng)居間服務(wù)協(xié)議
- 園林苗圃建設(shè)可行性報(bào)告
- 礦山油漆施工模板
- 智能停車(chē)場(chǎng) 系統(tǒng)
- 片區(qū)開(kāi)發(fā)項(xiàng)目可行性研究報(bào)告
- 低空經(jīng)濟(jì)的未來(lái)發(fā)展前景
- 農(nóng)業(yè)保險(xiǎn)精準(zhǔn)賠付系統(tǒng)實(shí)施方案
- 物流配送形式
- 茶藝師練習(xí)試題附答案(一)
- 石油焦生產(chǎn)工藝及設(shè)備解讀課件
- 肺炎-疑難病例討論課件
- 2023全國(guó)高中化學(xué)奧林匹克競(jìng)賽預(yù)賽試題及答案
- 邊坡變形觀測(cè)報(bào)告
- 音樂(lè)劇悲慘世界歌詞
- 復(fù)合材料鋪層設(shè)計(jì)說(shuō)明
- 戴德梁行物業(yè)培訓(xùn)ppt課件
- GB∕T 16422.3-2022 塑料 實(shí)驗(yàn)室光源暴露試驗(yàn)方法 第3部分:熒光紫外燈
- 煤礦防治水中長(zhǎng)期規(guī)劃2017—2019
- 2022年鄉(xiāng)鎮(zhèn)(街道)執(zhí)法人員資格考試題庫(kù)(含答案)
- 新版廣西大學(xué)畢業(yè)設(shè)計(jì)封面
評(píng)論
0/150
提交評(píng)論