面向?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頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)(論文)題 目 名 稱 學(xué)生成績管理系統(tǒng) 課 程 名 稱 專業(yè)課程設(shè)計(jì)I 學(xué) 生 姓 名 學(xué) 號 系 、專 業(yè) 信息工程系、計(jì)算機(jī)科學(xué)與技術(shù) 指 導(dǎo) 教 師 2013年 11 月 15 日目錄1 前言12 需求分析12.1任務(wù)12.2 要求12.3 運(yùn)行環(huán)境12.4 開發(fā)工具23 分析和設(shè)計(jì)23.1 系統(tǒng)分析及設(shè)計(jì)思路23.2 主要類圖43.3 函數(shù)流程圖64 具體代碼實(shí)現(xiàn)85 課程設(shè)計(jì)總結(jié)135.1 程序運(yùn)行結(jié)果或預(yù)期運(yùn)行結(jié)果135.2 課程設(shè)體會16 參考文獻(xiàn)18 致 謝181 前言 當(dāng)前的編程語言主要分為面向過程和面向?qū)ο髢煞N,其中我們所熟悉的C語言是一種面向過程的語言,而C+則

2、是一種面向?qū)ο蟮恼Z言。面向?qū)ο笾饕且环N思想,面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、網(wǎng)絡(luò)管理結(jié)構(gòu)、人工智能等。對于此次課程設(shè)計(jì)學(xué)生成績管理系統(tǒng)的設(shè)計(jì),主要是考察我們對面向?qū)ο笾蓄惖亩x和使用,成員變量和成員函數(shù)的定義和使用,友元函數(shù)的理解和調(diào)用,繼承性與派生類,文件輸入輸出的掌握情況,在實(shí)際設(shè)計(jì)中首先定義一個(gè)基類stu用來存放學(xué)生的基本信息,再定義一個(gè)派生類stu1用了存放課程信息。通過本課程設(shè)計(jì),我們可以運(yùn)用C+語言實(shí)現(xiàn)所設(shè)計(jì)的算法,編寫較大型的程序,分析和解決實(shí)際應(yīng)用問題,進(jìn)一步加深、鞏固自己所學(xué)專業(yè)課程的基本理論知識,理論聯(lián)

3、系實(shí)際,進(jìn)一步培養(yǎng)自己綜合分析問題和解決問題的能力。通過本次課程設(shè)計(jì)我們還可以進(jìn)一步掌握編寫文檔、文檔排版的能力。為以后步入社會,走上工作崗位打下堅(jiān)實(shí)的基礎(chǔ)。2 需求分析2.1 任務(wù)某學(xué)校學(xué)生選擇的課程包括選修課和必修課,每門課程有相應(yīng)的學(xué)分,學(xué)生每學(xué)期可以選擇若干門課程,設(shè)計(jì)學(xué)生成績管理系統(tǒng),計(jì)算學(xué)生某一學(xué)期的總成績和平均成績。2.2 要求具體要求:(1)可以進(jìn)行學(xué)生成績的輸入和查詢。(2)可以通過學(xué)號查找某個(gè)同學(xué)的總成績,學(xué)分,平均成績。(3)可以查詢同學(xué)的達(dá)標(biāo)情況和沒有及格的科目。2.3 運(yùn)行環(huán)境(1)WINDOW XP/WINDOW 7系統(tǒng)(2)Visual C+ 6.0編譯環(huán)境或DE

4、V C+ 5.0編譯環(huán)境2.4 開發(fā)工具C+語言3 分析和設(shè)計(jì)3.1 系統(tǒng)分析及設(shè)計(jì)思路根據(jù)面向?qū)ο蟮乃枷?,通過類來實(shí)現(xiàn)設(shè)計(jì)一個(gè)學(xué)生成績管理系統(tǒng)。首先定義一個(gè)基類stu用來存放學(xué)生的基本信息(學(xué)號(number),姓名(name)),再定義一個(gè)派生類stu1用來存放課程信息(課程號(classnumber),課程名(classname),課程總學(xué)分(score),平時(shí)成績(pingshifen),實(shí)驗(yàn)成績(shiyanfen),卷面成績(juanmianfen),總分(zongfen),實(shí)得學(xué)分(lastscore))。根據(jù)實(shí)際情況考慮,有些課程并不需要實(shí)驗(yàn),所以總分有兩種算法。一種是沒有實(shí)驗(yàn)

