南邮通达简单的工资管理系统.docx
《南邮通达简单的工资管理系统.docx》由会员分享,可在线阅读,更多相关《南邮通达简单的工资管理系统.docx(59页珍藏版)》请在冰豆网上搜索。
南邮通达简单的工资管理系统
程序设计报告
(2013/2014学年第1学期)
题目:
模拟工资管理系统
专业:
计算机科学与技术
学生姓名:
班级学号:
指导教师:
指导单位:
南京邮电大学通达学院
日期:
2013年12月9日
评分细则
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序准备情况
程序设计能力
团队合作精神
课题功能实现情况
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
模拟工资管理系统
一课题内容和要求
工资管理系统是一个单位最基本的一项财务管理,该系统要求实现查找,修改,删除,统计,排序等。
所以帐务数据都要利用文件系统保存,以备系统下次运行时使用。
通过此课题,熟练掌握文件,数组,指针的各项操作,以及一些基本算法思想的应用。
基本要求:
管理员:
1)以密码系统登录
2)录入员工信息具体工资,计算相应的税金(计算规则参见最新公布的政策)
3)查询并显示所有员工具体信息
4)显示统计信息:
员工数目,工资总数和税金总数
5)按照指定条件查询
6)增减具体员工记录
税金政策基本是不同收入等级的工资使用不同的比例收取税金。
类似于下表:
工资税金
0~15000%(超出部分)
1500~250010%(超出部分)
2500~350015%(超出部分)
3500~500020%(超出部分)
5000~1000030%(超出部分)
10000~40%(超出部分)
员工:
1)以工号为登录ID,密码自己设定;
2)可以查询本人的相关信息;
3)系统提供指定时间间隔的查询功能。
二需求分析
工资管理系统的功能框架图如图1所示。
图一(功能框架图)
(1)根据工资管理系统的要求,设计合适的数据结构。
(2)选择文件存储格式(文本或是二进制)和文件名。
(3)采用自顶向下的设计方法,设计系统的总体模块组成和数据结构。
(4)对于每项操作,设计一个函数(方法、子模块)进行实现,要明确定义函数类型。
(5)根据设计结果分布开发实现各模块,最后进行总体集成。
三、概要设计
1主要结构体
classworker
{
public:
worker()
{
}
voidshow();//职工信息显示
~worker()
{
}
doubleGetTax();//获取缴税
doubleGetAccumPay();//获取实发工资
friendclassWorkerList;
private:
stringnum,name,sex,edu,address,tel;//姓名,性别,教育程度,住址,电话
intage,salary,A;//年龄,薪水,税金
};
classWorkerList
{
private:
workerw[N];
intNUM;//用来计算职工数目
intcount;//用来暂时记录当前操作第几个职工
public:
voidadd();//职工信息录入
voidsort();//职工信息排序
voidsearch();//职工信息查找
voiddele();//职工信息删除
voidmodify();//职工信息修改
voidsave();//职工信息以文件形式保存
voidshowworker();//显示职工信息在屏幕上
voidread();
WorkerList()
{
NUM=0;
count=0;
}
};
2主要函数流程图
(1)登录函数(如图二所示)
NYYN
图二(登录函数图)
(2)职工信息录入如图三所示
图三(录入函数)
(3)职工信息查找(如图四所示)
图四(查找函数)
(4)职工信息统计(如图五所示)
图五(统计函数)
(5)职工信息修改(如图六所示)
图六(修改函数)
(6)职工信息删除(如图七所示)
图七(删除函数)
(7)职工信息保存(如图八所示)
图八
(8)职工信息排序(如图九所示)
图九
四.源代码
#include
#include
#include
#include
#include
#include"conio.h"
usingnamespacestd;
#defineN100//N作为最大职工总数
intf=0;//f作为开关
stringp;//p作为接收菜单选项的字符串
interror=0;
voidmenu();//显示菜单
classworker
{
public:
worker()
{
}
voidshow();//职工信息显示
~worker()
{
}
doubleGetTax();//获取缴税
doubleGetAccumPay();//获取实发工资
friendclassWorkerList;
private:
stringnum,name,sex,edu,address,tel;//姓名,性别,教育程度,住址,电话
intage,salary,A;//年龄,薪水,税金
};
classWorkerList
{
private:
workerw[N];
intNUM;//用来计算职工数目
intcount;//用来暂时记录当前操作第几个职工
public:
voidadd();//职工信息录入
voidsort();//职工信息排序
voidsearch();//职工信息查找
voiddele();//职工信息删除
voidmodify();//职工信息修改
voidsave();//职工信息以文件形式保存
voidshowworker();//显示职工信息在屏幕上
voidread();
WorkerList()
{
NUM=0;
count=0;
}
};
doubleworker:
:
GetTax()//缴税
{
if(salary<=1500)
{
returnA==0;
}
else
if(salary<=2500)
{
returnA=(salary-1500)*10/100;
}
else
if(salary<=3500)
{
returnA=(salary-2500)*15/100+100;
}
else
if(salary<=5000)
{
returnA=(salary-3500)*20/100+100+150;
}
else
if(salary<=10000)
{
returnA=(salary-5000)*30/100+100+150+300;
}
else
if(salary>10000)
{
returnA=(salary-10000)*40/100+100+150+300+1500;
}
}
doubleworker:
:
GetAccumPay()
{
returnsalary-A;
}
//登陆函数
voidlogin()
{
system("cls");
cout<<"\n\n*************************************************"<cout<<"**请选择您所需要的模式**"<cout<<"**1.管理员模式**"<cout<<"**2.用户模式**"<cout<<"*************************************************"<}
voidmenu()
{
cout<cout<<"**************************************************************"<cout<<"****"<cout<<"**===欢迎使用南京邮电大学职工工资管理系统===**"<cout<<"****"<cout<<"**1.职工信息添加**"<cout<<"**2.职工信息修改**"<cout<<"**3.职工信息删除**"<cout<<"**4.职工信息排序**"<cout<<"**5.职工信息查找**"<cout<<"**6.职工信息显示**"<cout<<"**7.职工信息保存**"<cout<<"**8.职工信息查看**"<cout<<"**0.退出**"<cout<<"****"<cout<<"**************************************************************"<cout<}
voidmenu1()
{
cout<cout<<"**************************************************************"<cout<<"****"<cout<<"**===欢迎使用南京邮电大学职工工资管理系统===**"<cout<<"****"<cout<<"**1.职工信息查找**"<cout<<"**0.退出**"<cout<<"****"<cout<<"**************************************************************"<cout<}
voiddomain()//主菜单函数实现
{
charpa[20];
intabcd;
charbefore;
WorkerListwl;
inta;
cout<<"请输入选择:
";
cin>>a;
switch(a)
{
case1:
cout<<"请输入密码:
";
intj;
for(j=0;j<10;j++)
{
before=getch();
if(before==13)
{
pa[j]='\0';
break;
}
if(before==8)
{
before=getchar();
}
else
{
pa[j]=before;
cout<<'*';
}
}
if(strcmp(pa,"123")==0||strcmp(pa,"456")==0)
{
cout<<"\n登录成功,祝您工作顺利,心情愉快!
"<}
else
{
do
{
error++;
if(error==3)
{
cout<cout<<"\n**************************************************"<cout<<"**密码错误,系统自动退出,请稍后重新登录**"<cout<<"**************************************************"<for(abcd=1;abcd<=100000000;abcd++)
{
}
exit
(1);
}
cout<<"\n密码错误!
请重新输入"<for(abcd=1;abcd<=100000000;abcd++)
{
}
login();
}
while(error<3);
}
while
(1)
{
system("cls");
menu();
cout<<"请选择数字编号0~8"<inti1;
cin>>i1;
while(!
(i1>=0&&i1<=8))
{
cout<<"输入有误,请重新输入:
"<cin>>i1;
}
switch(i1)
{
case1:
wl.add();//添加
break;
case2:
wl.modify();//修改
break;
case3:
wl.dele();//删除
break;
case4:
wl.sort();//排序
break;
case5:
wl.search();//查找
break;
case6:
wl.showworker();//显示
break;
case7:
wl.save();//保存
break;
case8:
wl.read();//查看
break;
case0:
exit(0);
cout<<"系统退出!
!
"<exit(0);
default:
break;
}
cout<<"是否返回主菜单?
Y/N"<cin>>p;
if(p=="n"||p=="N")
{cout<<"系统退出!
!
"<exit(0);
}
getchar();
}
case2:
cout<<"请输入密码:
";
intb;
for(b=0;b<10;b++)
{
before=getch();
if(before==13)
{
pa[b]='\0';
break;
}
if(before==8)
{
before=getchar();
}
else
{
pa[b]=before;
cout<<'*';
}
}
if(strcmp(pa,"123")==0||strcmp(pa,"456")==0)
{
cout<<"\n登录成功,祝您工作顺利,心情愉快!
"<}
else
{
do
{
error++;
if(error==3)
{
cout<cout<<"\n**************************************************"<cout<<"**密码错误,系统自动退出,请稍后重新登录**"<cout<<"**************************************************"<for(abcd=1;abcd<=100000000;abcd++)
{
}
exit
(1);
}
cout<<"\n密码错误!
请重新输入"<for(abcd=1;abcd<=100000000;abcd++)
{
}
login();
}
while(error<3);
}
while
(1)
{
system("cls");
menu1();
cout<<"请选择数字编号0~1"<inti1;
cin>>i1;
while(!
(i1>=0&&i1<=7))
{
cout<<"输入有误,请重新输入:
"<cin>>i1;
}
switch(i1)
{
case1:
wl.search();//查找
break;
case0:
exit(0);
cout<<"系统退出!
!
"<exit(0);
default:
break;
}
cout<<"是否返回主菜单?
Y/N"<cin>>p;
if(p=="n"||p=="N")
{cout<<"系统退出!
!
"<exit(0);
}
getchar();
}
}
}
voidWorkerList:
:
add()//职工信息添加函数实现
{
cout<<"请输入职工信息:
"<cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<stringnum;
cin>>num;
for(inti=0;iwhile(num==w[i].num)
{
cout<<"此职工编号已存在,请重新输入:
"<cin>>num;
}
w[NUM].num=num;
cin>>w[NUM].name>>w[NUM].sex>>w[NUM].edu>>w[NUM].age>>w[NUM].salary>>w[NUM].address>>w[NUM].tel;
++NUM;
count=NUM;
}
voidworker:
:
show()//显示职工信息函数实现
{
cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<cout<cout<}
voidWorkerList:
:
modify()//职工信息修改函数实现
{
if(NUM<=0)
{
cout<<"没有职工信息存入,系统将返回主菜单"<menu();
}
else
{cout<<"职工信息如下:
"<cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<for(inti=0;icout<}
cout<<"请输入需要修改信息职工的工号:
"<stringnum1;
cin>>num1;
intj=0,k;
intflag=1;
while(flag)
{
for(;j{
if(num1==w[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此员工,请重新输入:
"<j=0;
cin>>num1;
}
}
cout<<"你选择的职工的信息为:
"<cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<cout<cout<cout<<"***********************************************"<cout<<"**1.修改工号**"<cout<<"**2.修改姓名**"<cout<<"**3.修改性别**"<cout<<"**4.修改学历**"<cout<<"**5.修改年龄**"<cout<<"**6.修改工资**"<cout<<"**7.修改地址**"<cout<<"**8.修改电话**"<cout<<"**0.返回主菜单**"<cout<<"***********************************************"<cout<cout<<"请选择数字编号0~8"<inti3;
cin>>i3;
while(i3<0||i3>8)
{
cout<<"输入有误,请重新输入:
"<cin>>i3;
}
switch(i3)
{
case1:
cout<<"请输入新的职工工号:
";
cin>>w[k].num;
cout<<"修改信息已保存,现返回主菜单:
"<menu();
break;
case2:
cout<<"请输入新的职工姓名:
";
cin>>w[k].name;
cout<<"修改信息已保存,现返回主菜单:
"<menu();
break;
case3:
cout<<"请输入新的职工性别:
";
cin>>w[k].sex;
cout<<"修改信息已保存,现返回主菜单:
"<menu