高校人员信息管理系统(C++版)

目录

                                 高校人员信息管理系统                                  

一、问题描述

二、功能要求

三、问题的解决方案

四、代码段

1、多文件

2、单文件


                                 高校人员信息管理系统                                  

备注:大一(下)C++语言课程设计

一、问题描述

某高校有四类员工:教师、实验员、行政人员,教师兼行政人员

共有的信息包括:编号、姓名、性别、年龄等

其中,教师还包含的信息有:所在系部、专业、职称;

实验员还包含的信息有:所在实验室、职务;

行政人员还包含的信息有:政治面貌、职称等

二、功能要求

(1)添加功能:程序能够任意添加上述四类人员的记录,提供选择界面供用户选择所要添加的人员类别,要求员工的编号唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据编号、姓名等信息对已添加的记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号或姓名,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能:能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。

(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

三、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤: 

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;

(2)分析系统中的各个实体及它们之间的关系; 

(3)根据问题描述,设计系统的类层次; 

(4)完成类层次中各个类的描述; 

(5)完成类中各个成员函数的定义; 

(6)完成系统的应用模块; 

(7)功能调试; 

(8)完成系统总结报告。 

四、代码段

1、多文件

2、单文件

#include<iostream>
#include<string>
#include<string.h>
#define n 9
#define N 99
using namespace std;

//

//基类staff(员工) 
class staff
{
public:
    
protected:
	int number;           //编号 
	char name[n];         //姓名 
	char gender[n];       //性别 
	int age;              //年龄 
};

///

//派生类teacher(教师) 
class teacher:virtual public staff
{
public:
	void input(int n_number);
	void output();
	friend class tea_manager;
protected:
	char department[n];     //系部 
	char major[n];          //专业 
	char title_1[n];        //职称 
};

///

//派生类teacher(教师)的输入函数input的实现 
void teacher::input(int n_number)
{
	number=n_number;                                                                                     //编号需要检测唯一性 
	cout<<"输入姓名:";cin>>name;
	cout<<"输入性别:";cin>>gender;
	cout<<"输入年龄:";cin>>age;
	cout<<"输入系部:";cin>>department;
	cout<<"输入专业:";cin>>major;
	cout<<"输入职称:";cin>>title_1;
}

//派生类teacher(教师)的输出函数output的实现 
void teacher::output()
{
	cout<<"编号:"<<number<<"  姓名:"<<name<<"  性别:"<<gender<<"  年龄:"<<age<<"  系部:"<<department<<"  专业:"<<major<<"  职称:"<<title_1<<endl; 
}

///

//教师的管理类tea_manager,综合各项功能 
class tea_manager
{
public:
    int add();
	int search();
	void show();
	void edit();
	void dele();	
	void statis();	
	void save();
	void init();
private:
	FILE *fp1;
	int count1=0;
	teacher T[N];
};

///

//教师的管理类tea_manager各项功能的实现 
int tea_manager::add()                                                                                   //添加add()函数 
{
	int i,nu;
	teacher t;
	if(count1==N)
	{
		cout<<"教师信息库已满,无法添加,请删除部分教师信息后重试!"<<endl;
		return 0; 
	}
	
	cout<<"请输入编号:" <<endl;cin>>nu;
	for(i=0;i<count1;i++)
	{
		if(T[i].number==nu)
		   {
		   	  cout<<"您输入的编号与教师信息库内的编号存在重复,添加失败!"<<endl;
		   	  return 0; 
		   } 
	}
	
	t.input(nu);    T[count1]=t;    count1++; 
	cout<<"添加成功!"<<endl; 
	return 1;
}

int tea_manager::search()                                                                               //查询search()函数 
{
	int choice;
	cout<<"请选择查找方式:"<<endl;
	cout<<"1:按编号查找"<<endl;
	cout<<"2:按姓名查找"<<endl;
	cin>>choice;
	
	switch(choice)
		{
			case 1: 
			        {
			        	int i,nu;
			        	
			            cout<<"请输入编号:" <<endl;cin>>nu;
			            for(i=0;i<count1;i++)
			               {
			               	  if(T[i].number==nu) break;
						   }
						   
						if(i==count1) cout<<"该编号不存在!"<<endl;
						else T[i].output();
						
						return 1;
					}
			         
			case 2:  	
			        {
			        	int i;  string na;
			        	
			            cout<<"请输入姓名:" <<endl;cin>>na;
			            for(i=0;i<count1;i++)
			               {
			               	  if(T[i].name==na) break;
						   }
						   
						if(i==count1) cout<<"该姓名不存在!"<<endl;
						else T[i].output();
						
						return 1;
					}
	    } 
}

void tea_manager::show()                                                                                //显示show()函数
{
	int i;
	
	if(count1==0) cout<<"教师信息库为空!"<<endl;
	else
	   {
	   	   for(i=0;i<count1;i++)
	   	   {
	   	   	  T[i].output();
		   }
	   }
}

void tea_manager::edit()                                                                                //编辑edit()函数
{
	int i,nu;
	teacher t;
	
	cout<<"请输入需要编辑的教师的编号:"<<endl;cin>>nu;
	for(i=0;i<count1;i++)
	{
	  if(T[i].number==nu)
	    break;
	}
	if(i==count1)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		cout<<"输入修改后的信息,编号不能改:"<<endl;
		t.input(nu);
		T[i]=t;
		cout<<"编辑成功!"<<endl; 
	} 
}

