計(jì)算機(jī)高級(jí)語言(C++)課程設(shè)計(jì):學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第1頁
計(jì)算機(jī)高級(jí)語言(C++)課程設(shè)計(jì):學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第2頁
計(jì)算機(jī)高級(jí)語言(C++)課程設(shè)計(jì):學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第3頁
計(jì)算機(jī)高級(jí)語言(C++)課程設(shè)計(jì):學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第4頁
計(jì)算機(jī)高級(jí)語言(C++)課程設(shè)計(jì):學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、湖南科技學(xué)院課程設(shè)計(jì)報(bào)告 課程名稱:計(jì)算機(jī)高級(jí)語言(c+)課程設(shè)計(jì)課程設(shè)計(jì)題目:學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)系:數(shù) 學(xué) 系專 業(yè):信息與計(jì)算科學(xué)年級(jí)、班:信計(jì)0801姓 名:xx學(xué) 號(hào):200805002109指導(dǎo)教師:xxx職 稱:講師200x年xx月xx日目錄 1需求分析32概要設(shè)計(jì)33程序?qū)崿F(xiàn)思路44設(shè)計(jì)總結(jié)45參考文獻(xiàn)56源代碼6一. 需求分析學(xué)生成績(jī)統(tǒng)計(jì)管理系統(tǒng)是為某班級(jí)成績(jī)統(tǒng)計(jì)管理的一個(gè)系統(tǒng)。其中包括學(xué)號(hào)、姓名、英語、數(shù)學(xué)、c+語言,各科平均成績(jī)、各科成績(jī)“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人數(shù)及其所占比例,學(xué)生的總成績(jī)、平均成績(jī)及成績(jī)排名,是為方便班級(jí)的管理人員對(duì)學(xué)生的信

2、息進(jìn)行管理而設(shè)計(jì),主要的功能有成績(jī)的輸入、成績(jī)統(tǒng)計(jì)、總成績(jī)統(tǒng)計(jì)、成績(jī)的統(tǒng)計(jì)結(jié)果顯示, 學(xué)生數(shù)據(jù)的添加、修改、與刪除,學(xué)生數(shù)據(jù)的讀取與存儲(chǔ)等,并提出系統(tǒng)開發(fā)的過程,以求獲得更大范圍的應(yīng)用。 二.概要設(shè)計(jì)1.本程序所用到的所有抽象數(shù)據(jù)類型的定義如下:序號(hào)成員名數(shù)據(jù)類型含義1numlong學(xué)號(hào)2namestring姓名3sumdouble總分4rangeint排名5avedouble平均分6scoredouble記錄數(shù)組2.主程序流程 long num; string name;double scoren; double sum;double ave; int range;double ave; /

3、平均成績(jī)int range; class student class all void input(); void count();void sort();void selectsort();void search(); void insert();int del(); void student:exit();void display(); 3.各程序模塊的功能void input(); /輸入void count(); /計(jì)算void sort(); /按學(xué)號(hào)升序排列void selectsort(); /按總成績(jī)降序排列void search(); /查詢void insert(); /插

4、入int del(); /刪除void student:exit();/修改數(shù)據(jù)void display(); /顯示void count(); /計(jì)算成員函數(shù)void average(); /計(jì)算平均值成員函數(shù)void display(); /顯示成員函數(shù) 三、程序?qū)崿F(xiàn)思路1.設(shè)計(jì)菜單實(shí)現(xiàn)功能成績(jī)的輸入(學(xué)號(hào)、姓名、英語、數(shù)學(xué)、c+語言)。成績(jī)統(tǒng)計(jì)(各科平均成績(jī)、各科成績(jī)“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人數(shù)及其所占比例)。總成績(jī)統(tǒng)計(jì)(學(xué)生的總成績(jī)、平均成績(jī)及成績(jī)排名)。成績(jī)的統(tǒng)計(jì)結(jié)果顯示。學(xué)生數(shù)據(jù)的添加、修改、與刪除。學(xué)生數(shù)據(jù)的讀取與存儲(chǔ)。2.設(shè)計(jì)類與對(duì)象class st

