• 大小: 7KB
    文件类型: .cpp
    金币: 2
    下载: 0 次
    发布日期: 2024-01-05
  • 语言: C/C++
  • 标签: 链表  C++  编程  

资源简介

/* 题目: 大学中的人员分三类 :学生,教师和职员,他们的基本信息如下: 学生:姓名,年龄,学号,年级,成绩 教师:姓名,年龄,身份证号,职称,工资 职员:姓名,年龄,身份证号,工资 现在需要管理各类人员的信息,请用面向对象的方法设计一个异质链表,用来存放他们的信息。 异质链表实现:有三个类 student,teacher,staff,再定义一个 链表类,此类用来存放这几个不同类的对象,并将链表类 list 声明为所有这些 类的友元,使它们可以访问它们的私有成员。*/

资源截图

代码片段和文件信息

/*
题目:
大学中的人员分三类 :学生,教师和职员,他们的基本信息如下: 
学生:姓名,年龄,学号,年级,成绩 
教师:姓名,年龄,身份证号,职称,工资 
职员:姓名,年龄,身份证号,工资 
现在需要管理各类人员的信息,请用面向对象的方法设计一个异质链表,用来存放他们的信息。 

   异质链表实现:有三个类 student,teacher,staff,再定义一个 
链表类,此类用来存放这几个不同类的对象,并将链表类 list 声明为所有这些 
类的友元,使它们可以访问它们的私有成员。*/ 


#include 
#include  
#include  
using namespace std;

class person{ //定义一个共同的基类,它具有公共的数据成员 
friend class list; //链表类作为本类的友元 
protected: 
char name[20]; //定义姓名 
int age; //定义年龄 
char add[40]; //定义地址 
char tele[20]; //定义电话号码 
static person *ptr; //定义一个指向person类对象的静态指针 
person *next; //指向下一个对象的指针 
public: 
person(char *nameint agechar *addchar *tele);//构造函数 
virtual void print(); //说明虚函数 
virtual void insert(){};//定义虚函数并且什么也不做,只定义一个接口 
}; 

class student:public person{ //派生类 student 
friend class list; //链表类作为本类的友元 
int level; //定义年级 
float grade_point_average; //定义平均分 
public: 
student(char *nameint agechar *addchar *tele int level float grade_point_average); //声明构造函数 
void print(); //重新定义print()函数 
void insert(); //重新定义insert()函数 
}; 
// 
class teacher:public person{ //派生类 teacher 
friend class list; //链表类作为本类的友元 
float salary; //定义工资 
public: 
teacher(char *nameint agechar *addchar *telefloat salary); //声明构造函数 
void print(); //重新定义print()函数 
void insert(); //重新定义insert()函数 
}; 
// 
class staff:public person{ //派生类 staff 
friend class list; //链表类作为本类的友元 
float hourly_wages; //定义计时工资 
public: 
staff(char *nameint agechar *addchar *tele 
float hourly_wages); //声明构造函数 
void print(); //重新定义print()函数 
void insert(); //重新定义insert()函数 
}; 
// 
class list{ //定义异质链表类 
person *root; //链表头指针 
public: 
list(){ root=0; } //链表构造函数,初始为 0 
void insert_person(person *node); //向链表插入一个对象结点 
void remove(char *name); //从链表移去一个对象结点 
void print_list(); //输出整个链表 
}; 
// 
person::person(char *nameint agechar *addchar *tele) 
{ //person 的构造函数 
strcpy(person::namename); 
strcpy(person::addadd); 
strcpy(person::teletele); 
person::age=age; 
next=0; 

void person::print() //基类的虚成员函数print()版本,输出基类数据成员 

cout<<“\nname: “<cout<<“age: “<cout<<“address: “<cout<<“telephone number: “<
// 
student::student(char *nameint agechar *addchar *tele int level float grade_point_average):person(nameageaddtele) 
{ //student 派生类的构造函数,需缀上基类的构造函数 
student::level=level; 
student::grade_point_average=grade_point_average; 

void student::print() //派生类 student的成员函数print()新版本 

person::print(); 
cout<<“grade point average: “<
void student::insert() 
{ //将 student 类的一个对象赋给 ptr 基类指针,这是允许的 
ptr=new student(nameageaddtelelevelgrade_point_average); 

// 
teacher::teacher(char *nameint agechar *addchar *tele float salary):person(nameageaddtele) //teacher 派生类的构造函数,需缀上 
//基类的构造函数 

teacher::salary=salary; 

void teacher::print() //派生类 teacher的成员函数print()新版本

评论

共有 条评论