版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、目錄一、 需求分析 1二、 概要設計 11、 系統(tǒng)功能組成框圖12、 數(shù)據(jù)結(jié)構(gòu)設計23、 模塊說明2三、 詳細設計21、 模塊設計代碼22、 程序詳細代碼33、 函數(shù)的調(diào)用11四、 調(diào)試分析11五、 用戶手冊11六、 測試數(shù)據(jù)15七、 附件16八、 心得體會16學生成績管理系統(tǒng)一、需求分析1、此程序里包含著多個屬性,所以類型為結(jié)構(gòu)體類型2、程序內(nèi)的對象調(diào)入和調(diào)出都需循環(huán)體類型的文件操作實現(xiàn)3、學生成績的信息修改、插入、刪除都需保存,而保存需進行文件的讀寫操作4、排序操作可采用冒泡排序和選擇法排序5、主函數(shù)中根據(jù)不同選擇執(zhí)行不同操作可通過“多分支選擇語句switch”實現(xiàn)二、概要設計學生成績管理
2、系統(tǒng)1系統(tǒng)功能組成框圖輸入系統(tǒng)修改系統(tǒng)輸出系統(tǒng)刪除系統(tǒng)插入系統(tǒng)按學號查詢系統(tǒng)升序按姓名降序按學號排序系統(tǒng)升序按總分降序2數(shù)據(jù)結(jié)構(gòu)設計成績管理系統(tǒng)為結(jié)構(gòu)體struct 結(jié)構(gòu)體名定義名字的長度,學號的長度定義性別三門課程的成績總分平均分3模塊說明1、每一條記錄包括一個學生的學號、姓名、性別、3門成績、總分、平均成績。2、輸入功能:可以一次完成規(guī)定數(shù)字記錄的輸入。3、輸出功能:完成全部學生記錄的顯示。4、插入功能:按學生的學號、姓名、性別、三門課程成績、總分、平均分插入學生信息。5、修改功能:選擇學生進行修改6、排序功能:按學生總分進行升降排序。7、查找功能:完成按姓名或者學號查找學生記錄,并顯示。
3、8、刪除功能:選擇學生的學號或者名字進行核對,確定之后刪除三、 詳細設計1、模塊設計代碼 input( )/*輸入模塊*/ output( )/*輸出模塊*/ search( )/*查詢模塊*/ modify( )/*修改模塊*/ delete( )/*刪除模塊*/ insert( )/*插入模塊*/ sort()/*排序模塊*/2、程序詳細代碼#include /*頭文件(源文件)*/struct stu /*定義一個結(jié)構(gòu)體用來存放學生學號、三門課成績、總分及平均成績*/char num10; /*學號長度*/ char name10; /*姓名長度*/char sex; /*性別類型*/
4、int score3; /*三門課程類型*/* float sum; /*總分類型*/ float ave; /*平均分類型*/student55; int n=3; /*定義n=3*/main() /*主函數(shù)*/char ch; /*定義類型*/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、*若文件打不開*/printf(cannot open the file); /*顯示cannot open the file */exit(0); /*退出*/printf(please input the students imformation:n); /*顯示“請輸入學生信息”*/for(i=0;in;i+) /*從0開始,i3 一次次疊加*/printf(the %d,i+1); /*輸出第幾個學生*/ printf(the number:); /*輸出學號*/ scanf(%s,studenti.num); /*輸入這個學生的學號*/ printf(n the name:); /*
8、輸出學生姓名*/ scanf(%s,); /*輸入這個學生的姓名*/ printf(n the sex: ); /*輸出性別*/ scanf( %c,&studenti.sex); /*輸入這個學生的性別*/ printf(n the 3 score:); /*輸出3門科目的分數(shù)*/ studenti.sum=0; /*定義這個學生剛開始的總分為0*/ for(j=0;j3;j+) /*j從0開始,j3,一次次疊加*/ printf(the score %d :,j+1); /*輸出科目的分數(shù)*/ scanf(%d,&studenti.scorej); /*輸入這個學
9、生的學號和科目*/ studenti.sum+=studenti.scorej; /*學生的總分,sum+的意思為從0開始疊加*/ studenti.ave=studenti.sum/3.0; /*學生的平均分*/ fwrite(student,sizeof(struct stu),n,fp); /*將這個學生的信息寫入指針文件中*/getch();fclose(fp); /*關(guān)閉文件*/output() /*輸出文件*/file *fp; /*定義指針 文件*/ int i; /*定義i */ if(fp=fopen(stu.dat,r)=null) /*若文件打不開*/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),每讀取時都為一次*/ printf(num name sex score1 score2 score3 sum ave n); /*若讀取成功則輸出學生的學號姓名性別 123科目成績 總分平均分*/ 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); /*輸出學號,姓名,性別,成績,成績,成績,總分,平均分*/ fclose(fp); /*關(guān)閉文件*/ getch(); insert() /*插入*/ file *fp; /*定義指針文件*/int i,j,m,x; /*定義i,j,m,x*/if(fp=fopen(stu.dat,ab+)=null) /*若文件打不開*/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),每讀取時都為一次*/printf(please input the the count:n); /*請輸入數(shù)字*/scanf(%d,&m); /*輸入增加的數(shù)目*/printf(please input the students information:n); /*請輸入插入學生的信息*/for(i=n;in+m;i+) printf(the %d,i+1); /*輸出一項*/ printf(the number
13、:); /*輸出數(shù)字*/ scanf(%s,studenti.num); /*輸入插入學生的學號*/ printf(nthe name:); /*學生姓名*/ scanf(%s,); /*輸入插入學生的姓名*/ printf(n the sex: ); /*學生性別*/ scanf( %c,&studenti.sex); /*輸入插入學生的性別*/ printf(n the 3 score:); /*三門課程的成績*/ studenti.sum=0;/*總分初始為0*/ for(j=0;j3;j+) printf(the score %d :,j+1);/*課程的成績
14、累加*/ scanf(%d,&studenti.scorej); /*輸入插入學生第幾門成績*/ studenti.sum+=studenti.scorej; /*學生總分=三門課程成績的累加*/ studenti.ave=studenti.sum/3.0; /*學生平均分=學生的總分/3*/ for(i=n;in+m;i+) fwrite(&studenti,sizeof(struct stu),1,fp); /*保存輸入學生信息的數(shù)據(jù)進文件*/fclose(fp); /*關(guān)閉文件*/modify() /*修改*/file *fp; /*定義指針文件*/int i,j;char name10
15、; /*定義name的長度*/ char ch; if(fp=fopen(stu.dat,rb+)=null) /*若文件打不開*/ 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); /*請輸入要修改學生的姓名*/printf(ttt the nam
16、e:n); /*輸出姓名*/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); /*輸出學生的學號,姓名,性別,成績,成績,成績,總分,平均分*/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); /*第一項*/ printf(the number:); /*學號*/ canf(%s,studenti.num); /*輸入學生的學號*/ rintf(nthe name:); /*姓名*/ canf(%s,); /*輸入學生的姓名*/ rintf(nthe sex: (mf) ); /*學生的性別(mf)*/ canf( %c,&studenti.sex); /
18、*輸入學生的性別*/ printf(n the 3 score:); /*三門課程的成績*/ tudenti.sum=0; /*初始總分為0*/ for(j=0;jnumn); /*輸出“選擇1為學號排序”*/printf(ntt 2-sumn); /*輸出“選擇2為總分排序”*/printf(please select:n); /*請選擇*/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、*輸出“請選擇”*/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的長度0*/m=studentj;studentj=studentj+1;studentj+1=m; /*小點的數(shù)字覆蓋前面大點的數(shù)字,大點的數(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); /*輸出“請選擇”*/ 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的長度*/m=studentj;studentj=studentj+1;studentj+1=m; /*小點的數(shù)字覆蓋前面大點的數(shù)字,大點的數(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 為學號*/printf(ntt 2-namen); /*選擇2為姓名*/printf(please select:n); /*請選擇*/scanf( %c,&ch); /*輸入選擇*/if(ch=1) /*選擇1*/printf(please input the num: n); /*顯示請輸入學號*/ scanf(%s,num); /*輸入學號*/ for(i=0;in;i+
22、) if(strcmp(num,studenti.num)=0) /*比較num和studengti.num的長度*/ printf(%st%st%ct%dt%dt%dt%ft%fn,studenti.num,,studenti.sex, studenti.score0,studenti.score1,studenti.score2,studenti.sum,studenti.ave); /*輸入學生的學號,姓名,性別,成績,成績,成績,總分,平均分*/ if(ch=2) /*選擇2*/ printf(please input the name: n); /*顯示請輸
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); /*輸出學生的學號,姓名,性別,成績,成績,成績,總分,平均分*/ 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) /*若文件打不開*/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、示請輸入學生的信息*/ printf(tt 1=numt2=namen); /*1為學號,2為姓名*/ scanf( %c,&ch1); /*選擇*/ f(ch1=1) /*選擇1*/ printf(please input the students num=n); /*請輸入學生的學號*/ scanf(%s,num); /*輸入學生的學號*/ 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);/*輸出學生的學號,姓名,性別,成績,成績,成績,總分,平均分*/ k=i; /*用k標記i的地址*/ if(ch1=2) /*選擇2*/printf(please input the students name=n); /*顯示請輸入學生的姓名*/ 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); /*輸出學生的學號,姓名,性別,成績,成績,成績,總分,平均分*/ break;printf(n delete this student y/n?); /*顯示 是否刪除該學生*/scanf( %c,&ch2);if(ch2=y|ch2=y) /*y y 都可以.是個或邏輯結(jié)構(gòu)*/for(i=i+1;
28、in;i+) udenti-1=studenti; fclose(fp); /*關(guān)閉文件*/if(fp=fopen(stu.dat,wb)=null) /*若文件打不開*/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個開始輸出*/fclose(fp); /*關(guān)閉文件*/3、函數(shù)的調(diào)用mian input output insert search
29、modify sort 四、調(diào)試分析1)剛開始沒有那個初始化函數(shù),程序運行后,沒有輸入任何數(shù)據(jù)就試得去執(zhí)行顯示功能,結(jié)果顯示的是一些亂碼!加入初始化函數(shù)后,這種現(xiàn)象也隨之消失。(2)剛開始執(zhí)行輸入函數(shù),按學號順序輸入十個學生的成績,輸完后執(zhí)行顯示功能,學生成績記錄是按學號的反順序顯示的,試著在其中增加一些語句,希望能把學號按正常順序顯示,但暫時沒有成功,所以在輸入成績時只能按學號反順序輸入,最后就按學號正常順序輸出了。(3)剛開始時,先把成績按平均分排序,再插入一個學生的成績,執(zhí)行顯示功能,雖然插入的學生的成績能正常插入,但該學生的名次為0。后來,在插入成績之后,調(diào)用排序函數(shù),把所有成績重新排序一次。(4)在輸入函數(shù)中設了一個無限循環(huán),可以輸入無數(shù)個學生的成績信息,當學號為0的時候則停止輸入。(5)輸入太多個學生的成績時,屏幕顯示不能控制為一頁一頁顯示,所以為了方便起見,不要輸入太多記錄(6)在沒有輸入任何信息的情況下,去執(zhí)行排序功能,最后顯示有一個記錄,學號、姓名為空白,成績都為0,名次為1。(7)在輸入選項時不能輸入字母,否則會死循環(huán),建議不要亂輸字母。五、用戶手冊1. 本程序運行環(huán)境為dos操作系統(tǒng),執(zhí)行文件為student.exe。2. 進入程序student.exe后進入界面,直接進入系統(tǒng)菜單 圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年金融服務采購合同創(chuàng)新金融產(chǎn)品合作協(xié)議2篇
- 導演與發(fā)行方2025年度合同3篇
- 二零二五年度餐飲泔水處理與環(huán)保設施運營管理合同6篇
- 二零二五年度高校畢業(yè)生就業(yè)見習實踐基地建設合作合同3篇
- 二零二五年度航空航天設備維修承包合同樣本3篇
- 二零二五年高性能混凝土委托加工合同范本3篇
- 碎石買賣合同(二零二五年度)2篇
- 二零二五年度藥品質(zhì)量第三方檢測合同范本6篇
- 二零二五版國際貿(mào)易中貨物所有權(quán)轉(zhuǎn)移與國際貿(mào)易政策研究合同3篇
- 2025年度電力設施租賃合同標的轉(zhuǎn)讓協(xié)議3篇
- 課題申報書:大中小學鑄牢中華民族共同體意識教育一體化研究
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當行業(yè)發(fā)展前景預測及融資策略分析報告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學年北師大版高二上學期期末英語試題及解答參考
- 批發(fā)面包采購合同范本
- 乘風化麟 蛇我其誰 2025XX集團年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(上)計算題專項練習匯編
評論
0/150
提交評論