职工工资管理系统.docx
《职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《职工工资管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
![职工工资管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/25/e2728edf-5a86-486e-bfcd-eda66bbf7197/e2728edf-5a86-486e-bfcd-eda66bbf71971.gif)
职工工资管理系统
河南城建学院
《面向对象程序设计》课程设计
设计说明书
课程名称:
《面向对象程序设计》课程设计
设计题目:
职工工资管理系统
指导教师:
班级:
学号:
学生姓名:
同组人员:
计算机科学与工程系
2011年6月23
目录
第1章选题3
1.1题目背景3
1.2选题3
1.3开发环境3
第2章设计内容3
2.1实现功能3
2.2概要设计(涉及类的框图)4
2.3界面设计4
第3章系统实现4
3.1涉及知识点4
3.2系统运行(主要运行界面抓图)4
3.3源程序清单(类代码)7
第4章结束语10
参考文献10
第1章选题
1.1题目背景
随着信息时代的到来和全社会信息化、网络化建设的兴起,实现工资的智能化、系统化、网络化、信息化管理势在必行。
1.2选题
系统分为销售员类、兼职技术人员类、经理类、销售经理类以及主函数等几大模块。
数据的输入及处理、编辑、管理、查询(按姓名,编号,职业,对应员工工资分布情况查询)数据输入的-------输入员工的信息,包括职业,姓名,编号及对应的工资处理数据,系统会进行处理。
查询-------根据题意,按照姓名、编号、职业、对应员工工资分布情况进行查询
main()函数实现对程序主界面的引导。
1.3开发环境
编程工具:
VisualC++6.0
第2章设计内容
2.1实现功能
系统主要包括员工信息的输入、查询、删除、修改、保存和退出等功能。
用户只需先进入系统,输入员工信息就可以进行一系列的操作了。
2.2概要设计(涉及类的框图)
2.3界面设计
界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。
结构设计也称概念设计(ConceptualDesign),是界面设计的骨架。
该工资管理系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1添加员工及工资计算2按姓名查询3按编号查询4按职业查询5对应职业员工工资分布情况查询6输出所有员工的工资0退出系统而添加员工及工资目录下1销售员2兼职技术人员3经理4销售经理0退出添加。
第3章系统实现
3.1涉及知识点
类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等。
3.2系统运行(主要运行界面抓图)
3-1程序主界面
3-2添加成员与工资计算
3-3按编号查询
3-4按职业查询
3-5按对应职业员工分布情况查询
3-6输出所有员工工资
3.3源程序清单(类代码)
#include
#include
#include
#include
classemployee
{
protected:
intno;
charname[20];
floatsalary;
public:
employee()
{
cout<<"职工编号:
";
cin>>no;
cout<<"职工姓名";
cin>>name;
salary=0;
}
virtualvoidpay()=0;
virtualvoiddisplay()=0;
friendvoidadd();//添加员工及工资计算
friendvoidvisitname();//按姓名查询
friendvoidvisitnum();//按标号查询
friendvoidvisitprofession();//按职业查询
friendvoidsearchpay();//对应员工工资分布情况查询
friendvoidoutpay();
~employee(){};
};
classtechnician:
publicemployee
{
private:
floathourlyrate;
intworkhours;
public:
technician()
{
hourlyrate=100;
}
voidpay()
{
cout<";
cin>>workhours;
salary=hourlyrate*workhours;
}
voiddisplay()
{
cout<<"兼职技术人员"<"<}
friendvoidadd();//添加员工及工资计算
friendvoidvisitname();//按姓名查询
friendvoidvisitnum();//按标号查询
friendvoidvisitprofession();//按职业查询
friendvoidsearchpay();//对应员工工资分布情况查询
friendvoidoutpay();
~technician(){};
};
classsalesman:
virtualpublicemployee
{
protected:
floatcommrate;
floatsales;
public:
salesman()
{
commrate=0.4;
}
voidpay()
{
cout<";
cin>>sales;
salary=sales*commrate;
}
voiddisplay()
{
cout<<"销售员"<"<}
friendvoidadd();//添加员工及工资计算
friendvoidvisitname();//按姓名查询
friendvoidvisitnum();//按标号查询
friendvoidvisitprofession();//按职业查询
friendvoidsearchpay();//对应员工工资分布情况查询
friendvoidoutpay();
~salesman(){};
};
classmanager:
virtualpublicemployee
{
protected:
floatmonthlypay;
public:
manger()
{
monthlypay=8000;
}
voidpay()
{
salary=8000;
}
voiddisplay()
{
cout<<"经理"<"<}
friendvoidadd();//添加员工及工资计算
friendvoidvisitname();//按姓名查询
friendvoidvisitnum();//按标号查询
friendvoidvisitprofession();//按职业查询
friendvoidsearchpay();//对应员工工资分布情况查询
friendvoidoutpay();
~manager(){};
};
classsalesmanager:
publicmanager,publicsalesman
{
public:
salemanager()
{
monthlypay=5000;
commrate=0.05;
}
voidpay()
{
cout<cin>>sales;
salary=5000+commrate*sales;
}
voiddisplay()
{
cout<<"销售经理"<"<}
friendvoidadd();//添加员工及工资计算
friendvoidvisitname();//按姓名查询
friendvoidvisitnum();//按标号查询
friendvoidvisitprofession();//按职业查询
friendvoidsearchpay();//对应员工工资分布情况查询
friendvoidoutpay();//答应员工工资
~salesmanager(){};
};
intoption,flag,i,no,k;
floatsalary;
charname[20];
fstreamoutfile;
manager*m[50];
technician*t[50];
salesman*s[50];
salesmanager*sm[50];
intmnum=0,tnum=0,smnum=0,snum=0,j=0,profession=0;
voidadd();//添加员工及工资计算
voidvisitname();//按姓名查询
voidvisitnum();//按标号查询
voidvisitprofession();//按职业查询
voidsearchpay();//对应员工工资分布情况查询
voidoutpay();
voidmain()
{
cout<<"请选择您需要的操作!
"<cout<<"\t\t\t*****************************"<cout<<"\t\t\t**企业职工工资计算及管理系统**"<cout<<"\t\t\t*****************************"<cout<<"\t\t\t*****************************"<cout<<"\t\t\t**1、添加员工及工资计算**"<cout<<"\t\t\t**2、按姓名查询 **"<cout<<"\t\t\t**3、按标号查询**"<cout<<"\t\t\t**4、按职业查询**"<cout<<"\t\t\t**5、对应职业员工工资分布情况查询**"<cout<<"\t\t\t**6、输出所有员工的工资**"<cout<<"\t\t\t**0、退出系统**"<cout<<"\t\t\t*****************************"<cout<<"选择0-7数字进行操作"<cin>>option;
outfile.open("text",ios:
:
out);
if(!
outfile)
{
cout<<"textcan'topen"<exit
(1);
}
while(option!
=0)
{
switch(option)
{
case1:
//添加员工及工资计算
{
add();
break;
}
case2:
//按姓名查查询
{
visitname();
break;
}
case3:
//按标号查询
{
visitnum();
break;
}
case4:
//按职业查询
{
visitprofession();
break;
}
case5:
//对应员工工资分布情况查询
{
searchpay();
break;
}
case6:
{
outpay();
break;
}
}
cout<<"请输入操作代码(1添加员工及工资计算/2按姓名查询/3按编号查询/4按职业查询5/对应职业员工工资分布情况查询/6输出所有员工的工资/0退出系统)"<cin>>option;
}
outfile.close();
}
voidadd()
{
flag=1;
while(flag!
=0)
{
cout<<"员工身份:
1:
销售员2:
兼职技术人员3:
经理4:
销售经理0:
退出添加请选择"<cin>>flag;
switch(flag)
{
case2:
{
t[tnum]=newtechnician;
t[tnum]->pay();
t[tnum]->display();
outfile<<"兼职技术人员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<tnum++;
j++;
break;
}
case1:
{
s[snum]=newsalesman;
s[snum]->pay();
s[snum]->display();
outfile<<"销售员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<snum++;
j++;
break;
}
case3:
{
m[mnum]=newmanager;
m[mnum]->pay();
m[mnum]->display();
outfile<<"经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<mnum++;
j++;
break;
}
case4:
{
sm[smnum]=newsalesmanager;
sm[smnum]->pay();
sm[smnum]->display();
outfile<<"销售经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<smnum++;
j++;
break;
}
}
}
}
voidvisitname()
{
cout<<"请输入要查询的姓名:
";
cin>>name;
intsign[4]={0};
for(i=0;i{
if(strcmp(s[i]->name,name)==0)
{
cout<<"销售员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[0]=1;
for(i=0;i{
if(strcmp(t[i]->name,name)==0)
{
cout<<"兼职技术人员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[1]=1;
for(i=0;i{
if(strcmp(m[i]->name,name)==0)
{
cout<<"经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[2]=1;
for(i=0;i{
if(strcmp(sm[i]->name,name)==0)
{
cout<<"销售经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[3]=1;
if(sign[0]&&sign[1]&&sign[2]&&sign[3])
{
cout<<"该人不存在,请确认!
"<}
}
voidvisitnum()//按编号查询
{
cout<<"请输入要查询编号:
";
cin>>no;
intsign[4]={0};
for(i=0;i{
if(s[i]->no==no)
{
cout<<"销售员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[0]=1;
for(i=0;i{
if(t[i]->no==no)
{
cout<<"兼职技术人员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[1]=1;
for(i=0;i{
if(m[i]->no==no)
{
cout<<"经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[2]=1;
for(i=0;i{
if(sm[i]->no==no)
{
cout<<"销售经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<break;
}
}
if(ireturn;
else
sign[3]=1;
if(sign[0]&&sign[1]&&sign[2]&&sign[3])
{
cout<<"该人不存在,请确认!
"<}
}
voidvisitprofession()//按职业查询
{
cout<<"请选择要查询的职业";
cout<<"1:
销售员2:
兼职技术人员3:
经理4:
销售经理"<cin>>profession;
switch(profession)
{
case1:
{
if(snum==0)
{
cout<<"无销售人员信息,请确认!
"<}
else
{
cout<<"销售人员信息如下:
"<for(i=0;i{
cout<<"销售员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<}
}
break;
}
case2:
{
if(tnum==0)
{
cout<<"无兼职技术人员信息,请确认!
"<}
else
{
cout<<"兼职技术人员信息如下:
"<for(i=0;i{
cout<<"兼职技术人员"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<}
}
break;
}
case3:
{
if(mnum==0)
{
cout<<"无经理人员信息,请确认!
"<}
else
{
cout<<"经理人员信息如下:
"<for(i=0;i{
cout<<"经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<}
}
break;
}
case4:
{
if(smnum==0)
{
cout<<"无销售经理信息,请确认!
"<}
else
{
cout<<"销售经理信息如下:
"<for(i=0;i{
cout<<"销售经理"<name<<"(编号为"<no<<")"<<"本月工资:
"<salary<}