【c++】课设实验报告

 

 

 

 

面向对象编程实验报告

 

 

 

题目:     高校人员信息管理系统设计与实现                                   

 

 

 

 

学生姓名:          

学    号:      

院 (系): 电气与信息工程学院

专    业:     网络工程       

 

2016   6  25

 

 

一、            实验目的

1.要求能够熟练掌握C++语言的基本知识和技能。

2.基本掌握面向对象程序设计的基本思路和方法。

3.能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

二、            实验内容

1、问题描述

某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。

2、功能要求

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

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

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

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

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

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

统计男、女员工的数量。

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

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

三、            实验环境

Microsoft Visual studio 2010

四、            设计思路或方案 

1.类设计

此系统共设计了5个类:公有类(class  CCommon),教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe) 

(1)      人员的管理需包含人员的基本信息,所以定义一个公有类如下表所示

                               表一      公有类

类名

公有类

 

数据成员

protected:   int number;     //编号

string name;    //姓名

string sex;    //性别

int age;   //年龄

 

(2)      根据高校人员的工作性质的不同,将所以员工分为五类, 分别是教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe)

                                 表二   教师类

类名

               教师类

 

数据成员

protected:  string department;//所在系部

string profession;//专业 

          string position;//职称

 

成员函数

public: void set(int _number,string _name,string_sex,int_age,string_department,string_profession,string _position)

           void output()

                               表三   实验员类

类名

实验员类

数据成员

protected: string laboratory;   //所在实验室

string position;   //职称

成员函数

public: void set(int_number,string _name,string_sex,int_age,string_laboratory,string_position)

            void output()

表四  行政人员类

类名

行政人员类

数据成员

protected: string politics;//政治面貌

string position;//职称

 

成员函数

public:void set(int _number,string _name,string _sex,int _age,string _politics,string _position)

void output()

表五  教师兼行政人员类

类名

教师兼行政人员类

数据成员

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)

void output()

2.类之间的关系

公有类是基类,教师类、实验员类、行政人员类是其派生类,教师兼行政人员类是教师和行政人员类的派生类,这样定义能使程序变得更加简单,派生类的成员函数和数据成员可使用基类的,使用了派生和继承,使程序变得简单化。

3.函数设计

定义了教师菜单函数,实验员菜单函数,行政人员菜单函数,教师兼行政人员类,这些函数可调用派生类中的添加成员函数,查询成员函数,显示成员函数,编辑成员函数,删除成员函数,统计成员函数,保存成员函数,读取成员函数。

                           

五、            程序清单

/*-------------------------------------共 有 类-------------------------------------*/

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 voidclosefile(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

共设计了5个类:公有类(class  CCommon), 教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe)

函数部分

教师系统(部分代码)

/*----------------------------教师类中的各个函数操作-----------------------*/

void _add(Cteacher *teacher, int &t)//1教师添加信息

{

 int number,age;

 stringname,sex,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }   

 }

}

void _query(Cteacher teacher[], int &t)//2查询信息

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

     while(1)

  { 

         cin>>flag;

  if(1 == flag||2== flag)

   break;

  else 

  cout<<"输入错误请重新输入!"<

  }

 switch(flag)

 {

 case 1://编号查询

 {

       do

    {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(teacher,nu,t) < t)

  teacher[find_nu(teacher,nu,t)].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

    }while(choice== 1);

 };break;

 case 2://姓名查询

 {

     do

    {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(teacher,na,t)

   teacher[find_na(teacher,na,t) ].output();

  else

  cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

     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

 if(teacher[i].number==_nu)

   return i;

 return t;

}

int find_na(Cteacher teacher[], string _na, int &t)//姓名查询方式

{

 int i;

 for(i=0;i

 if(teacher[i].name==_na)

   return i;

 return t; 

}

void _display(Cteacher teacher[], int &t)//3显示功能

{

 int i;

 cout<

 cout<<"编号\t姓名\t性别\t年龄\t系部\t专业\t职称"<

 for(i=0;i

 teacher[i].output();

 cout<<"--------------------------------------------"<

}

void _delete(Cteacher teacher[], int &t)//删除数据

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(teacher,score,t);

 if(de

 {

  teacher[ de].output();

  dele(teacher,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {     cout<<"已退出!"<

  break;

 }

 }

}

void teacher_put()//退出

{

 cout<<"谢谢使用教师系统!"<

}

void teacher_manage()//教师类总调用函数-

{

 Cteacherteacher[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<<"--------------------------------------------"<

}

void _statistics(Cteacher teacher[], int &t)//统计数据

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(teacher[i].sex== "W")

   girl++; 

  if(teacher[i].sex=="M")

   boy++;

 }

 sum = girl+boy;

 cout<<"教师总共有"<

 cout<<"男有"<

}

void statistics_teacher()//教师统计函数

{

 int t;

 Cteacherteacher[Max];

 t =openfile(teacher);

 _statistics(teacher,t);

}

实验员系统(部分代码)

/*****************实 验 员*********************/

/*--------------------------添 加 数 据------------------------*/

void _add(Cassistant *assistant, int &t)

{

 int number,age;

 stringname,sex,laboratory,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*------------------------查 询 数 据-----------------------------*/

void _query(Cassistant assistant[], int &t)

    int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

 while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag)

   break;

  else 

  cout<<"输入错误请重新输入";

  }

switch(flag)

{

 case 1://编号查询

 {

  do

  {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(assistant,nu,t)

   assistant[find_nu(assistant,nu,t) ].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

  }while(choice ==1); 

 };break;

 case 2://姓名查询

 {

      do

  {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(assistant,na,t)

   assistant[find_na(assistant,na,t) ].output();

  else

  cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

  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

 if(assistant[i].number==_nu)

  return i;

 return t;

}//编号查询方式

/*---------使 用 姓 名 查 询 数 据 方 式-----------------*/

int find_na(Cassistant assistant[], string _na, int&t)

{

 int i;

 for(i=0;i

 if(assistant[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*----------------------------删 除 数 据--------------------------*/

void _delete(Cassistant assistant[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(assistant,score,t);

 if(de

 {

  assistant[ de].output();

 dele(assistant,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*-----------------统 计 数 据--------------------------------*/

void _statistics(Cassistant assistant[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(assistant[i].sex=="W")

   girl++;

 if(assistant[i].sex=="M")

   boy++;

 }

 sum=girl+boy; 

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*-----------------------实 验 员 类 总 调 用 函 数-----------------------------*/

void assistant_manage()

{

 Cassistantassistant[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<<"--------------------------------------------"<

 }

/*--------------------------------实 验 员 统 计 函 数-----------------------------*/

void statistics_assistant()

{

 int t;

 Cassistant assistant[Max];

 t=openfile(assistant);

 _statistics(assistant,t);

}

行政人员系统(部分代码)

/*************************行 政 人 员*****************************/

/*----------------------------添 加 数 据-----------------*/

void _add(Cexecution *execution, int &t)

{

 int number,age;

 stringname,sex,politics,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*---------------------------查 询 数 据--------------------*/

void _query(Cexecution execution[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

  while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag) 

      break;

  else 

  cout<<"输入错误请重新输入";

  }

switch(flag)

{

    case 1://编号查询

  {

     do

     {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(execution,nu,t)

   execution[find_nu(execution,nu,t) ].output();

  else

  cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

     }while(choice== 1);

  };break;

    case 2://姓名查询

  {

      do

   {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(execution,na,t)

      execution[ find_na(execution,na,t)].output();

  else

  cout<<"查无此人!"<

cout<<"是否继续1是2否"<

  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

 if(execution[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*---------------------------使 用 姓 名 查 询 数 据 方 式 ----------------------------*/

int find_na(Cexecution execution[], string _na, int&t)

{

 int i;

 for(i=0;i

 if(execution[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*-----------------------------------编 辑 数 据-----------------------------*/

void _edit(Cexecution execution[], int &t)

{

 intscore,fa,choice;

while(1)

{  cout<<"请输入需要编辑的编号:"<

 cin>>score;

 fa =find_nu(execution,score,t);

 if(fa

 {

 execution[fa].output();

 add(execution,fa);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

    cin>>choice;

     if(choice !=1)

      break;

}

}//编辑功能

/*----------------------------删 除 数 据-----------------------*/

void _delete(Cexecution execution[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(execution,score,t);

 if(de

 {

  execution[ de].output();

 dele(execution,de);

 }    else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*-------------------------统 计 数 据-----------------------------*/

void _statistics(Cexecution execution[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(execution[i].sex=="W")

   girl++;

 if(execution[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------------退 出--------------------------------*/

void execution_put()

cout<<"谢谢使用教师系统!"<

}//退出

/*-----------------------行 政 人 员 类 总 调 用 函 数-----------------*/

void execution_manage()

{

 Cexecutionexecution[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<<"--------------------------------------------"<

}

行政人员兼教师系统(部分代码)

*************************行 政 人 员 兼 教 师******************/

//主菜单 

/*----------------------------添 加 数 据-------------------------*/

void _add(Ctea_exe *tea_exe, int &t)

{

 int number,age;

 stringname,sex,politics,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*----------------------------------查 询 数 据-----------------------------*/

void _query(Ctea_exe tea_exe[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag)

   break;

  else  

 cout<<"输入错误请重新输入!"<

  }

switch(flag)

{

case 1://编号查询

 {

  do

    {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(tea_exe,nu,t)

   tea_exe[find_nu(tea_exe,nu,t) ].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

        if(choice== 2)

    break;

    }while(choice== 1);

 };break;

case 2://姓名查询

 {

  do

  {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(tea_exe,na,t)

   tea_exe[find_na(tea_exe,na,t) ].output(); 

  else

   cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  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

 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

  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职称"<

 for(i=0;i

  tea_exe[i].output();

}//显示功能

/*----------------------------------编 辑 数 据--------------------------*/

void _edit(Ctea_exe tea_exe[], int &t)

{

  intscore,fa,choice;

 while(1)

 {

 cout<<"请输入需要编辑的编号:";

 cin>>score;

 fa =find_nu(tea_exe,score,t);

 if(fa

 {

  tea_exe[ fa].output();

  add(tea_exe,fa);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*----------------------------删 除 数 据----------------------------*/

void _delete(Ctea_exe tea_exe[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(tea_exe,score,t);

 if(de

 {

  tea_exe[ de].output();

  dele(tea_exe,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*---------------------------统 计 数 据---------------------------*/

void _statistics(Ctea_exe tea_exe[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(tea_exe[i].sex=="W")

   girl++;

 if(tea_exe[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"行政人员兼教师总共有"<

 cout<<"男有"<

}//统计

/*-------------------------------------退 出-------------------------------*/

void tea_exe_put() 

 {

 cout<<"谢谢使用教师系统!"<

}//退出

void tea_exe_manage()

{

 Ctea_exetea_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<<"--------------------------------------------"<

}

/*--------------------行 政 人 员 兼 教 师 统 计 函 数------------------------*/

void statistics_tea_exe()

{

 int t;

 Ctea_exetea_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<<"**********欢迎进入高校信息管理系统***********"<

 cout<<"     1---教师信息,2---实验员信息"<

 cout<<"     3---行政人员,4---教师兼行政人员"<

 cout<<"     5---统计人数,6---退出系统"<

 cout<<"*********************************************"<

 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<<"欢迎再次使用!"<

      exit(0);

  }

   }

 return 0;

}

 

 

六、            调试结果及分析

主界面:

按1进入教师信息界面进行部分操作演示

按2进入实验员信息界面并进行部分操作演示

 

按3进入行政人员信息系统并演示部分操作

按7进入教师兼行政人员信息界面并进行部分操作

按5统计人数

按6退出系统

 

 

 

 

 

 

 

  

七、   总结

本次课程设计完成的基本顺利,有些不明白的已经自己看书或向同学请教后明白了,我觉得我设计好的系统各项功能都能实现,优点是可实现的功能很全,而且很简单,缺点是实现各项功能的方法较少,基本只有一种或两种方法。可改进的地方是实现各功能的方法,可以按多种渠道实现功能。这次课程设计让我增长了很多知识更深一步地掌握了虚函数,纯虚函数,继承与派生,文件的使用方法。当我自己独立完成这个设计的时候,内心有一种很强的满足感。对此,我要感谢我的指导老师田延安的辛苦教导。最后,我很高兴完成这项设计,因为我受益匪浅。

八、参考文献

[1]谭浩强著.C程序设计第三版北京清华大学出版社

[2]吕凤翥编著.C++语言基础教程第二版北京清华大学出版社

附源代码:

头文件

Head.h

#ifndef_HEADC_H

#define_HEADC_H

#include

#include

#include

#include

usingnamespace std;

/*-------------------------------------共 有 类-------------------------------------*/

classCCommon//公有类

{

protected:

intnumber;//编号

stringname;//姓名

stringsex;//性别

intage;//年龄

};

/*------------------------教 师 类--------------------------------------*/

classCteacher:

publicCCommon//教师类

{

protected:

stringdepartment;//所在系部

stringprofession;//专业 

 string position;//职称

public:

voidset(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;

}//输入教师数据

voidoutput();

~Cteacher()

{

}//析构函数

friendint find_nu(Cteacher teacher[], int _nu, int &t);

friendint find_na(Cteacher teacher[], string _na, int &t);

friendvoid add(Cteacher teacher[], int _fa);

friendvoid dele(Cteacher teacher[], int _fa);

friendvoid closefile(Cteacher teacher[] ,int &t);

friendvoid _statistics(Cteacher teacher[], int &t);

};

voidteacher_manage();

/*----------------------------实 验 员 类-------------------------------------------*/

classCassistant:public CCommon//实验员类

{

protected:

stringlaboratory;//所在实验室

stringposition;//职称

public:

voidset(int _number,string _name,string _sex,int _age,string _laboratory,string

_position)

{

number =_number;

name =_name;

sex =_sex;

age =_age;

laboratory= _laboratory;

position= _position;

}//输入实验员数据

voidoutput();

~Cassistant()

{

}//析构函数

friendint find_nu(Cassistant assistant[], int _nu, int &t);

friendint find_na(Cassistant assistant[], string _na, int &t);

friendvoid add(Cassistant assistant[], int _fa);

friendvoid dele(Cassistant assistant[], int _fa); 

 friend void closefile(Cassistant assistant[],int &t);

friendvoid _statistics(Cassistant assistant[], int &t);

};

voidassistant_manage();

/*----------------------------行 政 人 员 类--------------------------------------------*/

classCexecution:public CCommon//行政人员类

{

protected:

stringpolitics;//政治面貌

stringposition;//职称

public:

voidset(int _number,string _name,string _sex,int _age,string _politics,string

_position)

{

number =_number;

name =_name;

sex =_sex;

age =_age;

politics= _politics;

position= _position;

}//输入行政人员数据

voidoutput();

~Cexecution()

{

}//析构函数 

friendint find_nu(Cexecution execution[], int _nu, int &t);

friendint find_na(Cexecution execution[], string _na, int &t);

friendvoid add(Cexecution execution[], int _fa);

friendvoid dele(Cexecution execution[], int _fa);

friendvoid closefile(Cexecution execution[] ,int &t);

friendvoid _statistics(Cexecution execution[], int &t);

};

voidexecution_manage();

/*---------------------------行 政 人 员 兼 教 师 类-------------------------------------*/

classCtea_exe:public CCommon//行政人员兼教师类

{

protected:

stringpolitics;//政治面貌

stringdepartment;//所在系部

stringprofession;//专业

stringposition;//职称

public:

voidset(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;

}//输入行政人员兼教师数据

voidoutput();

~Ctea_exe()

{

}//析构函数

friendint find_nu(Ctea_exe tea_exe[], int _nu, int &t);

friendint find_na(Ctea_exe tea_exe[], string _na, int &t);

friendvoid add(Ctea_exe tea_exe[], int _fa);

friendvoid dele(Ctea_exe tea_exe[], int _fa);

friendvoid closefile(Ctea_exe tea_exe[] ,int &t);

friendvoid _statistics(Ctea_exe tea_exe[], int &t);

};

voidtea_exe_manage();

/*---------------------------------统 计 总 人 数---------------------------------------*/

voidstatistics_all();//数据统计数

voidstatistics_teacher();

voidstatistics_assistant();

voidstatistics_execution();

voidstatistics_tea_exe();

voidorder(); 

const intMax = 100;//各人员总人数最大值

#endif

函数部分代码

函数.cpp

#include"HEAD.h"

/*----------------------------教师类中的各个函数操作-----------------------*/

voidCteacher::output()//教师读出数据内容

{

 cout<

 cout<

 cout<

 cout<

}

voidteacher_muen()//教师主菜单

{

 cout<

 cout<<"----------欢迎进入教师信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}

void_add(Cteacher *teacher, int &t)//1教师添加信息

{

 int number,age;

 stringname,sex,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }   

 }

}

void_query(Cteacher teacher[], int &t)//2查询信息

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

     while(1)

  { 

               cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else 

   cout<<"输入错误请重新输入!"<

  }

 switch(flag)

 {

 case 1://编号查询

 {

       do

    {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(teacher,nu,t) < t)

   teacher[find_nu(teacher,nu,t)].output();

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 case 2://姓名查询

 {

     do

    {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(teacher,na,t)

   teacher[ find_na(teacher,na,t) ].output();

  else

   cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

      cin>>choice;

           if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 }

}

intfind_nu(Cteacher teacher[], int _nu, int &t)//编号查询方式

{

 int i;

 for(i=0;i

  if(teacher[i].number==_nu)

   return i;

 return t;

}

intfind_na(Cteacher teacher[], string _na, int &t)//姓名查询方式

{

 int i;

 for(i=0;i

  if(teacher[i].name==_na)

   return i;

 return t; 

}

void_display(Cteacher teacher[], int &t)//3显示功能

{

 int i;

 cout<

 cout<<"编号\t姓名\t性别\t年龄\t系部\t专业\t职称"<

 for(i=0;i

  teacher[i].output();

 cout<<"--------------------------------------------"<

}

void_edit(Cteacher teacher[], int &t)//4编辑数据-

{

 int score,fa,choice;

 while(1)

 {

 cout<<"请输入需要编辑的编号:";

 cin>>score; 

 fa = find_nu(teacher,score,t);

 if(fa

 {

  teacher[ fa ].output();

  add(teacher,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}

voidadd(Cteacher teacher[], int _fa)//编辑数据方式

{

 int number=_fa+1,age;

 stringname,sex,department,profession,position;

 cout<<"请重新输入:"<

 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<<"输入性别错误,请重新输入!"<

 }

}

void_delete(Cteacher teacher[], int &t)//删除数据

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(teacher,score,t);

 if(de

 {

  teacher[ de ].output();

  dele(teacher,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {    cout<<"已退出!"<

  break;

 }

 }

}

void dele(Cteacherteacher[], int _fa)//删除数据方式

{

 int number,age,qr;

 stringname,sex,department,profession,position;

 cout<<"确定删除(1是2否):";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"未删除!"<

}

voidteacher_put()//退出

{

 cout<<"谢谢使用教师系统!"<

}

intopenfile(Cteacher teacher[])//从文件中读入数据

{

 int t,number,age;

 stringname,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();

voidclosefile(Cteacher teacher[], int &t)//向文件中写入数据

{

 int i,number,age;

 stringname,sex,department,profession,position;

 ofstream fout("teacher.txt");

 for(i=0;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 <

department<<"\t"<

 }

 fout.close();

}

voidteacher_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<<"--------------------------------------------"<

}

void_statistics(Cteacher teacher[], int &t)//统计数据

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(teacher[i].sex == "W")

   girl++; 

   if(teacher[i].sex=="M")

   boy++;

 }

 sum = girl+boy;

 cout<<"教师总共有"<

 cout<<"男有"<

}

voidstatistics_teacher()//教师统计函数

{

 int t;

 Cteacher teacher[Max];

 t = openfile(teacher);

 _statistics(teacher,t);

}

/*****************实 验 员*********************/

/*--------------------从 类 中 读 出 数 据 内 容---------------------*/

voidCassistant::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*--------------------主 菜 单-----------------------------*/

voidassistant_muen()

{

 cout<<"----------欢迎进入实验员信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}//主菜单

/*--------------------------添 加 数 据------------------------*/

void_add(Cassistant *assistant, int &t)

{

 int number,age;

 string name,sex,laboratory,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*------------------------查 询 数 据-----------------------------*/

void_query(Cassistant assistant[], int &t)

       int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

 while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else 

   cout<<"输入错误请重新输入";

  }

switch(flag)

{

 case 1://编号查询

 {

  do

  {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(assistant,nu,t)

   assistant[ find_nu(assistant,nu,t)].output();

  else

   cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

  }while(choice == 1); 

 };break;

 case 2://姓名查询

 {

      do

  {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(assistant,na,t)

   assistant[ find_na(assistant,na,t) ].output();

  else

   cout<<"查无此人!"<

    cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

};

}//查询信息

/*------------使 用 编 号 查 询 数 据 方 式--------------------*/

intfind_nu(Cassistant assistant[], int _nu, int &t)

{

       int i;

 for(i=0;i

  if(assistant[i].number==_nu)

  return i;

 return t;

}//编号查询方式

/*---------使 用 姓 名 查 询 数 据 方 式-----------------*/

intfind_na(Cassistant assistant[], string _na, int &t)

{

 int i;

 for(i=0;i

  if(assistant[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*------------------------------显 示 数 据--------------------------------*/

void_display(Cassistant assistant[], int &t)

{

 int i;

 cout<<"编号\t姓名\t性别\t年龄\t实验室\t职称"<

 for(i=0;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

 {

  assistant[ fa ].output();

  add(assistant,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*------------------------编 辑 数 据 方 式-----------------*/ 

voidadd(Cassistant assistant[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,laboratory,position;

 cout<<"请重新输入->实验员姓名,性别,年龄,实验室,职称"<

 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;

 }

 else

  cout<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据--------------------------*/

void_delete(Cassistant assistant[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(assistant,score,t);

 if(de

 {

  assistant[ de ].output();

  dele(assistant,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*------------------------删 除 数 据 方 式------------------*/

 

voiddele(Cassistant assistant[], int _fa)

{

 int number,age,qr;

 string name,sex,laboratory,position;

 cout<<"确定删除(1是2否):";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"您已退出删除功能!"<

}//编辑信息

/*-----------------统 计 数 据--------------------------------*/

void_statistics(Cassistant assistant[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(assistant[i].sex=="W")

   girl++;

  if(assistant[i].sex=="M")

   boy++;

 }

 sum=girl+boy; 

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------退 出--------------------------------*/

voidassistant_put()

{

 cout<<"谢谢使用教师系统!"<

}//退出

/*------------------------------从 文 件 中 读 入 数 据----------------------------*/

intopenfile(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();

}//从文件中读入数据

/*--------------------------向 文 件 中 写 入 数 据-----------------------------*/

voidclosefile(Cassistant assistant[], int &t)

{

 int i,number,age;

 string name,sex,laboratory,position;

 ofstream fout("assistant.txt");

 for(i=0;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 <

laboratory<<"\t"<

 }

 fout.close(); 

}//写入数据到文件中

/*-----------------------实 验 员 类 总 调 用 函 数-----------------------------*/

voidassistant_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<<"--------------------------------------------"<

 }

/*--------------------------------实 验 员 统 计 函 数-----------------------------*/

voidstatistics_assistant()

{

 int t;

 Cassistant assistant[Max];

 t=openfile(assistant);

 _statistics(assistant,t);

}

/*************************行 政 人 员*****************************/

voidCexecution::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*----主 菜 单-----------------------*/

voidexecution_muen() 

{

 cout<<"----------欢迎进入行政人员信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

}//主菜单

/*----------------------------添 加 数 据-----------------*/

void_add(Cexecution *execution, int &t)

{

 int number,age;

 string name,sex,politics,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*---------------------------查 询 数 据--------------------*/

void_query(Cexecution execution[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

  while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag) 

        break;

  else 

   cout<<"输入错误请重新输入";

  }

switch(flag)

{

    case 1://编号查询

  {

     do

     {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(execution,nu,t)

   execution[ find_nu(execution,nu,t)].output();

  else

   cout<<"查无此人!"<

    cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

     }while(choice == 1);

  };break;

    case 2://姓名查询

  {

      do

   {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(execution,na,t)

        execution[ find_na(execution,na,t) ].output();

  else

   cout<<"查无此人!"<

cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

   }while(choice == 1);

  };break;

}

 

 

 

 

 

}//查询信息

/*-----------------使 用 编 号 查 询 数 据 方 式------------------*/

intfind_nu(Cexecution execution[], int _nu, int &t)

{

 int i;

 for(i=0;i

  if(execution[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*---------------------------使 用 姓 名 查 询 数 据 方 式 ----------------------------*/

intfind_na(Cexecution execution[], string _na, int &t)

{

 int i;

 for(i=0;i

  if(execution[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*-------------------------显 示 数 据---------------------------*/

void_display(Cexecution execution[], int &t)

{

 int i;

 cout<<"编号\t姓名\t性别\t年龄\t政治面貌\t职称"<

 for(i=0;i

  execution[i].output();

}//显示功能

/*-----------------------------------编 辑 数 据-----------------------------*/

void_edit(Cexecution execution[], int &t)

{

 int score,fa,choice;

while(1)

{   cout<<"请输入需要编辑的编号:"<

 cin>>score;

 fa = find_nu(execution,score,t);

 if(fa

 {

  execution[fa].output();

  add(execution,fa);

 }

 else

  cout<<"查无此人!"<

  cout<<"是否继续(1是2否):";

     cin>>choice;

    if(choice != 1)

      break;

}

}//编辑功能

/*---------------------------编 辑 数 据 方 式-----------*/

voidadd(Cexecution execution[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,politics,position;

 cout<<"请重新输入->姓名,性别,年龄,政治面貌,职称"<

 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<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据-----------------------*/

void_delete(Cexecution execution[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(execution,score,t);

 if(de

 {

  execution[ de ].output();

  dele(execution,de);

 }   else

  cout<<"查无此人!"<

  cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*----------------------删 除 数 据 方 式-------------*/

voiddele(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<<"您已退出删除功能!"<

}//编辑信息

/*-------------------------统 计 数 据-----------------------------*/

void_statistics(Cexecution execution[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(execution[i].sex=="W")

   girl++;

  if(execution[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------------退 出--------------------------------*/

voidexecution_put()

cout<<"谢谢使用教师系统!"<

}//退出

/*--------------------------------从 文 件 中 读 入 数 据----------------------------*/

intopenfile(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();

}//从文件中读入数据

/*----------------------------向 文 件 中 写 入 数 据--------------------------*/

voidclosefile(Cexecution execution[], int &t)

{

 int i,number,age;

 string name,sex,politics,position;

 ofstream fout("execution.txt");

 for(i=0;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 <

politics<<"\t"<

 }

 fout.close();

}//写入数据到文件中

/*-----------------------行 政 人 员 类 总 调 用 函 数-----------------*/

voidexecution_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<<"--------------------------------------------"<

}

/*---------------------行 政 人 员 统 计 函 数-----------------------------*/

voidstatistics_execution()

{

 int t;

 Cexecution execution[Max];

 t=openfile(execution);

 _statistics(execution,t);

/*************************行 政 人 员 兼 教 师******************/

/*----------------------------从 类 中 读 出 数 据 内 容-----------------------*/

voidCtea_exe::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*-----------------------------主 菜 单----------------------------*/

voidtea_exe_muen()

{

 cout<<"----------欢迎进入行政人员兼教师信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}

//主菜单 

/*----------------------------添 加 数 据-------------------------*/

void_add(Ctea_exe *tea_exe, int &t)

{

 int number,age;

 stringname,sex,politics,department,profession,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*----------------------------------查 询 数 据-----------------------------*/

void_query(Ctea_exe tea_exe[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else  

  cout<<"输入错误请重新输入!"<

  }

switch(flag)

{

case 1://编号查询

 {

  do

    {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(tea_exe,nu,t)

   tea_exe[ find_nu(tea_exe,nu,t) ].output();

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

        if(choice == 2)

    break;

    }while(choice == 1);

 };break;

case 2://姓名查询

 {

  do

  {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(tea_exe,na,t)

   tea_exe[ find_na(tea_exe,na,t)].output(); 

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 }

}//查询信息

/*--------------------使 用 编 号 查 询 数 据 方 式-----------------*/

intfind_nu(Ctea_exe tea_exe[], int _nu, int &t)

{

 int i;

 for(i=0;i

  if(tea_exe[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*-----------------使 用 姓 名 查 询 数 据 方 式-------------*/

intfind_na(Ctea_exe tea_exe[], string _na, int &t) 

 {

 int i;

 for(i=0;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职称"<

 for(i=0;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

 {

  tea_exe[ fa ].output();

  add(tea_exe,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*------------------------编 辑 数 据 方 式----------------*/

voidadd(Ctea_exe tea_exe[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,politics,department,profession,position;

 cout<<"请重新输入->姓名,性别,年龄,政治面貌,系部,专业,职称"<

 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<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据----------------------------*/

void_delete(Ctea_exe tea_exe[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(tea_exe,score,t);

 if(de

 {

  tea_exe[ de ].output();

  dele(tea_exe,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*-----------------------------删 除 数 据 方 式------------*/

voiddele(Ctea_exe tea_exe[], int _fa)

{

 int number,age,qr;

 stringname,sex,politics,department,profession,position;

 cout<<"确定删除(1是2否)";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"未删除!"<

}//编辑信息

/*---------------------------统 计 数 据---------------------------*/

void_statistics(Ctea_exe tea_exe[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(tea_exe[i].sex=="W")

   girl++;

  if(tea_exe[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"行政人员兼教师总共有"<

 cout<<"男有"<

}//统计

/*-------------------------------------退 出-------------------------------*/

voidtea_exe_put() 

 {

 cout<<"谢谢使用教师系统!"<

}//退出

/*----------------------------从 文 件 中 读 入 数 据-----------*/

intopenfile(Ctea_exe tea_exe[])

{

 int t,number,age;

 stringname,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();

}//从文件中读入数据  

/*-----------------------向 文 件 中 写 入 数 据-----------------------*/

voidclosefile(Ctea_exe tea_exe[], int &t)

{

 int i,number,age;

 stringname,sex,politics,department,profession,position;

 ofstream fout("tea_exe.txt");

 for(i=0;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 <

politics<<"\t"<

 }

 fout.close();

}//写入数据到文件中

voidtea_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<<"--------------------------------------------"<

}

/*--------------------行 政 人 员 兼 教 师 统 计 函 数------------------------*/

voidstatistics_tea_exe()

{

 int t;

 Ctea_exe tea_exe[Max];

 t=openfile(tea_exe);

 _statistics(tea_exe,t);

}

 

测试部分代码

测试代码.cpp

#include"HEAD.h"

voidstatistics_all()//数据统计行数

{

 statistics_teacher();

statistics_assistant();

 statistics_execution();

 statistics_tea_exe();

}

voidmuen()

{

 cout<<"**********欢迎进入高校信息管理系统***********"<

 cout<<"     1---教师信息,2---实验员信息"<

 cout<<"     3---行政人员,4---教师兼行政人员"<

 cout<<"     5---统计人数,6---退出系统"<

 cout<<"*********************************************"<

 cout<<"请输入您的选择--->:";

}

intmain()

{

      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<<"欢迎再次使用!"<

        exit(0);

  }

   }

 return 0;

}

 

 

 

 

 

面向对象编程实验报告

 

 

 

题目:     高校人员信息管理系统设计与实现                                   

 

 

 

 

学生姓名:      上官冲        

学    号:   201406070125    

院 (系): 电气与信息工程学院

专    业:     网络工程       

 

2016   6  25

 

 

一、            实验目的

1.要求能够熟练掌握C++语言的基本知识和技能。

2.基本掌握面向对象程序设计的基本思路和方法。

3.能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。

二、            实验内容

1、问题描述

某高校有四类员工:教师、实验员、行政人员,教师兼行政人员;共有的信息包括:编号、姓名、性别、年龄等。其中,教师还包含的信息有:所在系部、专业、职称;实验员还包含的信息由:所在实验室、职务;行政人员还包含的信息有:政治面貌、职称等。

2、功能要求

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

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

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

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

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

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

统计男、女员工的数量。

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

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

三、            实验环境

Microsoft Visual studio 2010

四、            设计思路或方案 

1.类设计

此系统共设计了5个类:公有类(class  CCommon),教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe) 

(1)      人员的管理需包含人员的基本信息,所以定义一个公有类如下表所示

                               表一      公有类

类名

公有类

 

数据成员

protected:   int number;     //编号

string name;    //姓名

string sex;    //性别

int age;   //年龄

 

(2)      根据高校人员的工作性质的不同,将所以员工分为五类, 分别是教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe)

                                 表二   教师类

类名

               教师类

 

数据成员

protected:  string department;//所在系部

string profession;//专业 

          string position;//职称

 

成员函数

public: void set(int _number,string _name,string_sex,int_age,string_department,string_profession,string _position)

           void output()

                               表三   实验员类

类名

实验员类

数据成员

protected: string laboratory;   //所在实验室

string position;   //职称

成员函数

public: void set(int_number,string _name,string_sex,int_age,string_laboratory,string_position)

            void output()

表四  行政人员类

类名

行政人员类

数据成员

protected: string politics;//政治面貌

string position;//职称

 

成员函数

public:void set(int _number,string _name,string _sex,int _age,string _politics,string _position)

void output()

表五  教师兼行政人员类

类名

教师兼行政人员类

数据成员

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)

void output()

2.类之间的关系

公有类是基类,教师类、实验员类、行政人员类是其派生类,教师兼行政人员类是教师和行政人员类的派生类,这样定义能使程序变得更加简单,派生类的成员函数和数据成员可使用基类的,使用了派生和继承,使程序变得简单化。

3.函数设计

定义了教师菜单函数,实验员菜单函数,行政人员菜单函数,教师兼行政人员类,这些函数可调用派生类中的添加成员函数,查询成员函数,显示成员函数,编辑成员函数,删除成员函数,统计成员函数,保存成员函数,读取成员函数。

                           

五、            程序清单

/*-------------------------------------共 有 类-------------------------------------*/

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 voidclosefile(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

共设计了5个类:公有类(class  CCommon), 教师类(class Cteacher),实验员类(class Cassistant),行政人员类(class Cexecution),教师兼行政人员类(class Ctea_exe)

函数部分

教师系统(部分代码)

/*----------------------------教师类中的各个函数操作-----------------------*/

void _add(Cteacher *teacher, int &t)//1教师添加信息

{

 int number,age;

 stringname,sex,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }   

 }

}

void _query(Cteacher teacher[], int &t)//2查询信息

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

     while(1)

  { 

         cin>>flag;

  if(1 == flag||2== flag)

   break;

  else 

  cout<<"输入错误请重新输入!"<

  }

 switch(flag)

 {

 case 1://编号查询

 {

       do

    {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(teacher,nu,t) < t)

  teacher[find_nu(teacher,nu,t)].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

    }while(choice== 1);

 };break;

 case 2://姓名查询

 {

     do

    {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(teacher,na,t)

   teacher[find_na(teacher,na,t) ].output();

  else

  cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

     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

 if(teacher[i].number==_nu)

   return i;

 return t;

}

int find_na(Cteacher teacher[], string _na, int &t)//姓名查询方式

{

 int i;

 for(i=0;i

 if(teacher[i].name==_na)

   return i;

 return t; 

}

void _display(Cteacher teacher[], int &t)//3显示功能

{

 int i;

 cout<

 cout<<"编号\t姓名\t性别\t年龄\t系部\t专业\t职称"<

 for(i=0;i

 teacher[i].output();

 cout<<"--------------------------------------------"<

}

void _delete(Cteacher teacher[], int &t)//删除数据

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(teacher,score,t);

 if(de

 {

  teacher[ de].output();

  dele(teacher,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {     cout<<"已退出!"<

  break;

 }

 }

}

void teacher_put()//退出

{

 cout<<"谢谢使用教师系统!"<

}

void teacher_manage()//教师类总调用函数-

{

 Cteacherteacher[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<<"--------------------------------------------"<

}

void _statistics(Cteacher teacher[], int &t)//统计数据

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(teacher[i].sex== "W")

   girl++; 

  if(teacher[i].sex=="M")

   boy++;

 }

 sum = girl+boy;

 cout<<"教师总共有"<

 cout<<"男有"<

}

void statistics_teacher()//教师统计函数

{

 int t;

 Cteacherteacher[Max];

 t =openfile(teacher);

 _statistics(teacher,t);

}

实验员系统(部分代码)

/*****************实 验 员*********************/

/*--------------------------添 加 数 据------------------------*/

void _add(Cassistant *assistant, int &t)

{

 int number,age;

 stringname,sex,laboratory,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*------------------------查 询 数 据-----------------------------*/

void _query(Cassistant assistant[], int &t)

    int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

 while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag)

   break;

  else 

  cout<<"输入错误请重新输入";

  }

switch(flag)

{

 case 1://编号查询

 {

  do

  {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(assistant,nu,t)

   assistant[find_nu(assistant,nu,t) ].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

  }while(choice ==1); 

 };break;

 case 2://姓名查询

 {

      do

  {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(assistant,na,t)

   assistant[find_na(assistant,na,t) ].output();

  else

  cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

  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

 if(assistant[i].number==_nu)

  return i;

 return t;

}//编号查询方式

/*---------使 用 姓 名 查 询 数 据 方 式-----------------*/

int find_na(Cassistant assistant[], string _na, int&t)

{

 int i;

 for(i=0;i

 if(assistant[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*----------------------------删 除 数 据--------------------------*/

void _delete(Cassistant assistant[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(assistant,score,t);

 if(de

 {

  assistant[ de].output();

 dele(assistant,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*-----------------统 计 数 据--------------------------------*/

void _statistics(Cassistant assistant[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(assistant[i].sex=="W")

   girl++;

 if(assistant[i].sex=="M")

   boy++;

 }

 sum=girl+boy; 

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*-----------------------实 验 员 类 总 调 用 函 数-----------------------------*/

void assistant_manage()

{

 Cassistantassistant[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<<"--------------------------------------------"<

 }

/*--------------------------------实 验 员 统 计 函 数-----------------------------*/

void statistics_assistant()

{

 int t;

 Cassistant assistant[Max];

 t=openfile(assistant);

 _statistics(assistant,t);

}

行政人员系统(部分代码)

/*************************行 政 人 员*****************************/

/*----------------------------添 加 数 据-----------------*/

void _add(Cexecution *execution, int &t)

{

 int number,age;

 stringname,sex,politics,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*---------------------------查 询 数 据--------------------*/

void _query(Cexecution execution[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

  while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag) 

      break;

  else 

  cout<<"输入错误请重新输入";

  }

switch(flag)

{

    case 1://编号查询

  {

     do

     {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(execution,nu,t)

   execution[find_nu(execution,nu,t) ].output();

  else

  cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

  cin>>choice;

   if(choice == 2)

    break;

     }while(choice== 1);

  };break;

    case 2://姓名查询

  {

      do

   {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(execution,na,t)

      execution[ find_na(execution,na,t)].output();

  else

  cout<<"查无此人!"<

cout<<"是否继续1是2否"<

  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

 if(execution[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*---------------------------使 用 姓 名 查 询 数 据 方 式 ----------------------------*/

int find_na(Cexecution execution[], string _na, int&t)

{

 int i;

 for(i=0;i

 if(execution[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*-----------------------------------编 辑 数 据-----------------------------*/

void _edit(Cexecution execution[], int &t)

{

 intscore,fa,choice;

while(1)

{  cout<<"请输入需要编辑的编号:"<

 cin>>score;

 fa =find_nu(execution,score,t);

 if(fa

 {

 execution[fa].output();

 add(execution,fa);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

    cin>>choice;

     if(choice !=1)

      break;

}

}//编辑功能

/*----------------------------删 除 数 据-----------------------*/

void _delete(Cexecution execution[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(execution,score,t);

 if(de

 {

  execution[ de].output();

 dele(execution,de);

 }    else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*-------------------------统 计 数 据-----------------------------*/

void _statistics(Cexecution execution[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(execution[i].sex=="W")

   girl++;

 if(execution[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------------退 出--------------------------------*/

void execution_put()

cout<<"谢谢使用教师系统!"<

}//退出

/*-----------------------行 政 人 员 类 总 调 用 函 数-----------------*/

void execution_manage()

{

 Cexecutionexecution[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<<"--------------------------------------------"<

}

行政人员兼教师系统(部分代码)

*************************行 政 人 员 兼 教 师******************/

//主菜单 

/*----------------------------添 加 数 据-------------------------*/

void _add(Ctea_exe *tea_exe, int &t)

{

 int number,age;

 stringname,sex,politics,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*----------------------------------查 询 数 据-----------------------------*/

void _query(Ctea_exe tea_exe[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

while(1)

  {

  cin>>flag;

  if(1 == flag||2== flag)

   break;

  else  

 cout<<"输入错误请重新输入!"<

  }

switch(flag)

{

case 1://编号查询

 {

  do

    {

 cout<<"请输入编号!"<

  cin>>nu;

 if(find_nu(tea_exe,nu,t)

   tea_exe[find_nu(tea_exe,nu,t) ].output();

  else

  cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  cin>>choice;

        if(choice== 2)

    break;

    }while(choice== 1);

 };break;

case 2://姓名查询

 {

  do

  {

 cout<<"请输入姓名!"<

  cin>>na;

 if(find_na(tea_exe,na,t)

   tea_exe[find_na(tea_exe,na,t) ].output(); 

  else

   cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

  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

 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

  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职称"<

 for(i=0;i

  tea_exe[i].output();

}//显示功能

/*----------------------------------编 辑 数 据--------------------------*/

void _edit(Ctea_exe tea_exe[], int &t)

{

  intscore,fa,choice;

 while(1)

 {

 cout<<"请输入需要编辑的编号:";

 cin>>score;

 fa =find_nu(tea_exe,score,t);

 if(fa

 {

  tea_exe[ fa].output();

  add(tea_exe,fa);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*----------------------------删 除 数 据----------------------------*/

void _delete(Ctea_exe tea_exe[], int &t)

{

 intscore,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(tea_exe,score,t);

 if(de

 {

  tea_exe[ de].output();

  dele(tea_exe,de);

 }

 else

 cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

 cout<<"已退出!"<

  break;

 }

 }

}

/*---------------------------统 计 数 据---------------------------*/

void _statistics(Ctea_exe tea_exe[], int &t)

{

 inti,boy=0,girl=0,sum=0;

 for(i=0;i

 {

 if(tea_exe[i].sex=="W")

   girl++;

 if(tea_exe[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"行政人员兼教师总共有"<

 cout<<"男有"<

}//统计

/*-------------------------------------退 出-------------------------------*/

void tea_exe_put() 

 {

 cout<<"谢谢使用教师系统!"<

}//退出

void tea_exe_manage()

{

 Ctea_exetea_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<<"--------------------------------------------"<

}

/*--------------------行 政 人 员 兼 教 师 统 计 函 数------------------------*/

void statistics_tea_exe()

{

 int t;

 Ctea_exetea_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<<"**********欢迎进入高校信息管理系统***********"<

 cout<<"     1---教师信息,2---实验员信息"<

 cout<<"     3---行政人员,4---教师兼行政人员"<

 cout<<"     5---统计人数,6---退出系统"<

 cout<<"*********************************************"<

 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<<"欢迎再次使用!"<

      exit(0);

  }

   }

 return 0;

}

 

 

六、            调试结果及分析

主界面:

按1进入教师信息界面进行部分操作演示

按2进入实验员信息界面并进行部分操作演示

 

按3进入行政人员信息系统并演示部分操作

按7进入教师兼行政人员信息界面并进行部分操作

按5统计人数

按6退出系统

 

 

 

 

 

 

 

  

七、   总结

本次课程设计完成的基本顺利,有些不明白的已经自己看书或向同学请教后明白了,我觉得我设计好的系统各项功能都能实现,优点是可实现的功能很全,而且很简单,缺点是实现各项功能的方法较少,基本只有一种或两种方法。可改进的地方是实现各功能的方法,可以按多种渠道实现功能。这次课程设计让我增长了很多知识更深一步地掌握了虚函数,纯虚函数,继承与派生,文件的使用方法。当我自己独立完成这个设计的时候,内心有一种很强的满足感。对此,我要感谢我的指导老师田延安的辛苦教导。最后,我很高兴完成这项设计,因为我受益匪浅。

八、参考文献

[1]谭浩强著.C程序设计第三版北京清华大学出版社

[2]吕凤翥编著.C++语言基础教程第二版北京清华大学出版社

附源代码:

头文件

Head.h

#ifndef_HEADC_H

#define_HEADC_H

#include

#include

#include

#include

usingnamespace std;

/*-------------------------------------共 有 类-------------------------------------*/

classCCommon//公有类

{

protected:

intnumber;//编号

stringname;//姓名

stringsex;//性别

intage;//年龄

};

/*------------------------教 师 类--------------------------------------*/

classCteacher:

publicCCommon//教师类

{

protected:

stringdepartment;//所在系部

stringprofession;//专业 

 string position;//职称

public:

voidset(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;

}//输入教师数据

voidoutput();

~Cteacher()

{

}//析构函数

friendint find_nu(Cteacher teacher[], int _nu, int &t);

friendint find_na(Cteacher teacher[], string _na, int &t);

friendvoid add(Cteacher teacher[], int _fa);

friendvoid dele(Cteacher teacher[], int _fa);

friendvoid closefile(Cteacher teacher[] ,int &t);

friendvoid _statistics(Cteacher teacher[], int &t);

};

voidteacher_manage();

/*----------------------------实 验 员 类-------------------------------------------*/

classCassistant:public CCommon//实验员类

{

protected:

stringlaboratory;//所在实验室

stringposition;//职称

public:

voidset(int _number,string _name,string _sex,int _age,string _laboratory,string

_position)

{

number =_number;

name =_name;

sex =_sex;

age =_age;

laboratory= _laboratory;

position= _position;

}//输入实验员数据

voidoutput();

~Cassistant()

{

}//析构函数

friendint find_nu(Cassistant assistant[], int _nu, int &t);

friendint find_na(Cassistant assistant[], string _na, int &t);

friendvoid add(Cassistant assistant[], int _fa);

friendvoid dele(Cassistant assistant[], int _fa); 

 friend void closefile(Cassistant assistant[],int &t);

friendvoid _statistics(Cassistant assistant[], int &t);

};

voidassistant_manage();

/*----------------------------行 政 人 员 类--------------------------------------------*/

classCexecution:public CCommon//行政人员类

{

protected:

stringpolitics;//政治面貌

stringposition;//职称

public:

voidset(int _number,string _name,string _sex,int _age,string _politics,string

_position)

{

number =_number;

name =_name;

sex =_sex;

age =_age;

politics= _politics;

position= _position;

}//输入行政人员数据

voidoutput();

~Cexecution()

{

}//析构函数 

friendint find_nu(Cexecution execution[], int _nu, int &t);

friendint find_na(Cexecution execution[], string _na, int &t);

friendvoid add(Cexecution execution[], int _fa);

friendvoid dele(Cexecution execution[], int _fa);

friendvoid closefile(Cexecution execution[] ,int &t);

friendvoid _statistics(Cexecution execution[], int &t);

};

voidexecution_manage();

/*---------------------------行 政 人 员 兼 教 师 类-------------------------------------*/

classCtea_exe:public CCommon//行政人员兼教师类

{

protected:

stringpolitics;//政治面貌

stringdepartment;//所在系部

stringprofession;//专业

stringposition;//职称

public:

voidset(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;

}//输入行政人员兼教师数据

voidoutput();

~Ctea_exe()

{

}//析构函数

friendint find_nu(Ctea_exe tea_exe[], int _nu, int &t);

friendint find_na(Ctea_exe tea_exe[], string _na, int &t);

friendvoid add(Ctea_exe tea_exe[], int _fa);

friendvoid dele(Ctea_exe tea_exe[], int _fa);

friendvoid closefile(Ctea_exe tea_exe[] ,int &t);

friendvoid _statistics(Ctea_exe tea_exe[], int &t);

};

voidtea_exe_manage();

/*---------------------------------统 计 总 人 数---------------------------------------*/

voidstatistics_all();//数据统计数

voidstatistics_teacher();

voidstatistics_assistant();

voidstatistics_execution();

voidstatistics_tea_exe();

voidorder(); 

const intMax = 100;//各人员总人数最大值

#endif

函数部分代码

函数.cpp

#include"HEAD.h"

/*----------------------------教师类中的各个函数操作-----------------------*/

voidCteacher::output()//教师读出数据内容

{

 cout<

 cout<

 cout<

 cout<

}

voidteacher_muen()//教师主菜单

{

 cout<

 cout<<"----------欢迎进入教师信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}

void_add(Cteacher *teacher, int &t)//1教师添加信息

{

 int number,age;

 stringname,sex,department,profession,position;

 cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }   

 }

}

void_query(Cteacher teacher[], int &t)//2查询信息

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

     while(1)

  { 

               cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else 

   cout<<"输入错误请重新输入!"<

  }

 switch(flag)

 {

 case 1://编号查询

 {

       do

    {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(teacher,nu,t) < t)

   teacher[find_nu(teacher,nu,t)].output();

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 case 2://姓名查询

 {

     do

    {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(teacher,na,t)

   teacher[ find_na(teacher,na,t) ].output();

  else

   cout<<"查无此人!"<

   cout<<"是否继续1是2否"<

      cin>>choice;

           if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 }

}

intfind_nu(Cteacher teacher[], int _nu, int &t)//编号查询方式

{

 int i;

 for(i=0;i

  if(teacher[i].number==_nu)

   return i;

 return t;

}

intfind_na(Cteacher teacher[], string _na, int &t)//姓名查询方式

{

 int i;

 for(i=0;i

  if(teacher[i].name==_na)

   return i;

 return t; 

}

void_display(Cteacher teacher[], int &t)//3显示功能

{

 int i;

 cout<

 cout<<"编号\t姓名\t性别\t年龄\t系部\t专业\t职称"<

 for(i=0;i

  teacher[i].output();

 cout<<"--------------------------------------------"<

}

void_edit(Cteacher teacher[], int &t)//4编辑数据-

{

 int score,fa,choice;

 while(1)

 {

 cout<<"请输入需要编辑的编号:";

 cin>>score; 

 fa = find_nu(teacher,score,t);

 if(fa

 {

  teacher[ fa ].output();

  add(teacher,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}

voidadd(Cteacher teacher[], int _fa)//编辑数据方式

{

 int number=_fa+1,age;

 stringname,sex,department,profession,position;

 cout<<"请重新输入:"<

 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<<"输入性别错误,请重新输入!"<

 }

}

void_delete(Cteacher teacher[], int &t)//删除数据

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(teacher,score,t);

 if(de

 {

  teacher[ de ].output();

  dele(teacher,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {    cout<<"已退出!"<

  break;

 }

 }

}

void dele(Cteacherteacher[], int _fa)//删除数据方式

{

 int number,age,qr;

 stringname,sex,department,profession,position;

 cout<<"确定删除(1是2否):";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"未删除!"<

}

voidteacher_put()//退出

{

 cout<<"谢谢使用教师系统!"<

}

intopenfile(Cteacher teacher[])//从文件中读入数据

{

 int t,number,age;

 stringname,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();

voidclosefile(Cteacher teacher[], int &t)//向文件中写入数据

{

 int i,number,age;

 stringname,sex,department,profession,position;

 ofstream fout("teacher.txt");

 for(i=0;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 <

department<<"\t"<

 }

 fout.close();

}

voidteacher_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<<"--------------------------------------------"<

}

void_statistics(Cteacher teacher[], int &t)//统计数据

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(teacher[i].sex == "W")

   girl++; 

   if(teacher[i].sex=="M")

   boy++;

 }

 sum = girl+boy;

 cout<<"教师总共有"<

 cout<<"男有"<

}

voidstatistics_teacher()//教师统计函数

{

 int t;

 Cteacher teacher[Max];

 t = openfile(teacher);

 _statistics(teacher,t);

}

/*****************实 验 员*********************/

/*--------------------从 类 中 读 出 数 据 内 容---------------------*/

voidCassistant::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*--------------------主 菜 单-----------------------------*/

voidassistant_muen()

{

 cout<<"----------欢迎进入实验员信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}//主菜单

/*--------------------------添 加 数 据------------------------*/

void_add(Cassistant *assistant, int &t)

{

 int number,age;

 string name,sex,laboratory,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*------------------------查 询 数 据-----------------------------*/

void_query(Cassistant assistant[], int &t)

       int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

 while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else 

   cout<<"输入错误请重新输入";

  }

switch(flag)

{

 case 1://编号查询

 {

  do

  {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(assistant,nu,t)

   assistant[ find_nu(assistant,nu,t)].output();

  else

   cout<<"查无此人!"<

 cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

  }while(choice == 1); 

 };break;

 case 2://姓名查询

 {

      do

  {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(assistant,na,t)

   assistant[ find_na(assistant,na,t) ].output();

  else

   cout<<"查无此人!"<

    cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

};

}//查询信息

/*------------使 用 编 号 查 询 数 据 方 式--------------------*/

intfind_nu(Cassistant assistant[], int _nu, int &t)

{

       int i;

 for(i=0;i

  if(assistant[i].number==_nu)

  return i;

 return t;

}//编号查询方式

/*---------使 用 姓 名 查 询 数 据 方 式-----------------*/

intfind_na(Cassistant assistant[], string _na, int &t)

{

 int i;

 for(i=0;i

  if(assistant[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*------------------------------显 示 数 据--------------------------------*/

void_display(Cassistant assistant[], int &t)

{

 int i;

 cout<<"编号\t姓名\t性别\t年龄\t实验室\t职称"<

 for(i=0;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

 {

  assistant[ fa ].output();

  add(assistant,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*------------------------编 辑 数 据 方 式-----------------*/ 

voidadd(Cassistant assistant[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,laboratory,position;

 cout<<"请重新输入->实验员姓名,性别,年龄,实验室,职称"<

 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;

 }

 else

  cout<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据--------------------------*/

void_delete(Cassistant assistant[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(assistant,score,t);

 if(de

 {

  assistant[ de ].output();

  dele(assistant,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*------------------------删 除 数 据 方 式------------------*/

 

voiddele(Cassistant assistant[], int _fa)

{

 int number,age,qr;

 string name,sex,laboratory,position;

 cout<<"确定删除(1是2否):";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"您已退出删除功能!"<

}//编辑信息

/*-----------------统 计 数 据--------------------------------*/

void_statistics(Cassistant assistant[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(assistant[i].sex=="W")

   girl++;

  if(assistant[i].sex=="M")

   boy++;

 }

 sum=girl+boy; 

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------退 出--------------------------------*/

voidassistant_put()

{

 cout<<"谢谢使用教师系统!"<

}//退出

/*------------------------------从 文 件 中 读 入 数 据----------------------------*/

intopenfile(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();

}//从文件中读入数据

/*--------------------------向 文 件 中 写 入 数 据-----------------------------*/

voidclosefile(Cassistant assistant[], int &t)

{

 int i,number,age;

 string name,sex,laboratory,position;

 ofstream fout("assistant.txt");

 for(i=0;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 <

laboratory<<"\t"<

 }

 fout.close(); 

}//写入数据到文件中

/*-----------------------实 验 员 类 总 调 用 函 数-----------------------------*/

voidassistant_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<<"--------------------------------------------"<

 }

/*--------------------------------实 验 员 统 计 函 数-----------------------------*/

voidstatistics_assistant()

{

 int t;

 Cassistant assistant[Max];

 t=openfile(assistant);

 _statistics(assistant,t);

}

/*************************行 政 人 员*****************************/

voidCexecution::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*----主 菜 单-----------------------*/

voidexecution_muen() 

{

 cout<<"----------欢迎进入行政人员信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

}//主菜单

/*----------------------------添 加 数 据-----------------*/

void_add(Cexecution *execution, int &t)

{

 int number,age;

 string name,sex,politics,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*---------------------------查 询 数 据--------------------*/

void_query(Cexecution execution[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

  while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag) 

        break;

  else 

   cout<<"输入错误请重新输入";

  }

switch(flag)

{

    case 1://编号查询

  {

     do

     {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(execution,nu,t)

   execution[ find_nu(execution,nu,t)].output();

  else

   cout<<"查无此人!"<

    cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

     }while(choice == 1);

  };break;

    case 2://姓名查询

  {

      do

   {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(execution,na,t)

        execution[ find_na(execution,na,t) ].output();

  else

   cout<<"查无此人!"<

cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

   }while(choice == 1);

  };break;

}

 

 

 

 

 

}//查询信息

/*-----------------使 用 编 号 查 询 数 据 方 式------------------*/

intfind_nu(Cexecution execution[], int _nu, int &t)

{

 int i;

 for(i=0;i

  if(execution[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*---------------------------使 用 姓 名 查 询 数 据 方 式 ----------------------------*/

intfind_na(Cexecution execution[], string _na, int &t)

{

 int i;

 for(i=0;i

  if(execution[i].name==_na)

   return i;

 return t;

}//姓名查询方式

/*-------------------------显 示 数 据---------------------------*/

void_display(Cexecution execution[], int &t)

{

 int i;

 cout<<"编号\t姓名\t性别\t年龄\t政治面貌\t职称"<

 for(i=0;i

  execution[i].output();

}//显示功能

/*-----------------------------------编 辑 数 据-----------------------------*/

void_edit(Cexecution execution[], int &t)

{

 int score,fa,choice;

while(1)

{   cout<<"请输入需要编辑的编号:"<

 cin>>score;

 fa = find_nu(execution,score,t);

 if(fa

 {

  execution[fa].output();

  add(execution,fa);

 }

 else

  cout<<"查无此人!"<

  cout<<"是否继续(1是2否):";

     cin>>choice;

    if(choice != 1)

      break;

}

}//编辑功能

/*---------------------------编 辑 数 据 方 式-----------*/

voidadd(Cexecution execution[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,politics,position;

 cout<<"请重新输入->姓名,性别,年龄,政治面貌,职称"<

 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<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据-----------------------*/

void_delete(Cexecution execution[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(execution,score,t);

 if(de

 {

  execution[ de ].output();

  dele(execution,de);

 }   else

  cout<<"查无此人!"<

  cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*----------------------删 除 数 据 方 式-------------*/

voiddele(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<<"您已退出删除功能!"<

}//编辑信息

/*-------------------------统 计 数 据-----------------------------*/

void_statistics(Cexecution execution[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(execution[i].sex=="W")

   girl++;

  if(execution[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"实验员总共有"<

 cout<<"男有"<

}//统计

/*--------------------------------退 出--------------------------------*/

voidexecution_put()

cout<<"谢谢使用教师系统!"<

}//退出

/*--------------------------------从 文 件 中 读 入 数 据----------------------------*/

intopenfile(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();

}//从文件中读入数据

/*----------------------------向 文 件 中 写 入 数 据--------------------------*/

voidclosefile(Cexecution execution[], int &t)

{

 int i,number,age;

 string name,sex,politics,position;

 ofstream fout("execution.txt");

 for(i=0;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 <

politics<<"\t"<

 }

 fout.close();

}//写入数据到文件中

/*-----------------------行 政 人 员 类 总 调 用 函 数-----------------*/

voidexecution_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<<"--------------------------------------------"<

}

/*---------------------行 政 人 员 统 计 函 数-----------------------------*/

voidstatistics_execution()

{

 int t;

 Cexecution execution[Max];

 t=openfile(execution);

 _statistics(execution,t);

/*************************行 政 人 员 兼 教 师******************/

/*----------------------------从 类 中 读 出 数 据 内 容-----------------------*/

voidCtea_exe::output()

{

 cout<

 cout<

 cout<

 cout<

}//读出数据内容

/*-----------------------------主 菜 单----------------------------*/

voidtea_exe_muen()

{

 cout<<"----------欢迎进入行政人员兼教师信息管理系统----------"<

 cout<<"     1---添加信息,  2---查询信息"<

 cout<<"     3---显示信息,  4---编辑信息"<

 cout<<"     5---删除信息,  6---统计信息"<

 cout<<"     7---退出"<

 cout<<"--------------------------------------------"<

 cout<<"请输入您的选择--->:";

}

//主菜单 

/*----------------------------添 加 数 据-------------------------*/

void_add(Ctea_exe *tea_exe, int &t)

{

 int number,age;

 stringname,sex,politics,department,profession,position;

  cout<<"添加信息->请输入:"<

 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<<"输入性别错误,请重新输入!"<

  }

 }

}//添加信息

/*----------------------------------查 询 数 据-----------------------------*/

void_query(Ctea_exe tea_exe[], int &t)

{

 int choice;

 int flag,nu;

 string na;

 cout<<"1---编号,2---姓名"<

while(1)

  {

  cin>>flag;

  if(1 == flag||2 == flag)

   break;

  else  

  cout<<"输入错误请重新输入!"<

  }

switch(flag)

{

case 1://编号查询

 {

  do

    {

  cout<<"请输入编号!"<

  cin>>nu;

  if(find_nu(tea_exe,nu,t)

   tea_exe[ find_nu(tea_exe,nu,t) ].output();

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

        if(choice == 2)

    break;

    }while(choice == 1);

 };break;

case 2://姓名查询

 {

  do

  {

  cout<<"请输入姓名!"<

  cin>>na;

  if(find_na(tea_exe,na,t)

   tea_exe[ find_na(tea_exe,na,t)].output(); 

  else

   cout<<"查无此人!"<

  cout<<"是否继续1是2否"<

   cin>>choice;

   if(choice == 2)

    break;

    }while(choice == 1);

 };break;

 }

}//查询信息

/*--------------------使 用 编 号 查 询 数 据 方 式-----------------*/

intfind_nu(Ctea_exe tea_exe[], int _nu, int &t)

{

 int i;

 for(i=0;i

  if(tea_exe[i].number==_nu)

   return i;

 return t;

}//编号查询方式

/*-----------------使 用 姓 名 查 询 数 据 方 式-------------*/

intfind_na(Ctea_exe tea_exe[], string _na, int &t) 

 {

 int i;

 for(i=0;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职称"<

 for(i=0;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

 {

  tea_exe[ fa ].output();

  add(tea_exe,fa);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice;

 if(choice != 1)

  break;

 }

}//编辑功能

/*------------------------编 辑 数 据 方 式----------------*/

voidadd(Ctea_exe tea_exe[], int _fa)

{

 int number=_fa+1,age;

 string name,sex,politics,department,profession,position;

 cout<<"请重新输入->姓名,性别,年龄,政治面貌,系部,专业,职称"<

 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<<"输入性别错误,请重新输入!"<

 }

}//编辑信息

/*----------------------------删 除 数 据----------------------------*/

void_delete(Ctea_exe tea_exe[], int &t)

{

 int score,de,choice1;

 while(1)

 {

 cout<<"请输入需要删除的编号!"<

 cin>>score;

 de=find_nu(tea_exe,score,t);

 if(de

 {

  tea_exe[ de ].output();

  dele(tea_exe,de);

 }

 else

  cout<<"查无此人!"<

 cout<<"是否继续(1是2否):";

 cin>>choice1;

 if(choice1 == 2)

 {

  cout<<"已退出!"<

  break;

 }

 }

}

/*-----------------------------删 除 数 据 方 式------------*/

voiddele(Ctea_exe tea_exe[], int _fa)

{

 int number,age,qr;

 stringname,sex,politics,department,profession,position;

 cout<<"确定删除(1是2否)";

 cin>>qr;

 if(qr==1)

 {

  cout<<"已删除!"<

  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<<"未删除!"<

}//编辑信息

/*---------------------------统 计 数 据---------------------------*/

void_statistics(Ctea_exe tea_exe[], int &t)

{

 int i,boy=0,girl=0,sum=0;

 for(i=0;i

 {

  if(tea_exe[i].sex=="W")

   girl++;

  if(tea_exe[i].sex=="M")

   boy++;

 }

 sum=girl+boy;

 cout<<"行政人员兼教师总共有"<

 cout<<"男有"<

}//统计

/*-------------------------------------退 出-------------------------------*/

voidtea_exe_put() 

 {

 cout<<"谢谢使用教师系统!"<

}//退出

/*----------------------------从 文 件 中 读 入 数 据-----------*/

intopenfile(Ctea_exe tea_exe[])

{

 int t,number,age;

 stringname,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();

}//从文件中读入数据  

/*-----------------------向 文 件 中 写 入 数 据-----------------------*/

voidclosefile(Ctea_exe tea_exe[], int &t)

{

 int i,number,age;

 stringname,sex,politics,department,profession,position;

 ofstream fout("tea_exe.txt");

 for(i=0;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 <

politics<<"\t"<

 }

 fout.close();

}//写入数据到文件中

voidtea_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<<"--------------------------------------------"<

}

/*--------------------行 政 人 员 兼 教 师 统 计 函 数------------------------*/

voidstatistics_tea_exe()

{

 int t;

 Ctea_exe tea_exe[Max];

 t=openfile(tea_exe);

 _statistics(tea_exe,t);

}

 

测试部分代码

测试代码.cpp

#include"HEAD.h"

voidstatistics_all()//数据统计行数

{

 statistics_teacher();

statistics_assistant();

 statistics_execution();

 statistics_tea_exe();

}

voidmuen()

{

 cout<<"**********欢迎进入高校信息管理系统***********"<

 cout<<"     1---教师信息,2---实验员信息"<

 cout<<"     3---行政人员,4---教师兼行政人员"<

 cout<<"     5---统计人数,6---退出系统"<

 cout<<"*********************************************"<

 cout<<"请输入您的选择--->:";

}

intmain()

{

      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<<"欢迎再次使用!"<

        exit(0);

  }

   }

 return 0;

}

 

你可能感兴趣的:(C++)