⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 member.h

📁 用C++做的微型数据库
💻 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 + -