| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 450 人关注过本帖
标题:一道题目的疑惑???
只看楼主 加入收藏
yuqu
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-14
收藏
 问题点数:0 回复次数:4 
一道题目的疑惑???

题目是:设计一个学生表类,类中要求拥有:
学生属性:包括学号(long),姓名(char*),年龄(int),性别(BOOL),家庭住址(char*),朋友列表(struct friend *),家庭成员列表(struct family *),其中struct friend 和struct family自行定义;
方法:输入数据方法、修改数据方法、查询数据方法、输出数据方法(注意:输入、修改、查询、输出的数据包括学生的各种数据,请自行设计方法个数和方式)

提高部分:每个对象如果可以存放多个学生,每个学生都有自己的朋友列表和家庭成员列表的情况如何设计上面的类。


下面是我写的一些,但是不能输出和输入朋友和家人的资料,/**/是我想改进的,但是错误多多
由于刚学C++不久,但是题目比较难,请各位多多指教,谢谢!

#include<iostream.h>
#include<string.h>
/*enum BOOL{
False,True
};*/
struct stu{
long number;
char name[20];
int age;
int sex;
char address[200];
};
struct friends{
char name[20];
char address[100];
long tel_number;
};
struct family{
char name[20];
char description[100];
};

class student{
struct stu data;
struct friends *p_friends;
struct family *p_family;
int m,n;
public:
student(struct stu,int,int);
~student();
void show();
//BOOL M_or_W();//?????
father(char*,char*,char);
mather(char*,char*);
friend1(char*,char*,long);
friend2(char*,char*,long,int);

};

void student::show(){
cout<<"student number:"<<data.number<<endl;
cout<<"student name:"<<data.name<<endl;
cout<<"student age:"<<data.age<<endl;
cout<<"student sex:"<<data.sex<<endl;
cout<<"student address:"<<data.address<<endl;
for (int i=0;i<m;i++)
cout<<"friends name:"<<(p_friends+i)->name<<" "<<"friend address:"<<(p_friends+i)->address<<" "<<"friend tel_number:"<<(p_friends+i)->tel_number<<endl;
for (int j=0;j<n;j++)
cout<<"family name:"<<(p_family+i)->name<<" "<<"family description:"<<(p_family+i)->description<<endl;
}
student::~student(){
delete p_friends;
delete p_family;
}
student::student(struct stu a,int b,int c){
data.number=a.number;
strcpy(data.name,a.name);
data.age=a.age;
data.sex=a.sex;
strcpy(data.address,a.address);
p_friends=new friends[b];
p_family=new family[c];
m=b;
n=c;
}
/*student::father(char *x,char *y,char z){
strcpy(p_family->name,x->name);
strcpy(p_family->description,y->name);
}
student::mather(char *xx,char *yy){
strcpy(p_family->name,xx.name);
strcpy(p_family->description,yy.name);
}
student::friend1(char *h,char *j,long k){
strcpy(p_friends->address,h->address);
strcpy(p_friends->name,h->name);
p_friends->tel_number;
}
student::friend2(char *hh,char *jj,long kk){
strcpy(p_friends->address,hh->address);
strcpy(p_friends->name,jj->name);
p_friends->kk.tel_number;
}
*/
int main(void){
struct stu wy;
/* struct friends *F1;
struct friends *F2;
struct family *F;
struct family *M;*/
wy.number=642135641;
strcpy(wy.name,"wuyu");
wy.age=22;
wy.sex=0;
strcpy(wy.address,"gdsszdxzw");

student kh(wy,2,2);
/*student yyy(wd,father,0);
student pppp(ljq,mather);
student mku(shenzhenzw,xxy,9147);
student tin(maoming,xsl,9348);*/
kh.show();

return 0;
}

2006-11-25 01:29
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

程序代码:

#include<iostream>
#include<string>
using namespace std;
enum BOOL{
False,True
};

