定义职工类,数据成员有:工号(int)、姓名(字符串)、性别(字符串)、月工资(float);由职工类定义对象数组,每个对象代表一个职工。实现下列功能:(1)添加一个职工的信息到对象数组(键盘输入);(2)输出显示数组中所有职工的信息;(3)查找并输出月工资最高值;(4)查找并输出月工资最低值;(5)计算并输出所有职工的月工资平均值;(6)查找并输出姓名为指定名字的所有职工的全部信息;
#include <iostream>
#include <fstream>
#include <cmath>
#include <cstring>
using namespace std;
#define N 100 ;
class A
{
int X;
float Y;
char C[31];
char D[11];
public:
void setdata(int x,char d[],char c[],float y)
{
X=x;
Y=y;
strcpy(C,c);
strcpy(D,d);
}
int getX()
{
return X;
}
float getY()
{
return Y;
}
char *getC()
{
return C;
}
char *getD()
{
return D;
}
};
A a[N];
int n=0;
void f0()
{
cout<<"退出程序运行!"<<endl<<endl;
exit(0);
}
void input_data()
{
int x;
float y;
char c[31];
char d[11];
cout<<"请输入每个对象的3项数据(工号(int)、性别(字符串)、姓名(字符串)、月工资(float)) ,然后按回车键:"<<endl;
cin>>x>>d>>c>>y;
if(n<N)
{
a[n].setdata(x,d,c,y);
n++;
}
void output_data()
{
int i;
for(i=0;i<n;i++)
cout<<a[i]<<endl;
}
float max()
{
int i;
float M;
M=a[0].getY();
for(i=1;i<n;i++)
if(a[i].getY()>M)
M=a[i].getY();
cout<<"最大Y值="<<M<<endl;
cout<<endl;
return M;
}
float min()
{
int i;
float m;
m=a[0].getY();
for(i=1;i<n;i++)
if(a[i].getY()<m)
m=a[i].getY();
cout<<"最小Y值="<<M<<endl;
cout<<endl;
return M;
}
float average()
{
int i;
float A,s=0.0;
for(i=1;i<n;i++)
s+=a[i].getY();
A=s/float n;
cout<<"所有对象的平均Y值="<<A<<endl;
return 0;
}
void search_c()
{
int i;
char c[31];
cout<<"请输入要查找的姓名:"<<endl;
cin>>c;
for(i=0;i<n;i++)
if(c==a[i].*getC())
{
cout<<"你要查找的是"<<c<<", 查找结果如下:"<<endl;
cout<<a[i]<<endl;
}
}
int main()
{
int op;
while (true)
{
cout<<"请输入一个整数并按Enter键,选择执行相应的功能:"<<endl;
cout<<"0: 退出程序"<<endl;
cout<<"1: 增加1个对象(从键盘输入)"<<endl;
cout<<"2: 输出对象数组全部对象(向显示器)"<<endl;
cout<<"3: 求所有对象的最大Y值"<<endl;
cout<<"4: 求所有对象的最小Y值"<<endl;
cout<<"5: 求所有对象的平均Y值"<<endl;
cout<<"6: 查找某个对象的信息(指定字符串值)"<<endl;
cin>>op;
switch (op)
{
case 0: f0( ); break;
case 1: input_data( ); break;
case 2: output_data( ); break;
case 3: max(); break;
case 4: min(); break;
case 5: average(); break;
case 6: search_c(); break;
}
}
return 0;
}