|
1鱼币
#include<iostream.h>
#include<string>
#include<process.h>
//
class person
{
friend class list;
protected:
char *name;
int age;
char *sex;
int number;
person* temp;
person* next;
public:
person( char *s,int a,char *b, int c);
void add_node();
virtual ~person();
virtual void display(void)=0;
};
class student:public person
{
protected:
char *spec;
public:
student( char *s,int a,char *b,int c,char *d);
void add_node();
~student();
void display(void);
};
//
class teacher:public person
{
protected:
char *course;
public:
teacher( char *s,int a,char *b,int c,char *f);
void add_node();
~teacher();
void display(void);
};
class jiaofu:public student,public teacher{
protected:
char *spec;
char *course;
public:
jiaofu(char *s,int a,char *b,int c,char *d ,char *f);
void add_node();
~jiaofu();
void display(void);
};
//
class list
{
protected:
person* head;
public:
list(person *p=NULL);
~list();
void insert();
void del();
void ser();
void display();
};
person::person( char *s,int a,char *b, int c)
{
name=new char[strlen(s)+1];
strcpy(name,s);
age=a;
sex=new char[strlen(b)+1];
strcpy(sex,b);
number=c;
}
void person::add_node(){}
person::~person()
{
delete []name;
delete []sex;
}
//
student::student( char *s,int a,char *b,int c,char *d):person(s,a,b,c)
{
spec=new char[strlen(d)+1];
strcpy(spec,d);
}
void student::add_node()
{
temp=new student(name,age,sex,number,spec);
}
void student::display(void)
{
cout<<"姓名:"<<name<<"\t 年龄:"<<age<<"\t 性别:"<<sex<<endl;
cout<<"学号:"<<number<<"\t 专业:"<<spec<<endl;
}
student::~student()
{
delete []spec;
}
//
teacher::teacher( char *s,int a,char *b,int c,char *f):person(s,a,b,c)
{
course=new char[strlen(f)+1];
strcpy(course,f);
}
void teacher::add_node()
{
temp=new teacher(name,age,sex,number,course);
}
teacher::~teacher()
{
delete []course;
}
void teacher::display()
{
cout<<"姓名:"<<name<<"\t 年龄:"<<age<<"\t 性别:"<<sex<<endl;
cout<<"教师号:"<<number<<"\t 主讲课程:"<<course<<endl;
}
//
jiaofu::jiaofu( char *s,int a,char *b,int c,char *d,char *f):person(s,a,b,c),student(d),teacher(f)
{
spec=new char[strlen(d)+1];
strcpy(spec,d);
course=new char[strlen(f)+1];
strcpy(course,f);
}
void jiaofu::add_node()
{
temp=new jiaofu(name,age,sex,number,spec,course);
}
jiaofu::~jiaofu()
{
delete[]spec;
delete []course;
}
void jiaofu::display()
{
cout<<"姓名"<<name<< 年龄"<<age<< 性别"<< sex <<endl;
cout<<"教师号"<<number<< "专业"<<spec<< "主讲课程"<<course<<endl;
}
//
list::list(person *p)
{
head=p;
}
list::~list()
{
}
//***********************************************************************************************************************************************
void list::insert() //插入函数
{
person *p; //指向要插入对象的指针
int i;
cout<<"你是想输/插入1<学生>,2<教师>,3<教辅人员>,"<<endl<<"请输入:";
cin>>i;
if(i==1)
{
char c_name[10],c_sex[5],c_spec[20];
int c_age,c_number,c_credit;
cout<<" 名字: "; cin>>c_name;
cout<<" 年龄: "; cin>>c_age;
cout<<" 性别: "; cin>>c_sex;
cout<<" 学号: "; cin>>c_number;
cout<<" 专业: "; cin>>c_spec;
p=new student(c_name,c_age,c_sex,c_number,c_spec);
}
else if(i==2)
{
char c_name[10],c_sex[5],c_course[20];
int c_age,c_number,c_salary;
cout<<" 名字: "; cin>>c_name;
cout<<" 年龄: "; cin>>c_age;
cout<<" 性别: "; cin>>c_sex;
cout<<" 教师号: "; cin>>c_number;
cout<<" 主讲课程: "; cin>>c_course;
p=new teacher(c_name,c_age,c_sex,c_number,c_course);
}
else if(i==3)
{
char c_name[10],c_sex[5],c_spec[8],c_course[20];
int c_age,c_number;
cout<<" 名字: "; cin>>c_name;
cout<<" 年龄: "; cin>>c_age;
cout<<" 性别: "; cin>>c_sex;
cout<<" 教师号: "; cin>>c_number;
cout<<" 专业 :"; cin>>c_spec;
cout<<" 主讲课程: "; cin>>c_course;
p=new jiaofu(c_name,c_age,c_sex,c_number,c_spec,c_course );
}
else
{
cout<<"你的输入不正确, 请重新输入: ";
}
char ch;
cout<<"是否要插入此人员信息(是<Y> / 否<N>)?"<<endl<<" 请输入: ";
cin>>ch;
if(ch=='Y')
{
p->add_node(); //用链表插入要添加等信息。
p->temp->next;
head=p->temp;
cout<<"你想要插入的信息已经被插入!"<<endl;
}
else
cout<<"刚才的信息没有插入!";
}
//***********************************************************************
void list::del()
{
char p[10];
cout<<"请输入你想删除的人员的名字:";
cin>>p;
person *curr=head; //指向当前的指针
while(curr!=NULL) //在遍历过程中寻找删除的对象
{
if(strcmp(curr->name,p)==0)
{
curr->display();
char ch;
cout<<"是否是你要删除的人(是<Y>/否<N>)?"<<endl<<" 请输入:";
cin>>ch;
if(ch=='Y')
{
break;
}
else cout<<"上述信息不是你想要删除的!"<<endl;
curr=curr->next;
}
else
cout<<"你要删除的信息不存在!";
}
}
//************************************************************************
void list::ser() //查找某个人员的信息
{
char p[10];
cout<<"请输入您要查找的人员名字: ";
cin>>p;
int flag=0;
person *curr=head;//指向当前的指针
while(curr!=NULL)
{
if(strcmp(curr->name,p)==0) //判断是否和当前指针对应对象相同
{
curr->display();
char ch;
cout<<"是否是你所想要查找的人(是<Y>/否<N>)?"<<endl<<" 请输入: ";
cin>>ch;
if(ch=='Y')
{
flag=1;
cout<<"你所想要查找的人员信息为:"<<endl;
curr->display();
break;
}
else
{
cout<<"你所想要查找的人员"<<p<<"不存在!"<<endl;
cout<<"请你重新输入: ";
goto D;
}
}
else
cout<<"你要查找的信息不存在 !";
}
}
//********************************************************
void list::display()
{
int i=1;
person *curr=head;
if(curr==NULL)
cout<<"暂无任何人员信息!"<<endl;
else
while(curr!=NULL)
{
cout<<"NO"<<i<<endl;
curr->display();
curr=curr->next;
i++;
}
}
//*********************************************************
int main()
{
list l;
int i;
{
cout<<"\n\n\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"\t* 欢迎进入高校人员信息管理系统 *"<<endl;
cout<<"\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"\t* 1.输入人员信息 *"<<endl;
cout<<"\t* 2.删除人员信息 *"<<endl;
cout<<"\t* 3.按姓名查询人员信息 *"<<endl;
cout<<"\t* 4.显示人员信息 *"<<endl;
cout<<"\t* 0.退出 *"<<endl;
cout<<"\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
}
cout<<"\t请输入您的选择<0--4>: ";
cin>>i; //输入指令
system("cls");
switch(i)
{
case 1: system("cls");l.insert();break;
case 2: system("cls");l.del();break;
case 3: system("cls");l.ser();break;
case 4: system("cls");l.display();break;
case 0: system("cls");cout<<"\t\t\t 谢谢您使用本系统 欢迎下次再次使用!"<<endl;break;
default: cout<<"对不起,您的输入不正确!";
}while(i!='0');
return(0);
}
|
|