![C++課程設計報告(學生成績統(tǒng)計系統(tǒng)-修正版)(共19頁)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/a3f485cd-2a37-4110-8cc1-b3d3fc459992/a3f485cd-2a37-4110-8cc1-b3d3fc4599921.gif)
![C++課程設計報告(學生成績統(tǒng)計系統(tǒng)-修正版)(共19頁)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/a3f485cd-2a37-4110-8cc1-b3d3fc459992/a3f485cd-2a37-4110-8cc1-b3d3fc4599922.gif)
![C++課程設計報告(學生成績統(tǒng)計系統(tǒng)-修正版)(共19頁)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/a3f485cd-2a37-4110-8cc1-b3d3fc459992/a3f485cd-2a37-4110-8cc1-b3d3fc4599923.gif)
![C++課程設計報告(學生成績統(tǒng)計系統(tǒng)-修正版)(共19頁)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/a3f485cd-2a37-4110-8cc1-b3d3fc459992/a3f485cd-2a37-4110-8cc1-b3d3fc4599924.gif)
![C++課程設計報告(學生成績統(tǒng)計系統(tǒng)-修正版)(共19頁)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/24/a3f485cd-2a37-4110-8cc1-b3d3fc459992/a3f485cd-2a37-4110-8cc1-b3d3fc4599925.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質文檔-傾情為你奉上C+課程設計報告課程題目:學生成績統(tǒng)計系統(tǒng)姓名:學號:專業(yè)班級: 指導老師:目 錄一、課題設計任務分析-二、程序模塊設計分析-三、程序的實現(xiàn)思路-四、程序流程圖-五、源代碼及注釋-六、測試情況-七、小結-一、課程設計任務分析:(1)需求分析:能夠實現(xiàn)學生學號、姓名、各科成績的錄入;能夠實現(xiàn)對學生信息的瀏覽、查找、刪除;弄夠實現(xiàn)對學生信息按學號順序顯示,成績排名;能夠對各科成績統(tǒng)計情況輸出。(2)系統(tǒng)功能要求:要求實現(xiàn)如下功能: 成績的輸入(學號、姓名、英語、數(shù)學、C+語言)。成績統(tǒng)計(各科平均成績、各科成績“優(yōu)秀”“良好”“中等”“及格” “不及格”的人數(shù)及其所占比例
2、)??偝煽兘y(tǒng)計(學生的總成績、平均成績及成績排名)。 成績的統(tǒng)計結果顯示。 學生數(shù)據(jù)的添加、修改、與刪除。 學生數(shù)據(jù)的讀取與存儲。(3)系統(tǒng)的功能分析:資料維護:系統(tǒng)維護包括對各學生姓名、成績、學號的錄入操作,對數(shù)據(jù)表中的信息進行瀏覽。成績查詢:可以對學生成績進行詳細查詢及各科成績的優(yōu)秀和不及格人數(shù)、各科總平均成績等相關信息的瀏覽。排序顯示:包括統(tǒng)計學生排名成績、不及格科目情況、各科總平均成績。二、程序模塊設計分析:(1)添加數(shù)據(jù): 把用戶輸入的數(shù)據(jù)添加到學生類對象數(shù)組中,然后再將其入堆,使其有序。 (2)刪除數(shù)據(jù): 由用戶輸入要刪除的學生的學號,然后將其從學生類對象數(shù)組中刪除,使數(shù)組中的數(shù)據(jù)
3、仍然有序。(3)查找數(shù)據(jù): 由用戶輸入要查找的學生的學號,然后調用 leo 類中關于查找的函數(shù),將查找結果顯示 在屏幕上。(4)顯示數(shù)據(jù): 調用 leo 類中關于顯示數(shù)據(jù)的函數(shù),把所有的學生數(shù)據(jù)都顯示在屏幕上。 (5)清除數(shù)據(jù): 調用 leo 類中關于清除數(shù)據(jù)的函數(shù),把所有的學生數(shù)據(jù)都清空。(6)退出程序: 若用戶輸入了數(shù)字 0,則主函數(shù)結束循環(huán),同時程序也就結束了。三、程序的實現(xiàn)思路:先創(chuàng)建一個學生元素類,用于存放學生的各種數(shù)據(jù)。然后創(chuàng)建另一個類,把數(shù)據(jù)存儲, 可便進行各種操作。本程序中比較核心的技術就是用到了堆排序,將學生按優(yōu)先級(高的排 前面,低的排后面)的大小進行有序排列。堆排序的時間
4、復雜度較一般排序(如:冒泡,選 擇等)來得低,可使程序顯示數(shù)據(jù)時效率更高。(1)“成績錄入”模塊:序號錄入:對各個學生序號錄入;數(shù)據(jù)錄入:對學生科目和成績進行錄入。(2)“查詢修改”模塊:可以對學生數(shù)據(jù)進行指定查找、修改或查看全部學生信息;選擇輸出單科成績統(tǒng)計情況。(3)“排序顯示”模塊:可自行按學號順序顯示所有學生信息;可選擇查看學生總分排名,排序顯示到用戶屏幕。四、程序流程圖:程序中一共包括了六個模塊,分別是:添加模塊、刪除模塊、排序模塊、統(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)學號setw(10)姓名setw(6)英語setw(6)數(shù)學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結束/類leo開始class leoprivate:student
9、itemmax;int size;public:leo();void lsize(int);/設置數(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學生數(shù)據(jù)清除成功endl;cout當前無學生數(shù)據(jù)。請?zhí)砑?!endl;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請輸入學號、姓名、英語、數(shù)學、c+成績:a1a2b1b2b3;for(int i=0;isize;i+)if(itemi.getnu()=a1) mn+;cout輸入的數(shù)據(jù)與下面的數(shù)據(jù)重復!endl;shows();/輸出重復的學號,姓名,英語,數(shù)學,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();/輸出學號,姓名,英語,數(shù)學,c+itemi.output();if(!N)cout輸入有誤或該學生數(shù)據(jù)不存在endl;void leo:lmodify(string a)/修改 if(size=0)cout當前學生數(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請輸入要修改學生的學號,姓名,英語,數(shù)學,c+成績a1a2b1b2b3;itemi.sinto(a1,a2,
13、b1,b2,b3);cout修改成功!endl;if(!N)cout輸入的學號有誤!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當前學生數(shù)據(jù)
14、為空,請?zhí)砑?!endl;else cout共有學生數(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ù)學平均的成績?yōu)?sum1/sizen;co
15、utc+的平均成績是:sum2/sizen;coutsetiosflags(ios:fixed)setprecision(0)endl;else cout當前無學生數(shù)據(jù),請?zhí)砑樱?void leo:lsort() /成績分類 int p3300;float tem=100.00/size;string a3=英語,數(shù)學,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文件打開失?。ndl;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|歡迎使用學生成績統(tǒng)計管理系統(tǒng)|endl;cout ;cout|*|endl;cout ;cout| 1.顯示:顯示所有學生數(shù)據(jù)(按總分排序)|
19、endl;cout ;cout| 2.查看:查看所有統(tǒng)計結果 |endl;cout ;cout| 3.添加:插入一個學生數(shù)據(jù) |endl;cout ;cout| 4.刪除:刪除一個學生數(shù)據(jù) |endl;cout ;cout| 5.查找: 查找指定學生數(shù)據(jù) |endl;cout ;cout| 6.修改:修改指定學生數(shù)據(jù) |endl;cout ;cout| 7.清空:清除所有學生數(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,學生數(shù)據(jù)顯示如下:endlendl;leo1.lrow();/排序leo1.lview();if(c=2) cout你選擇了2,統(tǒng)計結果如下:endl;leo1.obave();/各科平均成績,leo1.lsort();/各科分類情況if(c=3) cout你選擇了3
21、,請輸入學生數(shù)據(jù);leo1.linsert();if(c=4) cout你選擇了4,請輸入要刪除的學號:a;leo1.ldelet(a);if(c=5)cout你選擇了5,請輸入要查找的學號:a;leo1.lsearch(a);if(c=6)cout你選擇了6,請輸入要修改的學號: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個學生數(shù)據(jù).endl;cout2.如不能正常添加數(shù)據(jù),請檢查使用前是否清空了數(shù)據(jù).endl;c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年乳膠漆粉刷施工合同協(xié)議(2篇)
- 2025年產品買賣合同范文(2篇)
- 2025年二手房分期購房合同(三篇)
- 2025年個人車位租賃合同參考模板(三篇)
- 2025年臨時商鋪租賃合同簡單版(2篇)
- 2025年買賣合同黃金現(xiàn)貨(三篇)
- 2025年個人消費貸款合同(三篇)
- 2025年中外來料加工合同參考樣本(三篇)
- 2025年人員培訓技術咨詢合同模板(2篇)
- 體育館裝修工程合同書
- 藥膳與食療試題及答案高中
- 手術室植入物的管理
- 電力供電系統(tǒng)試驗調試和聯(lián)調方法
- Unit6AtthesnackbarStorytimeDiningwithdragons(課件)譯林版英語四年級上冊
- 2023年四川省公務員錄用考試《行測》真題卷及答案解析
- 機電一體化系統(tǒng)設計-第5章-特性分析
- 2025年高考物理復習壓軸題:電磁感應綜合問題(原卷版)
- 《辛德勒的名單》電影賞析
- 20S515 鋼筋混凝土及磚砌排水檢查井
- 雨棚鋼結構施工組織設計正式版
- 醫(yī)院重點監(jiān)控藥品管理制度
評論
0/150
提交評論