时间类

/*
* 作    者: 霍雨佳
* 完成日期:2014 年3月12日
* 版 本 号:v1.0
* 问题描述:玩日期。
* 样例输入:
* 样例输出:
* 问题分析:玩日期完成以下要求:
           请在原类基础上,增加下列成员函数,要求前三个在类内定义(将是内置成员函数),后三个在类内声明,类外定义。
           在main()数中增加适当的调用以展示扩充类定义后的功能。
           add_a_sec()  //增加1秒钟
           add_a_minute() //增加1分钟
           add_an_hour() //增加1小时
           add_seconds(int) //增加n秒钟
           add_minutes(int) //增加n分钟
           add_hours(int) //增加n小时
提示:(1)要考虑增加后超出取值范围的情形;(2)增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。
*/

#include <iostream>
using namespace std;
class Time
{
public:
    void set_time( );
    void show_time( );
    void add_a_sec()  //增加1秒钟
    {
        int h,m,s;
        s=sec;
        m=minute;
        h=hour;
        cout<<"增加1秒钟后时间为:"<<endl;
        if((s+1)<60)
        {
            s+=1;
        }
        else
        {
            s=s-60;
            if((m+1)<60)
            {
                m+=1;
            }
            else
            {
                m=m-60;
                if((h+1)<24)
                    h+=1;
                else
                {
                    h=h-24;
                    cout<<"第二天";
                }
            }
        }
        cout<<h<<":"<<m<<":"<<s<<endl;
    }
    void add_a_minute() //增加1分钟
    {
        int h,m,s;
        s=sec;
        m=minute;
        h=hour;
        cout<<"增加1分钟后时间为:"<<endl;
        if((m+1)<60)
        {
            m+=1;
        }
        else
        {
            m=m-60;
            if((h+1)<24)
                h+=1;
            else
            {
                h=h-24;
                cout<<"第二天";
            }
        }
        cout<<h<<":"<<m<<":"<<s<<endl;
    }
    void add_an_hour() //增加1小时
    {
        int h,m,s;
        s=sec;
        m=minute;
        h=hour;
        cout<<"增加1小时后时间为:"<<endl;
        if((h+1)<24)
            h+=1;
        else
        {
            h=h-24;
            cout<<"第二天";
        }
        cout<<h<<":"<<m<<":"<<s<<endl;
    }
    void add_seconds(); //增加n秒钟
    void add_minutes(); //增加n分钟
    void add_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)";
    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::add_seconds() //增加n秒钟
{
    int h,m,s,i,j,l,b,g=1;
    s=sec;
    m=minute;
    h=hour;
    cout<<"请输入要增加的秒数";
    cin>>b;
    s=s+b;
    cout<<"增加"<<b<<"秒钟后时间为:"<<endl;
    for(i=0; s>=60; i++)
    {
        if(s<60)
        {
            s+=1;
        }
        else
        {
            s=s-60;
            if((m+1)<60)
            {
                m+=1;
            }
            else
            {
                for(j=0; m>=60; j++)
                {
                    m=m-60;
                    if((h+1)<24)
                        h+=1;
                    else
                        for(l=0; h>=24; l++)
                        {
                            h=h-24;
                            g++;
                        }
                }
            }
        }
        if(g>1)
            cout<<"第"<<g<<"天";
        cout<<h<<":"<<m<<":"<<s<<endl;

    }
}
void Time::add_minutes() //增加n分钟
{
    int h,m,s,i,j,b,g=1;
    s=sec;
    m=minute;
    h=hour;
    cout<<"请输入要增加的分钟数";
    cin>>b;
    m=m+b;
    cout<<"增加"<<b<<"分钟后时间为:"<<endl;
    if(m<60)
    {
        m+=b;
    }
    else
    {
        for(i=1; m>=60; i++)
        {
            m=m-60;
            if((h+1)<24)
                h+=1;
            else
                for(j=0; h>=24; j++)
                {
                    h=h-24;
                    g++;
                }
        }
    }
    if(g>1)
        cout<<"第"<<g<<"天";
    cout<<h<<":"<<m<<":"<<s<<endl;
}
void Time::add_hours() //增加n小时
{
    int h,m,s,l,i=1;
    s=sec;
    m=minute;
    h=hour;
    cout<<"请输入要增加的小时";
    cin>>l;
    h=h+l;
    cout<<"增加"<<l<<"小时后时间为:"<<endl;
    if(h<24)
        h+=l;
    else
    {
        for(i=1; h>=24; i++)
        {
            h=h-24;
        }
    }
    if(i>1)
        cout<<"第"<<i<<"天";
    cout<<h<<":"<<m<<":"<<s<<endl;
}
int main( )
{
    Time t1;
    t1.set_time( );
    t1.add_a_sec();  //增加1秒钟
    t1.add_a_minute(); //增加1分钟
    t1.add_an_hour(); //增加1小时
    t1.add_seconds();//增加n秒钟
    t1.add_minutes(); //增加n分钟
    t1.add_hours(); //增加n小时
    return 0;
}


运行结果:

 

 

            其实题本身并不难,但需要注意许多小细节,唉唉~

                       我这马马虎虎的性格真是不行啊,老是有些小问题注意不到,奈何只能一遍遍的改~~~

                                向细心看齐……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值