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

📄 学校小数据库.h

📁 这个是一个小型的学校数据库
💻 H
字号:
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip.h> 
#include <iostream.h>
class list;
class univ_community
{   
	friend class list;  
 protected:
	 char name[15];  
	 int age; 
     char id[4];
	 univ_community  *ptr, *next;  
 public:   
	 univ_community( )
	 {
		 name[0]='\0'; 
		 age=0;
		 id[0]='\0';
		 next=0;
     }
	 univ_community(char *nam,int a,char *i)	 
	 {
		 strcpy(name,nam); 
		 age=a;
		 strcpy(id,i);
		 next=NULL;
	 } 
	 
	 virtual void print( )
	 {
		 cout<<setiosflags(ios::left)<<setw(13)<<name<<setw(10)<<age<<setw(10)<<id;
	 }
     virtual void save()
	 {
	  ofstream file;
	  file.open("outfile.txt",ios::app);
	  file<<setiosflags(ios::left)<<setw(13)<<name<<setw(10)<<age<<setw(10)<<id;
	  file.close();
	 }
	 virtual void insert( ){}
};

class student : public univ_community
{  
	friend class list;
	float  score;
 public:
	 student( ):univ_community( ) { score=0;}
	 student(char*nam,int a,char *i,float sc):univ_community(nam,a,i){score=sc;}
	 void print( )
	 {
		 univ_community::print();
		 cout<<setw(12)<<"score:"<<score<<endl;
	 }
	 void save()
	 {
		 univ_community::save();
		 ofstream ofile;
	     ofile.open("outfile.txt",ios::app);
	     ofile<<setw(12)<<"score:"<<score<<endl;
		 ofile.close();
	 }
	 void insert( )
	 { 
		 ptr=new student(name,age,id,score);
	 }
};

class teacher : public univ_community
{  
	friend class list;
	char  position[15];
 public:
	 teacher( ):univ_community( ){ position[0]='\0';}
	 teacher(char*nam,int a,char *i,char*pos):univ_community(nam,a,i){strcpy(position,pos);}
	 void print( )
	 {
		 univ_community::print( );
		 cout<<setw(12)<<"position: "<<setw(10)<<position<<endl;
	 } 
	 void save()
	 {
		 univ_community::save();
		 ofstream ofile;
	     ofile.open("outfile.txt",ios::app);
	     ofile<<setw(12)<<"position: "<<setw(10)<<position<<endl;
		 ofile.close();
	 }
	 void insert( )
	 {
		 ptr=new teacher(name,age,id,position);
	 }
};

class staff : public univ_community
{ 
	friend class list;
	char *dept;
  public:   
	  staff( ):univ_community( ) {dept[0]='\0';} 
	  staff(char*nam,int a,char *i,char*dep=" "):univ_community(nam,a,i){dept=dep;}
	  void print( )
	  {
		  univ_community::print( );
		  cout<<setw(12)<<"department: "<<setw(10)<<dept<<endl;
	  }
	  void save()
	 {
		 univ_community::save();
		 ofstream ofile;
	     ofile.open("outfile.txt",ios::app);
	     ofile<<setw(12)<<"department: "<<setw(10)<<dept<<endl;
		 ofile.close();
	 }
	  void insert( )
	  {
		  ptr=new staff(name,age,id,dept);
	  }
};

class list
{  
	univ_community *root;
  public:
	  list( ){root=NULL; }
	  void insert_person(univ_community*s);
	  void remove_name(char*nam);
	  void remove_id(char*id);
	  void print_list( );
	  virtual save_list();
	  int ListEmpty();
	  int find_name(char*nam);
	  int find_id(char*id);
	  void find(char*s);
};
void list::find(char*s)
{
 univ_community *curr=root;  
 univ_community *prev=NULL;
 while(curr!=0&&strcmp(curr->id,s)!=0&&strcmp(curr->name,s)!=0)
 { 
     prev=curr;
     curr=curr->next;
 } 
 curr->print();
}
int list::find_name(char*nam)
{
 univ_community *curr=root;
 univ_community *prev=0;
 while(curr!=0&&strcmp(curr->name,nam)!=0)
 { 
     prev=curr;
     curr=curr->next;
 }
 return curr!=NULL;
}
int list::find_id(char*id)
{
 univ_community *curr=root;
 univ_community *prev=0;
 while(curr!=0&&strcmp(curr->id,id)!=0)
 { 
     prev=curr;
     curr=curr->next;
 }
 return curr!=NULL;
}
int list::ListEmpty()
{
 return root==NULL;
}
void list::insert_person(univ_community *s)
{  
	char key[15];
	strcpy(key,s->name);
	univ_community *curr=root;
	univ_community *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;
}
void list::remove_id(char *id)
{  
 univ_community *curr=root;  
 univ_community *prev=0;
 while(curr!=0&&strcmp(curr->id,id)!=0)
 { 
     prev=curr;
     curr=curr->next;
 } 
 if(curr!=0&&prev==0)
 { 
	 root=curr->next; 
	 delete curr ; 
 }  
 else if(curr!=0&&prev!=0)
 { 
	 prev->next=curr->next;
     delete curr; 
 }
}

void list::remove_name(char *nam)
{  
 univ_community *curr=root;  
 univ_community *prev=0;
 while(curr!=0&&strcmp(curr->name,nam)!=0)
 { 
     prev=curr;
     curr=curr->next;
 } 
 if(curr!=0&&prev==0)
 { 
	 root=curr->next; 
	 delete curr ; 
 }  
 else if(curr!=0&&prev!=0)
 { 
	 prev->next=curr->next;
     delete curr; 
 }
}

void list::print_list( )
{  
	univ_community *current=root;
	while(current!=0)
	{ 
		current->print( );
		current=current->next;
	}
}
 list::save_list()
{
 ofstream myfile;
 myfile.open("outfile.txt",ios::app);
 univ_community *current=root;
 while(current!=0)
 { 
	current->save( );
	current=current->next;
 }
 myfile.close();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -