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

下載本文檔

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

文檔簡介

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

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

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

4、考試名次int ranking2;/綜合測評(píng)名次;為了方便外部函數(shù)進(jìn)行操作,以上全為共有變量。定義一個(gè)對(duì)象數(shù)組Student stud100;方便對(duì)Student類中數(shù)據(jù)進(jìn)行輸入和輸出以及排序等等功能。外部操作函數(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()/計(jì)算考試成績以及排名函數(shù)void PM2()/計(jì)算綜合測評(píng)成績以及排名函數(shù)void sn

5、()/按學(xué)生學(xué)號(hào)查找學(xué)生信息void sm()/按學(xué)生姓名查找學(xué)生信息void Fire()/學(xué)生信息管理界面void statistics()/學(xué)生成績統(tǒng)計(jì)管理界面void inquiry()/學(xué)生查詢管理界面void about()/關(guān)于系統(tǒng)界面void thanks()/退出程序界面主函數(shù)為學(xué)生測評(píng)系統(tǒng)主界面3、詳細(xì)設(shè)計(jì)void read() char filename20; cout從文件中讀取信息!endl; cout請(qǐng)輸入文件名:filename; cout請(qǐng)問要讀取幾名學(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)信息成功讀取后才可進(jìn)行修改或添加或刪除,所以在許多外部函數(shù)里面都必須要有讀取函數(shù)的功能為前提。void save() int i

7、; char filename20; cout將記錄保存在文件夾!endl; coutfilename; ofstream outfile(filename); if(!outfile)cerropen error!endl;/保存時(shí)按學(xué)號(hào)排序,采用冒泡排序法實(shí)現(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;在每次保存時(shí)都先按學(xué)號(hào)排序,保證信息是按學(xué)號(hào)從小到大的順序存入文件。在輸入、修改、添加和刪除函數(shù)的末端都有保存函數(shù)以實(shí)現(xiàn)信息的保存。void XG() read();begin:string find_name; int i; cout請(qǐng)輸入你要修改的學(xué)生名字:find_name; for(i=0;in;i+) if(=find_name) /輸出修改前學(xué)生信息if(!=find_name) coutcant find this nameendl;cout請(qǐng)重新查找!endl;goto beg

9、in;cout請(qǐng)輸入新的信息:endl;cout學(xué)號(hào):studi.num; cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;基于數(shù)組形式對(duì)數(shù)據(jù)進(jìn)行修改。基本上所有函數(shù)都是基于數(shù)組進(jìn)行操作,像刪除函數(shù)是用循環(huán)先匹配類中的一個(gè)數(shù)據(jù),找到之后再以此開始用對(duì)象數(shù)組后面的替換掉前一個(gè),以實(shí)現(xiàn)刪除功能。 string SC_name; cout請(qǐng)輸入你要?jiǎng)h除的學(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; 考試成績排名和綜合測評(píng)成績排名都是采用冒泡排序法實(shí)現(xiàn): double temp100;for(int a=0;an;a+)/計(jì)算考試成績并賦值給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語句進(jìn)行調(diào)用,以實(shí)現(xiàn)各種功能來完成此系統(tǒng): void Fire()/學(xué)生信息管理系統(tǒng)界面 while(choose!=0) /輸出界面樣式略。 couttt 請(qǐng)輸入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 輸入錯(cuò)誤或返回主界面n;break;4、 用戶使用手冊(cè)4.1 環(huán)境設(shè)置將已創(chuàng)建擴(kuò)展名為cpp在VC6.0中運(yùn)行即可,如圖所示。4.2 操作步驟編譯每個(gè)擴(kuò)展名為.cpp的文件,如果有編譯錯(cuò)誤,則根據(jù)提示修改,否則編譯成功。最后編譯、連接和運(yùn)行測試程序文件,輸入數(shù)據(jù)并測試程序的各種操作。如圖所示。 在當(dāng)前的Do

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

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

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

16、ble grade3;/任課教室評(píng)分double gradesum;/綜合測評(píng)成績int ranking1;/考試名次int ranking2;/綜合測評(píng)名次;Student stud100;/讀取學(xué)生信息void read() char filename20; cout從文件中讀取信息!endl; cout請(qǐng)輸入文件名:filename; cout請(qǐng)問要讀取幾名學(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é)號(hào) 姓名 性別 家庭地址 聯(lián)系方式 英語 高數(shù) 物理 同學(xué)互評(píng) 品德成績 教師評(píng)分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;/-保存時(shí)按學(xué)號(hào)排序-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請(qǐng)輸入第a+1

24、個(gè)學(xué)生資料:endl; cout學(xué)號(hào):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é)互評(píng):studa.grade1;cout品德成績:studa.grade2;cout任課教師評(píng)分:studa.grade3; cout輸入成功,學(xué)生資料是否保存?(y/n)press; switch(press)case y

25、: save();break;default: cout不保存!;break;/刪除資料void SC() read();dostring SC_name; cout請(qǐng)輸入你要?jiǎng)h除的學(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請(qǐng)?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請(qǐng)輸入你要修改的學(xué)生名字:find_name; for(i=0;in;i+) if(=find_name) has been found:endl; cout學(xué)生的學(xué)號(hào):studi.num 姓名: 性別:studi.sex 家庭住址:s

29、tudi.address 聯(lián)系方式:studi.phone 英語成績:studi.english 高數(shù)成績:studi.math 物理成績:studi.physics 同學(xué)互評(píng)分:studi.grade1 品德成績:studi.grade2 任課教師評(píng)分:studi.grade3endl; break; if(!=find_name) coutcant find this nameendl;cout請(qǐng)重新查找!endl;goto begin;cout請(qǐng)輸入新的信息:endl;cout學(xué)號(hào):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é)互評(píng)分:studi.grade1;cout品德成績:studi.grade2;cout任課教師評(píng)分:studi.grade3;cout修改成功,是否保存?(y/n)press;switch(press)case y : save();break;default: cout不保存!;break;/-計(jì)算考試成績并按考試成績排名-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é)號(hào) 姓名 考試成績 考試成績排名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é)號(hào):studi.num 姓名: 考試成績:studi.average 考試成績排名studi.ranking1endl; outfile.close();cout保存成功!endl;break;default: cout不保存!;break;/-計(jì)算綜合測評(píng)成績并按綜合測評(píng)成績排名-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中的綜合測評(píng)成績按從大到小冒泡排序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+)/判定綜合測評(píng)成績名次for(int p=0;pn;p+)if(studp.gradesum=tempq)studp.ranking2=q+1;cout學(xué)號(hào) 姓名 綜

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

溫馨提示

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