📄 cpp1.cpp
字号:
#include<iostream.h>
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
class Person
{
public:
friend ostream& operator<<(ostream& out,Person &a1);
friend istream& operator>>(istream& in,Person &a1);
virtual void LoadPerson(istream &in){}//装载数据成员
virtual void AddPerson(long int No,char *Name,char *sex,short age,char *duty,
char *zhicheng,char *polticty,char *educationalbackground,char *holdaposttieme,
char *comeuniversitytime){}//添加人员
virtual void ModifyPersonnel(long int No){}//修改人员信息
virtual int DeletePerson(long int No){return 0;}//删除人员信息
virtual int StatPersonNumber(void){return 0;}//人数统计
virtual int StatSexNumber(char *sex){return 0;}//按性别统计
virtual int StatPoltictyNumber(char *polticty){return 0;}//按政治面貌统计
virtual int StatZhichengEducationalbackground(char *zhicheng,char*educationalbackground){ return 0;}
//按职称和最高学历统计
virtual void QueryPersonName(char *Name){}//根据姓名查询
virtual void QueryPerson(long int No){}//根据编号查询
virtual void PrintPerson(void){}//显示所有人员信息
virtual void SavePerson(ostream& out){}//人员信息的保存
long int m_no;
char m_name[80];
char m_sex[3];
short m_age;
char m_duty[80];//职务
char m_zhicheng[80];//职称
char m_polticty[80];//政治面貌
char m_educationalbackground[80];//最高学历
char m_holdaposttieme[80];//在职时间
char m_comeuniversitytime[80];//来院时间
Person *m_next;
};
istream& operator>>(istream& in,Person &a1)
{
in>>a1.m_no>>a1.m_name>>a1.m_sex>>a1.m_age>>a1.m_duty>>a1.m_zhicheng>>a1.m_polticty
>>a1.m_educationalbackground>>a1.m_holdaposttieme>>a1.m_comeuniversitytime;
return in;
}
ostream& operator<<(ostream& out,Person &a1)
{
out<<a1.m_no<<' '<<a1.m_name<<' '<<a1.m_sex<<' '<<a1.m_age<<' '<<a1.m_duty
<<' '<<a1.m_zhicheng<<' '<<a1.m_polticty<<' '<<a1.m_educationalbackground
<<' '<<a1.m_holdaposttieme<<' '<<a1.m_comeuniversitytime<<endl;
return out;
}
//*****************************************************************************************
class AdministrationPerson:public Person//行政人员类
{
public:
AdministrationPerson(void);
virtual void LoadPerson(istream& in);//装载数据成员
virtual void AddPerson(long int No,char *Name,char *sex,short age,char *duty,
char *zhicheng,char *polticty,char *educationalbackground,char *holdaposttieme,
char *comeuniversitytime);//添加人员
virtual void ModifyPersonnel(long int No);//修改人员信息
virtual int DeletePerson(long int No);//删除人员信息
virtual int StatPersonNumber(void);//人数统计
virtual int StatSexNumber(char *sex);//按性别统计
virtual int StatPoltictyNumber(char *polticty);//按政治面貌统计
virtual int StatZhichengEducationalbackground(char *zhicheng,char*educationalbackground);//按职称和最高学历统计
//按职称和最高学历统计
virtual void QueryPersonName(char *Name);//根据姓名查询
virtual void QueryPerson(long int No);//根据编号查询
virtual void SavePerson(ostream& out); //人员信息的保存
virtual void PrintPerson(void);//显示所有人员信息
~AdministrationPerson(void);
private:
Person *m_Administration;
};
AdministrationPerson::AdministrationPerson(void)
{
m_Administration=NULL;
}
void AdministrationPerson::LoadPerson(istream& in)
{
Person *p,*q;
m_Administration=new Person;
m_Administration->m_next=NULL;
q=m_Administration;
while(!in.eof())
{
p=new Person;
if(in>>(*p))
{
q->m_next=p;
p->m_next=NULL;
q=p;
p=NULL;
}
else
delete p;
}
p=NULL;
}
void AdministrationPerson::AddPerson(long int No,char *Name,char *sex,short age,char *duty,
char *zhicheng,char *polticty,char *educationalbackground,char *holdaposttieme,
char *comeuniversitytime)//添加人员
{
Person *p=new Person;
if(p!=0)
{
p->m_no=No;
strcpy(p->m_name,Name);
strcpy(p->m_sex,sex);
p->m_age=age;
strcpy(p->m_duty,duty);
strcpy(p->m_zhicheng,zhicheng);
strcpy(p->m_polticty,polticty);
strcpy(p->m_educationalbackground,educationalbackground);
strcpy(p->m_holdaposttieme,holdaposttieme);
strcpy(p->m_comeuniversitytime,comeuniversitytime);
p->m_next=m_Administration->m_next;
m_Administration->m_next=p;
}
else
{
cout<<"人员类接点创建不成功,退出程序!!"<<endl;
return;
}
}
void AdministrationPerson::ModifyPersonnel(long int No)//修改人员信息
{
char name[80];
char sex[3];
short age;
char duty[80];//职务
char zhicheng[80];//职称
char polticty[80];//政治面貌
char educationalbackground[80];//最高学历
char holdaposttieme[80];//在职时间
char comeuniversitytime[80];//来院时间
if(m_Administration->m_next==0)
{
cout<<"系统中没有行政人员的信息,退出程序!!"<<endl;
cout<<"修改不成功!!"<<endl;
return;
}
if(m_Administration->m_next->m_no==No)
{
cout<<"人员编号不允许修改,如果不需要修改的请按原来的数据输入!!"<<endl;
cout<<endl;
cout<<"请输入行政人员的姓名、性别、年龄、职务、职称、政治面貌、最高学历、在职时间、来校时间。"<<endl;
cin>>name>>sex>>age>>duty>>zhicheng>>polticty>>educationalbackground>>holdaposttieme>>
comeuniversitytime;
strcpy(m_Administration->m_next->m_name,name);
strcpy(m_Administration->m_next->m_sex,sex);
m_Administration->m_next->m_age=age;
strcpy(m_Administration->m_next->m_duty,duty);
strcpy(m_Administration->m_next->m_zhicheng,zhicheng);
strcpy(m_Administration->m_next->m_polticty,polticty);
strcpy(m_Administration->m_next->m_educationalbackground,educationalbackground);
strcpy(m_Administration->m_next->m_holdaposttieme,holdaposttieme);
strcpy(m_Administration->m_next->m_comeuniversitytime,comeuniversitytime);
cout<<"修改成功!!"<<endl;
}
else
{
for(Person *p=m_Administration->m_next;p!=0;p=p->m_next)
if(p->m_next->m_no==No)
{
cout<<"人员编号不允许修改,如果不需要修改的请按原来的数据输入!!"<<endl;
cout<<endl;
cout<<"请输入行政人员的姓名、性别、年龄、职务、职称、政治面貌、最高学历、在职时间、来校时间。"<<endl;
cin>>name>>sex>>age>>duty>>zhicheng>>polticty>>educationalbackground>>
holdaposttieme>>comeuniversitytime;
strcpy(p->m_next->m_name,name);
strcpy(p->m_next->m_sex,sex);
p->m_next->m_age=age;
strcpy(p->m_next->m_duty,duty);
strcpy(p->m_next->m_zhicheng,zhicheng);
strcpy(p->m_next->m_polticty,polticty);
strcpy(p->m_next->m_educationalbackground,educationalbackground);
strcpy(p->m_next->m_holdaposttieme,holdaposttieme);
strcpy(p->m_next->m_comeuniversitytime,comeuniversitytime);
cout<<"修改成功!!"<<endl;
}
}
}
int AdministrationPerson::DeletePerson(long int No)//删除人员信息
{
int a;
if(m_Administration->m_next==0)
{
cout<<"系统中没有行政人员的信息,退出程序!!"<<endl;
cout<<"删除不成功!!"<<endl;
return 0;
}
Person *p=m_Administration->m_next;
if(m_Administration->m_next->m_no==No)
{
cout<<"你要删除的人员的信息如下:"<<endl;
cout<<m_Administration->m_next->m_no<<'\t'<<m_Administration->m_next->m_name<<'\t'<<
m_Administration->m_next->m_sex<<'\t'<<m_Administration->m_next->m_age<<'\t'<<
m_Administration->m_next->m_duty<<'\t'<<m_Administration->m_next->m_zhicheng<<'\t'
<<m_Administration->m_next->m_polticty<<'\t'<<m_Administration->m_next->
m_educationalbackground<<'\t'<<m_Administration->m_next->m_holdaposttieme<<'\t'
<<m_Administration->m_next->m_comeuniversitytime<<endl;
cout<<"1:确定删除。"<<'\t'<<"2:不删除。"<<endl;
cout<<"请选择:";
cin>>a;
if(a==1)
{
m_Administration->m_next=m_Administration->m_next->m_next;
delete p;
cout<<"删除成功!!"<<endl;
return 1;
}
else if(a==2)
{
cout<<"你没有删除此人员。"<<endl;
return 0;
}
}
else
{
for(Person *q=m_Administration->m_next;q!=0;q=q->m_next)
{
if(q->m_next->m_no==No)
{
p=q->m_next;
cout<<"你要删除的人员的信息如下:"<<endl;
cout<<p->m_no<<'\t'<<p->m_name<<'\t'<<p->m_sex<<'\t'<<p->m_age<<'\t'<<
p->m_duty<<'\t'<<p->m_zhicheng<<'\t'<<p->m_polticty<<'\t'<<p->
m_educationalbackground<<'\t'<<p->m_holdaposttieme<<'\t'<<p->
m_comeuniversitytime<<endl;
cout<<"1:确定删除。"<<'\t'<<"2:不删除。"<<endl;
cout<<"请选择:";
cin>>a;
if(a==1)
{
q->m_next=p->m_next;
delete p;
cout<<"删除成功!!"<<endl;
return 1;
}
else if(a==2)
{
cout<<"你没有删除此人员。"<<endl;
return 0;
}
}
}
}
}
int AdministrationPerson::StatPersonNumber(void)//人员统计
{
int length=0;
Person *p=m_Administration->m_next;
while(p)
{
length++;
p=p->m_next;
}
cout<<"学校行政人员的人数是: "<<length<<endl;
return length;
}
int AdministrationPerson::StatSexNumber(char *sex)//按性别统计
{
int length=0;
Person *p=m_Administration->m_next;
while(p)
{
if(!strcmp(p->m_sex,sex))
length++;
p=p->m_next;
}
cout<<"学校行政人员中"<<sex<<"工的数量为: "<<length<<endl;
return length;
}
int AdministrationPerson::StatPoltictyNumber(char *polticty)//按政治面貌统计
{
int length=0;
Person *p=m_Administration->m_next;
while(p)
{
if(!strcmp(p->m_polticty,polticty))
length++;
p=p->m_next;
}
cout<<"学校行政人员中"<<polticty<<"的数量为: "<<length<<endl;
return length;
}
int AdministrationPerson::StatZhichengEducationalbackground(char *zhicheng,char*educationalbackground)//按最高学历和职称统计
{
int length=0;
Person *p=m_Administration->m_next;
while(p)
{
if(!(strcmp(p->m_zhicheng,zhicheng)&&strcmp(p->m_educationalbackground,educationalbackground)))
length++;
p=p->m_next;
}
cout<<"学校行政人员中是"<<zhicheng<<"和"<<educationalbackground<<"的数量为: "<<length<<endl;
return length;
}
void AdministrationPerson::QueryPersonName(char *Name)//根据姓名查询
{
if(m_Administration->m_next==0)
{
cout<<"系统中没有行政人员的信息,退出程序!!"<<endl;
return;
}
if(!strcmp(m_Administration->m_next->m_name,Name))
{
cout<<m_Administration->m_next->m_name<<"的信息信息如下:"<<endl;
cout<<m_Administration->m_next->m_no<<'\t'<<m_Administration->m_next->m_name<<'\t'<<
m_Administration->m_next->m_sex<<'\t'<<m_Administration->m_next->m_age<<'\t'<<
m_Administration->m_next->m_duty<<'\t'<<m_Administration->m_next->m_zhicheng<<'\t'
<<m_Administration->m_next->m_polticty<<'\t'<<m_Administration->m_next->
m_educationalbackground<<'\t'<<m_Administration->m_next->m_holdaposttieme<<'\t'<<
m_Administration->m_next->m_comeuniversitytime<<endl;
}
else
for(Person *p=m_Administration->m_next;p->m_next!=0;p=p->m_next)
{
if(!strcmp(p->m_next->m_name,Name))
{
cout<<p->m_next->m_name<<"的信息如下:"<<endl;
cout<<p->m_next->m_no<<'\t'<<p->m_next->m_name<<'\t'<<p->m_next->m_sex<<'\t'
<<p->m_next->m_age<<'\t'<<p->m_next->m_duty<<'\t'<<p->m_next->m_zhicheng
<<'\t'<<p->m_next->m_polticty<<'\t'<<p->m_next->m_educationalbackground<<
'\t'<<p->m_next->m_holdaposttieme<<'\t'<<p->m_next->m_comeuniversitytime
<<endl;
}
}
}
void AdministrationPerson::QueryPerson(long int No)//根据编号查询
{
if(m_Administration->m_next==0)
{
cout<<"系统中没有行政人员的信息,退出程序!!"<<endl;
return;
}
if(m_Administration->m_next->m_no==No)
{
cout<<"编号为:"<<m_Administration->m_next->m_no<<"行政人员的信息如下:"<<endl;
cout<<m_Administration->m_next->m_no<<'\t'<<m_Administration->m_next->m_name<<'\t'<<
m_Administration->m_next->m_sex<<'\t'<<m_Administration->m_next->m_age<<'\t'<<
m_Administration->m_next->m_duty<<'\t'<<m_Administration->m_next->m_zhicheng<<'\t'
<<m_Administration->m_next->m_polticty<<'\t'<<m_Administration->m_next->
m_educationalbackground<<'\t'<<m_Administration->m_next->m_holdaposttieme<<'\t'<<
m_Administration->m_next->m_comeuniversitytime<<endl;
}
else
for(Person *p=m_Administration->m_next;p->m_next!=0;p=p->m_next)
{
if(p->m_next->m_no==No)
{
cout<<"编号为:"<<p->m_next->m_no<<"行政人员的信息如下:"<<endl;
cout<<p->m_next->m_no<<'\t'<<p->m_next->m_name<<'\t'<<p->m_next->m_sex<<'\t'
<<p->m_next->m_age<<'\t'<<p->m_next->m_duty<<'\t'<<p->m_next->m_zhicheng
<<'\t'<<p->m_next->m_polticty<<'\t'<<p->m_next->m_educationalbackground<<
'\t'<<p->m_next->m_holdaposttieme<<'\t'<<p->m_next->m_comeuniversitytime
<<endl;
}
}
}
void AdministrationPerson::PrintPerson(void)//显示所有人员信息
{
Person *p;
p=m_Administration->m_next;
while(p!=0)
{
cout<<(*p)<<endl;
p=p->m_next;
}
}
void AdministrationPerson::SavePerson(ostream& out)//人员信息的保存
{
out.seekp(0,ios::beg);
Person *p;
p=m_Administration->m_next;
while(p!=NULL)
{
out<<(*p);
p=p->m_next;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -