面向?qū)ο驝++學(xué)生成績管理系統(tǒng)_第1頁
面向?qū)ο驝++學(xué)生成績管理系統(tǒng)_第2頁
面向?qū)ο驝++學(xué)生成績管理系統(tǒng)_第3頁
面向?qū)ο驝++學(xué)生成績管理系統(tǒng)_第4頁
面向?qū)ο驝++學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(論文)題目名稱 學(xué)生成績管理系統(tǒng)課程名稱 專業(yè)課程設(shè)計I 學(xué)生姓名 學(xué)號 系、專業(yè)信息工程系、計算機科學(xué)與技術(shù)指導(dǎo)教師 2013年11月15日目錄TOC\o"1-5"\h\z\o"CurrentDocument"1前言 1\o"CurrentDocument"2需求分析 1\o"CurrentDocument"2。1任務(wù) 1\o"CurrentDocument"要求 1\o"CurrentDocument"運行環(huán)境 1\o"CurrentDocument"2。4開發(fā)工具 2\o"CurrentDocument"3分析和設(shè)計 2\o"CurrentDocument"3。1系統(tǒng)分析及設(shè)計思路 2\o"CurrentDocument"3。2主要類圖 4\o"CurrentDocument"3.3函數(shù)流程圖 6\o"CurrentDocument"4具體代碼實現(xiàn) 8\o"CurrentDocument"5課程設(shè)計總結(jié) 5\o"CurrentDocument"5。1程序運行結(jié)果或預(yù)期運行結(jié)果 10\o"CurrentDocument"5.2課程設(shè)體會 11\o"CurrentDocument"參考文獻 12\o"CurrentDocument"致謝 121前言當(dāng)前的編程語言主要分為面向過程和面向?qū)ο髢煞N,其中我們所熟悉的C語言是一種面向過程的語言,而C++則是一種面向?qū)ο蟮恼Z言。面向?qū)ο笾饕且环N思想,面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計和軟件開發(fā),擴展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、網(wǎng)絡(luò)管理結(jié)構(gòu)、人工智能等。對于此次課程設(shè)計學(xué)生成績管理系統(tǒng)的設(shè)計,主要是考察我們對面向?qū)ο笾蓄惖亩x和使用,成員變量和成員函數(shù)的定義和使用,友元函數(shù)的理解和調(diào)用,繼承性與派生類,文件輸入輸出的掌握情況,在實際設(shè)計中首先定義一個基類stu用來存放學(xué)生的基本信息,再定義一個派生類stu1用了存放課程信息.通過本課程設(shè)計,我們可以運用C++語言實現(xiàn)所設(shè)計的算法,編寫較大型的程序,分析和解決實際應(yīng)用問題,進一步加深、鞏固自己所學(xué)專業(yè)課程的基本理論知識,理論聯(lián)系實際,進一步培養(yǎng)自己綜合分析問題和解決問題的能力。通過本次課程設(shè)計我們還可以進一步掌握編寫文檔、文檔排版的能力。為以后步入社會,走上工作崗位打下堅實的基礎(chǔ).2需求分析2。1任務(wù)某學(xué)校學(xué)生選擇的課程包括選修課和必修課,每門課程有相應(yīng)的學(xué)分,學(xué)生每學(xué)期可以選擇若干門課程,設(shè)計學(xué)生成績管理系統(tǒng),計算學(xué)生某一學(xué)期的總成績和平均成績。要求具體要求:(1)可以進行學(xué)生成績的輸入和查詢。(2)可以通過學(xué)號查找某個同學(xué)的總成績,學(xué)分,平均成績。(3)可以查詢同學(xué)的達標(biāo)情況和沒有及格的科目。運行環(huán)境(1)WINDOWXP/WINDOW7系統(tǒng)(2)VisualC++6.0編譯環(huán)境或DEVC++5.0編譯環(huán)境開發(fā)工具C++語言3分析和設(shè)計3。1系統(tǒng)分析及設(shè)計思路根據(jù)面向?qū)ο蟮乃枷?,通過類來實現(xiàn)設(shè)計一個學(xué)生成績管理系統(tǒng)。首先定義一個基類stu用來存放學(xué)生的基本信息(學(xué)號(number),姓名(name)),再定義一個派生類stu1用來存放課程信息(課程號(classnumber),課程名(classname),課程總學(xué)分(score),平時成績(pingshifen),實驗成績(shiyanfen),卷面成績(juanmianfen),總分(zongfen),實得學(xué)分(lastscore))。根據(jù)實際情況考慮,有些課程并不需要實驗,所以總分有兩種算法。一種是沒有實驗成績的總分:總分=平時成績X0.3+卷面成績義0.7另一種有實驗的總分:總分=平時成績X0.15+實驗成績義0。15+卷面成績又0。7,總學(xué)分=£各科實得學(xué)分;總成績=£各科總分;平均成績=總成績/總學(xué)分;main函數(shù)用來實現(xiàn)操作,在程序中實現(xiàn)了三個功能:1輸入學(xué)生成績;2學(xué)生成績查詢;3達標(biāo)查詢。main函數(shù)通過文件流、I/O流等學(xué)習(xí)內(nèi)容實現(xiàn)。通過建立文件來存儲所輸入的學(xué)生信息以及存儲計算的結(jié)果。.基類stu類的設(shè)計:classstu /*定義一個基類,用來存放學(xué)生基本信息*/{public:stu(chara[20],charb[20]){strcpy(number,a);strcpy(name,b);}char*getnumber(){returnnumber;}char*getname()2returnname;private:charnumber[20];charname[20];.派生類stul類的設(shè)計:classstu1:publicstu /*定義派生類,存放課程信息*/public:stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):stu(a,b)strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshifen=bb;shiyanfen=cc;juanmianfen=dd;zongfen=ee;lastscore=ff;friendvoidmain();private:charclassnumber[10];charclassname[10];doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;};

