头文件

#ifndef _HEADC_H
#define _HEADC_H
#include<iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
/*-------------------------------------共 有 类-------------------------------------*/
class CCommon//公有类
{
protected:
int number;//编号
string name;//姓名
string sex;//性别
int age;//年龄
};
/*------------------------教 师 类--------------------------------------*/
class Cteacher:
public CCommon//教师类
{
protected:
string department;//所在系部
string profession;//专业  string position;//职称
public:
void set(int _number,string _name,string _sex,int _age,string _department,string
_profession,string _position)
{
number = _number;
name = _name;
sex = _sex;
age = _age;
department = _department;
profession = _profession;
position = _position;
}//输入教师数据
void output();
~Cteacher()
{
}//析构函数
friend int find_nu(Cteacher teacher[], int _nu, int &t);
friend int find_na(Cteacher teacher[], string _na, int &t);
friend void add(Cteacher teacher[], int _fa);
friend void dele(Cteacher teacher[], int _fa);
friend void closefile(Cteacher teacher[] ,int &t);
friend void _statistics(Cteacher teacher[], int &t);
};
void teacher_manage();
/*----------------------------实 验 员 类-------------------------------------------*/
class Cassistant:public CCommon//实验员类
{
protected:
string laboratory;//所在实验室
string position;//职称
public:
void set(int _number,string _name,string _sex,int _age,string _laboratory,string
_position)
{
number = _number;
name = _name;
sex = _sex;
age = _age;
laboratory = _laboratory;
position = _position;
}//输入实验员数据
void output();
~Cassistant()
{
}//析构函数
friend int find_nu(Cassistant assistant[], int _nu, int &t);
friend int find_na(Cassistant assistant[], string _na, int &t);
friend void add(Cassistant assistant[], int _fa);
friend void dele(Cassistant assistant[], int _fa);  friend void closefile(Cassistant assistant[] ,int &t);
friend void _statistics(Cassistant assistant[], int &t);
};
void assistant_manage();
/*----------------------------行 政 人 员 类--------------------------------------------*/
class Cexecution:public CCommon//行政人员类
{
protected:
string politics;//政治面貌
string position;//职称
public:
void set(int _number,string _name,string _sex,int _age,string _politics,string
_position)
{
number = _number;
name = _name;
sex = _sex;
age = _age;
politics = _politics;
position = _position;
}//输入行政人员数据
void output();
~Cexecution()
{
}//析构函数
friend int find_nu(Cexecution execution[], int _nu, int &t);
friend int find_na(Cexecution execution[], string _na, int &t);
friend void add(Cexecution execution[], int _fa);
friend void dele(Cexecution execution[], int _fa);
friend void closefile(Cexecution execution[] ,int &t);
friend void _statistics(Cexecution execution[], int &t);
};
void execution_manage();
/*---------------------------行 政 人 员 兼 教 师 类-------------------------------------*/
class Ctea_exe:public CCommon//行政人员兼教师类
{
protected:
string politics;//政治面貌
string department;//所在系部
string profession;//专业
string position;//职称
public:
void set(int _number,string _name,string _sex,int _age,string _politics,string
_department,string _profession,string _position)
{
number = _number;
name = _name;
sex = _sex;
age = _age;
politics = _politics;
department = _department;  profession = _profession;
position = _position;
}//输入行政人员兼教师数据
void output();
~Ctea_exe()
{
}//析构函数
friend int find_nu(Ctea_exe tea_exe[], int _nu, int &t);
friend int find_na(Ctea_exe tea_exe[], string _na, int &t);
friend void add(Ctea_exe tea_exe[], int _fa);
friend void dele(Ctea_exe tea_exe[], int _fa);
friend void closefile(Ctea_exe tea_exe[] ,int &t);
friend void _statistics(Ctea_exe tea_exe[], int &t);
};
void tea_exe_manage();
/*---------------------------------统 计 总 人 数---------------------------------------*/
void statistics_all();//数据统计数
void statistics_teacher();
void statistics_assistant();
void statistics_execution();
void statistics_tea_exe();
void order();
const int Max = 100;//各人员总人数最大值
#endif 

函数实现

