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

下载本文档

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

文档简介

.综合实验要求编写一个小型学生信息管理系统,可以对中学生、大学生和研究生的信息进行简单管理。每一类学生都包含有学生的学生名、成绩1、成绩2、成绩3和平均成绩,其中平均成绩=(成绩1+成绩2+成绩3)/3。每一类学生还有区别与其他类学生的特殊信息,中学生有家长,大学生有专业,研究生有导师。实现以下功能:(1) 输入学生的基本信息;(2) 根据学生名查询某个学生的信息;(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) 输入学生基本信息;2) 根据学生姓名查询某个学生的信息;3) 计算并显示某个学生的平均成绩。二、系统设计 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 #includeusing namespace std;class System;class Recordpublic:Record()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;float 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),patriarch(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_#define _U_STUDENT_H_#include #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& operator(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,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#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_avg()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成绩三:score3;cout家长:patriarch;this-caculate_avg();void Student:display_inf()cout姓名:nameendl;cout成绩一:score1endl;cout成绩二:score2endl;cout成绩三:score3endl;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 outfile;/U_student.cpp#include U_student.h#include #includeusing namespace std;void U_student:set_inf()cout姓名:name;cout成绩一:score1;cout成绩二:score2;cout成绩三:score3;cout专业:major;this-caculate_avg();void U_student:display_inf()cout姓名:nameendl;cout成绩一:score1endl;cout成绩二:score2endl;cout成绩三:score3endl;cout专业: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#include #includeusing namespace std;void Graduate:set_inf()cout姓名:name;cout成绩一:score1;cout成绩二:score2;cout成绩三:score3;cout导师:mentor;this-caculate_avg();void Graduate:display_inf()cout姓名:nameendl;cout成绩一:score1endl;cout成绩二:score2endl;cout成绩三:score3endl;cout导师:mentor(ifstream& 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_student.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 小型学生信息管理);system(color 0b);this-readfile();this-Interface(); void System:readfile() /*HANDLE hFILE1 = CreateFileA(中学生信息.txt, FILE_ATTRIBUTE_READONLY, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);*/*Student temp_stu_m;if (!PathFileExistsA(中学生信息.txt) CreateFileA(./中学生信息.txt, NULL, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); ifstream iofile1(中学生信息.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_student temp_stu_u;/*HANDLE hFILE2 = 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); ifstream iofile2(大学生信息.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_READONLY, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);*/if (!PathFileExistsA(研究生信息.txt) CreateFileA(./研究生信息.txt, NULL, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); ifstream iofile3(研究生信息.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();void System:writefile() /*ofstream iofile4(中学生信息.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(大学生信息.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) cerr open 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输入要创建的学生类别:endl;cout1.中学生2.大学生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_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 请输入学生类别: endl;cout 1.中学生 2.大学生 3.研究生 n;cout 请输入学生的名字: na;if (n = 1) 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 没有信息! 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 请输入学生类别: endl;cout 1.中学生 2.大学生 3.研究生 n;cout 请输入学生的名字: na;if (n = 1) for (vector:iterator it = stu_m.begin(); it name = na) cout 姓名: name endl;cout 平均成绩为caculate_avg() endl;else if (n = 2) for (vector:iterator it = stu_u.begin(); it name = na) cout 姓名: name endl;cout 平均成绩为 caculate_avg() endl;else if (n = 3) for (vector:iterator it = stu_g.begin(); it name = na) cout 姓名: name endl;cout 平均成绩为 caculate_avg() endl;cout endl 任意键返回 endl;_getch();void System:delete_inf() string na;int n;cout 请输入学生类别: endl;cout 1.中学生 2.大学生 3.研究生 n;cout 请输入学生的名字: na;if (n = 1) for (vector:iterator it = stu_m.begin(); it name = na) it = stu_m.erase(it); cout 删除成功!endl; else it+; 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 =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论