5、udent /建立學(xué)生類,用于存儲(chǔ)學(xué)生個(gè)人信息public:long num; /學(xué)號(hào)string name; /姓名double scoren;/學(xué)生科目成績(jī) double sum; /總成績(jī)double ave; /平均成績(jī)int range; /排名 void input(); /輸入void count(); /計(jì)算void sort(); /按學(xué)號(hào)升序排列void selectsort(); /按總成績(jī)降序排列void search(); /查詢void insert(); /插入 int del(); /刪除 void student:exit();/修改數(shù)據(jù)void displa

6、y(); /顯示stun;class all /建立整體類,用來存放學(xué)生整體信息public: double ave; /每學(xué)科的平均成績(jī) int people5; /每學(xué)科的各等級(jí)人數(shù) double percent5; /每學(xué)科的各等級(jí)人數(shù)比例void count(); /計(jì)算成員函數(shù)void average(); /計(jì)算平均值成員函數(shù)void display(); /顯示成員函數(shù)aln;3.通過類的調(diào)用實(shí)現(xiàn)功能設(shè)計(jì)case 0:cout*endl;cout數(shù)學(xué)科統(tǒng)計(jì)結(jié)果為endl;cout*endl;coutendl;break;case 1:cout*endl;cout英語科統(tǒng)計(jì)結(jié)果為e

7、ndl;cout*endl;coutendl;break;case 2:cout*endl;coutc+統(tǒng)計(jì)結(jié)果為endl;cout*endl;coutendl;break;case 3:if(total=0) cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;else cout學(xué)生信息為:endl; stutotal.count(); stutotal.display();/顯示 coutendl; break;case 4:if(total=0) cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsecout各科學(xué)生成績(jī)?yōu)?endl;aln.average();aln.coun

8、t(); aln.display();coutendl;break;case 5:if(total=0) cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsedo stutotal.search();cout查詢成功,繼續(xù)查詢請(qǐng)輸入y/y:endl; cout退出請(qǐng)按其他鍵endl; fflush(stdin); ch=getchar();while(ch=y|ch=y);break;case 6:if(total=0) cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsedostutotal.exit(); /修改cout修改成功,繼續(xù)修改請(qǐng)輸入y/y:endl;cout

9、退出請(qǐng)按其他鍵endl;fflush(stdin);ch=getchar();while(ch=y|ch=y);break;case 7:if(total=0) cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;else do system(cls); stutotal.insert(); /插入 total+; cout插入成功,繼續(xù)插入請(qǐng)輸入y/y:endl; cout退出請(qǐng)按其他鍵endl; fflush(stdin); ch=getchar(); coutendl;while(ch=y|ch=y);break;case 8:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1

10、添加數(shù)據(jù)endl;elsedo system(cls); if(stutotal.del() /刪除 total-; /人數(shù)-1 system(cls); else cout該學(xué)號(hào)不存在endl; system(pause); system(cls); cout刪除成功,繼續(xù)刪除請(qǐng)輸入y/y:endl; cout退出該選擇請(qǐng)按其他鍵endl; fflush(stdin); ch=getchar(); coutendl;while(ch=y|ch=y); break;case 9: cout此操作將刪除所有記錄endl; cout繼續(xù)該操作請(qǐng)輸入y/y:endl; cout退出請(qǐng)按其他鍵endl

11、; fflush(stdin); ch=getchar(); if(ch=y|ch=y) total=0; break;default:cout確定要退出嗎?endl; cout退出請(qǐng)輸入y/y:endl; fflush(stdin); ch=getchar(); coutendl; if(ch=y|ch=y) exit(0); break; system(pause); while(1);四、設(shè)計(jì)總結(jié)演繹 每一個(gè)程序都是不同的,即便是在相似的模式下,也依舊存在著內(nèi)容上的細(xì)微差別。精心的演繹,這才是最重要的。因?yàn)槊恳粋€(gè)程序就是一段人生歷練。 題記從開始的懵懂與緊張,到現(xiàn)在的了解與欣喜,伴隨著那

