C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
C語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄一、 需求分析 1二、 概要設(shè)計(jì) 11、 系統(tǒng)功能組成框圖12、 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)23、 模塊說(shuō)明2三、 詳細(xì)設(shè)計(jì)21、 模塊設(shè)計(jì)代碼22、 程序詳細(xì)代碼33、 函數(shù)的調(diào)用11四、 調(diào)試分析11五、 用戶手冊(cè)11六、 測(cè)試數(shù)據(jù)15七、 附件16八、 心得體會(huì)16學(xué)生成績(jī)管理系統(tǒng)一、需求分析1、此程序里包含著多個(gè)屬性,所以類(lèi)型為結(jié)構(gòu)體類(lèi)型2、程序內(nèi)的對(duì)象調(diào)入和調(diào)出都需循環(huán)體類(lèi)型的文件操作實(shí)現(xiàn)3、學(xué)生成績(jī)的信息修改、插入、刪除都需保存,而保存需進(jìn)行文件的讀寫(xiě)操作4、排序操作可采用冒泡排序和選擇法排序5、主函數(shù)中根據(jù)不同選擇執(zhí)行不同操作可通過(guò)“多分支選擇語(yǔ)句switch”實(shí)現(xiàn)二、概要設(shè)計(jì)學(xué)生成績(jī)管理

2、系統(tǒng)1系統(tǒng)功能組成框圖輸入系統(tǒng)修改系統(tǒng)輸出系統(tǒng)刪除系統(tǒng)插入系統(tǒng)按學(xué)號(hào)查詢系統(tǒng)升序按姓名降序按學(xué)號(hào)排序系統(tǒng)升序按總分降序2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)成績(jī)管理系統(tǒng)為結(jié)構(gòu)體struct 結(jié)構(gòu)體名定義名字的長(zhǎng)度,學(xué)號(hào)的長(zhǎng)度定義性別三門(mén)課程的成績(jī)總分平均分3模塊說(shuō)明1、每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、性別、3門(mén)成績(jī)、總分、平均成績(jī)。2、輸入功能:可以一次完成規(guī)定數(shù)字記錄的輸入。3、輸出功能:完成全部學(xué)生記錄的顯示。4、插入功能:按學(xué)生的學(xué)號(hào)、姓名、性別、三門(mén)課程成績(jī)、總分、平均分插入學(xué)生信息。5、修改功能:選擇學(xué)生進(jìn)行修改6、排序功能:按學(xué)生總分進(jìn)行升降排序。7、查找功能:完成按姓名或者學(xué)號(hào)查找學(xué)生記錄,并顯示。

3、8、刪除功能:選擇學(xué)生的學(xué)號(hào)或者名字進(jìn)行核對(duì),確定之后刪除三、 詳細(xì)設(shè)計(jì)1、模塊設(shè)計(jì)代碼 input( )/*輸入模塊*/ output( )/*輸出模塊*/ search( )/*查詢模塊*/ modify( )/*修改模塊*/ delete( )/*刪除模塊*/ insert( )/*插入模塊*/ sort()/*排序模塊*/2、程序詳細(xì)代碼#include /*頭文件(源文件)*/struct stu /*定義一個(gè)結(jié)構(gòu)體用來(lái)存放學(xué)生學(xué)號(hào)、三門(mén)課成績(jī)、總分及平均成績(jī)*/char num10; /*學(xué)號(hào)長(zhǎng)度*/ char name10; /*姓名長(zhǎng)度*/char sex; /*性別類(lèi)型*/

4、int score3; /*三門(mén)課程類(lèi)型*/* float sum; /*總分類(lèi)型*/ float ave; /*平均分類(lèi)型*/student55; int n=3; /*定義n=3*/main() /*主函數(shù)*/char ch; /*定義類(lèi)型*/while(1) /*循環(huán)(死循環(huán))主界面*/system(cls);printf(nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn);clrscr(); printf(*n);printf( welcome to the students management system n ); printf(*n);printf( * * n)

5、; printf( * * n); printf( * * n); printf( *1:input*n); printf( *2:output*n); printf( *3:search*n); printf( *4:delete*n); printf( *5:insert*n); printf( *6:modify* n ); printf( *7:sort* n); printf( *8:exit* n); printf( * n); printf( * n); printf( * n); printf( * n); printf( *n); printf(nntt please inp

6、ut the option:n); ch=getchar(); switch(ch) case1: input();break; case2: output();break; case3: search();break; case4: delete();break; case5: insert();break; case6: modify();break; case7: sort();break; case8: exit(0);input() /*輸入*/file *fp; /*定義指針 文件*/int i,j; /*定義i j*/if(fp=fopen(stu.dat,w+)=null) /

7、*若文件打不開(kāi)*/printf(cannot open the file); /*顯示cannot open the file */exit(0); /*退出*/printf(please input the students imformation:n); /*顯示“請(qǐng)輸入學(xué)生信息”*/for(i=0;in;i+) /*從0開(kāi)始,i3 一次次疊加*/printf(the %d,i+1); /*輸出第幾個(gè)學(xué)生*/ printf(the number:); /*輸出學(xué)號(hào)*/ scanf(%s,studenti.num); /*輸入這個(gè)學(xué)生的學(xué)號(hào)*/ printf(n the name:); /*

8、輸出學(xué)生姓名*/ scanf(%s,); /*輸入這個(gè)學(xué)生的姓名*/ printf(n the sex: ); /*輸出性別*/ scanf( %c,&studenti.sex); /*輸入這個(gè)學(xué)生的性別*/ printf(n the 3 score:); /*輸出3門(mén)科目的分?jǐn)?shù)*/ studenti.sum=0; /*定義這個(gè)學(xué)生剛開(kāi)始的總分為0*/ for(j=0;j3;j+) /*j從0開(kāi)始,j3,一次次疊加*/ printf(the score %d :,j+1); /*輸出科目的分?jǐn)?shù)*/ scanf(%d,&studenti.scorej); /*輸入這個(gè)學(xué)

9、生的學(xué)號(hào)和科目*/ studenti.sum+=studenti.scorej; /*學(xué)生的總分,sum+的意思為從0開(kāi)始疊加*/ studenti.ave=studenti.sum/3.0; /*學(xué)生的平均分*/ fwrite(student,sizeof(struct stu),n,fp); /*將這個(gè)學(xué)生的信息寫(xiě)入指針文件中*/getch();fclose(fp); /*關(guān)閉文件*/output() /*輸出文件*/file *fp; /*定義指針 文件*/ int i; /*定義i */ if(fp=fopen(stu.dat,r)=null) /*若文件打不開(kāi)*/printf(can

10、not open the file); /*顯示cannot open the file */ exit(0); /*退出*/ n=0; while(fread(&studentn,sizeof(struct stu),1,fp)=1) n+; /*循環(huán),每讀取時(shí)都為一次*/ printf(num name sex score1 score2 score3 sum ave n); /*若讀取成功則輸出學(xué)生的學(xué)號(hào)姓名性別 123科目成績(jī) 總分平均分*/ for(i=0;in;i+) printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,studenti.nam

11、e, studenti.sex,studenti.score0,studenti.score1,studenti.score2, studenti.sum,studenti.ave); /*輸出學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/ fclose(fp); /*關(guān)閉文件*/ getch(); insert() /*插入*/ file *fp; /*定義指針文件*/int i,j,m,x; /*定義i,j,m,x*/if(fp=fopen(stu.dat,ab+)=null) /*若文件打不開(kāi)*/printf(cannot open the file); /*顯示cannot op

12、en the file */ exit(0);/*退出*/n=0;while(fread(&studentn,sizeof(struct stu),1,fp)=1) n+; /*循環(huán),每讀取時(shí)都為一次*/printf(please input the the count:n); /*請(qǐng)輸入數(shù)字*/scanf(%d,&m); /*輸入增加的數(shù)目*/printf(please input the students information:n); /*請(qǐng)輸入插入學(xué)生的信息*/for(i=n;in+m;i+) printf(the %d,i+1); /*輸出一項(xiàng)*/ printf(the number

13、:); /*輸出數(shù)字*/ scanf(%s,studenti.num); /*輸入插入學(xué)生的學(xué)號(hào)*/ printf(nthe name:); /*學(xué)生姓名*/ scanf(%s,); /*輸入插入學(xué)生的姓名*/ printf(n the sex: ); /*學(xué)生性別*/ scanf( %c,&studenti.sex); /*輸入插入學(xué)生的性別*/ printf(n the 3 score:); /*三門(mén)課程的成績(jī)*/ studenti.sum=0;/*總分初始為0*/ for(j=0;j3;j+) printf(the score %d :,j+1);/*課程的成績(jī)

14、累加*/ scanf(%d,&studenti.scorej); /*輸入插入學(xué)生第幾門(mén)成績(jī)*/ studenti.sum+=studenti.scorej; /*學(xué)生總分=三門(mén)課程成績(jī)的累加*/ studenti.ave=studenti.sum/3.0; /*學(xué)生平均分=學(xué)生的總分/3*/ for(i=n;in+m;i+) fwrite(&studenti,sizeof(struct stu),1,fp); /*保存輸入學(xué)生信息的數(shù)據(jù)進(jìn)文件*/fclose(fp); /*關(guān)閉文件*/modify() /*修改*/file *fp; /*定義指針文件*/int i,j;char name10

15、; /*定義name的長(zhǎng)度*/ char ch; if(fp=fopen(stu.dat,rb+)=null) /*若文件打不開(kāi)*/ printf(cannot open the file); /*顯示cannot open the file */ exit(0); /*退出*/ n=0;while(fread(&studentn,sizeof(struct stu),1,fp)=1) n+;printf(please input the name of the student who should be modify!n); /*請(qǐng)輸入要修改學(xué)生的姓名*/printf(ttt the nam

16、e:n); /*輸出姓名*/scanf(%s,name); /*姓名*/for(i=0;in;i+)if(strcmp(name,)=0) /*比較輸入學(xué)生的姓名是否符合文件中學(xué)生的姓名*/printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,,studenti.sex,studenti.score0,studenti.score1,studenti.score2,studenti.sum,studenti.ave); /*輸出學(xué)生的學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/break;print

17、f(nttt do you modify it, y/n? ); /*你要修改嗎?y/n*/scanf( %c,&ch); if(ch=y|ch=y) /*y=y*/printf(the %d,i+1); /*第一項(xiàng)*/ printf(the number:); /*學(xué)號(hào)*/ canf(%s,studenti.num); /*輸入學(xué)生的學(xué)號(hào)*/ rintf(nthe name:); /*姓名*/ canf(%s,); /*輸入學(xué)生的姓名*/ rintf(nthe sex: (mf) ); /*學(xué)生的性別(mf)*/ canf( %c,&studenti.sex); /

18、*輸入學(xué)生的性別*/ printf(n the 3 score:); /*三門(mén)課程的成績(jī)*/ tudenti.sum=0; /*初始總分為0*/ for(j=0;jnumn); /*輸出“選擇1為學(xué)號(hào)排序”*/printf(ntt 2-sumn); /*輸出“選擇2為總分排序”*/printf(please select:n); /*請(qǐng)選擇*/scanf( %c,&ch1); /*輸入1*/if(ch1=1) /*若選擇1 */printf(nt u-up); /*輸出u=up*/printf(nt d-down); /*輸出d=down*/printf(please select:n); /

