模拟工资管理系统3_第1页
模拟工资管理系统3_第2页
模拟工资管理系统3_第3页
模拟工资管理系统3_第4页
模拟工资管理系统3_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、this->Save();/职工信息排序功能void Workers:Sort()buffer = NUM;this->Num();if (NUM = 0)cout << "没有职工信息存入,系统将返回主菜单" << endl;NUM = buffer;return;elsecout << "请选择排序方式:" << endl;cout << " *" << endl;cout << " * 1.按工号排序(升序) *"

2、 << endl;cout << " * 2.按工号排序(降序) *" << endl;cout << " * 3.按姓名排序(升序) *" << endl;cout << " * 4.按姓名排序(降序) *" << endl;cout << " * 5.按工资排序(升序) *" << endl;cout << " * 6.按工资排序(降序) *" << endl;

3、cout << " * 0.返回主菜单 *" << endl;cout << " *" << endl;cout << endl;cout << "请选择数字编号06" << endl;int choice2;cin >> choice2;while (choice2 < 0 | choice2>6)cout << "输入有误,请重新输入:" << endl;cin >>

4、choice2;if (choice2 = 1)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - 1 - i; j+)if (wj.ID.size()>wj + 1.ID.size() | (wj.ID.size() = wj + 1.ID.size() && wj.ID > wj + 1.ID)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工号升序后的信

5、息如下:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout <<

6、; 't' << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 2)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - 1 - i; j+)if (wj.ID.size()<wj + 1.ID.size() | (wj.ID.size() = wj + 1.ID.size() &&

7、wj.ID < wj + 1.ID)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工号降序后的信息如下:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << <&

8、lt; 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' << wi.pay << endl;else if (choice2 = 3)int i, j;for (i = 0; i < NUM - 1; i+

9、)for (j = 0; j < NUM - 1 - i; j+)if ( > wj + 1.name)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按姓名升序后的信息如下:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID

10、 << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2

11、= 4)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if ( < wj + 1.name)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按姓名降序后的信息如下:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;for

12、 (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' <

13、;< wi.pay << endl;else if (choice2 = 5)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if (wj.pay > wj + 1.pay)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工资升序后的信息如下:" << endl;cout << "工号t姓名t性别

14、t学历t年龄t地址t电话tt实际收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << 't'

15、; << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 6)int i, j;for (i = 0; i < NUM - 1; i+)for (j = 0; j < NUM - i - 1; j+)if (wj.pay < wj + 1.pay)Worker *temp = new Worker(wj);wj = wj + 1;wj + 1 = *temp;delete temp;cout << "按工资降序后的信息如下:" &

16、lt;< endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;for (i = 0; i < NUM; i+)cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't'

17、; << wi.address << 't' << wi.tel << 't'<< wi.pay << endl;else if (choice2 = 0)return;ofstream fout;fout.open("E:worker.txt", ios_base:ate);if (!fout)cout << "File open error!n"exit(1);cout << "文件正在保存.请稍候!"

18、<< endl;cout << "数据保存成功!" << endl;for (int i = 0; i < NUM; i+)fout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.

19、address << 't' << wi.tel << 't' << wi.salary << 't' << wi.tax << 't' << wi.pay << endl;cout << "系统返回主菜单:" << endl;fout.close();NUM = buffer;/ 职工信息删除功能void Workers:Delete()if (NUM = 0)cout <

20、< "没有职工信息输入,系统将返回主菜单" << endl;return;elseofstream fout, foutp;fout.open("E:worker.txt", ios_base:trunc);if (!fout)cout << "File open error!n"exit(1);SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_NORMAL);foutp.open("E:password.txt"

21、;, ios_base:trunc);if (!foutp)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);cout << "文件正在保存.请稍候!" << endl;cout << "数据保存成功!" << endl;for (int i = 0; i < NUM; i+)fout << wi.I

22、D << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.address << 't' << wi.tel << 't' << wi.salary << 't' <&

