| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1093 人关注过本帖
标题:希望能给点思路!请教题
只看楼主 加入收藏
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
 问题点数:0 回复次数:11 
希望能给点思路!请教题

设计一个职工信息表,使用继承的方法,编写最多能输入10个职工的信息表,再根据这个表产生一个职工信息简表,并使用虚函数实现多态性完成输出不同简表信息的任务。

设计要求实现如下功能:

(1)建立职工信息数据,包括职工编号、姓名、性别和年龄。

(2)根据职工信息表,建立只含有姓名和年龄的职工信息简表。

(3)使用继承的方法构造2个类,使用相应的对象数组放置10个职工信息。

(4)编写同名display()成员函数,用来输出数组的内容。

(5)另外编制一个函数printer(),用来根据实际对象输出它们的内容

对于实现功能的第三点,和第二点 我存在许多疑惑!望有人可赐教小弟。

有兴趣的也可以做一做,正好可以和我的做一下对比!

搜索更多相关主题的帖子: 思路 
2005-12-20 09:10
哈波儿
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-12-20
收藏
得分:0 
你做的呢?
2005-12-20 16:46
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
得分:0 

#include<iostream.h>
#include<string.h>
#define N 2
class data
{
public:
void getdata()
{
cout<<"请输入职工编号:";cin>>anum;
cout<<"请输入职工姓名:";cin>>aname;
cout<<"请输入职工性别:";cin>>asex;
cout<<"请输入职工年龄:";cin>>aage;
cout<<endl<<endl;
}
virtual void display()
{
cout<<anum<<" /t"<<aname<<" /t"<<asex<<" /t"<<aage<<endl;
}
protected:
long anum;
char aname[20],asex;
int aage;
};
class sdata:public data
{
public:
void display()
{
strcpy(bname,aname);
bage=aage;
cout<<aname<<" /t"<<aage<<endl;
}
protected:
char bname[20];
int bage;
};
void printer(data &p)
{
p.display();
}
void main()
{
data a[N];
int i;
cout<<" 职工信息输入"<<endl;
for(i=0;i<N;i++)
{
cout<<"请输入第 "<<i+1<<"名职工的信息:"<<endl;
a[i].getdata();
}
cout<<" 职工信息输入"<<endl
<<"----------------------------------"<<endl;
cout<<"职工编号/t职工姓名/t职工性别/t职工年龄"<<endl
<<"----------------------------------"<<endl;
for(i=0;i<N;i++)
{
printer(a[i]);

cout<<"---------------------------------------------------"<<endl;

}
cout<<endl<<endl;
cout<<" 职工简表信息输出"<<endl
<<"-----------------------------------"<<endl;
sdata b[N];
cout<<"职工姓名/t职工年龄"<<endl
<<"----------------------------------"<<endl;
for(i=0;i<N;i++)
{
printer(b[i]);
cout<<"----------------------------------------"<<endl;
}
}
调试的时候出现了一些问题,高手帮忙调试啊

2005-12-22 15:32
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
得分:0 
为什么没人来呢!论坛都是些虚伪的东西!

以后都不来了
2005-12-27 20:37
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
论坛上的人才不会帮别人做作业呢~

2005-12-27 20:56
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
得分:0 
这是作业吗,我只是要修改一下!

难道连个这样的要求也算过分?我又不是没写,没写的话,那我就不发上来了!

corrupt你不帮忙就不要瞎说,有本事你做啊!
2005-12-28 13:23
柳儿
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:1830
专家分:30
注 册:2004-9-23
收藏
得分:0 
是很简单,以前我帮忙做过一个类似的,不过现在那个贴子找不到了。你要想看,可以给你一份看看。

成功会使人骄傲。如果你骄傲自大,你就会停止学习。不学习,人就停止了进步
2005-12-29 09:53
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

恩 自己写的嘛 已经很不错啦 至少比我写的好
这样改应该可以吧 运行一下试试

-------------------

#include<iostream.h>
#include<string.h>
#define N 2
class data
{
public:
void getdata()
{
cout<<"请输入职工编号:";cin>>anum;
cout<<"请输入职工姓名:";cin>>aname;
cout<<"请输入职工性别:";cin>>asex;
cout<<"请输入职工年龄:";cin>>aage;
cout<<endl<<endl;
}
virtual void display()
{
cout<<anum<<" \t"<<aname<<" \t"<<asex<<" \t"<<aage<<endl;
}
protected:
long anum;
char aname[20],asex[10];
int aage;
};
class sdata:public data
{
public:
void display()
{
cout<<aname<<" \t"<<aage<<endl;
}


};
void printer(data &p)
{
p.display();
}
void main()
{
sdata a[N];
int i;
cout<<" 职工信息输入"<<endl;
for(i=0;i<N;i++)
{
cout<<"请输入第 "<<i+1<<"名职工的信息:"<<endl;
a[i].getdata();
}
cout<<" 职工信息输入"<<endl
<<"----------------------------------"<<endl;
cout<<"职工编号\t职工姓名\t职工性别\t职工年龄"<<endl
<<"----------------------------------"<<endl;
for(i=0;i<N;i++)
{
printer(a[i]);

cout<<"---------------------------------------------------"<<endl;

}
cout<<endl<<endl;
cout<<" 职工简表信息输出"<<endl
<<"-----------------------------------"<<endl;

cout<<"职工姓名\t职工年龄"<<endl
<<"----------------------------------"<<endl;
for(i=0;i<N;i++)
{
printer(a[i]);
cout<<"----------------------------------------"<<endl;
}
}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2005-12-29 15:10
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
得分:0 
unicorn 很感谢你的帮助!

自从上次那个人说了我以后,我就自己改了,也调通了,不过还是很感谢你,让我感觉论坛还是有人性的!
2005-12-31 12:25
兜兜裤2
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-11
收藏
得分:0 

这个程序我又改进了,从文件中直接读取数据!

这是我改的:

#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个职工的信息,并输出了两遍,我改了很久,但都改不过来!

希望有人可以给我帮助!

2005-12-31 12:29
快速回复:希望能给点思路!请教题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047661 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved