教职工信息管理系统

一、问题描述
设计一个学校职工管理系统,要求实现如下功能:建立职工信息数据,包括职工编号、
姓名、 性别、工资、出生时间、岗位、参加工作时间和年龄(必须计算得到),初始模拟数据 通过文本文件创建(记录不少于 20 个),通过程序载入。求职工(工人和教师分开)的平均
年龄;查找、添加或删除一个雇员;浏览全部信息等。
二、基本要求
(1)使用面向对象编程思想编写开发过程中需要用到的类,比如:使用继承的方法构造 3 个类 :雇员类(虚基类),教师类(有职称和所在系,按职称工资发工资)和工人类(派生类,有技术级和部门,按技术级发工资))。管理类,实现对职工的管理。
总体来说需要四个类,定义了employee类(雇员类),Teacher类(教师类),Worker类(工人类)以及Admin类(管理类)。但是这里涉及到了工作时间和年龄,考虑采用Data类,获取当前时间结点然后对A年龄进行计算。
(2)用文本编辑器编辑一个文本文件(总数 20 人以上)包含各类人员的信息,程序运
行时进行初始化数据, 使用 vector 数组存放对象指针。并能保存数据为磁盘文件。
(3)编写同名 display()成员函数既虚函数,用来输出所有雇员的信息。要求对<<和>>运 算符进行重载,实现信息的输入,输出。
(4)菜单功能: 添加人员,修改人员信息,浏览人员信息,按Name查找,平均年龄, 删除人员。

基本流程图

(1)类定义
//teacher.h
#include <string>//用string定义数据类型
#include <iostream>//基本的输入输出函数
#include <vector>//vector数组
#include <fstream>//文件操作,打开文件,关闭文件函数
#include <conio.h>//用getch()函数 ,暂停屏幕,便于观看数据
class employee//雇员类
{public:int number;string name;string sex;int birthtime;string post;int worktime;int age;
};
//教师类,继承雇员类 teacher.hclass Teacher:public employee{public:string title;string system;double salary;
};
//工人类,继承雇员类   teacher.h
class Worker:public employee{public:string department;int level;double salary;
};
//管理类,实现增删改查   teacher.h
class Admin{public:vector<Teacher>tlist;//储存教师信息的vector数组 vector<Worker>wlist;//储存工人信息的 vector数组 int ReadTeacher(); //读取教师信息文件 int ReadWorker();//读取工人信息文件 void Writeteacher();//写入教师信息文件 void Writeworker();//写入工人信息文件 void Display_teacher();//显示所有教师信息 void Display_worker();//显示所有工人信息 void Add_teacher();//添加教师信息  void Add_worker();//添加工人信息   void find_teacher();//按Name查找Teacher  void find_worker();//按Name查找工人  void del_teacher();//删除教师信息  void del_worker();//删除工人信息   void menu_teacher();// 教师菜单 void menu_worker();//  工人菜单 double arrage_teacher();// 教师平均Age double arrage_worker();// 工人平均Age void change_teacher();//修改教师信息void change_worker();//修改工人信息
};
(2)增删改查函数的实现
//教职工信息管理系统.cpp
int Admin::ReadTeacher()//读取文件内的教师数据
{fstream readfile("teacher.txt");int tow=0;if(readfile){Teacher t;if (!(readfile >> t.number>>t.name>>t.sex>>t.salary>>t.birthtime>>t.post>>t.worktime>>t.age>>t.title>>t.system))//如果第一次读取为空{cout << "\t空"<<endl;return 1;}tlist.push_back(t);tow++;while(readfile >> t.number>>t.name>>t.sex>>t.salary>>t.birthtime>>t.post>>t.worktime>>t.age>>t.title>>t.system)//读取后存入vector容器中{tow++;tlist.push_back(t); //vector数组第要调用 push_back函数进行读入 }cout<<"所有 信息加载成功......."<<endl; readfile.close();//文件操作完成后,需要关闭文件 return tow;}else{ofstream outfile;//磁盘中不存在文件的话则创建outfile.open("teacher.txt");//创建通讯录文件 if (!outfile.is_open()) //未能打开新创建的文件 {cout << "文件没有创建!"<<endl;return -1;}else{cout << "文件不存在,但是已经创建!\n";cout << "\t文件夹为空\n";}outfile.close();//文件操作完成后,需要关闭文件 }return 2;
}
//教职工信息管理系统.cpp
int Admin::ReadWorker()//读取文件内的工人数据
{fstream readfile("worker.txt");int wow=0;if(readfile){Worker w;if (!(readfile >> w.number>>w.name>>w.sex>>w.salary>>w.birthtime>>w.post>>w.worktime>>w.age>>w.department>>w.level))//如果第一次读取为空{cout << "\t空"<<endl;return 1;}wlist.push_back(w);wow++;while(readfile >> w.number>>w.name>>w.sex>>w.salary>>w.birthtime>>w.post>>w.worktime>>w.age>>w.department>>w.level)//读取后存入vector容器中{wow++;wlist.push_back(w); //vector数组第要调用 push_back函数进行读入 }cout<<"所有  信息加载成功......."<<endl; readfile.close();//文件操作完成后,需要关闭文件 return wow;}else{ofstream outfile;//磁盘中不存在文件的话则创建outfile.open("worker.txt");//创建通讯录文件 if (!outfile.is_open()) //未能打开新创建的文件 {cout << "文件没有创建!"<<endl;return -1;}else{cout << "文件不存在,但是已经创建!\n";cout << "\t文件夹为空\n";}outfile.close();//文件操作完成后,需要关闭文件 }return 2;
}
//教职工信息管理系统.cpp
void Admin::Writeteacher()//向文件内写入教师数据
{ofstream outfile("teacher.txt");//打开文件 vector<Teacher>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->tlist.begin();iter!=this->tlist.end();iter++){iter->age=2020-iter->birthtime/10000;outfile<<iter->number<<"\t"<<iter->name<<"\t"<<iter->sex<<"\t"<<iter->salary<<"\t"<<iter->birthtime<<"\t"<<iter->post<<"\t"<<iter->worktime<<"\t"<<iter->age<<"\t"<<iter->title<<"\t"<<iter->system<<endl;}outfile.close(); //关闭文件
}
//教职工信息管理系统.cpp
void Admin::Writeworker()//向文件内写入工人数据
{ofstream outfile("worker.txt");//打开文件 vector<Worker>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->wlist.begin();iter!=this->wlist.end();iter++){iter->age=2020-iter->birthtime/10000;outfile<<iter->number<<"\t"<<iter->name<<"\t"<<iter->sex<<"\t"<<iter->salary<<"\t"<<iter->birthtime<<"\t"<<iter->post<<"\t"<<iter->worktime<<"\t"<<iter->age<<"\t"<<iter->department<<"\t"<<iter->level<<endl;}outfile.close(); //关闭文件
}
//教职工信息管理系统.cpp
void Admin::Display_teacher()//显示所有的教师信息
{vector<Teacher>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->tlist.begin();iter!=this->tlist.end();iter++){cout<<"Number: "<<iter->number<<"\t\tName:"<<iter->name<<"\tSex:"<<iter->sex<<"\tSalary:"<<iter->salary<<"\tBirthtime: "<<iter->birthtime<<"\nPost:"<<iter->post<<"\tWorktime:"<<iter->worktime<<"\tAge:"<<iter->age<<"\ttitle: "<<iter->title<<"\tsystem:"<<iter->system<<endl<<endl;}
}
void Admin::Display_worker() //显示所有的工人信息
{vector<Worker>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->wlist.begin();iter!=this->wlist.end();iter++){cout<<"Number: "<<iter->number<<"\t\t Name:"<<iter->name<<"\tSex:"<<iter->sex<<"\tSalary:"<<iter->salary<<"\tBirthtime: "<<iter->birthtime<<"\nPost:"<<iter->post<<"\tWorktime:"<<iter->worktime<<"\tAge:"<<iter->age<<"\tdepartment: "<<iter->department<<"\tlevel:"<<iter->level<<endl<<endl;}
}
//教职工信息管理系统.cpp
void Admin::Add_teacher() //添加教师信息
{Teacher t;cout<<"Input Teacher Number:";cin>>t.number;cout<<"Input Teacher Name:";cin>>t.name;cout<<"Input Teacher Sex:";cin>>t.sex;cout<<"Input Teacher Salary:";cin>>t.salary;cout<<"Input Teacher出生日期:";cin>>t.birthtime;cout<<"Input Teacher WorkTime:";cin>>t.worktime;cout<<"Input Teacher岗位:";cin>>t.post;cout<<"Input Teacher title:";cin>>t.title;cout<<"Input Teacher所在系:";cin>>t.system;t.age=2020-t.birthtime/10000;//计算输入人物的Age tlist.push_back(t);//向Teacher数组中添加数据 this->Writeteacher();//保存数据
}
//教职工信息管理系统.cpp
void Admin::Add_worker()//添加工人信息
{Worker w;cout<<"Input Worker Number:";cin>>w.number;cout<<"Input Worker Name:";cin>>w.name;cout<<"Input Worker Sex:";cin>>w.sex;cout<<"Input Worker Salary:";cin>>w.salary;cout<<"Input Worker出生日期:";cin>>w.birthtime;cout<<"Input WorkerWorkTime:";cin>>w.worktime;cout<<"Input Worker岗位:";cin>>w.post;cout<<"Input Worker Department:";cin>>w.department;cout<<"Input Worker技术级:";cin>>w.level;w.age=2020-w.birthtime/10000;//计算输入的Worker的Age wlist.push_back(w);//向vector数组中添加数据 this->Writeworker();//向文件中写入
}
//教职工信息管理系统.cpp
void Admin::find_teacher()//查找教师信息
{string _name;cout<<"Input TeacherName: ";   cin>>_name;vector<Teacher>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->tlist.begin();iter!=this->tlist.end();iter++)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==_name){cout<<"Number: "<<iter->number<<"\t\tName:"<<iter->name<<"\tSex:"<<iter->sex<<"\tSalary:"<<iter->salary<<"\n出生日期: "<<iter->birthtime<<"\t岗位:"<<iter->post<<"\tWorkTime:"<<iter->worktime<<"\tAge:"<<iter->age<<"\ttitle: "<<iter->title<<"\t所在系:"<<iter->system<<endl;    }}
}
//教职工信息管理系统.cpp
void Admin::find_worker()//查找工人信息
{string _name;cout<<"Input WorkerName: ";   cin>>_name;vector<Worker>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->wlist.begin();iter!=this->wlist.end();iter++)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==_name){cout<<"Number: "<<iter->number<<"\t\tName:"<<iter->name<<"\tSex:"<<iter->sex<<"\tSalary:"<<iter->salary<<"\n出生日期: "<<iter->birthtime<<"\t岗位:"<<iter->post<<"\tWorkTime:"<<iter->worktime<<"\tAge:"<<iter->age<<"\nDepartment: "<<iter->department<<"\t技术级:"<<iter->level<<endl;}}
}
//教职工信息管理系统.cpp
void Admin::del_teacher()//删除教师信息
{if(tlist.empty()){//调用empty函数判断数组是否为空 cout << "没有信息可以删除!"<<endl;return;}string _name;cout<<"Input TeacherName: ";   cin>>_name;vector<Teacher>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->tlist.begin();iter!=this->tlist.end();)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==_name){tlist.erase(iter);//调用erase函数对数组中元素进行删除 this->Writeteacher();//写入文件 cout<<"删除成功!"<<endl;return;}else++iter;}
}
//教职工信息管理系统.cpp
void Admin::del_worker()//删除工人信息
{if(wlist.empty()){//调用empty函数判断数组是否为空 cout << "没有信息可以删除!"<<endl;return;}string _name;cout<<"Input TeacherName: ";   cin>>_name;vector<Worker>::iterator iter;//vector数组保存的磁盘文件 for(iter=this->wlist.begin();iter!=this->wlist.end();)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==_name){wlist.erase(iter);//调用erase函数对数组中元素进行删除 this->Writeworker();cout<<"删除成功!"<<endl;return;}else++iter;}
}
//教职工信息管理系统.cpp
double Admin::arrage_teacher()//计算教师的总Age
{vector<Teacher>::iterator iter;//定义迭代器 double tsum=0;for(iter=this->tlist.begin();iter!=this->tlist.end();iter++)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {tsum=tsum+iter->age;}return tsum;//返回Teacher的总Age
}
//教职工信息管理系统.cpp
double Admin::arrage_worker()//计算工人的总Age
{double wsum=0;int wow=0;vector<Worker>::iterator iter;//定义迭代器 for(iter=this->wlist.begin();iter!=this->wlist.end();iter++)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {wsum=wsum+iter->age;} return wsum;//返回Worker的总Age
}
//教职工信息管理系统.cpp
void Admin::change_teacher() //修改教师的信息
{string name;cout<<"Input想修改的Teacher的Name: "; cin>>name;vector<Teacher>::iterator iter;//定义迭代器 for(iter=this->tlist.begin();iter!=this->tlist.end();)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==name){cout<<"Input Teacher的Salary:";cin>>iter->salary;cout<<"Input Teacher的岗位:";cin>>iter->post;cout<<"Input Teacher的title:";cin>>iter->title;cout<<"Input Teacher的所在系:";cin>>iter->system;this->Writeteacher();return ;}else++iter;}cout << "未检索到此Teacher!"<<endl;
}
//教职工信息管理系统.cpp
void Admin::change_worker()//修改工人信息
{string name;cout<<"Input想修改的Worker的Name: "; cin>>name;vector<Worker>::iterator iter;//定义迭代器 for(iter=this->wlist.begin();iter!=this->wlist.end();)//对vector数组进行遍历,必须使用begin()和end() 函数对vector进行遍历 {if(iter->name==name){cout<<"Input Worker的Salary:";cin>>iter->salary;cout<<"Input Worker的岗位:";cin>>iter->post;cout<<"Input Worker所在Department:";cin>>iter->department;cout<<"Input Worker的技术级:";cin>>iter->level;this->Writeworker();return ;}else++iter;}cout << "未检索到此Worker!"<<endl;
}
//教职工信息管理系统.cpp
void Admin::menu_teacher()//教师管理端的菜单
{int n1=ReadTeacher();//Teacher总人数 double sum1=arrage_teacher();//Teacher总Age while(1){int n;system("cls");cout<<"----------------------------"<<endl;cout<<"|        教 师 管 理       |"<<endl;cout<<"----------------------------"<<endl;cout<<"|   1、显示所有教师信息    |"<<endl; cout<<"|   2、按Name查找教师信息  |"<<endl; cout<<"|   3、添加教师信息        |"<<endl; cout<<"|   4、删除教师信息        |"<<endl; cout<<"|   5、修改教师信息        |"<<endl; cout<<"|   6、教师平均Age        |"<<endl;cout<<"|   0、返回主菜单          |"<<endl;cout<<"----------------------------"<<endl;cout<<"请选择: ";cin>>n;switch(n){case 1:Display_teacher();getch();break;case 2:find_teacher(); getch();break;case 3:Add_teacher();getch();break;case 4:del_teacher();getch();break;case 5:change_teacher();getch();break;case 6: cout<<"所有Teacher的平均Age是: "<<sum1/n1<<" 岁"<<endl; getch();break;case 0:return;}}
}
//教职工信息管理系统.cpp
void Admin::menu_worker()//工人管理端的菜单
{int n2=ReadWorker();//Worker总人数 double sum2=arrage_worker();//Worker总Age while(1){int n;system("cls");cout<<"-----------------------------"<<endl;cout<<"|       工 人 管 理         |"<<endl;cout<<"-----------------------------"<<endl;cout<<"|   1、显示所有工人信息     |"<<endl; cout<<"|   2、按Name查找工人信息   |"<<endl; cout<<"|   3、添加工人信息         |"<<endl; cout<<"|   4、删除工人信息         |"<<endl; cout<<"|   5、修改工人信息         |"<<endl;cout<<"|   6、工人平均Age         |"<<endl;cout<<"|   0、返回主菜单           |"<<endl;cout<<"-----------------------------"<<endl;cout<<"请选择: ";cin>>n;switch(n){case 1:Display_worker();getch();break;case 2:find_worker(); getch();break;case 3:Add_worker();getch();break;case 4:del_worker();getch();break;case 5:change_worker(); getch();break;case 6:cout<<"所有Worker的平均Age是: "<<sum2/n2<<" 岁"<<endl; getch();break;case 0:return;}}
}
(3)主函数
//教职工信息管理系统.cpp
int main()
{Admin a; while(1){system("cls");int n;cout<<"  教职工管理系统 "<<endl;cout<<"  1、教师管理系统"<<endl;cout<<"  2、工人管理系统"<<endl;cout<<"  0、安全退出系统"<<endl; cout<<"请选择: ";cin>>n;switch(n){case 1: a.menu_teacher(); getch();break;case 2: a.menu_worker();getch();break;case 3: {int n2=a.ReadWorker()/*n1=a.ReadTeacher()*/;double sum2=a.arrage_worker();cout<<"所有Teacher的平均Age是: "<<sum2/n2<<" 岁"<<endl;a.Writeworker();}case 4:{int n1=a.ReadTeacher();double sum1=a.arrage_teacher();cout<<"所有Worker的平均Age是: "<<sum1/n1<<" 岁"<<endl;}getch();break;case 0: return 0;}}
}

教职工信息管理系统(C++)相关推荐

  1. java-php-python-ssm普通中学教职工信息管理系统计算机毕业设计

    java-php-python-ssm普通中学教职工信息管理系统计算机毕业设计 java-php-python-ssm普通中学教职工信息管理系统计算机毕业设计 本源码技术栈: 项目架构:B/S架构 开 ...

  2. 用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

    基于Java的教师信息管理系统的设计与实现论文 职场大变样社区():下载毕业设计成品 全套资料,全部50元以下 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的教师信息管理系统的 ...

  3. 教师管理系统代码html,江苏省教职工信息管理系统:https://www.jste.net.cn/cmsplus/index.html...

    为进一步培育小学英语骨干教师,2019年9月26日,响水县乡村小学英语骨干教师培育站第三次活动在响水县南河中心小学如期举行.负责本次活动的有李素梅主任.陈丽华老师和沈耀华老师. 我们首先欣赏了南河中心 ...

  4. JAVA计算机毕业设计教育培训机构信息管理系统Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计教育培训机构信息管理系统Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计教育培训机构信息管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B ...

  5. java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 ...

  6. 基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+ ...

  7. 基于Java毕业设计校园闲置物品信息管理系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园闲置物品信息管理系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园闲置物品信息管理系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构 ...

  8. java计算机毕业设计WEBOA办公信息管理系统源码+数据库+系统+lw文档

    java计算机毕业设计WEBOA办公信息管理系统源码+数据库+系统+lw文档 java计算机毕业设计WEBOA办公信息管理系统源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S架构 开发语 ...

  9. java-net-php-python-jsp旅行社信息管理系统计算机毕业设计程序

    java-net-php-python-jsp旅行社信息管理系统计算机毕业设计程序 java-net-php-python-jsp旅行社信息管理系统计算机毕业设计程序 本源码技术栈: 项目架构:B/S ...

  10. 计算机毕业设计ssm小区宠物信息管理系统0v9l2系统+程序+源码+lw+远程部署

    计算机毕业设计ssm小区宠物信息管理系统0v9l2系统+程序+源码+lw+远程部署 计算机毕业设计ssm小区宠物信息管理系统0v9l2系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S ...

最新文章

  1. 命令行的全文搜索工具--ack
  2. 关于Linux服务器配置java环境遇到的问题
  3. 为什么计算机系统安全具有整体性质,操作系统全局性质的形式化描述和验证
  4. WINCE6.0 error C2220: warning treated as error问题解决
  5. Web Service入门简介(一个简单的WebService示例)
  6. 手电筒android studio,Android Studio:手电筒关闭时崩溃
  7. 现在的python版本_现在python 流行哪个版本
  8. 电脑故障维修:新手必看的修电脑技巧!
  9. Redis命令——键(key)
  10. set column oracle,Oracle 用一个表字段更新另一个表字段三种方法
  11. 【转】vmware 安装 osx 无法登录 appstore 的解决办法 (伪造smbios设备信息)
  12. 虚拟终端网络工程实施纪要
  13. 1031 查验身份证 (15 分)—PAT (Basic Level) Practice (中文)
  14. Direcshow相关资料
  15. C实现NV12转I420
  16. sqrt mysql_详解MySQL中的SQRT函数的使用方法_MySQL
  17. 百度司南是什么产品?
  18. JAVA最小质因子之和
  19. Ended a touch event which was not counted in trackedTouchCount (ReactNative RN开发时多点触摸滑动报错)
  20. 【正点原子FPGA连载】第六章Petalinux设计流程实战摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

热门文章

  1. 关于SN和PN的概念
  2. 桌面软件开发框架大赏
  3. lammps教程:delete_atoms 命令详解
  4. keypress事件中键盘上每个键的KeyAscii值(易语言/VB)
  5. Reflector for .NET 下载问题
  6. 光立方实现3D贪吃蛇
  7. 蓝桥杯python试题_Python爬取蓝桥杯真题讲解课程
  8. eclipse 如何查看Java源码
  9. php源码 学校版 cms,S-CMS学校建站系统PHP源码(含小程序) v5.0 bulid20201126
  10. ListView控件数据操作——通过代码在窗体上添加控件