void tea_manager::dele()                                                                                 //删除dele()函数
{
	int i,nu;
	
	cout<<"请输入需要删除的教师的编号:"<<endl;cin>>nu;
	for(i=0;i<count1;i++)
	{
	  if(T[i].number==nu)
	    break;
	}
	if(i==count1)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		for(;i<count1-1;i++)
		   {
		   	  T[i]=T[i+1];
		   }
		count1--;
		cout<<"删除成功!"<<endl; 
	} 
}

void tea_manager::statis()                                                                              //统计statis()函数 
{
	int choice;
	
	cout<<"请选择统计方式:"<<endl;
	cout<<"1、按年龄统计"<<endl;
	cout<<"2、统计总人数以及男性和女性人数" <<endl;
	
	cin>>choice;
	switch(choice)
	{
		case 1:
			{
				int i,a,num=0;
				
				cout<<"请输入您需要统计的教师的年龄:"<<endl;  cin>>a;
				for(i=0;i<count1;i++)
				{
				    if(T[i].age==a)
				       num++;
				}
				cout<<a<<"岁的教师人数为:"<<num<<"人"<<endl;
				
				break;
			}
		case 2:
			{
				int i,m_num=0,f_num=0;
				
				cout<<"教师总人数为:"<<count1<<"人"<<endl;
				for(i=0;i<count1;i++)
				{
					if(strcmp(T[i].gender,"男")==0)
					   m_num++;
					else
					   f_num++;
				}
				cout<<"教师男性人数为:"<<m_num<<"人"<<endl;
				cout<<"教师女性人数为:"<<f_num<<"人"<<endl;
				
				break;
			}
	}
}

void tea_manager::save()                                                                                //保存save()函数 
{
	int i;
	//文件一  teacherfile.txt 
    fp1 = fopen("teacherfile.txt", "w");
	for(i=0;i<count1;i++)
		fprintf(fp1,"%d %s %s %d %s %s %s",T[count1].number,T[count1].name,T[count1].gender,T[count1].age,T[count1].department,T[count1].major,T[count1].title_1); 
	fclose(fp1);
} 

void tea_manager::init()                                                                                //读取init()函数 
{
	//文件一  teacherfile.txt 
    if((fp1 = fopen("teacherfile.txt", "r")) == NULL)
       cout << "不能打开文件teacherfile.txt" << endl; 
    else
	{
	  while(!feof(fp1))
	     {
		   fscanf(fp1,"%d %s %s %d %s %s %s",&T[count1].number,T[count1].name,T[count1].gender,&T[count1].age,T[count1].department,T[count1].major,T[count1].title_1);
		   count1++;
	     }
	}
	fclose(fp1);
}

///

void tea_mune(tea_manager tm)
{
	int a=99;
	tm.init();
	
	do
	{
		cout<<endl<<endl;
		cout<<"教师信息管理子系统"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		cout<<"*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!                  *"<<endl; 
		cout<<"*请输入您的选择:                                                                                          *"<<endl;
		cout<<"*1:添加                                                                                                   *"<<endl;
		cout<<"*2;查询                                                                                                   *"<<endl;
		cout<<"*3:显示                                                                                                   *"<<endl;
		cout<<"*4:编辑                                                                                                   *"<<endl;
		cout<<"*5:删除                                                                                                   *"<<endl;
		cout<<"*6:统计                                                                                                   *"<<endl;
		cout<<"*7;保存                                                                                                   *"<<endl;
		cout<<"*0:退出子系统                                                                                             *"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		
		cin>>a; 
		switch(a)
		{
			case 1:tm.add();break;
			case 2:tm.search();break;
			case 3:tm.show();break;
			case 4:tm.edit();break;
			case 5:tm.dele();break;
			case 6:tm.statis();break;
			case 7:tm.save();break;
			case 0:break;
			default:cout<<"选择错误,请您重新选择!"<<endl; 
		}
	}
	while(a!=0);
}

