第三周任务3:时间类

来源:互联网 发布:世纪通信软件 编辑:程序博客网 时间:2024/04/30 08:36
/** Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作    者:李慧慧* 完成日期:2013年 3月19日 * 版 本 号:v1.0 * 输入描述: 在类声明中声明成员函数* 问题描述:略* 程序输出:改动后的时间* 算法设计:*/#include <iostream>using namespace std;class Time{public:inline void add_a_sec();//增加1秒钟inline void add_a_minute();//增加1分钟inline void add_an_hour();//增加1小时void add_seconds(int);//增加n秒钟void add_minutes(int);//增加n分钟void add_hours(int);//增加n小时void set_time( );   void show_time( );  private: bool is_time(int, int, int);int hour;int minute;int sec;};void Time::set_time( ) {char c1,c2;cout<<"请输入时间(格式hh:mm:ss)"<<endl;while(1){cin>>hour>>c1>>minute>>c2>>sec;if(c1!=':'||c2!=':')cout<<"格式不正确,请重新输入"<<endl;else if (!is_time(hour,minute,sec))cout<<"时间非法,请重新输入"<<endl;else break;}}void Time::show_time( )      {cout<<hour<<":"<<minute<<":"<<sec<<endl;}bool Time::is_time(int h,int m, int s){if (h<0 ||h>24 || m<0 ||m>60 || s<0 ||s>60)return false;return true;}//增加1秒钟inline void Time::add_a_sec(){++sec;if(sec==60)sec=0;     add_a_minute();}//增加1分钟inline void Time::add_a_minute(){++minute;if(minute==60){        minute=0;    add_an_hour();}   }//增加1小时inline void Time::add_an_hour(){++hour;if(hour==24)hour=0;}//增加n秒钟void Time::add_seconds(int n){sec=sec+n;if(sec>59){add_minutes(sec/60);    sec%=60;}}//增加n分钟void Time::add_minutes(int n){minute=minute+n;if(minute>59){add_hours(minute/60);    minute%=60;}}//增加n小时void Time::add_hours(int n){hour=hour+n;if(hour>23)hour%=24;}int main( ){Time t1;  Time &t2=t1;t1.set_time(); cout<<"现在的时间是:"<<endl;t2.show_time();    t1.add_a_sec();cout<<"增加1秒钟后:";t2.show_time();t1.add_a_minute();cout<<"增加1分钟后:";t2.show_time();t1.add_an_hour();cout<<"增加1小时后:";t2.show_time();t1.add_seconds(45);cout<<"增加45秒钟后:";t2.show_time();t1.add_minutes(69);cout<<"增加69分钟后:";t2.show_time();t1.add_hours(89);cout<<"增加89小时后:";t2.show_time();return 0;}


运行结果: