首页 > 编程 > C++ > 正文

C++向量容器实现职工管理

2019-11-06 07:57:14
字体:
来源:转载
供稿:网友
#include <iostream>#include <string>#include <fstream>#include <vector>#include <algorithm>using namespace std;class Worker //职工基本信息类{PRivate:int id; //职工号int age;//年龄int postcode;//邮编int salary;//工资string name;//姓名string sex;//性别string department;//部门public:void setid(int id);void setage(int age);void setpostcode(int postcode);void setsalary(int salary);void setname(string name);void setsex(string sex);void setdepartment(string department);int getid();int getage();int getpostcode();int getsalary();string getname();string getsex();string getdepartment();friend ostream &Operator <<(ostream &out, Worker &worker);//重载输出bool operator==(Worker &worker);//重载等于bool operator<(Worker &worker);//重载小于};ostream &operator <<(ostream &out, Worker &worker){out <<worker.getid()<<"/t"<<worker.getage()<<"/t"<<worker.getpostcode()<<"/t"<<worker.getsalary()<<"/t"<<worker.getname()<<"/t"<<worker.getsex()<<"/t"<<worker.getdepartment();return out;}bool Worker :: operator==(Worker &worker){return this->salary == worker.salary;}bool Worker :: operator<(Worker &worker){return this->salary > worker.salary;}//赋值操作void Worker :: setid(int id){this->id = id;}void Worker :: setage(int age){this->age = age;}void Worker :: setpostcode(int postcode){this->postcode = postcode;}void Worker :: setsalary(int salary){this->salary = salary;}void Worker :: setname(string name){this->name = name;}void Worker :: setsex(string sex){this->sex = sex;}void Worker :: setdepartment(string department){this->department = department;}//取值操作int Worker :: getid(){return id;}int Worker :: getage(){return age;}int Worker :: getpostcode(){return postcode;}int Worker :: getsalary(){return salary;}string Worker :: getname(){return name;}string Worker :: getsex(){return sex;}string Worker :: getdepartment(){return department;}vector<Worker> s; //创建一个名为s的链表容器Worker worker;//定义一个对象void add() //注册职工信息{int id; //职工号int age;//年龄int postcode;//邮编int salary;//工资string name;//姓名string sex;//性别string department;//部门cout <<"请输入职工的职工号 :"<< endl;cin >> id;worker.setid(id);cout <<"请输入职工的年龄 :"<< endl;cin >> age;worker.setage(age);cout <<"请输入职工的邮编 :"<< endl;cin >> postcode;worker.setpostcode(postcode);cout <<"请输入职工的工资 :"<< endl;cin >> salary;worker.setsalary(salary);cout <<"请输入职工的姓名 :"<< endl;cin >> name;worker.setname(name);cout <<"请输入职工的性别 :"<< endl;cin >> sex;worker.setsex(sex);cout <<"请输入职工的部门 :"<< endl;cin >> department;worker.setdepartment(department);s.push_back(worker); //将信息插入容器内}void dele() //删除职工信息(通过id删除){int w_id;int flag = 0;int i;cout << "请输入你要删除的职工id :" << endl;cin >> w_id; //输入你要删除的职工id;for (i = 0; i < s.size(); i++){if (w_id == s[i].getid()){s.erase(s.begin() + i);cout << "删除成功" << endl;flag = 1;}}if (flag == 0){cout << "不存在此职工号,请重新输入id" << endl;}}void search(){string w_name; //定义要查询的名字string w_department; //定义要查询的部门int flag = 0;int i;int num; //功能选项cout << "**   1.通过名字查询   **" << endl;cout << "**   2.通过部门查询   **" << endl;do {cout <<"********************************"<< endl;cout <<"请输入你的选择: " << endl;cin >> num;} while (num < 1 || num > 2 );switch(num){case 1:{cout << "请输入名字 : " << endl;cin >> w_name;            cout <<"职工号/t"<<"年龄/t"<<"邮编/t"<<"工资/t"<<"姓名/t"<<"性别/t"<<"部门"<< endl; for (i = 0; i < s.size(); i++){if (w_name == s.at(i).getname()){ cout << s[i] << endl;flag = 1;}}if (flag == 0){cout << "没有此职工名字,请重新输入" << endl;}break;}case 2:{cout << "请输入部门 : " << endl;cin >> w_department;            cout <<"职工号/t"<<"年龄/t"<<"邮编/t"<<"工资/t"<<"姓名/t"<<"性别/t"<<"部门"<< endl; for (i = 0; i < s.size(); i++){if (w_name == s.at(i).getdepartment()){ cout << s[i] << endl;flag = 1;}}if (flag == 0){cout << "没有此职工部门,请重新输入" << endl;}break;}}}void change()//根据ID修改职工信息{int w_id; //职工号int w_age;//年龄int w_postcode;//邮编int w_salary;//工资string w_name;//姓名string w_sex;//性别string w_department;//部门int num;int i;int flag = 0;cout <<"请输入职工号:"<<endl;cin >> w_id;for (i = 0; i < s.size(); i++){if (w_id == s.at(i).getid()){flag = 1;cout <<"--------------------------"<< endl;cout <<"|       1.修改年龄       |"<< endl;cout <<"|       2.修改邮编       |"<< endl; cout <<"|       3.修改工资       |"<< endl;cout <<"|       4.修改姓名       |"<< endl;cout <<"|       5.修改性别       |"<< endl;cout <<"|       6.修改部门       |"<< endl;cout <<"|       7.返回菜单       |"<< endl;cout <<"--------------------------"<< endl;cout << endl;do {cout << "请输入你要选择的操作(1-7) :" << endl;cin >> num;} while (num < 1 || num > 7 );switch(num){case 1:{cout <<"请输入你要修改的年龄:"<<endl;cin >> w_age;s[i].setage(w_age);break;}case 2:{cout << "请输入你要修改的邮编:"<<endl;cin >> w_postcode;   s[i].setpostcode(w_postcode);break;}case 3:{cout <<"请输入你要更改的工资:"<<endl;cin >> w_salary;s[i].setsalary(w_salary);break;}case 4:{cout <<"请输入你要更改的姓名:"<<endl;cin >> w_name;s[i].setname(w_name);break;}case 5:{cout <<"请输入你要更改的性别:"<<endl;cin >> w_sex;s[i].setsex(w_sex);break;}case 6:{cout <<"请输入你要更改的部门:"<<endl;cin >> w_department;s[i].setdepartment(w_department);break;}case 7:{return;}}}}if (flag == 0){cout << "不存在此职工ID,请重新输入!" << endl;}}void visitworker() //显示职工信息{int i;cout << endl;cout <<"职工号/t"<<"年龄/t"<<"邮编/t"<<"工资/t"<<"姓名/t"<<"性别/t"<<"部门"<< endl; for (i = 0; i < s.size(); i++){cout << s[i] << endl;}}void save() //写入文件{ofstream outfile("C://Users//周键钧//Desktop//1.txt", ios::app);if (!outfile){cerr<<"open erro"<<endl;exit(1);}int i;outfile  <<"职工号/t"<<"年龄/t"<<"邮编/t"<<"工资/t"<<"姓名/t"<<"性别/t"<<"部门"<< endl;    for (i = 0; i < s.size(); i++){  outfile  << s[i] << endl;}outfile.close();}void sal_sort()//按工资排序{int i;sort(s.begin(), s.end());for (i = 0; i < s.size(); i++){cout << s[i] << endl;}}void menu() //菜单{cout<<endl;cout<<endl;cout<<"***********************************************"<<endl;cout<<"** **"<<endl;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<<"** 0.退出 **"<<endl;cout<<"** **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;}int main(){int num;while (1){menu();cout << "请输入你要选择的功能选项(0-7):" << endl;cin >> num;switch(num){case 1:{add(); break;}case 2:{change();break;}case 3:{dele();break;}case 4:{sal_sort();break;}case 5:{search();break;}case 6:{visitworker();break;}case 7:{save();break;}case 0:{exit(1);}default:{cout << "输入值无效,请重新输入" << endl;}}}return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选