12、無數(shù)的“error”和“warning”閃爍,我漸漸學(xué)會(huì)了在失敗中成長(zhǎng)。是的,學(xué)習(xí)c+這門課程就是我的一次歷練,而這次的課程設(shè)計(jì)讓我獲益良多。通過為期兩周的努力,挑戰(zhàn)程序設(shè)計(jì)的難度,終于將程序正確地運(yùn)行。雖說只是一個(gè)簡(jiǎn)單的程序,但它卻見證了我從編寫、調(diào)試、修改、運(yùn)行、再修改等一系列的過程,收錄了我努力后的小小成果。我欣喜,因?yàn)槲覍?shí)現(xiàn)了一個(gè)從理論到實(shí)踐的飛躍;我感懷,因?yàn)橛型瑢W(xué)和老師的幫助和支持。在這個(gè)“演繹”的過程中,有時(shí)一個(gè)小小的錯(cuò)誤就讓我改了將近一個(gè)小時(shí)。平時(shí)看老師很快的將錯(cuò)誤挑出,并熟練的改正,覺得是輕而易舉的事,可是這次實(shí)踐讓我學(xué)會(huì)了從細(xì)微之處著手。有時(shí)一個(gè)錯(cuò)誤沒有改出來使得其他的錯(cuò)誤

13、沒有顯現(xiàn)出來,但是改動(dòng)某個(gè)地方或者調(diào)換某兩塊的程序的位置,潛在的錯(cuò)誤就會(huì)彈出。從錯(cuò)誤中,我發(fā)現(xiàn)了自己的不足,同時(shí)也學(xué)會(huì)讓自己學(xué)會(huì)如何面對(duì)這些不足。 運(yùn)用結(jié)構(gòu)體、類等新學(xué)的內(nèi)容讓我再次感受到了學(xué)習(xí)的重要性。都說“萬變不離其宗”,書本是我們課后學(xué)習(xí)的參照。因?yàn)闆]有重視書本,讓我在編譯時(shí)不斷翻看,這也堅(jiān)定了我努力學(xué)好這門課程的決心。 五、參考文獻(xiàn) 1.譚浩強(qiáng)c+程序設(shè)計(jì)清華出版社 2007,5六、源代碼學(xué)生成績(jī)統(tǒng)計(jì)管理程序#include /引用庫函數(shù)#include /引用控制符處理#include /字符串using namespace std;#define n 100 /宏定義#define

14、 n 3class student /建立學(xué)生類,用于存儲(chǔ)學(xué)生個(gè)人信息public:long num; /學(xué)號(hào)string name; /姓名double scoren; /學(xué)生科目成績(jī)double sum; /總成績(jī)double ave; /平均成績(jī)int range; /排名void input(); /輸入void count(); /計(jì)算void sort(); /按學(xué)號(hào)升序排列void selectsort(); /按總成績(jī)降序排列void search(); /查詢void insert(); /插入int del(); /刪除void student:exit(); /修改數(shù)據(jù)v

15、oid display(); /顯示stun;class all /建立整體類,用來存放學(xué)生整體信息public:double ave; /每學(xué)科的平均成績(jī)int people5; /每學(xué)科的各等級(jí)人數(shù)double percent5; /每學(xué)科的各等級(jí)人數(shù)比例void count(); /計(jì)算成員函數(shù)void average(); /計(jì)算平均值成員函數(shù)void display(); /顯示成員函數(shù)aln;int total=0; /定義全局變量void student:input() /輸入學(xué)生個(gè)人信息cout請(qǐng)輸入學(xué)生信息:endl;cout學(xué)號(hào)setw(8)姓名setw(12)數(shù)學(xué)成績(jī)se