struct friends{
char name[20];
char address[100];
long tel_number;
friends& operator=(const friends fs)
{
strcpy(name,fs.name);
strcpy(address,fs.address);
tel_number=fs.tel_number;
return *this;
}
friend ostream& operator<<(ostream &os,const friends& fs)
{
os<<\"friends name:\"<<fs.name<<\" \"<<\"friend address:\"<<fs.address
<<\" \"<<\"friend tel_number:\"<<fs.tel_number<<endl;
return os;
}
friend istream& operator>>(istream& ins,friends& fs)
{
cout<<\"friend's name:\";
ins>>fs.name;
cout<<\"friend's address:\";
ins>>fs.address;
cout<<\"friend's tel_number:\";
ins>>fs.tel_number;
return ins;
}
};
struct family_mem{
char name[20];
char description[100];
family_mem& operator=(const family_mem fm)
{
strcpy(name,fm.name);
strcpy(description,fm.description);
return *this;
}
friend ostream& operator<<(ostream &os,const family_mem& fm)
{
os<<\"family name:\"<<fm.name<<\" \"<<\"family description:\"<<fm.description<<endl;
return os;
}
};

struct stu{
long number;
char name[20];
int age;
BOOL sex;
char address[200];
stu& operator=(const stu s)
{
number=s.number;
strcpy(name,s.name);
age=s.age;
sex=s.sex;
strcpy(address,s.address);
return *this;
}
friend ostream& operator<<(ostream& os,const stu& s)
{
os<<\"student number:\"<<s.number<<endl
<<\"student name:\"<<s.name<<endl
<<\"student age:\"<<s.age<<endl
<<\"student sex:\"<<s.sex<<endl
<<\"student address:\"<<s.address<<endl;
return os;
}
};

class student{
stu data;
friends *p_friends;
family_mem *p_family;
int mem_counts;
int frds_counts;
public:
student();//要写个无参构造函数
// student(const student&s);//写个拷贝构造函数
// student& operator(const student&s);//写个赋值运算符
// student(stu a,friends * pfs,int s,family_mem * pfm,int m);
~student();
void show();
void AddFriends();
void AddFamilyMem();
/*再添加一些查詢删除修改等函數*/
family_mem father();
family_mem mather();
friends friend_find(const char *name);
};
student::~student()
{
delete p_friends;
delete p_family;
}
student::student(stu a,friends * pfs,int s,family_mem * pfm,int m)
{
data=a;
mem_counts=m;
frds_counts=s;
p_friends=new friends[frds_counts];
p_family=new family_mem[mem_counts];
for(int i=0;i<mem_counts;i++)
{
*(p_family+i)=*(pfm+i);
}
for(int i=0;i<frds_counts;i++)
{
*(p_friends+i)=*(pfs+i);
}
}

family_mem student::father()
{
for(int i=0;i<mem_counts;i++)
{
if(!strcmp((p_family+i)->description,\"父亲\") || !strcmp((p_family+i)->description,\"father\"))
return *(p_family+i);
}
family_mem fm;
memset(&fm,0,sizeof(fm));
return fm;
}
family_mem student::mather()
{
for(int i=0;i<mem_counts;i++)
{
if(!strcmp((p_family+i)->description,\"母亲\") || !strcmp((p_family+i)->description,\"mather\"))
return *(p_family+i);
}
family_mem fm;
memset(&fm,0,sizeof(fm));
return fm;
}
friends student::friend_find(const char *name)
{
for(int i=0;i<frds_counts;i++)
{
if(!strcmp((p_friends+i)->name,name))
return *(p_friends+i);
}
friends fs;
memset(&fs,0,sizeof(fs));
return fs;
}
void AddFriends()
{
friends fs;
cin>>fs;
//把这个f增加到列表,其他的增加和修改也大相徑庭
//爲了方便增加和修改,删除元素,用數組不好解决,用鏈表可以方便解决這個問題,我就不多說了
}

void AddFamilyMem()
{
// family_mem fm;
// cin>>fm;
//把这个f增加到列表,其他的增加和修改也大相徑庭
//爲了方便增加和修改,删除元素,用數組不好解决,用鏈表可以方便解决這個問題,我就不多說了
}


void student::show(){
cout<<data;
for (int i=0;i<frds_counts;i++)
cout<<*(p_friends+i);
for (int j=0;j<mem_counts;j++)
cout<<*(p_family+j);
}

//。。其他的自己写吧?

[此贴子已经被作者于2006-11-25 9:31:13编辑过]


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-25 09:25
yuqu
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-14
收藏
得分:0 
  本人是新生  谢谢哦
2006-11-25 21:52
yuqu
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-11-14
收藏
得分:0 
还是不行啊  
2006-11-28 16:43
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

呵呵,我只是说了框架,至于程序的关键部分,也就是删除和修改,那些都是应该你去想如何实现的啊


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-29 10:00
快速回复:一道题目的疑惑???
数据加载中...
 
   



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

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