小型學(xué)生信息管理系統(tǒng)Word版_第1頁
小型學(xué)生信息管理系統(tǒng)Word版_第2頁
小型學(xué)生信息管理系統(tǒng)Word版_第3頁
小型學(xué)生信息管理系統(tǒng)Word版_第4頁
小型學(xué)生信息管理系統(tǒng)Word版_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!綜合實(shí)驗(yàn)要求編寫一個(gè)小型學(xué)生信息管理系統(tǒng),可以對(duì)中學(xué)生、大學(xué)生和研究生的信息進(jìn)行簡(jiǎn)單管理。每一類學(xué)生都包含有學(xué)生的學(xué)生名、成績1、成績2、成績3和平均成績,其中平均成績=(成績1+成績2+成績3)/3。每一類學(xué)生還有區(qū)別與其他類學(xué)生的特殊信息,中學(xué)生有家長,大學(xué)生有專業(yè),研究生有導(dǎo)師。實(shí)現(xiàn)以下功能:(1) 輸入學(xué)生的基本信息;(2) 根據(jù)學(xué)生名查詢某個(gè)學(xué)生的信息;(3) 計(jì)算并顯示某個(gè)學(xué)生的平均成績;一、系統(tǒng)分析 1、基本信息類的屬性和操作1) 屬性學(xué)生類別編號(hào)、學(xué)生名、成績1、成績2、成績3、平均成績(為了方便信息的讀取,程序中給每類學(xué)生

2、設(shè)置了一個(gè)學(xué)生類別編號(hào),以便區(qū)別各類學(xué)生)2)操作 數(shù)據(jù)輸入:輸入學(xué)生名、成績1、成績2和成績3; 數(shù)據(jù)輸出:輸出學(xué)生類別編號(hào)、姓名、成績1、成績2和成績3; 計(jì)算平均成績:平均成績 =(成績1+成績2+成績3)/3。2、中學(xué)生類的屬性和操作1) 屬性繼承基本信息類的屬性,并增加中學(xué)生類區(qū)別于其他學(xué)生類的特殊屬性,即家長。 2) 操作數(shù)據(jù)輸入:繼承基本信息類的數(shù)據(jù)輸入操作,并增加輸入“家長”、信息的功能。數(shù)據(jù)輸出:繼承基本信息類的數(shù)據(jù)輸出操作,并增加輸出“家長”、信息的功能。3、大學(xué)生類的屬性和操作1) 屬性繼承基本信息類的屬性,并增加大學(xué)生類區(qū)別于其他學(xué)生類的特殊屬性,即專業(yè)。 2) 操作數(shù)

3、據(jù)輸入:繼承基本信息類的數(shù)據(jù)輸入操作,并增加輸入“專業(yè)”、信息的功能。數(shù)據(jù)輸出:繼承基本信息類的數(shù)據(jù)輸出操作,并增加輸出“專業(yè)”、信息的功能。4、研究生屬性和操作1) 屬性繼承基本信息類的屬性,并增加研究生類區(qū)別于其他學(xué)生類的特殊屬性,即導(dǎo)師。傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除! 2) 操作數(shù)據(jù)輸入:繼承基本信息類的數(shù)據(jù)輸入操作,并增加輸入“導(dǎo)師”、信息的功能。數(shù)據(jù)輸出:繼承基本信息類的數(shù)據(jù)輸出操作,并增加輸出“導(dǎo)師”、信息的功能。 5、系統(tǒng)管理類操作 系統(tǒng)管理類自成一個(gè)類:系統(tǒng)管理類。主要操作有:1) 輸入學(xué)生基本信息;2) 根據(jù)學(xué)生姓名查詢某個(gè)學(xué)生的信息;3) 計(jì)算并顯示

4、某個(gè)學(xué)生的平均成績。二、系統(tǒng)設(shè)計(jì) 1、基類和派生類的設(shè)計(jì) 基類record(基本信息類): num(學(xué)生類別編號(hào))、name(學(xué)生名)、score1(成績1)、score2(成績2)、score3(成績3)、average(平均成績)。 student(中學(xué)生類): 從基類繼承來的屬性、patriarch(家長)。 u_student(大學(xué)生類): 從基類繼承來的屬性、major(專業(yè))。 graduate(研究生類): 從基類繼承來的屬性、mentor(導(dǎo)師)。 system(系統(tǒng)管理類): 成員函數(shù)in_information負(fù)責(zé)輸入學(xué)生信息,成員函數(shù)search查詢學(xué)生信息,成員函數(shù)ou

