实现一个工资管理系统

一、内容

1.题目《小型公司工资管理系统》设计

2.设计说明与要求

(1) 公司主要有5类人员:文秘、技术经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、年龄、性别等信息。

人的职工号、姓名、月工资、年龄、性别等信息。

(2) 工资的计算方法

A、技术经理:固定月薪为5000元,业绩分三个等级,每级1000元奖金。

B、技术员:工作时间*小时工资(40/小时);

C、销售员:销售额*5%提成;

D、销售经理:底薪(5000元)+所辖部门销售总额*0.3%

E、文秘:固定工资4000元,奖金视当月的工作情况而定。

(3) 输入员工数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。

二、存档

1) 实现功能

① 数据录入:输入各种数据;

② 数据统计:统计各销售经理下属销售员的销售额之和;销售经理按工

资进行的冒泡排序;

③ 数据打印:打印各类员工的数据信息;

④ 数据备份:把各类员工的数据信息写入文件中保存;

⑤ 退出:推出本系统;

2) 菜单说明

⑴数据录入指通过键盘输入各类员工的各项数据;

⑵数据统计指统计各销售经理下身书销售员的销售额及销售额之和;销售按工资进行冒泡排序;

⑶数据打印指按照表格的格式在屏幕上输出各员工的信息;

⑷数据备份指将所有员工的信息保存到文件;

⑸退出:结束程序的运行。

、设计思路

从运行效果可以看出主函数是一个选择结构,可以确定主函数的内容;再根据类的层次结构合理的定义类及其对象,在类中声明成员函数来完成对保护数据成员的调用,输出数据。

#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 get1()
		{
		return num;
		}

		string get2()
		{
		return name;
		}

		char get3()
		{
		return sex;
		}

		int get4()
		{
		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 //技术经理
{
public:
		void set()
		{
		cout<<"技术经理的编号:";
		cin>>num;
		employee::set();
		cout<<endl;
		}

		int get()
		{
		return 5000;
		}
};manager mana[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/

class secretary:public employee //文秘
{public:
		void set()
		{
		cout<<"文秘的编号:";
		cin>>num;
		employee::set();
		cout<<endl;
		}

		int get()
		{
		return 4000;
		}
};secretary secr[A];
/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class seller:public employee//销售员
{ 
protected:
		double sell;
		int managernum;
public:
		void set()
		{
		cout<<"销售员的编号:"; cin>>num;
		employee::set();
		cout<<"销售额:";
		cin>>sell;
		cout<<"所属销售经理的编号:"; 
		cin>>managernum;
		pay=sell*0.05;
		cout<<endl;
		}
		int get5()
		{
		return managernum;
		}
		double get6()
		{
		return sell;
		}
		void tongji()
		{
		cout<<"│"<<setw(12)<<num
			<<"│"<<setw(12)<<name
			<<"│"<<setw(12)<<sell
			<<"│"<<endl;
		}
};seller se[B];

/*--------------------------------------------------*/
/*-----------------------类-------------------------*/
/*--------------------------------------------------*/
class sellmanager:public employee //销售经理
{
protected:
		int sumsale;
public:
		void set()
		{
		cout<<"销售经理的编号:"; cin>>num; employee::set();
		cout<<endl;
		for (int i=0;i<B;i++)
		if (num==se[i].get5())
		{ sumsale=sumsale+se[i].get6();
		}
		pay=5000+sumsale*0.003;
		}
		void tongji()
		{
		cout<<"职工号为 "<<num<<" 销售经理 "<<name<<" 下属销售员的业绩为:"<<endl;
		cout<<"┌──────┬──────┬──────┐"<<endl;
		cout<<"│"<<setw(12)<<"职工号"
			<<"│"<<setw(12)<<"姓名"
			<<"│"<<setw(12)<<"销售额 "
			<<"│"<<endl;
		}
};sellmanager semana[A];

/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*&&&&&&&&&&&&&&&&&&&&&&&&&&以下为函数&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
void line()
{
}//画线

/****************************************************/
/*************************输入***********************/
/****************************************************/
void shuru1()
{
for(a=0;a<A;a++)
te[a].set();
line();
cout<<"-------------------------------------"<<endl<<endl;
}
void shuru2() {
for(a=0;a<A;a++) mana[a].set(); line();
}

void shuru3() {
for(b=0;b<B;b++) se[b].set(); line();
}

void shuru4() {
for(a=0;a<A;a++) semana[a].set(); line();
}
void shuru5() {
for(a=0;a<A;a++) secr[a].set(); line();
}

/****************************************************/
/*************************目录***********************/
/****************************************************/
void mulu()
{
 cout<<" ★★小型公司工资管理系统★★ "<<endl; 
 cout<<"┌───────────────┐"<<endl;
 cout<<"│ 请选择您所需的操作           │"<<endl;
 cout<<"│ 数据输入:	  1,并按回车键 │"<<endl;
 cout<<"│ 数据统计:	  2,并按回车键 │"<<endl; 
 cout<<"│ 数据打印:	  3,并按回车键 │"<<endl; 
 cout<<"│ 数据备份:	  4,并按回车键 │"<<endl; 
 cout<<"│ 退出系统:	  5,并按回车键 │"<<endl; 
 cout<<"└───────────────┘"<<endl;
 cin>>c;
 cout<<endl; 
}
void cijimulu()
{

cout<<" ★★小型公司工资管理系统★★ "<<endl; 
cout<<"请选择一个操作:"; 
cout<<endl; 
cout<<"┌────────────────┐"<<endl;
cout<<"│ 请选择您所需的操作             │"<<endl; 
cout<<"│技术员数据输入:  1,并按回车键 │"<<endl; 
cout<<"│技术经理数据输入:2,并按回车键 │"<<endl; 
cout<<"│销售员数据输入:  3,并按回车键 │"<<endl; 
cout<<"│销售经理数据输入:4,并按回车键 │"<<endl; 
cout<<"│文秘数据输入:    5,并按回车键 │"<<endl;
cout<<"│返回上一级:      6,并按回车键 │"<<endl; 
cout<<"└────────────────┘"<<endl;
cout<<"请选择一个操作:"; 
cin>>d; 
cout<<endl;
}

/****************************************************/
/*************************标题***********************/
/****************************************************/
void biaotou()
{
cout<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
cout<<"│"<<setw(12)<<"职工号"
<<"│"<<setw(12)<<"姓名"
<<"│"<<setw(12)<<"性别"
<<"│"<<setw(12)<<"年龄"
<<"│"<<setw(12)<<"工资"
<<"│"<<endl;
}
void biaozhong()
{
cout<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
}
void biaowei()
{
cout<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
}

/****************************************************/
/*************************统计***********************/
/****************************************************/
void tongji()
{
	int a,b,s;
	for(a=0;a<A;a++)
	{
		s=0;
		semana[a].tongji();
		for(b=0;b<B;b++)
			{
				if(se[b].get5()==semana[a].get1())
					{
					cout<<"├──────┼──────┼──────┤"<<endl; 
					se[b].tongji();
					s=s+se[b].get6();
					}	
			}
		cout<<"├──────┼──────┴──────┤"<<endl;
		cout<<"│"<<setw(8)<<"销售额总计: "
			<<"│ "<<setw(21)<<s<<" "<<endl;
		cout<<"└──────┴─────────────┘"<<endl; 
	}
	cout<<"销售经理按工资排序为:"<<endl;
	biaotou();
	for(int i=0;i<A-1;i++) 
	{
		for(int j=i+1;j<A;j++)
		if(semana[i].payment()<semana[j].payment())
		{
			sellmanager g;
			g=semana[i];
			semana[i]=semana[j];
			semana[j]=g;
		}
	}
	for (int k=0;k<A;k++)
	{
		biaozhong();
		cout<<"│"<<setw(12)<<semana[k].get1()
			<<"│"<<setw(12)<<semana[k].get3()
			<<"│"<<setw(12)<<semana[k].get2()
			<<"│"<<setw(12)<<semana[k].get4()
			<<"│"<<setw(12)<<semana[k].payment()
			<<"│"<<endl;
	}
	biaowei();
}

/****************************************************/
/*************************显示***********************/
/****************************************************/
void daying()
{
	int k;
	cout<<"请等待......."<<endl<<endl;
	cout<<"职工基本情况一览表如下"<<endl<<endl;
	cout<<"技术员"<<endl<<endl;
	biaotou();

	for(k=0;k<A;k++)
	{
		biaozhong();
		cout<<"│"<<setw(12)<<te[k].get1()
			<<"│"<<setw(12)<<te[k].get2()
			<<"│"<<setw(12)<<te[k].get3()
			<<"│"<<setw(12)<<te[k].get4()
			<<"│"<<setw(12)<<te[k].payment()
			<<"│"<<endl;
	}
	biaowei();
	line();
	cout<<"技术经理"<<endl<<endl;
	biaotou();
	for(k=0;k<A;k++)
	{
		biaozhong(); 
		cout<<"│"<<setw(12)<<mana[k].get1()
			<<"│"<<setw(12)<<mana[k].get2()
			<<"│"<<setw(12)<<mana[k].get3()
			<<"│"<<setw(12)<<mana[k].get4()
			<<"│"<<setw(12)<<mana[k].get()
			<<"│"<<endl;
	}
	biaowei();
	line();
	cout<<"销售经理"<<endl<<endl;
	biaotou();
	for(k=0;k<A;k++)
	 { 
		biaozhong();  
		cout<<"│"<<setw(12)<<semana[k].get1()
			<<"│"<<setw(12)<<semana[k].get3()
			<<"│"<<setw(12)<<semana[k].get2()
			<<"│"<<setw(12)<<semana[k].get4()
			<<"│"<<setw(12)<<semana[k].payment()
			<<"│"<<endl;
	}
	biaowei();
	line();
	cout<<"销售员"<<endl<<endl;
	cout<<"┌────┬────┬────┬────┬────┬──────────┐"<<endl;
	cout<<"│"<<setw(8)<<"职工号"
		<<"│"<<setw(8)<<"姓名"
		<<"│"<<setw(8)<<"性别"
		<<"│"<<setw(8)<<"年龄"
		<<"│"<<setw(8)<<"工资"
		<<"│"<<setw(20)<<"所属部门经理"
		<<"│"<<endl;

	for(k=0;k<B;k++)
	{
		cout<<"├────┼────┼────┼────┼────┼──────────┤"<<endl;
		cout<<"│"<<setw(8)<<se[k].get1()
			<<"│"<<setw(8)<<se[k].get2()
			<<"│"<<setw(8)<<se[k].get3()
			<<"│"<<setw(8)<<se[k].get4()
			<<"│"<<setw(8)<<se[k].payment()
			<<"│"<<setw(20)<<se[k].get5()
			<<"│"<<endl; 
	}
		cout<<"└────┴────┴────┴────┴────┴──────────┘"<<endl<<endl;
		cout<<"------------------------------------------------"<<endl<<endl;
cout<<"文秘"<<endl<<endl;
	biaotou();
	for(k=0;k<A;k++)
	{
		biaozhong(); 
		cout<<"│"<<setw(12)<<secr[k].get1()
			<<"│"<<setw(12)<<secr[k].get2()
			<<"│"<<setw(12)<<secr[k].get3()
			<<"│"<<setw(12)<<secr[k].get4()
			<<"│"<<setw(12)<<secr[k].get()
			<<"│"<<endl;
	}
	biaowei();
	line();
}
/****************************************************/
/*************************备份***********************/
/****************************************************/
void beifen()
{
	ofstream myfile("qt.txt");
	int k;
	cout<<"请等待......."<<endl<<endl;
	myfile<<"职工基本情况一览表如下"<<endl<<endl; myfile<<"技术员"<<endl<<endl; 
	myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
	myfile<<"│"<<setw(12)<<"职工号"
		  <<"│"<<setw(12)<<"姓名"
		  <<"│"<<setw(12)<<"性别"
		  <<"│"<<setw(12)<<"年龄"
		  <<"│"<<setw(12)<<"工资"
		  <<"│"<<endl;

	for(k=0;k<A;k++) 
	{
		myfile  <<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
		myfile  <<"│"<<setw(12)<<te[k].get1()
				<<"│"<<setw(12)<<te[k].get2()
                <<"│"<<setw(12)<<te[k].get4()
		     	<<"│"<<setw(12)<<te[k].get3()
		    	<<"│"<<setw(12)<<te[k].payment()
		    	<<"│"<<endl;
	}
	myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
	myfile<<"技术经理"<<endl<<endl;
	myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
	myfile<<"│"<<setw(12)<<"职工号"
		  <<"│"<<setw(12)<<"姓名"
		  <<"│"<<setw(12)<<"性别"
		  <<"│"<<setw(12)<<"年龄"
		  <<"│"<<setw(12)<<"工资"
		  <<"│"<<endl;
	for(k=0;k<A;k++) 
	{
		myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
		myfile<<"│"<<setw(12)<<mana[k].get1()
		      <<"│"<<setw(12)<<mana[k].get3()
			  <<"│"<<setw(12)<<mana[k].get2()
			  <<"│"<<setw(12)<<mana[k].get4()
			  <<"│"<<setw(12)<<mana[k].get()
			  <<"│"<<endl; 
	}
	myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
	myfile<<"销售经理"<<endl<<endl;
	myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
	myfile<<"│"<<setw(12)<<"职工号"
		  <<"│"<<setw(12)<<"姓名"
		  <<"│"<<setw(12)<<"性别"
		  <<"│"<<setw(12)<<"年龄"
		  <<"│"<<setw(12)<<"工资"
		  <<"│"<<endl;
	for(k=0;k<A;k++) 
	{ 
		myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
		myfile<<"│"<<setw(12)<<semana[k].get1()
			<<"│"<<setw(12)<<semana[k].get3()
			<<"│"<<setw(12)<<semana[k].get2()
			<<"│"<<setw(12)<<semana[k].get4()
			<<"│"<<setw(12)<<semana[k].payment()
			<<"│"<<endl;
	}
	myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;
	myfile<<"销售员"<<endl<<endl;
	myfile<<"┌────┬────┬────┬────┬────┬──────────┐"<<endl;
	myfile<<"│"<<setw(8)<<"职工号"
		<<"│"<<setw(8)<<"姓名"
		<<"│"<<setw(8)<<"性别"
		<<"│"<<setw(8)<<"年龄"
		<<"│"<<setw(8)<<"工资"
		<<"│"<<setw(20)<<"所属部门经理"
		<<"│"<<endl;
	for(k=0;k<B;k++)
	{
		myfile<<"├────┼────┼────┼────┼────┼──────────┤"<<endl;
		myfile<<"│"<<setw(8)<<se[k].get1()
			<<"│"<<setw(8)<<se[k].get2()
			<<"│"<<setw(8)<<se[k].get3()
			<<"│"<<setw(8)<<se[k].get4()
			<<"│"<<setw(8)<<se[k].payment()
			<<"│"<<setw(20)<<se[k].get5()
			<<"│"<<endl; 
	}
	myfile<<"└────┴────┴────┴────┴────┴──────────┘"<<endl<<endl;
	myfile<<"文秘"<<endl<<endl;
	myfile<<"┌──────┬──────┬──────┬──────┬──────┐"<<endl;
	myfile<<"│"<<setw(12)<<"职工号"
		  <<"│"<<setw(12)<<"姓名"
		  <<"│"<<setw(12)<<"性别"
		  <<"│"<<setw(12)<<"年龄"
		  <<"│"<<setw(12)<<"工资"
		  <<"│"<<endl;
	for(k=0;k<A;k++) 
	{
		myfile<<"├──────┼──────┼──────┼──────┼──────┤"<<endl;
		myfile<<"│"<<setw(12)<<secr[k].get1()
		      <<"│"<<setw(12)<<secr[k].get3()
			  <<"│"<<setw(12)<<secr[k].get2()
			  <<"│"<<setw(12)<<secr[k].get4()
			  <<"│"<<setw(12)<<secr[k].get()
			  <<"│"<<endl; 
	}
	myfile<<"└──────┴──────┴──────┴──────┴──────┘"<<endl;

}

/*****************************主循环**************************/
int main()
{
	while (c!=5)

	{
		mulu();
		d=0;			//保证可以正常进入次级目录
		line();
		switch(c)
		{
		case 1:
				while (d!=6)
				{
					cijimulu();
					line();
						switch(d)
						{
						case 1:shuru1();continue; 
						case 2: shuru2(); continue;
						case 3: shuru3(); continue;
						case 4:shuru4(); continue;
						case 5:shuru5();continue;
						}
				
				}continue; 
		case 2:
		tongji(); continue; 
		case 3:
		daying();continue;
		case 4: 
		beifen(); continue;
		}
		
		}
return 0;

}


  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值