學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)_第1頁
學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)_第2頁
學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)_第3頁
學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)_第4頁
學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、河南工程學(xué)院高級程序設(shè)計語言課程設(shè)計成果報告學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)學(xué)生學(xué)號: 學(xué)生姓名: 學(xué) 院: 計算機(jī)學(xué)院 專業(yè)班級: 專業(yè)課程: 高級程序設(shè)計語言指導(dǎo)教師: 年 月 日題 目學(xué)生成績管理系統(tǒng)設(shè)計與實(shí)現(xiàn)考核項目考核內(nèi)容得分平時考核(30分)出勤情況、態(tài)度、效率;知識掌握情況、基本操作技能、知識應(yīng)用能力、獲取知識能力系統(tǒng)設(shè)計(20分)分析系統(tǒng)的功能模塊編程調(diào)試(20分)實(shí)現(xiàn)系統(tǒng)的各個功能模塊,并完成調(diào)試回答問題(15分)回答老師針對課程設(shè)計提出的問題課程設(shè)計報告撰寫(10分)嚴(yán)格按照規(guī)范要求完成課程設(shè)計報告源代碼(5分)按照規(guī)范要求完成課程設(shè)計源代碼的排版總 評 成 績指導(dǎo)教師評語: 日

2、期: 年 月 日目 錄第1章 系統(tǒng)設(shè)計目的11.1 設(shè)計內(nèi)容11.2 設(shè)計目的:11.3設(shè)計要求:1第2章 系統(tǒng)實(shí)現(xiàn)思路32.1 系統(tǒng)分析32.2 系統(tǒng)模塊框架圖:4第3章系統(tǒng)詳細(xì)設(shè)計53.1系統(tǒng)設(shè)計53.2系統(tǒng)的實(shí)現(xiàn)53.3 詳細(xì)設(shè)計5第4章 系統(tǒng)調(diào)試運(yùn)行17課程設(shè)計體會22參考文獻(xiàn)24第1章 系統(tǒng)設(shè)計目的1.1 設(shè)計內(nèi)容 - 設(shè)計四個類;學(xué)生類(描述學(xué)生基本信息);成績類:班級類;課程(描述課程信息:課程編號,科目名稱(如高等數(shù)學(xué),大學(xué)英語等);學(xué)生成績及課程信息用文件保存,每個類一個文件,程序執(zhí)行時從文件讀入;- 能按學(xué)期,按班級完成對學(xué)生成績的錄入,修改,能按班級統(tǒng)計學(xué)生的成績;求學(xué)生

3、的總分及平均分;并能根據(jù)學(xué)生的平均成績進(jìn)行排序,能查詢學(xué)生成績,不及格科目及學(xué)生名單;能按班級輸出學(xué)生的成績單。 設(shè)置學(xué)生的成績信息:學(xué)生學(xué)號、姓名、所選課程名稱、平時成績、期末成績、平時成績所占百分比 計算學(xué)生總評成績:總評成績=平時成績*平時成績所占百分比+期末成績*(1-平時成績所占百分比) 顯示學(xué)生的姓名、所選課程名稱以及平時成績、期末成績和總評成績信 息。分單人顯示和以班輸出(班成績單格式輸出到文件) 注意,至少一個班,30人三門;1.2 設(shè)計目的:(1)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法;(2)達(dá)到熟練掌握C+語言的基本知識和技能,解決簡單的程序設(shè)計問題 (3)能夠利用所學(xué)的

4、基本知識和技能,解決簡單的程序設(shè)計問題1.3設(shè)計要求:基本要求:(1) 要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來完成系統(tǒng)的設(shè)計;(2) 要求在設(shè)計的過程中,建立清晰的類層次;(3) 在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機(jī)制; (4)根據(jù)C+課程所學(xué)的概念、理論和方法,按照C+程序設(shè)計的基本 步驟,設(shè)計出一個適當(dāng)規(guī)模的程序來實(shí)現(xiàn)設(shè)計課程內(nèi)容中的全部功能; (5)設(shè)計主控模塊程序?qū)o出的程序源代碼要給出各部分的詳細(xì)注釋自己根據(jù)能力及需要添加相應(yīng)功能模塊,增強(qiáng)模擬系統(tǒng)功能。第2章 系統(tǒng)實(shí)現(xiàn)思路 2.1 系統(tǒng)分析1.需求分析:a.能對學(xué)生各科成績進(jìn)行錄入:。b.能對學(xué)生的成績進(jìn)行增加。c.能對學(xué)

5、生的成績進(jìn)行刪除。d.能對學(xué)生的成績進(jìn)行修改。e.能對學(xué)生的成績按總成績,姓名,進(jìn)行查詢。f.能輸出學(xué)生的所有數(shù)據(jù)。g.能進(jìn)行成績統(tǒng)計h.能進(jìn)行總分查詢排名。2.系統(tǒng)功能描述: (1)使用繼承的方法構(gòu)造函數(shù)的類 (2)用文本文檔來顯示所錄入的數(shù)據(jù) (3)用switch函數(shù)來選擇執(zhí)行的功能 3.系統(tǒng)的功能分析: 資料維護(hù):系統(tǒng)維護(hù)包括對學(xué)生信息錄入操作及數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)功能:可以對數(shù)據(jù)表中的信息進(jìn)行瀏覽。系統(tǒng)查詢:可以對學(xué)生的信息進(jìn)行查詢。2.2 系統(tǒng)模塊框架圖:1.通過分析畫出程序結(jié)構(gòu)圖:學(xué)生成績管理系統(tǒng) 圖0-0程序框架圖操作查詢學(xué)生信息修改增加總成績查詢姓名查詢輸出所有學(xué)生的成

6、績錄入 刪除每個學(xué)生的平均成績每個學(xué)生的總評成績按總成績排名查詢各科不及格人數(shù) 第3章系統(tǒng)詳細(xì)設(shè)計 3.1系統(tǒng)設(shè)計1. 界面設(shè)計程序運(yùn)行后會出現(xiàn)一個簡捷的窗口,便于用戶查詢數(shù)據(jù)。3.2系統(tǒng)的實(shí)現(xiàn)通過主窗體調(diào)用其他窗體,具體實(shí)現(xiàn)可以參照系統(tǒng)分析相關(guān)內(nèi)容。應(yīng)用系統(tǒng)主控界面包括記錄編輯和記錄查詢等功能模塊。記錄編輯功能完成學(xué)生成績記錄編輯和記錄查詢功能。記錄查詢功能可以對數(shù)據(jù)各分類的記錄進(jìn)行查詢3.3 詳細(xì)設(shè)計 (1)定義一個基類student:class Student /定義學(xué)生類public: Student(char n20,int num,float xuen)strcpy(name,n)

7、;number=num;xuenian=xuen;char name20;int number;int xuenian; (2)再派生出成績類:class Chengji: public Student /設(shè)置成績類學(xué)生成績 public: Chengji(char n20,int num,float xuen, float ma2,float ma,float cy2,float cy,float eng2,float eng):Student(n,num,xuen)cyuyan=cy;english=eng;math=ma;cyuyan2=cy2;english2=eng2;math2=m

8、a2;在這個類中把一些需要用到的成員函數(shù)寫上,來計算總分,總評成績,平均成績注意參數(shù); float get_sum() /計算總分 sum=english2+math2+cyuyan2; return sum; friend void main();/將主函數(shù)定義為友元函數(shù),方便訪問類中的成員 float get_aver() /得到平均分的函數(shù)average=get_sum()/3;return average;(3)定義主函數(shù):void main() /主函數(shù)cout<<"*歡迎來到學(xué)生成績查詢系統(tǒng)*"<<endl;cout<<&qu

