/**
定义一个公司类(要求每一行有注释)
(1)私有成员为,公司名称,总经理,公司成员(姓名、工作),采用指针动态数组方式存储公司成员。
(2)重载"+"操作,表示两个公司合并,公司名称由两个公司名称连接到一起,第一操作数变为合并公司的总经理,第二操作数变为副总经理。
(3)重载[]操作以获得第i个公司人员信息。
(4)设计该类的对象不能拷贝构造及赋值
*/
#include <iostream>
#include <string>
void choice(int );
void menu1();
void menu2();
class Companey;
Companey MsgSet(Companey );
Companey MsgSet2(Companey);
void MsgPrint();
void SumShow();
using namespace std;
class Employee
{
public :
Employee(){}
Employee(string a,string b)
{
Name=a;
Work=b;
}
string getName()
{
return Name;
}
string getWork()
{
return Work;
}
private:
string Name;
string Work;
};
class Companey
{
public:
Companey(){};
Companey(string a, string b,int c) {
CompaneyName=a;
Manager=b;
num=c;
ep=new Employee [num];
}
Companey(string a, string b,string c,int d,Employee *e)
{
CompaneyName=a;
Manager=b;
Manager2=c;
num=d;
ep=e;
}
void addEmployee()
{
for(int i=0;i<num;i++)
{
string Ename;
string Ework;
cout<<"输入第"<<i+1<<"位工作人员姓名:"<<endl;
cin>>Ename;
cout<<"输入"<<i+1<<"位工作人员工作:"<<endl;
cin>>Ework;
ep[i]=Employee(Ename,Ework);
}
}
string getName() {
return CompaneyName;
}
string getManager() {
return Manager;
}
int getNum(){
return num;
}
Employee * getElp() {
return ep;
}
void toPrint() {
cout<<"公司名称:"<<CompaneyName<<endl;
cout<<"总经理名字:"<<Manager<<endl;
<<"--------------工作人员------------------"<<endl;
cout<<"姓名"<<" "<<"工作"<<endl;
for(int m=0;m<num;m++) {
cout<<ep[m].getName()<<"\t"<<ep[m].getWork()<<endl;
}
}
friend Companey operator+ (Companey &C1,Companey &C2) {
string name=C1.getName()+C2.getName();
string one=C1.getManager();
string two=C2.getManager();
int num=C1.getNum()+C2.getNum();
Employee *n=new Employee[num];
Employee *m;
m=C1.getElp();
Employee *k=C2.getElp();
int s=C1.getNum();
for(int a=0;a<C1.getNum();a++){
n[a]=m[a];
}
for(int b=0;b<C2.getNum();b++){
n[s]=k[b];
s=s+1;
}
Companey temp(name,one,two,num,n);
return temp;
}
void addShow() {
cout<<"公司名称为:"<<CompaneyName<<endl;
cout<<"总经理为:"<<Manager<<"\t"<<"副总经理为:"<<Manager2<<endl;
cout<<"工作人员"<<"\t"<<"工作"<<endl;
for(int x=0;x<num;x++) {
cout<<ep[x].getName()<<"\t"<<ep[x].getWork()<<endl;
}
}
private:
string CompaneyName;
string Manager;
string Manager2;
int num;
Employee *ep;
};
Companey C1;
Companey C2;
int main() {
int i;
menu1();
cin>>i;
choice(i);
}
void choice(int n){
switch(n){
case 1:
C1=MsgSet(C1);
main();
case 2:
C2=MsgSet2(C2);
main();
case 3:
C1.toPrint();
C2.toPrint();
main();
case 4:
SumShow();
main();
case 5:exit(0);
default:
cout<<"输入错误请重新输入"<<endl;
main();
}
}
Companey MsgSet(Companey C1){
string name;
string Mname;
int num;
cout<<"公司信息录入"<<endl;
cout<<"输入公司名称:"<<endl;
cin>>name;
cout<<"输入总经理名称:"<<endl;
cin>>Mname;
cout<<"输入公司人员数目:"<<endl;
cin>>num;
C1= Companey(name ,Mname,num);
C1.addEmployee();
cout<<"公司信息录入成功。"<<endl;
return C1;
//C1.toPrint();
}
Companey MsgSet2(Companey C2){
string name;
string Mname;
int num;
cout<<"公司信息录入"<<endl;
cout<<"输入公司名称:"<<endl;
cin>>name;
cout<<"输入总经理名称:"<<endl;
cin>>Mname;
cout<<"输入公司人员数目:"<<endl;
cin>>num;
C2 =Companey(name ,Mname,num);
C2.addEmployee();
cout<<"公司信息录入成功。"<<endl;
return C2;
//C1.toPrint();
}
void SumShow(){
Companey temp=C1+C2;
int i;
menu2();
cout<<"请输入选项:"<<endl;
cin>>i;
switch(i) {
case 1:
temp.addShow();SumShow();
case 2:
}
int z;
cout<<"查找第几位员工"<<endl;
cin>>z;
while(z>temp.getNum()){
cout<<"对不起 您输入的数字超过了工作人员数,请重新输入"<<endl;
cin>>z;
}
Employee *e=temp.getElp();
cout<<"该工作人员姓名是:"<<e[z].getName()<<endl;
cout<<"该工作人员工作是:"<<e[z].getWork()<<endl;
}
SumShow();
case 3: main();
default:
cout<<"输入不正确请重新输入"<<endl;
}
}
void menu1() {
cout<<"题目1"<<endl;
cout<<"1.输入第一个公司的相关信息:"<<endl;
cout<<"2.输入第二个公司的相关信息:"<<endl;
cout<<"3.输出两个公司的信息:"<<endl;
cout<<"4.两个公司合并后的信息:"<<endl;
cout<<"5.退出系统"<<endl;
}
void menu2() {
cout<<"公司合并"<<endl;
cout<<"1.查看合并后的公司信息"<<endl;
cout<<"2.查找工作人员"<<endl;
cout<<"3.返回"<<endl;
}
定义一个公司类(要求每一行有注释)
(1)私有成员为,公司名称,总经理,公司成员(姓名、工作),采用指针动态数组方式存储公司成员。
(2)重载"+"操作,表示两个公司合并,公司名称由两个公司名称连接到一起,第一操作数变为合并公司的总经理,第二操作数变为副总经理。
(3)重载[]操作以获得第i个公司人员信息。
(4)设计该类的对象不能拷贝构造及赋值
*/
#include <iostream>
#include <string>
void choice(int );
void menu1();
void menu2();
class Companey;
Companey MsgSet(Companey );
Companey MsgSet2(Companey);
void MsgPrint();
void SumShow();
using namespace std;
class Employee
{
public :
Employee(){}
Employee(string a,string b)
{
Name=a;
Work=b;
}
string getName()
{
return Name;
}
string getWork()
{
return Work;
}
private:
string Name;
string Work;
};
class Companey
{
public:
Companey(){};
Companey(string a, string b,int c) {
CompaneyName=a;
Manager=b;
num=c;
ep=new Employee [num];
}
Companey(string a, string b,string c,int d,Employee *e)
{
CompaneyName=a;
Manager=b;
Manager2=c;
num=d;
ep=e;
}
void addEmployee()
{
for(int i=0;i<num;i++)
{
string Ename;
string Ework;
cout<<"输入第"<<i+1<<"位工作人员姓名:"<<endl;
cin>>Ename;
cout<<"输入"<<i+1<<"位工作人员工作:"<<endl;
cin>>Ework;
ep[i]=Employee(Ename,Ework);
}
}
string getName() {
return CompaneyName;
}
string getManager() {
return Manager;
}
int getNum(){
return num;
}
Employee * getElp() {
return ep;
}
void toPrint() {
cout<<"公司名称:"<<CompaneyName<<endl;
cout<<"总经理名字:"<<Manager<<endl;
<<"--------------工作人员------------------"<<endl;
cout<<"姓名"<<" "<<"工作"<<endl;
for(int m=0;m<num;m++) {
cout<<ep[m].getName()<<"\t"<<ep[m].getWork()<<endl;
}
}
friend Companey operator+ (Companey &C1,Companey &C2) {
string name=C1.getName()+C2.getName();
string one=C1.getManager();
string two=C2.getManager();
int num=C1.getNum()+C2.getNum();
Employee *n=new Employee[num];
Employee *m;
m=C1.getElp();
Employee *k=C2.getElp();
int s=C1.getNum();
for(int a=0;a<C1.getNum();a++){
n[a]=m[a];
}
for(int b=0;b<C2.getNum();b++){
n[s]=k[b];
s=s+1;
}
Companey temp(name,one,two,num,n);
return temp;
}
void addShow() {
cout<<"公司名称为:"<<CompaneyName<<endl;
cout<<"总经理为:"<<Manager<<"\t"<<"副总经理为:"<<Manager2<<endl;
cout<<"工作人员"<<"\t"<<"工作"<<endl;
for(int x=0;x<num;x++) {
cout<<ep[x].getName()<<"\t"<<ep[x].getWork()<<endl;
}
}
private:
string CompaneyName;
string Manager;
string Manager2;
int num;
Employee *ep;
};
Companey C1;
Companey C2;
int main() {
int i;
menu1();
cin>>i;
choice(i);
}
void choice(int n){
switch(n){
case 1:
C1=MsgSet(C1);
main();
case 2:
C2=MsgSet2(C2);
main();
case 3:
C1.toPrint();
C2.toPrint();
main();
case 4:
SumShow();
main();
case 5:exit(0);
default:
cout<<"输入错误请重新输入"<<endl;
main();
}
}
Companey MsgSet(Companey C1){
string name;
string Mname;
int num;
cout<<"公司信息录入"<<endl;
cout<<"输入公司名称:"<<endl;
cin>>name;
cout<<"输入总经理名称:"<<endl;
cin>>Mname;
cout<<"输入公司人员数目:"<<endl;
cin>>num;
C1= Companey(name ,Mname,num);
C1.addEmployee();
cout<<"公司信息录入成功。"<<endl;
return C1;
//C1.toPrint();
}
Companey MsgSet2(Companey C2){
string name;
string Mname;
int num;
cout<<"公司信息录入"<<endl;
cout<<"输入公司名称:"<<endl;
cin>>name;
cout<<"输入总经理名称:"<<endl;
cin>>Mname;
cout<<"输入公司人员数目:"<<endl;
cin>>num;
C2 =Companey(name ,Mname,num);
C2.addEmployee();
cout<<"公司信息录入成功。"<<endl;
return C2;
//C1.toPrint();
}
void SumShow(){
Companey temp=C1+C2;
int i;
menu2();
cout<<"请输入选项:"<<endl;
cin>>i;
switch(i) {
case 1:
temp.addShow();SumShow();
case 2:
}
int z;
cout<<"查找第几位员工"<<endl;
cin>>z;
while(z>temp.getNum()){
cout<<"对不起 您输入的数字超过了工作人员数,请重新输入"<<endl;
cin>>z;
}
Employee *e=temp.getElp();
cout<<"该工作人员姓名是:"<<e[z].getName()<<endl;
cout<<"该工作人员工作是:"<<e[z].getWork()<<endl;
}
SumShow();
case 3: main();
default:
cout<<"输入不正确请重新输入"<<endl;
}
}
void menu1() {
cout<<"题目1"<<endl;
cout<<"1.输入第一个公司的相关信息:"<<endl;
cout<<"2.输入第二个公司的相关信息:"<<endl;
cout<<"3.输出两个公司的信息:"<<endl;
cout<<"4.两个公司合并后的信息:"<<endl;
cout<<"5.退出系统"<<endl;
}
void menu2() {
cout<<"公司合并"<<endl;
cout<<"1.查看合并后的公司信息"<<endl;
cout<<"2.查找工作人员"<<endl;
cout<<"3.返回"<<endl;
}