16、tw(10)英語成績(jī)setw(10)c+成績(jī)setw(10)stutotal.num;cinsetw(10);for(int j=0;jsetw(10)stutotal.scorej;void student:selectsort() /按總成績(jī)降序排列student aa;int i,j;for(i=0;itotal-1;i+)for(j=i+1;jtotal;j+)if(stui.sumstuj.sum) aa=stuj;stuj=stui;stui=aa;void student:count() /計(jì)算總成績(jī)、平均成績(jī)stutotal.selectsort();

17、for(int i=0;itotal;i+)stui.sum=0;for(int j=0;jn;j+)stui.sum+=stui.scorej;stui.ave=stui.sum/n;void student:sort() /按學(xué)號(hào)升序排列student abc;int i,j;for(i=0;itotal-1;i+)for(j=i+1;jstuj.num)abc=stuj;stuj=stui;stui=abc;void student:display() /顯示學(xué)生個(gè)人信息selectsort(); /調(diào)用按總成績(jī)降序排列函數(shù)cout學(xué)號(hào)setw(10)姓名setw(10)數(shù)學(xué)成績(jī)setw

18、(10)英語成績(jī)setw(10)c+成績(jī)setw(10)平均成績(jī)setw(10)總成績(jī)setw(10)排名endl;for(int i=0;itotal;i+)stui.range=i+1;coutsetw(10)stui.numsetw(10);for(int j=0;jn;j+)coutsetw(10)stui.scorej;coutsetw(10)stui.avesetw(10)stui.sumsetw(10)stui.rangeendl;void all:average() /計(jì)算各科的平均成績(jī)for(int j=0;jn;j+)long double a=0;for

19、(int i=0;itotal;i+)a+=stui.scorej;alj.ave=a/double(total);void all:count() /計(jì)算各科的各等級(jí)人數(shù)及其比例for(int j=0;jn;j+)int a=0,b=0,c=0,d=0,e=0;for(int i=0;itotal;i+)if(stui.scorej60)a+;else if(stui.scorej70)b+;else if(stui.scorej80)c+;else if(stui.scorej90)d+;elsee+;alj.people0=a; /數(shù)學(xué)科不及格人數(shù)alj.people1=b; /數(shù)學(xué)科及

20、格人數(shù)alj.people2=c; /數(shù)學(xué)科中等人數(shù)alj.people3=d; /數(shù)學(xué)科良好人數(shù)alj.people4=e; /數(shù)學(xué)科優(yōu)秀人數(shù)alj.percent0=a/double(total); /數(shù)學(xué)科不及格人數(shù)所占的比例alj.percent1=b/double(total); /數(shù)學(xué)科及格人數(shù)所占的比例alj.percent2=c/double(total); /數(shù)學(xué)科中等人數(shù)所占的比例alj.percent3=d/double(total); /數(shù)學(xué)科良好人數(shù)所占的比例alj.percent4=e/double(total); /數(shù)學(xué)科優(yōu)秀人數(shù)所占的比例void all:dis

21、play() /輸出整體信息for(int j=0;jn;j+)switch(j)case 0:cout*endl;cout數(shù)學(xué)科統(tǒng)計(jì)結(jié)果為endl;cout*endl;coutendl;break;case 1:cout*endl;cout英語科統(tǒng)計(jì)結(jié)果為endl;cout*endl;coutendl;break;case 2:cout*endl;coutc+統(tǒng)計(jì)結(jié)果為endl;cout*endl;coutendl;break;cout平均成績(jī)?yōu)?alj.aveendl;coutendl;cout不及格人數(shù)為:alj.people0endl;cout及格人數(shù)為:alj.people1endl

22、;cout中等人數(shù)為:alj.people2endl;cout良好人數(shù)為:alj.people3endl;cout優(yōu)秀人數(shù)為:alj.people4endl;cout不及格人數(shù)為:alj.percent0endl;cout及格人數(shù)比為:alj.percent1endl;cout中等人數(shù)為:alj.percent2endl;cout良好人數(shù)比為:alj.percent3endl;cout優(yōu)秀人數(shù)比為:alj.percent4endl;coutendl;void student:search() /查詢int find_num;bool flag=false;cout請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào)fin