#include "HEAD.h"
/*----------------------------教师类中的各个函数操作-----------------------*/
void Cteacher::output()//教师读出数据内容
{ cout<<number<<"\t"<<name<<"\t"; cout<<sex<<"\t"<<age<<"\t"; cout<<department<<"\t"<<profession<<"\t";  cout<<position<<endl;
}
void teacher_muen()//教师主菜单
{ cout<<endl; cout<<"----------欢迎进入教师信息管理系统----------"<<endl; cout<<"     1---添加信息,  2---查询信息"<<endl; cout<<"     3---显示信息,  4---编辑信息"<<endl; cout<<"     5---删除信息,  6---统计信息"<<endl; cout<<"     7---退出"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"请输入您的选择--->:";
}
void _add(Cteacher *teacher, int &t)//1教师添加信息
{ int number,age; string name,sex,department,profession,position; cout<<"添加信息->请输入:"<<endl; while(1) { number=t+1; cout<<"姓名(输入0结束输入)"; cin>>name; if("0" == name) break;  cout<<"性别(M--man,W--woman)"; while(1) { cin>>sex;  if(sex == "M"||sex == "W") { cout<<"年龄"; cin>>age; cout<<"系部"; cin>>department; cout<<"专业"; cin>>profession; cout<<"职称"; cin>>position;         teacher[t].set(number,name,sex,age,department,profession,position); ++t; break; } else cout<<"输入性别错误,请重新输入!"<<endl; }    }
}
void _query(Cteacher teacher[], int &t)//2查询信息
{ int choice; int flag,nu; string na; cout<<"1---编号,2---姓名"<<endl; while(1) {  cin>>flag; if(1 == flag||2 == flag) break; else  cout<<"输入错误请重新输入!"<<endl; } switch(flag) { case 1://编号查询 { do { cout<<"请输入编号!"<<endl; cin>>nu; if(find_nu(teacher,nu,t) < t) teacher[find_nu(teacher,nu,t)].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break; case 2://姓名查询 { do { cout<<"请输入姓名!"<<endl; cin>>na; if(find_na(teacher,na,t)<t) teacher[ find_na(teacher,na,t) ].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break; }
}
int find_nu(Cteacher teacher[], int _nu, int &t)//编号查询方式
{ int i; for(i=0;i<t;i++) if(teacher[i].number==_nu) return i; return t;
}
int find_na(Cteacher teacher[], string _na, int &t)//姓名查询方式
{ int i; for(i=0;i<t;i++) if(teacher[i].name==_na) return i; return t;
}
void _display(Cteacher teacher[], int &t)//3显示功能
{ int i; cout<<endl; cout<<"编号\t姓名\t性别\t年龄\t系部\t专业\t职称"<<endl; for(i=0;i<t;i++) teacher[i].output(); cout<<"--------------------------------------------"<<endl<<endl;
}
void _edit(Cteacher teacher[], int &t)//4编辑数据-
{ int score,fa,choice; while(1) { cout<<"请输入需要编辑的编号:"; cin>>score;  fa = find_nu(teacher,score,t); if(fa<t) { teacher[ fa ].output(); add(teacher,fa); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice; if(choice != 1) break; }
}
void add(Cteacher teacher[], int _fa)//编辑数据方式
{ int number=_fa+1,age; string name,sex,department,profession,position; cout<<"请重新输入:"<<endl<<"姓名,性别,年龄,系部,专业,职称"<<endl; cin>>name; while(1) { cin>>sex; if(sex=="M"||sex=="W") {  cin>>age>>department>>profession>>position; teacher[_fa].set(number,name,sex,age,department,profession,position); break;   } else cout<<"输入性别错误,请重新输入!"<<endl; }
}
void _delete(Cteacher teacher[], int &t)//删除数据
{ int score,de,choice1; while(1) { cout<<"请输入需要删除的编号!"<<endl; cin>>score; de=find_nu(teacher,score,t); if(de<t) { teacher[ de ].output(); dele(teacher,de); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice1; if(choice1 == 2) {     cout<<"已退出!"<<endl; break; } }
}
void dele(Cteacher teacher[], int _fa)//删除数据方式
{ int number,age,qr; string name,sex,department,profession,position; cout<<"确定删除(1是2否):"; cin>>qr; if(qr==1) { cout<<"已删除!"<<endl; number=0; name='0'; sex='0'; age=0; department='0'; profession='0'; position='0'; teacher[_fa].set(number,name,sex,age,department,profession,position); } if(qr == 2) cout<<"未删除!"<<endl;
}
void teacher_put()//退出
{ cout<<"谢谢使用教师系统!"<<endl;
}
int openfile(Cteacher teacher[])//从文件中读入数据
{ int t,number,age; string name,sex,department,profession,position; ifstream fcin; fcin.open("teacher.txt",ios_base::in); if (fcin == NULL) { cout << "文件打开失败请检查目录下是否有文件teacher.txt\n"; return 0; } t = 0; while(fcin >> number>> name>> sex>> age>> department>> profession>> position) { teacher[t].set(number,name,sex,age,department,profession,position); ++t; }  return t; fcin.close();
}
void closefile(Cteacher teacher[], int &t)//向文件中写入数据
{ int i,number,age; string name,sex,department,profession,position; ofstream fout("teacher.txt"); for(i=0;i<t;i++) { number=teacher[i].number; name=teacher[i].name; sex=teacher[i].sex; age=teacher[i].age; department=teacher[i].department; profession=teacher[i].profession; position=teacher[i].position; if(number!=0) fout << number<<"\t"<< name<<"\t"<< sex<<"\t"<< age<<"\t"<<
department<<"\t"<< profession<<"\t"<< position<<endl; } fout.close();
}
void teacher_manage()//教师类总调用函数-
{ Cteacher teacher[Max]; int i,t;  while (1) { t = openfile(teacher);//文件中的行数 teacher_muen(); //打印菜单 cin >> i; switch (i) { case 1: _add(teacher,t);     break;//添加功能 case 2: _query(teacher, t);     break;//查询功能 case 3: _display(teacher, t);   break;//显示功能 case 4: _edit(teacher, t);  break;//编辑功能 case 5: _delete(teacher,t);     break;//删除功能 case 6: _statistics(teacher,t); break;//统计功能 default : teacher_put(); goto loop;//退出功能 } closefile(teacher,t); }
loop: cout<<"--------------------------------------------"<<endl;
}
void _statistics(Cteacher teacher[], int &t)//统计数据
{ int i,boy=0,girl=0,sum=0; for(i=0;i<t;i++) { if(teacher[i].sex == "W") girl++;  if(teacher[i].sex=="M") boy++; } sum = girl+boy; cout<<"教师总共有"<<sum<<endl; cout<<"男有"<<boy<<"人  女有"<<girl<<"人"<<endl;
}
void statistics_teacher()//教师统计函数
{ int t; Cteacher teacher[Max]; t = openfile(teacher); _statistics(teacher,t);
}
/*****************实 验 员*********************/
/*--------------------从 类 中 读 出 数 据 内 容---------------------*/
void Cassistant::output()
{ cout<<number<<"\t"<<name<<"\t"; cout<<sex<<"\t"<<age<<"\t"; cout<<laboratory<<"\t"; cout<<position<<endl;
}//读出数据内容
/*--------------------主 菜 单-----------------------------*/
void assistant_muen()
{ cout<<"----------欢迎进入实验员信息管理系统----------"<<endl; cout<<"     1---添加信息,  2---查询信息"<<endl; cout<<"     3---显示信息,  4---编辑信息"<<endl; cout<<"     5---删除信息,  6---统计信息"<<endl; cout<<"     7---退出"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"请输入您的选择--->:";
}//主菜单
/*--------------------------添 加 数 据------------------------*/
void _add(Cassistant *assistant, int &t)
{ int number,age; string name,sex,laboratory,position; cout<<"添加信息->请输入:"<<endl; while(1) { number=t+1; cout<<"姓名(输入0结束):"; cin>>name;  if(name=="0") break; cout<<"性别(M--man,W--woman):"; while(1){ cin>>sex; if(sex == "M"||sex == "W") { cout<<"年龄:";     cin>>age; cout<<"实验室:"; cin>>laboratory; cout<<"职称:";  cin>>position; assistant[t].set(number,name,sex,age,laboratory,position); ++t; break; } else cout<<"输入性别错误,请重新输入!"<<endl; } }
}//添加信息
/*------------------------查 询 数 据-----------------------------*/
void _query(Cassistant assistant[], int &t)
{  int choice; int flag,nu; string na; cout<<"1---编号,2---姓名"<<endl; while(1) { cin>>flag; if(1 == flag||2 == flag) break; else  cout<<"输入错误请重新输入"; }
switch(flag)
{ case 1://编号查询 { do { cout<<"请输入编号!"<<endl; cin>>nu; if(find_nu(assistant,nu,t)<t) assistant[ find_nu(assistant,nu,t) ].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1);  };break; case 2://姓名查询 { do { cout<<"请输入姓名!"<<endl; cin>>na; if(find_na(assistant,na,t)<t) assistant[ find_na(assistant,na,t) ].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break;
};
}//查询信息
/*------------使 用 编 号 查 询 数 据 方 式--------------------*/
int find_nu(Cassistant assistant[], int _nu, int &t)
{ int i; for(i=0;i<t;i++) if(assistant[i].number==_nu) return i; return t;
}//编号查询方式
/*---------使 用 姓 名 查 询 数 据 方 式-----------------*/
int find_na(Cassistant assistant[], string _na, int &t)
{ int i; for(i=0;i<t;i++) if(assistant[i].name==_na) return i; return t;
}//姓名查询方式
/*------------------------------显 示 数 据--------------------------------*/
void _display(Cassistant assistant[], int &t)
{ int i; cout<<"编号\t姓名\t性别\t年龄\t实验室\t职称"<<endl; for(i=0;i<t;i++) assistant[i].output();
}//显示功能
/*---------------------------------编 辑 数 据----------------------------------*/
void _edit(Cassistant assistant[], int &t)
{ int score,fa,choice; while(1) { cout<<"请输入需要编辑的编号:"; cin>>score; fa = find_nu(assistant,score,t); if(fa<t) { assistant[ fa ].output(); add(assistant,fa); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice; if(choice != 1) break; }
}//编辑功能
/*------------------------编 辑 数 据 方 式-----------------*/
void add(Cassistant assistant[], int _fa)
{ int number=_fa+1,age; string name,sex,laboratory,position; cout<<"请重新输入->实验员姓名,性别,年龄,实验室,职称"<<endl; cin>>name; while(1) { cin>>sex; if(sex=="M"||sex=="W") {  cin>>age>>laboratory>>position; assistant[_fa].set(number,name,sex,age,laboratory,position); break; } elsecout<<"输入性别错误,请重新输入!"<<endl; }
}//编辑信息
/*----------------------------删 除 数 据--------------------------*/
void _delete(Cassistant assistant[], int &t)
{ int score,de,choice1; while(1) { cout<<"请输入需要删除的编号!"<<endl;  cin>>score; de=find_nu(assistant,score,t); if(de<t) { assistant[ de ].output(); dele(assistant,de); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice1; if(choice1 == 2) { cout<<"已退出!"<<endl; break; } }
}
/*------------------------删 除 数 据 方 式------------------*/ void dele(Cassistant assistant[], int _fa)
{ int number,age,qr; string name,sex,laboratory,position; cout<<"确定删除(1是2否):"; cin>>qr;if(qr==1) { cout<<"已删除!"<<endl; number=0; name='0'; sex='0'; age=0; laboratory='0'; position='0'; assistant[_fa].set(number,name,sex,age,laboratory,position); } if(qr==2) cout<<"您已退出删除功能!"<<endl;
}//编辑信息
/*-----------------统 计 数 据--------------------------------*/
void _statistics(Cassistant assistant[], int &t)
{ int i,boy=0,girl=0,sum=0; for(i=0;i<t;i++) { if(assistant[i].sex=="W") girl++; if(assistant[i].sex=="M") boy++; } sum=girl+boy;  cout<<"实验员总共有"<<sum<<endl; cout<<"男有"<<boy<<"人  女有"<<girl<<"人"<<endl;
}//统计
/*--------------------------退 出--------------------------------*/
void assistant_put()
{ cout<<"谢谢使用教师系统!"<<endl;
}//退出
/*------------------------------从 文 件 中 读 入 数 据----------------------------*/
int openfile(Cassistant assistant[])
{ int t,number,age; string name,sex,laboratory,position; ifstream fcin; fcin.open("assistant.txt",ios_base::in); if (fcin == NULL) { cout << "文件打开失败请检查目录下是否有文件assistant.txt\n"; return 0; } t = 0; while(fcin >> number>> name>> sex>> age>> laboratory>> position) {  assistant[t].set(number,name,sex,age,laboratory,position); ++t; } return t; fcin.close();
}//从文件中读入数据
/*--------------------------向 文 件 中 写 入 数 据-----------------------------*/
void closefile(Cassistant assistant[], int &t)
{ int i,number,age; string name,sex,laboratory,position; ofstream fout("assistant.txt"); for(i=0;i<t;i++) { number=assistant[i].number; name=assistant[i].name; sex=assistant[i].sex; age=assistant[i].age; laboratory=assistant[i].laboratory; position=assistant[i].position; if(number!=0) fout << number<<"\t"<< name<<"\t"<< sex<<"\t"<< age<<"\t"<<
laboratory<<"\t"<< position<<endl; } fout.close();
}//写入数据到文件中
/*-----------------------实 验 员 类 总 调 用 函 数-----------------------------*/
void assistant_manage()
{ Cassistant assistant[Max]; int i,t; while (1) { t=openfile(assistant); assistant_muen(); //打印菜单 cin >> i; switch (i) { case 1: _add(assistant,t);     break;//添加功能 case 2: _query(assistant, t);     break;//查询功能 case 3: _display(assistant, t);   break;//显示功能 case 4: _edit(assistant, t);  break;//编辑功能 case 5: _delete(assistant,t);     break;//删除功能 case 6: _statistics(assistant,t); break;//统计功能 default : assistant_put(); goto loop;//退出功能 } closefile(assistant,t); }
loop: cout<<"--------------------------------------------"<<endl;  }
/*--------------------------------实 验 员 统 计 函 数-----------------------------*/
void statistics_assistant()
{ int t; Cassistant assistant[Max]; t=openfile(assistant); _statistics(assistant,t);
}
/*************************行 政 人 员*****************************/
void Cexecution::output()
{ cout<<number<<"\t"<<name<<"\t"; cout<<sex<<"\t"<<age<<"\t"; cout<<politics<<"\t"; cout<<position<<endl;
}//读出数据内容
/*----主 菜 单-----------------------*/
void execution_muen()
{ cout<<"----------欢迎进入行政人员信息管理系统----------"<<endl; cout<<"     1---添加信息,  2---查询信息"<<endl; cout<<"     3---显示信息,  4---编辑信息"<<endl; cout<<"     5---删除信息,  6---统计信息"<<endl; cout<<"     7---退出"<<endl;
}//主菜单
/*----------------------------添 加 数 据-----------------*/
void _add(Cexecution *execution, int &t)
{ int number,age; string name,sex,politics,position; cout<<"添加信息->请输入:"<<endl; while(1) { number=t+1; cout<<"姓名(输入0结束):"; cin>>name; if(name=="0") break; cout<<"性别(M--man,W--woman):"; while(1) { cin>>sex; if(sex == "M"||sex == "W") {  cout<<"年龄:"; cin>>age; cout<<"政治面貌:"; cin>>politics; cout<<"职称:"; cin>>position; execution[t].set(number,name,sex,age,politics,position); ++t; break; } else cout<<"输入性别错误,请重新输入!"<<endl; } }
}//添加信息
/*---------------------------查 询 数 据--------------------*/
void _query(Cexecution execution[], int &t)
{ int choice; int flag,nu; string na; cout<<"1---编号,2---姓名"<<endl; while(1) { cin>>flag; if(1 == flag||2 == flag)  break; else  cout<<"输入错误请重新输入"; }
switch(flag)
{ case 1://编号查询 { do { cout<<"请输入编号!"<<endl; cin>>nu; if(find_nu(execution,nu,t)<t) execution[ find_nu(execution,nu,t) ].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break; case 2://姓名查询 { do { cout<<"请输入姓名!"<<endl; cin>>na; if(find_na(execution,na,t)<t)  execution[ find_na(execution,na,t) ].output(); else cout<<"查无此人!"<<endl;
cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break;
} }//查询信息
/*-----------------使 用 编 号 查 询 数 据 方 式------------------*/
int find_nu(Cexecution execution[], int _nu, int &t)
{ int i; for(i=0;i<t;i++) if(execution[i].number==_nu) return i; return t;
}//编号查询方式
/*---------------------------使 用 姓 名 查 询 数 据 方 式  ----------------------------*/
int find_na(Cexecution execution[], string _na, int &t)
{ int i; for(i=0;i<t;i++) if(execution[i].name==_na) return i; return t;
}//姓名查询方式
/*-------------------------显 示 数 据---------------------------*/
void _display(Cexecution execution[], int &t)
{ int i; cout<<"编号\t姓名\t性别\t年龄\t政治面貌\t职称"<<endl; for(i=0;i<t;i++) execution[i].output();
}//显示功能
/*-----------------------------------编 辑 数 据-----------------------------*/
void _edit(Cexecution execution[], int &t)
{ int score,fa,choice;
while(1)
{   cout<<"请输入需要编辑的编号:"<<endl; cin>>score; fa = find_nu(execution,score,t); if(fa<t) { execution[fa].output(); add(execution,fa); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice; if(choice != 1) break;
}
}//编辑功能
/*---------------------------编 辑 数 据 方 式-----------*/
void add(Cexecution execution[], int _fa)
{ int number=_fa+1,age; string name,sex,politics,position; cout<<"请重新输入->姓名,性别,年龄,政治面貌,职称"<<endl; cin>>name; while(1) {    cin>>sex; if(sex == "M"||sex == "W") {  cin>>age>>politics>>position; execution[_fa].set(number,name,sex,age,politics,position); break; } else cout<<"输入性别错误,请重新输入!"<<endl; }
}//编辑信息
/*----------------------------删 除 数 据-----------------------*/
void _delete(Cexecution execution[], int &t)
{ int score,de,choice1; while(1) { cout<<"请输入需要删除的编号!"<<endl; cin>>score; de=find_nu(execution,score,t); if(de<t) { execution[ de ].output(); dele(execution,de); }    else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice1; if(choice1 == 2) { cout<<"已退出!"<<endl; break; } }
}
/*----------------------删 除 数 据 方 式-------------*/
void dele(Cexecution execution[], int _fa)
{ int number,age,qr; string name,sex,politics,position; cout<<"确定删除(1是2否):"; cin>>qr; if(qr==1) { number=0; name='0';  sex='0';  age=0; politics='0'; position='0';  execution[_fa].set(number,name,sex,age,politics,position); }
if(qr==2) cout<<"您已退出删除功能!"<<endl;
}//编辑信息
/*-------------------------统 计 数 据-----------------------------*/
void _statistics(Cexecution execution[], int &t)
{ int i,boy=0,girl=0,sum=0; for(i=0;i<t;i++) { if(execution[i].sex=="W") girl++; if(execution[i].sex=="M") boy++; } sum=girl+boy; cout<<"实验员总共有"<<sum<<endl; cout<<"男有"<<boy<<"人  女有"<<girl<<"人"<<endl;
}//统计
/*--------------------------------退 出--------------------------------*/
void execution_put()
{
cout<<"谢谢使用教师系统!"<<endl;
}//退出
/*--------------------------------从 文 件 中 读 入 数 据----------------------------*/
int openfile(Cexecution execution[])
{ int t,number,age; string name,sex,politics,position; ifstream fcin; fcin.open("execution.txt",ios_base::in); if (fcin == NULL) { cout << "文件打开失败请检查目录下是否有文件execution.txt\n"; return 0; } t = 0; while(fcin >> number>> name>> sex>> age>> politics>> position) { execution[t].set(number,name,sex,age,politics,position); ++t; } return t; fcin.close();
}//从文件中读入数据
/*----------------------------向 文 件 中 写 入 数 据--------------------------*/
void closefile(Cexecution execution[], int &t)
{ int i,number,age; string name,sex,politics,position; ofstream fout("execution.txt"); for(i=0;i<t;i++) { number=execution[i].number; name=execution[i].name; sex=execution[i].sex; age=execution[i].age; politics=execution[i].politics; position=execution[i].position; if(number!=0) fout << number<<"\t"<< name<<"\t"<< sex<<"\t"<< age<<"\t"<<
politics<<"\t"<< position<<endl; } fout.close();
}//写入数据到文件中
/*-----------------------行 政 人 员 类 总 调 用 函 数-----------------*/
void execution_manage()
{ Cexecution execution[Max]; int i,t;  while (1) { t=openfile(execution); execution_muen(); //打印菜单 cin >> i; switch (i) { case 1: _add(execution,t);     break;//添加功能 case 2: _query(execution, t);     break;//查询功能 case 3: _display(execution, t);   break;//显示功能 case 4: _edit(execution, t);  break;//编辑功能 case 5: _delete(execution,t);     break;//删除功能 case 6: _statistics(execution,t); break;//统计功能 default : execution_put(); goto loop;//退出功能 } closefile(execution,t); }
loop: cout<<"--------------------------------------------"<<endl;
}
/*---------------------行 政 人 员 统 计 函 数-----------------------------*/
void statistics_execution()
{ int t; Cexecution execution[Max]; t=openfile(execution); _statistics(execution,t);
}
/*************************行 政 人 员 兼 教 师******************/
/*----------------------------从 类 中 读 出 数 据 内 容-----------------------*/
void Ctea_exe::output()
{ cout<<number<<"\t"<<name<<"\t"; cout<<sex<<"\t"<<age<<"\t"; cout<<politics<<"\t"<<department<<"\t"<<profession<<"\t"; cout<<position<<endl;
}//读出数据内容
/*-----------------------------主 菜 单----------------------------*/
void tea_exe_muen()
{ cout<<"----------欢迎进入行政人员兼教师信息管理系统----------"<<endl; cout<<"     1---添加信息,  2---查询信息"<<endl; cout<<"     3---显示信息,  4---编辑信息"<<endl; cout<<"     5---删除信息,  6---统计信息"<<endl; cout<<"     7---退出"<<endl; cout<<"--------------------------------------------"<<endl; cout<<"请输入您的选择--->:";
}
//主菜单
/*----------------------------添 加 数 据-------------------------*/
void _add(Ctea_exe *tea_exe, int &t)
{ int number,age; string name,sex,politics,department,profession,position; cout<<"添加信息->请输入:"<<endl; while(1) { number=t+1; cout<<"姓名(输入0结束):"; cin>>name; if(name == "0") break; cout<<"性别(M--man,W--woman):"; while(1) { cin>>sex; if(sex == "M"||sex == "W"){ cout<<"年龄:"; cin>>age; cout<<"政治面貌:"; cin>>politics; cout<<"系部:"; cin>>department; cout<<"专业:";  cin>>profession; cout<<"职称:"; cin>>position; tea_exe[t].set(number,name,sex,age,politics,department,profession,position
); ++t;break; } else cout<<"输入性别错误,请重新输入!"<<endl; } }
}//添加信息
/*----------------------------------查 询 数 据-----------------------------*/
void _query(Ctea_exe tea_exe[], int &t)
{ int choice; int flag,nu; string na; cout<<"1---编号,2---姓名"<<endl;
while(1) { cin>>flag; if(1 == flag||2 == flag) break; else   cout<<"输入错误请重新输入!"<<endl; }
switch(flag)
{
case 1://编号查询 { do { cout<<"请输入编号!"<<endl; cin>>nu; if(find_nu(tea_exe,nu,t)<t) tea_exe[ find_nu(tea_exe,nu,t) ].output(); else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break;
case 2://姓名查询 { do { cout<<"请输入姓名!"<<endl; cin>>na; if(find_na(tea_exe,na,t)<t) tea_exe[ find_na(tea_exe,na,t) ].output();  else cout<<"查无此人!"<<endl; cout<<"是否继续1是2否"<<endl; cin>>choice; if(choice == 2) break; }while(choice == 1); };break; }
}//查询信息
/*--------------------使 用 编 号 查 询 数 据 方 式-----------------*/
int find_nu(Ctea_exe tea_exe[], int _nu, int &t)
{ int i; for(i=0;i<t;i++) if(tea_exe[i].number==_nu) return i; return t;
}//编号查询方式
/*-----------------使 用 姓 名 查 询 数 据 方 式-------------*/
int find_na(Ctea_exe tea_exe[], string _na, int &t)  { int i; for(i=0;i<t;i++) if(tea_exe[i].name==_na) return i; return t;
}//姓名查询方式
/*---------------------------------显 示 数 据-----------------------------*/
void _display(Ctea_exe tea_exe[], int &t)
{ int i; cout<<"编号\t姓名\t性别\t年龄\t政治面貌\t系部\t专业\t职称"<<endl; for(i=0;i<t;i++) tea_exe[i].output();
}//显示功能
/*----------------------------------编 辑 数 据--------------------------*/
void _edit(Ctea_exe tea_exe[], int &t)
{ int score,fa,choice; while(1) { cout<<"请输入需要编辑的编号:"; cin>>score; fa = find_nu(tea_exe,score,t); if(fa<t) { tea_exe[ fa ].output(); add(tea_exe,fa); } else cout<<"查无此人!"<<endl; cout<<"是否继续(1是2否):"; cin>>choice; if(choice != 1) break; }
}//编辑功能
/*------------------------编 辑 数 据 方 式----------------*/
void add(Ctea_exe tea_exe[], int _fa)
{ int number=_fa+1,age; string name,sex,politics,department,profession,position; cout<<"请重新输入->姓名,性别,年龄,政治面貌,系部,专业,职称"<<endl; cin>>name; while(1) { cin>>sex; if(sex=="M"||sex=="W")  {  cin>>age>>politics>>department>>profession>>position; tea_exe[_fa].set(number,name,sex,age,politics,department,profession,position); break; } else cout<<"输入性别错误,请重新输入!"<<endl; }
}//编辑信息
/*----------------------------删 除 数 据----------------------------*/
void _delete(Ctea_exe tea_exe[], int &t)
{ int score,de,choice1; while(1) { cout<<"请输入需要删除的编号!"<<endl; cin>>score; de=find_nu(tea_exe,score,t); if(de<t) { tea_exe[ de ].output(); dele(tea_exe,de); } else cout<<"查无此人!"<<endl;  cout<<"是否继续(1是2否):"; cin>>choice1; if(choice1 == 2) { cout<<"已退出!"<<endl; break; } }
}
/*-----------------------------删 除 数 据 方 式------------*/
void dele(Ctea_exe tea_exe[], int _fa)
{ int number,age,qr; string name,sex,politics,department,profession,position; cout<<"确定删除(1是2否)"; cin>>qr; if(qr==1) { cout<<"已删除!"<<endl; number=0; name='0'; sex='0';  age=0; department='0'; position='0';
tea_exe[_fa].set(number,name,sex,age,politics,department,profession,position); } if(qr == 2) cout<<"未删除!"<<endl;
}//编辑信息
/*---------------------------统 计 数 据---------------------------*/
void _statistics(Ctea_exe tea_exe[], int &t)
{ int i,boy=0,girl=0,sum=0; for(i=0;i<t;i++){ if(tea_exe[i].sex=="W") girl++; if(tea_exe[i].sex=="M") boy++; } sum=girl+boy; cout<<"行政人员兼教师总共有"<<sum<<endl; cout<<"男有"<<boy<<"人  女有"<<girl<<"人"<<endl;
}//统计
/*-------------------------------------退 出-------------------------------*/
void tea_exe_put()  { cout<<"谢谢使用教师系统!"<<endl;
}//退出
/*----------------------------从 文 件 中 读 入 数 据-----------*/
int openfile(Ctea_exe tea_exe[])
{int t,number,age; string name,sex,politics,department,profession,position; ifstream fcin; fcin.open("tea_exe.txt",ios_base::in); if (fcin == NULL) { cout << "文件打开失败请检查目录下是否有文件tea_exe.txt\n"; return 0; } t = 0; while(fcin >> number>> name>> sex>> age>> politics>> department>> profession>>
position) { tea_exe[t].set(number,name,sex,age,politics,department,profession,position
); ++t; } return t; fcin.close();
}//从文件中读入数据
/*-----------------------向 文 件 中 写 入 数 据-----------------------*/
void closefile(Ctea_exe tea_exe[], int &t)
{ int i,number,age; string name,sex,politics,department,profession,position; ofstream fout("tea_exe.txt"); for(i=0;i<t;i++) { number=tea_exe[i].number; name=tea_exe[i].name; sex=tea_exe[i].sex; age=tea_exe[i].age; politics=tea_exe[i].politics; department=tea_exe[i].department; profession=tea_exe[i].profession; position=tea_exe[i].position; if(number!=0) fout << number<<"\t"<< name<<"\t"<< sex<<"\t"<< age<<"\t"<<
politics<<"\t"<< department<<"\t"<< profession<<"\t"<< position<<endl; } fout.close();
}//写入数据到文件中
void tea_exe_manage()
{ Ctea_exe tea_exe[Max]; int i,t; while (1) { t=openfile(tea_exe); tea_exe_muen(); //打印菜单 cin >> i; switch (i) { case 1: _add(tea_exe,t);     break;//添加功能 case 2: _query(tea_exe, t);     break;//查询功能 case 3: _display(tea_exe, t);   break;//显示功能 case 4: _edit(tea_exe, t);  break;//编辑功能 case 5: _delete(tea_exe,t);     break;//删除功能 case 6: _statistics(tea_exe,t); break;//统计功能 default : tea_exe_put(); goto loop;//退出功能 } closefile(tea_exe,t); }
loop: cout<<"--------------------------------------------"<<endl;
}
/*--------------------行 政 人 员 兼 教 师 统 计 函 数------------------------*/
void statistics_tea_exe()
{ int t; Ctea_exe tea_exe[Max]; t=openfile(tea_exe); _statistics(tea_exe,t);
} 

测试代码

#include"HEAD.h"
void statistics_all()//数据统计行数
{ statistics_teacher();
statistics_assistant(); statistics_execution(); statistics_tea_exe();
}
void muen()
{ cout<<"**********欢迎进入高校信息管理系统***********"<<endl; cout<<"     1---教师信息,2---实验员信息"<<endl; cout<<"     3---行政人员,4---教师兼行政人员"<<endl; cout<<"     5---统计人数,6---退出系统"<<endl; cout<<"*********************************************"<<endl; cout<<"请输入您的选择--->:";
}
int main()
{ int i; while(1) {   muen(); cin>>i; switch(i) { case 1: teacher_manage();     break;//教师 case 2: assistant_manage();   break;//实验员 case 3: execution_manage();   break;//行政 case 4: tea_exe_manage();     break;//教师兼行政 case 5: statistics_all();     break;//统计 default :cout<<"欢迎再次使用!"<<endl; exit(0); } } return 0;
} 

需要在相同文件夹里建assistant.txt,education.txt,tea_exe.txt,teacher.txt四个txt文件保存内容

【c++课设】高校教师信息管理系统相关推荐

  1. 课设影院信息管理系统

        课设影院信息管理系统 一.影院具体信息介绍: 1.人员分类: 负责人,管理者,售票者,顾客 2.人员涉及的功能: 负责人:注册管理者和售票者账号信息 管理者:管理影片信息,增删修改 售票者:查 ...

  2. 学生信息管理系统c语言课设,学生信息管理系统C语言课设.doc

    学生信息管理系统C语言课设 目录 一.需求分析2 二.概要设计2 三.详细设计4 四.调试分析9 五.用户手册9 六.测试数据9 七.附录10 一.需求分析学生学籍管理系统用数据文件存放学生的学籍,可 ...

  3. C++课设-学生信息管理系统

    前言:上学期的一个简单的C++课设项目(代码在后面,附github项目链接) 一.问题描述: 建立学生信息数据,包括学号.姓名.性别.三科成绩.出生时间.年龄(必须计算得到). 使用继承的方法构造至少 ...

  4. C语言课设图书信息管理系统(大作业)

    一.设计功能(文章仅供参考) 图书信息包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)图书信息录入功能( ...

  5. C语言课设职工信息管理系统(大作业)

    一.设计功能(文章仅供参考) 职工信息包括:工号,姓名,性别,出生年月,婚姻状况,职称,家庭地址,电话,E-mail等. 设计一个职工信息管理系统,使之能提供以下功能: (1)职工信息录入功能(学生信 ...

  6. C语言课设——图书信息管理系统

    其实这个题目要实现的功能比较清晰,主要就是文件和链表的操作以及基于这两个基础上的填删改查等功能,当然也可以添加一些个性化的功能,比如按照图书的检索量来对库存的图书进行热度的排序. 以下是我的这个图书管 ...

  7. java课设 学生信息管理系统

    一.软件环境及开发工具 Windows10 eclipse sqlite 二.课程设计功能要求 1.添加学生功能:姓名.学号.性别.出生年月日.(注意:学号自动生成,学号必须唯一) 2.添加学生成绩功 ...

  8. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  9. 日程信息管理系统设计与实现C 语言论文,C课设个人日程管理系统.docx

    C课设个人日程管理系统 可视化程序设计 大作业 班 级: 学 号: 姓 名: 指导教师: 计算机与通信工程学院 2018.01 1. 任务描述 课题:日程管理系统 由于题目没有提及要实现的具体的功能, ...

  10. c语言课程图书信息管理系统,c语言课程设图书信息管理系统.doc

    c语言课程设图书信息管理系统 课程设计报告 课程:高级语言程序设计 学号: 1010431059 姓名: 胡维维 班级: 嵌入式一班 教师: 王群芳 时间: 2011年6月 计算机科学与技术系 设计名 ...

最新文章

  1. 关于service层、dao层,以及O/R Mapping之间的思考
  2. 自学python推荐书籍 知乎-在知乎上学 Python - 爬虫篇
  3. AutoMySQLBackup 3.0 Bug:du: WARNING: use --si, not -H
  4. 第九十三节,html5+css3移动手机端流体布局,基础CSS,头部设计,轮播设计,底部设计...
  5. php若$a没定义默认是,PHP之错误处理详解
  6. 【教程】一步一步教你如何自定义设置——博客园canvas/JS交互动画背景
  7. 《spring-boot学习》-04-综合开发
  8. C++ BSS段、数据段、代码段、堆与栈及五大内存分区
  9. ETF:一种让美国“80后”趋之若鹜的投资工具
  10. 阵列信号处理-学习笔记002
  11. [渝粤教育] 北京理工大学 工程热力学 参考 资料
  12. 2010年6月3日晚18点23分
  13. win10连不上网,“网络重置”后,网络适配器出现感叹号,右下角WLAN消失,网络连接是空白。
  14. 无人超市的核心不在于代替人,而是一款赚钱的互联网产品,是互联网伸向现实世界的
  15. 数据分析案例实战:科比数据集分析
  16. Mermaid知识点总结3 - Flowchart 2
  17. Web IDE优势在哪?详解Web版数据库管理工具SQL Studio
  18. 解魔方神器开源啦!摄像头看一眼,就能还原全步骤
  19. 10个BS后台UI框架
  20. D和弦的音阶在尤克里里上应该怎么按?

热门文章

  1. Linux设备检测外部网络NAT类型
  2. 轻松搞定python系列
  3. word如何给论文加引用文献
  4. 电工学习笔记——DC/DC转换器回路设计指南
  5. 『写给自己,未来十年的一封信』
  6. Ubuntu 18.04 用户登陆界面死循环 NVIDIA 驱动导致用户登陆界面死循环
  7. 登录页面 一直显示正在等待localhost的响应
  8. 新风系统风速推荐表_新风系统送风口风速怎么选择 新风系统送风口风速选择标准【详解】...
  9. matlab 帕多瓦数列 通项公式_斐波那契数列通项公式的函数图像(复数域)
  10. 主机电源供电不足导致的系统启动故障