?? 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 + -