C++程序課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc
《C++程序課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《C++程序課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng).doc(20頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、C+程序課程設(shè)計(jì)報(bào)告 成績(jī)查詢(xún)管理系統(tǒng)C+程序課程設(shè)計(jì)報(bào)告學(xué)院:資源與安全工程學(xué)院專(zhuān)業(yè)班級(jí):采礦1401班課題:學(xué)生成績(jī)管理系統(tǒng)姓名:指導(dǎo)教師:設(shè)計(jì)時(shí)間:2015年 7月6日至7月17日目錄一、程序設(shè)計(jì)目的2二、程序功能介紹2三、程序設(shè)計(jì)21)程序結(jié)構(gòu)22)主函數(shù)流程圖43)系統(tǒng)功能流程圖5四、調(diào)試與分析61)程序調(diào)試過(guò)程72)程序的不足7五、執(zhí)行結(jié)果8六、課程設(shè)計(jì)總結(jié)8附錄:源程序代碼919一、程序設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來(lái),對(duì)不同的數(shù)據(jù)類(lèi)型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過(guò)課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)
2、該得到鍛煉:(1)進(jìn)一步鞏固、加深學(xué)生所學(xué)專(zhuān)業(yè)課程C+程序設(shè)計(jì)語(yǔ)言的基本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問(wèn)題,解決問(wèn)題的能力。(2)全面考核學(xué)生所掌握的基本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而達(dá)到提高學(xué)生素質(zhì)的最終目的。(3)利用所學(xué)知識(shí),開(kāi)發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C+語(yǔ)言編寫(xiě)調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開(kāi)發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。(4)對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型。(5)掌握結(jié)構(gòu)化程序設(shè)計(jì)方法,熟悉面向?qū)ο蟪绦蛟O(shè)計(jì)方法。(6)熟練掌握C+語(yǔ)言的基本語(yǔ)法,靈活運(yùn)用各種數(shù)據(jù)類(lèi)型。(7)進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序和修改程序。二、程序功能介
3、紹(1)數(shù)據(jù)輸入:添加學(xué)生姓名,系統(tǒng)自動(dòng)生成學(xué)號(hào),并輸入學(xué)生成績(jī);(2)查詢(xún)成績(jī):通過(guò)姓名查詢(xún)成績(jī),輸入待查學(xué)生姓名可輸出該學(xué)生成績(jī);通過(guò)學(xué)號(hào)查詢(xún),輸入待查學(xué)生學(xué)號(hào),輸出該學(xué)生成績(jī);(3)修改成績(jī):輸入需要修改成績(jī)學(xué)生姓名,并輸入新成績(jī);(4)輸出所有學(xué)生成績(jī):可以將所有學(xué)生的姓名,學(xué)號(hào),成績(jī)輸出;(5)統(tǒng)計(jì)及格及優(yōu)秀人數(shù);(6)儲(chǔ)存學(xué)生數(shù)據(jù);(7)清屏。三、程序設(shè)計(jì)1、程序結(jié)構(gòu)student類(lèi):定義公有成員姓名,學(xué)號(hào),成績(jī),和成績(jī)等級(jí)。Function類(lèi):(1)定義私有成員stu數(shù)組和計(jì)數(shù)n(2)成員函數(shù): Function ()學(xué)號(hào)計(jì)數(shù)器重置 Input()添加學(xué)生和成績(jī)并排列成績(jī)等級(jí) Q
4、ueryByID()按學(xué)號(hào)查詢(xún)學(xué)生信息 QueryByName()按姓名查詢(xún)成績(jī) ModifyScore()修改成績(jī) Output()輸出所有學(xué)生成績(jī) Tongji()統(tǒng)計(jì)及格和優(yōu)秀人士 loadin(char *filename)導(dǎo)入學(xué)生成績(jī) saveout(char *filename)導(dǎo)出到stu.txt文件void welcome()界面函數(shù)void welcome1()輸入子界面函數(shù)void welcome2()查詢(xún)子界面函數(shù)void welcome4()輸出子界面函數(shù)int main()主函數(shù)2、主函數(shù)流程圖!(cinxuanze)YN開(kāi)始Cin.clear()Cin.sync()
5、Welcome()主界面YhiSwith(choose)Case2f.loadin(tmp)NYhiSwitch(xuanze1)Case1Case1f.input()YhiNCase2Yhif.QueryByID()Case2Switch(xuanze1)YhiNf.QueryByNname()Case1Case3NYhif.ModifyScore()YhiCase2F.saveout(tmp)NYhiCase4Switch(xuanze1)NYhireturn 0NYhiYhiYhiNsystem(cls)Case0Case6return 0Case1f.output()f.tongji(
6、)Case5NNbreak3、系統(tǒng)功能流程圖輸入統(tǒng)計(jì)修改菜單程序查找顯示主程序退出初始化程序四、調(diào)試與分析1、程序調(diào)試過(guò)程初始界面輸入數(shù)據(jù):直接輸入或文件輸入查詢(xún)學(xué)生信息:按姓名查詢(xún)或?qū)W號(hào)查詢(xún)修改成績(jī)輸出所有學(xué)生成績(jī):直接輸出或文件輸出統(tǒng)計(jì)優(yōu)秀及格人數(shù)退出系統(tǒng)清屏2、程序的不足(1)無(wú)法按照班級(jí),年級(jí)進(jìn)行分類(lèi)統(tǒng)計(jì)學(xué)生信息;(2)只適合統(tǒng)計(jì)人數(shù)較少的信息,數(shù)據(jù)太多時(shí)不易統(tǒng)計(jì)數(shù)據(jù);(3)無(wú)法對(duì)成績(jī)實(shí)現(xiàn)升序和降序排列;(4)信息不夠完善,當(dāng)有兩個(gè)人同名時(shí),我們便無(wú)法區(qū)分兩個(gè)人的信息,所以還應(yīng)該統(tǒng)計(jì)除姓名,學(xué)號(hào)之外的其它信息。五、執(zhí)行結(jié)果1、隨時(shí)添加學(xué)生姓名,系統(tǒng)自動(dòng)生成學(xué)號(hào),并輸入學(xué)生成績(jī);2、能夠
7、統(tǒng)計(jì)不及格、及格、優(yōu)秀人數(shù),便于管理學(xué)生信息;3、能夠輸出所有學(xué)生成績(jī);4、隨時(shí)添加學(xué)生信息,系統(tǒng)自動(dòng)生成學(xué)號(hào),并輸入學(xué)生成績(jī)。六、課程設(shè)計(jì)總結(jié)結(jié)束了這個(gè)盡管不夠完美的課程設(shè)計(jì)報(bào)告,我著實(shí)有很多感想和體會(huì)。首先,雖然學(xué)到了課本知識(shí),但是到實(shí)際操作時(shí),卻不知道從何做起。然后我們上網(wǎng)查資料,問(wèn)老師,問(wèn)同學(xué),終于有了思路,然后我們就根據(jù)這個(gè)思路進(jìn)行下去。在一個(gè)周之后,當(dāng)們我把源代碼修改正確使之能夠正常運(yùn)行時(shí),當(dāng)意料之中的運(yùn)行結(jié)果出現(xiàn)在眼前的屏幕上時(shí),我們感到很有成就感。然而,我們?cè)跍y(cè)試過(guò)程中不斷的發(fā)現(xiàn)新的問(wèn)題,不斷有新的挑戰(zhàn),但是我們?nèi)匀荒托牡囊槐橐槐榈男薷模槐橐槐榈臏y(cè)試,最終能夠?qū)崿F(xiàn)老師布置的所
8、有要求。今天便是答辯的日期,回想起來(lái),這次課程設(shè)計(jì)已經(jīng)接近兩個(gè)周,也許做的不完美,但這里有我們的付出和努力。在這個(gè)過(guò)程中,學(xué)到了很多。首先,要不懂就問(wèn),這樣可能事半功倍。再者,一個(gè)團(tuán)隊(duì)的團(tuán)結(jié)協(xié)作很重要,一個(gè)人可能很難做成功,但是大家團(tuán)結(jié)起來(lái),每個(gè)人負(fù)責(zé)一個(gè)版塊,便取得了最后的成功。還有就是需要耐心,我們需要將源代碼一句一句的修改,一遍一遍的調(diào)試,直到結(jié)果正確。附錄:源程序代碼#include #include #include #include using namespace std;class studentpublic:int id;/學(xué)號(hào)string name;/姓名double che
9、ngji;/成績(jī)int lv;/及格和優(yōu)秀的標(biāo)志,優(yōu)秀的話(huà)lv=1,及格的話(huà)lv=2,不及格的話(huà)lv=3;class Function /功能類(lèi)private:student stu1000;/存放學(xué)生的類(lèi)數(shù)組int n;/計(jì)數(shù)器public: Function()n=0;/學(xué)號(hào)計(jì)數(shù)器重置void input()/添加學(xué)生和成績(jī)char c;while(1)char chengjifilter40;/輸入的數(shù)字轉(zhuǎn)成字符串,檢查是否合法cout正在添加學(xué)生信息.endl;coutstun.name;coutchengjifilter;stun.chengji=atoi(chengjifilter
10、);/atoi,系統(tǒng)函數(shù),字符串轉(zhuǎn)數(shù)字,如果是字母自動(dòng)按0處理cout該同學(xué)姓名為:stun.name 成績(jī)?yōu)?stun.chengjiendl;cout系統(tǒng)自動(dòng)分配學(xué)號(hào),該同學(xué)的學(xué)號(hào)為:n+1=80 & stun.chengji=60 & stun.chengji80)stun.lv=2;else if(stun.chengji=0)stun.lv=3;elsestun.lv=4;/出現(xiàn)4就說(shuō)明成績(jī)出錯(cuò)了n+;cout該同學(xué)成績(jī)輸入完畢,還需要繼續(xù)輸入嗎?(y/n)c;if(c=Y |c=y)continue;elsebreak; void QueryByID()/按學(xué)號(hào)查詢(xún)學(xué)生信息int
11、t; int isfind=0;/是否找到coutt; for(int i=0;in;i+)if(stui.id=t) /查找cout找到學(xué)號(hào)為t的同學(xué),姓名為:stui.name,成績(jī)?yōu)?stui.chengjiendl;isfind=1;if(isfind=0)cout沒(méi)有找到相應(yīng)的同學(xué),請(qǐng)重新查詢(xún).endl;void QueryByName()/按姓名查詢(xún)成績(jī)string t;int isfind=0;/是否找到coutt;for(int j=0;jn;j+)/開(kāi)始查找if(stuj.name=t)cout找到姓名為t的同學(xué),學(xué)號(hào)為:stuj.id,成績(jī)?yōu)?stuj.chengjiend
12、l;isfind=1;if(isfind=0)cout沒(méi)有找到相應(yīng)的同學(xué),請(qǐng)重新查詢(xún).endl;void ModifyScore()/修改成績(jī)string t;int isfind=0;/是否找到coutt;for(int j=0;jn;j+)/開(kāi)始查找if(stuj.name=t)/修改cout找到姓名為t的同學(xué),學(xué)號(hào)為:stuj.id,成績(jī)?yōu)?stuj.chengjiendl;cout請(qǐng)輸入新的姓名:;cinstuj.name;coutstuj.chengji;if(stuj.chengji=80 & stuj.chengji=60 & stuj.chengji80)stuj.lv=2;e
13、lse if(stuj.chengji=0)stuj.lv=3;elsestuj.lv=4;isfind=1;if(isfind=0)cout沒(méi)有找到相應(yīng)的同學(xué),請(qǐng)重新查詢(xún).endl;void output()/輸出所有學(xué)生成績(jī)cout共有n名學(xué)生.endl;/下標(biāo)從0開(kāi)始,所以要加1cout學(xué)號(hào)姓名成績(jī)endl;for(int i=0;in;i+)cout stui.id stui.name stui.chengjiendl;void tongji()/統(tǒng)計(jì)及格和優(yōu)秀人士int jige=0,youxiu=0,bujige=0;/統(tǒng)計(jì)for(int i=0;in;i+)if(stui.lv=
14、1)youxiu+;else if(stui.lv=2)jige+;else if(stui.lv=3)bujige+;cout統(tǒng)計(jì)結(jié)果:endl;cout優(yōu)秀人數(shù):youxiu 及格人數(shù):jige 不及格人數(shù):bujigeendl;void loadin(char *filename)/導(dǎo)入學(xué)生成績(jī)的函數(shù),參數(shù)為導(dǎo)入的文件名稱(chēng)ifstream in;/文件輸入流in.open(filename);/打開(kāi)if(in.fail()=1)/如果打開(kāi)失敗coutfilename文件打開(kāi)失敗!stun.idstun.namestun.chengji; /按行讀入學(xué)生信息stun.id=n+1;/判斷該
15、學(xué)生屬于哪一段if(stun.chengji=80 & stun.chengji=60 & stun.chengji80)stun.lv=2;else if(stun.chengji=0)stun.lv=3;elsestun.lv=4;/出現(xiàn)4就說(shuō)明成績(jī)出錯(cuò)了in.get();/吃掉導(dǎo)入文件的最后一個(gè)回車(chē)符,否則會(huì)多讀取一行無(wú)效信息if(in.peek()=n)break;n+;cout導(dǎo)入成功!endl;in.close();void saveout(char *filename)/導(dǎo)出到stu.txt文件ofstream out;out.open(filename,ios:trunc);/
16、trunc:覆蓋方式寫(xiě)入文件for(int i=0;in;i+)/導(dǎo)出outstui.id stui.name stui.chengjiendl;cout導(dǎo)出文件成功endl;void welcome()/界面函數(shù) cout*endl;cout 學(xué)生成績(jī)管理系統(tǒng) endl;cout*endl;cout*1-輸入數(shù)據(jù)*endl;cout*2-查詢(xún)學(xué)生信息*endl;cout*3-修改成績(jī)*endl;cout*4-輸出所有學(xué)生成績(jī)*endl;cout*5-統(tǒng)計(jì)及格和優(yōu)秀人數(shù)*endl;cout*6-退出系統(tǒng)*endl;cout*0-清屏*endl;void welcome1()/輸入子界面cout
17、*1-直接輸入*endl;cout*2-文件輸入*endl;void welcome2()/查詢(xún)子界面cout*1-按學(xué)號(hào)查詢(xún)*endl;cout*2-按姓名查詢(xún)*endl;void welcome4()/輸出cout*1-直接輸出*endl;cout*2-文件輸出*choose)cin.clear();cin.sync();welcome(); switch(choose) case 1:welcome1();cinchoose1;switch(choose1)case 1:f.input();break;case 2:char tmp50;cout-注意-endl;cout請(qǐng)保證導(dǎo)入的tx
18、t文件格式為: 姓名成績(jī),中間空一個(gè)格,每行一個(gè)學(xué)生信息.endl;couttmp;f.loadin(tmp);/執(zhí)行導(dǎo)入break;break;case 2:welcome2();cinchoose1;switch(choose1)case 1: f.QueryByID();break;case 2: f.QueryByName();break;break;case 3:f.ModifyScore();break;case 4:welcome4();cinchoose1;switch(choose1)case 1:f.output();break;case 2:char tmp50;couttmp;f.saveout(tmp);break;case 5:f.tongji();break;case 6:return 0;break;case 0:system(cls);break;/清除屏幕指令,可以上網(wǎng)查到 return 0;
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)圖形的運(yùn)動(dòng)(三)-1課件
- 供應(yīng)鏈管理方法
- 2019最新青島版數(shù)學(xué)一年級(jí)上冊(cè)第三單元《走進(jìn)花果山-10以?xún)?nèi)的加減法》(信息窗6)課件
- 第四章勞動(dòng)中的心理、生理狀態(tài)對(duì)安全的影響
- 201x九年級(jí)物理上冊(cè)-雙休作業(yè)八(新版)教科版課件
- 課件:項(xiàng)目一-電子商務(wù)物流系統(tǒng)規(guī)劃
- 【人教版】2012-2013學(xué)年九年級(jí)(全一冊(cè))數(shù)學(xué)小復(fù)習(xí):第27章相似復(fù)習(xí)課件
- 消化腺(全英文)課件
- 小學(xué)語(yǔ)文資源五年級(jí)上冊(cè)課件《落花生》課件第一課時(shí)
- 納米材料的基本效應(yīng)課件
- 分析化學(xué)概論-課件
- 沉浸式光影解決方案課件
- 第六講加固Windows操作系統(tǒng)安全ppt課件
- 民主選舉投出理性一票ppt課件
- 高二數(shù)學(xué)選修正態(tài)分布推薦實(shí)用全套PPT