六周 项目4 静态成员应用

来源:互联网 发布:mac重命名文件夹快捷键 编辑:程序博客网 时间:2024/05/06 15:59
#include<iostream>#include<cstdlib>using namespace std;class Time{public://Time(int=0,int=0,int=0);void setTime(int h=0,int m=0,int s=0);void is_Righttime();void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pmvoid style_time();void add_seconds(int); //增加n秒钟void add_minutes(int); //增加n分钟void add_hours(int); //增加n小时static void change24();  //改变静态成员is_24,在12和24时制之间转换static void changefrom0(); //改变静态成员from0,切换是否前导0private:static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pmstatic bool from0; //为true时,前导0,8:23:5显示为08:23:05int hour;int minute;int second;};bool Time::is_24=false;bool Time::from0=false;void Time::setTime(int h,int m,int s){hour=h;minute=m;second=s;}void Time::change24(){is_24=true;}void Time::changefrom0(){from0=true;}void Time::style_time(){int style;cout<<"请选择输出格式:"<<endl;cout<<"1.12小时制,无前导0   2.24小时制,无前导0"<<endl;cout<<"3.12小时制,有前导0   4.24小时制,有前导0"<<endl;cin>>style;switch(style){case 1:break;case 2:change24();break;case 3:changefrom0();break;case 4:change24();changefrom0();break;default:cout<<"输入有误,请重新输入:"<<endl;cin>>style;}}void Time::add_seconds(int s){    minute+=s/60;    while(minute>=60)minute-=60;hour+=1;    hour+=s/3600;    while(hour>=24)hour-=24;    second+=s%60;    if(second>59)    {        minute=minute+1;        second-=60;    }}void Time::add_minutes(int m){    hour+=m/60;    while(hour>=24)hour-=24;    minute+=m%60;    while(minute>=60)minute-=60;}void Time::add_hours(int h){    hour+=h%24;    while(hour>=24)hour-=24;}void Time::show_time(){bool time;if(!is_24&&!from0){if(hour>12){hour-=12;cout<<hour<<":"<<minute<<":"<<second<<"pm"<<endl;}elsecout<<hour<<":"<<minute<<":"<<second<<"am"<<endl;}else if(!is_24&&from0){if(hour>12){time=false;hour-=12;if(hour<10)cout<<"0"<<hour<<":";elsecout<<hour<<":";}else{time=true;cout<<hour<<":";}if(minute<10)cout<<"0"<<minute<<":";elsecout<<minute<<":";if(second<10){if(time)    cout<<"0"<<second<<"am"<<endl;elsecout<<"0"<<second<<"pm"<<endl;}else{if(time)    cout<<second<<"am"<<endl;elsecout<<second<<"pm"<<endl;}}else if(is_24&&!from0)cout<<hour<<":"<<minute<<":"<<second<<endl;else{if(hour<10)cout<<"0"<<hour<<":";elsecout<<hour<<":";if(minute<10)cout<<"0"<<minute<<":";elsecout<<minute<<":";if(second<10)cout<<"0"<<second<<endl;elsecout<<second<<endl;}}int main(){    int chose,sec,min,hour;Time T;    cout<<"请输入时间(HH:MM:SS):"<<endl;    T.is_Righttime();    while(1)    {        cout<<"请选择以下命令:"<<endl;        cout<<"1.增加n秒    2.增加n分 "<<endl;        cout<<"3.增加n时    0.退出    "<<endl;        cin>>chose;        switch(chose)        {        case 0:            exit(0);        case 1:            cout<<"请输入增加的秒数:"<<endl;            cin>>sec;            T.add_seconds(sec);            T.style_time();            T.show_time();            break;        case 2:            cout<<"请输入增加的分数:"<<endl;            cin>>min;            T.add_minutes(min);            T.style_time();            T.show_time();            break;        case 3:            cout<<"请输入增加的时数:"<<endl;            cin>>hour;            T.add_hours(hour);            T.style_time();            T.show_time();            break;        default:            cout<<"输入有误,请重新输入:"<<endl;            cin>>chose;        }    }return 0;}void Time::is_Righttime(){int hour,minute,second;char a,b;while(1){cin>>hour>>a>>minute>>b>>second;if(a!=':'||b!=':')cout<<"格式错误,请重新输入:"<<endl;else if(hour<0||hour>24||minute<0||minute>60||second<0||second>60)cout<<"时间有误,请重新输入:"<<endl;elsesetTime(hour,minute,second);break;}}

0 0