-
2021-07-14 21:16:33
1: 项目需求
2: 功能实现的具体思路为:
(1) 经行职工信息的读入,用while循环进行读入,对于职工信息类型的设定方便起见除年龄和薪资用int类型其他信息都用string类型,职工信息用ostream 流写入txt并将信息保存在txt文件中,打印职工信息由于c++读文件方式不方便所以用c语言方式读文件,文件读取以后将文件中读取的信息加载到vector容器中后打印在终端窗口,其他功能的实现也是将文件中的信息读取到vector容器中,后用vector容器中的重载函数进行功能的实现;
3:头文件的编写的具体实现
#pragma once #include<string> #include<vector> using namespace std; class Worker { public: Worker(string workNumber, string name, string gender, string education, string addr, string phoneNumber, int age, int salary); Worker(); ~Worker(); //职工信息描述 string description(); //录入职工信息 static void addWorkerInformation(vector<Worker>&worker); void addWorkerInformations(); //职工信息浏览 void putWorkerInformation(); //查询 按籍贯或学历查询职工信息 void lookWorkerInformation(); //按工资高低排序 void sortWorkerInformation(); //删除职工信息 按姓名删除 void deleteWorkerInformation(); //修改职工信息 把研究生薪资增加 500 void addWorkerSalary(); friend ostream& operator<<(ostream& os, const Worker& worker); //友元函数直接输出对象的信息 Worker& operator=(const Worker& worker); //赋值构造函数 private: string workNumber; //职工号 string name; //名字 string gender; //性别 string education; //学历 string addr; //籍贯 string phoneNumber; //电话号码 int age; //年龄 int salary; //薪资 void loadWorkerInformation(); void printWorkerInformation(); vector<Worker>worker; }; ostream& operator<<(ostream& os, const Worker& worker); //使用重载函数直接输出对象的信息进行输出
4:对头文件中函数的具体实现
#include<string> #include<sstream> #include<iostream> #include<fstream> #include<vector> #include"worker.h" #define NAME "workerInformation.txt" #define ZERO "0" #define MONEY 500 #define STUDENT "研究生" Worker::Worker(string workNumber, string name, string gender, string education, string addr, string phoneNumber, int age, int salary){ this->addr = addr; this->age = age; this->gender = gender; this->name = name; this->phoneNumber = phoneNumber; this->education = education; this->salary = salary; this->workNumber = workNumber; } Worker::Worker(){ } Worker::~Worker(){ } //职工信息描述 string Worker::description(){ stringstream ret; ret << "职工号:" << workNumber << " 性别:" << gender << " 名字:" << name << " 年龄:" << age << " 学历:" << education << " 籍贯:" << addr << " 薪资:" << salary << " 电话号码:" << phoneNumber; return ret.str(); } void Worker::addWorkerInformation(vector<Worker>& worker){ string workNumber; //职工号 string name; //名字 string gender; //性别 string education; //学历 string addr; //籍贯 string phoneNumber; //电话号码 int age; //年龄 int salary; //年龄 while (1) { cout << "输入职工号[输入 0 结束输入];"; cin >> workNumber; if (workNumber == ZERO) { break; } cout << "输入名字:"; cin >> name; cout << "输入性别:"; cin >> gender; cout << "输入学历:"; cin >> education; cout << "输入籍贯:"; cin >> addr; cout << "输入电话号码:"; cin >> phoneNumber; cout << "输入年龄:"; cin >> age; cout << "输入薪资:"; cin >> salary; worker.push_back(Worker(workNumber, name, gender, education, addr, phoneNumber, age, salary)); } return; } void Worker::addWorkerInformations(){ ofstream outFile; outFile.open(NAME,ios::app); Worker::addWorkerInformation(this->worker); for (int i = 0;i < worker.size();i++) { outFile << worker[i].description()<<endl; } worker.clear(); outFile.close(); } //职工信息浏览 void Worker::putWorkerInformation(){ loadWorkerInformation(); printWorkerInformation(); } //查询 按籍贯或学历查询职工信息 void Worker::lookWorkerInformation(){ string addr; string education; cout << "输入要查询的职工籍贯:"; cin >> addr; cout << "请输入要查询的职工学历:"; cin >> education; loadWorkerInformation(); for (int i = 0;i < worker.size();i++) { if ((worker[i].addr == addr)&&(worker[i].education == education)){ cout << worker[i] << endl; } } } //按工资高低排序 void Worker::sortWorkerInformation(){ loadWorkerInformation(); Worker workers; for (int j = 0;j < worker.size() ;j++) { for (int i = j + 1;i < worker.size();i++) { if (worker[j].salary > worker[i].salary) { workers = worker[i]; worker[i] = worker[j]; worker[j] = workers; } } } printWorkerInformation(); } //删除职工信息 按姓名删除 void Worker::deleteWorkerInformation(){ ofstream outFile; string name; cout << "请输入你要删除人的姓名:"; cin >> name; loadWorkerInformation(); outFile.open(NAME); for (int i = 0;i < worker.size();) { if (worker[i].name == name) { worker.erase(worker.begin() + i); } else { outFile << worker[i] << endl; i++; } } } //修改职工信息 把研究生薪资增加 500 void Worker::addWorkerSalary(){ loadWorkerInformation(); int salary; ofstream outFile; outFile.open(NAME); for (int i = 0;i < worker.size();) { if (worker[i].education == STUDENT) { salary = worker[i].salary + MONEY; outFile<<Worker(worker[i].workNumber,worker[i].name,worker[i].gender, worker[i].education, worker[i].addr, worker[i].phoneNumber, worker[i].age, salary)<<endl; worker.erase(worker.begin()+i); } else { outFile << worker[i] << endl; i++; } } worker.clear(); } Worker& Worker::operator=(const Worker& worker) { addr = worker.addr; age = worker.age; gender = worker.gender; education = worker.education; name = worker.name; phoneNumber = worker.phoneNumber; salary = worker.salary; workNumber = worker.workNumber; return *this; } void Worker::loadWorkerInformation(){ char workNumber[32]; //职工号 char name[32]; //名字 char gender[32]; //性别 char education[32]; //学历 char addr[32]; //籍贯 char phoneNumber[32]; //电话号码 int age; //年龄 int salary; //年龄 string line; ifstream inFile; inFile.open(NAME); if (!inFile.is_open()) { cout << "----职工数据库打开失败----"; inFile.close(); exit(1); } while (1) { getline(inFile, line); if (inFile.eof()) { break; } if (line == "")continue; sscanf_s(line.c_str(), "职工号:%s 性别:%s 名字:%s 年龄:%d 学历:%s 籍贯:%s 薪资:%d 电话号码:%s", workNumber, sizeof(workNumber), gender, sizeof(gender), name, sizeof(name), &age, education, sizeof(education), addr, sizeof(addr), &salary, phoneNumber, sizeof(phoneNumber)); worker.push_back(Worker(string(workNumber), string(name), string(gender), string(education), string(addr), string(phoneNumber), age, salary)); } } void Worker::printWorkerInformation(){ for (int i = 0;i < worker.size();i++) { cout << worker[i] << endl<<endl; } worker.clear(); } ostream& operator<<(ostream& os, const Worker& worker){ os<< "职工号:" <<worker.workNumber << " 性别:" << worker.gender << " 名字:" << worker.name << " 年龄:" << worker.age << " 学历:" << worker.education << " 籍贯:" << worker.addr << " 薪资:" << worker.salary << " 电话号码:" << worker.phoneNumber; return os; }
5:main函数的具体实现
#include<stdlib.h> #include<iostream> #include<conio.h> #include"worker.h" #define ONE '1' #define TWO '2' #define THREE '3' #define FOUR '4' #define FIVE '5' #define SIX '6' #define SEVEN '7' int main(void) { Worker work; cout << "输入【1】根据籍贯和学历对职工信息进行查询" << endl; cout << "输入【2】按薪水对职工信息进行排序" << endl; cout << "输入【3】打印职工信息" << endl; cout << "输入【4】增加职工信息" << endl; cout << "输入【5】增加研究生薪水" << endl; cout << "输入【6】删除信息" << endl; cout << "输入【7】退出功能" << endl << endl; bool quit = false; do { if (_kbhit()) { char ch = _getch(); switch(ch){ case ONE: work.lookWorkerInformation();//根据籍贯和学历对职工信息进行查询 cout << "---已完成该功能---" << endl << endl; break; case TWO: work.sortWorkerInformation();//按薪水对职工信息进行排序 cout << "---已完成该功能---" << endl << endl; break; case THREE: work.putWorkerInformation();//打印职工信息; cout << "---已完成该功能---" << endl << endl; break; case FOUR: work.addWorkerInformations();//增加职工信息 cout << "---已完成该功能---" << endl << endl; break; case FIVE: work.addWorkerSalary();//增加研究生薪水 cout << "---已完成该功能---" << endl << endl; break; case SIX: work.deleteWorkerInformation();//删除信息 cout << "---已完成该功能---" << endl << endl; break; case SEVEN: quit = true;//退出循环 break; default: cout << "----无其他功能选项----"; break; } } } while (quit == false); system("pause"); return 0; }
6:功能3,4,5,6,的实现都是将文件中的信息加载到vector中,并且使用的都是保存了worker这个类对象的同一个容器(假如先实现工能3,将信息加载到vector中后功能3结束以后,功能3使用到的职工信息依然在vector这个容器中,所以使用完一个函数后要将vector中的信息清理完全,不然会影响下一个函数的使用)。
7;在实现功能5的时候会使用到vector容器的重载函数( worker.erase(worker.begin()+i);)使用完以后返回的是下一个迭代器指向下一个对象,所以在使用使用for循环遍历容器的时候因注意for (int i = 0;i < worker.size();i++) 中i++具体放在哪个位置比较合适。
8:这是本人在编写程序的时候发现的坑如果有什么错误请批评指正。
更多相关内容 -
C++课程设计教职工信息管理系统.zip
2020-06-24 10:28:49主要实现对教职工基本信息的管理,设计菜单实现功能选择,包括职工姓名、性别、工号、所在系部、职称。如果有新教职工加入,可在添加新职工模块进行添加新成员操作。如果有职工辞职或退休,也可以进行删除操作,同时... -
C++实现简单职工信息管理系统
2020-12-31 05:23:21本文实例为大家分享了C++职工信息管理系统的具体代码,供大家参考,具体内容如下 功能主模块描述 模块一:增加人员函数Add();增加职工基本信息。 模块二:删除人员函数Delete();删除指定的职工的基本信息以及... -
职工信息管理系统C++代码
2020-12-28 15:35:34相关文章推荐: 1、C语言学生成绩管理系统源代码★★★★★ 2、C语言学籍管理系统源代码★★...大学实训课学习到的一段源代码,职工信息管理系统 c++项目源代码。 #include <string> #include <iostre...相关文章推荐:
1、 C语言学生成绩管理系统源代码 ★★★★★
2、 C语言学籍管理系统源代码 ★★
3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★
4、C语言学生信息管理系统源代码 ★★★★
扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。
更多管理系统更新中,请注意关注!
大学实训课学习到的一段源代码,职工信息管理系统 c++项目源代码。
#include <string> #include <iostream> #include <fstream> #include <iomanip> #include <memory.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> using namespace std; class employee { public: string m_Code; string m_Name; unsigned short int m_Year; string m_Sex; string m_Post; string m_Department; unsigned int m_Wage; //链表节点的指针域--- employee* Next; public: employee* Create(employee* Head); void Rel(employee* Head); employee* Add(employee* Head); bool Search(employee* Head); employee* Search_Unique_Front(employee* Head); void Display_List(employee* Head); void Display_Node(employee* pNode); employee* Modify(employee* Head); employee* Del(employee* Head); void Save_ByFile(employee* Head,fstream& ofile); employee* Sort(employee* Head); }; employee* employee::Create(employee* Head) {//创建一个带头节点的空链表。 Head=new employee; if(!Head) { cout<<"分配内存失败!"<<endl; return NULL; } Head->m_Code=""; Head->m_Name=""; Head->m_Year=0; Head->m_Sex=""; Head->m_Post=""; Head->m_Department=""; Head->m_Wage=0; Head->Next=NULL; return Head; } void employee::Rel(employee* Head) {//释放链表。 employee* ptr;//声明一个操作用的指针。 while(Head!=NULL) { ptr=Head; Head=Head->Next; delete ptr;//释放节点资源。 } } employee* employee::Add(employee* Head) {//前插法添加数据。 employee* pNew;// 声明一个新节点。 char again; string code,name,sex,post,department; unsigned short int year; unsigned int wage; do { pNew=new employee; //数据域。 cout<<"请输入职工代码:"; cin>>code; cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工出生年份:"; cin>>year; while(cin.fail()) { cout<<"请输入正确的年份格式。"<<endl; cin.clear(); fflush(stdin); cin>>year; } cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工职称:"; cin>>post; cout<<endl<<"请输入职工部门:"; cin>>department; cout<<endl<<"请输入职工工资:"; cin>>wage; while(cin.fail()) { cout<<"请输入正确的工资数据。"<<endl; cin.clear(); fflush(stdin); cin>>wage; } cout<<endl; pNew->m_Code=code; pNew->m_Name=name; pNew->m_Year=year; pNew->m_Sex=sex; pNew->m_Post=post; pNew->m_Department=department; pNew->m_Wage=wage; //指针域。 pNew->Next=Head->Next; Head->Next=pNew; cout<<"数据添加成功!是否继续添加?(Y/N)"<<endl; cin>>again; }while(again=='Y'||again=='y'); return Head; } bool employee::Search(employee* Head) {//查询同时满足“姓名”和“部门”的职工信息。 employee* ptr; string department; string name; ptr=Head->Next; cout<<"请输入部门:"; cin>>department; cout<<endl<<"请输入姓名:"; cin>>name; cout<<endl<<"----------------查询结果------------------"<<endl; while(ptr) { if((ptr->m_Name==name)&&(ptr->m_Department==department)) { Display_Node(ptr);//打印满足条件的节点。 return true; } ptr=ptr->Next;//查询下一节点。 } cout<<"无此职工的信息。"<<endl; return false; } employee* employee::Search_Unique_Front(employee* Head) { employee* ptr; string code; ptr= Head->Next; cout<<"请输入职工代码:"; cin>>code; cout<<endl<<"----------------查询结果------------------"<<endl; while(ptr) { if(ptr->m_Code==code) return ptr; ptr=ptr->Next; } return ptr; } void employee::Display_List(employee* Head) { employee* ptr; ptr=Head->Next; cout<<"==================所有职工信息=================="<<endl; while(ptr) { Display_Node(ptr); ptr=ptr->Next; } } void employee::Display_Node(employee* pNode) {//在标准输出设备上输出。 cout<<setw(10)<<left<<pNode->m_Code <<setw(10)<<left<<pNode->m_Name <<setw(10)<<left<<pNode->m_Year <<setw(10)<<left<<pNode->m_Sex <<setw(10)<<left<<pNode->m_Post <<setw(10)<<left<<pNode->m_Department <<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。 } employee* employee::Modify(employee* Head) {// 修改单一个节点。 employee* ptr; ptr=Search_Unique_Front(Head); string code,name,sex,post,department; unsigned short int year; unsigned int wage; if(ptr) { cout<<"-------你现在可以修改此职工的信息了-------"<<endl; //数据域。 cout<<"请输入职工代码:"; cin>>code; cout<<endl<<"请输入职工姓名:"; cin>>name; cout<<endl<<"请输入职工出生年份:"; cin>>year; while(cin.fail()) { cout<<"请输入正确的年份格式。"<<endl; cin.clear(); fflush(stdin); cin>>year; } cout<<endl<<"请输入职工性别:"; cin>>sex; cout<<endl<<"请输入职工职称:"; cin>>post; cout<<endl<<"请输入职工部门:"; cin>>department; cout<<endl<<"请输入职工工资:"; cin>>wage; while(cin.fail()) { cout<<"请输入正确的工资数据。"<<endl; cin.clear(); fflush(stdin); cin>>wage; } cout<<endl; ptr->m_Code=code; ptr->m_Name=name; ptr->m_Year=year; ptr->m_Sex=sex; ptr->m_Post=post; ptr->m_Department=department; ptr->m_Wage=wage; } else { cout<<"没找到此职工的记录,无法修改。"<<endl; } return Head; } employee* employee::Del(employee* Head) { string code; employee* parentptr; employee* ptr_front; //ptr_front=Search_Unique_Front(Head); cout<<"请输入职工代码:"; cin>>code; parentptr= Head; ptr_front = Head->Next; while(ptr_front) { if(ptr_front->m_Code==code) { parentptr->Next = ptr_front->Next; delete ptr_front; return Head; } parentptr = ptr_front; ptr_front = ptr_front->Next; } return Head; } void employee::Save_ByFile(employee* Head,fstream& ofile) { employee* pNode; pNode=Head->Next; ofile.clear();//清除文件结束状态。 while(pNode) { ofile<<setw(10)<<left<<pNode->m_Code <<setw(10)<<left<<pNode->m_Name <<setw(10)<<left<<pNode->m_Year <<setw(10)<<left<<pNode->m_Sex <<setw(10)<<left<<pNode->m_Post <<setw(10)<<left<<pNode->m_Department <<setw(10)<<left<<pNode->m_Wage<<endl;//setw(10)表示占10个字符位置。 pNode=pNode->Next; } cout<<"数据文件保存成功!"<<endl; } employee* employee::Sort(employee* Head) {//我创建的是带头节点的链表。用直接插入法。 if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。 { cout<<"数据节点数少于2个,不用排序!"<<endl; return Head; } //-----------第二步; employee* ptr; employee* ptr_F; employee* ptr_N; ptr=Head->Next->Next; ptr_F=Head; Head->Next->Next=NULL;//到此,分成了两个链表。 //第三步。 while(ptr) { ptr_N=ptr->Next; ptr_F=Head;//ptr_F的归位。 while(ptr_F->Next) { if(ptr->m_Wage>ptr_F->Next->m_Wage) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr; break; } else { ptr_F=ptr_F->Next; } } if(ptr_F->Next==NULL) { ptr->Next=ptr_F->Next; ptr_F->Next=ptr;//表示插到有序链表的最后面了。 } ptr=ptr_N;//归位,准备下一次排序。 } cout<<"从高到低,排序成功!"<<endl; return Head; } int main() { employee* st = new employee(); st=st->Create(st); fstream iofile; iofile.open("d:\\iofile.txt",ios_base::in|ios_base::out|ios_base::app);//文件以三种方式打开。 if(!iofile) { cout<<"打开文件失败!"<<endl; return -1; } int menu; while(1) { cout<<"*****************************************************"<<endl; cout<<"*====================菜单选顶=======================*"<<endl; cout<<"* *"<<endl; cout<<"* 1.注册职工 2.修改信息 3.删除信息 4.信息查询 *"<<endl; cout<<"* 5.保存文件 6.工资排行 7.信息显示 0.退出系统 *"<<endl; cout<<"* *"<<endl; cout<<"*****************************************************"<<endl; cout<<endl<<"请选择相应操作菜单项:"; cin>>menu; while(cin.fail()) { cout<<"请选择正确的菜单选项。"<<endl; cin.clear(); fflush(stdin); cin>>menu; } switch(menu) { case 0: cout<<"成功退出系统!"<<endl; return 0; case 1: st=st->Add(st); break; case 2: st=st->Modify(st); break; case 3: st=st->Del(st); break; case 4: st->Search(st); break; case 5: st->Save_ByFile(st,iofile); break; case 6: st->Sort(st); break; case 7: st->Display_List(st); break; default: cout<<"请选择正确的菜单项进行操作。多谢合作!"<<endl; } } st->Rel(st); iofile.close(); return 0; }
也希望能帮到正在做实训报告的你,欢迎留言区讨论。
分享:C语言学生成绩管理系统设计 《C语言程序设计》实训报告
扫描下方公众号,发送 成绩系统 4个字,获取下载实训源码。
感谢关注,共同进步!
-
员工信息管理系统 c++
2012-07-04 09:26:50数据结构实验,员工信息管理,大家可以借鉴一下。 -
职工档案管理系统C++课设
2018-03-16 14:06:21C++课设职工档案管理系统,有添加删除查找读取恢复等功能。 -
C++实现员工信息管理系统
2021-11-03 22:11:12员工信息管理系统 成绩 课 程 设 计 主 要 内 容 【问题描述】 编写一个程序来管理员工信息。通过一个类来存放输入的每一位员工的...一、问题描述及要求
设计题目
员工信息管理系统
成绩
课
程
设
计
主
要
内
容
【问题描述】
编写一个程序来管理员工信息。通过一个类来存放输入的每一位员工的记录(包括员工号、姓名、性别、所属部门、职称、入职时间、联系电话等),然后将其信息保存到文件中。通过几个函数来创建新员工号,并对职工信息进行删除及修改,输入一个员工号查询该职工的信息,并显示在屏幕上。
【任务要求】
运用类的思想来实现员工信息管理系统的编写。实现以下操作:
- 员工信息系统包括:工号、姓名、年龄、性别、所属部门、职称、入职时间、联系电话。
- 实现功能有:输入员工信息、输出员工信息、统计员工信息、查询员工信息、修改指定员工信息、删除指定员工信息以及退出程序。
二、运营环境及开发工具
1、C语言以及C++语言
2、vc++6.0
3、Dev-C++
三、流程图
1、系统流程图
2、主函数流程图
3、具体函数流程图略
很好画的,可以参考上面的流程图。
四、实现代码
#include <iostream> #include <string> #include <fstream> using namespace std; class staff { private: string employee_number;//职工号 string name;//姓名 int age;//年龄 string sex;//性别 string zip_code;//职称 string department;//部门 string time; //入职时间 string tel; //联系电话 class staff* next; public: staff():next(NULL){} void registration(class staff* head);//注册 尾插 void query_employeenumber(class staff* t);//按员工号查询 void query_name(class staff* t);//按照姓名查询员工信息 void query_tel(class staff* t);//按照联系电话查询员工信息 void delete_num(class staff* t);//按工号删除员工信息 void delete_name(class staff* t);//按姓名删除员工信息 void show_all(class staff* head);//输出所有员工信息 void query_sex(class staff* t); void update(class staff* head); void update_num(class staff* head);//修改工号 void update_name(class staff* head);//修改姓名 void update_age(class staff* head);//修改年龄 void update_sex(class staff* head);//修改性别 void update_zip(class staff* head);//修改职称 void update_depart(class staff* head);//修改部门 void update_time(class staff* head);//修改入职时间 void update_tel(class staff* head);//修改联系电话 void update_all(class staff* head);//修改全部 int read(class staff* head); void write(class staff* t); }; void staff::registration(class staff* head)//注册 尾插 { while(head->next != NULL) { head = head->next; } staff* newnode = new staff; head->next = newnode; newnode->next = NULL; cout << "请输入员工信息" << endl; cout << "员工号: " << endl; cin >> newnode->employee_number; cout << "员工姓名: " << endl; cin >> newnode->name; cout << "员工年龄: " << endl; cin >> newnode->age; cout << "职工性别: " << endl; cin >> newnode->sex; cout << "员工职称: " << endl; cin >> newnode->zip_code; cout << "员工部门: " << endl; cin >> newnode->department; cout<<"员工入职时间: "<<endl; cin >> newnode->time; cout<<"员工联系电话: "<<endl; cin >> newnode->tel; } void staff::show_all(class staff* head)//输出 { int i = 0; while(head->next != NULL) { i++; cout << i << "." << "工号:" ; cout << head->next->employee_number <<'\t'; cout << "名字:" ; cout << head->next->name <<'\t'; cout << "性别:" ; cout << head->next->sex <<'\t'; cout << "年龄:" ; cout << head->next->age <<'\t'; cout << "职称:" ; cout << head->next->zip_code << '\t'; cout << "部门:" ; cout << head->next->department << '\t'; cout << "入职时间:" ; cout << head->next->time << '\t'; cout << "联系电话:" ; cout << head->next->tel << endl; head = head->next; } } void staff::query_employeenumber(class staff* t)//按员工工号查询 { string n; cout << "请输入你想查询员工工号:" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->employee_number == n) { cout << "工号:" ; cout << t->next->employee_number <<'\t'; cout << "名字:"; cout << t->next->name <<'\t'; cout << "性别:" ; cout << t->next->sex <<'\t'; cout << "年龄:" ; cout << t->next->age <<'\t'; cout << "邮编:" ; cout << t->next->zip_code << '\t'; cout << "部门:"; cout << t->next->department << '\t'; cout << "入职时间:" ; cout << t->next->time << '\t'; cout << "联系电话:" ; cout << t->next->tel << endl; count++; } t = t->next; } if(count == 0) { cout << "查无此人!" << endl; } } void staff::query_name(class staff* t)//按员工姓名查询 { string n; cout << "请输入你想查询员工姓名:" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->name == n) { cout << "工号:" ; cout << t->next->employee_number <<'\t'; cout << "名字:"; cout << t->next->name <<'\t'; cout << "性别:" ; cout << t->next->sex <<'\t'; cout << "年龄:" ; cout << t->next->age <<'\t'; cout << "职称:" ; cout << t->next->zip_code << '\t'; cout << "部门:"; cout << t->next->department << '\t'; cout << "入职时间:" ; cout << t->next->time << '\t'; cout << "联系电话:" ; cout << t->next->tel << endl; count++; } t = t->next; } if(count == 0) { cout << "查无此人!" << endl; } } void staff::query_tel(class staff* t)//按员工联系电话查询 { string n; cout << "请输入你想查询联系电话:" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->tel == n) { cout << "工号:" ; cout << t->next->employee_number <<'\t'; cout << "名字:"; cout << t->next->name <<'\t'; cout << "性别:" ; cout << t->next->sex <<'\t'; cout << "年龄:" ; cout << t->next->age <<'\t'; cout << "邮编:" ; cout << t->next->zip_code << '\t'; cout << "部门:"; cout << t->next->department << '\t'; cout << "入职时间:" ; cout << t->next->time << '\t'; cout << "联系电话:" ; cout << t->next->tel << endl; count++; } t = t->next; } if(count == 0) { cout << "查无此人!" << endl; } } void staff::delete_num(class staff* t)//按员工号删除 { string n; cout << "请输入你想删除员工工号:" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->employee_number == n) { staff* temp = t->next; t->next = t->next->next; delete temp; temp = NULL; cout << "删除成功!" << endl; count++; break; } t = t->next; } if(count == 0) { cout << "查无此人!" << endl; } } void staff::delete_name(class staff* t)//按员工姓名删除 { string n; cout << "请输入你想删除员工的姓名:" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->name == n) { staff* temp = t->next; t->next = t->next->next; delete temp; temp = NULL; cout << "删除成功!" << endl; count++; break; } t = t->next; } if(count == 0) { cout << "查无此人!" << endl; } } void staff::update(class staff* head) { int num = 0; cout << "1.修改员工号" << endl; cout << "2.修改员工姓名" << endl; cout << "3.修改员工年龄" << endl; cout << "4.修改员工性别" << endl; cout << "5.修改员工职称" << endl; cout << "6.修改员工部门" << endl; cout << "7.修改员工入职时间" << endl; cout << "8.修改员工联系电话" << endl; cout << "9.修改全部" << endl; cin >> num; switch(num) { case 1: update_num(head); break; case 2: update_name(head); break; case 3: update_age(head); break; case 4: update_sex(head); break; case 5: update_zip(head); break; case 6: update_depart(head); break; case 7: update_time(head); break; case 8: update_tel(head); case 9: update_all(head); break; default: cout << "请重新输入正确的指令!" << endl; } } void staff::query_sex(class staff* t)//统计 { string n; cout << "请输入你要统计的员工的姓别(男或女):" << endl; cin >> n; int count = 0; while(t->next != NULL) { if(t->next->sex == n) { count++; break; } t = t->next; } cout << "共有"<<n<<"员工: " <<count<<"个"<< endl; } void staff::update_num(class staff* head)//修改工号 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout<< "输入新工号:"<< endl; string temp2; cin>>temp2; head->next->employee_number = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_name(class staff* head)//修改姓名 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新名字:"<< endl; string temp2; cin >> temp2; head->next->name = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_age(class staff* head)//修改年龄 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新年龄:"<< endl; int temp2; cin >> temp2; head->next->age = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_sex(class staff* head)//修改性别 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新性别:"<< endl; string temp2; cin >> temp2; head->next->sex = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_zip(class staff* head)//修改职称 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入职称:"<< endl; string temp2; cin >> temp2; head->next->zip_code = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_depart(class staff* head)//修改部门 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新部门:"<< endl; string temp2; cin >> temp2; head->next->department = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_time(class staff* head)//修改入职时间 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新入职时间:"<< endl; int temp2; cin >> temp2; head->next->time = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_tel(class staff* head)//修改联系电话 { cout << "输入要修改对象的工号:"<< endl; int count = 0; string temp; cin >> temp; while(head->next != NULL) { if(temp == head->next->employee_number) { count = 1; cout << "输入新入职时间:"<< endl; int temp2; cin >> temp2; head->next->tel = temp2; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } void staff::update_all(class staff* head)//修改全部 { cout<<"输入要修改对象的工号:"<<flush; int count = 0; string tmp; cin >> tmp; while(head->next != NULL) { if(tmp == head->next->employee_number) { count = 1; cout << "输入新工号:"<< endl; string temp; int tmp; cin >> temp; head->next->employee_number = temp; cout<< "输入新名字:"<< endl; cin >> temp; head->next->name = temp; cout<< "输入新性别:"<< endl; cin >> temp; head->next->sex = temp; cout<< "输入新年龄:"<< endl; cin >> tmp; head->next->age = tmp; cout<< "输入新职称:"<< endl; cin >> temp; head->next->zip_code = temp; cout<< "输入新部门:"<< endl; cin >> temp; head->next->department = temp; cout<< "输入新入职时间:"<< endl; cin >> temp; head->next->time = tmp; cout<< "输入新入联系电话:"<< endl; cin >> temp; head->next->tel = tmp; cout << "修改成功" << endl; break; } head = head->next; } if(count == 0) { cout << "查无此人" << endl; } } int staff::read(class staff* head) { ofstream infile1; infile1.open("员工系统.txt",ios::app); if(!infile1) { return 0; } else { infile1.close(); ifstream infile; infile.open("员工系统.txt",ios::in); while(!infile.eof()) { staff* newnode = new staff; infile >> newnode->employee_number; if(newnode->employee_number.length() == 0) { delete newnode; break; } infile >> newnode->name; infile >> newnode->sex; infile >> newnode->age; infile >> newnode->zip_code; infile >> newnode->department; infile >> newnode->time; infile >> newnode->tel; head->next = newnode; head = head->next; } infile.close(); } return 0; } void staff::write(class staff* t) { ofstream outfile; outfile.open("员工系统.txt",ios::out); while(t->next != NULL) { outfile << t->next->employee_number << '\t'; outfile << t->next->name << '\t'; outfile << t->next->sex << '\t'; outfile << t->next->age << '\t'; outfile << t->next->zip_code << '\t'; outfile << t->next->department << '\t'; outfile << t->next->time << '\t'; outfile << t->next->tel << endl; t = t->next; } outfile.close(); } int main() { staff* head = new staff; head->read(head); string temp; cout << "********欢迎来到员工管理系统!********" << endl; while(1) { cout << "------------------------------------" << endl; head->show_all(head); cout << "------------------------------------" << endl; cout << endl; cout << "1.输入员工信息" << endl; cout << "2.输出员工信息" << endl; cout << "3.按员工工号查询员工信息"<< endl; cout << "4.按照姓名查询员工信息" << endl; cout << "5.按照联系电话查询员工信息" << endl; cout << "6.按工号删除员工信息" << endl; cout << "7.按姓名删除员工信息" << endl; cout << "8.统计员工个数" << endl; cout << "9.修改员工信息" << endl; cout << "0.退出" << endl; cout << endl; cout << "请输入你想选择的功能:" << endl; int number; cin >> number; switch(number) { case 1: { head->registration(head); break; } case 2: {head->show_all(head); break; } case 3: { head->query_employeenumber(head); break; } case 4: { head->query_name(head); break; } case 5: { head->query_tel(head); break; } case 6: { head->delete_num(head); break; } case 7: { head->delete_name(head); break; } case 8: { head->query_sex(head); break; } case 9: { head->update(head); break; } case 0: { head->write(head); return 0; } default: cout << "请重新输入正确的操作指令" << endl; } } }
五、结果举例
-
职工信息管理系统 c++项目源代码
2011-09-26 20:45:54职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统职工信息管理系统 -
中南大学C++职工工资信息管理系统 包括源代码和实验报告 作者:陶炳楠
2016-07-12 17:50:34中南大学C++职工工资信息管理系统 包括源代码和实验报告 作者:陶炳楠 -
C++企业员工信息管理系统
2019-01-03 20:34:54某小型公司,主要有三类人员:经理、兼职技术人员和兼职推销员。 这三类人员共同拥有的相关属性:姓名、编号; 相关方法:获取当月薪水的getPay...6. 查询所有职工信息,并将其存储到外设职工信息文件EmployeeData.txt -
c++员工信息管理系统
2017-08-07 22:10:17c++员工信息管理系统 -
c++教职工信息管理系统()
2018-05-21 11:25:13人员信息管理系统 1-从键盘录入全部人员记录 2-增加一位人员记录 3-显示全部人员记录 4-按系别输出人员信息(可选) 5-按姓名或年龄检索所有信息 6-显示菜单目录 7-结束程序运行 -
职工管理系统(C++版)
2021-03-06 21:59:55C++综合案例练习,以面向对象的方式编写一个职工管理系统。要求如下: 需求文档: 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位以及职责 普通员工职责:完成经理... -
C++员工管理系统
2018-07-07 16:13:58简单的员工管理系统,功能包括员工的增删以及查找,自己做的小demo~ -
C++实现简单职工管理系统
2021-01-01 14:11:52本文实例为大家分享了C++职工管理系统实例代码,供大家参考,具体内容如下 1.单个职工的头文件 staff.h #ifndef STAFF_H_INCLUDED #define STAFF_H_INCLUDED //结构体创建 struct staff { char ID[10]; char name... -
员工信息管理系统c++
2022-01-02 18:18:41如何把员工编号、姓名、性别、年龄、学历、工资、地址写入文本文件,要使用外部文本文件(后缀名为.txt)存储员工所有信息。 -
C++实现简单的职工信息管理系统
2020-09-03 11:17:03本文给大家分享的是使用C++实现简单的职工信息管理系统的代码,本系统采用了面向对象的程序设计方法。所有的方法均以类为基础,有需要的小伙伴可以参考下。 -
公司员工管理系统c++版源码
2018-05-16 19:53:35/*3公司员工管理系统 基本要求: 设计一个虚基类Staff(员工),包括编号、姓名和年龄保护数据成员以及相关的成员函数; 由Staff派生出工程师类Engineer包含专业和职称保护数据成员以及相关的成员函数,再由Staff +... -
C++实现企业职工工资管理系统
2021-01-21 18:08:48工资管理要和人事管理相联系,生成企业每个职工的实际发放工资。 企业职工人事基本信息包括:职工编号、姓名、性别、出生日期、职称(助工、工程师、高级工程师)和任职年限。 企业职工工资信息包括:职工编号、姓名... -
C++ Builder 实现考勤信息管理系统以及员工信息管理
2020-07-06 21:55:29C++ Builder 实现考勤信息管理系统以及员工信息管理,使用Sql server数据库进行实现数据库的管理,可管理员工信息基础信息,考勤信息,工资信息 -
教职工信息管理系统(C++)
2020-10-22 21:27:55教职工信息管理系统 一、问题描述 设计一个学校职工管理系统,要求实现如下功能:建立职工信息数据,包括职工编号、 姓名、 性别、工资、出生时间、岗位、参加工作时间和年龄(必须计算得到),初始模拟数据 通过...教职工信息管理系统
一、问题描述
设计一个学校职工管理系统,要求实现如下功能:建立职工信息数据,包括职工编号、
姓名、 性别、工资、出生时间、岗位、参加工作时间和年龄(必须计算得到),初始模拟数据 通过文本文件创建(记录不少于 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.h class 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++高校职工工资管理系统
2020-07-11 16:34:44c++的高校员工管理系统,使用类、继承还有文件的相关的知识。 功能:录入,查找,修改,删除,保存信息。 -
C++实现基于多态的职工管理系统
2021-08-20 18:50:27管理系统中需要实现的功能如下: * 退出管理程序:退出当前管理系统 - 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号 - 显示职工信息:显示公司内部所有职工的... -
职工管理系统(c++,mac vscode)
2021-05-06 10:00:11今天要和大家分享的是一个c++上手项目:职工系统管理,通过这个项目,大家可以更好的对c++面向对象和文件操作有一个更深入的了解。这个也可以当作本科毕设,不过得润色一下哈。 -
职工信息管理系统(C++)
2010-10-23 13:23:37用C++语言开发的一个职工信息管理系统,里面有可正确运行的源代码,此系统适合计算机专业课程设计用。。。。。欢迎大家下载。。。。。 -
职工管理系统C++实现
2021-03-09 16:03:36职工管理系统可以用来管理公司内所有员工的信息(利用C++来实现一个基于多态的职工管理系统) 公司中职工分为三类:普通员工、经理、董事长,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 【普通... -
C++公司人员信息管理系统课程设计报告.pdf
2021-09-05 20:57:40C++公司人员信息管理系统课程设计报告 -
C++ 校园管理系统、高校人员信息管理系统设计
2018-06-13 15:14:41某高校有四类员工教师、实验员、行政人员教师兼行政人员共有的信息包括编号、姓名、性别、年龄等。其中教师还包含的信息有所在系部、专业、职称实验员还包含的信息由所在实验室、职务行政人员还... -
C++课程设计(职工信息管理系统)
2021-08-12 17:22:54C++课程设计(职工信息管理系统) -
C/C++课设,职工资源管理系统,录入职工信息,显示全部职工信息等
2021-06-24 20:29:25C/C++课设,职工资源管理系统,录入职工信息,显示全部职工信息等,根据工号查询 ,根据学历查询,根据工资查询,根据工号删除记录,根据工资从大到小排 ,保存并结束 ,通过文件输入输出操作员工信息。