/*设计一个日期类Date,包括年、月、日等私有成员。要求实现日期的基本运算,例如某日期加上天数或减去天数

,两日期相减的天数等。

实现要求:

实现运算符加与减的重载

设计一个日期类Date,包括年、月、日等私有成员。要求实现日期的基本运算,例如某日期加上天数或减去天数,

两日期相减的天数等。

实现要求:

实现运算符加与减的重载

设计一个时间类,要求能够在时间类上实行以分钟为单位的加减运算,同时当分钟增或减的变化应体现日期变化。

如:2012年11月28日12:10PM 增加12小时后,应变为2012年11月29日00:10AM

*/

#include

#include

using namespace std;

bool prime(int year);

class Date

{

protected:

int year;

int mouth;

int day;

int mouths[12];

public:

Date();

void setDate();

void output();

Date operator +(Date D);

int operator -(Date D);

Date operator +(int D);

Date operator -(int D);

};

class Time  :public Date

{

int hour;

int minute;

public :

void setTime();

void output();

Time operator + (int T);

Time operator - (int T);

Time daojishi ();

};

void Time::setTime()

{

cout<

cin>>year>>mouth>>day;

cin>>hour>>minute;

}

void Time::output()

{

cout<

}

Time Time::operator + (int T)                      //时间加上分钟数

{

Time TT;

int num1=0,sum0=0,sum1=0;

num1=T/60;   //num1小时数

T=T%60;

sum1=T+minute;

if(sum1>=60)

{

hour++;

sum1=sum1-60;

}

sum0=hour+num1;

while(sum0>=24)      //想家小时>24小时,则天数加1

{

day++;

sum0=sum0-24;

}

while(day>mouths[(mouth-1)%12])     //如果天数加起来大于该月的天数,则天数减去该月的天数,月份加1

{

if(prime(year+mouth/12))

mouths[1]=29;

else

mouths[1]=28;

day=day-mouths[mouth-1];

mouth++;

}

while(mouth>=12)     //加起来的月份大于12,则月份减去12,年份加1

{

year++;

mouth=mouth-12;

}

TT.hour=sum0;

TT.minute=sum1;

TT.day=day;

TT.mouth=mouth;

TT.year=year;

return TT;

}

Time Time::operator - (int T)     //时间减去分钟数

{

Time TT;

int num1=0,sum0=0,sum1=0;

sum0=hour*60+minute;

if(sum0>=T)

{

num1=T/60;

T=sum0-T;

T=T%60;

sum0=hour-num1;

TT.day=day;

TT.mouth=mouth;

TT.year=year;

TT.hour=sum0;

TT.minute=T;

return TT;

}

else

{

while(sum0

{

day--;

sum0=sum0+24*60;

}

sum0=sum0-T;     //剩余总分钟数

T=sum0/60;        //剩余小时数

sum0=sum0%60;     //剩余分钟数

while(day<=0)

{

if(prime(year+mouth/12))

mouths[1]=29;

else

mouths[1]=28;

mouth--;

day=day+mouths[(mouth-1+12)%12];

}

while(mouth<1)

{

year--;

mouth=mouth+12;

}

TT.day=day;

TT.mouth=mouth;

TT.year=year;

TT.hour=T;

TT.minute=sum0;

}

return TT;

}

Time Time::daojishi()         //倒计时

{

Time T1,T2,TT;Date D1,D2;

int num0=0,num1=0,num2=0,num_day=0;

T1.setTime();                //当前时间

T2.setTime();                //未来时间

D1=T1;D2=T2;

num_day=D2-D1;

num0=T1.hour*60+T1.minute;      // 当前时间一天多出来的分钟数

num1=T2.hour*60+T2.minute;      //未来时间一天多出来的分钟数

if(num1>=num0)

{

num1=num1-num0;

}

else

{

num1=num1+24*60-num0;

num_day--;

}

hour=num1/60;         //num0小时数

minute=num1%60;         //多出来的分钟数

int i=60;

while(num_day!=0||hour!=0||minute!=0)

{

while(num_day>=0)

{

hour=23;

while(hour>=0)

{   minute=59;

while(minute>=0)

{     i=60;

while(i>0)

{

cout<

system("cls");

}

minute--;

}

hour--;

}

num_day--;

}

}

return TT;

}

void Date::setDate()

{

cin>>year>>mouth>>day;

}

void Date::output()

{

cout<

}

Date::Date()

{

for(int i=0;i<12;i++)

if(i==0||i==2||i==4||i==6||i==7||i==9||i==11)

mouths[i]=31;

else

mouths[i]=30;

mouths[1]=28;

}

Date Date::operator +(Date D)        //日期相加

{

Date DD;

int sum_day0=D.day,sum_day1=day,sum_day=0;

while(D.mouth--)

{

if(D.mouth!=0)

sum_day0=D.mouths[D.mouth-1]+sum_day0;

else

sum_day0=sum_day0;

}

while(mouth--)

{

if(mouth!=0)

sum_day1=sum_day1+mouths[mouth-1];

else

sum_day1=sum_day1;

}

sum_day=sum_day0+sum_day1;

if(prime(year+D.year))

{

if(sum_day>=366)

{

DD.year=D.year+year+1;

sum_day=sum_day-366;

}

else

DD.year=D.year+year;

}

else

{

if(sum_day>=365)

{

DD.year=D.year+year+1;

sum_day=sum_day-366;

}

else

DD.year=D.year+year;

}

if(prime(DD.year))

mouths[1]=29;

for(int i=0;sum_day>=mouths[i];i++)

{

sum_day=sum_day-mouths[i];

}

DD.mouth=i+1;

DD.day=sum_day;

return DD;

}

int Date::operator -(Date D)    //日期相减

{

Date DD;         //D被减日期

int sum_day0=D.day,sum_day1=day,sum_day=0;

int year0=D.year;

while(D.year

{

if(prime(D.year))

sum_day1=sum_day1+366;

else

sum_day1=sum_day1+365;

D.year++;

}

while(mouth--)   //减的日期

{

if(prime(year))

mouths[1]=29;

else

mouths[1]=28;

if(mouth!=0)

sum_day1=sum_day1+mouths[mouth-1];

else

sum_day1=sum_day1;

}

while(D.mouth--)   //被减日期

{

if(prime(year0))

D.mouths[1]=29;

else

D.mouths[1]=28;

if(D.mouth!=0)

sum_day0=D.mouths[D.mouth-1]+sum_day0;

else

sum_day0=sum_day0;

}

return sum_day1-sum_day0;

}

Date Date::operator +(int D)     //日期加天数

{

Date DD;

int sum_day0=day,year_day=0,sum_day=0;

while(mouth--)

{

if(prime(year))

mouths[1]=29;

if(mouth!=0)

sum_day0=sum_day0+mouths[mouth-1];

else

sum_day0=sum_day0;

}

sum_day=sum_day0+D;

if(prime(year))

year_day=366;

else

year_day=365;

while(sum_day>=year_day)

{

if(prime(year))

{

mouths[1]=29;

sum_day=sum_day-366;

}

else

{

mouths[1]=28;

sum_day=sum_day-365;

}

year++;

if(prime(year))

year_day=366;

else

year_day=365;

}

if(prime(year))

mouths[1]=29;

for(int i=0;sum_day>mouths[i];i++)

sum_day=sum_day-mouths[i];

DD.year=year;

DD.mouth=i+1;

DD.day=sum_day;

return DD;

}

Date Date::operator -(int D)     //日期减天数

{

Date DD;

int sum_day0=day,year_day=0,sum_day=0;

if(prime(year))

mouths[1]=29;

while(mouth--)

{

if(mouth!=0)

sum_day0=sum_day0+mouths[mouth-1];

else

sum_day0=sum_day0;

}

if(sum_day0>=D)

{

if(prime(year))

mouths[1]=29;

sum_day=sum_day0-D;

for(int i=0;sum_day>mouths[i];i++)

sum_day=sum_day-mouths[i];

DD.year=year;

DD.mouth=i+1;

DD.day=sum_day;

return DD;

}

else

{

while(sum_day0

{

if(prime(--year))

{

sum_day0=sum_day0+366;

}

else

sum_day0=sum_day0+365;

}

sum_day=sum_day0-D;

if(prime(year))

mouths[1]=29;

else

mouths[1]=28;

for(int i=0;sum_day>mouths[i];i++)

sum_day=sum_day-mouths[i];

DD.year=year;

DD.mouth=i+1;

DD.day=sum_day;

return DD;

}

}

bool prime(int year)

{

if((year%4==0&&year%100!=0)||year%400==0)

return true;

else

return false;

}

void show()

{

cout<

cout<

cout<

cout<

}

int main()

{

Date D1,D2,DD;

Time T1,T2,TT;

char ch='Y';

int d1,d2,t1,t2,i;

system("color 71");

cout<

cout<

cout<

cout<

cout<

while(ch=='Y')

{

cout<>i;

switch(i)

{

case 1:D1.setDate();D2.setDate();DD=D1+D2;DD.output();break;

case 2:D1.setDate();D2.setDate();d2=D1-D2;cout<

case 3:D1.setDate();cout<>d1;DD=D1+d1;DD.output();break;

case 4:D1.setDate();cout<>d2;DD=D1-d2;DD.output();break;

case 5:T1.setTime();cout<>t1;TT=T1+t1;TT.output();break;

case 6:T1.setTime();cout<>t2;TT=T1-t2;TT.output();break;

case 7:system("cls");show();break;

case 8:ch='N';break;

case 9:T1.daojishi();break;

}

cout<

}

return 0;

}

/*

1

2000 1 20

2000 1 20

2

2012 11 28

2000 1 20

2012 12 12

2011 11 11

2012 12 31 23 50

310

2013 1 1 5 0

310

*/

python设计一个date类数据成员有年月日_设计一个日期类Date,包括年、月、日等私有成员。要求实现日期的基本运算,例如某日期加上天数或减去天数...相关推荐

  1. java定义一个日期类 包括年 月 日_【说明】 设计一个日期类Date包括年、月、日等私有数据成员。要求实现日期..._考试资料网...

    填空题[说明] 设计一个日期类Date包括年.月.日等私有数据成员.要求实现日期的基本运算,如某日期加上天数.某日期减去天数.两日期相差的天数等. 在Date类中设计如下重载运算符函数: Date o ...

  2. (C++)设计一个日期类Date,包括年、月、日等私有数据成员。要求实现日期的基本运算,包括某日期加上指定天数、某日期减去指定天数、两个日期相差的天数等。

    C++面向对象程序设计课后作业第239页第5题 题目要求:设计一个日期类Date,包括年.月.日等私有数据成员.要求实现日期的基本运算,包括某日期加上指定天数.某日期减去指定天数.两个日期相差的天数等 ...

  3. 设计一个日期类Date

    //用C++++设计一个日期类Date,该类用于表示日期值(年.月.日). //要求除了能够通过相应的成员函数设置和获取日期值外,还能够实现将日期加一天的操作. #include<iostrea ...

  4. 设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径、area( )用于计算圆的面积; (2)定义一个桌子类table,内有私有数据h

    1.(1)设计一个圆类(circle),内有私有成员radius代表半径, 函数get_radius( )用于获得半径.area( )用于计算圆的面积: (2)定义一个桌子类table,内有私有数据h ...

  5. java日期减去天数得日期_Java日期添加天数,减去天数,日历

    java日期减去天数得日期 Sometimes while working on Java Date, we need to add or subtract some days from it. He ...

  6. java定义一个日期类 包括年 月 日_定义一个日期类:包括年、月、日三个成员变量,显示日期的方法...

    /*定义一个日期类:包括年.月.日三个成员变量,显示日期的方法 * 提供构造方法:定义无参构造方法,和有参构造方法 */ 代码如下: public class Demo { public static ...

  7. 日期类Date控制台应用程序设计C#

    日期类Date控制台应用程序设计 小咸鱼终于又准备敲代码辽呜呜,什么王者荣耀,耽误我学习hhh 实验要求 实验要求:写出类 Date 的定义代码,含有如图所示的 3 个字段及 4 个方法. 实验目的 ...

  8. 新手小白学JAVA 日期类Date SimpleDateFormat Calendar

    1. Date日期类 类 Date 表示一个特定的瞬间,精确到毫秒 1.1 Date的构造函数 Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒) Date(long date) ...

  9. 《Python:编程:从入门到实践》学习笔记_第9章 类

    第9章 类 根据类来创建对象被称为实例化. 9.1 创建和使用类 使用类几乎可以模拟任何东西. 9.1.1 创建 Dog 类 class Dog(): """一次模拟小狗 ...

最新文章

  1. 又一壮举!GPT-3首次完成剧本创作,AI解决创造性问题的能力正迅速提升
  2. jekyll静态博客提升访问速度:内嵌CSS,异步加载js,压缩HTML
  3. 解决IIS中HTTP/1.1 500 Server Error错误的方法
  4. 9篇小白都能懂系列博客学完MySQL基础
  5. VTK:将点转换为字形用法实战
  6. jqgrid学习(1)
  7. python快递代取系统_代取快递的变现方式,校园跑腿的经营范围有多大?
  8. mysql导出(导入)数据库window平台
  9. WPF——自动关闭无模式窗口
  10. Jmeter如何在大并发测试下,让登录或者后续接口只执行一次?
  11. 为什么 Web 前端开发不抛弃 HTML 和 CSS,用纯 JavaScript 开发?
  12. 高中电子技术——电子元器件的识别
  13. C++ #pragma once用法总结
  14. 文件转为二进制流保存在数据库
  15. centos7 Zookeeper集群部署
  16. 流量卡物联网卡管理平台源码|PHP管理系统源码 成品可商用系统
  17. 服务器文件备份到本地方法,Windows服务器文件备份到本地的方法、Windows服务器数据备份方案...
  18. 2020年7月最新阿里云服务器优惠卷哪里领?
  19. 【手把手带你Godot游戏开发】FlappyBird:5.1 无尽水管子滚滚来(一)
  20. 云联惠案到底说明了什么?

热门文章

  1. Elasticsearch(三) Python 使用 elasticsearch 的基本操作
  2. java毕业生设计医用物品管理系统计算机源码+系统+mysql+调试部署+lw
  3. [激光原理与应用-21]:《激光原理与技术》-7- 激光技术大汇总与总体概述
  4. 解决 Maven工程运行报错Failed to clean project: Failed to delete
  5. Django解决css样式失效问题最终方法
  6. Noip前的大抱佛脚----赛前任务
  7. LeetCode刷题(43)~汉明距离【异或+布赖恩·克尼根算法】
  8. css3从入门到熟练运用(三):炫目字体,多样背景和渐变颜色,神奇边框
  9. 让你低调的app脱颖而出
  10. vs2017或vs2019或vs2022安装中Microsoft.VisualStudio.MinShell.Msi出错的问题