小型学生信息管理系统_第1页
小型学生信息管理系统_第2页
小型学生信息管理系统_第3页
小型学生信息管理系统_第4页
小型学生信息管理系统_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合实验要求编写一个小型学生信息管理系统,可以对中学生、大学生和研究生的信息进行简单管理。每一类学生都包含有学生的学生名、成绩1、成绩2、成绩3和平均成绩,其中平均成绩=〔成绩1+成绩2+成绩3〕/3。每一类学生还有区别与其他类学生的特殊信息,中学生有家长,大学生有专业,研究生有导师。实现以下功能:输入学生的根本信息;根据学生名查询某个学生的信息;计算并显示某个学生的平均成绩;一、系统分析1、根本信息类的属性和操作1)属性学生类别编号、学生名、成绩1、成绩2、成绩3、平均成绩〔为了方便信息的读取,程序中给每类学生设置了一个学生类别编号,以便区别各类学生〕2)操作数据输入:输入学生名、成绩1、成绩2和成绩3;数据输出:输出学生类别编号、姓名、成绩1、成绩2和成绩3;计算平均成绩:平均成绩=〔成绩1+成绩2+成绩3〕/3。2、中学生类的属性和操作1〕属性继承根本信息类的属性,并增加中学生类区别于其他学生类的特殊属性,即家长。2〕操作数据输入:继承根本信息类的数据输入操作,并增加输入“家长〞、信息的功能。数据输出:继承根本信息类的数据输出操作,并增加输出“家长〞、信息的功能。3、大学生类的属性和操作1〕属性继承根本信息类的属性,并增加大学生类区别于其他学生类的特殊属性,即专业。2〕操作数据输入:继承根本信息类的数据输入操作,并增加输入“专业〞、信息的功能。数据输出:继承根本信息类的数据输出操作,并增加输出“专业〞、信息的功能。4、研究生属性和操作1〕属性继承根本信息类的属性,并增加研究生类区别于其他学生类的特殊属性,即导师。2〕操作数据输入:继承根本信息类的数据输入操作,并增加输入“导师〞、信息的功能。数据输出:继承根本信息类的数据输出操作,并增加输出“导师〞、信息的功能。5、系统管理类操作系统管理类自成一个类:系统管理类。主要操作有:输入学生根本信息;根据学生姓名查询某个学生的信息;计算并显示某个学生的平均成绩。二、系统设计1、基类和派生类的设计基类Record(根本信息类):num(学生类别编号)、name〔学生名〕、score1〔成绩1〕、score2〔成绩2〕、score3〔成绩3〕、average〔平均成绩〕。Student〔中学生类〕:从基类继承来的属性、patriarch〔家长〕。U_student〔大学生类〕:从基类继承来的属性、major〔专业〕。Graduate〔研究生类〕:从基类继承来的属性、mentor〔导师〕。System〔系统管理类〕:成员函数In_information负责输入学生信息,成员函数Search查询学生信息,成员函数Out_average计算并显示平均成绩,成员函数Interface负责界面输出。2、系统管理类设计〔1〕将数据文件信息读入内存对象数组程序一启动,由System的构造函数自动调用函数readFile完成。〔2〕信息的输入成员函数In_information根据要输入学生的类别分别调用对应的学生信息输入功能函数完成输入。〔3〕成员函数Search接收从键盘输入的学生类别和学生名,在对应的对象数组中查找,找到后调用对象的成员函数Output显示学生信息。〔4〕平均成绩计算和显示接收从键盘输入的学生类别和姓名,然后查找对象数组,找到后调用对象的计算平均成绩函数计算平均成绩,然后显示。三、系统实现头文件: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<<"成绩三:"<<endl; cin>>score3; cout<<"家长:"<<endl; cin>>patriarch;this->caculate_avg();}voidStudent::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成绩一:"<<score1<<endl; cout<<"成绩二:"<<score2<<endl; cout<<"成绩三:"<<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<<"成绩三:"<<endl; cin>>score3; cout<<"专业:"<<endl; cin>>major;this->caculate_avg();}voidU_student::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成绩一:"<<score1<<endl; cout<<"成绩二:"<<score2<<endl; cout<<"成绩三:"<<score3<<endl; cout<<"专业:"<<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<<"成绩三:"<<endl; cin>>score3; cout<<"导师:"<<endl; cin>>mentor;this->caculate_avg();}voidGraduate::display_inf(){ cout<<"姓名:"<<name<<endl; cout<<"成绩一:"<<score1<<endl; cout<<"成绩二:"<<score2<<endl; cout<<"成绩三:"<<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<<"输入要创立的学生类别:"<<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<<"平均成绩为"<<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<<"平均成绩为"<<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<<"平均成绩为"<<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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论