/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2014 年 3月 10 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: 时间
*问题描述:打印一个正确的时间
*程序输出:时间
*问题分析:
*算法设计:
*/
#include<iostream>
#include<cstdlib>
using namespace std;
class Time
{
private:
int hour;
int minute;
int second;
public:
bool istime(int,int,int);
void settime();
void showtime();
void addasecond()
{
addseconds(1);
}
void addaminute()
{
addminutes(1);
}
void addahour()
{
addhours(1);
}
void addseconds(int);
void addminutes(int);
void addhours(int);
};
bool Time::istime(int h,int m,int s)
{
bool flag=true;
if(h<0||h>24||m<0||m>60||s<0||s>60)
{
flag=false;
}
return flag;
}
void Time::settime()
{
char a,b;
while(1)
{
cin>>hour>>a>>minute>>b>>second;
if(a!=':'||b!=':')
cout<<"格式错误,请重新输入:"<<endl;
else if(!istime(hour,minute,second))
cout<<"时间错误,请重新输入:"<<endl;
else
break;
}
}
void Time::showtime()
{
if(minute>10)
cout<<hour<<":"<<minute<<":"<<second<<endl;
else
cout<<hour<<":0"<<minute<<":"<<second<<endl;
}
void Time::addseconds(int s)
{
minute+=s/60;
while(minute>=60)
minute-=60;
hour+=s/3600;
while(hour>=24)
hour-=24;
second+=s%60;
}
void Time::addminutes(int m)
{
hour+=m/60;
while(hour>=24)
hour-=24;
minute+=m%60;
while(minute>=60)
minute-=60;
}
void Time::addhours(int h)
{
hour+=h%24;
while(hour>=24)
hour-=24;
}
int main()
{
Time T;
int chose,sec,min,hour;
cout<<"请输入时间(HH:MM:SS):"<<endl;
T.settime();
T.showtime();
while(1)
{
cout<<"请选择以下命令:"<<endl;
cout<<"1.增加1秒 2.增加1分"<<endl;
cout<<"3.增加1时 4.增加n秒"<<endl;
cout<<"5.增加n分 6.增加n时"<<endl;
cout<<"0.退出"<<endl;
cin>>chose;
switch(chose)
{
case 0:
exit(0);
case 1:
T.addasecond();
T.showtime();
break;
case 2:
T.addaminute();
T.showtime();
break;
case 3:
T.addahour();
T.showtime();
break;
case 4:
cout<<"请输入增加的秒数:"<<endl;
cin>>sec;
T.addseconds(sec);
T.showtime();
break;
case 5:
cout<<"请输入增加的分数:"<<endl;
cin>>min;
T.addminutes(min);
T.showtime();
break;
case 6:
cout<<"请输入增加的时数:"<<endl;
cin>>hour;
T.addhours(hour);
T.showtime();
break;
default:
cout<<"输入有误,请重新输入:"<<endl;
cin>>chose;
}
}
return 0;
}
运行结果:
心得体会: