目录

高校人员信息管理系统

一、问题描述

二、功能要求

三、问题的解决方案

四、代码段

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++;elsef_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++;elsef_num++;}cout<<"实验员男性人数为:"<<m_num<<"人"<<endl;cout<<"实验员女性人数为:"<<f_num<<"人"<<endl;break;}}
}void lab_tech_manager::save()                                                                                //保存save()函数
{int i;//文件二  lab_technicianfile.txtfp2 = 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.txtif((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++;elsef_num++;}cout<<"行政人员男性人数为:"<<m_num<<"人"<<endl;cout<<"行政人员女性人数为:"<<f_num<<"人"<<endl;break;}}
}void admi_manager::save()                                                                                //保存save()函数
{int i;//文件三  admini_stafffile.txtfp3 = 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.txtif((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++;elsef_num++;}cout<<"教师兼行政人员男性人数为:"<<m_num<<"人"<<endl;cout<<"教师兼行政人员女性人数为:"<<f_num<<"人"<<endl;break;}}
}void teach_admi_manager::save()                                                                                //保存save()函数
{int i;//文件四  teach_admini_stafffile.txtfp4 = 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.txtif((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;
}

高校人员信息管理系统(C++版)相关推荐

  1. 高校人员信息管理系统(Python版)

    目录 高校人员信息管理系统 一.问题描述 二.功能要求 三.问题的解决方案 四.运行环境说明 五.代码段 1.多文件 (1)员工类(文件1) (2)教师类(文件2) (3)实验员类(文件3) (4)行 ...

  2. java高校人员信息管理系统

    高校人员信息管理系统 1.数据模型 教师.实验员.行政人员.教师兼行政人员 共有属性:编号.姓名.性别.出生年月 教师:所在系部.专业.职称 实验员:所在实验室.职称 行政人员:政治面貌.职务 pac ...

  3. 高校人员信息管理系统(C++课设)

    /* 高校人员信息管理系统 作者:徐世兴 时间:2019年11月1日 *///预定义区 #include<iostream> #include<string> #include ...

  4. c++课设:高校人员信息管理系统 开发一个简易的高校人员信息管理系统,主要针对高校人员的基本信息进行管理。采用对象链表或对象数组存放各个对象,实现新增、修改、删除、查询以及统计等功能。

    通过本次课程设计,深入理解类和对象.继承和派生.重载和多态,熟练掌握面向对象的程序设计思想和方法,能够对现实世界中的实际问题进行分析.设计,并学会熟练运用面向对象的编程方法(OOP)-- C++语言进 ...

  5. 课程设计下:利用C++实现高校人员信息管理系统

    高校人员信息管理系统 需求分析 实现功能如下: 系统环境: 数据结构设计: 界面显示: 代码如下: 下载链接 需求分析 该系统所应包含的信息有以下一些: 人员的基本信息: 编号.姓名.年龄.性别.职称 ...

  6. 高校人员信息管理系统(Java课程设计,带图形界面版)

    题目 1.问题描述 某高校有四类员工:教师.实验员.行政人员,教师兼行政人员:共有的信息包括:编号.姓名.性别.年龄等.其中,教师还包含的信息有:所在系部.专业.职称:实验员还包含的信息由:所在实验室 ...

  7. c语言高校信息查询系统,高校人员信息管理系统c语言.doc

    #include #include #include #include #include using namespace std; class Person //基类 { protected: dou ...

  8. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)

    Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...

  9. 基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA高校科研信息管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. Matplitlib绘图入门1,这一篇就够了
  2. python字典的实现原理_Python字典的实现原理
  3. CSDN移动助手v0.01发布
  4. C语言函数指针的MFC版本Demo
  5. 之江汇空间如何加音乐背景_从脚本到成品,教你如何快速制作出创意又浪漫的婚礼视频...
  6. JPA-CascadeType四个属性的讲解
  7. delphi调用c#写的webservice中文出现乱码的问题
  8. 让乔布斯立足肩上的C语言之父
  9. RuntimeError: Model class cmdb.models.UserInfo doesn't declare an explicit app_label
  10. Defination list(定义列表)
  11. word文档打印 自动编码_办公室文件打印有哪些技巧 办公室文件打印技巧介绍【图文】...
  12. 一篇搞懂mysql中的索引(大白话版)
  13. 如何给MindSpore添加一个新的硬件后端?快速构建测试环境!
  14. python十进制转换_Python方法如何将普通IP转换为十进制IP
  15. System.map文件的作用解析
  16. MySQL-快速入门(17)MySQL Proxy,读写分离,负载均衡
  17. Java实现俄罗斯方块小游戏。(附完整源代码)
  18. 计算机网络课程设计——校园网的规划与设计
  19. 什么是车辆识别代码(VIN)
  20. 单片机外围电路设计之一:电阻

热门文章

  1. 传奇私服架设(温故2002,自己制作传奇私服服务器)
  2. 运用计算机辅助设计的药物实例,计算机辅助设计在药物研发中的应用现状探究...
  3. 如何将PPT转成PDF格式?分享两种简单好用的转换方法
  4. 真是没想到 Springboot + Flowable 开发工作流会这么简单
  5. 【秒懂音视频开发】15_AAC编码实战
  6. 电脑无法识别u盘怎么办
  7. java poi 实现生成ppt
  8. 乐理基础---学习总结
  9. 汽车网络和控制单元的安全威胁研究
  10. 离散行业和流程行业的区别