📄 yizhi_list.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<conio.h>
class person{
friend class list;
protected:
char name[20];
int age;
char add[40];
char tele[15];
static person *ptr;
person *next;
public:
person (char *,int,char *,char *);
virtual void print();
virtual void insert(){};
};
class student:public person{
friend class list;
int level;
float grade_point_average;
public:
student(char *,int,char *,char *,int,float);
void print();
void insert();
};
class teacher:public person{
friend class list;
float salary;
public:
teacher(char *,int,char *,char *,float);
void print();
void insert();
};
class staff:public person{
friend class list;
float hourly_wages;
public:
staff(char *,int,char *,char *,float);
void print();
void insert();
};
class list{
person *root;
public:
list(){root=0;}
void insert_person(person *node);
void remove(char *name);
void print_list();
};
person::person(char *name,int age,char *add,char *tele)
{
strcpy(person::name,name);
strcpy(person::add,add);
strcpy(person::tele,tele);
person::age=age;
next=0;
}
void person::print()
{
cout<<"\nname:"<<name<<"\n";
cout<<"age: "<<add<<"\n";
cout<<"address:"<<add<<"\n";
cout<<"telephone number:"<<tele<<"\n";
}
student::student(char *name,int age,char *add,char *tele,int level,float grade_point_average):person(name,age,add,tele)
{
student::level=level;
student::grade_point_average=grade_point_average;
}
void student::print()
{
person::print();
cout<<"grade point average: "<<grade_point_average;
cout<<"level";
}
void student::insert()
{
ptr=new student(name,age,add,tele,level,grade_point_average);
}
teacher::teacher(char *name,int age,char *add,char *tele,float salary):person(name,age,add,tele)
{
teacher::salary=salary;
}
void teacher::print()
{
person::print();
cout<<"salary: "<<salary<<"\n";
}
void teacher::insert()
{
ptr=new teacher(name,age,add,tele,salary);
}
staff::staff(char *name,int age,char *add,char *tele,float hourly_wages):person(name,age,add,tele)
{
staff::hourly_wages=hourly_wages;
}
void staff::print()
{
person::print();
cout<<"hourly_wages:"<<hourly_wages<<"\n";
}
void staff::insert()
{
ptr=new staff(name,age,add,tele,hourly_wages);
}
void list::insert_person(person *node)
{
char key[20];
strcpy(key,node->name);
person *curr_node=root;
person *previous=0;
while(curr_node!=0&&strcmp(curr_node->name,key)<0)
{
previous=curr_node;
curr_node=curr_node->next;
}
node->insert();
node->ptr->next=curr_node;
if(previous==0)
root=node->ptr;
else previous->next=node->ptr;
}
void list::remove(char *name)
{
person *curr_node=root;
person *previous=0;
while(curr_node!=0&&strcmp(curr_node->name,name)!=0)
{
previous=curr_node;
curr_node=curr_node->next;
}
if(curr_node!=0&&previous==0)
{
root=curr_node->next;
delete curr_node;
}
else if (curr_node!=0&&previous!=0)
{
previous->next=curr_node->next;
delete curr_node;
}
}
void list::print_list()
{
person *cur=root;
while(cur!=0)
{
cur->print();
cur=cur->next;
}
}
person *person::ptr=0;
void main()
{
list people;
student stu("wangchong",20,"shanghai","02455524",3,54);
teacher tea("lining",43,"beijing","01063716193",563);
staff sta("chenling",42,"qintao","012-65109037",20);
people.insert_person(&stu);
people.insert_person(&tea);
people.insert_person(&sta);
people.print_list();
cout<<endl<<"删除"<<endl;
people.remove("chenling");
people.remove("lining");
people.remove("wangchong");
people.print_list();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -