📄 17.txt
字号:
#include <iostream>
#include <cstring>
using namespace std;
enum zhiwu{jingli,salermanager,saler,jishuyuan};
static int number;//员工编号
static int no1=0;//no1(经理),2,3,4分别记录了4种不同的职位,各自包含的人数
static int no2=0;//兼职推销员
static int no3=0;//销售经理
static int no4=0;//兼职技术员
class pepole//人员类
{
public:
int n;//人员编号
int grade1;
char *name;
public:
int getn()
{return n;}
void promet(int n)//升级函数
{grade1+=n;}
int getgrade()
{return grade1;}
char *getname()
{return name;}
};
class jl:public pepole//经理类
{
public:
jl *next;
int salary;
zhiwu grade;
public:
int getsalary()
{return salary;}
jl()
{salary=-1;name="null";grade1=1;}
void print()
{cout<<"-------------------------------------"<<endl;
cout<<"职务: 经理"<<endl;
cout<<"级别:"<<"\t"<<grade1<<endl;
cout<<"编号:"<<"\t"<<n<<endl;
cout<<"姓名:"<<"\t"<<name<<endl;
cout<<"工资:"<<"\t"<<salary<<endl;
cout<<"-------------------------------------"<<endl;
cout<<""<<endl;
}
void set(char *a,int c=0,int g=1)
{name=a;
salary=c;
grade1=g;
}
};
class xsy:public pepole//销售员(推销员)类
{
public:
xsy *next;
int all;
double ticheng;
int salary;
public:
int getsalary()
{return salary;}
xsy()
{salary=-1;name="null";}
void print()
{cout<<"-------------------------------------"<<endl;
cout<<"职务: 推销员"<<endl;
cout<<"级别:"<<"\t"<<grade1<<endl;
cout<<"编号:"<<"\t"<<n<<endl;
cout<<"姓名:"<<"\t"<<name<<endl;
cout<<"工资:"<<"\t"<<salary<<endl;
cout<<"-------------------------------------"<<endl;
cout<<""<<endl;
}
void set(char *a,int c=0,double d=0,int g=1)
{name=a;
all=c;
ticheng=d;
salary=int(all*ticheng);
grade1=g;
}
};
class xsjl:public pepole//销售经理类
{
public:
xsjl *next;
int all;
int sal;
double ticheng;
int salary;
public:
int getsalary()
{return salary;}
xsjl()
{salary=-1;name="null";}
void print()
{cout<<"-------------------------------------"<<endl;
cout<<"职务: 销售经理"<<endl;
cout<<"级别:"<<"\t"<<grade1<<endl;
cout<<"编号:"<<"\t"<<n<<endl;
cout<<"姓名:"<<"\t"<<name<<endl;
cout<<"工资:"<<"\t"<<salary<<endl;
cout<<"-------------------------------------"<<endl;
cout<<""<<endl;
}
void set(char *a,int c=0,int d=0,double e=0,int g=1)
{name=a;
all=c;
sal=d;
ticheng=e;
grade1=g;
salary=int(sal+all*ticheng);
}
};
class jsy:public pepole//技术员类
{
public:
jsy *next;
int time;
int timepay;
int salary;
public:
int getsalary()
{return salary;}
jsy()
{salary=-1;name="null";}
void print()
{cout<<"-------------------------------------"<<endl;
cout<<"职务:兼职技术员"<<endl;
cout<<"级别:"<<"\t"<<grade1<<endl;
cout<<"编号:"<<"\t"<<n<<endl;
cout<<"姓名:"<<"\t"<<name<<endl;
cout<<"工资:"<<"\t"<<salary<<endl;
cout<<"-------------------------------------"<<endl;
cout<<""<<endl;
}
void set(char *a,int c=0,int d=0,int g=1)
{name=a;
time=c;
timepay=d;
grade1=g;
salary=time*timepay;
}
};
void main()//main函数
{int i;
int j;//按姓名查找时存储输入的编号
int k;
int g;//级别
int ng=0;//提升级别
char m[20];//按姓名查找时存储输入的姓名
double y;
int select1;//存储用户在顶级菜单的选择
int select2;//存储用户在二级菜单的选择
int select3;//存储用户在三级菜单的选择
jl *pjl=new jl();//数组用于存储经理信息
jl *headjl,*tailjl;//头节点,当前节点,尾节点
pjl=pjl->next=NULL;
xsy *pxsy=new xsy();//数组用于存储销售员信息
xsy *headxsy,*tailxsy;
pxsy=pxsy->next=NULL;
xsjl *pxsjl=new xsjl();//数组用于存储销售经理信息
xsjl *headxsjl,*tailxsjl;
pxsjl=pxsjl->next=NULL;
jsy *pjsy=new jsy();//数组用于存储技术员信息
jsy *headjsy,*tailjsy;
pjsy=pjsy->next=NULL;
loop1:cout<<" 欢迎进入公司人员管理系统 "<<endl;
cout<<"********************************************************************************"<<endl;
cout<<"你可以进行以下操作,请选择:"<<endl;
cout<<endl;
cout<<"1.查询 2.修改 3.添加 4.删除 5.退出"<<endl;
cout<<endl;
cout<<"********************************************************************************"<<endl;
cin>>select1;
if(select1==1||select1==2||select1==4)
if(pjl==NULL&&pxsy==NULL&&pxsjl==NULL&&pjsy==NULL)
{
cout<<"未曾有任何数据输入!请先添加人员信息。"<<endl;
goto loop1;
}
switch (select1)
{//选择查询功能
case 1:{
loop2:cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"请选择具体的查询方式:"<<endl;
cout<<"1.按姓名 2.按编号 3.主菜单"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cin>>select2;
switch(select2)
{
//按姓名查
case 1:{cout<<"=====请输入你要查询的职员的姓名:====="<<endl;
cin>>m;
jl *fjl;
fjl=headjl;
xsy *fxsy;
fxsy=headxsy;
xsjl *fxsjl;
fxsjl=headxsjl;
jsy *fjsy;
fjsy=headjsy;
while(fjl->next!=NULL)
{
if(strcmp(fjl->getname(),m)==0)
{
cout<<"查找结果:"<<endl;
fjl->print();break;
}
else
{fjl=fjl->next;cout<<" * "<<endl;}
}//在经理链表里查找
{
if(strcmp(fxsy->getname(),m)==0)
{
cout<<"查找结果:"<<endl;
fxsy->print();
}
else
fxsy=fxsy->next;
}while(fxsy->next!=NULL)//在销售员链表里查找
{
if(strcmp(fjsy->getname(),m)==0)
{
cout<<"查找结果:"<<endl;
fjsy->print();
}
else
fjsy=fjsy->next;
}while(fjsy->next!=NULL)//在技术员链表里查找
{
if(strcmp(fxsjl->getname(),m)==0)
{
cout<<"查找结果:"<<endl;
fxsjl->print();
}
else
fxsjl=fxsjl->next;
}while(fxsjl->next!=NULL)//在销售经理链表里查找
if(fjl->next==NULL&&fxsy->next==NULL&&fjsy->next==NULL&&fxsjl->next==NULL)
{
cout<<"未找到该员工!"<<endl;
}//未查找到
goto loop1;}
//按编号查
case 2:{
cout<<"=====请输入你要查询的职员的编号:====="<<endl;
int j;
cin>>j;
if(j<1||j>number)
{cout<<"~编号输入超出范围!请重新输入!"<<endl;cin>>j;}
jl *fjl;
fjl=headjl;
xsy *fxsy;
fxsy=headxsy;
xsjl *fxsjl;
fxsjl=headxsjl;
jsy *fjsy;
fjsy=headjsy;
{
if(fjl->getn()==j)
{
cout<<"查找结果:"<<endl;
fjl->print();
}
else
fjl=fjl->next;
}while(fjl->next!=NULL)//在经理链表里查找
{
if(fxsy->getn()==j)
{
cout<<"查找结果:"<<endl;
fxsy->print();
}
else
fxsy=fxsy->next;
}while(fxsy->next!=NULL)//在销售员链表里查找
{
if(fjsy->getn()==j)
{
cout<<"查找结果:"<<endl;
fjsy->print();
}
else
fjsy=fjsy->next;
}while(fjsy->next!=NULL)//在技术员链表里查找
{
if(fxsjl->getn()==j)
{
cout<<"查找结果:"<<endl;
fxsjl->print();
}
else
fxsjl=fxsjl->next;
}while(fxsjl->next!=NULL)//在销售经理链表里查找
if(fjl->next==NULL&&fxsy->next==NULL&&fjsy->next==NULL&&fxsjl->next==NULL)
{
cout<<"未找到该员工!"<<endl;
}//未查找到
goto loop1;
}
//返回主菜单
case 3:{cout<<endl;goto loop1;break;}
default:{
cout<<"输入错误请重新输入"<<endl;
goto loop2;
}//loop2为选择查询方式的菜单
}
break;
}
//以上为查询功能
//选择修改功能
case 2:{ cout<<"=====请输入你要修改的职员的编号:====="<<endl;
cin>>j;
jl *fjl,*qjl;
fjl=qjl=headjl;//*q..用于指向*fjl节点的前一节点,在后面删除*fjl节点时要用到
xsy *fxsy,*qxsy;
fxsy=qxsy=headxsy;
xsjl *fxsjl,*qxsjl;
fxsjl=qxsjl=headxsjl;
jsy *fjsy,*qjsy;
fjsy=qjsy=headjsy;
{
if((qjl->next)->getn()==j)
fjl=qjl->next;
else
qjl=qjl->next;
}while(qjl->next!=NULL)//在经理链表里查找
{
if((qxsy->next)->getn()==j)
fxsy=qxsy->next;
else
qxsy=qxsy->next;
}while(qxsy->next!=NULL)//在销售员链表里查找
{
if((qjsy->next)->getn()==j)
fjsy=qjsy->next;
else
qjsy=qjsy->next;
}while(qjsy->next!=NULL)//在技术员链表里查找
{
if((qxsjl->next)->getn()==j)
fxsjl=qxsjl->next;
else
qxsjl=qxsjl->next;
}while(qxsjl->next!=NULL)//在销售经理链表里查找
if(qjl->next!=NULL)//按编号找到的为经理
{
cout<<"查找结果:"<<endl;
fjl->print();
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cout<<"将该对象修改为:"<<endl;
cout<<"1.推销员 2.销售经理 3.兼职技术员 4.主菜单"<<endl;
cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;
cin>>select3;
switch(select3)
//选择修改为销售员
{ case 1:
{cout<<"输入该推销员的销售总额:"<<endl;
int l;
cin>>l;
cout<<"输入该推销员的提成:"<<endl;
cin>>y;
cout<<"输入级别:"<<endl;
cin>>g;
xsy *pxsy=new xsy();
pxsy->set(fjl->getname(),l,y,g);
no1--;//经理数减少一个
no2++;//推销员加一个
tailxsy->next=pxsy;
tailxsy=pxsy;
pxsy->next=NULL;
cout<<"=====修改后数据为:====="<<endl;
pxsy->print();
qjl->next=fjl->next;//将查找到的经理对象从链表中删除
goto loop1;
}
//选择修改为销售经理
case 2:
{
cout<<"输入该销售经理的固定工资:"<<endl;
int w;
cin>>w;
cout<<"输入该销售经理的销售总额:"<<endl;
int e;
cin>>e;
cout<<"输入该销售经理的提成:"<<endl;
cin>>y;
cout<<"输入该销售经理的级别:"<<endl;
cin>>g;
xsjl *pxsjl=new xsjl();
pxsjl->set(fjl->getname(),e,w,y,g);
no1--;//经理数减少一个
no3++;
tailxsjl->next=pxsjl;
tailxsjl=pxsjl;
pxsjl->next=NULL;
no1--;
cout<<"=====修改后数据为:====="<<endl;
pxsjl->print();
qjl->next=fjl->next;//将查找到的经理对象从链表中删除
goto loop1;
}
//选择修改为兼职技术员
case 3:
{
cout<<"输入该兼职技术总的工作时间:"<<endl;
int w;
cin>>w;
cout<<"输入该兼职技术员的工作时薪:"<<endl;
int e;
cin>>e;
cout<<"输入该兼职技术员的级别:"<<endl;
cin>>g;
jsy *pjsy=new jsy();
pjsy->set(fjl->getname(),w,e,g);
no1--;
no4++;
tailjsy->next=pjsy;
tailjsy=pjsy;
pjsy->next=NULL;
cout<<"=====修改后数据为:====="<<endl;
pjsy->print();
qjl->next=fjl->next;//将查找到的经理对象从链表中删除
goto loop1;
}
//选择返回主菜单
case 4:goto loop1;
}
}
if(qxsy->next!=NULL)//找到的为销售员
{cout<<"将该对象修改为:"<<endl;
cout<<"1.经理 2.销售经理 3.兼职技术员"<<endl;
cin>>select3;
switch(select3)
{case 1:
{cout<<"输入该经理的月薪:"<<endl;
int l;
cin>>l;
cout<<"输入该经理的级别:"<<endl;
cin>>g;
jl *pjl=new jl();
pjl->set(fxsy->getname(),l,g);
tailjl->next=pjl;
tailjl=pjl;
pjl->next=NULL;
no2--;
no1++;
cout<<"=====修改后数据为:====="<<endl;
pjl->print();
qxsy->next=fxsy->next;//将找到的销售员对象从链表中删除
goto loop1;
}
case 2:
{
loop10: cout<<"输入该销售经理的固定工资:"<<endl;
int w;
cin>>w;
cout<<"输入该销售经理的销售总额:"<<endl;
int e;
cin>>e;
cout<<"输入该销售经理的提成:"<<endl;
cin>>y;
cout<<"输入该销售经理的级别:"<<endl;
cin>>g;
xsjl *pxsjl=new xsjl();
pxsjl->set(fxsy->getname(),e,w,y,g);
tailxsjl->next=pxsjl;
tailxsjl=pxsjl;
pxsjl->next=NULL;
no2--;
no3++;
cout<<"=====修改后数据为:====="<<endl;
pxsjl->print();
qxsy->next=fxsy->next;//将找到的销售员对象从链表中删除
goto loop1;
}
case 3:
{
cout<<"输入该兼职技术总的工作时间:"<<endl;
int w;
cin>>w;
cout<<"输入该兼职技术员的工作时薪:"<<endl;
int e;
cin>>e;
cout<<"输入该兼职技术员的级别:"<<endl;
cin>>g;
jsy *pjsy=new jsy();
pjsy->set(fxsy->getname(),w,e,g);
tailjsy->next=pjsy;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -