一个例程,大学人员管理信息系统的设计,不知哪里有错误,一直找不出来

来源:互联网 发布:45战歌电影网域名改了 编辑:程序博客网 时间:2024/04/29 21:12

#include<stdlib.h>
#include<string.h>
#include<iostream.h>
#include<time.h>
const char null='/0';
class Base
{
protected:
 char *name;
 int age;
 char * id_number;
public:
 Base();//无参构造函数 
 Base(char *name1,int age1,char * id_number1);//带参构造函数
 ~Base();//析构函数
 void display();
};

Base::Base()//无参构造函数的实现
{
 name=NULL;
 age=0;
 id_number=NULL;
}

Base::Base(char *name1,int age1,char * id_number1)//带参数构造函数的实现
{
 name=new char[strlen(name1)+1];//动态申请内存单元
 name=strcpy(name,name1);
 age=age1;
 id_number=new char[strlen(id_number1)+1];//动态申请内存单元
 id_number=strcpy(id_number,id_number1);
}

Base::~Base()
{
 delete[]name;//释放用NEW分配的内存单元
 delete[]id_number;
}

void Base::display()//基类函数display的实现
{
 cout<<"name:"<<name<<endl;
 cout<<"age:"<<age<<endl;
 cout<<"id_number:"<<id_number<<endl;
}

class Student: virtual public Base//声明派生类Student
{
protected:
 char *major;
 long int s_number;
 int level;
public:
 Student(char *name1,int age1,char *id_number1,char *major1,
  long int s_number1,int level1):Base(name1,age1,id_number1)
 {
  major=new char[strlen(major1)+1];
  major=strcpy(major,major1);
  s_number=s_number1;
  level=level1;
 }
 ~Student();
 void display();
};

Student::~Student()
{
 delete[]major;
}

void Student::display()//派生类Student的函数display的实现
{
 Base::display();
 cout<<"major:"<<major<<endl;
 cout<<"s_number:"<<s_number<<endl;
 cout<<"level:"<<level<<endl;
}

class Employee: virtual public Base//声明派生类Employee
{
protected:
 char *dept;
 double salary;
public:
 Employee(char *name1,int age1,char * id_number1,char *dept1,
  double salary1):Base(name1,age1,id_number1)
 {
  dept=new char[strlen(dept1)+1];
  dept=strcpy(dept,dept1);
  salary=salary1;
 }
 ~Employee()
 {
  delete[]dept;
 }
 void display();
};

void Employee::display()//派生类Employee的函数display的实现
{
 Base::display();
 cout<<"Department:"<<dept<<endl;
 cout<<"salary:"<<salary<<endl;
}

class Teacher: virtual public Employee//声明派生类Teacher
{
protected:
 char * title;
public:
 Teacher(char *name1,int age1,char *id_number1,char *dept1,
  double salary1,char *title1):Base(name1,age1,id_number1),
  Employee(name1,age1,id_number1,dept1,salary1)
 {
  title=new char[strlen(title)+1];
  title=strcpy(title,title1);
 }
 ~Teacher()
 {
  delete[]title;
 }
 void display();
};

void Teacher::display()//派生类Teacher的函数display的实现
{
 Employee::display();
 cout<<"title:"<<title<<endl;
}

class Graduate:public Employee,public Student//声明派生类Graduate
{
public:
 Graduate(char *name1,int age1,char *id_number1,
  char *major1,long int s_number1,int level1,
  char *dept1,double salary1):
 Base(name1,age1,id_number1),Employee(name1,age1,id_number1,dept1,salary1),
  Student(name1,age1,id_number1,major1,s_number1,level1){}
 void display();
};

void Graduate::display()//派生类Graduate的函数display的实现
{
 Student::display();
 cout<<"Department:"<<dept<<endl;
 cout<<"salary:"<<salary<<endl;
}

void main()
{
 Student s1("Wangwei",20,"010323650718123",
  "Computer Science",30516568,4);
 Employee E1("ZhangHua",28,"010436505031238",
  "Electrical Engineering",2800);
 Teacher t1("Chan Wei",38,"010234670607126",
  "Computer Science",3500,"professor");
 Graduate g1("Li Ming",36,"010123690918128",
  "Computer Science",206678,3,"Electrical Engineering",3600);
 s1.display();
 cout<<endl;
 E1.display();
    cout<<endl;
 t1.display();
 cout<<endl<<endl;
 g1.display();
}

出现应用程序错误!!

原创粉丝点击