南邮通达--简单的工资管理系统.docx

上传人:牧羊曲112 文档编号:1904701 上传时间:2022-12-25 格式:DOCX 页数:45 大小:502.23KB
返回 下载 相关 举报
南邮通达--简单的工资管理系统.docx_第1页
第1页 / 共45页
南邮通达--简单的工资管理系统.docx_第2页
第2页 / 共45页
南邮通达--简单的工资管理系统.docx_第3页
第3页 / 共45页
南邮通达--简单的工资管理系统.docx_第4页
第4页 / 共45页
南邮通达--简单的工资管理系统.docx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《南邮通达--简单的工资管理系统.docx》由会员分享,可在线阅读,更多相关《南邮通达--简单的工资管理系统.docx(45页珍藏版)》请在三一办公上搜索。

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

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

3、5%(超出部分)35005000 20%(超出部分)500010000 30%(超出部分)10000 40%(超出部分)员工:1) 以工号为登录ID,密码自己设定;2) 可以查询本人的相关信息;3) 系统提供指定时间间隔的查询功能。二 需求分析工资管理系统的功能框架图如图1所示。添加查找修改删除显示排序显示退出工资管理系统保存图一(功能框架图)(1) 根据工资管理系统的要求,设计合适的数据结构。(2) 选择文件存储格式(文本或是二进制)和文件名。(3) 采用自顶向下的设计方法,设计系统的总体模块组成和数据结构。(4) 对于每项操作,设计一个函数(方法、子模块)进行实现,要明确定义函数类型。(5

4、) 根据设计结果分布开发实现各模块,最后进行总体集成。三、概要设计1 主要结构体class workerpublic:worker() 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

5、 NUM;/用来计算职工数目 int count;/用来暂时记录当前操作第几个职工public:void add();/职工信息录入void sort();/职工信息排序void search();/职工信息查找void dele();/职工信息删除void modify();/职工信息修改 void save();/职工信息以文件形式保存void showworker();/显示职工信息在屏幕上void read();WorkerList()NUM=0;count=0;2 主要函数流程图(1) 登录函数 (如图二所示) 开始管理员用户 请输入密码请输入密码 N Y Y N能否登录能否登录 进

6、入系统图二(登录函数图)(2)职工信息录入 如图三所示学历添加新员工信息请输入要添加的员工人数姓名工号年龄工资电话地址性别图三 (录入函数)(3)职工信息查找 (如图四所示)查询员工请选择查询方式学历工资姓名工号请输入待查询的员工的工资请输入待查询的员工的姓名请输入待查询的员工的学历请输入待查询的员工的工号所查询的员工信息按任意键返回图四 (查找函数)(4)职工信息统计 (如图五所示)打印员工信息所以员工信息列表按任意键返回 图五(统计函数)(5)职工信息修改 (如图六所示) 请输入数字21学历2电话3姓名4工号5工资6年龄7地址8性别输入您要修改的学历输入您要修改的的电话输入您要修改的姓名输

7、入您要修改的工号输入您要修改的工资输入您要修改的年龄输入您要修改的地址输入您要修改的性别修改信息已保存 现返回主菜单 图六(修改函数)(6)职工信息删除 (如图七所示)请输入要删除职工的工号请输入数字3显示所删除职工信息确认请输入Y返回菜单请输入N 图七 (删除函数)请输入数字编号职工信息保存(7)职工信息保存(如图八所示)文件正在保存。请稍候数据保存成功系统返回主菜单图八(8)职工信息排序(如图九所示)职工信息排序按工号排序(升序)按工号排序(升序)按工号排序(升序)按工号排序(升序)按工号排序(升序)按工号排序(升序)按工号排序(升序)请选择数字编号图九四源代码#include#inclu

8、de#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:worker() void show();/职工信息显示worker()double GetTax (); / 获取缴税 double GetAccumPay (); / 获取实发工资friend class WorkerList;private:strin

9、g num,name,sex,edu,address,tel;/姓名,性别,教育程度,住址,电话int age,salary,A;/年龄,薪水,税金;class WorkerListprivate:worker wN;int NUM;/用来计算职工数目 int count;/用来暂时记录当前操作第几个职工public:void add();/职工信息录入void sort();/职工信息排序void search();/职工信息查找void dele();/职工信息删除void modify();/职工信息修改 void save();/职工信息以文件形式保存void showworker()

10、;/显示职工信息在屏幕上void read();WorkerList()NUM=0;count=0;double worker:GetTax () / 缴税 if(salary=1500) return A=0; else if(salary=2500) return A=(salary-1500)*10/100; else if(salary=3500) return A=(salary-2500)*15/100+100; else if(salary=5000) return A=(salary-3500)*20/100+100+150; else if(salary10000) retu

11、rn 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.用户模式 *endl; cout*endl; void menu() coutendl;cout*endl;cout* *endl;cout* =欢迎使用南京邮电大学职工工资管理系统= *endl;cout* *endl;c

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

13、endl;cout* 1.职工信息查找 *endl;cout* 0.退出 *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(before=13) paj=0;break; if(before=8) before=getchar(); else paj=before;cout*;

14、if(strcmp(pa,123)=0|strcmp(pa,456)=0) cout n登录成功,祝您工作顺利,心情愉快!endl; else do error+;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)system(cls);men

15、u();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();/显示break;case 7:wl.save();/保存break;case 8:wl.read ();/查看break;case 0: exit(0)

16、; 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(); else pab=before;cout*; if(strcmp(pa,123)=0|strcmp(pa,456)=0) cout n登录成功,祝您工作顺利,心情愉快

17、!endl; else do error+;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)system(cls);menu1();cout请选择数字编号01i1;while(!(i1=0&i1=7)cout输入有误,请重新输入:i1;swi

18、tch(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工资t地址t电话num;for(int i=0;iNUM;i+)while(num=wi.num)cout此职工编号已存在,请重新输入:num;wNUM.num=nu

19、m;cinwNUM.namewNUM.sexwNUM.eduwNUM.agewNUM.salarywNUM.addresswNUM.tel;+NUM;count=NUM;void worker:show()/显示职工信息函数实现cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;coutnumtnametsextedutagetsalarytaddressttelendl;coutendl;void WorkerList:modify()/职工信息修改函数实现if(NUM=0)cout没有职工信息存入,系统将返回主菜单endl;menu();elsecout职工信息如下:endl;

20、cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;for(int i=0;icount;i+)coutwi.numtwi.nametwi.sextwi.edutwi.agetwi.salarytwi.addresstwi.telendl;cout请输入需要修改信息职工的工号:num1;int j=0,k;int flag=1;while(flag)for(;jcount;j+)if(num1=wj.num)flag=0;k=j;break;if(flag)cout不存在此员工,请重新输入:num1;cout你选择的职工的信息为:endl;cout工号t姓名t性别t学历t年龄t工资

21、t地址t电话endl;coutwk.numtwk.nametwk.sextwk.edutwk.agetwk.salarytwk.addresstwk.telendl;coutendl;cout*endl;cout* 1.修改工号 *endl;cout* 2.修改姓名 *endl;cout* 3.修改性别 *endl;cout* 4.修改学历 *endl;cout* 5.修改年龄 *endl;cout* 6.修改工资 *endl;cout* 7.修改地址 *endl;cout* 8.修改电话 *endl;cout* 0.返回主菜单 *endl;cout*endl;coutendl;cout请选择

22、数字编号08i3;while(i38)cout输入有误,请重新输入:i3;switch(i3)case 1:coutwk.num;cout修改信息已保存,现返回主菜单:endl;menu();break;case 2:coutwk.name;cout修改信息已保存,现返回主菜单:endl;menu();break;case 3:coutwk.sex;cout修改信息已保存,现返回主菜单:endl;menu();break;case 4:coutwk.edu;cout修改信息已保存,现返回主菜单:endl;menu();break;case 5:coutwk.age;cout修改信息已保存,现返

23、回主菜单: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();default:break;void WorkerList:showworker()/职工信息显示函数实现if(NUM=0)cout没有职工信息存入,系统将返回主菜单endl;els

24、ecout已保存的职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;for(int i=0;icount;i+)coutwi.numtwi.nametwi.sextwi.edutwi.agetwi.salarytwi.addresstwi.telendl;cout是否返回主菜单? Y/Np;while(1)if(p=y|p=Y)menu();else if(p=n|p=N)cout系统退出!endl;exit(0);else coutp;void WorkerList:search()if(NUM=0)cout没有职工信息存入,系统将返回主菜单endl;e

25、lsecout请选择查找方式:endl;cout*endl;cout* 1.按工号查找 *endl;cout* 2.按姓名查找 *endl;cout* 3.按工资查找 *endl;cout* 4.按学历查找 *endl;cout* 0.返回主菜单 *endl;cout*endl;coutendl;cout请选择数字编号04i4;while(i44)cout输入有误,请重新输入:i4;if(i4=1)string num2;cout请输入要查询的职工的工号:num2;int j=0,k;int flag=1;while(flag)for(;jcount;j+)if(num2=wj.num)flag=0;k=j;cout查询的职工信息如下:endl;cout工号t姓名t性别t学历t年龄t工资t地址t电话endl;cout

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号