您的位置:首页 > 其它

《第四周实验报告任务2》

2012-03-13 19:55 302 查看
/* (程序头部注释开始)

* 程序的版权和版本声明部分

* Copyright (c) 2011, 烟台大学计算机学院学生

* All rights reserved.

* 文件名称: mytime

* 作 者: 刘江波

* 完成日期: 2011 年 03 月 13 日

* 版 本 号: v.03131

* 对任务及求解方法的描述部分

* 输入描述:

* 问题描述:

* 程序输出:

* 程序头部的注释结束

*/

mytime.h

class Time
{
public:

	void set_time(void);

    void show_time(void);

	inline void add_a_sec();

	inline void add_a_minute();

    inline void add_an_hour();

	void add_seconds(int);

	void add_minutes(int);

	void add_hours(int);

private:

	bool is_time(int,int,int);

  	int hour;

    int minute;

   	int sec;	
};

//注意:下面的内置成员函数(inline)要与类声明放在一个文件中。因为在编译时,需要将对该函数的调用替换为该函数的定义,所以不能在其他文件中独立定义  
  
inline void Time::add_a_sec()  //增加1秒钟  
{  
    ++sec;              //直接修改sec的值即可,sec是Time类的数据成员  
    if (sec>59)          //sec超出规定的范围,因为只是增加1秒,最多也就是向分钟进位1,所以增加1分钟。        
        add_a_minute(); //至于增加1分钟是否会引起小时变化,由add_a_minute()处理  
}  
  
inline void Time::add_a_minute() //增加1分钟  
{  
    ++minute;  
    if (minute>59)       //参见add_a_sec()中的注释  
        add_an_hour();  
}  
  
inline void Time::add_an_hour() //增加1小时  
{  
    ++hour;  
    if (hour>23)  
        hour=0;     //到第2天了  
      
}



main.cpp

#include<iostream>

#include"mytime.h"

using namespace std;

int main()
{  
	Time t1; //有了 #include"mytime.h" ,可以直接使用Time定义对象

    Time &t2=t1;

	t1.set_time();

	cout<<"现在的时间是:";

	t2.show_time();

	t1.add_a_sec();//增加一秒钟

	cout<<"增加一秒钟:";

    t2.show_time();

	t1.add_a_minute();//增加一分钟

	cout<<"增加一分钟:";

	t2.show_time();

	t1.add_an_hour();//增加一小时

	cout<<"增加一小时:";

	t2.show_time( );  

    t1.add_seconds(40); //增加40秒钟  

    cout<<"增加40秒钟后:";  

    t2.show_time( );  
 
    t1.add_minutes(127); //增加127分钟  

    cout<<"增加127分钟后:"; 

    t2.show_time( );  

    t1.add_hours(8); //增加8小时 

    cout<<"增加8小时后:"; 

    t2.show_time( );  

    system("PAUSE");  //在VS2008中,可出现“按任一键继续...”  

    return 0;  
}






mytime.cpp

#include <iostream>  

#include"mytime.h"  //该头文件中包含了Time类的定义  

using namespace std;  
 
//下面实现的是非内置成员函数,实现了公用接口与私有实现的分离,做到了信息隐藏  
  
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(int n) //增加n秒钟  
{  
    sec+=n;  

    if (sec>59)      
    {  
        add_minutes(sec/60);  

        sec%=60;                //秒数应该是sec%=60  
    }  
}  
  
void Time::add_minutes(int n) //增加n分钟  
{  
    minute+=n;  

    if (minute>59)        
    {  
        add_hours(minute/60); 

        minute%=60;  
    }  
}  
  
void Time::add_hours(int n) //增加n小时  
{  
    hour+=n;  

    if (hour>23)  

        hour%=24;       
}




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