您的位置:首页 > 其它

第六周项目四——静态成员应用

2014-04-07 10:10 399 查看
#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 pm
void 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,切换是否前导0
private:
static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm
static bool from0; //为true时,前导0,8:23:5显示为08:23:05
int 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;
}
else
cout<<hour<<":"<<minute<<":"<<second<<"am"<<endl;
}
else if(!is_24&&from0)
{
if(hour>12)
{
time=false;
hour-=12;
if(hour<10)
cout<<"0"<<hour<<":";
else
cout<<hour<<":";
}
else
{
time=true;
cout<<hour<<":";
}
if(minute<10)
cout<<"0"<<minute<<":";
else
cout<<minute<<":";
if(second<10)
{
if(time)
cout<<"0"<<second<<"am"<<endl;
else
cout<<"0"<<second<<"pm"<<endl;
}
else
{
if(time)
cout<<second<<"am"<<endl;
else
cout<<second<<"pm"<<endl;
}

}
else if(is_24&&!from0)
cout<<hour<<":"<<minute<<":"<<second<<endl;
else
{
if(hour<10)
cout<<"0"<<hour<<":";
else
cout<<hour<<":";
if(minute<10)
cout<<"0"<<minute<<":";
else
cout<<minute<<":";
if(second<10)
cout<<"0"<<second<<endl;
else
cout<<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;
else
setTime(hour,minute,second);
break;
}
}


/*好长的程序啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: