學(xué)生綜合測評系統(tǒng) C++設(shè)計報告_第1頁
學(xué)生綜合測評系統(tǒng) C++設(shè)計報告_第2頁
學(xué)生綜合測評系統(tǒng) C++設(shè)計報告_第3頁
學(xué)生綜合測評系統(tǒng) C++設(shè)計報告_第4頁
學(xué)生綜合測評系統(tǒng) C++設(shè)計報告_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、上海電力學(xué)院高級程序設(shè)計C+課程設(shè)計 題目: 學(xué)生綜合測評系統(tǒng) 院系: 計算機科學(xué)與技術(shù)學(xué)院 專業(yè)年級: 計算機科學(xué)與技術(shù) 學(xué)生姓名: 學(xué)號: 指導(dǎo)教師: 2013年1月目錄目錄21需求分析32概要設(shè)計33詳細設(shè)計64用戶使用手冊74.1 環(huán)境設(shè)置74.2 操作步驟85程序創(chuàng)新點166使用的主要技術(shù)167總結(jié)16附錄161 需求分析本系統(tǒng)旨在便于學(xué)校管理和查閱學(xué)生信息并計算學(xué)生的考試成績和名次以及綜合測評成績和名次。每個學(xué)生的信息為:學(xué)號、姓名、性別、家庭住址、聯(lián)系電話、高等數(shù)學(xué)、物理、英語三門單科成績、同學(xué)互評分、品德成績、任課教師評分??荚嚻骄煽?、同學(xué)互評分、品德成績、任課教師評分分別占

2、綜合測評總分的60%,10%,10%,20%。程序的基本功能:1學(xué)生信息處理:(1) 輸入學(xué)生信息、學(xué)號、姓名、性別、家庭住址、聯(lián)系電話,按學(xué)號以小到大的順序存入文件中。(2) 插入(修改)同學(xué)信息。(3) 刪除同學(xué)信息。(4) 瀏覽學(xué)生信息。2學(xué)生數(shù)據(jù)處理:(1) 按考試科目錄入學(xué)生成績并且按公式:考試成績(語文+數(shù)學(xué)+外語)/3 計算考試成績,并計算考試名次。 (2) 學(xué)生測評數(shù)據(jù)輸入并計算綜合測評總分及名次。(3) 學(xué)生數(shù)據(jù)管理。(4) 學(xué)生數(shù)據(jù)查詢。3學(xué)生綜合信息輸出2 概要設(shè)計根據(jù)需求分析中的描述,知道需要一個帳戶類型,由于基本數(shù)據(jù)類型無法實現(xiàn)將一個用戶的信息綁定在一起,所以需要定義

3、一個抽象數(shù)據(jù)類型帳戶,命名為Student,其定義如下:class Studentpublic:int num;/學(xué)號string name;/姓名string sex;/性別string address;/家庭住址string phone;/聯(lián)系電話double english;/英語成績double math;/數(shù)學(xué)成績double physics;/物理分數(shù)double average;/考試成績double grade1;/同學(xué)互評分double grade2;/品德成績double grade3;/任課教室評分double gradesum;/綜合測評成績int ranking1;/

4、考試名次int ranking2;/綜合測評名次;為了方便外部函數(shù)進行操作,以上全為共有變量。定義一個對象數(shù)組Student stud100;方便對Student類中數(shù)據(jù)進行輸入和輸出以及排序等等功能。外部操作函數(shù)有:void read()/從文件中讀取學(xué)生信息函數(shù)void show()/顯示學(xué)生信息函數(shù)void save()/保存學(xué)生信息函數(shù)void SR()/輸入學(xué)生信息函數(shù)void SC()/刪除學(xué)生信息函數(shù)void TJ()/添加學(xué)生信息函數(shù)void XG()/修改學(xué)生信息函數(shù)void PM1()/計算考試成績以及排名函數(shù)void PM2()/計算綜合測評成績以及排名函數(shù)void sn

5、()/按學(xué)生學(xué)號查找學(xué)生信息void sm()/按學(xué)生姓名查找學(xué)生信息void Fire()/學(xué)生信息管理界面void statistics()/學(xué)生成績統(tǒng)計管理界面void inquiry()/學(xué)生查詢管理界面void about()/關(guān)于系統(tǒng)界面void thanks()/退出程序界面主函數(shù)為學(xué)生測評系統(tǒng)主界面3、詳細設(shè)計void read() char filename20; cout從文件中讀取信息!endl; cout請輸入文件名:filename; cout請問要讀取幾名學(xué)生信息:n; ifstream infile; infile.open(filename,ios:in|ios

6、:out); if(!infile) cerropen error!studi.sexstudi.address studi.phonestudi.englishstudi.math studi.physicsstudi.grade1 studi.grade2studi.grade3; i+; while(!infile.eof(); infile.close(); cout讀取成功!endl; 以上為讀取文件中學(xué)生信息的函數(shù),當(dāng)信息成功讀取后才可進行修改或添加或刪除,所以在許多外部函數(shù)里面都必須要有讀取函數(shù)的功能為前提。void save() int i

7、; char filename20; cout將記錄保存在文件夾!endl; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl;/保存時按學(xué)號排序,采用冒泡排序法實現(xiàn)數(shù)組內(nèi)的排序 for(i=0;in;i+)outfilestudi.num studi.sex studi.address studi.phone studi.english studi.math studi.physics studi.grade1 studi.grade2 studi.grade3endl;

8、outfile.close(); cout保存成功!endl;在每次保存時都先按學(xué)號排序,保證信息是按學(xué)號從小到大的順序存入文件。在輸入、修改、添加和刪除函數(shù)的末端都有保存函數(shù)以實現(xiàn)信息的保存。void XG() read();begin:string find_name; int i; cout請輸入你要修改的學(xué)生名字:find_name; for(i=0;in;i+) if(=find_name) /輸出修改前學(xué)生信息if(!=find_name) coutcant find this nameendl;cout請重新查找!endl;goto beg

9、in;cout請輸入新的信息:endl;cout學(xué)號:studi.num; cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;基于數(shù)組形式對數(shù)據(jù)進行修改。基本上所有函數(shù)都是基于數(shù)組進行操作,像刪除函數(shù)是用循環(huán)先匹配類中的一個數(shù)據(jù),找到之后再以此開始用對象數(shù)組后面的替換掉前一個,以實現(xiàn)刪除功能。 string SC_name; cout請輸入你要刪除的學(xué)生名字:SC_name; while(!=SC_name & in) i+; /查找判斷 if(studi.

10、name=SC_name) for(int j=i;jn+1;j+)studi.num=studi+1.num; =studi+1.name; 考試成績排名和綜合測評成績排名都是采用冒泡排序法實現(xiàn): double temp100;for(int a=0;an;a+)/計算考試成績并賦值給tempstuda.average=(studa.english+studa.math+studa.physics)/3;tempa=studa.average;double t;for(int j=0;jn;j+) /temp中的考試成績按從大到小冒泡排序for(int k=0;kn-1-

11、j;k+)f(tempktempk+1)t=tempk; tempk=tempk+1; tempk+1=t;for(int q=0;qn;q+)/判定考試成績名次for(int p=0;pn;p+)if(studp.average=tempq)studp.ranking1=q+1;最后各種界面函數(shù)通過switch語句進行調(diào)用,以實現(xiàn)各種功能來完成此系統(tǒng): void Fire()/學(xué)生信息管理系統(tǒng)界面 while(choose!=0) /輸出界面樣式略。 couttt 請輸入0-5之間的任意一數(shù)字:choose; switch(choose) case 1:system(cls);SR();br

12、eak; case 2:system(cls);SC();break; case 3:system(cls);TJ();break; case 4:system(cls);XG();break; case 5:system(cls);show();break; default:couttt 輸入錯誤或返回主界面n;break;4、 用戶使用手冊4.1 環(huán)境設(shè)置將已創(chuàng)建擴展名為cpp在VC6.0中運行即可,如圖所示。4.2 操作步驟編譯每個擴展名為.cpp的文件,如果有編譯錯誤,則根據(jù)提示修改,否則編譯成功。最后編譯、連接和運行測試程序文件,輸入數(shù)據(jù)并測試程序的各種操作。如圖所示。 在當(dāng)前的Do

13、s窗口中,輸入要執(zhí)行的功能號碼,如輸入1,然后單擊回車,則顯示如圖所示。此為學(xué)生信息管理界面,輸入要執(zhí)行的功能號碼,如輸入1,然后單擊回車,則顯示如圖所示。 按提示輸入3個學(xué)生信息并保存至文件1.txt中,完成后返回學(xué)生信息管理界面,輸入要執(zhí)行的功能號碼,如輸入5,然后單擊回車,然后輸入文件名1.txt和要讀取幾名學(xué)生信息,如輸入3,則顯示如圖所示。 如上所示,按照提示內(nèi)容輸入功能號并回車確認就能正確使用本系統(tǒng)。5、 使用的主要技術(shù) 文本文件的讀寫、數(shù)組。6、 總結(jié) 經(jīng)過一個學(xué)期對C+程序設(shè)計的學(xué)習(xí),我學(xué)習(xí)到了基本的理論知識,了解到了C+語言程序設(shè)計的思想,這些知識都為我的課程設(shè)計和進一步學(xué)習(xí)

14、打下了堅實的基礎(chǔ)。在為期一周的的C+課程設(shè)計中,我體會頗多,學(xué)到了很多東西。我加強了對C+程序設(shè)計這門課程的認識,并且復(fù)習(xí)了自己以前學(xué)過的知識。這些都使得我對計算機語言的學(xué)習(xí)有了更深入的認識。像學(xué)生測評系統(tǒng)這樣的程序設(shè)計,經(jīng)歷了平時在課堂和考試中不會出現(xiàn)的問題和考驗。而這些問題,并不是只靠課本就可以輕易解決的。所以,鍛煉了我們獨立思考和解決問題的能力。特別是向老師提問時,老師教會了我調(diào)試程序的方法,讓我更容易發(fā)現(xiàn)自己所犯的錯誤。在老師和同學(xué)的幫助下,通過自己的努力,終于完成了這次學(xué)生測評系統(tǒng)的課程設(shè)計,雖然還有缺陷,但過程中所摸索到的經(jīng)驗是一筆寶貴的財富。總而言之,這次課程設(shè)計讓我收獲很大。附

15、錄#include#include#include#includeusing namespace std;char press;int choose=1;int n;class Studentpublic:int num;/學(xué)號string name;/姓名string sex;/性別string address;/家庭住址string phone;/聯(lián)系電話double english;/英語成績double math;/數(shù)學(xué)成績double physics;/物理分數(shù)double average;/考試成績double grade1;/同學(xué)互評分double grade2;/品德成績dou

16、ble grade3;/任課教室評分double gradesum;/綜合測評成績int ranking1;/考試名次int ranking2;/綜合測評名次;Student stud100;/讀取學(xué)生信息void read() char filename20; cout從文件中讀取信息!endl; cout請輸入文件名:filename; cout請問要讀取幾名學(xué)生信息:n; ifstream infile; infile.open(filename,ios:in|ios:out); if(!infile) cerropen error!studi.se

17、xstudi.address studi.phonestudi.englishstudi.math studi.physicsstudi.grade1 studi.grade2studi.grade3; i+; while(!infile.eof(); infile.close(); cout讀取成功!endl; /-顯示學(xué)生信息-void show()read();cout學(xué)號 姓名 性別 家庭地址 聯(lián)系方式 英語 高數(shù) 物理 同學(xué)互評 品德成績 教師評分endl;for(int i=0;in;i+)coutstudi.num;cout.width(5);;cou

18、t.width(5);coutstudi.sex;cout.width(8);coutstudi.address;cout.width(8);coutstudi.phone;cout.width(6);coutstudi.english;cout.width(6);coutstudi.math;cout.width(6);coutstudi.physics;cout.width(6);coutstudi.grade1;cout.width(8);coutstudi.grade2;cout.width(8);coutstudi.grade3endl;/保存學(xué)生信息void save() int

19、i; char filename20; cout將記錄保存在文件夾!endl; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl;/-保存時按學(xué)號排序-int temp100;for(int a=0;an;a+)tempa=studa.num;int t;for(int j=0;jn;j+)for(int k=0;ktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;int tempnum;string tempname;string tempsex;string te

20、mpaddress;string tempphone;double tempenglish;double tempmath;double tempphysics;double tempgrade1;double tempgrade2;double tempgrade3;for(int q=0;qn;q+)for(int p=0;pn;p+)if(studp.num=tempq)tempnum=studp.num;tempname=;tempsex=studp.sex;tempaddress=studp.address;tempphone=studp.phone;tempen

21、glish=studp.english;tempmath=studp.math;tempphysics=studp.physics;tempgrade1=studp.grade1;tempgrade2=studp.grade2;tempgrade3=studp.grade3;studp.num=studq.num;=;studp.sex=studq.sex;studp.address=studq.address;studp.phone=studq.phone;studp.english=studq.english;studp.math=studq.mat

22、h;studp.physics=studq.physics;studp.grade1=studq.grade2;studp.grade2=studq.grade2;studp.grade3=studq.grade3;studq.num=tempnum;=tempname;studq.sex=tempsex;studq.address=tempaddress;studq.phone=tempphone;studq.english=tempenglish;studq.math=tempmath;studq.physics=tempphysics;studq.grade1=tem

23、pgrade1;studq.grade2=tempgrade2;studq.grade3=tempgrade3;for(i=0;in;i+)outfilestudi.num studi.sex studi.address studi.phone studi.english studi.math studi.physics studi.grade1 studi.grade2 studi.grade3endl; outfile.close(); cout保存成功!endl;/輸入學(xué)生資料void SR() coutn;for(int a=0;an;a+)cout請輸入第a+1

24、個學(xué)生資料:endl; cout學(xué)號:studa.num; cout姓名:; cout性別:studa.sex; cout家庭住址:studa.address; cout聯(lián)系方式:studa.phone; cout英語成績:studa.english; cout物理成績:studa.physics;cout高數(shù)成績:studa.math; cout同學(xué)互評:studa.grade1;cout品德成績:studa.grade2;cout任課教師評分:studa.grade3; cout輸入成功,學(xué)生資料是否保存?(y/n)press; switch(press)case y

25、: save();break;default: cout不保存!;break;/刪除資料void SC() read();dostring SC_name; cout請輸入你要刪除的學(xué)生名字:SC_name; while(!=SC_name & in) i+; /查找判斷 if(=SC_name) for(int j=i;jn+1;j+)studi.num=studi+1.num; =studi+1.name; studi.sex=studi+1.sex; studi.address=studi+1.address; studi.ph

26、one=studi+1.phone; studi.english=studi+1.english; studi.math=studi+1.math;studi.physics=studi+1.physics;studi.grade1=studi+1.grade1;studi.grade2=studi+1.grade2;studi.grade3=studi+1.grade3; cout刪除成功!endl; n=n-1;save(); else if(i=n) coutcant find this nameendl;cout該信息不存在,無法刪除!endl; cout(是否繼續(xù)操作?(y/n)pr

27、ess;while(press=y|press=Y) ;/添加學(xué)生信息void TJ() read();docout請?zhí)砑有碌膶W(xué)生信息endl;coutstudn.num;;coutstudn.sex;coutstudn.address;coutstudn.phone;coutstudn.english;coutstudn.math;coutstudn.physics;coutstudn.grade1;coutstudn.grade2;coutstudn.grade3;n+;cout(是否繼續(xù)操作?(y/n)press;while(press=y|press=Y);

28、cout添加成功,學(xué)生資料是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/修改學(xué)生信息void XG() read();begin:string find_name; int i; cout請輸入你要修改的學(xué)生名字:find_name; for(i=0;in;i+) if(=find_name) has been found:endl; cout學(xué)生的學(xué)號:studi.num 姓名: 性別:studi.sex 家庭住址:s

29、tudi.address 聯(lián)系方式:studi.phone 英語成績:studi.english 高數(shù)成績:studi.math 物理成績:studi.physics 同學(xué)互評分:studi.grade1 品德成績:studi.grade2 任課教師評分:studi.grade3endl; break; if(!=find_name) coutcant find this nameendl;cout請重新查找!endl;goto begin;cout請輸入新的信息:endl;cout學(xué)號:studi.num;cout姓名:;cout性別:studi.se

30、x;cout家庭住址:studi.address; cout聯(lián)系方式:studi.phone; cout英語成績:studi.english; cout物理成績:studi.physics;cout高數(shù)成績:studi.math;cout同學(xué)互評分:studi.grade1;cout品德成績:studi.grade2;cout任課教師評分:studi.grade3;cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/-計算考試成績并按考試成績排名-void PM1()read(

31、); double temp100;for(int a=0;an;a+)/studa.average=(studa.english+studa.math+studa.physics)/3;tempa=studa.average;double t;for(int j=0;jn;j+)/temp中的考試成績按從大到小冒泡排序for(int k=0;kn-1-j;k+)if(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=0;qn;q+)/判定考試成績名次for(int p=0;pn;p+)if(studp.average=tempq)s

32、tudp.ranking1=q+1;cout學(xué)號 姓名 考試成績 考試成績排名endl;for(int b=0;bn;b+)coutstudb.num;cout.width(10);;cout.width(10);coutstudb.average;cout.width(10);coutstudb.ranking1endl;cout是否要保存到文件中?(y/n)press;switch(press)case y:int i;char filename20; coutfilename; ofstream outfile(filename); if(!outfile)c

33、erropen error!endl; for(i=0;in;i+)outfile學(xué)號:studi.num 姓名: 考試成績:studi.average 考試成績排名studi.ranking1endl; outfile.close();cout保存成功!endl;break;default: cout不保存!;break;/-計算綜合測評成績并按綜合測評成績排名-void PM2()read();double temp100;for(int a=0;an;a+)/studa.gradesum=(studa.english+studa.math+studa.physics)

34、/3)*0.6+studa.grade1*0.1+studa.grade2*0.1+studa.grade3*0.2;tempa=studa.gradesum;double t;for(int j=0;jn;j+)/temp中的綜合測評成績按從大到小冒泡排序for(int k=0;kn-1-j;k+)if(tempktempk+1)t=tempk;tempk=tempk+1;tempk+1=t;for(int q=0;qn;q+)/判定綜合測評成績名次for(int p=0;pn;p+)if(studp.gradesum=tempq)studp.ranking2=q+1;cout學(xué)號 姓名 綜

35、合測評成績 綜合測評排名endl;for(int b=0;bn;b+)coutstudb.num;cout.width(10);;cout.width(10);coutstudb.gradesum;cout.width(10);coutstudb.ranking2endl;/按學(xué)生學(xué)號查找資料void sn() read();doint find_num; cout請輸入你要查詢的學(xué)號:find_num;int i; for(i=0;in;i+)if(studi.num=find_num) cout學(xué)號為studi.num的學(xué)生的資料已找到:endl;cout學(xué)號:studi.num 姓名: 性別:studi.sex 家庭地址:studi.address 聯(lián)系方式:studi.phone 英語成績:studi.english 高數(shù)成績:studi.math 物理成績:studi.physics 同學(xué)互評分:studi.grade1 品德成績:studi.grade2 任課教師評分:studi.grade3endl;break;if(studi.num!=fi

溫馨提示

  • 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

提交評論