9、ot;請選擇需要的操作!"<<endl;/菜單的輸出cout<<"()數(shù)據(jù)錄入"<<endl;cout<<"()增加學(xué)生"<<endl;cout<<"()刪除學(xué)生"<<endl;cout<<"()修改數(shù)據(jù)"<<endl;cout<<"查詢:"<<endl;cout<<"()按總成績查詢"<<endl;cout&l

10、t;<"()按姓名查詢"<<endl;cout<<"()輸出所有學(xué)生的數(shù)據(jù)"<<endl;cout<<"成績統(tǒng)計:"<<endl;cout<<"()每個學(xué)生的平均成績"<<endl;cout<<"()各個學(xué)科不及格人數(shù)"<<endl;cout<<"排名"<<endl;cout<<"()按總分查詢排名"<

11、<endl;cout<<"()退出"<<endl;cout<<"選擇相關(guān)操作請輸入相對的括號里的阿拉伯?dāng)?shù)字及字母!"<<endl;(4)運(yùn)用全局變量: int p=0;/全局變量,用于選擇菜單時的輸入char w;/全局變量,用于在大項中選擇是否繼續(xù)操作Chengji *s100;/類定義的指針將所錄入的數(shù)據(jù)按類中的形式分別存儲ofstream *file100;int i=0;/全局變量,用于做每個錄入數(shù)據(jù)的下標(biāo)int j=0;(5)運(yùn)用switch函數(shù)來實(shí)現(xiàn)用戶所要求的功能,并用dowhile 來

12、進(jìn)行循環(huán)。do/判斷輸入是否正確 cin>>p;if(p>=1&&p<=11)chris1=1;elsecout<<"指令錯誤!請重新輸入:"<<endl;while(chris1=0); doswitch(p)case 1用來進(jìn)行數(shù)據(jù)的錄入,并保存:case 1: /數(shù)據(jù)錄入 float zong; /計算總評成績char c; /用于在小項中選擇是否繼續(xù)操作char name20;int number;float math2,cyuyan2,english2,math,cyuyan,english,bf,x

13、uenian;do cout<<"請輸入學(xué)年"<<endl; cin>>xuenian;cout<<"請輸入姓名"<<endl;cin>>name;cout<<"請輸入學(xué)號"<<endl;cin>>number;cout<<"請輸入數(shù)學(xué)期末成績"<<endl;cin>>math2;cout<<"請輸入數(shù)學(xué)平時成績"<<endl;c

14、in>>math;cout<<"請輸入c+期末成績"<<endl; cin>>cyuyan2; cout<<"請輸入c+平時成績"<<endl;cin>>cyuyan;cout<<"請輸入英語期末成績"<<endl;cin>>english2;cout<<"請輸入英語平時成績"<<endl;cin>>english;cout<<"請輸入成績

15、百分比"<<endl;cin>>bf;zong=(english2+math2+cyuyan2)*(1-bf)+(english+math+cyuyan)*bf;fstream outfile,infile;/作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)outfile.open("f1.txt",ios:out|ios:app);if(!file)cout<<"f1.txt can not open.n"return ;outfile<<"姓名:"<<name<

16、;<" "<<"學(xué)號:"<<number<<"數(shù)學(xué)成績:"<<math2<<"數(shù)學(xué)平時成績:"<<math<<"c+成績:"<<cyuyan2<<"c+平時成績:"<<cyuyan<<"英語成績:"<<english2<<"英語平時成績"<<english<&

17、lt;"總評成績"<<zong<<endl;outfile.close();infile.open("f1.txt",ios:in);if(!file)/判斷文件是否打開cout<<"f1.txt can not open.n"return ;case2用來添加學(xué)生的數(shù)據(jù);case 2: /增加學(xué)生數(shù)據(jù)char name20;int number;float cyuyan,math,english,cyuyan2,math2,english2,bf,xuenian;char c;do cout<

18、;<"請輸入學(xué)年"<<endl; /增加的信息 cin>>xuenian;cout<<"請輸入您要增加的學(xué)生的名字:"<<endl;cin>>name;cout<<"請輸入你要增加的學(xué)生的學(xué)號:"<<endl;cin>>number;cout<<"請輸入數(shù)學(xué)成績"<<endl;cin>>math2;cout<<"請輸入數(shù)學(xué)平時成績"<<

19、endl;cin>>math;cout<<"請輸入c+成績"<<endl;cin>>cyuyan2;cout<<"請輸入c+平時成績"<<endl;cin>>cyuyan;cout<<"請輸入英語成績"<<endl;cin>>english2;cout<<"請輸入英語平時成績"<<endl;cin>>english;cout<<"請輸入成績

20、百分比"<<endl;cin>>bf; fstream outfile,infile;outfile.open("f1.txt",ios:out|ios:app);if(!file)cout<<"f1.txt can not open.n"return ;outfile<<"姓名:"<<name<<"學(xué)號:"<<number<<"數(shù)學(xué)成績:"<<math2<<&quo

21、t;數(shù)學(xué)平時成績:"<<math<<"c+成績:"<<cyuyan2<<"c+平時成績:"<<cyuyan<<"英語成績:"<<english2<<"英語平時成績"<<english<<endl;outfile.close();infile.open("f1.txt",ios:in);if(!file)cout<<"f1.txt can not

22、open.n"return ;char h;while(infile.get(h)cout<<h;cout<<endl;infile.close();j+;si=new Chengji(name,number,xuenian,math2,math,cyuyan2,cyuyan,english2,english);i+;case3用來刪除學(xué)生的信息:case 3: /刪除學(xué)生信息 char c; string xingming,line,str,name;doifstream fin("f1.txt");fstream outfile(&qu

23、ot;f2.txt",ios:trunc|ios:out);/作一個文本文檔在文件夾中用于顯示所錄入的數(shù)據(jù)cout<<"請輸入您要刪除的學(xué)生的姓名:"<<endl;cin>>xingming;while(!fin.eof()getline(fin,line);istringstream stream(line);name=line.substr(0,line.find(" ",0);/找到名字,判斷是否相等if (name!=xingming)outfile<<line<<endl;

24、outfile.close(); fin.close(); fstream f("f1.txt",ios:trunc|ios:out); ifstream outf("f2.txt"); f<<outf.rdbuf(); outf.close(); f.close();case4用來修改數(shù)據(jù):case 4: /修改數(shù)據(jù) string sname,line,str,name; int nu; float en,mat,cyu,mat2,cyu2,en2; int flag; char c; if(i=0) cout<<"系

25、統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)"<<endl;break; do flag=0; cout<<"請輸入您要修改的學(xué)生的名字:" ; cin>>name; fstream fin("f1.txt",ios:in); ofstream outfile("f.txt",ios:trunc|ios:out); cout<<endl; while(!fin.eof() /在文件中查找getline(fin,line);istringstream stream(line);sname=li

26、ne.substr(0,line.find("",0);if(name!=sname) outfile<<line<<endl;else flag=1; fin.close();if (flag=1)cout<<"請輸入修改學(xué)生姓名及其新學(xué)號,數(shù)學(xué),c+、英語成績以及平時成績:"cin>>name>>nu>>mat2>>mat>>cyu2>>cyu>>en2>>en;cout<<endl;outfile<&

27、lt;"姓名:"<<name<<"學(xué)號:"<<nu<<"數(shù)學(xué)成 績:"<<mat2<<"數(shù)學(xué)平時成績:"<<mat<<"c+成績:"<<cyu2<<" c+平時成 績:"<<cyu<<" 英語成績:"<<en2<<" 英語平時成績:"<<en<<e

28、ndl;outfile.close();fstream outf("f1.txt",ios:trunc|ios:out);fstream inf("f.txt",ios:in);outf<<inf.rdbuf()<<endl;outf.close();inf.close();if (flag=0)cout<<"對不起,你要修改的學(xué)生不存在!請查證后輸入!"<<endl;case5用來實(shí)現(xiàn)總分的查詢:case 5: /按總分查詢 int j=0; float SUM;char c;int

29、flag; if (i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;doflag=0;cout<<"請輸入您要查詢的學(xué)生的總成績:"<<endl;cin>>SUM;for(int j=0;j<i;j+)if(sj->get_sum()=SUM)flag=1;cout<<"您要查詢的學(xué)生是:"<<(*sj).name<<endl;cout<<"該生的信息為:"&l

30、t;<endl;cout<<" 學(xué)號:"<<(*sj).number<<" 數(shù)學(xué)分?jǐn)?shù):"<<(*sj).math2<<" c+分?jǐn)?shù):"<<(*sj).cyuyan2<<" 英語分?jǐn)?shù):"<<(*sj).english2<<endl;if(flag=0)cout<<"對不起!您要查詢的學(xué)生不存在!"<<endl;case6用來實(shí)現(xiàn)用姓名查詢:case 6: /按姓

31、名查詢char n20;char c;int j=0;int flag;if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;doflag=0;cout<<"請輸入要查詢的名字"<<endl;cin>>n;for(int j=0;j<i;j+)if(strcmp(n,(*sj).name)=0)flag=1;cout<<"該生的信息為:"<<" 學(xué)號:"<<(*sj).numbe

32、r<<" 數(shù)學(xué)分?jǐn)?shù):"<<(*sj).math2<<" c+分?jǐn)?shù):"<<(*sj).cyuyan2<<" 英語分?jǐn)?shù):"<<(*sj).english2<<"總分:"<<(*sj).get_sum()<<endl;/輸出該學(xué)生的信息if(flag=0)cout<<"對不起!您要查詢的學(xué)生不存在!"<<endl;cout<<"是否繼續(xù)查?(y/n)

33、;"cin>>c;if(c!='y'&&c!='n')cout<<"指令錯誤!請重新輸入"<<endl;cin>>c;case7用來輸出所有學(xué)生的數(shù)據(jù):case 7:/輸出所有學(xué)生數(shù)據(jù)cout<<"所有學(xué)生數(shù)據(jù)如下:"<<endl;ifstream file;file.open("f1.txt",ios:in);cout<<file.rdbuf();file.close();break;case

34、用來統(tǒng)計每個人的平均成績:case 8:if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;for(int m=0;m<i;m+)cout<<"姓名:"<<(*sm).name<<" 學(xué)號:"<<(*sm).number <<" 總分:"<<(*sm).get_sum()<<" 均分:"<<(*sm).get_aver()<&l

35、t;endl;break;case9用來統(tǒng)計每科的不合格人數(shù):case 9:if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;int m,n,k,j;m=0;n=0;k=0;for(j=0;j<i;j+) /計算不合格人數(shù)if(sj->math2<60)m+;if(sj->cyuyan2<60)n+;if(sj->english2<60)k+;cout<<"數(shù)學(xué)不及格人數(shù)為:"<<m<<endl;cout<&

36、lt;"c+不及格人數(shù)為:"<<n<<endl;cout<<"英語不及格人數(shù)為:"<<k<<endl;break;case10用來進(jìn)行排名:case 10: /按總分排名if(i=0)cout<<"系統(tǒng)中沒有輸入數(shù)據(jù),請先輸入數(shù)據(jù)!"<<endl;break;int h,g,n;int j=0;float a100,temp;for(g=0;g<i;g+) /進(jìn)行排序aj=(*sg).get_sum();j+;for(h=0;h<i;h+)for(n=0;n<i-h;n+)if(an>an+1)temp=an;an=an+1;an+1=temp;for(n=1

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論