#include
#include
#include
#include
const int TMAX=50;
using namespace std;
class Person
{
public:
int num;//编号
string name;//姓名
string sex;//性别
int age;//年龄
double water;//用水量
double power;//用电量
public:
Person(int n=0,string nm=" ",string s=" ",int a=0,double w=0.0,double p=0.0)//初始化
{
num = n;
name = nm;
sex = s;
age = a;
water = w;
power = p;
};
virtual void Input(){};
virtual void Output(){};
int GetNum(){return num;}//获取编号
string GetName(){return name;}//获取姓名
double GetWater(){return water;}//获取用水量
double GetPower(){return power;}//获取用电量
};
class Teacher:virtual public Person //教师
{
public:
string depart;//工作部门
double watermoney;//教师水费
double powermoney;//教师电费
int choice1;
int choice2;
public:
Teacher(int n=0,string nm=" ",string s="男",int a=0,string d="普通教师",double w=0.0, double p=0.0, double wm=0.0, double pm=0.0)
:Person(n,nm,s,a,w,p),depart(d)//构造函数
{
watermoney=wm;
powermoney=pm;
};
void Input()
{
cout<<"请输入编号:"< cin>>num; cout<<"请输入姓名:"< cin>>name; cout<<"请选择性别:"; cout<<"(1.男 2.女)"< cout<<"请输入你的选择"< cin>>choice2; switch(choice2) { case 1:sex="男";break; case 2:sex="女";break; default:cout<<"输入错误。"< } cout<<"请输入年龄:"< cin>>age; cout<<"请选择工作部门:"< cout< cout<<"请输入你的选择"< cin>>choice1; switch(choice1) { case 1:depart="普通教师";break; case 2:depart="教务处";break; case 3:depart="财政处";break; case 4:depart="创业办公室";break; default:cout<<"输入错误。"< } cout<<"请输入本月的用水量"< cin>>water; cout<<"请输入本月的用电量"< cin>>power; watermoney=0.5*water; powermoney=0.5*power; } void Output() { cout<<" "< <<" "< <<" "< <<" "< <<" "< <<" "< < <<" "< < < } }; class Student:virtual public Person //学生 { public: string bj;//学生班级 double watermoney;//学生水费 double powermoney;//学生电费 int choice1; int choice2; public: Student(int n=0,string nm=" ",string s="男",int a=0,string z=" ",double w=0.0, double p=0.0, double wm=0.0, double pm=0.0) :Person(n,nm,s,a,w,p),bj(z)//构造函数 { watermoney=wm; powermoney=pm; }; void Input() { cout<<"请输入学号:"< cin>>num; cout<<"请输入姓名:"< cin>>name; cout<<"请选择性别:"; cout<<"(1.男 2.女)"< cout<<"请输入你的选择"< cin>>choice2; switch(choice2) { case 1:sex="男";break; case 2:sex="女";break; default:cout<<"输入错误。"< } cout<<"请输入年龄:"< cin>>age; cout<<"请选择所在班级:"< cout< cout<<"请输入你的选择"< cin>>choice1; switch(choice1) { case 1:bj="计科1班";break; case 2:bj="计科2班";break; case 3:bj="计科3班";break; case 4:bj="计科4班";break; default:cout<<"输入错误。"< } cout<<"请输入本月的用水量"< cin>>water; cout<<"请输入本月的用电量"< cin>>power; watermoney=0.5*(water-10); powermoney=0.5*(power-10); } void Output() { cout<<" "< <<" "< <<" "< <<" "< <<" "< <<" "< < <<" "< < < } }; class Stu_Manage { Student Stu[TMAX]; //TMAX为常量,为数组中可存储的学生记录的最大数; int top; //top表示当前系统中存储的记录个数; public: Stu_Manage(){top=0;} //初始时记录的个数为0,所以设置top=0; void Add(); //实现该类记录的添加; void Show(); //实现该类所有记录的显示; void Search(); //实现该类记录的查询; void Edit(); //实现该类记录的修改; void Delete(); //实现该类记录的删除; void Total(); //实现该类记录的统计; void Save(); //将该类记录保存到文件; void Read(); //可从文件中将记录读取到该类的数组中; }; void Stu_Manage::Add()//添加成员 { if(top>=TMAX) { cout<<"用户已满"< return; } Student s; cout<<"输入新添加的人员的信息"< s.Input(); for(int i=0;i if (s.GetNum()==Stu[i].GetNum()) { cout<<"该编号的人员已存在"< return; } Stu[top]=s; top=top+1; cout<<"添加成功!"< } void Stu_Manage::Show()//显示所有记录 { if(top==0) { cout<<"无数据!"< return; } cout<<" "<<"学号" <<" "<<"姓名" <<" "<<"性别" <<" "<<"年龄" <<" "<<"班级" < < < < < for(int i=0;i Stu[i].Output(); } void Stu_Manage::Search()//查询 { if(top==0) { cout<<"当前系统中没有存储记录"< return; } int choice; cout<<"请选择查找方式:1.按姓名查询2.按用水量查询3.按用电量查询"< cin>>choice; switch(choice) { case 1:{ cout<<"请输入要查找的姓名"< string name; cin>>name; cout<<" "<<"学号" <<" "<<"姓名" <<" "<<"性别" <<" "<<"年龄" <<" "<<"班级" < < < < < for(int i=0;i { if(Stu[i].GetName()==name) { Stu[i].Output(); } } return; cout<<"查无此人!"< }break; case 2:{ cout<<"请输入要查找的水量:"< double water; cin>>water; cout<<" "<<"学号" <<" "<<"姓名" <<" "<<"性别" <<" "<<"年龄" <<" "<<"班级" < < < < < for(int i=0;i { if(Stu[i].GetWater()==water) { Stu[i].Output(); } } return; cout<<"查无此人!"< }break; case 3:{ cout<<"请输入要查找的电量:"< double power; cin>>power; cout<<" "<<"学号" <<" "<<"姓名" <<" "<<"性别" <<" "<<"年龄" <<" "<<"班级" < < < < < for(int i=0;i { if(Stu[i].GetPower()==power) { Stu[i].Output(); } } return; cout<<"查无此人!"< }break; default :cout<<"无此选项!请重试!"< } } void Stu_Manage::Edit()//更改信息 { if(top==0) { cout<<"当前系统中没有存储记录!"< return; } int num; cout<<"请输入要查找的教编号:"< cin>>num; for(int i=0;i { if(Stu[i].GetNum()==num) { cout<<"请对这位学生的信息进行修改:"< Stu[i].Input(); cout<<"修改成功"< } } cout<<"查无此人"< } void Stu_Manage::Delete()//删除信息 { if(top==0) { cout<<"当前系统中没有存储记录!"< return; } cout<<"1、按编号查找删除2、按姓名查找删除"< int choice; cin>>choice; switch(choice) { case 1: { cout<<"请输入编号:"; int num; cin>>num; for(int i=0;i { if(num==Stu[i].num) { cout<<"是否确认删除?1、是2、否"< int choice; cin>>choice; switch(choice) { case 1: { for(int j=i;j Stu[j]=Stu[j+1]; cout<<"删除成功!"< top--; };break; case 2:return; default:cout<<"无此项,失败!"< }return; } } cout<<"无此人!"< } ;break; case 2: { cout<<"请输入姓名:"; string name; cin>>name; for(int i=0;i { if(name==Stu[i].name) { cout<<"是否确认删除?1、是2、否"< int choice; cin>>choice; switch(choice) { case 1: { for(int j=i;j Stu[j]=Stu[j+1]; cout<<"删除成功!"< top--; };break; case 2:return; default:cout<<"无此项,失败!"< }return; } } cout<<"无此人!"< }; break; default:cout<<"没有此项,失败:"< } } void Stu_Manage::Total()//数据统计 { cout<<"1 学生所用水电量的总量 2 学生总的水电费"< int choice; cout<<"请输入你的选择"< cin>>choice; switch(choice) { case 1: { double zwater=0.0, zpower=0.0; for(int i=0; i { zwater+=Stu[i].water; zpower+=Stu[i].power; } cout<<"学生的总用水量为"< cout<<"学生的总用电量为"< }break; case 2: { double zwatermoney=0.0, zpowermoney=0.0; for(int i=0; i { zpowermoney+=Stu[i].powermoney; zwatermoney+=Stu[i].watermoney; } cout<<"教师的总水费为"< cout<<"教师的总电费为"< }break; default:cout<<"输入错误。请重新输入"< } } void Stu_Manage::Save()//保存学生信息 { ofstream out("学生.txt",ios::out); if(!out) { cout<<"打开失败!"< return; } cout<<"打开成功!"< for(int i=0;i { out< < < < < < < < <