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

📄 cpp1.cpp

📁 这是我自己做的一个c++的项目
💻 CPP
📖 第 1 页 / 共 5 页
字号:
#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 + -