




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第頁南昌大學C++選修課課程設計報告題目:C++學生成績統(tǒng)計管理系統(tǒng)學院:機電工程學院專業(yè):15級動力工程專業(yè)姓名:梁帥帥學號:4電話:2019年6月17日目錄1.需求分析…………32.概要設計…………33.程序實現(xiàn)思路……44.設計總結…………45.參考文獻…………56.源代碼……………6一、需求分析經過研一下學期C++選修課的學習,對C++基于對象的程序設計有了一定的認識,根據(jù)所學的知識,設計學生成績管理系統(tǒng)。學生成績統(tǒng)計管理系統(tǒng)是為某班級成績統(tǒng)計管理的一個系統(tǒng)。為方便班級的管理人員對學生的信息進行管理,該系統(tǒng)中包括學號、姓名、大學物理、高數(shù)、C++語言,各科平均成績、各科成績“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人數(shù)及其所占比例,學生的總成績、平均成績及成績排名。通過仔細研究借鑒眾多相關畢業(yè)設計研究等文獻資料(見參考文獻一),學習書籍譚浩強《面向對象的C++程序設計》編寫了該成績管理系統(tǒng)。主要的功能有學生數(shù)據(jù)的增加、刪除、修改、查詢,另外實現(xiàn)一些統(tǒng)計的功能,例如:成績的輸入、成績統(tǒng)計、總成績統(tǒng)計、成績的統(tǒng)計結果顯示。二、概要設計1、本程序所用到的所有抽象數(shù)據(jù)類型的定義如下:序號成員名數(shù)據(jù)類型含義1numlong學號2namestring姓名3sumdouble總分4rangeint排名5avedouble平均分6score[]double記錄數(shù)組2、各程序模塊的功能voidinput();//輸入voidcount();//計算voidsort();//按學號升序排列 voidselectsort();//按總成績降序排列voidinsert();//增加intdel();//刪除voidstudent::Exit();//修改voidsearch();//查詢voiddisplay();//顯示以下為統(tǒng)計模塊:voidcount();//計算成員函數(shù)voidaverage();//計算平均值成員函數(shù)voiddisplay();//顯示成員函數(shù)三、程序實現(xiàn)思路1.設計菜單實現(xiàn)功能①成績的輸入(學號、姓名、大學物理、高數(shù)、C++語言)。②成績統(tǒng)計(各科平均成績、各科成績“優(yōu)秀”、“良好”、“中等”、“及格”、“不及格”的人數(shù)及其所占比例)。③總成績統(tǒng)計(學生的總成績、平均成績及成績排名)。④成績的統(tǒng)計結果顯示。⑤學生數(shù)據(jù)的增加、修改、及刪除。⑥學生數(shù)據(jù)的讀取及存儲。2.設計類及對象classstudent//建立學生student類,目的是存儲學生個人信息public: longnum;//學號 stringname;//姓名 doublescore[n];//學生科目成績doublesum;//總成績 doubleave;//平均成績 intrange;//排名voidinsert();//增加intdel();//刪除voidsearch();//查詢voidstudent::Exit();//修改 voiddisplay();//顯示voidinput();//輸入 voidcount();//計算 voidsort();//按學號升序排列 voidselectsort();//按總成績降序排列}stu[N];classall//建立整體all類,目的是存放學生整體信息public: doubleave;//每學科的平均成績 intpeople[5];//每學科的各等級人數(shù)doublepercent[5];//每學科的各等級人數(shù)比例voidcount();//計算成員函數(shù) voidaverage();//計算平均值成員函數(shù) voiddisplay();//顯示成員函數(shù)}al[n];3.通過類的調用實現(xiàn)功能設計case0: cout<<"*******************"<<endl; cout<<"高數(shù)科統(tǒng)計結果為"<<endl; cout<<"*******************"<<endl; cout<<endl; break;case1: cout<<"*******************"<<endl; cout<<"大學物理科統(tǒng)計結果為"<<endl; cout<<"*******************"<<endl; cout<<endl; break;case2: cout<<"*******************"<<endl; cout<<"C++統(tǒng)計結果為"<<endl; cout<<"*******************"<<endl; cout<<endl; break;case3: if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl; else cout<<"學生信息為:"<<endl; stu[total].count(); stu[total].display();//顯示cout<<endl;break;case4: if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl; else cout<<"各科學生成績?yōu)?"<<endl; al[n].average(); al[n].count();al[n].display(); cout<<endl; break;case5: if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl; else do stu[total].search(); cout<<"查詢成功,繼續(xù)查詢請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar(); while(ch=='Y'||ch=='y');break;case6: if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl; else dostu[total].Exit();//修改cout<<"修改成功,繼續(xù)修改請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar(); while(ch=='Y'||ch=='y'); break;case7: if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl; elsedosystem("cls");stu[total].insert();//增加total++;cout<<"增加成功,繼續(xù)增加請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar();cout<<endl;while(ch=='Y'||ch=='y');break;case8:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsedosystem("cls"); if(stu[total].del())//刪除 total--;//人數(shù)-1system("cls");elsecout<<"該學號不存在"<<endl;system("pause");system("cls");cout<<"刪除成功,繼續(xù)刪除請輸入Y/y:"<<endl;cout<<"退出該選擇請按其他鍵"<<endl;fflush(stdin);ch=getchar();cout<<endl; while(ch=='Y'||ch=='y');break;case9:cout<<"此操作將刪除所有記錄"<<endl;cout<<"繼續(xù)該操作請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar();if(ch=='Y'||ch=='y')total=0;break;default: cout<<"確定要退出嗎?"<<endl;cout<<"退出請輸入Y/y:"<<endl;fflush(stdin);ch=getchar();cout<<endl;if(ch=='y'||ch=='Y')exit(0);break;system("pause");}while(1);四、設計總結通過為期兩周的努力,挑戰(zhàn)程序設計的難度,終于將程序正確地運行。雖說只是一個簡單的程序,但它卻見證了我從編寫、調試、修改、運行、再修改等一系列的過程,收錄了我努力后的小小成果。從不斷調試中遇到的錯誤中,我發(fā)現(xiàn)了自己的不足,同時也學會讓自己如何面對挑戰(zhàn)。運用結構體、類等新學的內容讓我再次感受到了學習的重要性。都說“萬變不離其宗”,書本是我們課后學習的參照。因為沒有重視書本,讓我在編譯時不斷翻看,這也堅定了我努力學好這門課程的決心。五、參考文獻1.譚浩強《C++程序設計》清華出版社2019,5六、源代碼學生成績統(tǒng)計管理程序#include<iostream>//引用庫函數(shù)#include<iomanip>//引用控制符處理#include<string>//字符串usingnamespacestd;#defineN100//宏定義#definen3classstudent//建立學生類,用于存儲學生個人信息public:longnum;//學號stringname;//姓名doublescore[n];//學生科目成績doublesum;//總成績doubleave;//平均成績intrange;//排名voidinput();//輸入voidcount();//計算voidsort();//按學號升序排列voidselectsort();//按總成績降序排列voidsearch();//查詢voidinsert();//增加intdel();//刪除voidstudent::Exit();//修改數(shù)據(jù)voiddisplay();//顯示}stu[N];classall//建立整體類,用來存放學生整體信息public:doubleave;//每學科的平均成績intpeople[5];//每學科的各等級人數(shù)doublepercent[5];//每學科的各等級人數(shù)比例voidcount();//計算成員函數(shù)voidaverage();//計算平均值成員函數(shù)voiddisplay();//顯示成員函數(shù)}al[n];inttotal=0;//定義全局變量voidstudent::input()//輸入學生個人信息cout<<"請輸入學生信息:"<<endl;cout<<"學號"<<setw(8)<<"姓名"<<setw(12)<<"高數(shù)成績"<<setw(10)<<"大學物理成績"<<setw(10)<<"C++成績"<<endl;cin>>setw(10)>>stu[total].num;cin>>setw(10)>>stu[total].name;for(intj=0;j<n;j++)cin>>setw(10)>>stu[total].score[j];voidstudent::selectsort()//按總成績降序排列studentaa;inti,j;for(i=0;i<total-1;i++)for(j=i+1;j<total;j++)if(stu[i].sum<stu[j].sum){aa=stu[j];stu[j]=stu[i];stu[i]=aa;voidstudent::count()//計算總成績、平均成績stu[total].selectsort();for(inti=0;i<total;i++)stu[i].sum=0;for(intj=0;j<n;j++)stu[i].sum+=stu[i].score[j];stu[i].ave=stu[i].sum/n;voidstudent::sort()//按學號升序排列studentabc;inti,j;for(i=0;i<total-1;i++)for(j=i+1;j<total;j++)if(stu[i].num>stu[j].num)abc=stu[j];stu[j]=stu[i];stu[i]=abc;voidstudent::display()//顯示學生個人信息selectsort();//調用按總成績降序排列函數(shù)cout<<"學號"<<setw(10)<<"姓名"<<setw(10)<<"高數(shù)成績"<<setw(10)<<"大學物理成績"<<setw(10)<<"C++成績"<<setw(10)<<"平均成績"<<setw(10)<<"總成績"<<setw(10)<<"排名"<<endl;for(inti=0;i<total;i++)stu[i].range=i+1;cout<<setw(10)<<stu[i].num<<setw(10)<<stu[i].name;for(intj=0;j<n;j++)cout<<setw(10)<<stu[i].score[j];cout<<setw(10)<<stu[i].ave<<setw(10)<<stu[i].sum<<setw(10)<<stu[i].range<<endl;voidall::average()//計算各科的平均成績for(intj=0;j<n;j++)longdoublea=0;for(inti=0;i<total;i++){a+=stu[i].score[j];al[j].ave=a/double(total);voidall::count()//計算各科的各等級人數(shù)及其比例for(intj=0;j<n;j++)inta=0,b=0,c=0,d=0,e=0;for(inti=0;i<total;i++)if(stu[i].score[j]<60)a++;elseif(stu[i].score[j]<70)b++;elseif(stu[i].score[j]<80)c++;elseif(stu[i].score[j]<90)d++;elsee++;al[j].people[0]=a;//高數(shù)科不及格人數(shù)al[j].people[1]=b;//高數(shù)科及格人數(shù)al[j].people[2]=c;//高數(shù)科中等人數(shù)al[j].people[3]=d;//高數(shù)科良好人數(shù)al[j].people[4]=e;//高數(shù)科優(yōu)秀人數(shù)al[j].percent[0]=a/double(total);//高數(shù)科不及格人數(shù)所占的比例al[j].percent[1]=b/double(total);//高數(shù)科及格人數(shù)所占的比例al[j].percent[2]=c/double(total);//高數(shù)科中等人數(shù)所占的比例al[j].percent[3]=d/double(total);//高數(shù)科良好人數(shù)所占的比例al[j].percent[4]=e/double(total);//高數(shù)科優(yōu)秀人數(shù)所占的比例voidall::display()//輸出整體信息for(intj=0;j<n;j++)switch(j)case0:cout<<"*******************"<<endl;cout<<"高數(shù)科統(tǒng)計結果為"<<endl;cout<<"*******************"<<endl;cout<<endl;break;case1:cout<<"*******************"<<endl;cout<<"大學物理科統(tǒng)計結果為"<<endl;cout<<"*******************"<<endl;cout<<endl;break;case2:cout<<"*******************"<<endl;cout<<"C++統(tǒng)計結果為"<<endl;cout<<"*******************"<<endl;cout<<endl;break;cout<<"平均成績?yōu)?"<<al[j].ave<<endl;cout<<endl;cout<<"不及格人數(shù)為:"<<al[j].people[0]<<endl;cout<<"及格人數(shù)為:"<<al[j].people[1]<<endl;cout<<"中等人數(shù)為:"<<al[j].people[2]<<endl;cout<<"良好人數(shù)為:"<<al[j].people[3]<<endl;cout<<"優(yōu)秀人數(shù)為:"<<al[j].people[4]<<endl;cout<<"不及格人數(shù)為:"<<al[j].percent[0]<<endl;cout<<"及格人數(shù)比為:"<<al[j].percent[1]<<endl;cout<<"中等人數(shù)為:"<<al[j].percent[2]<<endl;cout<<"良好人數(shù)比為:"<<al[j].percent[3]<<endl;cout<<"優(yōu)秀人數(shù)比為:"<<al[j].percent[4]<<endl;cout<<endl;voidstudent::search()//查詢intfind_num;boolflag=false;cout<<"請輸入要查找的學生的學號"<<endl;cin>>find_num;for(inti=0;i<total;i++)if(stu[i].num==find_num)//如果要找的學號及其中某一個學生的學號相同cout<<setw(10)<<stu[i].num<<endl;;cout<<"已經找到該學生信息,他的有關信息是:"<<endl;cout<<setw(10)<<stu[i].name;for(intj=0;j<n;j++)cout<<setw(10)<<stu[i].score[j];cout<<setw(10)<<stu[i].ave<<setw(10)<<setw(10)<<stu[i].sum<<setw(10)<<stu[i].range<<endl;//輸出學生信息flag=true;break;if(flag==false)cout<<"找不到該學生的學號"<<endl;//如找不到輸出"找不到"信息}voidstudent::Exit()//修改intID;boolflag=false;stringname1;cout<<"請輸入要修改的學生的信息"<<endl;cout<<setw(12)<<"學號:"<<setw(12)<<endl;cout<<"姓名:"<<setw(12)<<endl;cout<<"高數(shù)成績:"<<setw(12)<<endl;cout<<"大學物理成績:"<<setw(12)<<endl;cout<<"C++成績:"<<endl;cin>>ID;cin>>name1;for(inti=0;i<total;i++)if(stu[i].num==ID)stu[i].num=ID;stu[i].name=name1;flag=true;break;if(flag==false)cout<<"找不到該學生的學號"<<endl;voidstudent::insert()//增加inta;stringaa;doublex,y,z;stu[total].sort();//調用按學號升序排列函數(shù)cout<<"請輸入要增加的學生的信息"<<endl;//輸入要增加學生的信息cout<<setw(12)<<"學號"<<setw(12)<<"姓名"<<setw(12)<<"高數(shù)成績"<<setw(12)<<"大學物理成績"<<setw(12)<<"C++成績"<<endl;cin>>a>>aa>>x>>y>>z;stu[total].num=a;stu[total].name=aa;stu[total].score[0]=x;stu[total].score[1]=y;stu[total].score[2]=z;intstudent::del()//刪除inti,j,abc;cout<<"請輸入要刪除的學號:"<<endl;cin>>abc;stu[total].sort();//調用按學號升序排列函數(shù)for(i=0;i<total;i++)if(abc==stu[i].num)//如果某一個學生的學號及要刪除的學生的學號相同break;if(i<total)for(j=i;j<total;j++)stu[j]=stu[j+1];return1;elsereturn0;voidmenu();//顯示主菜單classstudent;classall;voidstudent::display();voidall::display();//顯示學生信息voidstudent::insert();//增加學生(自動排序)intstudent::del();//刪除學生voidstudent::search();//按學號查詢intmain()//主函數(shù)classstudentstu[N];classallal[n];charch;intselect;//total為學生總數(shù),select為選擇dosystem("cls");menu();cout<<"請輸入你的選擇:"<<endl;fflush(stdin);cin>>select;system("cls");switch(select)case1:dosystem("cls");stu[total].input();total++;//人數(shù)+1cout<<"輸入成功,繼續(xù)輸入請輸入Y/y:"<<endl;cout<<"退出請輸入其他鍵"<<endl;fflush(stdin);ch=getchar();while(ch=='Y'||ch=='y');cout<<endl;break;case2:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsecout<<"學生信息為:"<<endl;stu[total].count();stu[total].display();//顯示cout<<endl;break;case3:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsecout<<"各科學生成績?yōu)?"<<endl;al[n].average();al[n].count();al[n].display();cout<<endl;break;case4:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsedostu[total].search();cout<<"查詢成功,繼續(xù)查詢請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar();while(ch=='Y'||ch=='y');break;case5:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsedostu[total].Exit();//修改cout<<"修改成功,繼續(xù)修改請輸入Y/y:"<<endl;cout<<"退出請按其他鍵"<<endl;fflush(stdin);ch=getchar();while(ch=='Y'||ch=='y');break;case6:if(total==0)cout<<"數(shù)組為空,請在主菜單中選擇1增加數(shù)據(jù)"<<endl;elsedosystem("cls");stu[total].insert();//增加total++;cout<<"增加成功,繼續(xù)增加請輸入Y/y:"<<endl;cout<<"退出請按其他鍵
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年國家開放大學(電大)《創(chuàng)業(yè)與中小企業(yè)管理》期末考試備考試題及答案解析
- 倉儲設備維護保養(yǎng)管理流程
- 2025年國家開放大學《檔案學基礎》期末考試備考試題及答案解析
- 江蘇省泰州市小區(qū)消防安全測試題十七(含答案)
- 2025年國家開放大學《漢語言文學》期末考試備考試題及答案解析
- 廣東省惠州市工廠消防安全測試題九(含答案)
- 2025年國家開放大學(電大)《邏輯學》期末考試備考試題及答案解析
- 2025年國家開放大學《信息系統(tǒng)管理》期末考試備考試題及答案解析
- 2025年國家開放大學(電大)《計算機網絡原理與應用》期末考試備考試題及答案解析
- 2025年國家開放大學(電大)《金融市場分析》期末考試備考試題及答案解析
- 《中國類風濕關節(jié)炎診療指南》(2025版)
- 遼寧省沈文新高考研究聯(lián)盟2025-2026學年高二上學期開學測試英語試卷
- 《英國下午茶文化》課件
- 2025年廣告設計師職業(yè)技能競賽(省賽)參考試題(附答案)
- 美業(yè)服務能力提升培訓課件
- 石材購銷合同范本簡單
- 基孔肯雅熱科普宣傳學習課件
- 數(shù)據(jù)結構(Java語言描述)(第2版)課件全套 張靜 單元1-8 數(shù)據(jù)結構與算法 - 哈希表
- 2025年北京市專業(yè)技術人員公需科目培訓答案
- 2025年北京市房屋租賃合同(自行成交版)模板
- 2025年幼兒園教師教育部門政策法規(guī)試題(含答案)
評論
0/150
提交評論