23、lt; wi.tax << 't' << wi.pay << endl;foutp << wi.Pw << endl;this->Showsaved();fout.close();foutp.close();SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);int buffer0 = NUM;this->Num();if (NUM = 0)cout << "没有职工信息存入,系统将返回主菜单&qu

24、ot; << endl;NUM = buffer0;return;cout << "请输入需要删除信息职工的工号:" << endl;string delid;cin >> delid;int k;int flag = 1;while (flag)for (int i=0; i<NUM;i+)if (delid = wi.ID)flag = 0;k = i;break;if (flag)cout << "不存在此员工,请重新输入:" << endl;cin >> d

25、elid;cout << "你选择的职工的信息为:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;cout << wk.ID << 't' << << 't' << wk.sex << 't' << << 't' << wk.age;cout &l

26、t;< 't' << wk.address << 't' << wk.tel << 't' << wk.pay << endl;cout << "确认请输入Yt返回主菜单请输入N " << endl;string p;cin >> p;while (1)if (p = "y" | p = "Y")cout << "员工信息已删除!" <&

27、lt; endl;for (int i = 0; i < NUM; i+)int j=0;if (wi.ID = delid)j = i;for (; j < NUM; j+)wj = wj + 1;NUM-;ofstream fout,foutp;fout.open("E:worker.txt", ios_base:trunc);if (!fout)cout << "File open error!n"exit(1);SetFileAttributes(L"E:password.txt", FILE_ATTR

28、IBUTE_NORMAL);foutp.open("E:password.txt", ios_base:trunc);if (!foutp)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);cout << "文件正在保存.请稍候!" << endl;cout << "数据保存成功!" << endl

29、;for (int i = 0; i < NUM; i+)fout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;fout << 't' << wi.address << 't' << wi.tel << 't&

30、#39; << wi.salary << 't' << wi.tax << 't' << wi.pay << endl;foutp << wi.Pw << endl;this->Showsaved();cout << "系统返回主菜单:" << endl;fout.close();foutp.close();SetFileAttributes(L"E:password.txt", FILE_ATTR

31、IBUTE_HIDDEN);break;else if (p = "n" | p = "N")NUM = buffer0;return;elsecout << "输入有误,请重新输入:"cin >> p;NUM = buffer0;/职工信息显示函数(显示文件中的内容)void Workers:Showsaved()buffer = NUM;this->Num();if (NUM=0)cout << "职工文档为空,系统将返回主菜单" << endl;NUM =

32、 buffer;return;elseNUM = buffer;ifstream in("E:worker.txt");if (!in)cout << "File open error!n"exit(1);cout << "已保存的职工信息如下:" << endl;cout << "工号t姓名t性别t学历t年龄t地址t电话tt实际收入" << endl;if (NUM = count)for (int i = 0; i < count; i+)in

33、>> wi.ID >> >> wi.sex >> >> wi.age >> wi.address >> wi.tel >> wi.salary >> wi.tax >> wi.pay;cout << wi.ID << 't' << << 't' << wi.sex << 't' << &

34、lt;< 't' << wi.age;cout << 't' << wi.address << 't' << wi.tel << 't' << wi.pay << endl;elsefor (int i = 0; i < NUM; i+)in >> wi.ID >> >> wi.sex >> >> wi.age >> wi.

35、address >> wi.tel >> wi.salary >> wi.tax >> wi.pay;cout << wi.ID << 't' << << 't' << wi.sex << 't' << << 't' << wi.age;cout << 't' << wi.address << &

36、#39;t' << wi.tel <<'t'<< wi.pay << endl;in.close();/获得职工工号string Workers:GetID(int i)return wi.ID;/用户登录时显示当前用户信息void Workers:Show(int i)wi.Show();/获取某个职工旧密码char * Workers:GetPw(int l)return wl.Pw;/统计信息并且显示void Workers:Total()buffer = NUM;this->Num();for (int i

