南邮通达--简单的工资管理系统_第1页
南邮通达--简单的工资管理系统_第2页
南邮通达--简单的工资管理系统_第3页
南邮通达--简单的工资管理系统_第4页
南邮通达--简单的工资管理系统_第5页
免费预览已结束,剩余49页可下载查看

下载本文档

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

文档简介

1、浦U堂空2芳程序设计报告(2013 / 2014 学年 第1 学期)题 目:模拟工资管理系统专业:计算机科学与技术学生姓名:班级学号:指导教师:指导单 位:南京邮电大学通达学院日期:2013年12月9日评分项良好中等差评遵守机房规章制度上机时的表现学习态度分程序准备情况程序设计能力团队合作精神细课题功能实现情况算法设计合理性用户界面设计则报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简 短 评 语教师签名:年月日评分备注评分等级后五种:优秀、良好、中等、及格、不及格模拟工资管理系统一 课题内容和要求工资管理系统是一个单位最基本的一项财务管理,该系统要求实现查找,修改,删除,统计,排

2、序等。所以帐务数据都要利用文件系统保存,以备系统下次运行时使用。通过此课题,熟练掌握文件,数组,指针的各项操作,以及一些基本算法思想的应用。基本要求:管理员:1) 以密码系统登录2) 录入员工信息具体工资,计算相应的税金(计算规则参见最新公布的政策)3) 查询并显示所有员工具体信息4) 显示统计信息:员工数目,工资总数和税金总数5) 按照指定条件查询6) 增减具体员工记录税金政策基本是不同收入等级的工资使用不同的比例收取税金。类似于下表:工资税金015000%( 超出部分)15002500 10%(超出部分)25003500 15%(超出部分)35005000 20%(超出部分)5000100

3、00 30%(超出部分)1000040%( 超出部分)员工:1) 以工号为登录ID ,密码自己设定;2) 可以查询本人的相关信息;3) 系统提供指定时间间隔的查询功能。需求分析工资管理系统的功能框架图如图1所示图一(功能框架图)(1) 根据工资管理系统的要求,设计合适的数据结构。(2) 选择文件存储格式(文本或是二进制)和文件名。(3) 采用自顶向下的设计方法,设计系统的总体模块组成和数据结构。(4) 对于每项操作,设计一个函数(方法、子模块)进行实现,要明确定义函数类型。(5) 根据设计结果分布开发实现各模块,最后进行总体集成。、概要设计1主要结构体class workerpublic:wo

4、rker()void show();/ 职工信息显示worker()double GetTax (); / 获取缴税double GetAccumPay (); / 获取实发工资 friend class WorkerList;private:string num,name,sex,edu,address,tel;/ 电话int age,salary,A;/ 年龄,薪水,税金;姓名,性别,教育程度,住址,class WorkerListprivate:worker wN;int NUM;/ 用来计算职工数目int count;/ public:void add();/ void sort();

5、/ void search();/ void dele();/ void modify();/ void save();/用来暂时记录当前操作第几个职工职工信息录入职工信息排序职工信息查找职工信息删除职工信息修改 职工信息以文件形式保存void showworker();/ 显示职工信息在屏幕上 void read();WorkerList()NUM=0;count=0;2主要函数流程图(1)登录函数(如图二所示)图二(登录函数图)(2)职工信息录入如图三所示图三(录入函数)(3)职工信息查找(如图四所示)按任意键返回图四(查找函数)(4)职工信息统计(如图五所小)所以员工信息列表II五(统计

6、函数)(5)职工信息修改 (如图六所示)请输入数字2r修改信息已保存 现返回主菜单图六(修改函数)(6)职工信息删除(如图七所示)图七(删除函数)(7)职工信息保存(如图八所示)图八(8)职工信息排序(如图九所示)图九四.源代码#include#include#include#include #include #includeconio.husing namespace std;#define N 100/N作为最大职工总数int f=0;/f作为开关string p;/p作为接收菜单选项的字符串int error=0;void menu();/显示菜单class workerpublic:w

7、orker()void show();/ 职工信息显示worker()double GetTax (); / 获取缴税double GetAccumPay (); / 获取实发工资friend class WorkerList;private:string num,name,sex,edu,address,tel;/ 姓名,性别,教育程度,住址,电话int age,salary,A;/ 年龄,薪水,税金;class WorkerListprivate:worker wN;int NUM;/ 用来计算职工数目int count;/ 用来暂时记录当前操作第几个职工public:void add()