5、成績的總分:總分=平時(shí)成績×0.3+卷面成績×0.7另一種有實(shí)驗(yàn)的總分:總分=平時(shí)成績×0.15+實(shí)驗(yàn)成績×0.15+卷面成績×0.7,總學(xué)分=各科實(shí)得學(xué)分;總成績=各科總分;平均成績=總成績/總學(xué)分;main函數(shù)用來實(shí)現(xiàn)操作,在程序中實(shí)現(xiàn)了三個(gè)功能:1輸入學(xué)生成績;2學(xué)生成績查詢;3達(dá)標(biāo)查詢。main函數(shù)通過文件流、I/O流等學(xué)習(xí)內(nèi)容實(shí)現(xiàn)。通過建立文件來存儲所輸入的學(xué)生信息以及存儲計(jì)算的結(jié)果。1.基類stu類的設(shè)計(jì):class stu /*定義一個(gè)基類,用來存放學(xué)生基本信息*/ public:stu(char a20,char b20) st

6、rcpy(number,a); strcpy(name,b);char* getnumber() return number;char* getname() return name;private:char number20;char name20; 2.派生類stu1類的設(shè)計(jì):class stu1:public stu /*定義派生類, 存放課程信息*/ public:stu1(char a20,char b20,char f10,char g10,double aa,double bb,double cc,double dd,double ee,double ff):stu(a,b) st

7、rcpy(classnumber,f); strcpy(classname,g); score=aa; pingshifen=bb; shiyanfen=cc; juanmianfen=dd; zongfen=ee; lastscore=ff;friend void main();private:char classnumber10;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;;3.2 主要類圖 圖3.2.1 基類stu類圖圖3.2.2 派生類stu1類圖public圖3.2.

8、3 繼承關(guān)系類圖3.3 函數(shù)流程圖 整個(gè)程序的流程圖:首先判斷是否進(jìn)入學(xué)生成績管理系統(tǒng),如果進(jìn)入,通過輸入相應(yīng)的1,2,3選擇要實(shí)現(xiàn)的功能,如圖3.3.1所示。 開始結(jié)束NNNYYYYNY進(jìn)入達(dá)標(biāo)查詢系統(tǒng)進(jìn)入成績查詢系統(tǒng) p=2?p=3? p=1?1<=p&&p<=3?得到輸入值p歡迎進(jìn)入學(xué)生管理系統(tǒng)是否進(jìn)入系統(tǒng)輸出菜單選項(xiàng) 1,2,3指令錯(cuò)誤,請重新輸入進(jìn)入信息輸入系統(tǒng)圖3.3.1 整個(gè)程序的主流程圖開始 當(dāng)進(jìn)入系統(tǒng)學(xué)生成績管理系統(tǒng)后根據(jù)提示選擇要進(jìn)行的操作,學(xué)生各科的成績。根據(jù)提示輸入信息,如:輸入課程信息(課程編號,課程名稱以及該課程的各項(xiàng)成績等),輸入學(xué)生信

9、息(姓名,學(xué)號)等一系列的操作。如圖3.3.2所示。 1輸入學(xué)生信息:學(xué)生學(xué)號、學(xué)生姓名輸入課程信息:課程編號、輸入課程該課程的學(xué)分輸入該學(xué)生該課程的各項(xiàng)成績:平時(shí)成績、實(shí)驗(yàn)成績、卷面成績。繼續(xù)輸入該科其他學(xué)生成績 N Y其他選擇,輸入其他課程其他學(xué)生成績、成績查詢、達(dá)標(biāo)查詢等。輸入該課程其他學(xué)生在這科的各項(xiàng)成績:平時(shí)成績、實(shí)驗(yàn)成績、卷面成績。結(jié)束 圖3.3.2 輸入某科成績流程圖4具體代碼實(shí)現(xiàn)#include<iostream>#include<string>#include<fstream>#include<conio.h>using nam

