工资发放系统设计报告.docx
《工资发放系统设计报告.docx》由会员分享,可在线阅读,更多相关《工资发放系统设计报告.docx(14页珍藏版)》请在冰豆网上搜索。
工资发放系统设计报告
《程序设计语言基础》
课程设计报告
班级:
XXXXXXXXXXX
姓名:
XXXXXXXXXXX
题目:
XXXXXXXXXXX
设计时间:
XXXXXXXXXXX
一、需求分析:
本课程主要是完成一个工资管理系统,要求用户在使用时可以
正确的查询到当月实际发放的工资,完成员工基本信息数据的输入,并且在查询时能显示相关数据,方便用户了解其发放工资情况。
二、课题设计内容:
1、课程设计的基本流程:
关于此课程的设计,是建立在整体问题把握的基础上进行的
面向对象程序设计的。
根据实验要求定义一个salarycountsystem类,在类中定义一个构造函数、四个重载函数和一个成员函数,定义相关变量并对不同职员的薪水计算,salary为返回值。
在主函数中定义所需数据成员,将类salarycountsystem定义为对象a,在a中实现工资查询系统的界面输出。
运用dowhile实现工资的循环查询,其中嵌套if语句,实现不同工种的选择。
最后输入op,选择继续进行还是结束程序。
2、详细设计说明:
首先定义常量hourlyrate(90)、monthlypay(3000)、sales
(30000)、daylypay(30)、commrate(0.005)。
定义一个salarycountsystem类,在公有成员public中定义工资salary,在构造函数salarycountsystem中定义其初始值为0。
定义四个add重载函数,一个red成员函数,并分别用公式计算四种销售员的实发工资。
固定薪金职员:
m(请假应扣)=holiday*daylypay;
salary=monthlypay-m;
计时薪金职员:
b(实际工作时长)=w(工作时长)+p(加班时长);
salary=hourlyrate*b;
普通销售员:
sales1(实际销售额)
销售额大于30000时:
salary=(sales1-sales)*2/1000;
销售额小于30000时:
salary=(sales-sales1)*2/1000;
带薪销售员:
sales2(实际销售额)
salary=monthlypay-h*daylypay+commrate*sales2;
设计main主函数,定义一个salarycountsystem类的对象a调用类的成员函数。
定义一个char型op,代表输入的符号,按界面要求输出“工资查询系统”。
用dowhile实现查询系统的循环。
定义工种为k并输入。
在if语句中定义所需变量,根据输入的k值的不同输出各工种的工资相关项,并实现数据成员的调用。
输入op,“*”为退出,其它符号继续查询。
程序到此已基本完成,再对界面进行美化处理,就完成了程序设计。
3、界面操作流程图
4、程序流程图
5、源程序
#include
#include
usingnamespacestd;
constfloathourlyrate(90);//时薪
constfloatmonthlypay(3000);//固定薪金
constfloatcommrate(0.005f);//带薪销售员的提成百分比
constfloatdaylypay(30);//请假一天的钱
classsalarycountsystem
{
public:
floatsalary;//工资
salarycountsystem(){salary=0;}//定义构造函数使salary初始值为0
floatadd(intholiday)//固定薪金职员工资重载
{
floatm=holiday*daylypay;
salary=monthlypay-m;
returnsalary;
}//固定薪金职员
doubleadd(intw,inta)//计时职员工资重载
{
intb=w+a;//w(工作时长),a(超出时长),b(实际工作时长)
salary=hourlyrate*b;
returnsalary;
}//计时职员
floatadd(floatsales1)//普通销售员工资重载
{
salary=(30000-sales1)*2/100;//销售额小于30000
returnsalary;
}
floatred(floatsales1)//定义成员函数
{
salary=(sales1-30000)*2/100;//销售额大于30000
returnsalary;
}//普通销售员
floatadd(floatsales2,floath)//带薪销售员工资重载
{
salary=monthlypay-h*daylypay+commrate*sales2;
returnsalary;
}//带薪销售员
};
voidmain()
{
salarycountsystema;//定义一个类的对象
charop;
do//使用循环体实现工资查询的循环
{
cout<<""<cout<<"欢迎使用工资查询系统!
"<cout<<"***************************************"<cout<<"菜单"<cout<<"1固定薪金职员"<cout<<"2计时职员"<cout<<"3普通销售员"<cout<<"4带薪销售员"<cout<<"选择*键结束运算,选其它符号继续运算"<cout<<"***************************************"<cout<<"请选择职工类型:
"<intk;//工种
cin>>k;
if(k==1)
{
intholiday;//请假天数
cout<<"请输入固定薪金职员的请假天数:
"<cin>>holiday;
a.add(holiday);
cout<<"***************固定薪金职员*******************"<cout<<"工种"<<""<<"奖励薪金"<<""<<"固定月薪"<<""<<"请假天数"<<""<<"应扣"<<""<<"实发工资"<cout<}
elseif(k==2)
{
intw;
intp;//w(workhours),p(超出时长)
cout<<"请输入工作时长:
"<cin>>w;//workehours
cout<<"请输入加班时长:
"<cin>>p;
a.add(w,p);
cout<<"*******************计时职员******************"<cout<<"工种"<<""<<"奖励薪金"<<""<<"工作时长"<<""<<"时薪"<<""<<"加班时长"<<""<<"实发工资"<cout<}
elseif(k==3)
{
floatprize;
floatsales1;
floats;
cout<<"请输入本月销售额:
"<cin>>sales1;//输入本月销售额
if(sales1>=30000)
{
s=a.red(sales1);
cout<<"*******************普通销售员**************"<cout<<"工种"<<""<<"奖励薪金"<<""<<"销售额"<<""<<"提成比例"<<""<<"应扣"<<""<<"实发工资"<cout<}
else
{
s=3000-a.add(sales1);
prize=a.add(sales1);
cout<<"******************普通销售员***************"<cout<<"工种"<<""<<"奖励薪金"<<""<<"销售额"<<""<<"提成比例"<<""<<"应扣"<<""<<"实发工资"<cout<}
}
elseif(k==4)
{
floatsales2;
floath;//holiday
floatd;//应扣
cout<<"请输入带薪销售员请假天数:
"<cin>>h;//holiday
cout<<"请输入带薪销售员的销售额:
"<cin>>sales2;//输入本月销售额
d=h*daylypay;
a.add(sales2,h);
cout<<"********************带薪销售员****************"<cout<<"工种"<<""<<"奖励薪金"<<""<<"固定月薪"<<""<<"销售额"<<""<<"提成比例"<<""<<"请假天数"<<""<<"应扣"<<""<<"实发工资"<cout<}
else
cout<<"无此项!
"<cout<<"选择*键结束运算,其它符号继续运算:
"<cin>>op;
}while(op!
='*');
}
6、运行结果截图:
(1)、欢迎界面
(2)、固定薪金职员
(3)、计时销售员
(4)、普通销售员
销售额大于30000时:
销售额小于30000时:
(5)、带薪销售额
(6)、退出查询系统
三、得意之处
整个程序中我认为比较得意的几个地方:
1、在salarycountsystem类中运用了函数的重载
floatadd(intholiday)//固定薪金职员工资重载
{
floatm=holiday*daylypay;
salary=monthlypay-m;
returnsalary;
}
d