c++简单的学生管理系统----继承练习
来源:互联网 发布:网络心理误区 编辑:程序博客网 时间:2024/06/07 23:49
# include <iostream>
# include <string.h>
using namespace std;
const char null = '\0';
static char * strsave(char * s) {
char * p;
p = new char[strlen(s) + 1];
strcpy(p, s);
return p;
}
class Data_rec {
protected:
char * name;
char * id_number;
public:
Data_rec() {
name = null;
id_number = null;
}
Data_rec(char * name1, char * id_number1) {
name = strsave(name1);
id_number = strsave(id_number1);
}
~Data_rec() {
delete[] name;
delete[] id_number;
}
void print() {
cout << "\n" << "name:" << name << endl;
cout << "id_number:" << id_number << endl;
}
};
class Student: virtual public Data_rec {
protected:
char * major;
long int stu_no;
int level;
public:
Student(char * name1, char * id_number1, char * major1, long int stu_no1,
int level1) :
Data_rec(name1, id_number1) {
major = strsave(major1);
stu_no = stu_no1;
level = level1;
}
~Student() {
delete[] major;
}
void print();
};
void Student::print() {
Data_rec::print();
cout << "Major:" << major << endl;
cout << "stu_no:" << stu_no << endl;
cout << "level:" << level << endl;
}
class Employee: virtual public Data_rec {
protected:
char * dept;
double salary;
public:
Employee(char * name1, char * id_number1, char * dept1, float salary1)
:Data_rec(name1, id_number1)
{
dept = strsave(dept1);
salary = salary1;
}
~Employee() {
delete[] dept;
}
void print();
};
void Employee::print() {
Data_rec::print();
cout << "Department:" << dept << endl;
cout << "salary:" << salary << endl;
}
class Teacher: virtual public Employee {
protected:
char * title;
public:
Teacher(char * name1, char * id_number1, char * dept1, float salary1, char * title1) :
Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1) {
title = strsave(title1);
}
~Teacher() {
delete[] title;
}
void print();
};
void Teacher::print() {
Employee::print();
cout << "title:" << title << endl;
}
class E_Student: public Employee, public Student {
public:
E_Student(char * name1, char * id_number1, char * major1, long int stu_no1, int level1, char * dept1, float salary1):
Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1),
Student(name1, id_number1, major1, stu_no1, level1)
{
}
void print();
};
void E_Student::print() {
Student::print();
cout << "Department:" << dept << endl;
cout << "salary:" << salary << endl;
}
int main(void) {
Student my_student("zhangming", "010123456789123", "computer science", 1234, 4);
Employee my_employee("chandaiwei", "010434535431234", "electrical engineering", 7.20);
Teacher my_teacher("lixiaoping", "010234568977789", "computer science", 12.34, "professor");
E_Student my_E_Student("zhangming", "010123456789123", "computer science", 203478.3, 3, "electrical engineering", 7.20);
cout << "\n\n";
my_teacher.print();
cout << "\n\n";
my_E_Student.print();
return 0;
}
# include <string.h>
using namespace std;
const char null = '\0';
static char * strsave(char * s) {
char * p;
p = new char[strlen(s) + 1];
strcpy(p, s);
return p;
}
class Data_rec {
protected:
char * name;
char * id_number;
public:
Data_rec() {
name = null;
id_number = null;
}
Data_rec(char * name1, char * id_number1) {
name = strsave(name1);
id_number = strsave(id_number1);
}
~Data_rec() {
delete[] name;
delete[] id_number;
}
void print() {
cout << "\n" << "name:" << name << endl;
cout << "id_number:" << id_number << endl;
}
};
class Student: virtual public Data_rec {
protected:
char * major;
long int stu_no;
int level;
public:
Student(char * name1, char * id_number1, char * major1, long int stu_no1,
int level1) :
Data_rec(name1, id_number1) {
major = strsave(major1);
stu_no = stu_no1;
level = level1;
}
~Student() {
delete[] major;
}
void print();
};
void Student::print() {
Data_rec::print();
cout << "Major:" << major << endl;
cout << "stu_no:" << stu_no << endl;
cout << "level:" << level << endl;
}
class Employee: virtual public Data_rec {
protected:
char * dept;
double salary;
public:
Employee(char * name1, char * id_number1, char * dept1, float salary1)
:Data_rec(name1, id_number1)
{
dept = strsave(dept1);
salary = salary1;
}
~Employee() {
delete[] dept;
}
void print();
};
void Employee::print() {
Data_rec::print();
cout << "Department:" << dept << endl;
cout << "salary:" << salary << endl;
}
class Teacher: virtual public Employee {
protected:
char * title;
public:
Teacher(char * name1, char * id_number1, char * dept1, float salary1, char * title1) :
Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1) {
title = strsave(title1);
}
~Teacher() {
delete[] title;
}
void print();
};
void Teacher::print() {
Employee::print();
cout << "title:" << title << endl;
}
class E_Student: public Employee, public Student {
public:
E_Student(char * name1, char * id_number1, char * major1, long int stu_no1, int level1, char * dept1, float salary1):
Data_rec(name1, id_number1), Employee(name1, id_number1, dept1, salary1),
Student(name1, id_number1, major1, stu_no1, level1)
{
}
void print();
};
void E_Student::print() {
Student::print();
cout << "Department:" << dept << endl;
cout << "salary:" << salary << endl;
}
int main(void) {
Student my_student("zhangming", "010123456789123", "computer science", 1234, 4);
Employee my_employee("chandaiwei", "010434535431234", "electrical engineering", 7.20);
Teacher my_teacher("lixiaoping", "010234568977789", "computer science", 12.34, "professor");
E_Student my_E_Student("zhangming", "010123456789123", "computer science", 203478.3, 3, "electrical engineering", 7.20);
cout << "\n\n";
my_teacher.print();
cout << "\n\n";
my_E_Student.print();
return 0;
}
- c++简单的学生管理系统----继承练习
- 简单的学生管理系统
- 简单的学生管理系统
- 简单的学生管理系统
- 简单的 学生管理系统
- 简单的学生管理系统
- 学生管理系统练习
- C入门之简单的学生管理系统
- c语言实现的简单学生管理系统
- 用链表做的简单c语言学生管理系统
- [C++]简单版学生管理系统(结构)
- 练习一个简单的学生管理系统,不成熟,但是综合性很强
- 简单学生管理系统
- 简单学生管理系统
- 简单学生管理系统
- C/C++编程小练习 函数实现学生管理系统
- 双链表实现简单的学生管理系统
- 一个简单的学生管理系统
- poj 1904 King's Quest 二分图中强联通分量的运用
- Java Properties文件的读写
- find命令查找包含指定内容的文件
- surf匹配流程。。。
- [System.ComponentModel.DataObject]
- c++简单的学生管理系统----继承练习
- VC2010 STL 与 STLport 性能比较
- SQL2008报错“请验证实例名称是否正确并且SQL Server已配置为允许远程连接”
- 系统管理员设置了系统策略 禁止此运行
- 用比自己厉害的人,可能吗?
- 《Pro ASP.NET MVC 3 Framework》译文目录
- usaco overfencing
- 其实我是一只风筝
- .bash_profile和.bashrc的什么区别