10、espace std;class stu /*定義一個(gè)基類,存放姓名和學(xué)號信息*/public:stu(char a20,char b20) strcpy(number,a); strcpy(name,b);char* getnumber() return number;char* getname() return name;private:char number20;char name20;class stu1:public stu /*定義另一個(gè)派生類,存放課程信息和成績*/public:stu1(char a20,char b20,char f10,char g10,double aa,

11、double bb,double cc,double dd,double ee,double ff):stu(a,b) strcpy(classnumber,f); strcpy(classname,g); score=aa; pingshifen=bb; shiyanfen=cc; juanmianfen=dd; zongfen=ee; lastscore=ff;friend void main();private:char classnumber10;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen

12、,lastscore;void main() /*主函數(shù)*/char c; int flag5=0;int s=0;cout<<"歡迎進(jìn)入學(xué)生管理系統(tǒng)"<<endl;cout<<"進(jìn)入(y/n)"<<endl; cin>>c;do /*判斷是否進(jìn)入系統(tǒng)*/if(c='n')break;else flag5=1;char number10;char name20;int i=0,I=0,j=0;int ja=0;ofstream *file50; stu1 *s150; /*定義指

13、針存放課程信息*/char classnumber8;char classname10;double score,pingshifen,shiyanfen,juanmianfen,zongfen,lastscore;bool flag=0;int p;char c4;do /*選擇菜單*/cout<<"請選擇操作"<<endl;cout<<"1 輸入學(xué)生成績信息"<<endl;cout<<"2 成績查詢"<<endl;cout<<"3 達(dá)標(biāo)查

14、詢"<<endl;do /*判斷輸入字符*/cin>>p;if(1<=p&&p<=3)flag=1;elsecout<<"指令錯(cuò)誤,請重新輸入!"<<endl;while(flag=0); if(p=1) /*進(jìn)入信息輸入系統(tǒng)*/ cout<<"進(jìn)入信息添加"<<endl;char c1,c2;do /*信息的輸入*/cout<<"請輸入課程編號:"<<endl;cin>>classnumb

15、er;cout<<"請輸入課程名:"<<endl;cin>>classname;docout<<"請輸入學(xué)生學(xué)號:"<<endl;cin>>number;cout<<"請輸入學(xué)生姓名:"<<endl;cin>>name;cout<<"課程總學(xué)分:"<<endl;cin>>score;cout<<"學(xué)生的平時(shí)成績:"<<endl;c

16、in>>pingshifen;cout<<"學(xué)生的實(shí)驗(yàn)成績:"<<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&

17、;&zongfen<=100) /*學(xué)分的計(jì)算*/lastscore=score;else if(80<=zongfen)lastscore=score*0.8;else if(70<=zongfen)lastscore=score*0.7;else if(60<=zongfen)lastscore=score*0.6;elselastscore=0;filej=new ofstream("e:eeee.txt",ios:app); /*信息存儲文件的建立*/*filej<<"學(xué)號:"<<numbe

18、r<<" "<<"課程編號:"<<classnumber<<" "<<"課程名:"<<classname<<" "<<"學(xué)分:"<<score<<" "<<"平時(shí)分:"<<pingshifen<<" "<<"實(shí)驗(yàn)分:"<<

19、;shiyanfen<<" "<<"卷面分:"<<juanmianfen<<" "<<"綜合成績:"<<zongfen<<" "<<"實(shí)得學(xué)分:"<<lastscore<<" "<<endl;j+;s1I=new stu1(number,name,classnumber,classname,score,pingshifen,s

20、hiyanfen,juanmianfen,zongfen,lastscore);I+;cout<<"數(shù)據(jù)輸入成功,繼續(xù)輸入其他學(xué)生成績?(y/n)"cin>>c1;int flag1=0;doif(c1!='y'&&c1!='n')cout<<"錯(cuò)誤指令"<<endl;cin>>c1;elseflag1=1;while(flag1=0);while(c1='y');cout<<"輸入其他課程成績?(y/n)&q

21、uot; /*轉(zhuǎn)入其他成績輸入判斷*/cin>>c2;int flag2=0;doif(c2!='y'&&c2!='n')cout<<"錯(cuò)誤指令"<<endl;cin>>c2;elseflag2=1;while(flag2=0); while(c2='y');if(p=2) /*成績查詢系統(tǒng)*/cout<<"進(jìn)入成績查詢"<<endl;char num10;cout<<"請輸入學(xué)號"<

22、;<endl;cin>>num;int ii=0;double sum=0;double fen=0;double pingjunfen;for(int j=0;j<I;j+)if(strcmp(*s1j).getnumber(),num)=0) /*判斷學(xué)號是否存在*/cout<<"課程編號:"<<(*s1j).classnumber<<" "<<"課程名稱:"<<(*s1j).classname<<" "<&l

23、t;"學(xué)分:"<<(*s1j).score<<" "<<"平時(shí)成績:"<<(*s1j).pingshifen<<" "<<"實(shí)驗(yàn)成績:"<<(*s1j).shiyanfen<<" "<<"卷面成績:"<<(*s1j).juanmianfen<<" "<<"綜合成績:"<

24、<(*s1j).zongfen<<" "<<"實(shí)得學(xué)分:"<<(*s1j).lastscore<<" "<<endl;ii+;sum+=(*s1j).lastscore; /*總學(xué)分計(jì)算*/if(*s1j).score!=0) /*平均分的計(jì)算*/fen+=(*s1j).zongfen;pingjunfen=fen/sum; cout<<"共修:"<<ii<<"科"<<"

25、"<<"總學(xué)分:"<<sum<<" "<<"總分:"<<fen<<" "<<"平均分:"<<pingjunfen<<endl;if(p=3) /*達(dá)標(biāo)查詢系統(tǒng)*/cout<<"進(jìn)入達(dá)標(biāo)查詢"<<endl;char num10;double sum;cout<<"請輸入學(xué)號"<<endl;cin

26、>>num;for(int j=0;j<I;j+)if(strcmp(*s1j).getnumber(),num)=0) sum+=(*s1j).lastscore; if(*s1j).zongfen<60) /*未及格學(xué)科的*/cout<<(*s1j).classname<<"未及格"<<endl;if(sum<10) /*留級判斷*/cout<<"不好意思同學(xué)你未通過,需留級!"<<endl;cout<<"進(jìn)行其他操作(y/n)"

27、<<endl;cin>>c4;while(c4='y');while(flag5=0);5 課程設(shè)計(jì)總結(jié)5.1 程序運(yùn)行結(jié)果或預(yù)期運(yùn)行結(jié)果1.通過輸入y/n判斷用戶是否進(jìn)入學(xué)生成績管理系統(tǒng),通過輸入對應(yīng)的序號選擇對應(yīng)的功能,如圖5.1.1所示。圖5.1.1 進(jìn)入學(xué)生成績管理系統(tǒng)2. 判斷輸入的數(shù)字1,2,3選擇對應(yīng)實(shí)現(xiàn)的功能,選擇1即表示輸入學(xué)生成績,首先輸入課程號、課程名稱再輸入該課程某一學(xué)生的信息、課程學(xué)分以及該生這門課程的各項(xiàng)成績,因?yàn)楦邤?shù)沒有實(shí)驗(yàn),所以實(shí)驗(yàn)成績?yōu)?。如圖5.1.2所示。圖5.1.2 輸入學(xué)科1(高數(shù))某一學(xué)生該科的各項(xiàng)成績3.通過

28、上一個(gè)流程選擇y,選擇輸入學(xué)科1(高數(shù))的其他學(xué)生在該課程的各項(xiàng)成績,平時(shí)分、實(shí)驗(yàn)分和卷面分。如圖5.1.3所示圖5.1.3 輸入學(xué)科1(高數(shù))其他學(xué)生該科的各項(xiàng)成績 4.當(dāng)學(xué)科1數(shù)據(jù)和學(xué)生在該科的信息輸入數(shù)據(jù)成功后。繼續(xù)進(jìn)行其他學(xué)科2(如C+面向?qū)ο蟮恼n程編號、課程名)的輸入操作和其他學(xué)生在C+面向?qū)ο筮@科的各項(xiàng)成績,因?yàn)樵摽朴袑?shí)驗(yàn),所以有實(shí)驗(yàn)成績。如圖5.1.4所示。圖5.1.4 輸入學(xué)科2(C+面向?qū)ο螅┠骋粚W(xué)生該科的各項(xiàng)成績5.輸入其他學(xué)生在學(xué)科2(C+面向?qū)ο螅┑母黜?xiàng)成績,如圖5.1.5所示。圖5.1.5 輸入學(xué)科2(C+面向?qū)ο螅┢渌麑W(xué)生該科的各項(xiàng)成績6.當(dāng)所有學(xué)生的所有科目成績輸

29、入數(shù)據(jù)成功后,選擇適當(dāng)?shù)牟僮?。下面進(jìn)行的操作就是各個(gè)學(xué)生的成績查詢,以輸入的數(shù)據(jù)039號學(xué)生和002學(xué)生為例。如圖5.1.6所示。圖5.1.6 學(xué)號為039號學(xué)生的各科成績7. 查詢其他學(xué)生的各科成績,選擇適當(dāng)?shù)牟僮鳌R暂斎氲膶W(xué)號002號學(xué)生為例。如圖5.1.7所示。圖5.1.7 學(xué)號為002號學(xué)生的各科成績8. 通過查找各個(gè)學(xué)生的成績,我們可以對成績管理系統(tǒng)里的數(shù)據(jù)有清晰的認(rèn)識,在必要時(shí)可以通過該系統(tǒng)進(jìn)行統(tǒng)計(jì)。在了解同學(xué)成績后我們需要進(jìn)行的操作是:某已學(xué)生是否達(dá)標(biāo),以及該生哪門不及格等信息。通過適當(dāng)?shù)牟僮鬟M(jìn)行達(dá)標(biāo)查詢,以002號為例可以看出:該生需要留級,未及格的科目為C+面向?qū)ο?。如圖5.

30、1.8所示。圖5.1.8 學(xué)號為002號學(xué)生的達(dá)標(biāo)查詢 9.當(dāng)所有的數(shù)據(jù)輸入成功、學(xué)生的各科成績計(jì)算出來后。可以在程序設(shè)置的位置找到我們所輸入數(shù)據(jù)、計(jì)算得到的數(shù)據(jù)存儲的文本文件。課程信息和學(xué)生成績可以從文件讀取。如圖5.1.9所示。圖5.1.9 存儲輸入數(shù)據(jù)和計(jì)算得到數(shù)據(jù)的文本文件 5.2 課程設(shè)計(jì)體會課程設(shè)計(jì)剛開始時(shí),拿著選定的題目不知如何下手。畢竟課程設(shè)計(jì)不同于實(shí)驗(yàn)課,很多東西都要自己設(shè)計(jì)。靜下心來,仔細(xì)分析題目,再加上指導(dǎo)老師的說明與提示,心中才有了譜。將整個(gè)系統(tǒng)根據(jù)不同的功能化分成不同的模塊,畫出各個(gè)部分的流程圖根據(jù)流程圖設(shè)計(jì)代碼塊。比如設(shè)計(jì)一個(gè)基類stu和一個(gè)派生類stu1再分別進(jìn)行設(shè)計(jì),逐個(gè)攻破,最后將其整合起來。回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識,友元函數(shù)、文件操作、函數(shù)重載。而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。在完成課題過程

溫馨提示

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

評論

0/150

提交評論