int max[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //class Date; class Time {
public: int hour; int minute; int sec; Time(); Time(int h,int m,int s){hour=h;minute=m;sec=s;} void get_time(); //void show_time(Date &); int pd_time(int,int,int); };
class Date {
public: int year; int month; int day; Date(); Date(int y,int m, int d){year=y;month=m;day=d;} void get_date(); void show_date(); int pd_date(int,int,int); /*友元函数*/ //friend void Time::show_time(Date &); };
/*由基类Time派生,用来放计算结果几天几小时几分几秒的类*/ class Js:public Time {
public:
int tian; Js():Time(){tian=0;}
Js(int t,int h,int m,int s):Time(h,m,s){tian=t;} void get_js();
void show_js(){cout< public: Timedate():Date(),Time(){} Timedate(int y,int mon,int d,int h,int min,int s):Date(y,mon,d),Time(h,min,s){} void show_timedate(){printf(\"%04d-%02d-%02d__%02d:%02d:%02d\c);} Timedate operator + (Js a); Timedate operator - (Js b); Js operator - (Timedate td); }; /*时间的成员函数*/ Time::Time() { hour=0; minute=0; sec=0; } void Time::get_time() { int h,m,s; cout<<\"请输入时、分、秒:\"< while(!pd_time(h,m,s)) { cout<<\"输入有误,正确格式为:00:00:00-23:59:59。\"< /*void Time::show_time(Date &d) { printf(\"%04d-%02d-%02d\ printf(\"%02d:%02d:%02d\\n\}*/ int Time::pd_time(int h,int m,int s) /*判断时间*/ { if(h<=23&&m<=59&&s<=59)return 1; else return 0; } /*年月日的成员函数*/ Date::Date() { year=0; month=0; day=0; } void Date::get_date() { int y,x,z; cout<<\"请输入年、月、日:\"< while(!pd_date(y,x,z)) { cout<<\"请再一次输入年、月、日:\"< void Date::show_date() { cout< cout<<\"月份的格式输入有误,正确格式为:1-12。\"< cout<<\"日期的格式输入有误\"< else return 1; } //派生类Js的成员函数 void Js::get_js() { int x1,x2,x3,x4; cout<<\"请输入要计算的天数、时数、分钟数及秒数\"< /*派生类timedate的成员函数;重载运算符函数*/ Timedate Timedate::operator + (Js a) /*加法:一段时间后的日期是d*/ { Timedate td; td.sec=sec+a.sec; if(td.sec>=60){td.sec=td.sec-60;td.minute=td.minute+1;} td.minute=td.minute+minute+a.minute; if(td.minute>=60){td.minute=td.minute-60;td.hour=td.hour+1;} td.hour=td.hour+hour+a.hour; if(td.hour>=24){td.hour=td.hour-24;td.day=td.day+1;} td.day=td.day+day+a.tian; td.month=month; td.year=year; if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; while(td.day>max[td.month]) { if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; td.day=td.day-max[td.month]; td.month++; if(td.month==13) { td.month=1; td.year++; } } return td; } Timedate Timedate::operator - (Js b) /*减法:一段时间前的日期是d*/ { Timedate td; td.sec=sec-b.sec; if(td.sec<0){td.sec=td.sec+60;td.minute=td.minute-1;} td.minute=td.minute+minute-b.minute; if(td.minute<=0){td.minute=td.minute+60;td.hour=td.hour-1;} td.hour=td.hour+hour-b.hour; if(td.hour<=0){td.hour=td.hour+24;td.day=td.day-1;} td.day=td.day+day-b.tian; td.month=month; td.year=year; while(td.day<=0) { td.month--; if(td.month==0) { td.month=12; td.year--; } if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; td.day=td.day+max[td.month]; } return td; } Js Timedate::operator - (Timedate td) /*减法:2个时间点相距多长时间*/ { Js j; int i; int a1=0;int a2=0;int a3=0; if(year if(year%4==0&&year%100!=0||year%400==0)max[2]=29;else max[2]=28; for(i=month+1;i<=12;i++) { a2=a2+max[i]; } a2=a2+(max[month]-day-1); if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; for(i=td.month-1;i>=1;i--) { a3=a3+max[i]; } a3=a3+td.day; j.sec=(60-sec)+td.sec; if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;} j.minute=j.minute+(60-minute-1)+td.minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-hour-1)+td.hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(year>td.year) { for(i=td.year+1;i if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; for(i=td.month+1;i<=12;i++) { a2=a2+max[i]; } a2=a2+(max[td.month]-td.day-1); if(year%4==0&&year%100!=0||year%400==0)max[2]=29;else max[2]=28; for(i=month-1;i>=1;i--) { a3=a3+max[i]; } a3=a3+day; j.sec=(60-td.sec)+sec; if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;} j.minute=j.minute+(60-td.minute-1)+minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-td.hour-1)+hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(year==td.year) { while(year%4==0&&year%100!=0||year%400==0) { max[2]=29; } if(month j.minute=j.minute+(60-minute-1)+td.minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-hour-1)+td.hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(month>td.month) { for(i=td.month+1;i j.minute=j.minute+(60-td.minute-1)+minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-td.hour-1)+hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(month==td.month) { if(day if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;} j.minute=j.minute+(60-minute-1)+td.minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-hour-1)+td.hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(day>td.day) { a3=day-td.day-1; j.sec=(60-td.sec)+sec; if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;} j.minute=j.minute+(60-td.minute-1)+minute; if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;} j.hour=j.hour+(24-td.hour-1)+hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(day==td.day) { if(hour>td.hour) { j.sec=sec-td.sec; if(j.sec<0){j.sec=j.sec+60;j.minute=j.minute-1;} j.minute=j.minute+minute-td.minute; if(j.minute<0){j.minute=j.minute+60;j.hour=j.hour-1;} j.hour=j.hour+hour-td.hour; } if(hour { j.sec=sec-td.sec; if(j.sec<0){j.sec=j.sec+60;j.minute=j.minute-1;} j.minute=j.minute+minute-td.minute; } if(minute j.tian=j.tian+a1+a2+a3; return j; } /*主函数*/ int main() { Js j1,j2; Timedate td1,td2,tda,tdb; cout<<\"1、计算某个时间点加上一段时间后是什么时候;\"< 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务