64,651
社区成员
发帖
与我相关
我的任务
分享
//people.h文件
#ifndef PEOPLE_H
#define PEOPLE_H
#include<string>
using namespace std;
class People
{
public:
People();
People(const string nam,const string num);
People(const People& P);
void Put_in_People();
virtual void Display()const;
virtual string Get_number()const;
virtual ~People();
protected:
string name;//姓名
string number;//编号
string sex;//性别
};
class Student:virtual public People
{
public:
Student();
Student(const string nam,const string num,const string cno);
Student(const Student&S);
void Put_in_Student();
void Display()const;
string Get_number()const;
protected:
string classNO;//班号
};
class Teacher:virtual public People//将Teacher类设为virtual
{
public:
Teacher();
Teacher(const string nam,const string num,const string pri);
Teacher(const Teacher& T);
void Put_in_Teacher();
void Display()const;
string Get_number()const;
protected:
string principalship;//职务
};
class Graduate: virtual public Student//将Student类设为virtual
{
public:
Graduate();
Graduate(const string nam,const string num,const string cno,const string sub);
Graduate(const Graduate& G);
void Put_in_Graduate();
void Display()const;
string Get_number()const;
protected:
string subject;//专业
};
class TA:public Graduate,public Teacher
{
public:
TA();
TA(const string nam,const string num,const string cno,const string sub,const string pri);
TA(const TA& GT);
void Put_in_TA();
void Display()const;
string Get_number()const;
};
#endif
//people.cpp文件
#include"people.h"
#include<iostream>
#include<iomanip>
using namespace std;
People::People()
{
}
People::People(const string nam,const string num):name(nam),number(num)
{
}
People::People(const People& P)
{
name=P.name;
number=P.number;
}
void People::Put_in_People()
{
cout<<"请输入姓名: ";
cin>>name;
cout<<"请输入编号: ";
cin>>number;
}
void People::Display() const
{
cout<<name<<setw(5)<<number<<setw(5)<<sex<<setw(5);
}
string People::Get_number() const
{
return number;
}
People::~People(){}
Student::Student()
{
}
Student::Student(const string nam,const string num,const string cno):People(nam,num),classNO(cno)
{
}
Student::Student(const Student&S)
{
name=S.name;
number=S.number;
classNO=S.classNO;
}
void Student::Put_in_Student()
{
People::Put_in_People();
cout<<"请输入班号: ";
cin>>classNO;
}
void Student::Display() const
{
People::Display();
cout<<setw(5)<<classNO<<endl;
}
string Student::Get_number() const
{
return number;
}
Teacher::Teacher()
{
}
Teacher::Teacher(const string nam,const string num,const string pri):People(nam,num),principalship(pri)
{
}
Teacher::Teacher(const Teacher& T)
{
name=T.name;
number=T.number;
principalship=T.principalship;
}
void Teacher::Put_in_Teacher()
{
People::Put_in_People();
cout<<"请输入职务: ";
cin>>principalship;
}
void Teacher::Display() const
{
People::Display();
cout<<setw(5)<<principalship<<endl;
}
string Teacher::Get_number() const
{
return number;
}
Graduate::Graduate()
{
}
Graduate::Graduate(const string nam,const string num,const string cno,const string sub):Student(nam,num,cno),subject(sub)
{
}
Graduate::Graduate(const Graduate& G)
{
name=G.name;
number=G.number;
classNO=G.classNO;
subject=G.subject;
}
void Graduate::Put_in_Graduate()
{
People::Put_in_People();
cout<<"请输入专业: ";
cin>>subject;
}
void Graduate::Display() const
{
Student::Display();
cout<<setw(5)<<subject<<setw(5);
cout<<endl;
}
string Graduate::Get_number() const
{
return number;
}
TA::TA()
{
}
TA::TA(const string nam,const string num,const string cno,const string sub,const string pri):Graduate(nam,num,cno,sub),Teacher(nam,num,pri)
{
}
TA::TA(const TA >)
{
name=GT.name;
number=GT.number;
classNO=GT.classNO;
subject=GT.subject;
principalship=GT.principalship;
}
void TA::Put_in_TA()
{
Graduate::Put_in_Graduate();
cout<<"请输入职务: ";
cin>>principalship;
}
void TA::Display() const
{
Graduate::Display();
cout<<setw(5)<<principalship<<endl;
}
//main.cpp文件
#include"people.h"
#include<cstdlib>
#include<vector>
#include<iostream>
using namespace std;
void Input(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>);
void Display_Message(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>) ;
void Menu(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>);
int main()
{
vector<Student>S;
vector<Teacher>T;
vector<Graduate>G;
vector<TA>GT;
Menu(S,T,G,GT);
return 0;
}
void Input(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>)
{
char ch;
Student stu;
Teacher tea;
Graduate gra;
TA ta;
do
{
cout<<"请选择录入的信息: "<<endl;
cout<<"1.本科学生\t2.在校教师\t3.研究生\t4.助教生"<<endl;
cin>>ch;
switch(ch)
{
case'1':stu.Put_in_Student();S.push_back(stu);break;
case'2':tea.Put_in_Teacher();T.push_back(tea);break;
case'3':gra.Put_in_Graduate();G.push_back(gra);break;
case'4':ta.Put_in_TA();GT.push_back(ta);break;
default:cout<<"输入错误,请重新输入: ";
}
cout<<"继续录入吗?(y是/n否): ";
cin>>ch;
}while(ch=='y');
}
void Display_Message(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>)
{
char ch;
do
{
cout<<"请选择浏览的信息: ";
cout<<"1.本科学生\t2.在校教师\t3.研究生\t4.助教生"<<endl;
cin>>ch;
switch(ch)
{
case'1':
if(S.size()==0)
cout<<"没有本科学生的信息或者信息被删除!"<<endl;
else
{
cout<<"本科生的信息为: "<<endl;
cout<<"姓名\t学号\t性别\t生日\t身份证号\t班号"<<endl;
for(vector<Student>::iterator siter=S.begin();siter!=S.end();++siter)
siter->Display();
}
break;
case'2':
if(T.size()==0)
cout<<"没有教师的信息或者信息被删除!"<<endl;
else
{
cout<<"教师的信息为: "<<endl;
cout<<"姓名\t学号\t性别\t生日\t身份证号\t职务\t<<部门"<<endl;
for(vector<Teacher>::iterator titer=T.begin();titer!=T.end();++titer)
titer->Display();
}
break;
case'3':
if(G.size()==0)
cout<<"没有研究生的信息或者信息被删除!"<<endl;
else
{
cout<<"研究生的信息为: "<<endl;
cout<<"姓名\t学号\t性别\t生日\t身份证号\t班号\t专业\t<<导师"<<endl;
for(vector<Graduate>::iterator giter=G.begin();giter!=G.end();++giter)
giter->Display();
}
break;
case'4':
if(GT.size()==0)
cout<<"没有助教生的信息或者信息被删除!"<<endl;
else
{
cout<<"助教生的信息为: ";
cout<<"姓名\t学号\t性别\t生日\t身份证号\t班号\t专业\t<<导师\t职务\t<<部门"<<endl;
for(vector<TA>::iterator iter=GT.begin();iter!=GT.end();++iter)
iter->Display();
}
break;
default:
cout<<"输入错误,请重新输入: ";
}
cout<<"继续浏览吗?(y是/n否): ";
cin>>ch;
}while(ch=='y');
}
void Menu(vector<Student>&S,vector<Teacher>&T,vector<Graduate>&G,vector<TA>>)
{
char ch;
cout<<"\t\t\t************************"<<endl;
cout<<"\t\t\t欢迎使用学校人事管理系统"<<endl;
cout<<"\t\t\t************************"<<endl;
do{
cout<<"\t\t\t1.录入信息"<<endl;
cout<<"\t\t\t2.浏览信息"<<endl;
cout<<"\t\t\t3.查找信息"<<endl;
cout<<"\t\t\t4.修改信息"<<endl;
cout<<"\t\t\t5.保存信息"<<endl;
cout<<"\t\t\t0.退出系统"<<endl;
cout<<"请选择操作: ";
cin>>ch;
switch(ch)
{
case'1':Input(S,T,G,GT);break;
case'2':Display_Message(S,T,G,GT);break;
case'3':
case'4':
case'5':
case'0':cout<<"\t\t\t\t谢谢使用!"<<endl;system("pause");exit(0);break;
default:cout<<"输入错误,请重新输入: ";
}
}while(ch!='0');
}
string TA::Get_number()const
{
return number;
}//定义了,但是是link错误!
class TA:public Graduate,public Teacher
{
public:
TA();
TA(const string nam,const string num,const string cno,const string sub,const string pri);
TA(const TA& GT);
void Put_in_TA();
void Display()const;
string Get_number()const;这个函数在cpp中没有定义
};
"public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall TA::Get_number(void)const "
//提示你这出错了:TA::Get_number(void)const,回TA类里发现它没重写基类的Get_number函数