37、= 0; i < NUM; i+)tsalary += wi.salary;ttax += wi.tax;cout << "n职工总数t工资总数t税金总数" << endl;cout << NUM << "tt"<< tsalary << "tt" << ttax << endl;NUM = buffer;/用户修改密码void Workers:ChangePw()buffer = NUM;this->Num();char pa

38、ssword;char pw20;int error = 0;bool back = 0;bool out = 0;dodocout << "n请输入修改前的密码:" << endl;for (int j = 0; j < 20; j+)password = getch();if (password = 13)pwj = '0'break;if (password = 8)cout << 'b' << ' ' << 'b'j -= 2;elsep

39、wj = password;cout << '*'if (strcmp(pw, wloc.Pw) = 0)char *p = new char50;char p120;while (1)cout << "n请输入新密码(注:密码长度至少6位,但不得超过20位):" << endl;for (int i = 0; i < 50; i+)password = getch();if (password = 13)pi = '0'break;if (password = 8)cout << 

40、9;b' << ' ' << 'b'i -= 2;elsepi = password;cout << '*'if (strlen(p) > 20)cout << "n密码过长,请重新输入:" << endl;else if (strlen(p) < 6)cout << "n密码过短,请重新输入:" << endl;elsebreak;while (1)cout << "n请再次输入新

41、密码:" << endl;for (int i = 0; i < 20; i+)password = getch();if (password = 13)p1i = '0'break;if (password = 8)cout << 'b' << ' ' << 'b'i -= 2;elsep1i = password;cout << '*'if (strcmp(p1, p) = 0)strcpy(wloc.Pw, p1);ofstream

42、fout;SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_NORMAL);fout.open("E:password.txt", ios_base:trunc);if (!fout)cout << "File open error!n"SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);exit(1);for (int i = 0; i < NUM; i+)fout <

43、< wi.Pw <<'t'<< endl;fout.close();SetFileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);back = 0; out = 1;cout << "n密码修改成功!" << endl;Sleep(1000);break;elsecout << "n两次密码不相同 " << endl;cout << "是否需要返回?"

44、<< endl;cout << "是(Y) 否(N)" << endl;char choice4;cin >> choice4;while (1)if (choice4 = 'y' | choice4 = 'Y')back = 1; break;else if (choice4 = 'n' | choice4 = 'N') back = 0; out = 1; break;elsecout << "n输入有误,请输入Y/N(y/n):&quo

45、t; << endl;cin >> choice4;if (!back)break;else continue;deletep;elseerror+;if (error = 3)for (int i = 10; i >= 0; i-)system("cls");cout << "n *" << endl;cout << " *密码错误3次,系统" << setw(2) << i << "秒后自动退出,请稍后重新登录*&quo

46、t; << endl;cout << " *" << endl;Sleep(1000);exit(1);cout << "n密码错误!请重新输入" << endl;Sleep(1000); while (error < 3&&!out); while (back);NUM = buffer;cout << endl;/main函数调用执行函数Execute()int main()system("COLOR 30");Execute();Set

47、FileAttributes(L"E:password.txt", FILE_ATTRIBUTE_HIDDEN);return 0;一、 测试数据及其结果分析显示的登录界面(图5-1):图5-1(1)管理员登录(图5-2)图5-2管理员界面:(图5-3)图5-31) 职工信息添加:(图5-4)图5-42) 当前信息查看:(图5-5)图5-53) 保存:(图5-6)图5-64) 查找:(图5-8图5-13)图5-71. 按工号查找(图5-8)图5-82. 按姓名查找(图5-9)图5-93. 按工资查找(图5-10)图5-104. 按学历查找(图5-11)图5-115. 按年龄

48、查找(图5-12)图5-126. 按地址查找(图5-13)图5-135) 修改:(图5-14)图5-146) 排序:(图5-15)图5-157) 删除:(图5-16)图5-168) 已存信息显示:(图5-17)(图5-17)9) 职工信息统计:(图5-18)图5-1810) 退出:(图5-19)图5-19(2)用户登录:(图5-20)图5-201) 信息查询:(图5-21)图5-21 2) 修改密码:(图5-22)图5-22结果分析如下:1. 在输入登录界面菜单选项时如果输入的内容不是1和2,而输入的为其他字符(字母或符号),系统将自动认为操作结束而推出系统。2. 登录:选择管理员登录/用户登

