#include <iostream.h>
class Figure
{ public:
virtual void input( )=0;
virtual void display()=0;
virtual int get_num()const=0;
virtual void mod()=0;
};
class Date
{
int year;
int month;
int day;
public:
void input()
{
cout<<"输入出生日期(年-月-日):";
cin>>year>>month>>day;
}
void display()
{
cout<<" 出生日期:"<<year<<'/'<<month<<'/'<<day<<endl;
}
};
class people:public Figure
{protected:
char name[20];
int num;
char sex;
Date birthday;
int ID;
public:
void input()
{
cout<<"姓名:";
cin>>name;
cout << "编号:";
cin >>num;
cout << "性别(w/m):";
cin>>sex;
birthday.input( );
cout << "身份证号:";
cin>>ID;
}
int get_num()const
{
return num;
}
void mod()
{
cout<<"编号修改为:";
cin>>num;
cout<<"姓名修改为:";
cin>>name;
cout<<"性别:";
cin>>sex;
cout<<"身份证号:";
cin>>ID;
birthday.input();
}
void display()
{
cout<<" 姓名:"<<name<<endl;
cout<<" 编号:"<<num<<endl;
cout<<" 性别:"<<(sex=='w'? "woman":"man")<<endl;
birthday.display();
cout<<" 身份证号:"<<ID<<endl;
}
};
class student:virtual public people
{
char clano[7];
public:
void input()
{
people::input();
cout<<"输入该学生的班号:";
cin>>clano;
}
int get_num()const
{
return num;
}
void mod()
{
people::mod();
cout<<"修改班号:";
cin>>clano;
}
void display()
{
people::display();
cout<<" 班号:"<<clano<<endl;
}
~student(){}
};
class teacher:virtual public people
{
char p[11];
char dep[21];
public:
void input()
{
people::input();
cout<<"输入职务:";
cin>>p;
cout<<" 部门:";
cin>>dep;
}
int get_num()const
{
return num;
}
void mod()
{
people::mod();
cout<<"/t职务:"; cin>>p;
cout<<"/t部门:"; cin>>dep;
}
void display()
{
people::display();
cout<<" 职务:"<<p<<endl;
cout<<" 部门:"<<dep<<endl;
}
~teacher(){}
};
class graduate:virtual public student
{
char subject[21];
teacher adviser;
public:
void input()
{
people::input();
cout<<"专业:";
cin>>subject;
cout<<"输入其导师的信息"<<endl;
adviser.input();
}
int get_num()const
{
return num;
}
void mod()
{
student::mod();
cout<<"/t专业:"; cin>>subject;
cout<<"/n/t请输入其导师的信息";
adviser.input();
}
void display()
{
people::display();
cout<<" 专业:"<<subject<<endl;
cout<<"导师"<<endl;
adviser.display();
}
~graduate(){}
};
class TA:public graduate,public teacher
{
public:
void input()
{
teacher::input();
cout<<"所带研究生的信息:"<<endl;
graduate::input();
}
int get_num()const
{
return num;
}
void mod()
{
teacher::mod();
cout<<"所带研究生的信息:"<<endl;
graduate::mod();
}
void display()
{
teacher::display();
graduate::input();
}
~TA(){}
};
void infor()
{
const int MAX=10,M=20;
Figure *figures[MAX][M];
int count=0;
const int choice=5;
for (count=0; count<choice; count++)
{
int peo;
do
{
cout<<" ****************************"<<endl;
cout<<" * 1学生信息 *"<<endl;
cout<<" * 2教师信息 *"<<endl;
cout<<" * 3研究生信息 *"<<endl;
cout<<" * 4博士生信息 *"<<endl;
cout<<" * -1退出进行其它操作 *"<<endl;
cout<<" ****************************"<<endl;
cout<<" 请选择您要的操作:";
cin >>peo;
} while (peo < -1 || peo > 4);
if (peo == -1) break;
if(peo==4)
{
TA a[20];
cout<<"********************信息输入**********************"<<endl;
cout<<"输入所带学生的人数:";
int n;
cin>>n;
for(int i=1;i<n+1;i++)
{
cout<<"输入第"<<i<<"个学生的信息:"<<endl;
a[i].input();
}
cout<<"********************信息输出**********************"<<endl;
for(int k=1;k<n+1;k++)
{
cout<<"第"<<k<<"个学生:"<<endl;
a[k].display();
}
}
cout<<"********************信息输入**********************"<<endl;
cout<<"输入要输入的人数:";
int m;
cin>>m;
for(int j=1;j<m+1;j++)
{
switch (peo)
{ case 0:
figures[count][j] = new people ;break;
case 1:
figures[count][j] = new student ; break;
case 2:
figures[count][j] = new teacher ; break;
case 3:
figures[count][j] = new graduate ; break;
}
cout<<"输入第"<<j<<"个人的信息:"<<endl;
figures[count][j]->input();
}
cout<<"********************信息输出**********************"<<endl;
for(int l=1;l<m+1;l++)
{
cout<<"第"<<l<<"个人的信息:"<<endl;
figures[count][l]->display();
}
//cout<<"是否要进行修改?(y/n):";
char yn;
/*cin>>yn;
while(yn=='y')
{
int number,p=0;
cout<<"/n 请输入你要修改人员的编号:";
cin>>number;
for(int j=0;j<m;j++)
{
if(figures[count][j]->get_num()==number)
{
figures[count][j]->mod();
p=1;
}
}
if(p==0)
cout<<" 查无此人!"<<endl;
}*/
cout<<"是否要进行添加?(y/n)";
cin>>yn;
if(yn=='y')
{
cout<<"/n 请输入你要添加成员个数:";
cin>>m;
for(int i=0;i<m;i++)
{
cout<<" ****************************"<<endl;
cout<<" * 1学生信息 *"<<endl;
cout<<" * 2教师信息 *"<<endl;
cout<<" * 3研究生信息 *"<<endl;
cout<<" * 4博士生信息 *"<<endl;
cout<<" ****************************"<<endl;
cout<<" 请选择您要的操作:";
cin >>peo;
if (peo == -1) break;
switch (peo)
{ case 0:
figures[count][i] = new people ;break;
case 1:
figures[count][i] = new student ; break;
case 2:
figures[count][i] = new teacher ; break;
case 3:
figures[count][i] = new graduate ; break;
}
figures[count][i]->input();
}
}
/*cout<<"是否要进行删除?(y/n):";
cin>>yn;
if(yn=='y')
{
int number,p=0;
cout<<"/n 请输入你要删除的编号:";
cin>>number;
for(int j=0;j<m;j++)
{
if(figures[count][j]->get_num()==number)
{
delete figures[count][j];
p=1;
}
for(int t=j+1;t<m;t++)
figures[count][t-1]=figures[count][t];
m--;
}
if(p==0)
cout<<" 查无此人!"<<endl;
}*/
cout<<"是否要打印?(y/n):";
cin>>yn;
if(yn=='y')
{
int number,p=0;
cout<<"/n 请输入你要打印的编号:";
cin>>number;
for(int j=0;j<m;j++)
{
if(figures[count][j]->get_num()==number)
{
figures[count][j]->display();
p=1;
}
}
if(p==0)
cout<<" 查无此人!"<<endl;
}
}
}
int main()
{
infor();
return 0;
}
这是我写的第一个比较大的程序,但是错误还是存在,就是那部份我注释掉的地方有问题,还是不知道为什么错了,在编译的时候是不报错的,可是在运行的时候就出错,不知道怎么改。。。。。