5、t_average 計(jì)算并顯示平均成績,成員函數(shù)interface負(fù)責(zé)界面輸出。2、系統(tǒng)管理類設(shè)計(jì) (1)將數(shù)據(jù)文件信息讀入內(nèi)存對(duì)象數(shù)組 程序一啟動(dòng),由system的構(gòu)造函數(shù)自動(dòng)調(diào)用函數(shù)readfile完成。 (2)信息的輸入 成員函數(shù)in_information根據(jù)要輸入學(xué)生的類別分別調(diào)用對(duì)應(yīng)的學(xué)生信息輸入功能函數(shù)完成輸入。 (3)成員函數(shù)search接收從鍵盤輸入的學(xué)生類別和學(xué)生名,在對(duì)應(yīng)的對(duì)象數(shù)組中查找,找到后調(diào)用對(duì)象的成員函數(shù)output顯示學(xué)生信息。 (4)平均成績計(jì)算和顯示 接收從鍵盤輸入的學(xué)生類別和姓名,然后查找對(duì)象數(shù)組,找到后調(diào)用對(duì)象的計(jì)算平均成績函數(shù)計(jì)算平均成績,然后顯示。

6、三、系統(tǒng)實(shí)現(xiàn) 頭文件:record.h 、student.h 、u_student .h 、graudate.h 、system.h 源文件:record.cpp 、student. cpp 、u_student . cpp 、graudate. cpp 、傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!system. cpp、main.cpp .程序運(yùn)行的主界面如圖:實(shí)驗(yàn)代碼:頭文件部分:/record.h#ifndef _record_h_#define _record_h_#include #includeusing namespace std;class system;class

7、 recordpublic:record()傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!record(string n,float s1,float s2,float s3,float avg):name(n),score1(s1),score2(s2),score3(s3),average(avg)average=0;virtual void set_inf()=0;virtual void display_inf()=0;float caculate_avg();friend class system;protected:string name;float score1;floa

8、t score2;float score3;float average;#endif/student.h#ifndef _student_h_#define _student_h_#include #includerecord.husing namespace std;class system;class student:public recordpublic:student() / /set_inf(); student(string n,float s1,float s2,float s3,float avg,string pa):record(n,s1,s2,s3,avg),patria

9、rch(pa)virtual void set_inf();virtual void display_inf();friend class system;friend ifstream& operator(ifstream& i, student& s);friend ofstream& operator(ofstream&i, student& s);protected:string patriarch;#endif/u_student.h#ifndef _u_student_h_傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!#define _u_student_h_#include

10、 #includerecord.husing namespace std;class system;class u_student:public recordpublic:u_student()/ /set_inf(); u_student(string n,float s1,float s2,float s3,float avg,string ma):record(n,s1,s2,s3,avg),major(ma)virtual void set_inf();virtual void display_inf();friend class system;friend ifstream& ope

11、rator(ifstream& i, u_student& s);friend ofstream& operator(ofstream&i, u_student& s);protected:string major;#endif/graduate.h#ifndef _graduate_h_#define _graduate_h_#include #includerecord.husing namespace std;class system;class graduate:public recordpublic:graduate()/ /set_inf(); graduate(string n,

12、float s1,float s2,float s3,float avg,string me):record(n,s1,s2,s3,avg),mentor(me)virtual void set_inf();virtual void display_inf();friend class system;friend ifstream& operator(ifstream& i, graduate& s);friend ofstream& operator(ofstream&i, graduate& s);protected:string mentor;#endif/system.h傳播優(yōu)秀wor

13、d版文檔 ,希望對(duì)您有幫助,可雙擊去除!#ifndef _system_h_#define _system_h_class systempublic:system();void in_information();void search();void out_average();void interface();void readfile();void delete_inf();void writefile();#endif/源文件部分/record.cpp#include record.h#include using namespace std;float record:caculate_av