19、*輸出“請(qǐng)選擇”*/scanf( %c,&ch2); /*輸入選擇*/if(ch2=u|ch2=u) /*選擇中的u=u*/for(i=0;in-1;i+) for(j=0;j0) /*比較studentj.num和studentj+1.num的長(zhǎng)度0*/m=studentj;studentj=studentj+1;studentj+1=m; /*小點(diǎn)的數(shù)字覆蓋前面大點(diǎn)的數(shù)字,大點(diǎn)的數(shù)字往后移*/ if(ch2=d|ch2=d) /*選擇中的d=d*/for(i=0;in-1;i+) for(j=0;jn-i-1;j+) if(strcmp(studentj.num,studentj+1.nu

20、m)up); /*輸出u=up*/ printf(nt d-down); /*輸出d=down*/ printf(please select:n); /*輸出“請(qǐng)選擇”*/ scanf( %c,&ch2);/*輸入選擇*/ if(ch2=u|ch2=u)/*選擇中的u=u*/for(i=0;in-1;i+) for(j=0;jstudentj+1.sum) /*比較studentj.sumstudentj+1.sum的長(zhǎng)度*/m=studentj;studentj=studentj+1;studentj+1=m; /*小點(diǎn)的數(shù)字覆蓋前面大點(diǎn)的數(shù)字,大點(diǎn)的數(shù)字往后移*/ if(ch2=d|ch2

21、=d) /*選擇中的d=d*/for(i=0;in-1;i+) for(j=0;jn-i-1;j+) if(studentj.sumstudentj+1.sum) /*若studentj.sumnumn); /*選擇1 為學(xué)號(hào)*/printf(ntt 2-namen); /*選擇2為姓名*/printf(please select:n); /*請(qǐng)選擇*/scanf( %c,&ch); /*輸入選擇*/if(ch=1) /*選擇1*/printf(please input the num: n); /*顯示請(qǐng)輸入學(xué)號(hào)*/ scanf(%s,num); /*輸入學(xué)號(hào)*/ for(i=0;in;i+

22、) if(strcmp(num,studenti.num)=0) /*比較num和studengti.num的長(zhǎng)度*/ printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,,studenti.sex, studenti.score0,studenti.score1,studenti.score2,studenti.sum,studenti.ave); /*輸入學(xué)生的學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/ if(ch=2) /*選擇2*/ printf(please input the name: n); /*顯示請(qǐng)輸

23、入姓名*/scanf(%s,name); /*輸入姓名*/ for(i=0;in;i+) if(strcmp(name,)=0)/*比較輸入的姓名是否符合*/ printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,,studenti.sex, studenti.score0,studenti.score1,studenti.score2,studenti.sum,studenti.ave); /*輸出學(xué)生的學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/ fclose(fp); /*關(guān)閉文件*/dele

