课程设计小型公司工资管理系统.doc
《课程设计小型公司工资管理系统.doc》由会员分享,可在线阅读,更多相关《课程设计小型公司工资管理系统.doc(20页珍藏版)》请在冰豆网上搜索。
目录
一、课程设计目的……………………………………………2
二、课程设计内容……………………………………………2
1、题目及简介……………………………………………2
2、设计说明………………………………………………2
3、程序设计………………………………………………3
(1)程序流程图………………………………………3
(2)程序代码…………………………………………3
三、程序设计总结……………………………………………19
参考文献………………………………………………………20
一、课程设计目的
(1)要求学生达到熟练掌握c++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基础思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、课程设计内容
1、题目及简介
(1)设计题目:
小型公司工资管理系统设计
(2)简介:
公司主要有4类人员:
经理,技术员,销售员,销售经理。
要求存储这些人的职工号,姓名,月工资,岗位,年龄,性别等信息。
工资的计算方法:
经理:
固定月薪为8000;
技术员:
工作时间*小是工资(100元每小时);
销售员:
销售额*4%提成;
销售经理:
底薪(5000)+所辖部门销售额总额*0.5%;
要求;
1)输入数据要求每类人员不能少于4人,并按一下格式输出:
职员号姓名性别年龄岗位工资排名及某销售经理管理所辖部门各销售员的业绩及自己的工资表:
职员号姓名销售额销售额合计。
2)总体设计,要有一个菜单,用于选择各项功能,其中
(1)数据录入:
输入各种数据;
(2)数据统计:
各销售经理的工资计算及最终按工资进行的冒泡排序;
(3)数据打印:
打印上述表格;
(4)退出:
退出本系统;
2、设计说明
充分利用了类的继承与派生的知识,先定义了一个雇员类Employee,由雇员类公有派生出技术员类Tech,销售员类Seller,经理类Manager,由销售员类Seller,经理类Manager公有派生出销售经理类XManager。
把基类都定义为虚基类。
通过基类去写的派生类就可以调基类的公有成员。
利用for循环把经理数据,技术员数据,销售员数据,销售经理数据输入,利用冒泡排序法把各销售经理的资按升序排列。
利用switch进行选择系统进行的工作。
在主菜单中进行调用各函数,从而实现系统各功能的运行。
3、程序设计
(1)程序流程图
雇员类
技术员类
经理类
销售员类
销售经理类
开始
主函数
输入i
i=1录入
i=2统计
i=3打印
i=4退出
InputMenu()
输入i
i=1
Manager类
i=2
Tech类
i=3
Seller类
i=4
XManager类
i=5
返回
结束
(2)程序代码
#include
#include
#include
classEmployee//雇员类
{protected:
intnum;
intage;
charname[10];
doubleincome;
charsex;
public:
virtualvoidSet()
{cout<<"其姓名:
";
cin>>name;
cout<<"性别(m/w):
";
cin>>sex;
cout<<"年龄:
";
cin>>age;
}
voidGet()
{cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<cout<<"┃"<intn=10-strlen(name);
for(inti=0;icout<<"";
cout<}
};
classTech:
virtualpublicEmployee//技术员类
{protected:
doublehour;
doubleper;
public:
voidSet()
{cout<<"技术员编号:
";
cin>>num;
cout<Employee:
:
Set();
cout<cout<<"工作时间:
";
cin>>hour;
per=100;
income=hour*per;
}
};
classSeller:
virtualpublicEmployee//销售员类
{protected:
doublesalary;//销售额
intss;//所属经理编号
public:
doubleGets(){returnsalary;}
voidSet()
{cout<<"销售员编号:
";
cin>>num;
Employee:
:
Set();
cout<<"销售额:
";
cin>>salary;
cout<<"所属经理编号:
";
cin>>ss;
income=salary*0.04;
}
voidGet1()
{intn=10-strlen(name);
cout<<"┃"<for(inti=0;icout<}
};
classManager:
virtualpublicEmployee//经理类
{protected:
public:
voidSet()
{cout<<"经理的编号:
";
cin>>num;
Employee:
:
Set();
income=8000;
}
};
classXmanager:
virtualpublicManager,publicSeller//销售经理类
{protected:
Sellerc1;//销售员
Sellerc2;//销售员
doubletotals;//销售总额
public:
doublereturnt(){returntotals;}
voidSetc()
{c1.Set();
cout<c2.Set();
cout<}
voidSet()
{cout<<"销售经理编号:
";
cin>>num;
Employee:
:
Set();
totals=c1.Gets()+c2.Gets();
income=5000+totals*0.005;
}
voidGetx()
{cout<<"┣━━━━━╋━━━━━╋━━━━━╋━━━━━╋━━━━━┫"<cout<<"┃"<intn=10-strlen(name);
for(inti=0;icout<<"";
cout<}
voidGet1()
{cout<<"职工编号"<"<cout<<"┏━━━━━━┳━━━━━┳━━━━━━┓"<cout<<"┃"<<"职工号"<<"┃"<<"姓名"<<"┃"<<"销售额"<<"┃"<cout<<"┣━━━━━━╋━━━━━╋━━━━━━┫"<c1.Get1();
cout<<"┣━━━━━━╋━━━━━╋━━━━━━┫"<c2.Get1();
cout<<"┣━━━━━━╋━━━━━┻━━━━━━┫"<cout<<"┃"<<"销售额总计:
"<<"┃"<cout<<"┗━━━━━━┻━━━━━━━━━━━━┛"<}
voidGetc()
{c1.Get();
c2.Get();
}
};
voidtou()//输出表格头部
{cout<<"┏━━━━━┳━━━━━┳━━━━━┳━━━━━┳━━━━━┓"<cout<<"┃"<<"职工号"<<"┃"<<"姓名"<<"┃"<<"性别"<<"┃"<<"年龄"<<"┃"<<"工资"<<"┃"<}
voidwei()//输出表格尾部
{cout<<"┗━━━━━┻━━━━━┻━━━━━┻━━━━━┻━━━━━┛"<}
ManagerA[4];//定义全局对象
TechB[4];
XmanagerD[4];
inti;//变量
intInputManager()
{for(i=0;i<4;i++){A[i].Set();cout<cout<<"-------------------------------------------"<return0;
}
intInputTech()
{for(i=0;i<4;i++){B[i].Set();cout<cout<<"-------------------------------------------"<return0;
}
intInputSeller()
{for(i=0;i<4;i++){D[i].Setc();cout<cout<<"-------------------------------------------"<return0;}
intInputXManager()
{for(i=0;i<4;i++){D[i].Set();cout<cout<<"-------------------------------------------"<return0;
}
intfanhui()//冒泡排序法
{ for(intpass=1;pass<4;pass++)
{for(i=0;i<4-pass;i++)