第一周 项目三:时间类

来源:互联网 发布:pbft 共识算法 编辑:程序博客网 时间:2024/05/16 16:19

问题及代码:

/** Copyright (c++) 2015, 烟台大学计算机学院* All rights reserved.* 文件名称:Bank.cpp* 作    者:李楠* 完成日期:2015年3月14日* 版 本 号:v1.0** 问题描述: 阅读、运行程序后,按要求扩充类的功能* 输入描述: 要求:           (1)请在原类基础上,在类内增加下列成员函数(将是内置成员函数)                add_a_sec()  //增加1秒钟                add_a_minute() //增加1分钟                add_an_hour() //增加1小时          在main()数中,调用新增加的成员函数,以测试扩充后的功能。           (2)再增加三个成员函数,要求在类内声明,类外定义。             add_seconds(int) //增加n秒钟             add_minutes(int) //增加n分钟             add_hours(int) //增加n小时            提示:            要考虑增加后超出取值范围的情形;            增加n秒后,秒数可能会超过60,调整秒数,并可以调用增加分钟数的成员函数,使时间合法;同理,增加分钟数也有类似问题。* 程序输出: 略*/#include <iostream>using namespace std;class Time{public:    void set_time( );    void show_time( );    void add_a_sec( );  //增加1秒钟    void add_a_minute( ); //增加1分钟    void add_an_hour( ); //增加1小时    void add_seconds(int); //增加n秒钟    void add_minutes(int); //增加n分钟    void add_hours(int); //增加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;}inline void Time::add_a_sec( )//内置函数!!增加一秒{    sec=sec+1;    if(sec>59)    {        sec=0;//秒数清零        add_a_minute();//分钟数增加1,由增加一分钟的函数解决!!    }}inline void Time::add_a_minute( )//内置函数!!增加一分钟{    minute=minute+1;    if(minute>59)    {        minute=0;//分钟数清零        add_an_hour();    }}inline void Time::add_an_hour( )//内置函数!!增加一小时{    hour=hour+1;    if(hour>23)        hour=0;//如果超过23,就到了第二天,小时数清零}void Time::add_seconds(int s){    sec+=s;    if(sec>59)    {        add_minutes(sec/60);//增加了sec/60秒后        sec%=60;//秒数(这一步要在后面!!)因为如果在前面sec就改变了    }}void Time::add_minutes(int m){    minute+=m;    if(minute>59)    {        add_hours(minute/60);        minute%=60;    }}void Time::add_hours(int h){    hour+=h;    if(hour>23)        hour=hour%24;}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;}int main( ){    int a,b,c;    Time t2;    //Time &t2=t1;//引用!!    t2.set_time( );    cout<<"现在时间是:";    t2.show_time( );    t2.add_a_sec();    cout<<"增加一秒:";    t2.show_time();    t2.add_a_minute();    cout<<"增加一分钟 :";    t2.show_time();    t2.add_an_hour();    cout<<"增加一小时 :";    t2.show_time();    cout<<"增加的秒数:";    cin>>a;    t2.add_seconds(a);    cout<<"增加之后变为:";    t2.show_time();    cout<<"增加的分钟数:";    cin>>b;    t2.add_minutes(b);    cout<<"增加之后变为:";    t2.show_time();    cout<<"增加的小时数:";    cin>>c;    t2.add_hours(c);    cout<<"增加之后变为:";    t2.show_time();    return 0;}


运行结果:

 

知识点总结:

就是根据提示和要求,要考虑到时间超限的后果,还要注意程序的注释中的内容,还是很容易出错的。

学习心得:

某个地方不仔细就有可能导致错误,在写程序前要有一个清晰的思路和大体的框架,在思路比较混乱的地方,最好还是写下来再敲代码。

0 0
原创粉丝点击