49、录。管理员登录密码为B14040215。用户登录初始密码为0215,登录后可以修改密码。添加职工:根据提示依次输入职工的工号、姓名、性别、学历、年龄、月薪、地址、电话。注意:输入格式必须严格按照要求,如:电话号码必须为11位手机号码或者8位固话号码;年龄必须在工龄范围内(16-60),月薪必须高于中国最低劳工合同工资。添加职工后,程序自动计算该职工的税金以及实际收入。1) 管理员登录:输入密码,如果密码输错三次,系统进入倒计时,10秒后退出程序。(1) 查看信息:查看当前打开程序时输入的职工信息。(2) 保存信息:保存当前输入的信息,追加存入文件系统内。(3) 查找职工:如果文件中没有职工信息

50、则返回主菜单。否则根据工号、姓名、工资、学历、年龄、地址查找职工。可以返回主菜单。(4) 修改信息:如果文件中没有职工信息则返回主菜单。否则先显示给使用者已保存的职工信息。然后让其根据工号选择要修改的职工,可以修改选中职工的任意信息。最后自动保存。(5) 排序:如果文件中没有职工信息则返回主菜单。否则根据工号(升序/降序),姓名(升序/降序),工资(升序/降序)排序,并保存入文件。(6) 删除职工:如果文件中没有职工信息则返回主菜单。否则根据工号选择要删除的职工,并保存入文件。(7) 库显示:如果文件中没有职工信息则返回主菜单。否则查看显示已经保存入文件的职工信息。(8) 信息统计:如果文件中

51、没有职工信息则返回主菜单。否则统计并查看已经保存的职工数目,工资总数以及税金总数。(9) 退出程序:程序询问是否离开,如果选择是,则完全退出,并将密码文件隐藏;否,则返回主界面。2) 用户登录:如果文件中没有任何职工信息,则退出程序。否则输入ID号即工号,如果工号存在则输入密码,如果密码输错三次,系统进入倒计时,10秒后退出程序。(1) 信息查询:仅可以查看当前登录的用户信息。(2) 修改密码:输入旧密码正确后可以输入新的密码,再次输入新密码确认后才可以成功修改密码。修改密码后下次登录可以使用该新密码。(3) 退出程序:程序询问是否离开,如果选择是,则完全退出,并将密码文件隐藏;否,则返回主界

52、面。6、 调试过程中的问题(1)问题排序函数中:由于工号是string类型,所以比较的时候如果仅仅用strcmp()函数,无法将例如B102与B1009这样的工号正确排序。解决方式增加比较工号长度,使用string类型自带的size()函数获取工号的长度。长度更长的,工号大,长度相等的则使用strcmp()比较大小。(2) 问题添加、保存函数:每次打开程序添加职工,职工数目在变化,如果仅添加而未保存,此时已输入的职工数目明显比文件中的职工数目多,两者不统一。如果使用单一的变量来记录职工数目,在显示当前输入的职工信息与显示已经保存的职工信息时是无法正确输出的。解决方法使用NUM和count两个变量。每次打开程序都将NUM值赋值为文件中已经保存的职工数目。每次调用与文件数目相关的函数时都将NUM值赋值为文件中已经保存的职工数目。而count变量记录当前打开程序时添加的职工数目。(3) 问题保存密码:密码如果存入worker.txt中,那就可以随意被别人翻查到。解决方法新建一个password.txt文档,并且每次让它隐藏起来。(4) 问题修改密码:隐藏密码文档后,发现打开失败了,第二次运行程序的时候就不能将修改的密码存入。解决方法在每次要打开密码文档前将其显示为可见文档,使用完关闭文件时立即将其隐藏起来。(5) 问题查找、库显示、删除等函数里:例如在查找职工时,如果输入的职工不存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论