📄 member.h
字号:
#include "iostream.h"
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
/*struct date //问题怎样在构造函数中给结构体负值
{
int year;
int month;
int day;
};*/
class list;
//在校人员的类
class member
{
friend class list;
protected:
char name[20];//姓名
int memberNo;//编号
char gender[8];//性别
char birthday[15];//出生日期
member *ptr, *next;
public:
member()
{
name[0]='0';
memberNo=0;
gender[0]='0';
birthday[0]='0';
//ptr=0;
next=0;
}
member(char *nam,int No,char *sex,char *birth)
{
strcpy(name,nam);
memberNo=No;
strcpy(gender,sex);
strcpy(birthday,birth);
//ptr=0;
next=0;
}
virtual void print()
{
cout<<"\n"<<"\n姓名"<<name<<"\n编号"<<memberNo<<"\n性别"<<gender<<"\n生日"<<birthday;
}
virtual void insert(){}
};
//学生的类
class student: virtual public member
{
friend class list;
protected:
char dept[10];
int grade;
float mscore;
float cscore;
float escore;
public:
student():member()
{
dept[0]='0';
grade=2002;
mscore=0;
cscore=0;
escore=0;
}
student(char *nam,int No,char *sex,char *birth,char *Dept,int Grade,float Mscore,float Cscore,float Escore):member(nam,No,sex,birth)
{
strcpy(dept,Dept);
grade=Grade;
mscore=Mscore;
cscore=Cscore;
escore=Escore;
}
void print()
{
cout<<"本科生信息:";
member::print();
cout<<"\n院系:"<<dept<<"\n年级:"<<grade<<"\n数学成绩:"<<mscore<<"\n计算机成绩:"<<cscore<<"\n英语成绩:"<<escore;
}
void insert()
{
ptr=new student(name,memberNo,gender,birthday,dept,grade,mscore,cscore,escore);
}
};
//教师的类
class teacher: virtual public member
{
friend class list;
protected:
char mydept[10];
char work[15];
char position1[15];
public:
teacher( ):member( )
{
mydept[0]='0';
work[0]='0';
position1[0]='\0';
}
teacher(char *nam,int No,char *sex,char *birth,char *Dept,char *Major,char *Position):member(nam,No,sex,birth)
{
strcpy(mydept,Dept);
strcpy(work,Major);
strcpy(position1,Position);
}
void print( )
{
cout<<"教师信息:";
member::print( );
cout<<"\n院系"<<mydept<<"\n专业"<<work<<"\n职位"<<position1;
}
void insert( )
{
ptr=new teacher(name,memberNo,gender,birthday,mydept,work,position1);
}
};
//职工的类
class staff: virtual public member
{
friend class list;
protected:
char my_dept[15];
char position2[15];
public:
staff( ):member( )
{
my_dept[0]='\0';
position2[0]='\0';
}
staff(char *nam,int No,char *sex,char *birth,char *Dept,char *Position):member(nam,No,sex,birth)
{
strcpy(my_dept,Dept);
strcpy(position2,Position);
}
void print( )
{
cout<<"职工信息:";
member::print( );
cout<<"\n部门:"<<my_dept<<"\n职务:"<<position2;
}
void insert( )
{
ptr=new staff(name,memberNo,gender,birthday,my_dept,position2);
}
};
//研究生的类
class gradute: virtual public student
{
friend class list;
protected:
char major[15];
char myteacher[15 ];
public:
gradute( ):student( )
{
major[0]='\0';
myteacher[0]='\0';
}
gradute(char *nam,int No,char *sex,char *birth,char *Dept,int Grade,float Mscore,float Cscore,float Escore,char *Major,char *Teacher):member(nam,No,sex,birth),student(nam,No,sex,birth,Dept,Grade,Mscore,Cscore,Escore)
{
strcpy(major,Major);
strcpy(myteacher,Teacher);
}
void print( )
{
student::print( );
cout<<"\n专业:"<<major<<"\n导师:"<<myteacher;
}
void insert( )
{
ptr=new gradute(name,memberNo,gender,birthday,dept,grade,mscore,cscore,escore,major,myteacher);
}
};
//在校研究生的类(问题)
class Atschoolgradute1:public gradute,public teacher
{
friend class list;
public:
Atschoolgradute1(char *nam,int No,char *sex,char *birth,char *Dept,int Grade,float Mscore,float Cscore,float Escore,char *Position,char *Major,char *Teacher):member(nam,No,sex,birth),student(nam,No,sex,birth,Dept,Grade,Mscore,Cscore,Escore),gradute(nam,No,sex,birth,Dept,Grade,Mscore,Cscore,Escore,Major,Teacher),teacher(nam,No,sex,birth,Dept,Major,Position){}
void print( )
{
cout<<"在校研究生的信息:";
member::print();
cout<<"\n专业:"<<major<<"\n导师:"<<myteacher;
cout<<"\n院系"<<dept<<"\n职位"<<position1;
}
void insert( )
{
ptr=new Atschoolgradute1(name,memberNo,gender,birthday,dept,grade,mscore,cscore,escore,major,myteacher,position1);
}
};
//在校研究生的类(问题)
class Atschoolgradute2:public gradute,public staff
{
friend class list;
public:
Atschoolgradute2(char *nam,int No,char *sex,char *birth,char *Dept,int Grade,float Mscore,float Cscore,float Escore,char *Major,char *Teacher,char *Position):member(nam,No,sex,birth),student(nam,No,sex,birth,Dept,Grade,Mscore,Cscore,Escore),gradute(nam,No,sex,birth,Dept,Grade,Mscore,Cscore,Escore,Major,Teacher),staff(nam, No,sex,birth,Dept,Position){}
void print( )
{
cout<<"在校研究生的信息:";
member::print();
cout<<"\n专业:"<<major<<"\n导师:"<<myteacher;
cout<<"\n部门:"<<dept<<"\n职务:"<<position2;
}
void insert( )
{
ptr=new Atschoolgradute2(name,memberNo,gender,birthday,dept,grade,mscore,cscore,escore,major,myteacher,position2);
}
};
//兼职教师的类
class tempteacher:public teacher,public staff
{
friend class list;
public:
tempteacher(char *nam,int No,char *sex,char *birth,char *Dept,char *Major,char *position1,char *position2):member(nam,No,sex,birth),teacher(nam,No,sex,birth,Dept,Major,position1),staff(nam,No,sex,birth,Dept,position2){}
void print( )
{
cout<<"兼职教师的类:";
member::print();
cout<<"\n院系"<<mydept<<"\n专业"<<work<<"\n职位"<<position1<<"\n职务:"<<position2;
}
void insert( )
{
ptr=new tempteacher(name,memberNo,gender,birthday,mydept,work,position1,position2);
}
};
class list
{
member *root;
public:
list( )
{
root=0;
}
void insert_person(member *s);
int remove(char *nam);
void print_list( );
};
void list::insert_person(member *s)//插入一个成员
{
char key[15];
strcpy(key,s->name);
member *curr=root;
member *prev=0;
while(curr!=0&&strcmp(curr->name,key)<0)
{
prev=curr;
curr=curr->next;
}
s->insert( );
s->ptr->next=curr;
if(prev==0)
root=s->ptr;
else
prev->next=s->ptr;
}
int list::remove(char *nam)//删除一个成员
{
member *curr=root;
member *prev=0;
int num;
while(curr!=0&&strcmp(curr->name,nam)!=0)
{
prev=curr;
curr=curr->next;
}
if(curr!=0&&prev==0) //删除头节点
{
num=curr->memberNo;
root=curr->next;
return num;
//delete curr; //(问题:在加上VIRTUAL后错误)
}
else if(curr!=0&&prev!=0)
{
num=curr->memberNo;
prev->next=curr->next;
return num;
//delete curr;
}
}
void list::print_list( )
{
member *current=root;
while(current!=0)
{
current->print( );
current=current->next;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -