经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
C++实现职工工资管理系统
来源:jb51  时间:2022/3/1 11:38:36  对本文有异议

本文实例为大家分享了C++实现职工工资管理系统的具体代码,供大家参考,具体内容如下

main.cpp

  1. #include <iostream>
  2. #include <vector>
  3. #include <map>
  4. #include <algorithm>
  5. #include <string>
  6. #include <windows.h>
  7. #include "data.h"
  8. #include "user.h"
  9. #include "fuction1-9.h"
  10. #include "fuction10.h"
  11. #include "menu.h"
  12. using namespace std;
  13. int main()
  14. {
  15. ?? ?system("color 3f");
  16. ?? ?if (login() == false)
  17. ?? ??? ?return 0;
  18. ?? ?load_inf();
  19. ?? ?while (show_menu());
  20. ?? ?save_inf();
  21. ?
  22. ?? ?return 0;
  23. }

data.h

  1. #pragma once
  2. const int maxn = 100;
  3. using namespace std;
  4. struct department
  5. {
  6. ?? ?int code;
  7. ?? ?int number;
  8. ?? ?string department_name;
  9. ?? ?void show_inf() { printf("%50s部门号:%-6d部门名称:%-12s部门人数:%-6d\n", "", code, department_name.c_str(), number); }
  10. };
  11. map<int, department> dep;//部门表的映射
  12. struct employee
  13. {
  14. ?? ?int code;
  15. ?? ?string name;
  16. ?? ?string gender;
  17. ?? ?int working_age;
  18. ?? ?int department_code;//部门编码
  19. ?? ?void show_inf() { printf("%50s编号:%-6d姓名:%-12s性别:%-9s工龄(年):%-6d部门:%-12s\n", "", code, name.c_str(), gender.c_str(), working_age, dep[department_code].department_name.c_str()); }
  20. };
  21. map<int, employee> emp;///存储数据的容器
  22. struct wage
  23. {
  24. ?? ?int code;
  25. ?? ?int base_wage;//基本工资
  26. ?? ?int overtime;//加班工资
  27. ?? ?int bonus;//津贴
  28. ?? ?int gross_pay;//应发工资
  29. ?? ?int withholding;//代扣款
  30. ?? ?int payment; //实发工资
  31. ?? ?void show_inf() { printf("%30s员工号:%-6d员工姓名:%-12s基本工资:%-6d\t加班工资:%-6d\t津贴:%-6d\t应发工资:%-6d\t代扣款:%6d\t实发工资:%6d\n", "", code, emp[code].name.c_str(), base_wage, overtime, bonus, gross_pay, withholding, payment); }
  32. ?? ?void calculate() { gross_pay = base_wage + overtime + bonus, payment = gross_pay - withholding; }
  33. };
  34. map<int, wage> wag;

fuciton1-9.h

  1. #pragma once
  2. using namespace std;
  3. void load_inf()
  4. {
  5. ?? ?FILE *p;
  6. ?? ?char s[maxn];
  7. ?
  8. ?? ?system("cls");
  9. ?? ?if ((p = fopen("employee.txt", "r")) == NULL)
  10. ?? ?{
  11. ?? ??? ?printf("%70s数据异常,无法访问!\n", "");
  12. ?? ??? ?system("pause");
  13. ?? ??? ?exit(0);
  14. ?? ?}
  15. ?? ?while (fgets(s, 100, p))
  16. ?? ?{
  17. ?? ??? ?int code;
  18. ?? ??? ?char name[maxn];
  19. ?? ??? ?char gender[maxn];
  20. ?? ??? ?int working_age;
  21. ?? ??? ?int department_code;
  22. ?
  23. ?? ??? ?sscanf(s, "%d %s %s %d %d", &code, name, gender, &working_age, &department_code);
  24. ?? ??? ?emp[code] = (employee{ code, name, gender, working_age, department_code });
  25. ?? ?}
  26. ?? ?printf("%70s", "");
  27. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  28. ?? ?printf("员工信息导入成功!\n");
  29. ?? ?cout << endl;
  30. ?? ?fclose(p);
  31. ?? ?if ((p = fopen("department.txt", "r")) == NULL)
  32. ?? ?{
  33. ?? ??? ?printf("%70s数据异常,无法访问!\n", "");
  34. ?? ??? ?system("pause");
  35. ?? ??? ?exit(0);
  36. ?? ?}
  37. ?? ?while (fgets(s, 100, p))
  38. ?? ?{
  39. ?? ??? ?int code;
  40. ?? ??? ?int number;
  41. ?? ??? ?char department_name[maxn];
  42. ?
  43. ?? ??? ?sscanf(s, "%d %d %s", &code, &number, department_name);
  44. ?? ??? ?dep[code] = { code, number, department_name };
  45. ?? ?}
  46. ?? ?printf("%70s", " ");
  47. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  48. ?? ?printf("部门信息导入成功!\n");
  49. ?? ?cout << endl;
  50. ?? ?fclose(p);
  51. ?? ?if ((p = fopen("wage.txt", "r")) == NULL)
  52. ?? ?{
  53. ?? ??? ?printf("%70s数据异常,无法访问!", "");
  54. ?? ??? ?system("pause");
  55. ?? ??? ?exit(0);
  56. ?? ?}
  57. ?? ?while (fgets(s, 100, p))
  58. ?? ?{
  59. ?? ??? ?int code;//员工号
  60. ?? ??? ?int base_wage;//基本工资
  61. ?? ??? ?int overtime;//加班工资
  62. ?? ??? ?int bonus;//津贴
  63. ?? ??? ?int gross_pay;
  64. ?? ??? ?int withholding;//代扣款
  65. ?? ??? ?int payment;
  66. ?
  67. ?? ??? ?sscanf(s, "%d %d %d %d %d %d %d", &code, &base_wage, &overtime, &bonus, &gross_pay, &withholding, &payment);
  68. ?? ??? ?wag[code] = (wage{ code, base_wage, overtime, bonus, gross_pay, withholding, payment });
  69. ?? ?}
  70. ?? ?printf("%70s", " ");
  71. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  72. ?? ?printf("工资信息导入成功!\n");
  73. ?? ?cout << endl;
  74. ?? ?fclose(p);
  75. ?? ?return;
  76. }
  77. void save_inf()
  78. {
  79. ?? ?FILE *p = fopen("employee.txt", "w");
  80. ?? ?char inf[maxn];
  81. ?
  82. ?? ?for (auto it = emp.begin(); it != emp.end(); it++)
  83. ?? ?{
  84. ?? ??? ?sprintf(inf, "%d %s %s %d %d\n", it->second.code, it->second.name.c_str(), it->second.gender.c_str(), it->second.working_age, it->second.department_code);
  85. ?? ??? ?fputs(inf, p);
  86. ?? ?}
  87. ?? ?printf("%70s", " ");
  88. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  89. ?? ?printf("员工信息保存成功!\n");
  90. ?? ?fclose(p);
  91. ?? ?p = fopen("department.txt", "w");
  92. ?? ?for (auto it = dep.begin(); it != dep.end(); it++)
  93. ?? ?{
  94. ?? ??? ?sprintf(inf, "%d %d %s\n", it->second.code, it->second.number, it->second.department_name.c_str());
  95. ?? ??? ?fputs(inf, p);
  96. ?? ?}
  97. ?? ?printf("%70s", "");
  98. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  99. ?? ?printf("部门信息保存成功!\n");
  100. ?? ?fclose(p);
  101. ?? ?p = fopen("wage.txt", "w");
  102. ?? ?for (auto it = wag.begin(); it != wag.end(); it++)
  103. ?? ?{
  104. ?? ??? ?sprintf(inf, "%d %d %d %d %d %d %d\n", it->second.code, it->second.base_wage, it->second.overtime, it->second.bonus, it->second.gross_pay, it->second.withholding, it->second.payment);
  105. ?? ??? ?fputs(inf, p);
  106. ?? ?}
  107. ?? ?printf("%70s", "");
  108. ?? ?for (int i = 0; i < 5; i++) { cout << "."; Sleep(200); }
  109. ?? ?printf("工资信息保存成功!\n");
  110. ?? ?fclose(p);
  111. ?? ?return;
  112. }
  113. /以下为部门表的操作
  114. void add_dep()
  115. {
  116. ?? ?printf("%70s请输入要添加的部门号:", "");
  117. ?? ?int code; cin >> code;
  118. ?? ?string department_name;
  119. ?
  120. ?? ?if (!dep.count(code))
  121. ?? ?{
  122. ?? ??? ?printf("%70s请输入部门名称:", "");
  123. ?? ??? ?while (1)
  124. ?? ??? ?{
  125. ?? ??? ??? ?int flag = 0;
  126. ?? ??? ??? ?cin >> department_name;
  127. ?? ??? ??? ?for (auto it = dep.begin(); it != dep.end(); it++)
  128. ?? ??? ??? ??? ?if (it->second.department_name == department_name)
  129. ?? ??? ??? ??? ?{
  130. ?? ??? ??? ??? ??? ?printf("%70s该部门已存在, 请重新输入!\n", "");
  131. ?? ??? ??? ??? ??? ?flag = 1;
  132. ?? ??? ??? ??? ?}
  133. ?? ??? ??? ?if (!flag) break;
  134. ?? ??? ?}
  135. ?? ??? ?dep[code] = { code, 0, department_name };
  136. ?? ??? ?printf("%70s部门添加成功!该部门信息如下:\n", "");
  137. ?? ??? ?dep[code].show_inf();
  138. ?? ?}
  139. ?? ?else
  140. ?? ??? ?printf("%70s该部门已存在!\n", "");
  141. ?? ?return;
  142. }
  143. void change_dep()
  144. {
  145. ?? ?printf("%70s请输入要修改的部门编号:", "");
  146. ?? ?int code; cin >> code;
  147. ?
  148. ?? ?if (!dep.count(code))
  149. ?? ??? ?printf("%70s该部门不存在!\n", "");
  150. ?? ?else
  151. ?? ?{
  152. ?? ??? ?printf("%70s该部门当前信息如下:\n", "");
  153. ?? ??? ?dep[code].show_inf();
  154. ?? ??? ?printf("%70s请输入部门的新名字:", "");
  155. ?? ??? ?while (1)
  156. ?? ??? ?{
  157. ?? ??? ??? ?string name; cin >> name;
  158. ?? ??? ??? ?int flag = 0;
  159. ?
  160. ?? ??? ??? ?for (auto it = dep.begin(); it != dep.end(); it++)
  161. ?? ??? ??? ??? ?if (it->second.department_name == name)
  162. ?? ??? ??? ??? ?{
  163. ?? ??? ??? ??? ??? ?flag = 1;
  164. ?? ??? ??? ??? ??? ?break;
  165. ?? ??? ??? ??? ?}
  166. ?? ??? ??? ?if (flag)
  167. ?? ??? ??? ??? ?printf("%70s部门名字重复!请重新输入\n", "");
  168. ?? ??? ??? ?else
  169. ?? ??? ??? ?{
  170. ?? ??? ??? ??? ?dep[code].department_name = name;
  171. ?? ??? ??? ??? ?printf("%70s修改成功!\n", "");
  172. ?? ??? ??? ??? ?printf("%70s修改后的部门信息如下:\n", "");
  173. ?? ??? ??? ??? ?dep[code].show_inf();
  174. ?? ??? ??? ??? ?break;
  175. ?? ??? ??? ?}
  176. ?? ??? ?}
  177. ?? ?}
  178. ?? ?return;
  179. }
  180. void delete_dep()
  181. {
  182. ?? ?printf("%70s请输入要删除的部门编号:", "");
  183. ?? ?int code; cin >> code;
  184. ?? ?if (!dep.count(code))
  185. ?? ??? ?printf("%70s该部门不存在,无法删除!\n", "");
  186. ?? ?else if (!dep[code].number)//如果该部门没有人,则可删除
  187. ?? ?{
  188. ?? ??? ?for (auto it = dep.begin(); it != dep.end(); it++)
  189. ?? ??? ??? ?if (it->first == code)
  190. ?? ??? ??? ?{
  191. ?? ??? ??? ??? ?printf("%70s您删除了%s\n", "", it->second.department_name.c_str());
  192. ?? ??? ??? ??? ?dep.erase(it);
  193. ?? ??? ??? ??? ?break;
  194. ?? ??? ??? ?}
  195. ?? ?}
  196. ?? ?else
  197. ?? ??? ?printf("%70s该部门有员工,不可删除!\n", "");
  198. ?? ?return;
  199. }
  200. /以下为员工表的操作
  201. void add_emp()
  202. {
  203. ?? ?printf("%70s请输入要添加的员工号:", "");
  204. ?? ?int code; cin >> code;
  205. ?? ?if (!emp.count(code))
  206. ?? ?{
  207. ?? ??? ?emp[code].code = code;
  208. ?? ??? ?printf("%70s请输入员工的姓名:", "");cin >> emp[code].name;
  209. ?? ??? ?printf("%70s请输入员工的性别:", "");cin >> emp[code].gender;
  210. ?? ??? ?printf("%70s请输入员工的工龄:", "");cin >> emp[code].working_age;
  211. ?? ??? ?printf("%70s请输入员工的部门号:", "");
  212. ?? ??? ?int department_code;
  213. ?? ??? ?while (cin >> department_code && !dep.count(department_code))
  214. ?? ??? ??? ?printf("%70s该部门不存在,请重新输入:", "");
  215. ?? ??? ?emp[code].department_code = department_code;
  216. ?? ??? ?dep[department_code].number++;
  217. ?? ??? ?printf("%70s员工信息添加成功!员工信息如下:\n", "");
  218. ?? ??? ?emp[code].show_inf();
  219. ?? ?}
  220. ?? ?else
  221. ?? ??? ?printf("%70s该员工号已存在\n", "");
  222. ?? ?return;
  223. }
  224. void change_emp()
  225. {
  226. ?? ?int code;
  227. ?
  228. ?? ?printf("%70s请输入要修改的员工号:", "");
  229. ?? ?while (cin >> code && !emp.count(code))
  230. ?? ??? ?printf("%70s该员工不存在!请重新输入:", "");
  231. ?? ?printf("%70s该员工当前信息如下:\n", "");
  232. ?? ?emp[code].show_inf();
  233. ?? ?printf("%70s请输入修改后的工龄:", "");cin >> emp[code].working_age;
  234. ?? ?printf("%70s请输入修改后的部门编码:", "");
  235. ?? ?dep[emp[code].department_code].number--;///原部门人数减一
  236. ?? ?cin >> emp[code].department_code;
  237. ?? ?dep[emp[code].department_code].number++;//现部门人数加一
  238. ?? ?printf("%70s修改成功!修改之后的信息如下:\n", "");
  239. ?? ?emp[code].show_inf();
  240. ?? ?return;
  241. }
  242. void delete_emp()
  243. {
  244. ?? ?printf("%70s请输入要删除的员工号:", "");
  245. ?? ?int code; cin >> code;
  246. ?? ?if (!emp.count(code))
  247. ?? ??? ?printf("%70s该员工不存在!无法删除\n", "");
  248. ?? ?else
  249. ?? ?{
  250. ?? ??? ?dep[emp[code].department_code].number--;//原部门人数减一
  251. ?? ??? ?for (auto it = emp.begin(); it != emp.end(); it++)
  252. ?? ??? ??? ?if (it->first == code)
  253. ?? ??? ??? ?{
  254. ?? ??? ??? ??? ?printf("%70s您删除的员工信息如下:\n", "");
  255. ?? ??? ??? ??? ?emp[it->second.code].show_inf();
  256. ?? ??? ??? ??? ?emp.erase(it);
  257. ?? ??? ??? ??? ?break;
  258. ?? ??? ??? ?}
  259. ?? ??? ?for (auto it = wag.begin(); it != wag.end(); it++)
  260. ?? ??? ??? ?if (it->first == code)
  261. ?? ??? ??? ?{
  262. ?? ??? ??? ??? ?wag.erase(it);
  263. ?? ??? ??? ??? ?break;
  264. ?? ??? ??? ?}
  265. ?? ?}
  266. ?? ?return;
  267. }
  268. void add_wag()
  269. {
  270. ?? ?printf("%70s请输入录入工资的员工编号:", "");
  271. ?? ?int code; cin >> code;
  272. ?
  273. ?? ?if (!emp.count(code))
  274. ?? ??? ?printf("%70s该员工不存在!\n", "");
  275. ?? ?else if (wag.count(code))
  276. ?? ??? ?printf("%70s该员工信息已录入!\n", "");
  277. ?? ?else
  278. ?? ?{
  279. ?? ??? ?wag[code].code = code;
  280. ?? ??? ?printf("%70s请输入员工的基本工资:", ""); cin >> wag[code].base_wage;
  281. ?? ??? ?printf("%70s请输入员工的加班工资:", ""); cin >> wag[code].overtime;
  282. ?? ??? ?printf("%70s请输入员工的津贴:", "");cin >> wag[code].bonus;
  283. ?? ??? ?printf("%70s请输入员工的代扣款:", ""); cin >> wag[code].withholding;
  284. ?? ??? ?printf("%70s员工工资信息添加成功!\n", "");
  285. ?? ??? ?printf("%70s工资信息如下:\n", "");
  286. ?? ??? ?wag[code].calculate();
  287. ?? ??? ?wag[code].show_inf();
  288. ?? ?}
  289. ?? ?return;
  290. }
  291. void change_wag()
  292. {
  293. ?? ?int code;
  294. ?
  295. ?? ?printf("%70s要修改者的编号:", "");
  296. ?? ?while (cin >> code && !wag.count(code))
  297. ?? ??? ?printf("%70s该员工不存在!请重新输入\n", "");
  298. ?? ?printf("%70s该员工当前的工资信息如下\n", "");
  299. ?? ?wag[code].show_inf();
  300. ?? ?printf("%70s请输入基本工资:", ""); cin >> wag[code].base_wage;
  301. ?? ?printf("%70s请输入加班工资:", "");cin >> wag[code].overtime;
  302. ?? ?printf("%70s请输入津贴:", ""); cin >> wag[code].bonus;
  303. ?? ?printf("%70s请输入代扣款:", ""); cin >> wag[code].withholding;
  304. ?? ?wag[code].calculate();
  305. ?? ?printf("%70s修改成功!修改之后的工资信息如下\n", "");
  306. ?? ?wag[code].show_inf();
  307. ?? ?return;
  308. }
  309. void delete_wag()
  310. {
  311. ?? ?printf("%70s请输入要删除工资信息的员工编号:", "");
  312. ?? ?int code; cin >> code;
  313. ?? ?if (!wag.count(code))
  314. ?? ??? ?printf("%70s不存在该员工的工资信息\n", "");
  315. ?? ?else
  316. ?? ?{
  317. ?? ??? ?for (auto it = wag.begin(); it != wag.end(); it++)
  318. ?? ??? ??? ?if (it->first == code)
  319. ?? ??? ??? ?{
  320. ?? ??? ??? ??? ?wag.erase(it);
  321. ?? ??? ??? ??? ?printf("%70s删除成功!\n", "");
  322. ?? ??? ??? ??? ?break;
  323. ?? ??? ??? ?}
  324. ?? ?}
  325. ?? ?return;
  326. }