23、d_num;for(int i=0;itotal;i+)if(stui.num=find_num) /如果要找的學(xué)號(hào)與其中某一個(gè)學(xué)生的學(xué)號(hào)相同coutsetw(10)stui.numendl;cout已經(jīng)找到該學(xué)生信息,他的有關(guān)信息是:endl;coutsetw(10);for(int j=0;jn;j+)coutsetw(10)stui.scorej;coutsetw(10)stui.avesetw(10)setw(10)stui.sumsetw(10)stui.rangeendl; /輸出學(xué)生信息flag=true;break; if(flag=false)cout找不到

24、該學(xué)生的學(xué)號(hào)endl; /如找不到輸出找不到信息void student:exit() /修改int id;bool flag=false;string name1;cout請(qǐng)輸入要修改的學(xué)生的信息endl;coutsetw(12)學(xué)號(hào):setw(12)endl;cout姓名:setw(12)endl;cout數(shù)學(xué)成績(jī):setw(12)endl;cout英語成績(jī):setw(12)endl;coutc+成績(jī):id;cinname1;for(int i=0;itotal;i+)if(stui.num=id)stui.num=id;=name1;flag=true;break;if

25、(flag=false)cout找不到該學(xué)生的學(xué)號(hào)endl;void student:insert() /插入int a;string aa;double x,y,z;stutotal.sort(); /調(diào)用按學(xué)號(hào)升序排列函數(shù)cout請(qǐng)輸入要插入的學(xué)生的信息endl; /輸入要插入學(xué)生的信息coutsetw(12)學(xué)號(hào)setw(12)姓名setw(12)數(shù)學(xué)成績(jī)setw(12)英語成績(jī)setw(12)c+成績(jī)aaaxyz;stutotal.num=a;=aa;stutotal.score0=x;stutotal.score1=y;stutotal.score2=z;i

26、nt student:del() /刪除int i,j,abc;cout請(qǐng)輸入要?jiǎng)h除的學(xué)號(hào):abc;stutotal.sort(); /調(diào)用按學(xué)號(hào)升序排列函數(shù)for(i=0;itotal;i+)if(abc=stui.num) /如果某一個(gè)學(xué)生的學(xué)號(hào)與要?jiǎng)h除的學(xué)生的學(xué)號(hào)相同break;if(itotal)for(j=i;jtotal;j+)stuj=stuj+1;return 1;elsereturn 0;void menu(); /顯示主菜單class student;class all;void student:display();void all:display(); /顯示學(xué)生信息vo

27、id student:insert(); /插入學(xué)生(自動(dòng)排序)int student:del(); /刪除學(xué)生void student:search(); /按學(xué)號(hào)查詢int main()class student stun;class all aln;char ch;int select; /total為學(xué)生總數(shù),select為選擇dosystem(cls);menu();cout請(qǐng)輸入你的選擇:select;system(cls);switch(select)case 1:dosystem(cls);stutotal.input();total+; /人數(shù)+1cout輸入成功,繼續(xù)輸入請(qǐng)

28、輸入y/y:endl;cout退出請(qǐng)輸入其他鍵endl;fflush(stdin);ch=getchar();while(ch=y|ch=y);coutendl;break;case 2:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsecout學(xué)生信息為:endl;stutotal.count();stutotal.display(); /顯示coutendl;break;case 3:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsecout各科學(xué)生成績(jī)?yōu)?endl;aln.average();aln.count();al

29、n.display();coutendl;break;case 4:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsedostutotal.search();cout查詢成功,繼續(xù)查詢請(qǐng)輸入y/y:endl;cout退出請(qǐng)按其他鍵endl;fflush(stdin);ch=getchar();while(ch=y|ch=y);break;case 5:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1添加數(shù)據(jù)endl;elsedostutotal.exit(); /修改cout修改成功,繼續(xù)修改請(qǐng)輸入y/y:endl;cout退出請(qǐng)按其他鍵endl;fflush(stdin);ch=getchar();while(ch=y|ch=y);break;case 6:if(total=0)cout數(shù)組為空,請(qǐng)?jiān)谥鞑藛沃羞x擇1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論