




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上C+課程設(shè)計報告課程題目:學(xué)生成績統(tǒng)計系統(tǒng)姓名:學(xué)號:專業(yè)班級: 指導(dǎo)老師:目 錄一、課題設(shè)計任務(wù)分析-二、程序模塊設(shè)計分析-三、程序的實現(xiàn)思路-四、程序流程圖-五、源代碼及注釋-六、測試情況-七、小結(jié)-一、課程設(shè)計任務(wù)分析:(1)需求分析:能夠?qū)崿F(xiàn)學(xué)生學(xué)號、姓名、各科成績的錄入;能夠?qū)崿F(xiàn)對學(xué)生信息的瀏覽、查找、刪除;弄夠?qū)崿F(xiàn)對學(xué)生信息按學(xué)號順序顯示,成績排名;能夠?qū)Ω骺瞥煽兘y(tǒng)計情況輸出。(2)系統(tǒng)功能要求:要求實現(xiàn)如下功能: 成績的輸入(學(xué)號、姓名、英語、數(shù)學(xué)、C+語言)。成績統(tǒng)計(各科平均成績、各科成績“優(yōu)秀”“良好”“中等”“及格” “不及格”的人數(shù)及其所占比例
2、)??偝煽兘y(tǒng)計(學(xué)生的總成績、平均成績及成績排名)。 成績的統(tǒng)計結(jié)果顯示。 學(xué)生數(shù)據(jù)的添加、修改、與刪除。 學(xué)生數(shù)據(jù)的讀取與存儲。(3)系統(tǒng)的功能分析:資料維護(hù):系統(tǒng)維護(hù)包括對各學(xué)生姓名、成績、學(xué)號的錄入操作,對數(shù)據(jù)表中的信息進(jìn)行瀏覽。成績查詢:可以對學(xué)生成績進(jìn)行詳細(xì)查詢及各科成績的優(yōu)秀和不及格人數(shù)、各科總平均成績等相關(guān)信息的瀏覽。排序顯示:包括統(tǒng)計學(xué)生排名成績、不及格科目情況、各科總平均成績。二、程序模塊設(shè)計分析:(1)添加數(shù)據(jù): 把用戶輸入的數(shù)據(jù)添加到學(xué)生類對象數(shù)組中,然后再將其入堆,使其有序。 (2)刪除數(shù)據(jù): 由用戶輸入要刪除的學(xué)生的學(xué)號,然后將其從學(xué)生類對象數(shù)組中刪除,使數(shù)組中的數(shù)據(jù)
3、仍然有序。(3)查找數(shù)據(jù): 由用戶輸入要查找的學(xué)生的學(xué)號,然后調(diào)用 leo 類中關(guān)于查找的函數(shù),將查找結(jié)果顯示 在屏幕上。(4)顯示數(shù)據(jù): 調(diào)用 leo 類中關(guān)于顯示數(shù)據(jù)的函數(shù),把所有的學(xué)生數(shù)據(jù)都顯示在屏幕上。 (5)清除數(shù)據(jù): 調(diào)用 leo 類中關(guān)于清除數(shù)據(jù)的函數(shù),把所有的學(xué)生數(shù)據(jù)都清空。(6)退出程序: 若用戶輸入了數(shù)字 0,則主函數(shù)結(jié)束循環(huán),同時程序也就結(jié)束了。三、程序的實現(xiàn)思路:先創(chuàng)建一個學(xué)生元素類,用于存放學(xué)生的各種數(shù)據(jù)。然后創(chuàng)建另一個類,把數(shù)據(jù)存儲, 可便進(jìn)行各種操作。本程序中比較核心的技術(shù)就是用到了堆排序,將學(xué)生按優(yōu)先級(高的排 前面,低的排后面)的大小進(jìn)行有序排列。堆排序的時間
4、復(fù)雜度較一般排序(如:冒泡,選 擇等)來得低,可使程序顯示數(shù)據(jù)時效率更高。(1)“成績錄入”模塊:序號錄入:對各個學(xué)生序號錄入;數(shù)據(jù)錄入:對學(xué)生科目和成績進(jìn)行錄入。(2)“查詢修改”模塊:可以對學(xué)生數(shù)據(jù)進(jìn)行指定查找、修改或查看全部學(xué)生信息;選擇輸出單科成績統(tǒng)計情況。(3)“排序顯示”模塊:可自行按學(xué)號順序顯示所有學(xué)生信息;可選擇查看學(xué)生總分排名,排序顯示到用戶屏幕。四、程序流程圖:程序中一共包括了六個模塊,分別是:添加模塊、刪除模塊、排序模塊、統(tǒng)計模塊、查找模塊、界面模塊。 (1)添加信息:(2)刪除信息:(3)信息排序:(4)統(tǒng)計信息:(5)查找信息:(6)界面模塊:五、源代碼及注釋:#in
5、clude#include#include#include#define max 300using namespace std;struct student string num;string name;float english;float math;float cyuyan;/定義c+float geten()return english;float getma()return math;float getcy()return cyuyan;string getnu()return num;string getna()return name;int rank3;int row;/排名int
6、 sinto(string,string,float,float,float);/輸入數(shù)據(jù)void output();/輸出數(shù)據(jù)float sum();/ 求和float average();/求平均void subject();/成績分類; void shows()/普通函數(shù)coutsetw(6)排名setw(6)學(xué)號setw(10)姓名setw(6)英語setw(6)數(shù)學(xué)setw(6)c+setw(6)總分setw(10)平均分endl;int student:sinto(string a1,string a2,float b1,float b2,float b3 )num=a1;name
7、=a2;english=b1;math=b2;cyuyan=b3;return 0;void student:output()/輸出coutsetw(6)rowsetw(6)numsetw(10)namesetw(6)englishsetw(6)mathsetw(6)cyuyansetw(6)sum()setw(10)setiosflags(ios:fixed)setprecision(1)average()endl;coutsetiosflags(ios:fixed)setprecision(0);float student:sum()/求總分 return english+math+cyu
8、yan;float student:average()/求平均分return sum()/3;void student:subject() int n;rank0=(int)english;rank1=(int)math;rank2=(int)cyuyan;for(int i=0;i3;i+) n=ranki/10;switch(n) case 9:n=1;break;case 8:n=2;break;case 7:n=3;break;case 6:n=4;break;default:n=5;ranki=n;/類student結(jié)束/類leo開始class leoprivate:student
9、itemmax;int size;public:leo();void lsize(int);/設(shè)置數(shù)組大小void lempty();/清空void linsert();/添加void ldelet(string);/刪除void lsearch(string);/查找void lmodify(string);/修改void lsort();/成績分類void lrow();/排序 void obave();/求平均void lview();/顯示全部數(shù)據(jù)void lcin();/從磁盤輸出void lcout();/儲存到磁盤;leo:leo() student itemmax;lsize(
10、0);void leo:lsize(int i)size=i;void leo:lempty() lsize(0);cout學(xué)生數(shù)據(jù)清除成功endl;cout當(dāng)前無學(xué)生數(shù)據(jù)。請?zhí)砑樱ndl;void leo:ldelet(string a) int k=0;string c;for(int i=0;isize;i+)if(itemi.getn()=a)cout你將要刪除的數(shù)據(jù)如下:endl;shows();itemi.output();coutc;if(c=y|c=Y) itemi=item-size;k=1; if(k!=1)coutn刪除失敗!endl;else coutn刪除成功!ma
11、x)cout超出范圍,不能再添加!endl;else coutn請輸入學(xué)號、姓名、英語、數(shù)學(xué)、c+成績:a1a2b1b2b3;for(int i=0;isize;i+)if(itemi.getnu()=a1) mn+;cout輸入的數(shù)據(jù)與下面的數(shù)據(jù)重復(fù)!endl;shows();/輸出重復(fù)的學(xué)號,姓名,英語,數(shù)學(xué),c+成績itemi.output();if(!mn)itemsize+.sinto(a1,a2,b1,b2,b3);coutn添加成功!;couta;void leo:lsearch(string a)/查找int N=0;for(int i=0;isize;i+)if(itemi.
12、getnu()=a)N+;shows();/輸出學(xué)號,姓名,英語,數(shù)學(xué),c+itemi.output();if(!N)cout輸入有誤或該學(xué)生數(shù)據(jù)不存在endl;void leo:lmodify(string a)/修改 if(size=0)cout當(dāng)前學(xué)生數(shù)據(jù)為空,請?zhí)砑?!endl;elseint N=0;for(int i=0;isize;i+)if(itemi.getnu()=a) N+;cout你將要修改的數(shù)據(jù)如下:endl;shows();itemi.output();cout請輸入要修改學(xué)生的學(xué)號,姓名,英語,數(shù)學(xué),c+成績a1a2b1b2b3;itemi.sinto(a1,a2,
13、b1,b2,b3);cout修改成功!endl;if(!N)cout輸入的學(xué)號有誤!1)for(int i=0;isize-1;i+) temb=itemi;for(int j=i+1;jsize;j+)if(itemi.sum()itemj.sum() itemi=itemj;itemj=temb; item0.row=1;for(int i=0;iitemi+1.sum() itemi+1.row=i+2;else itemi+1.row=i+1;/并列排名else if(size=1) item0.row=1;void leo:lview()/顯示if(size=0)cout當(dāng)前學(xué)生數(shù)據(jù)
14、為空,請?zhí)砑?!endl;else cout共有學(xué)生數(shù)據(jù)size條endlendl;shows();for(int i=0;isize;i+) itemi.output();void leo:obave()/統(tǒng)計科目 if(size!=0)float sum3=0;for(int i=0;isize;i+)sum0+=itemi.geten();sum1+=itemi.getma();sum2+=itemi.getcy();cout英語平均的成績?yōu)?setiosflags(ios:fixed)setprecision(1)sum0/sizen;cout數(shù)學(xué)平均的成績?yōu)?sum1/sizen;co
15、utc+的平均成績是:sum2/sizen;coutsetiosflags(ios:fixed)setprecision(0)endl;else cout當(dāng)前無學(xué)生數(shù)據(jù),請?zhí)砑樱?void leo:lsort() /成績分類 int p3300;float tem=100.00/size;string a3=英語,數(shù)學(xué),c+;if(size!=0) for(int i=0;isize;i+) itemi.subject();p0i=itemi.rank0;p1i=itemi.rank1;p2i=itemi.rank2;for(int k=0;k3;k+) int b5=0; for(int i
16、=0;isize;i+) switch(pki)case 1: b0+;break;case 2: b1+;break;case 3: b2+;break;case 4: b3+;break;case 5: b4+;break;default:break; coutak成績分類人數(shù): 優(yōu)b0人 良b1人 中b2人 及格b3人 不及格b4人endl;coutsetiosflags(ios:fixed)setprecision(1)ak成績分類比例: 優(yōu)(float)b0*tem% 良(float)b1*tem% 中(float)b2*tem% 及格(float)b3*tem% 不及格(float
17、)b4*tem%endlendl;coutsetiosflags(ios:fixed)setprecision(0)endl;void leo:lcin() string a300,b300;float c300,d300,e300;int f300;ifstream infile(ok.txt,ios:in);if(! infile) cerr初次使用此系統(tǒng),請選擇先清除所有數(shù)據(jù)。endl;for(int i=0;iaibicidieifi;itemsize.sinto(ai,bi,ci,di,ei);size+;if(fi=1) break; infile.close();void leo
18、:lcout()ofstream outfile(ok.txt,ios:out);if(! outfile) cerr文件打開失敗!endl;for(int i=0;isize;i+)outfileitemi.num itemi.english itemi.math itemi.cyuyan size-iendl;outfile.close();void showmenu()cout ;cout|*|endl;cout ;cout|歡迎使用學(xué)生成績統(tǒng)計管理系統(tǒng)|endl;cout ;cout|*|endl;cout ;cout| 1.顯示:顯示所有學(xué)生數(shù)據(jù)(按總分排序)|
19、endl;cout ;cout| 2.查看:查看所有統(tǒng)計結(jié)果 |endl;cout ;cout| 3.添加:插入一個學(xué)生數(shù)據(jù) |endl;cout ;cout| 4.刪除:刪除一個學(xué)生數(shù)據(jù) |endl;cout ;cout| 5.查找: 查找指定學(xué)生數(shù)據(jù) |endl;cout ;cout| 6.修改:修改指定學(xué)生數(shù)據(jù) |endl;cout ;cout| 7.清空:清除所有學(xué)生數(shù)據(jù) |endl;cout ;cout| 8.幫助:查看系統(tǒng)注意事項 |endl;cout ;cout| 0.退出:將數(shù)據(jù)保存到磁盤 |endl;cout ;void showtip() coutntt操作完成!endl;
20、couttt選擇0-8繼續(xù)endl;int main()leo leo1;string c=s,a;system(cls);/清屛showmenu();cout正在打開文件,請稍后!endl;leo1.lcin();coutc;while(c!=0)system(cls);showmenu();if(c=1) cout你選擇了1,學(xué)生數(shù)據(jù)顯示如下:endlendl;leo1.lrow();/排序leo1.lview();if(c=2) cout你選擇了2,統(tǒng)計結(jié)果如下:endl;leo1.obave();/各科平均成績,leo1.lsort();/各科分類情況if(c=3) cout你選擇了3
21、,請輸入學(xué)生數(shù)據(jù);leo1.linsert();if(c=4) cout你選擇了4,請輸入要刪除的學(xué)號:a;leo1.ldelet(a);if(c=5)cout你選擇了5,請輸入要查找的學(xué)號:a;leo1.lsearch(a);if(c=6)cout你選擇了6,請輸入要修改的學(xué)號:a;leo1.lmodify(a);if(c=7) cout你選擇了7,全部數(shù)據(jù)將要清空endl;cout你確定清空嗎?輸入y確定,n退出a;if(a=y|a=Y)leo1.lempty ();if(c=8) cout1.本系統(tǒng)最多可容納300個學(xué)生數(shù)據(jù).endl;cout2.如不能正常添加數(shù)據(jù),請檢查使用前是否清空了數(shù)據(jù).endl;c
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修全包清單合同協(xié)議
- 解聘育齡女員工合同協(xié)議
- 2025年教育大數(shù)據(jù)在學(xué)前教育決策支持中的應(yīng)用前景報告
- 助理廣告師考試中目標(biāo)制定的科學(xué)方法與實踐試題及答案
- 公主測試題大全及答案
- 親身體驗案例2024國際商業(yè)美術(shù)設(shè)計師試題及答案
- 助理廣告師考試的策略分析與自我提升方法探討試題及答案
- 江陰中考物理試題及答案
- 天津支教測試題及答案
- 2025年N-羥基琥珀酰亞胺生物素項目市場調(diào)查研究報告
- 2025怎樣正確理解全過程人民民主的歷史邏輯、實踐邏輯與理論邏輯?(答案3份)
- GB/T 45501-2025工業(yè)機器人三維視覺引導(dǎo)系統(tǒng)通用技術(shù)要求
- GA/T 1799-2021保安安全檢查通用規(guī)范
- 細(xì)胞的能量“貨幣”ATP說課課件-高一上學(xué)期生物人教版必修1
- 解剖學(xué)課件神經(jīng)系統(tǒng)課件
- 《基于繪本閱讀的幼兒語言能力發(fā)展研究(論文)》9300字
- 印巴戰(zhàn)爭(修改稿)
- 工程項目管理實施方案(5篇)
- 郭秀蘭:大學(xué)語文說課程
- 2021年全國質(zhì)量獎現(xiàn)場匯報材料-基礎(chǔ)設(shè)施、設(shè)備及設(shè)施管理過程課件
- 防爆電氣失爆判別標(biāo)準(zhǔn)和常見失爆現(xiàn)象匯總
評論
0/150
提交評論