fuction10.h

  1. #pragma once
  2. bool comp1(const int &a, const int &b)//升序
  3. {
  4. ?? ?return wag[a].payment < wag[b].payment;
  5. }
  6. bool comp2(const int &a, const int &b)
  7. {
  8. ?? ?return wag[a].payment > wag[b].payment;
  9. }
  10. ?
  11. bool search_inf()
  12. {
  13. ?? ?system("cls");
  14. ?? ?printf("%70s0.返回\n", "");
  15. ?? ?printf("%70s1.查询全部员工的工资\n", "");
  16. ?? ?printf("%70s2.按员工号查询员工工资\n", "");
  17. ?? ?printf("%70s3.按部门查询员工工资\n", "");
  18. ?? ?printf("%70s4.按指定实发工资区间查询员工工资\n", "");
  19. ?? ?printf("%70s5.按员工姓名查询员工工资\n", "");
  20. ?? ?printf("%70s6.查询全部部门信息\n", "");
  21. ?? ?printf("%70s7.按编号查询单个员工的基本信息\n", "");
  22. ?? ?printf("%70s8.按姓名查询单个员工的基本信息\n", "");
  23. ?? ?printf("%70s9.显示所有员工的基本信息\n", "");
  24. ?? ?printf("%70s请输入操作编号[0-9]:", "");
  25. ?? ?int ope;
  26. ?? ?int code;
  27. ?? ?string name;
  28. ?? ?int dir;
  29. ?? ?int flag = 0;
  30. ?? ?long long sum = 0;
  31. ?? ?vector<int> temp; //存储满足查询要求的人员编号
  32. ?
  33. ?? ?while (cin >> ope && !(ope >= 0 && ope <= 9))
  34. ?? ??? ?printf("%70s输入非法,请重新输入:", "");
  35. ?? ?if (!ope)
  36. ?? ??? ?return false;
  37. ?? ?switch (ope)
  38. ?? ?{
  39. ?? ?case 1:
  40. ?? ??? ?for (auto it = wag.begin(); it != wag.end(); it++)
  41. ?? ??? ?{
  42. ?? ??? ??? ?temp.push_back(it->first);
  43. ?? ??? ??? ?sum += it->second.payment;
  44. ?? ??? ?}
  45. ?? ??? ?printf("%70s1.按实发工资升序\n", "");
  46. ?? ??? ?printf("%70s2.按实发工资降序\n", "");
  47. ?? ??? ?printf("%70s请输入操作类型:", "");
  48. ?? ??? ?while (cin >> dir && dir != 1 && dir != 2)
  49. ?? ??? ??? ?printf("%70s输入非法,请重新输入!\n", "");
  50. ?? ??? ?if (dir == 1)
  51. ?? ??? ??? ?sort(temp.begin(), temp.end(), comp1);
  52. ?? ??? ?else
  53. ?? ??? ??? ?sort(temp.begin(), temp.end(), comp2);
  54. ?? ??? ?for (int i = 0; i < (int)temp.size(); i++)
  55. ?? ??? ??? ?wag[temp[i]].show_inf();
  56. ?? ??? ?printf("%144s合计: %10lld\n", "", sum);
  57. ?? ??? ?break;
  58. ?? ?case 2:
  59. ?? ??? ?printf("%70s请输入要查询的员工号:", "");
  60. ?? ??? ?cin >> code;
  61. ?? ??? ?if (!emp.count(code))
  62. ?? ??? ??? ?printf("%70s该员工不存在!\n", "");
  63. ?? ??? ?else if (!wag.count(code))
  64. ?? ??? ??? ?printf("%70s该员工的工资信息未录入!\n", "");
  65. ?? ??? ?else
  66. ?? ??? ??? ?wag[code].show_inf();
  67. ?? ??? ?break;
  68. ?? ?case 3:
  69. ?? ??? ?printf("%70s请输入所要查询员工的部门:", "");
  70. ?? ??? ?cin >> code;
  71. ?? ??? ?if (!dep.count(code))
  72. ?? ??? ??? ?printf("%70s该部门不存在!\n", "");
  73. ?? ??? ?else
  74. ?? ??? ?{
  75. ?? ??? ??? ?for (auto it = wag.begin(); it != wag.end(); it++)
  76. ?? ??? ??? ??? ?if (emp[it->first].department_code == code)
  77. ?? ??? ??? ??? ?{
  78. ?? ??? ??? ??? ??? ?temp.push_back(it->first);
  79. ?? ??? ??? ??? ??? ?sum += it->second.payment;
  80. ?? ??? ??? ??? ?}
  81. ?? ??? ??? ?printf("%70s1.按实发工资升序\n", "");
  82. ?? ??? ??? ?printf("%70s2.按实发工资降序\n", "");
  83. ?? ??? ??? ?printf("%70s请输入操作类型:", "");
  84. ?? ??? ??? ?while (cin >> dir && dir != 1 && dir != 2)
  85. ?? ??? ??? ??? ?printf("%70s输入非法,请重新输入!\n", "");
  86. ?? ??? ??? ?if (dir == 1)
  87. ?? ??? ??? ??? ?sort(temp.begin(), temp.end(), comp1);
  88. ?? ??? ??? ?else
  89. ?? ??? ??? ??? ?sort(temp.begin(), temp.end(), comp2);
  90. ?? ??? ??? ?for (int i = 0; i < (int)temp.size(); i++)
  91. ?? ??? ??? ??? ?wag[temp[i]].show_inf();
  92. ?? ??? ??? ?printf("%144s合计: %10lld\n", "", sum);
  93. ?? ??? ?}
  94. ?? ??? ?break;
  95. ?? ?case 4:
  96. ?? ??? ?int up, down;
  97. ?
  98. ?? ??? ?printf("%70s请输入实发工资区间的上限:", "");
  99. ?? ??? ?cin >> up;
  100. ?? ??? ?printf("%70s请输入实发工资区间的下限:", "");
  101. ?? ??? ?cin >> down;
  102. ?? ??? ?if (up < down)
  103. ?? ??? ??? ?printf("%70s非法的输入!\n", "");
  104. ?? ??? ?else
  105. ?? ??? ?{
  106. ?? ??? ??? ?for (auto it = wag.begin(); it != wag.end(); it++)
  107. ?? ??? ??? ??? ?if (it->second.payment >= down && it->second.payment <= up)
  108. ?? ??? ??? ??? ?{
  109. ?? ??? ??? ??? ??? ?temp.push_back(it->first);
  110. ?? ??? ??? ??? ??? ?sum += it->second.payment;
  111. ?? ??? ??? ??? ?}
  112. ?? ??? ??? ?if (!temp.size())
  113. ?? ??? ??? ?{
  114. ?? ??? ??? ??? ?printf("%70s查询不到符合条件的员工!\n", "");
  115. ?? ??? ??? ??? ?cout << "" << endl;
  116. ?? ??? ??? ??? ?break;
  117. ?? ??? ??? ?}
  118. ?? ??? ??? ?printf("%70s1.按实发工资升序\n", "");
  119. ?? ??? ??? ?printf("%70s2.按实发工资降序\n", "");
  120. ?? ??? ??? ?printf("%70s请输入操作类型:", "");
  121. ?? ??? ??? ?int dir; cin >> dir;
  122. ?? ??? ??? ?if (dir == 1)
  123. ?? ??? ??? ??? ?sort(temp.begin(), temp.end(), comp1);
  124. ?? ??? ??? ?else
  125. ?? ??? ??? ??? ?sort(temp.begin(), temp.end(), comp2);
  126. ?? ??? ??? ?for (int i = 0; i < (int)temp.size(); i++)
  127. ?? ??? ??? ??? ?wag[temp[i]].show_inf();
  128. ?? ??? ??? ?printf("%144s合计: %10lld\n", "", sum);
  129. ?? ??? ?}
  130. ?? ??? ?break;
  131. ?? ?case 5:
  132. ?? ??? ?printf("%70s请输入员工姓名:", "");
  133. ?? ??? ?cin >> name;
  134. ?? ??? ?for (auto it = emp.begin(); it != emp.end(); it++)
  135. ?? ??? ??? ?if (it->second.name == name)
  136. ?? ??? ??? ?{
  137. ?? ??? ??? ??? ?wag[it->first].show_inf();
  138. ?? ??? ??? ??? ?flag = 1;
  139. ?? ??? ??? ?}
  140. ?? ??? ?if (!flag)
  141. ?? ??? ??? ?printf("%70s查询不到此人!\n", "");
  142. ?? ??? ?break;/这个不需要排序,考虑到会有重名
  143. ?? ?case 6:
  144. ?? ??? ?for (auto it = dep.begin(); it != dep.end(); it++)
  145. ?? ??? ??? ?dep[it->first].show_inf();
  146. ?? ??? ?break;
  147. ?? ?case 7:
  148. ?? ??? ?printf("%70s请输入员工编号:", "");
  149. ?? ??? ?cin >> code;
  150. ?? ??? ?
  151. ?? ??? ?if (!emp.count(code))
  152. ?? ??? ??? ?printf("%70s该员工不存在!\n", "");
  153. ?? ??? ?else
  154. ?? ??? ??? ?emp[code].show_inf();
  155. ?? ??? ?break;
  156. ?? ?case 8:
  157. ?? ??? ?printf("%70s请输入员工姓名:", "");
  158. ?? ??? ?cin >> name;
  159. ?
  160. ?? ??? ?for(auto it = emp.begin(); it != emp.end(); it++)
  161. ?? ??? ??? ?if (it->second.name == name)
  162. ?? ??? ??? ?{
  163. ?? ??? ??? ??? ?flag = 1;
  164. ?? ??? ??? ??? ?emp[it->second.code].show_inf();
  165. ?? ??? ??? ?}
  166. ?? ??? ?if (!flag)
  167. ?? ??? ??? ?printf("%70s查询不到此人!\n", "");
  168. ?? ??? ?break;
  169. ?? ?case 9:
  170. ?? ??? ?for (auto it = emp.begin(); it != emp.end(); it++)
  171. ?? ??? ??? ?emp[it->second.code].show_inf();
  172. ?? ??? ?break;
  173. ?? ?default:
  174. ?? ??? ?return false;
  175. ?? ?}
  176. ?? ?system("pause");
  177. ?? ?return true;
  178. }

menu.h

  1. #pragma once
  2. using namespace std;
  3. bool show_menu()
  4. {
  5. ?? ?int dir;
  6. ?? ?system("cls");//清屏
  7. ?? ?printf("%70s*************************\n", "");
  8. ?? ?printf("%70s欢迎进入职工工资管理系统!\n", "");
  9. ?? ?printf("%70s*************************\n", "");
  10. ?? ?printf("%70s0. 退出系统\n", "");
  11. ?? ?printf("%70s1. 部门信息录入\n", "");
  12. ?? ?printf("%70s2. 部门信息修改\n", "");
  13. ?? ?printf("%70s3. 部门信息删除\n", "");
  14. ?? ?printf("%70s4. 员工信息录入\n", "");
  15. ?? ?printf("%70s5. 员工信息修改\n", "");
  16. ?? ?printf("%70s6. 员工信息删除\n", "");
  17. ?? ?printf("%70s7. 员工工资录入\n", "");
  18. ?? ?printf("%70s8. 员工工资修改\n", "");
  19. ?? ?printf("%70s9. 员工工资删除\n", "");
  20. ?? ?printf("%70s10.信息查询\n", "");
  21. ?? ?printf("%70s11.修改登录密码\n", "");
  22. ?? ?printf("%70s请输入操作选项[0-11]:", "");
  23. ?? ?while (cin >> dir && (dir < 0 || dir > 11)) printf("%70s非法指令,请重新输入:\n", "");
  24. ?? ?switch (dir)
  25. ?? ?{
  26. ?? ?case 0:
  27. ?? ??? ?return false;
  28. ?? ?case 1:
  29. ?? ??? ?system("cls");
  30. ?? ??? ?add_dep();
  31. ?? ??? ?system("pause");
  32. ?? ??? ?break;
  33. ?? ?case 2:
  34. ?? ??? ?system("cls");
  35. ?? ??? ?change_dep();
  36. ?? ??? ?system("pause");
  37. ?? ??? ?break;
  38. ?? ?case 3:
  39. ?? ??? ?system("cls");
  40. ?? ??? ?delete_dep();
  41. ?? ??? ?system("pause");
  42. ?? ??? ?break;
  43. ?? ?case 4:
  44. ?? ??? ?system("cls");
  45. ?? ??? ?add_emp();
  46. ?? ??? ?system("pause");
  47. ?? ??? ?break;
  48. ?? ?case 5:
  49. ?? ??? ?system("cls");
  50. ?? ??? ?change_emp();
  51. ?? ??? ?system("pause");
  52. ?? ??? ?break;
  53. ?? ?case 6:
  54. ?? ??? ?system("cls");
  55. ?? ??? ?delete_emp();
  56. ?? ??? ?system("pause");
  57. ?? ??? ?break;
  58. ?? ?case 7:
  59. ?? ??? ?system("cls");
  60. ?? ??? ?add_wag();
  61. ?? ??? ?system("pause");
  62. ?? ??? ?break;
  63. ?? ?case 8:
  64. ?? ??? ?system("cls");
  65. ?? ??? ?change_wag();
  66. ?? ??? ?system("pause");
  67. ?? ??? ?break;
  68. ?? ?case 9:
  69. ?? ??? ?system("cls");
  70. ?? ??? ?delete_wag();
  71. ?? ??? ?system("pause");
  72. ?? ??? ?break;
  73. ?? ?case 10:
  74. ?? ??? ?while (search_inf());
  75. ?? ??? ?break;
  76. ?? ?case 11:
  77. ?? ??? ?system("cls");
  78. ?? ??? ?reset_passwd();
  79. ?? ??? ?system("pause");
  80. ?? ??? ?break;
  81. ?? ?default:
  82. ?? ??? ?return false;
  83. ?? ?}
  84. ?? ?return true;
  85. }

