版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
綜合實驗要求編寫一個小型學生信息管理系統(tǒng),可以對中學生、大學生和研究生的信息進行簡單管理。每一類學生都包含有學生的學生名、成績1、成績2、成績3和平均成績,其中平均成績=〔成績1+成績2+成績3〕/3。每一類學生還有區(qū)別與其他類學生的特殊信息,中學生有家長,大學生有專業(yè),研究生有導師。實現(xiàn)以下功能:輸入學生的根本信息;根據(jù)學生名查詢某個學生的信息;計算并顯示某個學生的平均成績;一、系統(tǒng)分析1、根本信息類的屬性和操作1)屬性學生類別編號、學生名、成績1、成績2、成績3、平均成績〔為了方便信息的讀取,程序中給每類學生設置了一個學生類別編號,以便區(qū)別各類學生〕2)操作數(shù)據(jù)輸入:輸入學生名、成績1、成績2和成績3;數(shù)據(jù)輸出:輸出學生類別編號、姓名、成績1、成績2和成績3;計算平均成績:平均成績=〔成績1+成績2+成績3〕/3。2、中學生類的屬性和操作1〕屬性繼承根本信息類的屬性,并增加中學生類區(qū)別于其他學生類的特殊屬性,即家長。2〕操作數(shù)據(jù)輸入:繼承根本信息類的數(shù)據(jù)輸入操作,并增加輸入“家長〞、信息的功能。數(shù)據(jù)輸出:繼承根本信息類的數(shù)據(jù)輸出操作,并增加輸出“家長〞、信息的功能。3、大學生類的屬性和操作1〕屬性繼承根本信息類的屬性,并增加大學生類區(qū)別于其他學生類的特殊屬性,即專業(yè)。2〕操作數(shù)據(jù)輸入:繼承根本信息類的數(shù)據(jù)輸入操作,并增加輸入“專業(yè)〞、信息的功能。數(shù)據(jù)輸出:繼承根本信息類的數(shù)據(jù)輸出操作,并增加輸出“專業(yè)〞、信息的功能。4、研究生屬性和操作1〕屬性繼承根本信息類的屬性,并增加研究生類區(qū)別于其他學生類的特殊屬性,即導師。2〕操作數(shù)據(jù)輸入:繼承根本信息類的數(shù)據(jù)輸入操作,并增加輸入“導師〞、信息的功能。數(shù)據(jù)輸出:繼承根本信息類的數(shù)據(jù)輸出操作,并增加輸出“導師〞、信息的功能。5、系統(tǒng)管理類操作系統(tǒng)管理類自成一個類:系統(tǒng)管理類。主要操作有:輸入學生根本信息;根據(jù)學生姓名查詢某個學生的信息;計算并顯示某個學生的平均成績。二、系統(tǒng)設計1、基類和派生類的設計基類Record(根本信息類):num(學生類別編號)、name〔學生名〕、score1〔成績1〕、score2〔成績2〕、score3〔成績3〕、average〔平均成績〕。Student〔中學生類〕:從基類繼承來的屬性、patriarch〔家長〕。U_student〔大學生類〕:從基類繼承來的屬性、major〔專業(yè)〕。Graduate〔研究生類〕:從基類繼承來的屬性、mentor〔導師〕。System〔系統(tǒng)管理類〕:成員函數(shù)In_information負責輸入學生信息,成員函數(shù)Search查詢學生信息,成員函數(shù)Out_average計算并顯示平均成績,成員函數(shù)Interface負責界面輸出。2、系統(tǒng)管理類設計〔1〕將數(shù)據(jù)文件信息讀入內(nèi)存對象數(shù)組程序一啟動,由System的構(gòu)造函數(shù)自動調(diào)用函數(shù)readFile完成。〔2〕信息的輸入成員函數(shù)In_information根據(jù)要輸入學生的類別分別調(diào)用對應的學生信息輸入功能函數(shù)完成輸入?!?〕成員函數(shù)Search接收從鍵盤輸入的學生類別和學生名,在對應的對象數(shù)組中查找,找到后調(diào)用對象的成員函數(shù)Output顯示學生信息?!?〕平均成績計算和顯示接收從鍵盤輸入的學生類別和姓名,然后查找對象數(shù)組,找到后調(diào)用對象的計算平均成績函數(shù)計算平均成績,然后顯示。三、系統(tǒng)實現(xiàn)頭文件:Record.h、Student.h、U_student.h、Graudate.h、System.h源文件:Record.cpp、Student.cpp、U_student.cpp、Graudate.cpp、System.cpp、main.cpp.程序運行的主界面如圖:實驗代碼:頭文件局部://Record.h#ifndef_RECORD_H_#define_RECORD_H_#include<string>#include<vector>usingnamespacestd;classSystem;classRecord{public: Record(){} Record(stringn,floats1,floats2,floats3,floatavg):name(n),score1(s1),score2(s2),score3(s3),average(avg){average=0;}virtualvoidset_inf()=0;virtualvoiddisplay_inf()=0;floatcaculate_avg();friendclassSystem;protected:stringname;floatscore1;floatscore2;floatscore3;floataverage;};#endif//Student.h#ifndef_STUDENT_H_#define_STUDENT_H_#include<string>#include"Record.h"usingnamespacestd;classSystem;classStudent:publicRecord{public: Student(){}//{//set_inf();} Student(stringn,floats1,floats2,floats3,floatavg,stringpa):Record(n,s1,s2,s3,avg),patriarch(pa){}virtualvoidset_inf();virtualvoiddisplay_inf();friendclassSystem;friendifstream&operator>>(ifstream&i,Student&s);friendofstream&operator<<(ofstream&i,Student&s);protected:stringpatriarch;};#endif//U_student.h#ifndef_U_STUDENT_H_#define_U_STUDENT_H_#include<string>#include"Record.h"usingnamespacestd;classSystem;classU_student:publicRecord{public: U_student(){}//{//set_inf();} U_student(stringn,floats1,floats2,floats3,floatavg,stringma):Record(n,s1,s2,s3,avg),major(ma){}virtualvoidset_inf();virtualvoiddisplay_inf();friendclassSystem;friendifstream&operator>>(ifstream&i,U_student&s);friendofstream&operator<<(ofstream&i,U_student&s);protected:stringmajor;};#endif//Graduate.h#ifndef_GRADUATE_H_#define_GRADUATE_H_#include<string>#include"Record.h"usingnamespacestd;classSystem;classGraduate:publicRecord{public: Graduate(){}//{//set_inf();} Graduate(stringn,floats1,floats2,floats3,floatavg,stringme):Record(n,s1,s2,s3,avg),mentor(me){}virtualvoidset_inf();virtualvoiddisplay_inf();friendclassSystem;friendifstream&operator>>(ifstream&i,Graduate&s);friendofstream&operator<<(ofstream&i,Graduate&s);protected:stringmentor;};#endif//System.h#ifndef_SYSTEM_H_#define_SYSTEM_H_classSystem{public: System();voidIn_information();voidSearch();voidOut_average();voidInterface();voidreadfile();voiddelete_inf();voidwritefile();};#endif//源文件局部//Record.cpp#include"Record.h"#include<iostream>usingnamespacestd;floatRecord::caculate_avg(){returnaverage=(score1+score2+score3)/3;}//Student.cpp#include"Student.h"#include<iostream>#include<fstream>usingnamespacestd;voidStudent::set_inf(){ cout<<"姓名:"<<endl; cin>>name; cout<<"成績一:"<<endl; cin>>score1; cout<<"成績二:"<<endl; cin>>score2; cout<<"成績?nèi)?<<endl; cin>>score3; cout<<"家長:"<<endl; cin>>patriarch;this->caculate_avg();}voidStudent::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成績一:"<<score1<<endl; cout<<"成績二:"<<score2<<endl; cout<<"成績?nèi)?<<score3<<endl; cout<<"家長:"<<patriarch<<endl;}ifstream&operator>>(ifstream&infile,Student&s){infile>>>>s.score1>>s.score2>>s.score3>>s.average>>s.patriarch;returninfile;}ofstream&operator<<(ofstream&outfile,Student&s){outfile<<<<""<<s.score1<<""<<s.score2<<""<<s.score3<<""<<s.average<<""<<s.patriarch<<endl;returnoutfile;}//U_student.cpp#include"U_student.h"#include<iostream>#include<fstream>usingnamespacestd;voidU_student::set_inf(){ cout<<"姓名:"<<endl; cin>>name; cout<<"成績一:"<<endl; cin>>score1; cout<<"成績二:"<<endl; cin>>score2; cout<<"成績?nèi)?<<endl; cin>>score3; cout<<"專業(yè):"<<endl; cin>>major;this->caculate_avg();}voidU_student::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成績一:"<<score1<<endl; cout<<"成績二:"<<score2<<endl; cout<<"成績?nèi)?<<score3<<endl; cout<<"專業(yè):"<<major<<endl;}ifstream&operator>>(ifstream&infile,U_student&s){ infile>>>>s.score1>>s.score2>>s.score3>>s.average>>s.major;returninfile;}ofstream&operator<<(ofstream&outfile,U_student&s){ outfile<<<<""<<s.score1<<""<<s.score2<<"" <<s.score3<<""<<s.average<<""<<s.major<<endl;returnoutfile;}//Graduate.cpp#include"Graduate.h"#include<iostream>#include<fstream>usingnamespacestd;voidGraduate::set_inf(){ cout<<"姓名:"<<endl; cin>>name; cout<<"成績一:"<<endl; cin>>score1; cout<<"成績二:"<<endl; cin>>score2; cout<<"成績?nèi)?<<endl; cin>>score3; cout<<"導師:"<<endl; cin>>mentor;this->caculate_avg();}voidGraduate::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成績一:"<<score1<<endl; cout<<"成績二:"<<score2<<endl; cout<<"成績?nèi)?<<score3<<endl; cout<<"導師:"<<mentor<<endl;}ifstream&operator>>(ifstream&infile,Graduate&s){ infile>>>>s.score1>>s.score2>>s.score3>>s.average>>s.mentor;returninfile;}ofstream&operator<<(ofstream&outfile,Graduate&s){ outfile<<<<""<<s.score1<<""<<s.score2<<"" <<s.score3<<""<<s.average<<""<<s.mentor<<endl;returnoutfile;}//System.cpp#include"System.h"#include"Record.h"#include"Student.h"#include"U_student.h"#include"Graduate.h"#include<iostream>#include<fstream>#include<conio.h>#include<iterator>#include"shlwapi.h"#pragmacomment(lib,"shlwapi.lib")#include<iomanip>usingnamespacestd;vector<Student>stu_m;vector<U_student>stu_u;vector<Graduate>stu_g;System::System(){ system("title小型學生信息管理"); system("color0b");this->readfile();this->Interface();}voidSystem::readfile(){/*HANDLEhFILE1=CreateFileA("中學生信息.txt",FILE_ATTRIBUTE_READONLY,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);*///***** Studenttemp_stu_m;if(!PathFileExistsA("中學生信息.txt")){CreateFileA(".//中學生信息.txt",NULL,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);} ifstreamiofile1("中學生信息.txt",ios::in|ios::out);while(!iofile1.eof()) { iofile1>>temp_stu_m; stu_m.push_back(temp_stu_m); } stu_m.pop_back(); iofile1.close();//***** U_studenttemp_stu_u;/*HANDLEhFILE2=CreateFileA("大學生信息.txt",FILE_ATTRIBUTE_READONLY,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);*/if(!PathFileExistsA("大學生信息.txt")){CreateFileA(".//大學生信息.txt",NULL,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);} ifstreamiofile2("大學生信息.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();//****** Graduatetemp_stu_g;/*HANDLEhFILE3=CreateFileA("研究生信息.txt",FILE_ATTRIBUTE_READONLY,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);*/if(!PathFileExistsA("研究生信息.txt")){CreateFileA(".//研究生信息.txt",NULL,0,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);} ifstreamiofile3("研究生信息.txt",ios::in|ios::out);while(!iofile3.eof()) { iofile3>>temp_stu_g; stu_g.push_back(temp_stu_g); } stu_g.pop_back(); iofile3.close();}voidSystem::writefile(){//***** ofstreamiofile4("中學生信息.txt",ios::in|ios::out|ios::trunc);if(!iofile4){ cerr<<"openerror!"<<endl; system("pause"); exit(0); }for(vector<Student>::iteratorit=stu_m.begin();it!=stu_m.end();it++) { iofile4<<*it; } iofile4.close();//***** ofstreamiofile5("大學生信息.txt",ios::in|ios::out|ios::trunc);if(!iofile5){ cerr<<"openerror!"<<endl; system("pause"); exit(0); }for(vector<U_student>::iteratorit=stu_u.begin();it!=stu_u.end();it++) { iofile5<<*it; } iofile5.close();//****** ofstreamiofile6("研究生信息.txt",ios::in|ios::out|ios::trunc);if(!iofile6){ cerr<<"openerror!"<<endl; system("pause"); exit(0); }for(vector<Graduate>::iteratorit=stu_g.begin();it!=stu_g.end();it++) { iofile6<<*it; } iofile6.close();}voidSystem::In_information(){intn; cout<<"輸入要創(chuàng)立的學生類別:"<<endl; cout<<"1.中學生"<<"2.大學生"<<"3.研究生"<<endl; cin>>n;if(n==1){ Student*p_s=newStudent; p_s->set_inf(); stu_m.push_back(*(p_s)); }elseif(n==2){ U_student*p_s=newU_student; p_s->set_inf(); stu_u.push_back(*(p_s)); }elseif(n==3){ Graduate*p_s=newGraduate; p_s->set_inf(); stu_g.push_back(*(p_s)); } cout<<endl<<"任意鍵返回"<<endl; _getch();}voidSystem::Search(){ stringna;intn; cout<<"請輸入學生類別:"<<endl; cout<<"1.中學生"<<"2.大學生"<<"3.研究生"<<endl; cin>>n; cout<<"請輸入學生的名字:"<<endl; cin>>na;if(n==1){inti=0;for(vector<Student>::iteratorit=stu_m.begin();it<stu_m.end();it++){if(it->name==na){i=1;it->display_inf();}if(it==stu_m.end()-1&&i==0){cout<<"沒有信息!"<<endl;break;} } }elseif(n==2){inti=0;for(vector<U_student>::iteratorit=stu_u.begin();it<stu_u.end();it++){if(it->name==na){i=1;it->display_inf();}if(it==stu_u.end()-1&&i==0){cout<<"沒有信息!"<<endl;break;} } }elseif(n==3){inti=0;for(vector<Graduate>::iteratorit=stu_g.begin();it<stu_g.end();it++){if(it->name==na){i=1;it->display_inf();}if(it==stu_g.end()-1&&i==0){cout<<"沒有信息!"<<endl;break;} } } cout<<endl<<"任意鍵返回"<<endl; _getch();}voidSystem::Out_average(){ stringna;intn; cout<<"請輸入學生類別:"<<endl; cout<<"1.中學生"<<"2.大學生"<<"3.研究生"<<endl; cin>>n; cout<<"請輸入學生的名字:"<<endl; cin>>na;if(n==1){for(vector<Student>::iteratorit=stu_m.begin();it<stu_m.end();it++){if(it->name==na) { cout<<"姓名:"<<it->name<<endl; cout<<"平均成績?yōu)?<<it->caculate_avg()<<endl; } } }elseif(n==2){for(vector<U_student>::iteratorit=stu_u.begin();it<stu_u.end();it++){if(it->name==na){ cout<<"姓名:"<<it->name<<endl; cout<<"平均成績?yōu)?<<it->caculate_avg()<<endl; } } }elseif(n==3){for(vector<Graduate>::iteratorit=stu_g.begin();it<stu_g.end();it++){if(it->name==na){ cout<<"姓名:"<<it->name<<endl; cout<<"平均成績?yōu)?<<it->caculate_avg()<<endl; } } } cout<<endl<<"任意鍵返回"<<endl; _getch();}voidSystem::delete_inf(){ stringna;intn; cout<<"請輸入學生類別:"<<endl; cout<<"1.中學生"<<"2.大學生"<<"3.研究生"<<endl; cin>>n; cout<<"請輸入學生的名字:"<<endl; cin>>na;if(n==1){for(vector<Student>::iteratorit=stu_m.begin();it<stu_m.end();){if(it->name==na){it=stu_m.erase(it);cout<<"刪除成功!"<<endl;}else{it++;} } }elseif(n==2){for(vector<U_student>::iteratorit=stu_u.begin();it<stu_u.end();){if(it->name==na){it=stu_u.erase(it);cout<<"刪除成功!"<<endl;}else{it++;} } }elseif(n==3){for(vector<Graduate>::iteratorit=stu_g.begin();it<stu_g.end();){if(it->name==na){it=stu_g.erase(it);cout<<"刪除成功!"<<endl;}else{it++;} } } cout
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣播器材采購合同范例
- 發(fā)廊入股合同范例
- 夫妻合伙生意合同范例
- 天津濱海汽車工程職業(yè)學院《代謝組學》2023-2024學年第一學期期末試卷
- 云南代建合同范例
- 農(nóng)資經(jīng)營聘用合同范例
- 停車場 施工合同范例
- cro服務合同范例
- 保險會計合同范例
- 高級財務會計模擬習題(含答案)
- 紅色簡約中國英雄人物李大釗課件
- 2024版《大學生職業(yè)生涯規(guī)劃與就業(yè)指導》 課程教案
- 上海市住院醫(yī)師規(guī)范化培訓公共科目考試題庫-重點傳染病防治知識
- 人民日報出版社有限責任公司招聘筆試題庫2024
- 2024年煤礦事故匯編
- Unit 2 Different families(教學設計)-2024-2025學年人教PEP版英語三年級上冊
- 西師大版五年級上冊小數(shù)混合運算題100道及答案
- 2022年7月國家開放大學本科《中國法律史》期末紙質(zhì)考試試題及答案
- 行政文秘筆試題
- 2024年部門年終工作總結(jié)參考(四篇)
- 主題四 第1課 節(jié)氣與我們的生活(教學設計)教科版五年級下冊綜合實踐活動
評論
0/150
提交評論