8、;/ 职工信息录入void sort();/职工信息排序void search();/职工信息查找void dele();/职工信息删除void modify();/职工信息修改void save();/ 职工信息以文件形式保存void showworker();/ 显示职工信息在屏幕上void read();WorkerList()NUM=0;count=0;double worker:GetTax () / 缴税if(salary=1500)return A=0;elseif(salary=2500)return A=(salary-1500)*10/100;elseif(salary=3

9、500)return A=(salary-2500)*15/100+100;elseif(salary=5000)return A=(salary-3500)*20/100+100+150;elseif(salary10000)return A=(salary-10000)*40/100+100+150+300+1500;double worker:GetAccumPay ()return salary-A;/ 登陆函数void login()system(cls);coutnn*endl;cout*请选择您所需要的模式*endl;cout*1.管理员模式*endl;cout*2.用户模式*e

10、ndl;cout*”endl;void menu()coutendl;cout*”endl;cout*endl;cout*=欢迎使用南京邮电大学职 工工资管理系统=*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;cout*endl;1 .职工信息添加2 .职工信息修改3 .职工信息删除4 .职工信息排序5 .职工信息查找6 .职工信息显小7 .职工信息保存8 .职工信息查看0.退出cout*”endl;coutendl;void m

11、enu1() (coutendl;cout*”endl;cout*cout*endl;=欢迎使用南京邮电大学职 工工资管理系统=1. 职 工 信 息 查 找0. 退 出cout*”endl;*endl;cout*endl;cout*endl;cout*endl;cout*endl;*coutendl;void domain()/ 主菜单函数实现char pa20;int abcd;char before;WorkerList wl;int a;couta;switch(a)case 1:cout 请输入密码:;int j;for( j=0;j10;j+)before=getch();if(be

12、fore=13)paj=0;break;if(before=8)before=getchar();elsepaj=before;cout*;if(strcmp(pa,123)=0|strcmp(pa,456)=0)cout n 登录成功,祝您工作顺利,心情愉快!endl;elsedoerror+;if(error=3)coutendl;coutn*”endl;cout*endl;密码错误,系统自动退出,请稍后重新登录cout*endl; for(abcd=1;abcd=100000000;abcd+)exit(1);coutn 密码错误!请重新输入endl;for(abcd=1;abcd=10

13、0000000;abcd+)login();while(error3);while(1)system(cls);menu();cout 请选择数字编号08i1;while(!(i1=0&i1=8)cout 输入有误,请重新输入:i1;switch(i1)case 1:wl.add();/ 添加 break;case 2:wl.modify();/ 修改 break;case 3:wl.dele();/ 删除 break;case 4:wl.sort();/ 排序 break; case 5:wl.search();/ 查找 break;case 6:wl.showworker();/ 显示 b

14、reak;case 7:wl.save();/ 保存 break;case 8:wl.read ();/ 查看break;case 0:exit(0);cout 系统退出! endl;exit(0);default:break;cout 是否返回主菜单? Y/Np;if(p=n|p=N) cout 系统退出! endl;exit(0);getchar();case 2:cout 请输入密码:;int b ;for(b=0;b10;b+)before=getch();if(before=13)pab=0;break;if(before=8)before=getchar();elsepab=bef

15、ore;cout*;if(strcmp(pa,123)=0|strcmp(pa,456)=0)cout n 登录成功,祝您工作顺利,心情愉快!endl;elsedoerror+;if(error=3)coutendl;coutn*”endl;请稍后重新登录cout*”endl;cout* 密 码 错 误 , 系 统 自 动 退 出 ,*endl;for(abcd=1;abcd=100000000;abcd+)exit(1);coutn 密码错误!请重新输入endl;for(abcd=1;abcd=100000000;abcd+)login();while(error3);while(1)sys

16、tem(cls);menu1();cout 请选择数字编号01i1;while(!(i1=0&i1=7)cout 输入有误,请重新输入:i1;switch(i1)case 1:wl.search();/ 查找break;case 0:exit(0);cout 系统退出! endl;exit(0);default:break;cout 是否返回主菜单? Y/Np;if(p=n|p=N) cout 系统退出! endl;exit(0);getchar();)void WorkerList:add()/职工信息添加函数实现(cout请输入职工信息:endl;cout工号t姓名t性别t学历t年龄t工资

17、t地址t电话num;for(int i=0;iNUM;i+)while(num=wi.num)(cout此职工编号已存在,请重新输入:num;)wNUM.num=num;cinwNUM.namewNUM.sexwNUM.eduwNUM.agewNUM.sala rywNUM.addresswNUM.tel;+NUM;count=NUM;)void worker:show()/显示职工信息函数实现(cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;coutnumtnametsextedutagetsal arytaddressttelendl;coutendl;)void Work

18、erList:modify()/职工信息修改函数实现(if(NUM=0)(cout没有职工信息存入,系统将返回主菜单endl;menu();)elsecout职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话 endl;for(int i=0;icount;i+) twi.agetwi.salarytwi.addresstwi.tel endl;)cout请输入需要修改信息职工的工号:num1;int j=0,k;int flag=1;while(flag)for(;jcount;j+)if(num1=

19、wj.num)flag=0;k=j;break;)if(flag)cout不存在此员工,请重新输入:num1;)cout你选择的职工的信息为:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;twk.agetwk.salarytwk.addresstwk.telendl;cout*,endl;cout*1.修改工号*endl;cout*2.修改姓名*endl;cout*3.修改性别*endl;cout*4.修改学历*endl;cout*5.修改年龄*endl;cout*6.修改工资*endl;cout*7.