24、te() /*刪除*/file *fp; /*定義指針文件*/ int i,j,k; char ch1,ch2;char num10,name10; if(fp=fopen(stu.dat,rb)=null) /*若文件打不開(kāi)*/printf(cannot open the file!n);/*顯示cannot open the file */ exit(0); /*退出*/ n=0;while(fread(&studentn,sizeof(struct stu),1,fp)=1) n+; printf(please input the students information:n); /*顯

25、示請(qǐng)輸入學(xué)生的信息*/ printf(tt 1=numt2=namen); /*1為學(xué)號(hào),2為姓名*/ scanf( %c,&ch1); /*選擇*/ f(ch1=1) /*選擇1*/ printf(please input the students num=n); /*請(qǐng)輸入學(xué)生的學(xué)號(hào)*/ scanf(%s,num); /*輸入學(xué)生的學(xué)號(hào)*/ for(i=0;in;i+) if(strcmp(num,studenti.num)=0) /*若um,studenti.num相等*/ printf(%st%st%ct%dt%dt%dt%ft%ftn, studenti.num,studenti.n

26、ame,studenti.sex,studenti.score0, studenti.score1,studenti.score2,studenti.sum,studenti.ave);/*輸出學(xué)生的學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/ k=i; /*用k標(biāo)記i的地址*/ if(ch1=2) /*選擇2*/printf(please input the students name=n); /*顯示請(qǐng)輸入學(xué)生的姓名*/ canf(%s,name); /*輸入姓名*/ or(i=0;in;i+)if(strcmp(name,)=0) /*若name,stu

27、符合*/printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,,studenti.score0,studenti.score0,studenti.score2,studenti.sum,studenti.ave); /*輸出學(xué)生的學(xué)號(hào),姓名,性別,成績(jī),成績(jī),成績(jī),總分,平均分*/ break;printf(n delete this student y/n?); /*顯示 是否刪除該學(xué)生*/scanf( %c,&ch2);if(ch2=y|ch2=y) /*y y 都可以.是個(gè)或邏輯結(jié)構(gòu)*/for(i=i+1;

28、in;i+) udenti-1=studenti; fclose(fp); /*關(guān)閉文件*/if(fp=fopen(stu.dat,wb)=null) /*若文件打不開(kāi)*/printf(cannot open the file!n);exit(0); /*顯示cannot open the file 并退出*/for(i=0;in-1;i+) if(ik) fwrite(&studenti,sizeof(struct stu),1,fp); /*若ik,則從i+1個(gè)開(kāi)始輸出*/fclose(fp); /*關(guān)閉文件*/3、函數(shù)的調(diào)用mian input output insert search

29、modify sort 四、調(diào)試分析1)剛開(kāi)始沒(méi)有那個(gè)初始化函數(shù),程序運(yùn)行后,沒(méi)有輸入任何數(shù)據(jù)就試得去執(zhí)行顯示功能,結(jié)果顯示的是一些亂碼!加入初始化函數(shù)后,這種現(xiàn)象也隨之消失。(2)剛開(kāi)始執(zhí)行輸入函數(shù),按學(xué)號(hào)順序輸入十個(gè)學(xué)生的成績(jī),輸完后執(zhí)行顯示功能,學(xué)生成績(jī)記錄是按學(xué)號(hào)的反順序顯示的,試著在其中增加一些語(yǔ)句,希望能把學(xué)號(hào)按正常順序顯示,但暫時(shí)沒(méi)有成功,所以在輸入成績(jī)時(shí)只能按學(xué)號(hào)反順序輸入,最后就按學(xué)號(hào)正常順序輸出了。(3)剛開(kāi)始時(shí),先把成績(jī)按平均分排序,再插入一個(gè)學(xué)生的成績(jī),執(zhí)行顯示功能,雖然插入的學(xué)生的成績(jī)能正常插入,但該學(xué)生的名次為0。后來(lái),在插入成績(jī)之后,調(diào)用排序函數(shù),把所有成績(jī)重新排序一次。(4)在輸入函數(shù)中設(shè)了一個(gè)無(wú)限循環(huán),可以輸入無(wú)數(shù)個(gè)學(xué)生的成績(jī)信息,當(dāng)學(xué)號(hào)為0的時(shí)候則停止輸入。(5)輸入太多個(gè)學(xué)生的成績(jī)時(shí),屏幕顯示不能控制為一頁(yè)一頁(yè)顯示,所以為了方便起見(jiàn),不要輸入太多記錄(6)在沒(méi)有輸入任何信息的情況下,去執(zhí)行排序功能,最后顯示有一個(gè)記錄,學(xué)號(hào)、姓名為空白,成績(jī)都為0,名次為1。(7)在輸入選項(xiàng)時(shí)不能輸入字母,否則會(huì)死循環(huán),建議不要亂輸字母。五、用戶手冊(cè)1. 本程序運(yùn)行環(huán)境為dos操作系統(tǒng),執(zhí)行文件為student.exe。2. 進(jìn)入程序student.exe后進(jìn)入界面,直接進(jìn)入系統(tǒng)菜單 圖

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論