user.h

  1. #pragma once
  2. using namespace std;
  3. bool login()
  4. {
  5. ?? ?int chance = 3;
  6. ?? ?char temp[maxn];
  7. ?? ?char passwd[maxn];
  8. ?? ?FILE *p;
  9. ?? ?if ((p = fopen("passwd.txt", "r")) == NULL)
  10. ?? ?{
  11. ?? ??? ?printf("%80s数据异常,无法访问!\n", "");
  12. ?? ??? ?fclose(p);
  13. ?? ??? ?exit(0);
  14. ?? ?}
  15. ?? ?fgets(passwd, 100, p);
  16. ?? ?//cout << passwd << endl;
  17. ?? ?fclose(p);
  18. ?? ?printf("%70s********************\n", "");
  19. ?? ?printf("%70s欢迎使用工资管理系统!\n", "");
  20. ?? ?printf("%70s********************\n", "");
  21. ?? ?while (chance--)
  22. ?? ?{
  23. ?? ??? ?printf("%70s请输入登录密码:", "");
  24. ?? ??? ?scanf("%s", temp);
  25. ?? ??? ?if (!strcmp(temp, passwd))
  26. ?? ??? ?{
  27. ?? ??? ??? ?printf("%70s密码正确!\n", "");
  28. ?? ??? ??? ?return true;
  29. ?? ??? ?}
  30. ?? ??? ?else printf("%70s密码错误!你还剩%d次机会!\n", "", chance);
  31. ?? ??? ?if (!chance) printf("%70s非法用户!\n", "");
  32. ?? ?}
  33. ?? ?return false;
  34. }
  35. ?
  36. void reset_passwd()
  37. {
  38. ?? ?char temp1[maxn], temp2[maxn];
  39. ?? ?char passwd[maxn];
  40. ?? ?FILE *p;
  41. ?? ?printf("%70s请输入3-10位不含空格的密码:", "");
  42. ?? ?while (scanf("%s", temp1) && (strlen(temp1) < 3 && strlen(temp1) > 10))
  43. ?? ??? ?printf("%70s密码非法,请重新输入\n", "");
  44. ?? ?printf("%70s请再次输入修改密码:", "");
  45. ?? ?scanf("%s", temp2);
  46. ?? ?if (!strcmp(temp1, temp2))
  47. ?? ?{
  48. ?? ??? ?p = fopen("passwd.txt", "w");
  49. ?? ??? ?fgets(passwd, 100, p);
  50. ?? ??? ?strcpy(passwd, temp1);
  51. ?? ??? ?fputs(passwd, p);
  52. ?? ??? ?fclose(p);
  53. ?? ??? ?printf("%70s修改成功!\n", "");
  54. ?? ?}
  55. ?? ?else printf("%70s修改失败!\n", "");
  56. ?? ?return;
  57. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号