/

//派生类lab_technician(实验员) 
class lab_technician:virtual public staff
{
public:
	void input(int n_number);
	void output();
	friend class lab_tech_manager;
protected:
	char lab[n];        //实验室 
	char job[n];        //职务 
};



//派生类lab_technician(实验员)的输入函数input的实现 
void lab_technician::input(int n_number)
{
	number=n_number;                                                                                     //编号需要检测唯一性 
	cout<<"输入姓名:";cin>>name;
	cout<<"输入性别:";cin>>gender;
	cout<<"输入年龄:";cin>>age;
	cout<<"输入实验室:";cin>>lab;
	cout<<"输入职务:";cin>>job;
}

//派生类lab_technician(实验员)的输出函数output的实现 
void lab_technician::output()
{
	cout<<"编号:"<<number<<"  姓名:"<<name<<"  性别:"<<gender<<"  年龄:"<<age<<"  实验室:"<<lab<<"  职务:"<<job<<endl; 
}



//实验员的管理类lab_tech_manager,综合各项功能 
class lab_tech_manager
{
public:
    int add();
	int search();
	void show();
	void edit();
	void dele();	
	void statis();	
	void save();
	void init();
private:
	FILE *fp2;
	int count2=0;
	lab_technician LT[N];
};

/

//实验员的管理类lab_tech_manager各项功能的实现 
int lab_tech_manager::add()                                                                                   //添加add()函数 
{
	int i,nu;
	lab_technician lt;
	if(count2==N)
	{
		cout<<"实验员信息库已满,无法添加,请删除部分实验员信息后重试!"<<endl;
		return 0; 
	}
	
	cout<<"请输入编号:" <<endl;cin>>nu;
	for(i=0;i<count2;i++)
	{
		if(LT[i].number==nu)
		   {
		   	  cout<<"您输入的编号与实验员信息库内的编号存在重复,添加失败!"<<endl;
		   	  return 0; 
		   } 
	}
	
	lt.input(nu);    LT[count2]=lt;    count2++; 
	cout<<"添加成功!"<<endl; 
	return 1;
}

int lab_tech_manager::search()                                                                               //查询search()函数 
{
	int choice;
	cout<<"请选择查找方式:"<<endl;
	cout<<"1:按编号查找"<<endl;
	cout<<"2:按姓名查找"<<endl;
	cin>>choice;
	
	switch(choice)
		{
			case 1: 
			        {
			        	int i,nu;
			        	
			            cout<<"请输入编号:" <<endl;cin>>nu;
			            for(i=0;i<count2;i++)
			               {
			               	  if(LT[i].number==nu) break;
						   }
						   
						if(i==count2) cout<<"该编号不存在!"<<endl;
						else LT[i].output();
						
						return 1;
					}
			         
			case 2:  	
			        {
			        	int i;  string na;
			        	
			            cout<<"请输入姓名:" <<endl;cin>>na;
			            for(i=0;i<count2;i++)
			               {
			               	  if(LT[i].name==na) break;
						   }
						   
						if(i==count2) cout<<"该姓名不存在!"<<endl;
						else LT[i].output();
						
						return 1;
					}
	    } 
}

void lab_tech_manager::show()                                                                                //显示show()函数
{
	int i;
	
	if(count2==0) cout<<"实验员信息库为空!"<<endl;
	else
	   {
	   	   for(i=0;i<count2;i++)
	   	   {
	   	   	  LT[i].output();
		   }
	   }
}

void lab_tech_manager::edit()                                                                                //编辑edit()函数
{
	int i,nu;
	lab_technician lt;
	
	cout<<"请输入需要编辑的实验员的编号:"<<endl;cin>>nu;
	for(i=0;i<count2;i++)
	{
	  if(LT[i].number==nu)
	    break;
	}
	if(i==count2)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		cout<<"输入修改后的信息,编号不能改:"<<endl;
		lt.input(nu);
		LT[i]=lt;
		cout<<"编辑成功!"<<endl; 
	} 
}

void lab_tech_manager::dele()                                                                                 //删除dele()函数
{
	int i,nu;
	
	cout<<"请输入需要删除的实验员的编号:"<<endl;cin>>nu;
	for(i=0;i<count2;i++)
	{
	  if(LT[i].number==nu)
	    break;
	}
	if(i==count2)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		for(;i<count2-1;i++)
		   {
		   	  LT[i]=LT[i+1];
		   }
		count2--;
		cout<<"删除成功!"<<endl; 
	} 
}

