这个程序我又改进了,从文件中直接读取数据!
这是我改的:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#define N 2
class data
{
public:
friend void printer(data a[N]);
void getdata(data a)
{
/*cout<<"请输入职工编号:";cin>>a.anum;
cout<<"请输入职工姓名:";cin>>a.aname;
cout<<"请输入职工性别:";cin>>a.asex;
cout<<"请输入职工年龄:";cin>>a.aage;
cout<<endl<<endl;
}*/
long num;
char name[20],sex;
int age;
ifstream inf;
inf.open ("D:\\data.txt",ios::in|ios::nocreate);
if(!inf)
{
cout<<"Error:file data.txt can't open!"<<endl;
exit(1);
}
while(!inf.eof())
{
inf>>num>>name>>sex>>age;
anum=num;
strcpy(aname,name);
asex=sex;
aage=age;
}
}
virtual void display(data a)
{
cout<<a.anum<<" \t"<<a.aname<<" \t"<<a.asex<<" \t"<<a.aage<<endl;
}
void makeout(data a)
{
cout<<a.aname<<" \t"<<a.aage<<endl;
}
protected:
long anum;
char aname[20],asex;
int aage;
};
class sdata:public data
{
public:
void display(data a)
{
makeout(a);
}
};
void printer(data a[N])
{
char aname[20],flag='y';
int i;
cout<<"请输入要查找的职工姓名:"<<endl;
cin>>aname;
while(flag=='y'||flag=='Y')
{
for(i=0;i<N;i++)
{
if(strcmp(a[i].aname,aname)==0)
{
flag='n';
cout<<"编号\t"<<"姓名\t"<<"性别\t"<<"年龄\t"<<endl;
cout<<a[i].anum<<"\t"<<a[i].aname<<"\t"<<a[i].asex<<"\t"<<a[i].aage<<"\t"<<endl;
break;
}
if(strcmp(a[i].aname,aname)!=0)
{
flag='n';
cout<<"查无此人!请重新输入!"<<endl;
break;
}
}
/*if(i=N)
{
cout<<"查无此人!"<<endl;
break;
}*/
}
}
void main()
{
data a[N],*p;
sdata b[N];
int i;
for(i=0;i<=N-1;i++)
{
/*cout<<"请输入第 "<<i+1<<"名职工的信息"<<endl; */
a[i].getdata(a[i]);
}
cout<<" 职工信息输入"<<endl
<<"----------------------------------------------------------"<<endl;
cout<<"职工编号\t职工姓名\t职工性别\t职工年龄"<<endl
<<"----------------------------------------------------------"<<endl;
p=a;
for(i=0;i<=N-1;i++)
{
p->display(a[i]);
p++;
}
cout<<"----------------------------------------------------------"<<endl;
cout<<" 职工信息简表"<<endl
<<"----------------------------------------------------------"<<endl;
cout<<"职工姓名\t职工年龄"<<endl
<<"----------------------------------------------------------"<<endl;
p=b;
for(i=0;i<=N-1;i++)
{
p->display(a[i]);
p++;
}
cout<<" 职工信息查查找输入"<<endl
<<"----------------------------------------------------------"<<endl;
printer(a);
}
不过 在调试的时候 有个问题 总解决不了!就是它读取数据的时候,只读取第2个职工的信息,并输出了两遍,我改了很久,但都改不过来!
希望有人可以给我帮助!![](images/smilies/emot/em04.gif)