c++程序学生系统管理

 #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;
}
 

 

这是我写的第一个比较大的程序,但是错误还是存在,就是那部份我注释掉的地方有问题,还是不知道为什么错了,在编译的时候是不报错的,可是在运行的时候就出错,不知道怎么改。。。。。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值