void lab_tech_manager::statis()                                                                              //统计statis()函数 
{
	int choice;
	
	cout<<"请选择统计方式:"<<endl;
	cout<<"1、按年龄统计"<<endl;
	cout<<"2、统计总人数以及男性和女性人数" <<endl;
	
	cin>>choice;
	switch(choice)
	{
		case 1:
			{
				int i,a,num=0;
				
				cout<<"请输入您需要统计的实验员的年龄:"<<endl;  cin>>a;
				for(i=0;i<count2;i++)
				{
				    if(LT[i].age==a)
				       num++;
				}
				cout<<a<<"岁的实验员人数为:"<<num<<"人"<<endl;
				
				break;
			}
		case 2:
			{
				int i,m_num=0,f_num=0;
				
				cout<<"实验员总人数为:"<<count2<<"人"<<endl;
				for(i=0;i<count2;i++)
				{
					if(strcmp(LT[i].gender,"男")==0)
					   m_num++;
					else
					   f_num++;
				}
				cout<<"实验员男性人数为:"<<m_num<<"人"<<endl;
				cout<<"实验员女性人数为:"<<f_num<<"人"<<endl;
				
				break;
			}
	}
}

void lab_tech_manager::save()                                                                                //保存save()函数 
{
	int i;
	//文件二  lab_technicianfile.txt
    fp2 = fopen("lab_technicianfile.txt", "w");
	for(i=0;i<count2;i++)
		fprintf(fp2,"%d %s %s %d %s %s",LT[count2].number,LT[count2].name,LT[count2].gender,LT[count2].age,LT[count2].lab,LT[count2].job);
	fclose(fp2);
}

void lab_tech_manager::init()                                                                                //读取init()函数
{
	//文件二  lab_technicianfile.txt
	if((fp2= fopen("lab_technicianfile.txt", "r")) == NULL)
        cout << "不能打开文件lab_technicianfile.txt" << endl; 
    else
	{
	  while(!feof(fp2))
	     {
		   fscanf(fp2,"%d %s %s %d %s %s",&LT[count2].number,LT[count2].name,LT[count2].gender,&LT[count2].age,LT[count2].lab,LT[count2].job);
		   count2++;
	     }
	}
	fclose(fp2);	
} 

/

void lab_tech_mune(lab_tech_manager ltm)
{
	int a=99;
	ltm.init();
	
	do
	{
		cout<<endl<<endl;
		cout<<"实验员信息管理子系统"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		cout<<"*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!                  *"<<endl; 
		cout<<"*请输入您的选择:                                                                                          *"<<endl;
		cout<<"*1:添加                                                                                                   *"<<endl;
		cout<<"*2;查询                                                                                                   *"<<endl;
		cout<<"*3:显示                                                                                                   *"<<endl;
		cout<<"*4:编辑                                                                                                   *"<<endl;
		cout<<"*5:删除                                                                                                   *"<<endl;
		cout<<"*6:统计                                                                                                   *"<<endl;
		cout<<"*7;保存                                                                                                   *"<<endl;
		cout<<"*0:退出子系统                                                                                             *"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		
		cin>>a; 
		switch(a)
		{
			case 1:ltm.add();break;
			case 2:ltm.search();break;
			case 3:ltm.show();break;
			case 4:ltm.edit();break;
			case 5:ltm.dele();break;
			case 6:ltm.statis();break;
			case 7:ltm.save();break;
			case 0:break;
			default:cout<<"选择错误,请您重新选择!"<<endl; 
		}
	}
	while(a!=0);
}

/

//派生类admini_staff(行政人员) 
class admini_staff:virtual public staff
{
public:
	void input(int n_number);
	void output();
	friend class admi_manager;
protected:
	char poli_status[n];    //政治面貌 
	char title_2[n];        //职称 
};

///

//派生类admini_staff(行政人员)的输入函数input的实现 
void admini_staff::input(int n_number)
{
	number=n_number;                                                                                     //编号需要检测唯一性 
	cout<<"输入姓名:";cin>>name;
	cout<<"输入性别:";cin>>gender;
	cout<<"输入年龄:";cin>>age;
	cout<<"输入政治面貌:";cin>>poli_status;
	cout<<"输入职称:";cin>>title_2;
}

//派生类admini_staff(行政人员)的输出函数output的实现 
void admini_staff::output()
{
	cout<<"编号:"<<number<<"  姓名:"<<name<<"  性别:"<<gender<<"  年龄:"<<age<<"  政治面貌:"<<poli_status<<"  职称:"<<title_2<<endl; 
}

//

//行政人员的管理类admi_manager,综合各项功能 
class admi_manager
{
public:
    int add();
	int search();
	void show();
	void edit();
	void dele();	
	void statis();	
	void save();
	void init();
private:
	FILE *fp3;
	int count3=0;
	admini_staff AS[N];
};

