设有类 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;
}