1、#include#include#include#includeconst int TMAX=50;using namespace std;class Personpublic: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 =
2、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;/老师电费
3、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请输入编号:num;cout请输入姓名:name;cout请选择性别:;cout(1.男 2.女)endl;cout请输入你选择choice
4、2;switch(choice2)case 1:sex=男;break;case 2:sex=女;break;default:cout输入错误。endl;break;cout请输入年纪:age;cout请选择工作部门:endl;coutsetw(10)1.一般老师setw(10)2.教务处setw(10)3.财政处setw(10) 4.创业办公室endl;cout请输入你选择choice1;switch(choice1)case 1:depart=一般老师;break;case 2:depart=教务处;break;case 3:depart=财政处;break;case 4:depart=创
5、业办公室;break;default:cout输入错误。endl;break;cout请输入本月用水量water;cout请输入本月用电量power;watermoney=0.5*water;powermoney=0.5*power;void Output()cout num name sex age depart watersetw(10)power setw(10)watermoneysetw(10)powermoneyendl;class Student:virtual public Person /学生public:string bj;/学生班级double watermoney;/学
6、生水费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请输入学号:num;cout请输入姓名:name;cout请选择性别:;cout(1.男 2.女)end
7、l;cout请输入你选择choice2;switch(choice2)case 1:sex=男;break;case 2:sex=女;break;default:cout输入错误。endl;break;cout请输入年纪:age;cout请选择所在班级:endl;coutsetw(10)1.计科1班setw(10)2.计科2班setw(10)3.计科3班setw(10)4.计科4班endl;cout请输入你选择choice1;switch(choice1)case 1:bj=计科1班;break;case 2:bj=计科2班;break;case 3:bj=计科3班;break;case 4:
8、bj=计科4班;break;default:cout输入错误。endl;break;cout请输入本月用水量water;cout请输入本月用电量power;watermoney=0.5*(water-10);powermoney=0.5*(power-10);void Output()cout num name sex age bj watersetw(10)power setw(10)watermoneysetw(10)powermoney=TMAX) cout用户已满endl;return; Student s;cout输入新添加人员信息endl;s.Input();for(int i=0
9、;itop;i+)if (s.GetNum()=Stui.GetNum()cout该编号人员已存在endl;return; Stutop=s; top=top+1;cout添加成功!endl;void Stu_Manage:Show()/显示全部统计if(top=0)cout无数据!endl;return;cout 学号 姓名 性别 年纪 班级setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl;for(int i=0;itop;i+)Stui.Output();void Stu_Manage:Search()/查询if(top=0)cout目前系统中没
10、有存放统计endl;return; int choice;cout请选择查找方法:1.按姓名查询 2.按用水量查询 3.按用电量查询choice;switch(choice)case 1:cout请输入要查找姓名name;cout 学号 姓名 性别 年纪 班级setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl; for(int i=0;itop;i+) if(Stui.GetName()=name) Stui.Output();return;cout查无此人!endl; break;case 2:cout请输入要查找水量:water;cout 学号 姓
11、名 性别 年纪 班级setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl; for(int i=0;itop;i+)if(Stui.GetWater()=water) Stui.Output(); return;cout查无此人!endl; break;case 3:cout请输入要查找电量:power;cout 学号 姓名 性别 年纪 班级setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl; for(int i=0;itop;i+)if(Stui.GetPower()=power) Stui.Output();
12、 return;cout查无此人!endl; break;default :cout无此选项!请重试!endl;break;void Stu_Manage:Edit()/更改信息if(top=0)cout目前系统中没有存放统计!endl;return;int num;cout请输入要查找教编号:num; for(int i=0;itop;i+)if(Stui.GetNum()=num)cout请对这位学生信息进行修改:endl;Stui.Input();cout修改成功endl;return; cout查无此人endl;void Stu_Manage:Delete()/删除信息if(top=0
13、) cout目前系统中没有存放统计!endl;return;cout1、按编号查找删除 2、按姓名查找删除choice; switch(choice) case 1: coutnum; for(int i=0;itop;i+) if(num=Stui.num) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Stuj=Stuj+1; cout删除成功!endl; top-; ;break; case 2:return; default:cout无此项,失败!endl;break; return;
14、 cout无此人!endl; ;break; case 2: coutname; for(int i=0;itop;i+) if(name=Stui.name) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Stuj=Stuj+1; cout删除成功!endl; top-; ;break; case 2:return; default:cout无此项,失败!endl;break; return; cout无此人!endl; break;default:cout没有此项,失败:endl;brea
15、k;void Stu_Manage:Total()/数据统计cout1 学生所用水电量总量 2 学生总水电费 endl;int choice;cout请输入你选择choice;switch(choice)case 1: double zwater=0.0, zpower=0.0;for(int i=0; itop; i+)zwater+=Stui.water;zpower+=Stui.power;cout学生总用水量为zwaterendl;cout学生总用电量为zpowerendl;break;case 2:double zwatermoney=0.0, zpowermoney=0.0;for
16、(int i=0; itop; i+)zpowermoney+=Stui.powermoney;zwatermoney+=Stui.watermoney;cout老师总水费为zwatermoneyendl;cout老师总电费为zpowermoneyendl;break;default:cout输入错误。请重新输入endl;break;void Stu_Manage:Save()/保留学生信息ofstream out(学生.txt,ios:out);if(!out)cout打开失败!endl;return;cout打开成功!endl;for(int i=0;itop;i+)outStui.num
17、 Stui.name Stui.sex Stui.age Stui.bj Stui.water Stui.power Stui.watermoney Stui.powermoney endl;cout写入成功!endl;out.close();void Stu_Manage:Read()/读取学生文件ifstream in(学生.txt,ios:in);if(!in)cout打开失败!Stui.num Stui.nameStui.sexStui.age Stui.bjStui.waterStui.powerStui.watermoneyStui.powermoney) i+;top+;cout
18、打开成功!=TMAX) cout用户已满endl;return; Teacher t;cout输入新添加人员信息endl;t.Input();for(int i=0;itop;i+)if (t.GetNum()=Teai.GetNum()cout该编号人员已存在endl;return; Teatop=t; top=top+1;cout添加成功!endl;void Tea_Manage:Show()/显示全部统计if(top=0)cout无数据!endl;return;cout 编号 姓名 性别 年纪 部门setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费end
19、l;for(int i=0;itop;i+)Teai.Output();void Tea_Manage:Search()/查询if(top=0)cout目前系统中没有存放统计endl;return; int choice;cout请选择查找方法:1.按姓名查询 2.按用水量查询 3.按用电量查询choice;switch(choice)case 1:cout请输入要查找姓名name;cout 编号 姓名 性别 年纪 部门setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl; for(int i=0;itop;i+) if(Teai.GetName()=n
20、ame) Teai.Output();return;cout查无此人!endl; break;case 2:cout请输入要查找水量:water;cout 编号 姓名 性别 年纪 部门setw(10)用水量setw(10)用电量setw(10)水费setw(10)电费endl; for(int i=0;itop;i+)if(Teai.GetWater()=water) Teai.Output(); return;cout查无此人!endl; break;case 3:cout请输入要查找电量:power;cout 编号 姓名 性别 年纪 部门setw(10)用水量setw(10)用电量setw
21、(10)水费setw(10)电费endl; for(int i=0;itop;i+)if(Teai.GetPower()=power) Teai.Output(); return;cout查无此人!endl; break;default :cout无此选项!请重试!endl;break;void Tea_Manage:Edit()/更改信息if(top=0)cout目前系统中没有存放统计!endl;return;int num;cout请输入要查找教编号:num; for(int i=0;itop;i+)if(Teai.GetNum()=num)cout请对这位老师信息进行修改:endl;Te
22、ai.Input();cout修改成功endl;return; cout查无此人endl;void Tea_Manage:Delete()/删除信息if(top=0) cout目前系统中没有存放统计!endl;return;cout1、按编号查找删除 2、按姓名查找删除choice; switch(choice) case 1: coutnum; for(int i=0;itop;i+) if(num=Teai.num) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Teaj=Teaj+1;
23、cout删除成功!endl; top-; ;break; case 2:return; default:cout无此项,失败!endl;break; return; cout无此人!endl; ;break; case 2: coutname; for(int i=0;itop;i+) if(name=Teai.name) cout是否确定删除? 1、是 2、否 choice; switch(choice) case 1: for(int j=i;jtop-1;j+) Teaj=Teaj+1; cout删除成功!endl; top-; ;break; case 2:return; defaul
24、t:cout无此项,失败!endl;break; return; cout无此人!endl; break;default:cout没有此项,失败:endl;break;void Tea_Manage:Total()/数据统计cout1 老师所用水电量总量 2 老师总水电费 endl;int choice;cout请输入你选择choice;switch(choice)case 1:double zwater=0.0, zpower=0.0;for(int i=0; itop; i+)zwater+=Teai.water;zpower+=Teai.power;cout老师总用水量为zwateren
25、dl;cout老师总用电量为zpowerendl;break;case 2:double zwatermoney=0.0, zpowermoney=0.0;for(int i=0;itop;i+)zwatermoney+=Teai.watermoney;zpowermoney+=Teai.powermoney;cout老师总水费为zwatermoneyendl;cout老师总电费为zpowermoneyendl;break;default:cout输入错误。请重新输入endl;break;void Tea_Manage:Save()/保留老师信息ofstream out(老师.txt,ios:out);if(!out)cout打开失败!endl;return;cout打开成功!endl;for(int i=0;itop;i+)outTeai.num Teai.name Teai.sex Teai.age Teai.depart Teai