//

//行政人员的管理类admi_manager各项功能的实现 
int admi_manager::add()                                                                                   //添加add()函数 
{
	int i,nu;
	admini_staff as;
	if(count3==N)
	{
		cout<<"行政人员信息库已满,无法添加,请删除部分行政人员信息后重试!"<<endl;
		return 0; 
	}
	
	cout<<"请输入编号:" <<endl;cin>>nu;
	for(i=0;i<count3;i++)
	{
		if(AS[i].number==nu)
		   {
		   	  cout<<"您输入的编号与行政人员信息库内的编号存在重复,添加失败!"<<endl;
		   	  return 0; 
		   } 
	}
	
	as.input(nu);    AS[count3]=as;    count3++; 
	cout<<"添加成功!"<<endl; 
	return 1;
}

int admi_manager::search()                                                                               //查询search()函数 
{
	int choice;
	cout<<"请选择查找方式:"<<endl;
	cout<<"1:按编号查找"<<endl;
	cout<<"2:按姓名查找"<<endl;
	cin>>choice;
	
	switch(choice)
		{
			case 1: 
			        {
			        	int i,nu;
			        	
			            cout<<"请输入编号:" <<endl;cin>>nu;
			            for(i=0;i<count3;i++)
			               {
			               	  if(AS[i].number==nu) break;
						   }
						   
						if(i==count3) cout<<"该编号不存在!"<<endl;
						else AS[i].output();
						
						return 1;
					}
			         
			case 2:  	
			        {
			        	int i;  string na;
			        	
			            cout<<"请输入姓名:" <<endl;cin>>na;
			            for(i=0;i<count3;i++)
			               {
			               	  if(AS[i].name==na) break;
						   }
						   
						if(i==count3) cout<<"该姓名不存在!"<<endl;
						else AS[i].output();
						
						return 1;
					}
	    } 
}

void admi_manager::show()                                                                                //显示show()函数
{
	int i;
	
	if(count3==0) cout<<"行政人员信息库为空!"<<endl;
	else
	   {
	   	   for(i=0;i<count3;i++)
	   	   {
	   	   	  AS[i].output();
		   }
	   }
}

void admi_manager::edit()                                                                                //编辑edit()函数
{
	int i,nu;
	admini_staff as;
	
	cout<<"请输入需要编辑的行政人员的编号:"<<endl;cin>>nu;
	for(i=0;i<count3;i++)
	{
	  if(AS[i].number==nu)
	    break;
	}
	if(i==count3)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		cout<<"输入修改后的信息,编号不能改:"<<endl;
		as.input(nu);
		AS[i]=as;
		cout<<"编辑成功!"<<endl; 
	} 
}

void admi_manager::dele()                                                                                 //删除dele()函数
{
	int i,nu;
	
	cout<<"请输入需要删除的行政人员的编号:"<<endl;cin>>nu;
	for(i=0;i<count3;i++)
	{
	  if(AS[i].number==nu)
	    break;
	}
	if(i==count3)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		for(;i<count3-1;i++)
		   {
		   	  AS[i]=AS[i+1];
		   }
		count3--;
		cout<<"删除成功!"<<endl; 
	} 
}

void admi_manager::statis()                                                                              //统计statis()函数 
{
	int choice;
	
	cout<<"请选择统计方式:"<<endl;
	cout<<"1、按年龄统计"<<endl;
	cout<<"2、统计总人数以及男性和女性人数" <<endl;
	
	cin>>choice;
	switch(choice)
	{
		case 1:
			{
				int i,a,num=0;
				
				cout<<"请输入您需要统计的行政人员的年龄:"<<endl;  cin>>a;
				for(i=0;i<count3;i++)
				{
				    if(AS[i].age==a)
				       num++;
				}
				cout<<a<<"岁的行政人员人数为:"<<num<<"人"<<endl;
				
				break;
			}
		case 2:
			{
				int i,m_num=0,f_num=0;
				
				cout<<"行政人员总人数为:"<<count3<<"人"<<endl;
				for(i=0;i<count3;i++)
				{
					if(strcmp(AS[i].gender,"男")==0)
					   m_num++;
					else
					   f_num++;
				}
				cout<<"行政人员男性人数为:"<<m_num<<"人"<<endl;
				cout<<"行政人员女性人数为:"<<f_num<<"人"<<endl;
				
				break;
			}
	}
}

void admi_manager::save()                                                                                //保存save()函数 
{
	int i;
	//文件三  admini_stafffile.txt
    fp3 = fopen("admini_stafffile.txt", "w");
	for(i=0;i<count3;i++)
		fprintf(fp3,"%d %s %s %d %s %s",AS[count3].number,AS[count3].name,AS[count3].gender,AS[count3].age,AS[count3].poli_status,AS[count3].title_2);
	fclose(fp3);
}

void admi_manager::init()                                                                                //读取init()函数
{
	//文件三   admini_stafffile.txt
	if((fp3 = fopen("admini_stafffile.txt", "r")) == NULL)
       cout << "不能打开文件admini_stafffile.txt" << endl; 
    else
	{
	  while(!feof(fp3))
	     {
		   fscanf(fp3,"%d %s %s %d %s %s",&AS[count3].number,AS[count3].name,AS[count3].gender,&AS[count3].age,AS[count3].poli_status,AS[count3].title_2);
		   count3++;
	     }
	}
	fclose(fp3);
}

///

void admi_mune(admi_manager am)
{
	int a=99;
	am.init();
	
	do
	{
		cout<<endl<<endl;
		cout<<"行政人员信息管理子系统"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		cout<<"*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!                  *"<<endl; 
		cout<<"*请输入您的选择:                                                                                          *"<<endl;
		cout<<"*1:添加                                                                                                   *"<<endl;
		cout<<"*2;查询                                                                                                   *"<<endl;
		cout<<"*3:显示                                                                                                   *"<<endl;
		cout<<"*4:编辑                                                                                                   *"<<endl;
		cout<<"*5:删除                                                                                                   *"<<endl;
		cout<<"*6:统计                                                                                                   *"<<endl;
		cout<<"*7;保存                                                                                                   *"<<endl;
		cout<<"*0:退出子系统                                                                                             *"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		
		cin>>a; 
		switch(a)
		{
			case 1:am.add();break;
			case 2:am.search();break;
			case 3:am.show();break;
			case 4:am.edit();break;
			case 5:am.dele();break;
			case 6:am.statis();break;
			case 7:am.save();break;
			case 0:break;
			default:cout<<"选择错误,请您重新选择!"<<endl; 
		}
	}
	while(a!=0);
}

//

//派生类teach_admini_staff(教师兼行政人员) 
class teach_admini_staff:public teacher,public admini_staff
{
public:
	void input(int n_number);
	void output();
	friend class teach_admi_manager;
protected:
	
};

/

//派生类teach_admini_staff(教师兼行政人员)的输入函数input的实现 
void teach_admini_staff::input(int n_number)
{
	number=n_number;                                                                                     //编号需要检测唯一性 
	cout<<"输入姓名:";cin>>name;
	cout<<"输入性别:";cin>>gender;
	cout<<"输入年龄:";cin>>age;
	cout<<"输入系部:";cin>>department;
	cout<<"输入专业:";cin>>major;
	cout<<"输入教师职称:";cin>>title_1;
	cout<<"输入政治面貌:";cin>>poli_status;
	cout<<"输入行政人员职称:";cin>>title_2;
}

//派生类teach_admini_staff(教师兼行政人员)的输出函数output的实现 
void teach_admini_staff::output()
{
	cout<<"编号:"<<number<<"  姓名:"<<name<<"  性别:"<<gender<<"  年龄:"<<age<<"  系部:"<<department<<"  专业:"<<major<<"  教师职称:"<<title_1<<"  政治面貌:"<<poli_status<<"  行政人员职称:"<<title_2<<endl; 
}

//

//教师兼行政人员的管理类teach_admi_manager,综合各项功能 
class teach_admi_manager
{
public:
    int add();
	int search();
	void show();
	void edit();
	void dele();	
	void statis();	
	void save();
	void init();
private:
	FILE *fp4;
	int count4=0;
	teach_admini_staff TAS[N];
};



//教师兼行政人员的管理类teach_admi_manager各项功能的实现 
int teach_admi_manager::add()                                                                                   //添加add()函数 
{
	int i,nu;
	teach_admini_staff tas;
	if(count4==N)
	{
		cout<<"教师兼行政人员信息库已满,无法添加,请删除部分教师兼行政人员信息后重试!"<<endl;
		return 0; 
	}
	
	cout<<"请输入编号:" <<endl;cin>>nu;
	for(i=0;i<count4;i++)
	{
		if(TAS[i].number==nu)
		   {
		   	  cout<<"您输入的编号与教师兼行政人员信息库内的编号存在重复,添加失败!"<<endl;
		   	  return 0; 
		   } 
	}
	
	tas.input(nu);    TAS[count4]=tas;    count4++; 
	cout<<"添加成功!"<<endl; 
	return 1;
}