33。2主要類圖圖3.2.1基類stu類圖圖3。2.2派生類stul類圖

圖3。2.3繼承U域類圖3.3函數(shù)流程圖整個程序的流程圖:首先判斷是否進入學(xué)生成績管理系統(tǒng),如果進入,通過輸入相應(yīng)的1,2,3選擇要實現(xiàn)的功能,如圖3.3。1所示。圖3.3。1整個程序的主流程圖N應(yīng)的1,2,3選擇要實現(xiàn)的功能,如圖3.3。1所示。圖3.3。1整個程序的主流程圖NN當(dāng)進入據(jù)提示選擇要進行的操作,學(xué)生各科的成績。根據(jù)提示輸入信息,如:輸入課程信息(課程編號,課程名稱以及該課程的各項成績等),輸入學(xué)生信息(姓名,學(xué)號)等一系列的操作。如圖3.3.2所示。v1p=2?p=3?輸入課程信息:課程編號、輸入課程丫 進入成績查

輸入學(xué)生系統(tǒng)學(xué)生學(xué)號、學(xué)生進入達標(biāo)查v1p=2?p=3?輸入課程信息:課程編號、輸入課程丫 進入成績查

輸入學(xué)生系統(tǒng)學(xué)生學(xué)號、學(xué)生進入達標(biāo)查該課禾程的學(xué)分輸入該學(xué)生該課程的各項成績:平時面成績。4具體代碼實現(xiàn)#include<iostream>#include<string〉#include〈fstream〉#include〈conio.h〉usingnamespacestd;classstu /*定義一個基類,存放姓名和學(xué)號信息*/(public:stu(chara[20],charb[20]){strcpy(number,a);strcpy(name,b);)char*getnumber(){returnnumber;)char*getname()(returnname;)private:charnumber[20];charname[20];};classstu1:publicstu /*定義另一個派生類,存放課程信息和成績*/{public:stu1(chara[20],charb[20],charf[10],charg[10],doubleaa,doublebb,doublecc,doubledd,doubleee,doubleff):stu(a,b){strcpy(classnumber,f);strcpy(classname,g);score=aa;pingshifen二bb;shiyanfen二cc;juanmianfen二dd;zongfen二ee;lastscore=ff;}friendvoidmain();private:charclassnumber[10];charclassname[10];doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;};voidmain() /*主函數(shù)*/{charc;intflag5=0;ints=0;cout<〈”歡迎進入學(xué)生管理系統(tǒng)"〈<endl;cout〈〈”進入(丫/口)"<<endl;cin〉>c;do{ /*判斷是否進入系統(tǒng)*/if(c==,n,)break;else(flag5=1;charnumber[10];charname[20];inti=0,I=0,j=0;intja=0;ofstream*file[50];stu1*s1[50]; /*定義指針存放課程信息*/charclassnumber[8];charclassname[10];doublescore,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;boolflag=0;intp;charc4;do{ /*選擇菜單*/cout〈<”請選擇操作“〈<endl;cout<<”1輸入學(xué)生成績信息"〈〈endl;cout<<”2成績查詢“<〈endl;cout<<"3達標(biāo)查詢"〈<endl;do{ /*判斷輸入字符*/cin〉〉p;if(1〈=p&&p<=3)flag=1;elsecout〈〈”指令錯誤,請重新輸入!"<<endl;}while(flag==0);if(p==1) /*進入信息輸入系統(tǒng)*/(cout<〈”進入信息添加"<〈endl;charc1,c2;do{ /*信息的輸入*/cout<<”請輸入課程編號:"〈<endl;cin>>classnumber;cout〈<”請輸入課程名:"<<endl;cin>>classname;do{cout〈<"請輸入學(xué)生學(xué)號:"〈〈endl;cin〉〉number;cout〈<"請輸入學(xué)生姓名:"〈〈endl;cin〉>name;cout〈<"課程總學(xué)分:”〈〈endl;cin〉〉score;cout〈<“學(xué)生的平時成績:"〈〈endl;cin〉>pingshifen;cout〈<”學(xué)生的實驗成績:"<<endl;cin〉〉shiyanfen;cout〈〈”學(xué)生卷面成績:"〈<endl;cin〉〉juanmianfen;if(shiyanfen==0) /*總分的算法判斷*/zongfen二pingshifen*0。3+juanmianfen*0.7;elsezongfen二pingshifen*0。15+shiyanfen*0。15+juanmianfen*0。7;if(90<=zongfen&&zongfen〈=100) /*學(xué)分的計算*/lastscore二score;elseif(80〈二zongfen)lastscore=score*0。8;elseif(70<=zongfen)lastscore=score*0.7;elseif(60〈二zongfen)lastscore二score*0。6;elselastscore=0;file[j]=newofstream("e:\\eeee。txt”,ios::app);/*信息存儲文件的建立*/*file[j]<〈"學(xué)號:”<(number〈〈""<〈"課程編號:"〈<classnumber〈〈"“〈〈”課程名:"<<classname〈〈"”<〈"學(xué)分:"<(score<<""〈<"平時分:"<〈pingshifen<(""<<"實驗分:"〈〈shiyanfen<〈""〈<"卷面分:"<〈juanmianfen<<""〈〈”綜合成績:"<<zongfen〈<""<<"實得學(xué)分:"〈〈lastscorev〈”"〈〈endl;j++;s1[I]=newstul(number,name,classnumber,classname,score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore);I++;cout<<”數(shù)據(jù)輸入成功,繼續(xù)輸入其他學(xué)生成績?(y/n)”;cin>〉cl;intflag1=0;do{if(cl!=’y’&&c1!='n’)(cout<〈"錯誤指令"<(endl;cin>>c1;)elseflag1=1;)while(flag1==0);}while(c1=='y');。。彼<<”輸入其他課程成績?(y/n)"; /*轉(zhuǎn)入其他成績輸入判斷*/cin>>c2;intflag2=0;do{if(c2!='y'&&c2!='n'){cout〈〈”錯誤指令"〈〈endl;cin>〉c2;)elseflag2=1;)while(flag2==0);}while(c2==’y’);)if(p=2) /*成績查詢系統(tǒng)*/(cout<〈”進入成績查詢"〈〈endl;charnum[10];cout〈<”請輸入學(xué)號“〈〈endl;cin〉〉num;intii=0;doublesum=0;doublefen=0;doublepingjunfen;for(intj=0;j<I;j++)(if(strcmp((*s1[j]).getnumber(),num)=0)/*判斷學(xué)號是否存在*/(cout<<"課程編號:”<〈(*s1[j])。classnumber〈<""〈〈"課程名稱:"<<(*s1[j]).classname<<""〈<"學(xué)分:"<<(*s1[j])。score〈<”"<〈”平時成績:”〈<(*s1[j]).pingshifen<〈""〈<”實驗成績:"<<(*s1[j]).shiyanfen<<""〈〈"卷面成績:"<<(*s1[j])。juanmianfen<<"“〈<"綜合成績:"〈<(*s1[j]).zongfen〈<""〈<"實得學(xué)分:"〈<(*s1口])。lastscore〈<""〈<endl;ii++;sum+=(*s1[j]).lastscore; /*總學(xué)分計算*/if((*s1[j])。score!=0){ /*平均分的計算*/fen+=(*s1[j])。zongfen;pingjunfen=fen/sum;}))cout<<"共修:”<〈ii〈〈"科"〈<""〈<”總學(xué)分:"〈〈sum〈〈""〈<"總分:"<〈fen<〈”“〈〈”平均分:“<〈pingjunfen<〈endl;)if(p==3) /*達標(biāo)查詢系統(tǒng)*/( 一cout<〈”進入達標(biāo)查詢"<〈endl;charnum[10];doublesum;cout<〈”請輸入學(xué)號"<〈endl;cin>〉num;for(intj=0;j〈I;j++)(if(strcmp((*s1[j])。getnumber(),num)==0){sum+=(*s1[j]).lastscore;if((*s1[j]).zongfen<60) /*未及格學(xué)科的*/(cout〈〈(*s1[j]).classname<<"未及格"<〈endl;}}}if(sum〈10) /*留級判斷*/(cout<<"不好意思同學(xué)你未通過,需留級!"〈〈endl;}}cout<〈”進行其他操作(y/n)"〈<endl;cin>>c4;)while(c4=='y');}}while(flag5==0);)5課程設(shè)計總結(jié)程序運行結(jié)果或預(yù)期運行結(jié)果1。通過輸入y/n判斷用戶是否進入學(xué)生成績管理系統(tǒng),通過輸入對應(yīng)的序號選擇對應(yīng)的功能,如圖5.1。1所示。圖5.1。1進入學(xué)生成績管理系統(tǒng).判斷輸入的數(shù)字1,2,3選擇對應(yīng)實現(xiàn)的功能,選擇1即表示輸入學(xué)生成績,首先輸入課程號、課程名稱再輸入該課程某一學(xué)生的信息、課程學(xué)分以及該生這門課程的各項成績,因為高數(shù)沒有實驗,所以實驗成績?yōu)?。如圖5.1。2所示。圖5。1。2輸入學(xué)科1(高數(shù))某一學(xué)生該科的各項成績.通過上一個流程選擇y,選擇輸入學(xué)科1(高數(shù))的其他學(xué)生在該課程的各項成績,平時分、實驗分和卷面分.如圖5。1.3所示圖5.1。3輸入學(xué)科1(高數(shù))其他學(xué)生該科的各項成績4。當(dāng)學(xué)科1數(shù)據(jù)和學(xué)生在該科的信息輸入數(shù)據(jù)成功后。繼續(xù)進行其他學(xué)科2(如C++面向?qū)ο蟮恼n程編號、課程名)的輸入操作和其他學(xué)生在C++面向?qū)ο筮@科的各項成績,因為該科有實驗,所以有實驗成績.如圖5.1。4所示.圖5.1.4輸入學(xué)科2(C++面向?qū)ο螅┠骋粚W(xué)生該科的各項成績.輸入其他學(xué)生在學(xué)科2(C++面向?qū)ο螅┑母黜棾煽儯鐖D5.1.5所示。圖5.1.5輸入學(xué)科2(C++面向?qū)ο螅┢渌麑W(xué)生該科的各項成績.當(dāng)所有學(xué)生的所有科目成績輸入數(shù)據(jù)成功后,選擇適當(dāng)?shù)牟僮?。下面進行的操作就是各個學(xué)生的成績查詢,以輸入的數(shù)據(jù)039號學(xué)生和002學(xué)生為例。如圖5.1。6所示.10圖5.1。6學(xué)號為039號學(xué)生的各科成績.查詢其他學(xué)生的各科成績,選擇適當(dāng)?shù)牟僮鳌R暂斎氲膶W(xué)號002號學(xué)生為例。如圖5。1。7所示。圖5。1.7學(xué)號為002號學(xué)生的各科成績.通過查找各個學(xué)生的成績,我們可以對成績管理系統(tǒng)里的數(shù)據(jù)有清晰的認識,在必要時可以通過該系統(tǒng)進行統(tǒng)計。在了解同學(xué)成績后我們需要進行的操作是:某已學(xué)生是否達標(biāo),以及該生哪門不及格等信息。通過適當(dāng)?shù)牟僮鬟M行達標(biāo)查詢,以002號為例可以看出:該生需要留級,未及格的科目為C++面向?qū)ο?如圖5。1。8所示。圖5。1.8學(xué)號為002號學(xué)生的達標(biāo)查詢9。當(dāng)所有的數(shù)據(jù)輸入成功、學(xué)生的各科成績計算出來后可以在程序設(shè)置的位置找到我們所輸入數(shù)據(jù)、計算得到的數(shù)據(jù)存儲的文本文件。課程信息和學(xué)生成績可以從文件讀取。如圖5。1.9所示。圖5.1.9存儲輸入數(shù)據(jù)和計算得到數(shù)據(jù)的文本文件5.2課程設(shè)計體會課程設(shè)計剛開始時,拿著選定的題目不知如何下手。畢竟課程設(shè)計不同于實驗課,很多東西都要自己設(shè)計。靜下心來,仔細分析題目,再加上指導(dǎo)老師的說明與提示,心中才有了譜.將整個系統(tǒng)根據(jù)不同的功能化分成不同的模塊,畫出各個部分的流程圖根據(jù)流程圖設(shè)計代碼塊。比如設(shè)計一個基類stu和一個派生類stu1再分別進行設(shè)計,逐個攻破,最后將其整合起來?;仡櫰鸫苏n程設(shè)計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,友元函數(shù)、文件操作、函數(shù)重載.而且學(xué)到了很多在書本上所沒有學(xué)到過的知識.在完成課題過程中,我們發(fā)現(xiàn)運行后的界面非常的差,有些成績之間沒有分開,這是設(shè)計上的漏洞。需要給界面添加必要的空格或符號,以用來區(qū)分不同的成績。使用戶界面盡量美觀。通過這次課程設(shè)計使我懂得了理論與

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論