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

请帮忙把下面的问题做一下,谢谢.
要求把Staff中的char name[10];改为char *name;,并把Staff需要修改的部份做相应的修改,使得整个程序仍能完成原有的功能(用动态空间存储姓名数据,设计析构函数释放姓名数据所占用的动态空间)


#include<iomanip.h>
#include<string.h>

class Date{
short year;
short month;
short day;
public:
Date();
Date(int y,int m,int d):year(y),month(m),day(d){}
void show(){cout<<year<<'.'<<month<<'.'<<day;}
};

class Staff{
char staffNo[5];
char name[10];
char sex;
Date birthDay;
public:Staff();
Staff(const char st_no[],const char st_name[],
char st_sex,short year,short month,short day)
:birthDay( year,month,day),sex(st_sex)
{
strncpy(staffNo,st_no,5);
strncpy(name,st_name,10);
}
void show()
{
cout<<endl<<setw(5)<<staffNo
<<setw(10)<<name
<<setw(3)<<sex;
birthDay.show();
}
};

Date::Date(){ }

Staff::Staff(){}

void main()
{ short year;
short month;
short day;
char staffNo[5];
char name[10];
char sex;
Staff s[4];

for(int i=0;i<4;i++)
{
cout<<endl<<"请输入年月日:";
cin>>year>>month>>day;
cin.ignore(80,'\n');

cout.setf(ios::left,ios::adjustfield);
cout<<endl<<"请输入职工号:";
cin.getline(staffNo,5);
cin.ignore(80,'\n');

cout<<endl<<"请输入姓名:";
cin.getline(name,10);
cin.ignore(80,'\n');

cout<<endl<<"请输入性别(M/F):";
cin>>sex;
cin.ignore(80,'\n');
Staff ss(staffNo,name,sex,year,month,day);
s[i]=ss;

}
for(i=0;i<4;i++)
s[i].show();
cin.get();
}

搜索更多相关主题的帖子: 作业 
2006-12-18 15:04
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
Staff(const char st_no[],char *st_name,
char st_sex,short year,short month,short day)
:birthDay( year,month,day),sex(st_sex)
{
strncpy(staffNo,st_no,5);
name = new char[sizeof(st_name)];
strncpy(name,st_name,sizeof(st_name));
}

天行健,君子以自强不息!!QQ:68660681
2006-12-18 18:54
z000ch
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-9
收藏
得分:0 

再问一下,该题要求有一个析构函数,应怎样设计?

2006-12-19 14:35
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
delete [] name;
name = NULL;

天行健,君子以自强不息!!QQ:68660681
2006-12-19 15:53
z000ch
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-9
收藏
得分:0 
能不能给个完整的,我怎么还是调试不能通过?不好意思,是不是我的要求太多了?
2006-12-20 15:30
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

#include<iomanip.h>
#include<string.h>

class Date{
short year;
short month;
short day;
public:
Date();
Date(int y,int m,int d):year(y),month(m),day(d){}
void show(){cout<<year<<'.'<<month<<'.'<<day;}
};

class Staff{
char staffNo[5];
char *name;
char sex;
Date birthDay;
public:Staff();
Staff(const char st_no[],char *st_name,
char st_sex,short year,short month,short day)
:birthDay( year,month,day),sex(st_sex)
{
strncpy(staffNo,st_no,5);
name = new char[sizeof(st_name)];
strncpy(name,st_name,sizeof(st_name));

}
void show()
{
cout<<endl<<setw(5)<<staffNo
<<setw(10)<<name
<<setw(3)<<sex;
birthDay.show();
}
Staff::~Staff();
};

Date::Date(){ }

Staff::Staff(){name = NULL;}

Staff::~Staff()
{
delete [] name;
name = NULL;
}

void main()
{ short year;
short month;
short day;
char staffNo[5];
char name[10];
char sex;
Staff s[4];

for(int i=0;i<4;i++)
{
cout<<endl<<"ÇëÊäÈëÄêÔÂÈÕ:";
cin>>year>>month>>day;
cin.ignore(80,'\n');

cout.setf(ios::left,ios::adjustfield);
cout<<endl<<"ÇëÊäÈëÖ°¹¤ºÅ:";
cin.getline(staffNo,5);
cin.ignore(80,'\n');

cout<<endl<<"ÇëÊäÈëÐÕÃû:";
cin.getline(name,10);
cin.ignore(80,'\n');

cout<<endl<<"ÇëÊäÈëÐÔ±ð£¨M/F£©:";
cin>>sex;
cin.ignore(80,'\n');
Staff ss(staffNo,name,sex,year,month,day);
s[i]=ss;

}
for(i=0;i<4;i++)
s[i].show();
cin.get();
}

[此贴子已经被作者于2006-12-21 12:54:58编辑过]


天行健,君子以自强不息!!QQ:68660681
2006-12-21 12:53
z000ch
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-9
收藏
得分:0 
还是不行,不能正常显示姓名,如果不调用析构函数,就能正常显示,可题目偏要调用析构函数,真愁人.
2006-12-24 09:29
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 
你这样试试。。

Staff::~Staff()
{
if ( NULL != name ) delete [] name;
name = NULL;
}

天行健,君子以自强不息!!QQ:68660681
2006-12-24 11:51
z000ch
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-9
收藏
得分:0 
还是不行.真是郁闷!
2007-01-03 08:17
快速回复:[求助]作业求助
数据加载中...
 
   



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

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