20、修改地址*endl;cout*8.修改电话*endl;cout*0.返回主菜单*endl;coutendl;cout*”endl;coutendl;cout 请选择数字编号08i3;while(i38)cout 输入有误,请重新输入:i3;switch(i3)case 1:coutwk.num;cout 修改信息已保存,现返回主菜单:endl;menu();break;case 2:;cout 修改信息已保存,现返回主菜单:endl;menu();break;case 3:coutwk.sex;cout 修改信息已保存,现返回主菜单:endl;menu();break;c

21、ase 4:;cout 修改信息已保存,现返回主菜单:endl;menu();break;case 5:coutwk.age;cout 修改信息已保存,现返回主菜单:endl;menu();break;case 6:coutwk.salary;cout 修改信息已保存,现返回主菜单:endl;menu();break;case 7:coutwk.address;cout修改信息已保存,现返回主菜单:endl;menu();break;case 8:coutwk.tel;cout修改信息已保存,现返回主菜单:endl;menu();break;case 0:menu();de

22、fault:break;void WorkerList:showworker()职工信息显示函数实现if(NUM=0)cout没有职工信息存入,系统将返回主菜单endl;elsecout已保存的职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;for(int i=0;icount;i+)twi.agetwi.salarytwi.addresstwi.telendl;cout是否返回主菜单? Y/Np;while(1)if(p=y|p=Y)menu();else if(p=n|p=N)cout

23、系统退出!endl;exit(0);else coutp;void WorkerList:search()if(NUM=0)cout 没有职工信息存入,系统将返回主菜单endl;elsecout 请选择查找方式:endl;cout*1.按工号查找*endl;cout*2.按姓名查找*endl;cout*3.按工资查找*endl;cout*4.按学历查找*endl;cout*0.返回主菜单*endl;cout*”endl;cout*”endl;coutendl;cout 请选择数字编号04i4;while(i44)cout 输入有误,请重新输入:i4;if(i4=1)string num2;co

