资源简介
/*
题目:
大学中的人员分三类 :学生,教师和职员,他们的基本信息如下:
学生:姓名,年龄,学号,年级,成绩
教师:姓名,年龄,身份证号,职称,工资
职员:姓名,年龄,身份证号,工资
现在需要管理各类人员的信息,请用面向对象的方法设计一个异质链表,用来存放他们的信息。
异质链表实现:有三个类 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()新版本
相关资源
- 高斯消去法求解线性方程组C/C++程序输
- c++通讯录管理系统
- 即时通讯开发源码终极版C#.NETC++都有
- c++游戏歹徒逃亡.cpp
- NOIP2019csp-j 初赛普及组 C++试题及答案
- C++实现多元线性回归 可指定任意几元
- PCA、KPCA数据降维C++实现
- C++ 21点扑克牌游戏
- BP算法的C++实现
- Windows游戏编程大师技巧(CHM)
- 180912.cpp
- 校园卡信息管理系统
- c++实现图最短路径
- The Design And Evolution Of C++英文版
- vc 视频会议系统v2.8 源码
- LL(1)文法分析全过程(FIRST/FLLOW/S
- C++ 公司员工管理系统的设计源代码
- DNFC++辅助开源
- 标准C++STL源码剖析(侯捷著)(非扫
- Effective C++ 中文版2nd Edition
- VC++界面换肤 界面自绘 内置滚动条自
- celrityC/C++源码查看工具
- Microsoft Visual C++ 14Build Tools
- 毕业设计C++五子棋源代码及毕业论文
- 哲学家进餐问题的c++模拟实现
- 数据结构课程设计 停车场管理系统
- puma560的运动学正解和逆解的C++源码
- 简单的汽车租赁管理软件C++控制台程
- 定义和使用分数类fraction
- 剑灵辅助源码
评论
共有 条评论