职工管理系统(list容器)
2017-02-11 19:49
239 查看
今天学了c++的容器,然后就把之前的职工管理系统重新拿出来做了一遍,这次我是用list容器做的,vector的操作其实也是有着异曲同工之妙,vector首先是解决了数组的一个大缺陷------有上限,但是它本质上还是数组,只是动态分配内存了而已,还有一点不得不说c++比c强大的地方了,c里面如果要对数组插入删除的时候还是不怎么方便的,但是c++把这些操作封装在了一起,使用的时候只需要调用一下函数而已,将这部分的时间节省了下来,留下更多的时间来处理其他事情。list和之前的链表感觉差不多,也是将一些链表的操作封装起来了,原理还是一样的,不过还是要感谢这些把数组链表操作封装成一个一个库的那些人,正如牛顿所言,我看的比别人远,那是因为我站在巨人的肩膀上!感谢前辈们的贡献吧。以下的是代码:
#ifndef CONTROL_H
#define CONTROL_H
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <Windows.h>
using namespace std;
class people
{
string m_name;
int m_age;
string m_sex;
public:
people(){};
people(string name, int age, string sex):m_name(name), m_age(age), m_sex(sex){}
string getname(){return m_name;}
int getage(){return m_age;}
string getsex(){return m_sex;}
};
class worker : public people
{
string m_num;
string m_bum;
string m_yobi;
int m_salary;
public:
worker(){};
worker(string num, string name, int age, string sex, string yobi, string bum, int salary):
people(name, age, sex),m_num(num), m_bum(bum), m_yobi(yobi), m_salary(salary){}
string getnum(){return m_num;}
string getbum(){return m_bum;}
string getyobi(){return m_yobi;}
int getsalary(){return m_salary;}
};
class Control
{
public:
void jiemian(); //界面显示
void init(); //注册职工
void xiugai(); //修改职工信息
void shanchu(); //删除职工信息
void chaxun(); //查询职工信息
void paiming(); //根据薪资排名
void pint();
4000
//打印所有信息
};
#endif
#ifndef CONTROL_H
#define CONTROL_H
#include <iostream>
#include <fstream>
#include <string>
#include <list>
#include <Windows.h>
using namespace std;
class people
{
string m_name;
int m_age;
string m_sex;
public:
people(){};
people(string name, int age, string sex):m_name(name), m_age(age), m_sex(sex){}
string getname(){return m_name;}
int getage(){return m_age;}
string getsex(){return m_sex;}
};
class worker : public people
{
string m_num;
string m_bum;
string m_yobi;
int m_salary;
public:
worker(){};
worker(string num, string name, int age, string sex, string yobi, string bum, int salary):
people(name, age, sex),m_num(num), m_bum(bum), m_yobi(yobi), m_salary(salary){}
string getnum(){return m_num;}
string getbum(){return m_bum;}
string getyobi(){return m_yobi;}
int getsalary(){return m_salary;}
};
class Control
{
public:
void jiemian(); //界面显示
void init(); //注册职工
void xiugai(); //修改职工信息
void shanchu(); //删除职工信息
void chaxun(); //查询职工信息
void paiming(); //根据薪资排名
void pint();
4000
//打印所有信息
};
#endif
#include "control.h" bool SORT(worker& wor1, worker& wor2) //比较两个员工薪水的大小 { return wor1.getsalary()>wor2.getsalary(); } void Control::jiemian() { system("cls"); cout<<"\n\n\n"; cout<<"\t\t\t**************************************\n"; cout<<"\t\t\t* 欢迎来到职工管理系统 *\n"; cout<<"\t\t\t* 1 注册新职工 *\n"; cout<<"\t\t\t* 2 修改职工信息 *\n"; cout<<"\t\t\t* 3 删除职工信息 *\n"; cout<<"\t\t\t* 4 查询职工信息 *\n"; cout<<"\t\t\t* 5 薪资排名顺序 *\n"; cout<<"\t\t\t* 6 浏览所有信息 *\n"; cout<<"\t\t\t**************************************\n"; cout<<"\n\n\t\t请输入您的选择:"; } void Control::init() { string num; //职工号 string name; //名字 int age; //年龄 string x; //性别 f为女 m为男 string yobi; //邮编 string bum; //部门 int salary; //工资 system("cls"); cout<<"\n\n\n"; cout<<"\t\t\t请输入职工号:"; cin>>num; cout<<"\n\t\t\t请输入名字:"; cin>>name; cout<<"\n\t\t\t请输入年龄:"; cin>>age; cout<<"\n\t\t\t请输入性别:"; cin>>x; cout<<"\n\t\t\t请输入邮编:"; cin>>yobi; cout<<"\n\t\t\t请输入部门:"; cin>>bum; cout<<"\n\t\t\t请输入工资:"; cin>>salary; worker w(num, name, age, x, yobi, bum, salary); ofstream out; out.open("职工档案.txt", ios::out | ios::app); if(!out) { cerr<<"open error!"<<endl; return; } out.write((char*)&w, sizeof(worker)); out.close(); } void Control::xiugai() { string str1; int flag = 0; string name; //名字 int age; //年龄 string x; //性别 f为女 m为男 string yobi; //邮编 string bum; //部门 int salary; //工资 system("cls"); cout<<"\n\n\n"; cout<<"\t\t\t请输入要修改人的职工号:"; cin>>str1; ifstream in; in.open("职工档案.txt", ios::in | ios::_Nocreate); if(!in) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } worker wer; list<worker> link; list<worker>::iterator it = link.begin(); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); while(1) { memset(&wer, 0 ,sizeof(worker)); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); continue; } else { break; } } } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } in.close(); for (it = link.begin(); it != link.end(); it++) { if (it->getnum() == str1) { flag = 1; cout<<"\n\t\t\t请确认被修改人的名字:"<<it->getname()<<endl; name = it->getname(); cout<<"\n\t\t\t请输入修改后的年龄:"; cin>>age; cout<<"\n\t\t\t请输入修改后的性别:"; cin>>x; cout<<"\n\t\t\t请输入修改后的邮编:"; cin>>yobi; cout<<"\n\t\t\t请输入修改后的部门:"; cin>>bum; cout<<"\n\t\t\t请输入修改后的薪资:"; cin>>salary; link.erase(it); worker wer(str1, name, age, x, yobi, bum, salary); link.push_back(wer); break; } } if (flag) { Sleep(2); system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t修改成功!"<<endl; } else { Sleep(2); system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t查无此人!"<<endl; return; } remove("职工档案.txt"); ofstream out; out.open("职工档案.txt", ios::out | ios::app); if(!out) { cerr<<"open error"<<endl; return; } for (it = link.begin(); it != link.end(); it++) { worker w(it->getnum(), it->getname(), it->getage(), it->getsex(), it->getyobi(), it->getbum(), it->getsalary()); out.write((char*)&w, sizeof(worker)); memset(&w, 0, sizeof(worker)); } out.close(); } void Control::shanchu() { system("cls"); string str1; int flag = 0; cout<<"\n\n\n"; cout<<"\t\t\t请输入要删除人的职工号:"; cin>>str1; ifstream in; in.open("职工档案.txt", ios::in | ios::_Nocreate); if(!in) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } worker wer; list<worker> link; list<worker>::iterator it = link.begin(); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); while(1) { memset(&wer, 0 ,sizeof(worker)); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); continue; } else { break; } } } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } in.close(); if (link.begin() == link.end()) //只有一个元素 { remove("职工档案.txt"); ofstream outfile; outfile.open("职工档案.txt", ios::out); outfile.close(); system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t删除成功!"<<endl; return; } for (it = link.begin(); it != link.end(); it++) { if(it->getnum() == str1) { flag = 1; link.erase(it); break; } } if(flag) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t删除成功!"<<endl; } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t查无此人!"<<endl; return; } remove("职工档案.txt"); ofstream out; out.open("职工档案.txt", ios::out | ios::app); if(!out) { cerr<<"open error"<<endl; return; } for (it = link.begin(); it != link.end(); it++) { worker w(it->getnum(), it->getname(), it->getage(), it->getsex(), it->getyobi(), it->getbum(), it->getsalary()); out.write((char*)&w, sizeof(worker)); memset(&w, 0, sizeof(worker)); } out.close(); } void Control::chaxun() { system("cls"); string str1, str2; int flag = 0; cout<<"\n\n\n"; cout<<"\t\t\t请输入要查询的职工号:"; cin>>str1; cout<<"\n\n\t\t\t请输入要查询的名字:"; cin>>str2; ifstream in; in.open("职工档案.txt", ios::in | ios::_Nocreate); if(!in) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } worker wer; list<worker> link; list<worker>::iterator it = link.begin(); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); while(1) { memset(&wer, 0 ,sizeof(worker)); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); continue; } else { break; } } } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } in.close(); for (it = link.begin();it != link.end(); it++) { if (it->getnum() == str1 && it->getname() == str2) { flag = 1; cout<<"\n\t\t年龄:"<<it->getage()<<" 性别:"<<it->getsex()<<" 邮编:"<<it->getyobi()<<" 部门:" <<it->getbum()<<" 薪资:"<<it->getsalary()<<endl; } } if (flag == 0) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t查无此人!"<<endl; } } void Control::paiming() { system("cls"); cout<<"\n\n\n"; ifstream in; in.open("职工档案.txt", ios::in | ios::_Nocreate); if(!in) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } worker wer; list<worker> link; list<worker>::iterator it = link.begin(); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); while(1) { memset(&wer, 0 ,sizeof(worker)); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); continue; } else { break; } } } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } in.close(); link.sort(/*link.begin(), link.end(), */SORT); for (it = link.begin(); it != link.end(); it++) { cout<<"职工号:"<<it->getnum()<<" 名字:"<<it->getname()<<" 年龄:"<<it->getage()<<" 性别:"<<it->getsex() <<" 邮编:"<<it->getyobi()<<" 部门:"<<it->getbum()<<" 薪资:"<<it->getsalary()<<endl; } remove("职工档案.txt"); ofstream out; out.open("职工档案.txt", ios::out | ios::app); if(!out) { cerr<<"open error"<<endl; return; } for (it = link.begin(); it != link.end(); it++) { worker w(it->getnum(), it->getname(), it->getage(), it->getsex(), it->getyobi(), it->getbum(), it->getsalary()); out.write((char*)&w, sizeof(worker)); memset(&w, 0, sizeof(worker)); } out.close(); } void Control::pint() { system("cls"); cout<<"\n\n\n"; ifstream in; in.open("职工档案.txt", ios::in | ios::_Nocreate); if(!in) { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } worker wer; list<worker> link; list<worker>::iterator it = link.begin(); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); while(1) { memset(&wer, 0 ,sizeof(worker)); if (in.read((char*)&wer, sizeof(worker))) { link.push_back(wer); continue; } else { break; } } } else { system("cls"); cout<<"\n\n\n\n\n\n\t\t\t\t系统中暂时无人!"<<endl; in.close(); return; } in.close(); for (it = link.begin(); it != link.end(); it++) { cout<<"职工号:"<<it->getnum()<<" 名字:"<<it->getname()<<" 年龄:"<<it->getage()<<" 性别:"<<it->getsex() <<" 邮编:"<<it->getyobi()<<" 部门:"<<it->getbum()<<" 薪资:"<<it->getsalary()<<endl; } }
#include "control.h" int main() { Control con; char ecf; //选项 char sel[10]; while(1) { con.jiemian(); cin>>ecf; switch(ecf) { case '1': { con.init(); break; } case '2': { con.xiugai(); cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } case '3': { con.shanchu(); cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } case '4': { con.chaxun(); cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } case '5': { con.paiming(); cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } case '6': { con.pint(); cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } default: { system("cls"); cout<<"\n\n\n\n\n请输入1--6!"<<endl; cout<<"\n\n\t\t输入任意键返回:"; cin>>sel; break; } } } return 0; }
相关文章推荐
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- 用vector容器写职工管理系统
- C语言课程设计职工信息管理系统
- 基于容器的用户安全管理系统和JMS(5)
- 基于容器的用户安全管理系统和JMS(4)
- 自动1122徐达武--——职工信息管理系统
- 职工工资管理系统
- 项目实例:车辆信息统计报表管理系统--FlowLayoutPanel容器的问题
- 自动1122徐达武职工信息管理系统(无图)
- C语言课程设计之职工信息管理系统
- 解决学生信息管理系统之List列表中重复添加相同数据问题。
- 职工信息管理系统
- 职工管理系统
- 我的c语言职工工资管理系统-链表做的