24、ut 请输入要查询的职工的工号:num2;int j=0,k;int flag=1;while(flag)for(;jcount;j+)if(num2=wj.num) (flag=O;k=j;cout查询的职工信息如下:endl;COUtVV”工号t姓名t性别t学历t年龄t工资t 地址t电话vvendl;coutwk.numt,,t,wk.sex,t, ,t,wk.age,twk.salary,t,wk.address,t,wk.tel endl;break;) if(flag)(flag=O;cout不存在此职工!n返回主菜单endl;break;)else if(

25、i4=2)(string name2;coutvv”请输入要查询的职工的姓名:endl;cinname2;intj2=0,k2;int flag2=1;while(flag2)(for(;j2count;j2+)(if(name2=)(flag2=0;k2=j2;cout查询的职工信息如下:endl;COUtVV”工号t姓名t性别t学历t年龄t工资t 地址t电话vvendl;coutwk2.numt,,t,wk2.sex,t,,t,wk2.age,twk2.salary,t,wk2.address,t,wk2.telendl;break;)if(f

26、lag2)(flag2=0;cout不存在此职工!!n返回主菜单endl;break;)else if(i4=3)(int salary2;cout请输入要查询的职工的工资:salary2;int j3=0,k3;int flag3=1;while(flag3)(for(;j3count;j3+)(if(salary2=wj3.salary)(flag3=0;k3=j3;cout查询的职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t 地址t电话endl;twk3.agetwk3.salarytwk3.a

27、ddresstw k3.telendl;break;)if(flag3)(flag3=0;cout不存在此职工!n返回主菜单endl;break;else if(i4=4)(string edu2;coutvv”请输入要查询的职工的学历:endl;cinedu2;int j4=O,k4;int flag4=1;while(flag4)(for(;j4count;j4+)(if(edu2=)(flag4=0;k4=j4;cout查询的职工信息如下:endl;COUtVV”工号t姓名t性别t学历t年龄t工资t 地址t电话”vvendl;coutwk4.numt,,t,

28、wk4.sex,t,wk4.e du,t,wk4.age,t,wk4.salary,twk4.address,t,w k4.telendl;break;)if(flag4)(flag4=0;coutvv”不存在此职工!n 返回主菜单vvendl;break;)else if(i4=0) menu();)void WorkerList:sort()/ 职工信息排序功能实现(if(NUM=0)(cout没有职工信息存入,系统将返回主菜单endl;menu();)elsecout”请选择排序方式:endl;cout*endl;cout*1.按工号排序(升序)*endl;cout*2.按工号排序(降序

29、)*endlcout*3.按姓名排序(升序)*endlcout*4.按姓名排序(降序)*endlcout*5.按,资排序(升序)*endlcout*6.按,资排序(降序)*endlcout*0.返回主菜单*endl;cout*”endl;coutendl;cout 请选择数字编号06i5;while(i56)(cout输入有误,请重新输入:i5;)if(i5=1)(int i,j;for(i=0;icount-1;i+)for(j=0;jwj+1.num)(string temp;temp=wj.num;wj.num=wj+1.num;wj+1.num=temp;)cout按工号升序后的信息如

30、下:endl;电话cout工号t姓名t性别t学历t年龄t工资t地址tendl;for(i=0;icount;i+) twi.agetwi.salarytwi.addresstwi.tel endl;)else if(i5=2)(int i,j;for(i=0;icount-1;i+)for( j=0;jcount-1-i;j+)if(wj.numwj+1.num)(string temp;temp=wj.num;wj.num=wj+1.num;wj+1.num=temp;)cout按工号降序后的信息如下:endl;cout工号t姓

31、名t性别t学历t年龄t工资t地址t电话endl;for(i=0;icount;i+)twi.agetwi.salarytwi.addresstwi.telendl;)elseif(i5=3)(int i,j;for(i=0;icount-1;i+)for(j=0;jwj+1.name)(string temp;temp=;=wj+1.name;wj+1.name=temp;)cout按姓名升序后的信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电 话endl;for(i=0;ico

32、unt;i+)twi.agetwi.salarytwi.addresstwi.telendl;)elseif(i5=4)(int i,j;for(i=0;icount-1;i+)for( j=0;jcount-i-1;j+)if(wj+1.name)(string temp;temp=;=wj+1.name;wj+1.name=temp;cout按姓名降序后的信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;for(i=0;icount;i+)coutwi

33、. twi.agetwi.salarytwi.addresstwi.tel endl; else if(i5=5) (int i,j;for( i=0;icount-1;i+)for( j=0;jwj+1.salary) ( int temp;temp=wj.salary;wj.salary=wj+1.salary;wj+1.salary=temp;cout按工资升序后的信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t 地址t电话endl;for( i=0;icount;i+)twi.sext

34、 twi.agetwi.salarytwi.addresstwi.tel endl; elseif(i5=6)(int i,j;for( i=0;icount-1;i+)for(j=0;jcount-i-1;j+)if(wj.salarywj+1.salary)(int temp;temp=wj.salary;wj.salary=wj+1.salary;wj+1.salary=temp;cout按工资降序后的信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;for( i=0;icount;i+)twi.sextw

35、 twi.agetwi.salarytwi.addresstwi.tel endl;else if(i5=0) menu();void WorkerList:dele()职工信息删除功能实现(int i;if(NUM=0)(cout没有职工信息存入,系统将返回主菜单endl;menu(); else cout职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话 endl;for( i=0;icount;i+) twi.agetwi.salarytwi.addresstwi.tel endl;co

36、ut请输入需要删除信息职工的工号:num3;int j=0,k;int flag=1;while(flag)(for(;jcount;j+)(if(num3=wj.num)(flag=0;k=j;break;if(flag)(cout”不存在此员工,请重新输入:num3;cout你选择的职工的信息为:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;twk.agetwk.salarytwk.addresstwk.telendl;cout确认请输入 Yt返回主菜单请输入 N p;while(1)(if(p=y|p=Y)(cout员工信息已删除! endl;for(int i=0;icount;i+)if(wi.num=num3)int j=i;for(;j=count-1;j+)wj=wj+1;count-;break;else if(p=n|p=N)(menu();) else (coutp;)void WorkerList:save()(int i;if(NUM=0)(cout没有职工信息存入,系统将返回主菜单endl; menu();

温馨提示

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

评论

0/150

提交评论