學(xué)生成績管理系統(tǒng)程序設(shè)計報告_第1頁
學(xué)生成績管理系統(tǒng)程序設(shè)計報告_第2頁
學(xué)生成績管理系統(tǒng)程序設(shè)計報告_第3頁
學(xué)生成績管理系統(tǒng)程序設(shè)計報告_第4頁
學(xué)生成績管理系統(tǒng)程序設(shè)計報告_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

程序設(shè)計報告(201/201學(xué)年第學(xué)期)題目:學(xué)生成績管理系統(tǒng)專業(yè)軟件工程(NIIT)學(xué)生姓名班級學(xué)號指導(dǎo)教師成小惠指導(dǎo)單位計算機(jī)軟件學(xué)院日期2013.3.26評分細(xì)則評分項優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計能力團(tuán)隊合作精神課題功能實現(xiàn)情況算法設(shè)計合理性用戶界面設(shè)計報告書寫認(rèn)真程度內(nèi)容詳實程度文字表達(dá)熟練程度回答問題準(zhǔn)確度簡短評語教師簽名:年月日評分等級備注評分等級有五種:優(yōu)秀、良好、中等、及格、不及格開*/ fs>>num; for(inti=0;i<num;i++) { fs>>stu[i].Id>>stu[i].ps>>stu[i].qz>>stu[i].qm;/*把文件中得數(shù)值對應(yīng)到結(jié)構(gòu)數(shù)組中*/ } for(i=0;i<num;i++)/*完成對總評成績的計算*/ { stu[i].all=stu[i].ps*0.3+stu[i].qz*0.3+stu[i].qm*0.4; if((stu[i].all<=100)&&(stu[i].all>=90)) stu[i].grade='A'; if((stu[i].all<90)&&(stu[i].all>=80)) stu[i].grade='B'; if((stu[i].all<80)&&(stu[i].all>=70)) stu[i].grade='C'; if((stu[i].all<70)&&(stu[i].all>=60)) stu[i].grade='D'; if((stu[i].all<60)&&(stu[i].all>=0)) stu[i].grade='E'; }}voidreadall()/*對選項1的實現(xiàn),后面調(diào)用*/{file();inti; ofstreamfout("out.dat");/*輸出保存到out文件中*/ if(!fout)/*如果文件打開失敗*/ { cout<<"Cannotopenthefile!"<<endl; } fout<<str5<<"\t"<<str6<<"\t"<<str7<<endl;/*把表頭文字存入文件*/ cout<<str5<<"\t"<<str6<<"\t"<<str7<<endl;/*把表頭文字輸出屏幕*/ for(i=0;i<num;i++)/*for循環(huán)逐次輸出學(xué)生的成績*/ { fout<<stu[i].Id<<"\t"<<stu[i].all<<"\t"<<stu[i].grade<<endl; cout<<stu[i].Id<<"\t"<<stu[i].all<<"\t\t"<<stu[i].grade<<endl; }} voidreadaverage() /*對選項2的實現(xiàn),后面調(diào)用*/{ cout<<"本課程的總評成績:";file(); inti; floata[20],p; for(i=0;i<num;i++) { a[i]=stu[i].all; } for(i=1;i<num;i++) { a[i]=a[i]+a[i-1]; } p=a[num-1]/num; cout<<p<<endl<<endl;}voidreadgrade()/*對選項3的實現(xiàn),后面調(diào)用*/{inti;intj=0; intk=0; intx=0; inty=0; intz=0; file();for(i=0;i<num;i++) { if(stu[i].grade==65) j++; if(stu[i].grade==66) k++; if(stu[i].grade==67) x++; if(stu[i].grade==68) y++; if(stu[i].grade==69) z++; } cout<<"成績?yōu)閮?yōu)的學(xué)生人數(shù):"; cout<<j<<endl;cout<<"成績?yōu)榱嫉膶W(xué)生人數(shù):"; cout<<k<<endl; cout<<"成績?yōu)橹械鹊膶W(xué)生人數(shù):"; cout<<x<<endl; cout<<"成績?yōu)榧案竦膶W(xué)生人數(shù):"; cout<<y<<endl; cout<<"成績?yōu)椴患案竦膶W(xué)生人數(shù):"; cout<<z<<endl; floatn; cout<<"成績?yōu)閮?yōu)的學(xué)生百分比:"; n=float(j)/num; cout<<n<<endl; cout<<"成績?yōu)榱嫉膶W(xué)生百分比:"; n=float(k)/num; cout<<n<<endl; cout<<"成績?yōu)橹械鹊膶W(xué)生百分比:"; n=float(x)/num; cout<<n<<endl; cout<<"成績?yōu)榧案竦膶W(xué)生百分比:"; n=float(y)/num; cout<<n<<endl; cout<<"成績?yōu)椴患案竦膶W(xué)生百分比:"; n=float(z)/num; cout<<n<<endl<<endl;}voidreadABCDE()/*對選項4的實現(xiàn),后面調(diào)用*/{charm[10];cout<<"請輸入你需要查詢學(xué)生的成績等級:"; cin>>m; if((m[0]!=65)&&(m[0]!=66)&&(m[0]!=67)&&(m[0]!=68)&&(m[0]!=69)) cout<<"Inputerror!!!!"<<endl<<endl; if(m[0]==65) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='A') cout<<stu[i].Id<<endl; } }if(m[0]==66) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='B') cout<<stu[i].Id<<endl; } } if(m[0]==67) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='C') cout<<stu[i].Id<<endl; } } if(m[0]==68) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='D') cout<<stu[i].Id<<endl; } } if(m[0]==69) {cout<<str5<<endl; for(inti=0;i<num;i++) {if(stu[i].grade=='E') cout<<stu[i].Id<<endl; } } cout<<endl;}voidmain()/*菜單函數(shù),整體框架*/{intm=1;intn; do{ cout<<"1.計算每位學(xué)生的總評成績"<<endl; cout<<"2.計算班級本課程的總評成績"<<endl; cout<<"3.統(tǒng)計優(yōu)、良、中、及格、不及格的學(xué)生人數(shù)以及所占比例"<<endl; cout<<"4.查詢成績在優(yōu)、良、中、及格、不及格各區(qū)間的學(xué)生學(xué)號"<<endl; cout<<"5.退出"<<endl; cout<<"請選擇:"; cin>>n;/*實現(xiàn)菜單函數(shù)的循環(huán)*/ switch(n){ case1: readall(); break; case2: readaverage(); break; case3: readgrade(); break; case4: readABCDE(); break; case5: exit(0); break; default: cout<<"Inputerror!!!!"<<endl<<endl; } }while(m==1);}五、測試數(shù)據(jù)及其結(jié)果分析1.note.dat文件中的內(nèi)容:20060302018875.566060302029179.5760603020385757706030204798280.50603020566706306030206536052060302079090980603020886778306030209885669060302107559600603021168697006030212668089060302135559560603021470529006030215908897060302168852600603021760805606030218806877060302199080.5820603022075.588662.out.dat文件中的內(nèi)容:學(xué)生學(xué)號 總評成績 成績等級0603020175.45C06030202 81.55 B06030203 78.8C06030204 80.5 B06030205 66 D06030206 54.7 E06030207 93.2 A06030208 82.1 B06030209 70.8 C06030210 64.2 D06030211 69.1 D06030212 79.4 C06030213 56.6 E06030214 72.6 C06030215 92.2 A06030216 66 D06030217 64.4 D06030218 75.2 C06030219 83.95 B06030220 75.45 C運行結(jié)果演示:1.運行程序后顯示菜單:2.輸入1,并按Enter,得到學(xué)生的總評成績:3.輸入2,并按Enter,得到課程的總評成績:4.輸入3,并按Enter,統(tǒng)計各等級的人數(shù)并計算比例:5.輸入4,并按Enter,可輸入要查詢的等級:輸入A:輸入B:輸入C:輸入D:輸入E:六、調(diào)試過程中的問題1.對于此次的程序書寫,感悟良多,剛開始的時候,覺得課題不是很難,因為在課本上,有這樣的例題。而此題與其余的學(xué)生成績管理系統(tǒng)不同,它的基本要求實現(xiàn)的對一個班級的成績錄入,個人成績,班級信息等等。對于學(xué)生的成績計算包括了平時成績,期中成績,期末成績。不是書本的例題似的,實現(xiàn)多門科目的成績錄入。于是剛開始的難點就是考慮的如何實現(xiàn)這一功能。剛開始,書本上的實現(xiàn)的時候,采用的是指針,鏈表,去實現(xiàn),然后,我在去調(diào)鏈表指針的時候,就要去用許多的頭文件,要寫4個左右的大量頭文件,做了4天左右的時候,我們沒有時候所要的功能,在編譯的時候沒有錯誤,但是程序還是實現(xiàn)不了,于是,放棄采用鏈表,指針。選擇數(shù)組。雖然數(shù)組在內(nèi)存上有很大的缺點,但對于此題,可能數(shù)組去實現(xiàn),相對容易;2.實現(xiàn)學(xué)生的成績錄入功能的時候,我沒能深的去了解題目所要求得實現(xiàn)保存在note.dat中,開始對文件沒有深刻的去認(rèn)識,于是我一根筋去認(rèn)為首先建一個note.dat文件,然后用程序去讀出這個文件的其中數(shù)據(jù)。于是,我無論進(jìn)行咋樣的操作,還是發(fā)現(xiàn)程序中沒有內(nèi)容,后來考慮許久,發(fā)現(xiàn)沒有理解題目的意思,對與一個系統(tǒng)而言首先要實現(xiàn)錄入功能,于是我就想,可以在程序中實現(xiàn)程序的數(shù)據(jù)錄入,然后去保存在note.dat文件中,但于是寫程序的時候首先定義一個save函數(shù)用來存取學(xué)生的數(shù)據(jù),在main函數(shù)中,在錄入功能后面增加一個選項,用來去實現(xiàn)保存的功能,開始存入一個人的信息的時候,我沒有發(fā)現(xiàn)錯誤,但是錄入很多人的時候,發(fā)現(xiàn)在note.dat文件存入的是一個人的信息,于是我找不到錯誤,開始我去想可能是文件中輸出格式有錯誤.可能是“r”的問題,因為我不太確定用的是“w”還是“r”,后來分別去實驗,發(fā)現(xiàn)還是解決不了問題,后來仔細(xì)想了想,之所以只存入一個學(xué)生的信息,估計沒有加入錄入成功或保存成功,于是我把,save函數(shù)放在input函數(shù),也就意思是在實現(xiàn)對一個學(xué)生的錄入功能的時候,順便實現(xiàn)保存在文本中然后發(fā)現(xiàn)沒錄入一個學(xué)生的成績就要去保存,要是有很多的學(xué)生,那么就要用很多遍的去保存,發(fā)現(xiàn)就是一個問題,于是在想到,之所以去調(diào)用一次,就是有for循環(huán),于是我把save函數(shù)的方法,寫在for循環(huán)的前面,系統(tǒng)實現(xiàn)默認(rèn)的保存功能。這樣不會出現(xiàn)提示的信息,問是不是需要實現(xiàn)保存。3.后來通過一系列的函數(shù)實現(xiàn)出個人成績等級,總評,主要通過for循環(huán),if語句,因為我定義的grade,zongping,number是結(jié)構(gòu)體的變量,而且是全局的,這要對幾個函數(shù)的調(diào)用很容易去實現(xiàn)到;在文件輸出中,按要求輸出三項,分別是學(xué)號,總評,等級;按要求輸出在一個文件中,開始的時候,輸出沒有實現(xiàn),因為錄入沒有實現(xiàn)保存的功能,于是發(fā)現(xiàn)輸出的空,后來當(dāng)實現(xiàn)了保存的功能后,發(fā)現(xiàn)輸出的功能自然解決。4.開始的時候,我把學(xué)生的學(xué)號定義為了char類型,當(dāng)輸出的時候在學(xué)生的學(xué)號一欄的時候,發(fā)現(xiàn)的字母,后來,想到改成int型,從而實現(xiàn)正確的輸出;七、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論