⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 company.h

📁 一个简单的小型公司工资管理系统
💻 H
字号:
#ifndef company_h
#define company_h

#include"worker.h"
#include<iomanip>
#include<iostream>
#include<string> 
using namespace std;

class company
{

public:
	company();
	~company();
	void addworker();
	void deleteworker();
	void tidy();//数组整理
	void sort();//排序
	void tsmadd();//各销售经理工资计算
	void printout();
	void salermanagerprint();//销售经理信息
private:
	employee* pworkers[100];
	long numworker;

};
company::company()
{
   for(long i=0;i<100;i++)
      pworkers[i]=NULL;
   numworker=0;
}
company::~company()
{
   for(long i=0;i<100;i++)
      delete pworkers[i];
}
void company::addworker()
{
	long index,temp=-1;
	cout<<"请选择要输入员工的职位:1.销售员 2.技术员 3.经理 4.销售经理。"<<endl;
	cin>>index;
	switch(index)
	{
	case 1:
		for(long i=0;i<100;i++)
			if(pworkers[i]==NULL)
			{   
				pworkers[i]=new saler;
				pworkers[i]->input();
				numworker++;
				temp=i;
				break;
			}
			break;

				

	case 2:
		for(long i=0;i<100;i++)
			if(pworkers[i]==NULL)
			{
				pworkers[i]=new technician;
				pworkers[i]->input();
				numworker++;
				temp=i;
				break;
			}
			break;

	case 3:
		for(long i=0;i<100;i++)
			if(pworkers[i]==NULL)
			{
				pworkers[i]=new manager;
				pworkers[i]->input();
				numworker++;
				temp=i;
				break;
			}
			break;

	case 4:
		for(long i=0;i<100;i++)
			if(pworkers[i]==NULL)
			{
				pworkers[i]=new salermanager;
				pworkers[i]->input();
				numworker++;
				temp=i;
				break;
			}
			break;

	default:
		cout<<"选择错误!"<<endl;
	}
	for(long i=0;temp>0&&i<100;i++)
			if(pworkers[i]!=NULL && i!=temp)
				if(pworkers[temp]->getnumber()==pworkers[i]->getnumber())
				{
					cout<<"错误,发现员工号重复!"<<endl;
					pworkers[i]=NULL;
					numworker--;
					break;
				}

	tidy();
	tsmadd();
	
}

void company::deleteworker()
{
	long index;
	cout<<"输入要删除员工的工作号。"<<endl;
	cin>>index;
	for(long i=0;i<100;i++)
	{
		if(pworkers[i]!=NULL)
			if(pworkers[i]->getnumber()==index)
			{
				delete pworkers[i];
	            pworkers[i]=NULL;
			    numworker--;
				cout<<"已删除"<<index<<"号员工"<<endl;
			}
	}
	
    tidy();
    
}

void company::tidy() //数组整理
{
	long ti=0;
	employee* tworkers[100];
	for(long i=0;i<100;i++)
		tworkers[i]=NULL;
	for(long i=0;i<100;i++)
		if(pworkers[i]!=NULL)
		{
			tworkers[ti]=pworkers[i];
			ti++;
		}
		for(long i=0;i<100;i++)
		pworkers[i]=NULL;
	for(long i=0;i<100;i++)
		if(tworkers[i]!=NULL)
			pworkers[i]=tworkers[i];

}

