第三周项目3时间类

/*
 
*Copyright (c)2013,烟台大学计算机学院
 
*All rights reserved.
 
*文件名称:test.cpp
 
*作者:孙玲倩
 
*完成日期:2014年3月16日 

*版本号:v1.0
 
*输入描述:无
 
*问题描述:时间类
 
*/

#include <iostream>
using namespace std;
void seconds(int );
class Time
{
public:
void set_time( );
void show_time( );
void a_sec()//增加一秒后
  {
      sec=sec+1;
    if(sec==60)
    {
        minute=minute+1;
        sec=0;
    }
      if(minute==60)
    {
        hour=hour+1;
        minute=0;
        sec=0;
    }
    if(hour==25)
      hour=1;
    cout<<hour<<":"<<minute<<":"<<sec;
 }
void a_minute() //增加一分钟后
{
    minute=minute+1;
    if(minute==60)
    {
        hour=hour+1;
        minute=0;
    }
    if(hour==25)
      hour=1;
    cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
void a_hour()  //增加一小时后
{
    hour=hour+1;
    if(hour==25)
     hour=1;
     cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
void seconds(); //增加n秒
void minutes();//增加n分钟
void hours();//增加n小时
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;
}
void Time::seconds()
{
    int z  ;  // 想增加的时间
    int i=1;
    int y;   // y作为一个差的形式出现。
    cout<<"请输入你想增加的秒数: ";
    cin>>z;
    y=60-sec;
    if(z>y)
     {
         z=z-y;
         minute++;
     }
     else
         z=sec+z;
    if(minute==60)
     {
         hour++;
         minute=0;
       if(hour==24)
         cout<<"到了第二天"<<endl;
     }
    for(;z>=60;)
    {
       z-=60;
       minute++;
       if(minute==60)
       {
           minute=0;
           hour++;
       }
        if(hour==24)
           {
               i++;
               hour=0;;
           }
    }
    cout<<"到了第"<<i<<"天。";
    cout<<"时间是:"<<hour<<":"<<minute<<":"<<z;
}
void Time::minutes()
{
    int z,y,i=1;
    cout<<"请输入你想增加的分钟: ";
    cin>>z;
    y=60-minute;
    if(z>=y)
    {
        z-=y;
        minute=0;
        hour++;
        if(hour==24)
        {
            hour=0;
        }

    }
    else
        z=minute+z;
    for(;z>60;)
    {
        z-=60;
        hour++;
        if(hour==24)
        {
            i++;
            hour=0;

        }
    }
    cout<<"到了第"<<i<<"天。";
    cout<<"时间是:"<<hour<<":"<<z<<":"<<sec;
}
void Time::hours()
{
    int z,y,i=1;
    cout<<"请输入你想增加的小时数: ";
    cin>>z;
    y=24-hour;
    if(z>=y)
    {
        z=z-y;
        i++;
    }
    if(z<y)
       z=hour+z;
    for(;z>=24;)
    {
        z=z-24;
        i++;
    }
       cout<<"第"<<i<<"天。";
       cout<<"时间是:"<<z<<":"<<minute<<":"<<sec;
}
int main( )
{
    int n;
	Time t1;
	t1.set_time( );
	t1.show_time( );
	cout<<"请选择想增加的时间:"<<endl;
	cout<<"1、时间增加一秒。"<<endl;
	cout<<"2、时间增加一分钟。"<<endl;
	cout<<"3、时间增加一小时。"<<endl;
	cout<<"4、时间增加n秒。"<<endl;
    cout<<"5、时间增加n分钟。"<<endl;
    cout<<"6、时间增加n小时。"<<endl;
	cout<<"请输入你想选的选项: "<<endl;
	cin>>n;
	 switch(n)
	 {
	     case 1:
	     cout<<"增加一秒钟后是:";
	       t1.a_sec();
	        break;
         case 2:
         cout<<"增加一分钟后是:";
           t1.a_minute();
            break;
         case 3:
         cout<<"增加一小时后是:";
           t1.a_hour();
           break;
         case 4:
            t1.seconds();
            break;
         case 5:
            t1.minutes();
            break;
         case 6:
            t1.hours();
            break;
	 }
	return 0;
}
心得体会:要考虑增加后超出取值范围的情形。需要考虑周全。用心写。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值