类成员,类成员的构造(冒号语法)02(C++)

设有类 CTime 和 CDate 分别用于描述时间和日期,另外有 CDateTime 类描日期和时间,请为三个类给出具体的实
现代码,并在 main 函数中测试。
#include <iostream>
#include <cmath>
using namespace std;
class CTime
{
int m_hour,m_mintue,m_second;
public:
CTime(int hour=0,int minute=0,int second=0);
//如果时间合法,则赋值,否则赋值 0 时 0 分 0 秒
int SetTime(int hour=0,int minute=0,int second=0);
//如果时间合法,则赋值并返回 1,否则不赋值,并返回 0
int getHour();
int getMinute();
int getSecond();
void ShowTime(bool flag);
//flag 为 True 则以 24 小时制显示时间,否则以 AM PM 的方式显示
//自己考虑是否需要添加其他成员函数
};
class CDate
{
int m_year,m_month,m_day;
public:
CDate(int year=2000,int month=1,int day=1);
//如果日期合法,则赋值,否则赋值 2000 年 1 月 1 日
int SetDate(int year=2000,int month=1,int day=1);
//如果日期合法,则赋值并返回 1,否则不赋值,并返回 0
int GetYear();
int GetMonth();
int GetDay();
void ShowDate(bool flag);
//flag 为 TRUE,则以中文的方式显示日期,否则以 MM/DD/YYYY 的方式显示日期
//自己考虑是否需要添加其他成员函数
};
class CDateTime
{
CTime m_time;
CDate m_date;
public:
//添加必要的构造函数
//int SetDateTime(...); 自己设计参数,考虑该函数的返回值加以表示全部正确、日期不对、时间不对等情况
//void ShowDateTime(...); 自己设计参数,考虑可以中文日期和西文日期格式,以及 24 小时和 AM PM 都可以控制
//添加自己认为必要的其他成员函数
};
在主函数中验证上述类的功能,要求的主函数如下所示,不允许进行修改:
void main()
{
CDateTime d1(2014, 5, 2, 27, 12, 5);
d1.ShowDateTime(false, true); //第1个参数表示以英文方式显示日期, 第2个参数表示以24小时制方式显示时间
CDateTime d2;
d2.ShowDateTime(true, false); //第1个参数表示以中文方式显示日期, 第2个参数表示以AM PM的方式显示时间
int iStatus;
iStatus=d2.SetDateTime(2014, 5, 2, 21, 55, 5);
switch(iStatus)
{
case 1:
cout<<"日期和时间数据设置正确!"<<endl;
break;
case -1:
cout<<"日期数据设置不正确!"<<endl;
break;
case -2:
cout<<"时间数据设置不正确!"<<endl;
break;
}
d2.ShowDateTime(false, false); //第1个参数表示以英文方式显示日期, 第2个参数表示以AM PM的方式显示时间
cout<<"月="<<d2.GetMonth()<<endl; //认真考虑一下如何实现此操作?
cout<<"分钟="<<d2.GetMinute()<<endl; //认真考虑一下如何实现此操作?
}
 

/*=======================================================================================================
*学号:
*作业:E17
*功能:设有类CTime 和CDate 分别用于描述时间和日期,另外有CDateTime 类描日期和时间,请为三个类给出具体的实
       现代码,并在main 函数中测试。
*作者:
*日期:2016.5.16
*=======================================================================================================*/

#include<iostream>
#include<cmath>

using namespace std;

class CTime
{
	int m_hour,m_minute,m_second;
public:
	//如果时间合法,则赋值,否则赋值为0时0分0秒
	CTime(int hour=0,int minute=0,int second=0);
	//如果时间合法,则赋值并返回1,否则不赋值,并返回0
	int SetTime(int hour=0,int minute=0,int second=0);
	int getHour();
	int getMinute();
	int getSecond();
	//flag为True则以24小时制显示时间,否则以AM PM的方式显示
	//自己考虑是否需要添加其他成员函数
	void ShowTime(bool flag);
};

CTime::CTime(int hour,int minute,int second)                                  //如果时间合法,则赋值,否则赋值为0时0分0秒   
{
	if(hour>=0&&hour<=24&&minute>=0&&minute<=60&&second>=0&&second<=60)
	{
		m_hour=hour;
	    m_minute=minute;
	    m_second=second;
	}
	else
	{
		m_hour=0;
	    m_minute=0;
	    m_second=0;
	}
}

int CTime::SetTime(int hour,int minute,int second)                              //如果时间合法,则赋值并返回1,否则不赋值,并返回0
{
	if(hour>=0&&hour<=24&&minute>=0&&minute<=60&&second>=0&&second<=60)
	{
		m_hour=hour;
	    m_minute=minute;
	    m_second=second;
		return 1;
	}
	else
	{
		return 0;
	}
}

int CTime::getHour()                  //获取m_hour的值
{
	return m_hour;
}

int CTime::getMinute()               //获取m_minute的值
{
	return m_minute;
}

int CTime::getSecond()              //获取m_second的值
{
	return m_second;
}

void CTime::ShowTime(bool flag)                                            //根据日期的具体情况来确定选择何种方式来输出
{
	if(flag==true)
	{
		cout<<"时间为:"<<m_hour<<":"<<m_minute<<":"<<m_second<<endl;
	}
	else
	{
		if(m_hour>12)
		{
			cout<<"时间为:"<<m_hour-12<<":"<<m_minute<<":"<<m_second<<"pm"<<endl;
		}
		else
		{
			cout<<"时间为:"<<m_hour<<":"<<m_minute<<":"<<m_second<<"am"<<endl;
		}
	}
}

class CDate
{
	int m_year,m_month,m_day;
public:
	//如果日期合法,则赋值,否则赋值2000 年1 月1 日
	CDate(int year=2000,int month=1,int day=1);
	//如果日期合法,则赋值并返回1,否则不赋值,并返回0
	int SetDate(int year=2000,int month=1,int day=1);
	int GetYear();
	int GetMonth();
	int GetDay();
	//flag 为TRUE,则以中文的方式显示日期,否则以MM/DD/YYYY 的方式显示日期
    //自己考虑是否需要添加其他成员函数
	void ShowDate(bool flag);
};

CDate::CDate(int year,int month,int day)              //如果日期合法,则赋值,否则赋值2000 年1 月1 日
{
	if(year>0&&month>0&&month<=12&&day>0&&day<=30)
	{
		m_year=year;
		m_month=month;
		m_day=day;
	}
	else
	{
		m_year=2000;
		m_month=1;
		m_day=1;
	}
}

int CDate::SetDate(int year,int month,int day)           //如果日期合法,则赋值并返回1,否则不赋值,并返回0
{
	if(year>0&&month>0&&month<=12&&day>0&&day<=30)
	{
		m_year=year;
		m_month=month;
		m_day=day;
		return 1;
	}
	else
	{
		return 0;
	}
}

int CDate::GetYear()            //获取m_year的值
{
	return m_year;
}

int CDate::GetMonth()            //获取m_month的值
{
	return m_month;
}

int CDate::GetDay()             //获取m_day的值
{
	return m_day;
}

void CDate::ShowDate(bool flag)                                                 //由flag的值来确定日期的输出情况
{
	if(flag==true)
	{
		cout<<"日期为:"<<m_year<<"年"<<m_month<<"月"<<m_day<<"日"<<"  ";
	}
	else
	{
		cout<<"日期为:"<<m_year<<"/"<<m_month<<"/"<<m_day<<"  ";
	}
}

class CDateTime
{
	CTime m_time;
	CDate m_date;
public:
	//添加必要的构造函数 
	CDateTime(){};                      //无参构造函数
	CDateTime(int year,int month,int day,int hour,int minute,int second):m_date(year,month,day),m_time(hour,minute,second){};    //构造函数重载
	//考虑该函数的返回值加以表示全部正确、日期不对、时间不对等情况
	int SetDateTime(int year,int month,int day,int hour,int minute,int second);
	//考虑可以中文日期和西文日期格式,以及24小时和AM PM都可以控制
	void ShowDateTime(bool flag1,bool flag2);
	//添加自己认为必要的其他成员函数
	int GetMonth()                     //获取月份
	{
		return m_date.GetMonth();
	}
	int GetMinute()                   //获取分钟
	{
		return m_time.getMinute();
	}
};

int CDateTime::SetDateTime(int year,int month,int day,int hour,int minute,int second)   //判断日期时间是否设置正确
{
	if(hour>=0&&hour<=24&&minute>=0&&minute<=60&&second>=0&&second<=60&&year>0&&month>0&&month<=12&&day>0&&day<=30)  
	{
		m_date.SetDate(year,month,day);
		m_time.SetTime(hour,minute,second);
		return 1;
	}
	else if(!(year>0&&month>0&&month<=12&&day>0&&day<=30))             //日期设置不正确
	{
		return -1;
	}
	else if(!(hour>=0&&hour<=24&&minute>=0&&minute<=60&&second>=0&&second<=60))   //时间设置不正确
	{
		return -2;
	}
}

void CDateTime::ShowDateTime(bool flag1,bool flag2)                     //考虑可以中文日期和西文日期格式,以及24小时和AM PM都可以控制
{
	m_date.ShowDate(flag1);
	m_time.ShowTime(flag2);
}

//在主函数中测试其功能,主函数不允许修改
void main()
{
	CDateTime d1(2014,5,2,27,12,5);
	d1.ShowDateTime(false, true);  //第1个参数表示以英文方式显示日期, 第2个参数表示以24小时制方式显示时间

	CDateTime d2;
	d2.ShowDateTime(true, false);  //第1个参数表示以中文方式显示日期, 第2个参数表示以AM PM的方式显示时间
	
	int iStatus;
	iStatus=d2.SetDateTime(2014,5,2,21,55,5);
	switch(iStatus)
	{
	case 1:
		cout<<"日期和时间设置正确!"<<endl;
		break;
	case -1:
		cout<<"日期数据设置不正确!"<<endl;
		break;
	case -2:
		cout<<"时间数据设置不正确!"<<endl;
		break;
	}
	d2.ShowDateTime(false, false);   //第1个参数表示以英文方式显示日期, 第2个参数表示以AM PM的方式显示时间

	cout<<"月="<<d2.GetMonth()<<endl;
	cout<<"分钟="<<d2.GetMinute()<<endl;
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/86576743
今日推荐