14、g()return average=(score1+score2+score3)/3;/student.cpp#include student.h#include #includeusing namespace std;void student:set_inf()cout姓名:name;cout成績一:score1;cout成績二:score2;cout成績?nèi)簊core3;cout家長:patriarch;傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!this-caculate_avg();void student:display_inf()cout姓名:nameendl;cout成

15、績一:score1endl;cout成績二:score2endl;cout成績?nèi)簊core3endl;cout家長:patriarch(ifstream& infile, student& s) s.score1 s.score2 s.score3s.averages.patriarch;return infile;ofstream& operator(ofstream& outfile, student& s)outfile s.score1 s.score2 s.score3 s.average s.patriarch endl;return out

16、file;/u_student.cpp#include u_student.h#include #includeusing namespace std;void u_student:set_inf()cout姓名:name;cout成績一:score1;cout成績二:score2;cout成績?nèi)簊core3;cout專業(yè):major;this-caculate_avg();void u_student:display_inf()cout姓名:nameendl;傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!cout成績一:score1endl;cout成績二:score2endl;c

17、out成績?nèi)簊core3endl;cout專業(yè):major(ifstream& infile, u_student& s)infile s.score1 s.score2 s.score3 s.average s.major;return infile;ofstream& operator(ofstream& outfile, u_student& s)outfile s.score1 s.score2 s.score3 s.average s.major endl;return outfile;/graduate.cpp#include graduate.h#i

18、nclude #includeusing namespace std;void graduate:set_inf()cout姓名:name;cout成績一:score1;cout成績二:score2;cout成績?nèi)簊core3;cout導(dǎo)師:mentor;this-caculate_avg();void graduate:display_inf()cout姓名:nameendl;cout成績一:score1endl;傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!cout成績二:score2endl;cout成績?nèi)簊core3endl;cout導(dǎo)師:mentor(ifstream&

19、infile, graduate& s)infile s.score1 s.score2 s.score3 s.average s.mentor;return infile;ofstream& operator(ofstream& outfile, graduate& s)outfile s.score1 s.score2 s.score3 s.average s.mentor endl;return outfile;/system.cpp#include system.h#includerecord.h#includestudent.h#includeu_stud

20、ent.h#includegraduate.h#include #include#include#include#include shlwapi.h#pragma comment(lib,shlwapi.lib)#includeusing namespace std;vector stu_m;vector stu_u;vector stu_g;system:system() system(title 小型學(xué)生信息管理);system(color 0b);this-readfile();this-interface();傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除! void syste

21、m:readfile() /*handle hfile1 = createfilea(中學(xué)生信息.txt, file_attribute_readonly, 0, null, open_always, file_attribute_normal, null);*/*student temp_stu_m;if (!pathfileexistsa(中學(xué)生信息.txt) createfilea(./中學(xué)生信息.txt, null, 0, null, open_always, file_attribute_normal, null ); ifstream iofile1(中學(xué)生信息.txt, ios:

22、in | ios:out);while (!iofile1.eof()iofile1 temp_stu_m;stu_m.push_back(temp_stu_m);stu_m.pop_back();iofile1.close();/*u_student temp_stu_u;/*handle hfile2 = createfilea(大學(xué)生信息.txt, file_attribute_readonly, 0, null, open_always, file_attribute_normal, null);*/if (!pathfileexistsa(大學(xué)生信息.txt) createfilea

23、(./大學(xué)生信息.txt, null, 0, null, open_always, file_attribute_normal, null); ifstream iofile2(大學(xué)生信息.txt, ios:in | ios:out);while (!iofile2.eof()iofile2 temp_stu_u;stu_u.push_back(temp_stu_u);stu_u.pop_back();iofile2.close();/*graduate temp_stu_g;/*handle hfile3 = createfilea(研究生信息.txt, file_attribute_rea

24、donly, 0, null, open_always, file_attribute_normal, null);*/if (!pathfileexistsa(研究生信息.txt) createfilea(./研究生信息.txt, null, 0, null, open_always, file_attribute_normal, null); 傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!ifstream iofile3(研究生信息.txt, ios:in | ios:out);while (!iofile3.eof()iofile3 temp_stu_g;stu_g.push_b

25、ack(temp_stu_g);stu_g.pop_back();iofile3.close();void system:writefile() /*ofstream iofile4(中學(xué)生信息.txt, ios:in | ios:out|ios:trunc);if (!iofile4) cerr open error! endl;system(pause);exit(0);for (vector:iterator it = stu_m.begin(); it !=stu_m.end(); it+) iofile4*it;iofile4.close();/*ofstream iofile5(大

26、學(xué)生信息.txt, ios:in | ios:out |ios:trunc);if (!iofile5) cerr open error! endl;system(pause);exit(0);for (vector:iterator it = stu_u.begin(); it != stu_u.end(); it+)iofile5 *it;iofile5.close();/*ofstream iofile6(研究生信息.txt, ios:in | ios:out | ios:trunc);if (!iofile6) 傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!cerr open

27、error! endl;system(pause);exit(0);for (vector:iterator it = stu_g.begin(); it != stu_g.end(); it+)iofile6 *it;iofile6.close();void system:in_information()int n;cout輸入要?jiǎng)?chuàng)建的學(xué)生類別:endl;cout1.中學(xué)生2.大學(xué)生3.研究生n;if(n=1)student* p_s = new student;p_s-set_inf();stu_m.push_back(*(p_s);else if (n = 2) u_student* p

28、_s = new u_student;p_s-set_inf();stu_u.push_back(*(p_s);else if (n = 3) graduate* p_s = new graduate;p_s-set_inf();stu_g.push_back(*(p_s);cout endl 任意鍵返回 endl;_getch();void system:search() string na;int n;cout 請(qǐng)輸入學(xué)生類別: endl;cout 1.中學(xué)生 2.大學(xué)生 3.研究生 n;cout 請(qǐng)輸入學(xué)生的名字: na;if (n = 1) 傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可

29、雙擊去除!int i = 0;for (vector:iterator it = stu_m.begin(); it name = na) i = 1; it-display_inf(); if (it = stu_m.end() - 1 & i= 0) cout 沒有信息! endl; break; else if (n = 2) int i = 0;for (vector:iterator it = stu_u.begin(); it name = na) i = 1; it-display_inf(); if (it = stu_u.end() - 1 & i=0) cout 沒有信息!

30、 endl; break; else if (n = 3) int i = 0;for (vector:iterator it = stu_g.begin(); it name = na) i = 1; it-display_inf(); if (it = stu_g.end()-1&i=0) cout 沒有信息! endl; break; cout endl 任意鍵返回 endl;_getch();void system:out_average()string na;int n;cout 請(qǐng)輸入學(xué)生類別: endl;cout 1.中學(xué)生 2.大學(xué)生 3.研究生 n;cout 請(qǐng)輸入學(xué)生的名字

31、: na;if (n = 1) for (vector:iterator it = stu_m.begin(); it name = na) cout 姓名: name endl;cout 平均成績?yōu)閏aculate_avg() endl;傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!else if (n = 2) for (vector:iterator it = stu_u.begin(); it name = na) cout 姓名: name endl;cout 平均成績?yōu)?caculate_avg() endl;else if (n = 3) for (vector:iter

32、ator it = stu_g.begin(); it name = na) cout 姓名: name endl;cout 平均成績?yōu)?caculate_avg() endl;cout endl 任意鍵返回 endl;_getch();void system:delete_inf() string na;int n;cout 請(qǐng)輸入學(xué)生類別: endl;cout 1.中學(xué)生 2.大學(xué)生 3.研究生 n;cout 請(qǐng)輸入學(xué)生的名字: na;if (n = 1) for (vector:iterator it = stu_m.begin(); it name = na) it = stu_m.erase(it); cout 刪除成功!endl; else it+; 傳播優(yōu)秀word版文檔 ,希望對(duì)您有幫助,可雙擊去除!else if (n = 2) for (vector:iterator it = stu_u.begin(); it name = na) it = stu_u.erase(it); cout 刪除成功! endl; else it+; else if (n = 3) for (vector:iterator it = stu_g.begin(); it name = n

溫馨提示

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