int teach_admi_manager::search()                                                                               //查询search()函数 
{
	int choice;
	cout<<"请选择查找方式:"<<endl;
	cout<<"1:按编号查找"<<endl;
	cout<<"2:按姓名查找"<<endl;
	cin>>choice;
	
	switch(choice)
		{
			case 1: 
			        {
			        	int i,nu;
			        	
			            cout<<"请输入编号:" <<endl;cin>>nu;
			            for(i=0;i<count4;i++)
			               {
			               	  if(TAS[i].number==nu) break;
						   }
						   
						if(i==count4) cout<<"该编号不存在!"<<endl;
						else TAS[i].output();
						
						return 1;
					}
			         
			case 2:  	
			        {
			        	int i;  string na;
			        	
			            cout<<"请输入姓名:" <<endl;cin>>na;
			            for(i=0;i<count4;i++)
			               {
			               	  if(TAS[i].name==na) break;
						   }
						   
						if(i==count4) cout<<"该姓名不存在!"<<endl;
						else TAS[i].output();
						
						return 1;
					}
	    } 
}

void teach_admi_manager::show()                                                                                //显示show()函数
{
	int i;
	
	if(count4==0) cout<<"教师兼行政人员信息库为空!"<<endl;
	else
	   {
	   	   for(i=0;i<count4;i++)
	   	   {
	   	   	  TAS[i].output();
		   }
	   }
}

void teach_admi_manager::edit()                                                                                //编辑edit()函数
{
	int i,nu;
	teach_admini_staff tas;
	
	cout<<"请输入需要编辑的教师兼行政人员的编号:"<<endl;cin>>nu;
	for(i=0;i<count4;i++)
	{
	  if(TAS[i].number==nu)
	    break;
	}
	if(i==count4)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		cout<<"输入修改后的信息,编号不能改:"<<endl;
		tas.input(nu);
		TAS[i]=tas;
		cout<<"编辑成功!"<<endl; 
	} 
}

void teach_admi_manager::dele()                                                                                 //删除dele()函数
{
	int i,nu;
	
	cout<<"请输入需要删除的教师兼行政人员的编号:"<<endl;cin>>nu;
	for(i=0;i<count4;i++)
	{
	  if(TAS[i].number==nu)
	    break;
	}
	if(i==count4)
	   cout<<"该编号不存在!"<<endl;
    else
	{
		for(;i<count4-1;i++)
		   {
		   	  TAS[i]=TAS[i+1];
		   }
		count4--;
		cout<<"删除成功!"<<endl; 
	} 
}

void teach_admi_manager::statis()                                                                              //统计statis()函数 
{
	int choice;
	
	cout<<"请选择统计方式:"<<endl;
	cout<<"1、按年龄统计"<<endl;
	cout<<"2、统计总人数以及男性和女性人数" <<endl;
	
	cin>>choice;
	switch(choice)
	{
		case 1:
			{
				int i,a,num=0;
				
				cout<<"请输入您需要统计的教师兼行政人员的年龄:"<<endl;  cin>>a;
				for(i=0;i<count4;i++)
				{
				    if(TAS[i].age==a)
				       num++;
				}
				cout<<a<<"岁的教师兼行政人员人数为:"<<num<<"人"<<endl;
				
				break;
			}
		case 2:
			{
				int i,m_num=0,f_num=0;
				
				cout<<"教师兼行政人员总人数为:"<<count4<<"人"<<endl;
				for(i=0;i<count4;i++)
				{
					if(strcmp(TAS[i].gender,"男")==0)
					   m_num++;
					else
					   f_num++;
				}
				cout<<"教师兼行政人员男性人数为:"<<m_num<<"人"<<endl;
				cout<<"教师兼行政人员女性人数为:"<<f_num<<"人"<<endl;
				
				break;
			}
	}
}

void teach_admi_manager::save()                                                                                //保存save()函数 
{
	int i;
	//文件四  teach_admini_stafffile.txt
    fp4 = fopen("teach_admini_stafffile.txt", "w");
	for(i=0;i<count4;i++)
		fprintf(fp4,"%d %s %s %d %s %s %s %s %s",TAS[count4].number,TAS[count4].name,TAS[count4].gender,TAS[count4].age,TAS[count4].department,TAS[count4].major,TAS[count4].title_1,TAS[count4].poli_status,TAS[count4].title_2);
	fclose(fp4);
}