void company::sort()//排序
{
	employee* pworker;
	for(long i=numworker-1;i>0;i--)
		for(long j=0;j<i;j++)
		{
			if(pworkers[j]->getwage()<pworkers[j+1]->getwage())
			{
				pworker=pworkers[j+1];
				pworkers[j+1]=pworkers[j];
				pworkers[j]=pworker;
			}
		}
	for(long i=0;pworkers[i]!=NULL;i++)
		pworkers[i]->setrank(i+1);

}

	
void company::tsmadd()//销售经理工资计算
{
	for(long index=0;index<100;index++)
    {
		if(pworkers[index]!=NULL)
		{
			    if(pworkers[index]->getjob()=="销售经理")
		    {
			    for(long index2=0;index2<100;index2++)
					if(pworkers[index2]!=NULL)
					{
						if(pworkers[index2]->getjob()=="销售员"&& pworkers[index2]->getdepartment()==pworkers[index]->getdepartment())
							pworkers[index]->settsm(pworkers[index]->gettsm()+pworkers[index2]->getsalemoney());
						  
					}
		    }
		}

	}
}
void company::salermanagerprint()
{   
	long index;
	char word=0,word2;
    while(word!='q')
   {
	   cout<<"请输入销售经理的职工号"<<endl;
	   cin>>index;
	   for(long i=0;i<100;i++)
		   if(pworkers[i]!=NULL)
			   if(pworkers[i]->getjob()=="销售经理"&& pworkers[i]->getnumber()==index)
				    {
							   cout<<"--------------------------------------------------------------------------------"<<endl;
                               cout<<"| 职工号 |"<<"     姓名     |"<<" 部门 |"<<" 性别 |"<<" 年龄 |"<<"   岗位   |"<<"    工资    |"<<"  排名  |"<<endl;
					           cout<<"|"<<setw(8)<<pworkers[i]->getnumber()<<"|"<<setw(14)<<pworkers[i]->getname()<<"|"<<setw(6)<<pworkers[i]->getdepartment()<<"|"<<setw(6)<<pworkers[i]->getsex()<<"|"<<setw(6)<<pworkers[i]->getage()<<"|"<<setw(10)<<pworkers[i]->getjob()<<"|"<<setw(12)<<pworkers[i]->getwage()<<"|"<<setw(8)<<pworkers[i]->getrank()<<"|"<<endl;
				               cout<<"--------------------------------------------------------------------------------"<<endl;
				               cout<<"输入任意字母显示该部门销售员信息"<<endl;
							   cin>>word2;
			                  cout<<"--------------------------------------------------------------------------------"<<endl;
                              cout<<"| 职工号 |"<<"     姓名     |"<<" 部门 |"<<" 性别 |"<<" 年龄 |"<<"   岗位   |"<<"    工资    |"<<"  排名  |"<<endl;
			                   

				              for(long j=0;j<100;j++)
					          if(pworkers[j]!=NULL)
						         if(pworkers[j]->getjob()=="销售员"&& pworkers[j]->getdepartment()==pworkers[i]->getdepartment() && j!=i)
						            cout<<"|"<<setw(8)<<pworkers[j]->getnumber()<<"|"<<setw(14)<<pworkers[j]->getname()<<"|"<<setw(6)<<pworkers[j]->getdepartment()<<"|"<<setw(6)<<pworkers[j]->getsex()<<"|"<<setw(6)<<pworkers[j]->getage()<<"|"<<setw(10)<<pworkers[j]->getjob()<<"|"<<setw(12)<<pworkers[j]->getwage()<<"|"<<setw(8)<<pworkers[j]->getrank()<<"|"<<endl;
				             cout<<"--------------------------------------------------------------------------------"<<endl;
			        }
	   cout<<"出入\"q\"结束数据输入,其他字母继续输入。"<<endl;
	   cin>>word;
	}
	

}
void company::printout()
{
	long index;
	cout<<"请选择打印的项目:1.人员信息。  2.销售经理信息。"<<endl;
	cin>>index;
	sort();
	switch(index)
	{
	case 1:
		{
			cout<<"--------------------------------------------------------------------------------"<<endl;
            cout<<"| 职工号 |"<<"     姓名     |"<<" 部门 |"<<" 性别 |"<<" 年龄 |"<<"   岗位   |"<<"    工资    |"<<"  排名  |"<<endl;
			for(long index=0;index<100;index++)
				if(pworkers[index]!=NULL)
				{
					cout<<"|"<<setw(8)<<pworkers[index]->getnumber()<<"|"<<setw(14)<<pworkers[index]->getname()<<"|"<<setw(6)<<pworkers[index]->getdepartment()<<"|"<<setw(6)<<pworkers[index]->getsex()<<"|"<<setw(6)<<pworkers[index]->getage()<<"|"<<setw(10)<<pworkers[index]->getjob()<<"|"<<setw(12)<<pworkers[index]->getwage()<<"|"<<setw(8)<<pworkers[index]->getrank()<<"|"<<endl;
				}
            cout<<"---------------------------------------------------------------------------------"<<endl;
			break;
		}
	case 2:
		{
			salermanagerprint();
			break;
		}
	}

}


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -