📄 学校小数据库.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 + -