目录
一、课程设计要求及其内容
1.课题设计《实现一个工资管理系统》
系统的主要功能是计算职工当月工资并要求存档案。
公司是一个不大不小公司,职工有种5类型,他们是技术人员,销售人员,文秘,技术经理,销售经理。
世界从来就不是公平的,在公司内部也一样,不同职位工资不同。
技术人员工资是按小时算,薪酬为40元。
销售人员工资是按销售提成,月工资为销售总额的5%。
文秘为有4000元底薪,奖金要看当月的工作情况而定。
技术经理和销售经理,均有每月5000元固定工资。
技术经理工作业绩分为三个等级,每级有1000元奖金,
销售经理资金由他管理团队销售业绩而定,为总经额的0.3%。
2.设计说明与要求
(1) 公司主要有4类人员:技术经理、技术员、销售员、销售经理、文秘。要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。
(2) 工资的计算方法
A、技术经理 (technical manager):固定月薪为5000元+(ABC等级,每个等级差1000)元;
B、技术员(technician):工作时间*小时工资(40元/小时);
C、销售员(seller):销售额*5%提成;
D、销售经理(sellmanager):底薪(5000元)+所辖部门销售总额*0.3%;
E、文秘(secretary):固定月薪为4000元+(表现情况(A=1000元,B=700元,C=500元,D=0元));
(3) 输入员工数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。
(4) 实现功能
① 数据录入:输入各种数据;
② 销售业绩:统计各销售经理下属销售员的销售额之和;销售经理按工资进行的冒泡排序;
③ 资料存档:打印各类员工的数据信息;
④ 数据备份:把各类员工的数据信息写入文件中保存;
⑤ 退出:推出本系统;
(5) 菜单说明
⑴数据录入指通过键盘输入各类员工的各项数据;
⑵销售业绩指统计各销售经理下身书销售员的销售额及销售额之和;销售按工资进行冒泡排序;
⑶资料存档指按照表格的格式在屏幕上输出各员工的信息;
⑷数据备份指将所有员工的信息保存到文件;
⑸系统退出:结束程序的运行。
二、设计思路
从课本上的运行效果可以看出主函数是一个选择结构,可以确定主函数的内容;再根据课本给出的类的层次结构合理的定义类及其对象,在类中声明成员函数来完成对保护数据成员的调用,输出数据。
根据运行效果的菜单来看知道有5个功能,于是编类里的成员函数来一个一个实现所要求的功能,总之就是将系统分块来做。
注:其中涉及到公有继承:
继承:<继承方式>可以有三种:公有继承方式public、保护继承方式protected及默认的私有继承方式private。<继承方式>默认时的继承方式是默认的private。
单继承:class classB:public classA {sentence;};
多继承:class classC:public class1,
public class2,...
{ sentences....;};
(1)公有继承(public)
派生类定义时通过关键字public指定公有的继承方式。 基类的公开成员还是公开的,包含的还是保护的。
三、程序清单
#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
using namespace std;
const A=2;
const B=4;
int a,b,c,d,s;
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class employee //员工(基类)
{
protected:
string name;
int num;
int age;
char sex;
double pay;
public:
employee()
{
name="\0";
num=0;
age=0;
sex='\0';
pay=0;
}
void set()
{
cout<<"其姓名:"; cin>>name;
cout<<"性别(M/W):"; cin>>sex;
cout<<"年龄:";cin>>age;
}
int numshow()
{
return num;
}
string nameshow()
{
return name;
}
char sexshow()
{
return sex;
}
int ageshow()
{
return age;
}
double payment()
{
return pay;
}
};
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class technician:public employee//技术员
{
protected:
int workhour;
public:
void set()
{
cout<<"技术员的编号:"; cin>>num;
employee::set();
cout<<"工作时间:"; cin>>workhour;
cout<<endl;
pay=40*workhour;
}
};technician te[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class manager:public employee //技术经理
{
protected:
char situation;
public:
void set()
{
cout<<"技术经理的编号:";
cin>>num;
employee::set();
cout<<endl;
cout<<"技术等级(A=3000,B=2000,C=1000,D=0):"<<endl;
cin>>situation;
switch(situation)
{
case 'A':pay=3000;break;
case 'B':pay=2000;break;
case 'C':pay=1000;break;
default :pay=0;
}
pay=5000+pay;
cout<<endl;
}
};manager mana[A];