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

📄 7_10.cpp

📁 通过设计一个较为简单的《小型公司工资管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程
💻 CPP
字号:
//7_10.cpp
#include<iostream>
#include<cstring>
#include<iomanip>
#include"employee.h"
using namespace std;
void main()
{
	manager ml[4];
	technician tl[4];
	salesmanager sml[4];
	salesman sl[4];
	char namestr[20];//输入雇员姓名时首先临时存放在namestr中


	employee * emp[16]={&ml[0],&ml[1],&ml[2],&ml[3],
		                &tl[0],&tl[1],&tl[2],&tl[3],
                        &sml[0],&sml[1],&sml[2],&sml[3],
                        &sl[0],&sl[1],&sl[2],&sl[3]};
	int i,j;
    float sll;
	for(i=0;i<4;i++)
	{
		cout<<"请输入经理的姓名:";
	    cin>>namestr;
	    ml[i].SetName(namestr);//设置雇员姓名
	}
    for(i=0;i<4;i++)
	{
		cout<<"请输入技术员的姓名:";
	    cin>>namestr;
	    tl[i].SetName(namestr);//设置雇员姓名
	}
    for(i=0;i<4;i++)
	{
		cout<<"请输入销售经理的姓名:";
	    cin>>namestr;
	    sml[i].SetName(namestr);//设置雇员姓名
	}
    for(i=0;i<4;i++)
	{
		cout<<"请输入推销员的姓名:";
	    cin>>namestr;
	    sl[i].SetName(namestr);//设置雇员姓名
	}
  
	for(i=0;i<4;i++)
	{
		ml[i].promote(4);//经理部门4级
	    ml[i].pay();//计算ml月薪
		char namestr[20]="manager";
		ml[i].SetPost(namestr);//设置雇员岗位
	}

	for(i=0;i<4;i++)
	{
	    cout<<"请输入技术员"<<tl[i].GetName()<<"本月的工作时数:";
	    int ww;
	    cin>>ww;//输入tl本月的工作时数
	    tl[i].SetworkHours(ww);//设置tl本月的工作时数
	    tl[i].promote(2);//兼职技术人员部门2级
	    tl[i].pay();//计算tl月薪
		char namestr[20]="technician";
		tl[i].SetPost(namestr);//设置雇员岗位
	}

	for(i=0;i<4;i++)
	{
		cout<<"请输入销售经理"<<sml[i].GetName()<<"所管辖部门本月的销售额:";
	    cin>>sll;//输入sl所管辖部门本月的销售总额
	    sml[i].Setsales(sll);//设置sl所管辖部门本月的销售总额
	    sml[i].pay();//计算sl月薪	
	    sml[i].promote(3);//销售经理部门3级
		char namestr[20]="salesmanager";
		sml[i].SetPost(namestr);//设置雇员岗位
	}

	for(i=0;i<4;i++)
	{
		cout<<"请输入推销员"<<sl[i].GetName()<<"本月的销售额:";
	    cin>>sll;//输入sl本月的销售额
	    sl[i].Setsales(sll);//设置sl本月的销售额
	    sl[i].pay();//计算sl月薪
	    sl[i].promote(1);//推销员部门1级
		char namestr[20]="sales";
		sl[i].SetPost(namestr);//设置雇员岗位
	}

	cout<<setiosflags(ios_base::left)//设置格式左对齐
		<<setw(10)<<"职工号"<<setw(10)<<"姓名"
		<<setw(10)<<"部门"<<setw(15)<<"岗位"
		<<setw(10)<<"工资"<<setw(10)<<"排名"<<endl;

	//按工资降序排序
    for(i=0;i<15;i++)
	{
		for(j=i+1;j<16;j++)
		{ 
			if(emp[i]->accumPay < emp[j]->accumPay)
			{
			    employee * p;
			    p=emp[i];
		        emp[i]=emp[j];
                emp[j]=p;
			}
		}
	}


	
	//显示信息
	for(i=0;i<16;i++)
	{
		cout<<setw(10)<<emp[i]->GetindividualEmpNo()<<setw(10)<<emp[i]->GetName()
		<<setw(10)<<emp[i]->Getgrade()<<setw(15)<<emp[i]->GetPost()
		<<setw(10)<<emp[i]->GetaccumPay()<<setw(10)<<i+1<<endl;
	}

    //按职工号查询职工信息
	cout<<"是否按职工号查询某职工的信息?是(Y/y)否(按任意键):";
	char c;
	cin>>c;
    if(c=='y'||c=='Y')
	{
		int x,flag=0;
   	    cout<<"请输入要查询职工信息的职工号为:";
loop:   cin>>x;
	    for(i=0;i<16;i++)
		{
		    if(emp[i]->individualEmpNo==x)
			{	
		     	cout<<setw(10)<<"职工号"<<setw(10)<<"姓名"
	        	    <<setw(10)<<"部门级数"<<setw(15)<<"岗位"
		            <<setw(10)<<"工资"<<setw(10)<<"排名"<<endl;		
			    cout<<setw(10)<<emp[i]->GetindividualEmpNo()<<setw(10)<<emp[i]->GetName()
		            <<setw(10)<<emp[i]->Getgrade()<<setw(15)<<emp[i]->GetPost()
		            <<setw(10)<<emp[i]->GetaccumPay()<<setw(10)<<i+1<<endl;
			    flag=1;
			}
		    if(flag==1)
			    break;
		}
	    if(flag==0)
		{
			cout<<"没有这个职工号,请重新输入职工号: ";
			goto loop;
		}

	}

	//按职工号修改某职工的信息
	cout<<"是否按职工号修改某职工的信息?是(Y/y)否(按任意键):";
	cin>>c;
    if(c=='y'||c=='Y')
	{
		int x,flag=0;
   	    cout<<"请输入要修改职工信息的职工号为:";
loopl:	cin>>x;
	    for(i=0;i<16;i++)
		{
		    if(emp[i]->individualEmpNo==x)
			{
				flag=1;
		        cout<<"请输入修改后雇员的姓名:";//修改雇员姓名
	            cin>>namestr;
	            emp[i]->SetName(namestr);
			    int x;//修改部门级数
                cout<<"请输入修改后部门级数:";
				cin>>x;
				emp[i]->grade=0;
                emp[i]->promote(x);
		        cout<<"请输入修改后雇员的岗位:";//修改雇员岗位
                cin>>namestr;
	            emp[i]->SetPost(namestr);
				int y;//修改雇员月薪
                cout<<"请输入修改后雇员月薪:";
				cin>>y;
				emp[i]->accumPay=y;
				//显示修改信息
		     	cout<<setw(10)<<"职工号"<<setw(10)<<"姓名"
	        	    <<setw(10)<<"部门"<<setw(15)<<"岗位"
		            <<setw(10)<<"工资"<<endl;		
			    cout<<setw(10)<<emp[i]->GetindividualEmpNo()<<setw(10)<<emp[i]->GetName()
		            <<setw(10)<<emp[i]->Getgrade()<<setw(15)<<emp[i]->GetPost()
		            <<setw(10)<<emp[i]->GetaccumPay()<<endl;
			}
		    if(flag==1)
			    break;
		}
	    if(flag==0)
		{
			cout<<"没有这个职工号,请重新输入职工号: ";
			goto loopl;
		}
	}

	//按职工号删除某位职工
	cout<<"是否按职工号删除某位职工?是(Y/y)否(按任意键):";
	cin>>c;
    if(c=='y'||c=='Y')
	{
		int x,flag=0;
   	    cout<<"请输入要删除职工的职工号为:";
	    cin>>x;
	    for(i=0;i<16;i++)
		{
		    if(emp[i]->individualEmpNo==x)
			{
				switch(emp[i]->grade)
				{
				case 1:
					for(j=0;j<4;j++)
						if(emp[i]==&sl[j])
						{
							salesman * p=new salesman;
				            * p=sl[j];
				            delete p;
					        flag=1;
						}
					    break;
				case 2:
					for(j=0;j<4;j++)
						if(emp[i]==&tl[j])
						{
							technician * p=new technician;
				            * p=tl[j];
				            delete p;
					        flag=1;
						}
					break;
				case 3:
					for(j=0;j<4;j++)
						if(emp[i]==&sml[j])
						{
							salesmanager * p=new salesmanager;
				            * p=sml[j];
				            delete p;
					        flag=1;
						}
					break;
				case 4:
					for(j=0;j<4;j++)
						if(emp[i]==&ml[j])
						{
							manager * p=new manager;
				            * p=ml[j];
				            delete p;
					        flag=1;
						}
					break;
				}
			}
		    if(flag==1)
			    break;
		}
		cout<<"已经删除对象"<<endl;
		flag=0;
		cout<<"请再输入要删除职工的职工号以确认职工号没有删除:";
		cin>>x;
		for(i=0;i<16;i++)
			if(emp[i]->individualEmpNo==x)
	        flag=1;
		if(flag==1)
			cout<<"职工号没有删除"<<endl;
		else
			cout<<"职工号已经删除"<<endl;
	}
}

⌨️ 快捷键说明

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