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

下載本文檔

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

文檔簡(jiǎn)介

C++課程設(shè)計(jì)學(xué)生成績(jī)管理系統(tǒng)二○一二~二○一三學(xué)年第二學(xué)期C++程序設(shè)計(jì)語言班級(jí):電氣信息類1206班姓名:鄔繼陽指導(dǎo)教師:王磊二0一三年零七月1.課程設(shè)計(jì)目的使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和操作實(shí)現(xiàn)算法,以及它們?cè)诔绦蛑械氖褂梅椒āJ箤W(xué)生掌握軟件設(shè)計(jì)的基本內(nèi)容和設(shè)計(jì)方法,并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力。使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)行程序設(shè)計(jì)的基本能力。2.系統(tǒng)描述(需求分析)需要處理的基礎(chǔ)數(shù)據(jù)學(xué)生基本信息:如班級(jí)、學(xué)號(hào)、姓名、性別、年齡、宿舍號(hào)碼、電話號(hào)碼等。學(xué)生選修課程的基本信息:課程編號(hào)、課程名稱、考試成績(jī)、平時(shí)成績(jī)、綜合成績(jī)、學(xué)系統(tǒng)的基本功能數(shù)據(jù)的錄入:如錄入學(xué)生的基本信息,以及該學(xué)生選修課程的基本信息;數(shù)據(jù)的查詢:如按學(xué)號(hào)查詢、按姓名查詢等;平均成績(jī)的計(jì)算:計(jì)算每個(gè)學(xué)生各門功課的平均成績(jī),并按平均成績(jī)從高到低的次序輸出考慮用文件把數(shù)據(jù)保存起來(可選)??尚行苑治?.3.1如上所示,該系統(tǒng)要求處理一些學(xué)生成績(jī)的基本數(shù)據(jù),包括兩個(gè)方面:學(xué)生身份信信息類。這樣既可以保持二者的獨(dú)立性,也可以使之相關(guān)聯(lián)。2.3.2該系統(tǒng)不僅要求能錄入一些基本數(shù)據(jù)外,還要能對(duì)這些數(shù)據(jù)進(jìn)行處理,比如修改,刪除,插入,查詢等。對(duì)這些操作的實(shí)現(xiàn)可以暫時(shí)放開面向?qū)ο螅捎妹嫦蜻^程的方法。另外,因?yàn)閷?duì)數(shù)據(jù)庫了解不多,可以考慮用文件保存的形式將數(shù)據(jù)保存起來,最后在查找的時(shí)候采用文件讀取。3.功能模塊設(shè)計(jì)類的分析與設(shè)計(jì)學(xué)生的身份基本信息,另一個(gè)是該同學(xué)的課程基本信息。而且要求二者既要相一個(gè)類對(duì)象作為Stu對(duì)象的一個(gè)基本數(shù)據(jù)成員。具體如下:3.1.1Course類成員成員屬性訪問類型成員成員屬性訪問類型course_num數(shù)據(jù)成員publiccourse_name數(shù)據(jù)成員publicregular_score數(shù)據(jù)成員publicFinal_score數(shù)據(jù)成員publicaverage_score數(shù)據(jù)成員publicstudy_score數(shù)據(jù)成員publicrebulid數(shù)據(jù)成員public3.1.2Stu類放同一學(xué)生的不同科目信息Coursecourse[20]。為了其信息的隱蔽性,我們把所有的數(shù)據(jù)成員都聲明為private。接下來,要處理的就是函數(shù)了。有兩種處理方式,但到底是采用成員函數(shù)(1)采用友元函數(shù),可以使類的結(jié)構(gòu)變得更加簡(jiǎn)單,有助于整個(gè)設(shè)計(jì)過程(2)使用友元函數(shù),將函數(shù)獨(dú)立于類的結(jié)構(gòu)之外而采用類對(duì)象傳參的方式,可以使該函數(shù)的獨(dú)立性大大提高,有助于在其他地方的使成員成員屬性訪問類型Class_num數(shù)據(jù)成員private數(shù)據(jù)成員privatename數(shù)據(jù)成員private數(shù)據(jù)成員private數(shù)據(jù)成員privateroom數(shù)據(jù)成員private數(shù)據(jù)成員privateaverage數(shù)據(jù)成員privateNum_of_course數(shù)據(jù)成員private數(shù)據(jù)成員privateCourse[20]數(shù)據(jù)成員privateStatistic(Stustud[])Lookup(Stustud[])Modify(Stustud[])Delete(Stustud[])Output(Stustud[])Sort(Stustud[])Showfail(Stustud[])Write(Stustud[])Read(Stustud[])voidmenu()輸入學(xué)生信息學(xué)生信息輸出查找學(xué)生信息修改學(xué)生信息刪除學(xué)生信息輸出全部信息對(duì)學(xué)生進(jìn)行排序插入學(xué)生信息查找不及格學(xué)生文件寫入函數(shù)文件讀取函數(shù)菜單函數(shù),以供選擇整體流程上面已經(jīng)主要分開介紹了兩個(gè)獨(dú)立的類及其內(nèi)部成員,現(xiàn)在來介紹整個(gè)學(xué)生系統(tǒng)功能實(shí)現(xiàn)的。格Switch語句選擇排序查看學(xué)生成績(jī)4.主要模塊的算法說明信息的保存和讀取在本次課程設(shè)計(jì)中,因?yàn)檫€沒有接觸到數(shù)據(jù)庫的有關(guān)知識(shí),故采用文件流來寫入和讀取信息。主要涉及到fstream類。在系統(tǒng)運(yùn)行過程中,會(huì)利用該類將學(xué)生的基本身份信息和基本課程信息全部存到自定義的一個(gè)文件中,當(dāng)需要使用這些數(shù)據(jù)時(shí),例如查詢,修改,顯示等,再將需要的讀取出來進(jìn)行相關(guān)的操對(duì)信息的處理4.2.1數(shù)據(jù)的錄入和插入當(dāng)在主菜單里選擇信息錄入時(shí),會(huì)跳出錄入頁面,只需依次輸入提示的信息入學(xué)生成績(jī)信息時(shí)。需要輸入要登記的課程數(shù)目。其中成績(jī)信息的各科綜合成成。當(dāng)所有信息錄入完成后,該生所有科目的平均成績(jī)average也會(huì)自動(dòng)計(jì)4.2.2數(shù)據(jù)的查詢當(dāng)只針對(duì)某個(gè)人的查詢時(shí),需要輸入學(xué)號(hào)或姓名,再調(diào)用read函數(shù)將4.2.3數(shù)據(jù)的修改錄入,插入一樣了。4.2.4數(shù)據(jù)的刪除本例中,對(duì)數(shù)據(jù)的刪除比較簡(jiǎn)單。只需輸入學(xué)號(hào)或姓名,當(dāng)查找到該生的相關(guān)信息后。將后面一個(gè)學(xué)生的信息賦值給他,相當(dāng)于該生的信息被覆蓋,也就4.2.5數(shù)據(jù)的排序在需求分析中,有一項(xiàng)功能,按學(xué)生成績(jī)平均分降序排列。此功能還是比較在輸入學(xué)生數(shù)據(jù)時(shí),當(dāng)所有課程分?jǐn)?shù)輸入完畢,會(huì)自動(dòng)生成一個(gè)平均分,該數(shù)5.程序運(yùn)行結(jié)果菜單歡迎界面信息的錄入信息的顯示信息的查詢信息的修改當(dāng)輸入需要修改的學(xué)生學(xué)號(hào)時(shí),會(huì)首先輸出該同學(xué)現(xiàn)在的已經(jīng)信息的刪除選擇不同的方式,進(jìn)入不同的界面按平均分降序排列查看全部信息由于一個(gè)同學(xué)的全部信息較多,于是分成兩部分輸出:身份信息和成績(jī)信息在身份信息中,主要包括班級(jí),學(xué)號(hào),姓名,年齡,性別,宿舍,電話等。在成績(jī)信息中,包括該同學(xué)的各科成績(jī),是否重修,獲得的學(xué)分,以及所有科目輸出不及格學(xué)生信息當(dāng)選擇該功能時(shí),首先會(huì)輸出該同學(xué)的學(xué)號(hào),姓名和班級(jí),然后再輸出他的不退出系統(tǒng)6.課程設(shè)計(jì)總結(jié)(1)回顧此次課程設(shè)計(jì),感慨良多,從剛拿到題目時(shí)的一臉茫然,到最后能成功解決,覺得此次課程設(shè)計(jì)我又學(xué)到了好多知識(shí)。首先在這里要感謝一下王磊指導(dǎo)老師,經(jīng)過他的細(xì)心講解,我才有了一個(gè)完整的設(shè)計(jì)思路。非懂,結(jié)果總要去查書才能寫出不出錯(cuò)誤的代碼,結(jié)構(gòu)就是耗費(fèi)了大量的時(shí)間,事倍功半。經(jīng)歷這次教訓(xùn),我想會(huì)對(duì)我以后的計(jì)算機(jī)語言學(xué)習(xí)起到一定的幫助。(3)在這次的課程設(shè)計(jì)過程中,通過查書的學(xué)習(xí),對(duì)C++的了解又加深了不少,包括類的結(jié)構(gòu),以及怎樣在類外訪問類類的私有成員等,我想下次再寫基于對(duì)象的程序時(shí),一定會(huì)得心應(yīng)手。(4)還有比較重要的收獲就是類的相互嵌套使用,就拿本例來說,在一個(gè)類中設(shè)置一個(gè)數(shù)據(jù)成員,而該數(shù)據(jù)成員確是另一個(gè)類的對(duì)象。這對(duì)理解數(shù)據(jù)類型起到了不少的作用。(5)總的來說,這次程序設(shè)計(jì)讓我獲益匪淺,對(duì)C++語言也有了進(jìn)一步的認(rèn)識(shí):語言功能的一種計(jì)算機(jī)語言,相信除了以上優(yōu)點(diǎn),還有許多我們還未發(fā)現(xiàn),希望能在以后的學(xué)7.參考文獻(xiàn)8.附錄(源代碼)#include<iostream>#include<fstream>#include<>lass_num<<""<<stud[i].num<<""<<stud[i].name<<""<<stud[i].age<<""<<stud[i].sex<<""<<stud[i].room<<""<<stud[i].tel<<""<<stud[i].num_of_course<<""<<stud[i].average<<""<<endl;for(intj=0;j<stud[i].num_of_course;j++){myFile<<stud[i].course[j].course_num<<""<<stud[i].course[j].course_name<<""<<stud[i].course[j].regular_score<<""<<stud[i].course[j].final_score<<""<<stud[i].course[j].average_score<<""<<stud[i].course[j].study_score<<""<<stud[i].course[j].rebulid<<endl;}}}lass_num>>stud[i].num>>stud[i].name>>stud[i].age>>stud[i].sex>>stud[i].room>>stud[i].tel>>stud[i].num_of_course>>stud[i].average;for(intj=0;j<stud[i].num_of_course;j++){myFile>>stud[i].course[j].course_num>>stud[i].course[j].course_stud[i].course[j].final_score>>stud[i]}}{{}}for(j=0;j<stud[i].num_o{stud[i].course[j].average_score=stud[i}}lass_num<<"\t"<<stud[i].num<<"\t\t"<<stud[i].sex<<"\t"<<stud[i].room<<"\t"<<}{}{cout<<"------------{cout<<stud[i].course[}}cout<<endl<<"====>>查{{cout<<"------------{cout<<stud[i].course[}}}}}{}{cout<<"----------該學(xué)cout<<"班級(jí)"<<"\t"<<"學(xué)號(hào)"<<"<<"\t"<<"性別"<<"\t"cout<<"------------------cout<<stud[i].class_num<<"\t"<<stud[i].num<<"\<stud[i].age<<"\t"<<stud[i].sex<<"\t"<<stud[i{cout<<stud[i].course[}for(j=0;j<stud[i].num_o{stud[i].course[j].average_score=stud[i}}}{for(j=0;j<stud[n].num_o{stud[n].course[j].average_score=stud[n}}}voidSort(Stustud[])verage<stud[j+1].avecout<<stud[i].class_num<<"\t"<<stud[i].num<<"\"<<stud[i].room<<"\t"<<stud[i].tel<<"\t"<<}}lass_num<<"\t"<<stud[i].num<<"\t"<<\t"<<stud[i].sex<<"\t"<<stud[i].ro{cout<<stud[i].course[j].co}{cout<<stud[i].course[j].average_score<<"\t"<<sd<<"\t"<<stud[i].cours}}cout<<endl<<"----------------------------------------------------

溫馨提示

  • 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)論