void teach_admi_manager::init()                                                                                //读取init()函数
{
	//文件四  teach_admini_stafffile.txt
    if((fp4 = fopen("teach_admini_stafffile.txt", "r")) == NULL)
       cout << "不能打开文件teach_admini_stafffile.txt" << endl; 
    else
	{
	  while(!feof(fp4))
	     {
		   fscanf(fp4,"%d %s %s %d %s %s %s %s %s",&TAS[count4].number,TAS[count4].name,TAS[count4].gender,&TAS[count4].age,TAS[count4].department,TAS[count4].major,TAS[count4].title_1,TAS[count4].poli_status,TAS[count4].title_2);
		   count4++;
	     }
	}
	fclose(fp4);
}

/ 

void teach_admi_mune(teach_admi_manager tam)
{
	int a=99;
	tam.init();
	
	do
	{
		cout<<endl<<endl;
		cout<<"教师兼行政人员信息管理子系统"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		cout<<"*温馨提示:当您使用添加或编辑或删除功能后,记得使用保存功能,以确保相关操作被子系统记录!                  *"<<endl; 
		cout<<"*请输入您的选择:                                                                                          *"<<endl;
		cout<<"*1:添加                                                                                                   *"<<endl;
		cout<<"*2;查询                                                                                                   *"<<endl;
		cout<<"*3:显示                                                                                                   *"<<endl;
		cout<<"*4:编辑                                                                                                   *"<<endl;
		cout<<"*5:删除                                                                                                   *"<<endl;
		cout<<"*6:统计                                                                                                   *"<<endl;
		cout<<"*7;保存                                                                                                   *"<<endl;
		cout<<"*0:退出子系统                                                                                             *"<<endl;
		cout<<"**********************************************************************************************************" <<endl;
		
		cin>>a; 
		switch(a)
		{
			case 1:tam.add();break;
			case 2:tam.search();break;
			case 3:tam.show();break;
			case 4:tam.edit();break;
			case 5:tam.dele();break;
			case 6:tam.statis();break;
			case 7:tam.save();break;
			case 0:break;
			default:cout<<"选择错误,请您重新选择!"<<endl; 
		}
	}
	while(a!=0);
}



//一级菜单函数 
void menu()
{
	cout<<endl<<endl;
	cout<<"高校人员管理系统"<<endl;
	cout<<"**********************************************************************************************************" << endl;
	cout << "*请输入您的选择:                                                                                        *" << endl;
	cout << "*1:教师信息管理                                                                                         *" << endl;
	cout << "*2:实验员信息管理                                                                                       *" << endl;
	cout << "*3:行政人员信息管理                                                                                     *" << endl;
	cout << "*4:教师兼行政人员信息管理                                                                               *" << endl;
	cout << "*0:退出系统                                                                                             *" <<  endl;
    cout<<"**********************************************************************************************************" << endl;
}



//主函数 
int main()
{
	int choice;
	tea_manager TM;
	lab_tech_manager LTM;
	admi_manager AM;
	teach_admi_manager TAM;
	
	while(1)
	{ 
		menu();
		
		cin >> choice;
		switch(choice)
		{
			case 1:tea_mune(TM);break;                   
			case 2:lab_tech_mune(LTM);break;                     
			case 3:admi_mune(AM);break;                     
			case 4:teach_admi_mune(TAM);break;                       
			case 0:cout<<"谢谢使用高校人员管理系统!"<<endl;exit(0);break;                                        //退出系统
			default:cout<<"选择错误,请您重新选择!"<<endl; 
		}
	}

	return 0;
}
  • 14
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1、问题描述 某高校有四类员工教师、实验员、行政人员教师兼行政人员共有的信息包括编号、姓名、性别、年龄等。其中教师还包含的信息有所在系部、专业、职称实验员还包含的信息由所在实验室、职务行政人员还包含的信息有政治面貌、职称等。 2、功能要求 (1)添加功能程序能够任意添加上述四类人员的记录可提供选择界面供用户选择所要添加的人员类别要求员工的编号要唯一如果添加了重复编号的记录时则提示数据添加重复并取消添加。 (2)查询功能可根据编号、姓名等信息对已添加的记录进行查询如果未找到给出相应的提示信息如果找到则显示相应的记录信息。 (3)显示功能可显示当前系统中所有记录每条记录占据一行。 (4)编辑功能可根据查询结果对相应的记录进行修改修改时注意编号的唯一性。 (5)删除功能主要实现对已添加的人员记录进行删除。如果当前系统中没有相应的人员记录则提示“记录为空”并返回操作否则输入要删除的人员的编号或姓名根据所输入的信息删除该人员记录如果没有找到该人员信息则提示相应的记录不存。 (6)统计功能能根据多种参数进行人员的统计。能统计四类人员数量以及总数,统计男、女员工的数量。 (7)保存功能可将当前系统中各类人员记录存入文件中存入方式任意。 (8)读取功能可将保存在文件中的人员信息读入到当前系统中供用户进行使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值