设计一个工资管理类,它能根据职工的姓名录入和查询职工的工资,每个职工的基本数据有职工姓名和工资
#include <iostream>
#include <string>
using namespace std;
struct Person{ //职工基本信息的结构
double salary;
char *name;
};
class SalaryManaege{
Person *employ; //存放职工信息的数组
int max; //数组下标上界
int n; //数组中的实际职工人数
public:
SalaryManaege(int Max=0){
max=Max;
n=0;
employ=new Person[max];
}
double &operator[](char *Name) { //重载[],返回引用
Person *p;
for(p=employ;p<employ+n;p++)
if(strcmp(p->name,Name)==0)
return p->salary;
p=employ + n++;
p->name=new char[strlen(Name)+1];
strcpy(p->name,Name);
p->salary=0;
return p->salary;
}
void display(){ for(int i=0;i<n;i++)
cout<<employ[i].name<<" "<<employ[i].salary<<endl;
}
};
double &operator[](char *Name) { //重载[],返回引用
Person *p;
for(p=employ;p<employ+n;p++)
if(strcmp(p->name,Name)==0)
return p->salary;
p=employ + n++;
p->name=new char[strlen(Name)+1];
strcpy(p->name,Name);
p->salary=0;
return p->salary;
}
void display(){ for(int i=0;i<n;i++)
cout<<employ[i].name<<" "<<employ[i].salary<<endl;
}
};void main(){
SalaryManaege s(3);
s["杜一为"]=2188.88;
s["李海山"]=1230.07;
s["张军民"]=3200.97;
cout<<"杜一为\t"<<s["杜一为"]<<endl; cout<<"李海山\t"<<s["李海山"]<<endl;
cout<<"张军民\t"<<s["张军民"]<<endl;
cout<<"-------下为display的输出--------\n\n";
s.display();
}