zoukankan      html  css  js  c++  java
  • 第五周项目4-静态成员应用

    设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据,在下面的设计中,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位的数字前是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。

    /*
    * Copyright (c) 2015,烟台大学计算机学院
    * All right reserved.
    * 作者:邵帅
    * 文件:Demo.cpp
    * 完成时间:2015年04月08日
    * 版本号:v1.0
    */
    #include <iostream>
    #include <cmath>
    using namespace std;
    class Time
    {
    public:
        Time(int=0,int=0,int=0);
        void show_time(); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm
        void add_seconds(int); //增加n秒钟
        void add_minutes(int); //增加n分钟
        void add_hours(int); //增加n小时
        static void change24();  //改变静态成员is_24,在12和24时制之间转换
        static void changefrom0();   //改变静态成员from0,切换是否前导0
    private:
        static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm
        static bool from0; //为true时,前导0,8:23:5显示为08:23:05
        int hour;
        int minute;
        int sec;
    };
    Time::Time(int h,int m,int s): hour(h), minute(m), sec(s) {};
    bool Time::is_24=true;
    bool Time::from0=true;
    void Time::show_time()
    {
        int h=(is_24)?hour:hour%12;
        if (h<10&&from0) cout<<'0';
        cout<<h<<':';
        if(minute<10&&from0) cout<<'0';
        cout<<minute<<':';
        if(sec<10&&from0) cout<<'0';
        cout<<sec;
        if(!is_24)
            cout<<((hour>12)? " pm":" am");
        cout<<endl;
    }
    void Time::add_seconds(int s)
    {
        while (s--)
        {
            sec++;
            if (sec>60)
            {
                minute++;
                sec=1;
            }
            if (minute>60)
            {
                hour++;
                minute=1;
            }
        }
    }
    void Time::add_minutes(int m)
    {
        while(m--)
        {
            minute++;
            if (minute>60)
            {
                hour++;
                minute=1;
            }
        }
    }
    void Time::add_hours(int h)
    {
        while(h--)
        {
            hour++;
            if (hour>23)
                hour=0;
        }
    }
    void Time::change24()
    {
        is_24=!is_24;
    }
    void Time::changefrom0()
    {
        from0=!from0;
    }
    int main() //测试数据,来自贺老
    {
        Time t1(23,14,25),t2(8,45,6);
        cout<<"24时制, 不前导:"<<endl;
        cout<<"    t1是:";
        t1.show_time();
        cout<<"    t2是:";
        t2.show_time();
        t1.add_hours(10);
        t2.add_hours(10);
        Time::changefrom0(); //注意此处调用静态成员
        cout<<"10小时后, 切换是否前导:"<<endl;
        cout<<"    t1是:";
        t1.show_time();
        cout<<"    t2是:";
        t2.show_time();
        t1.change24();
        cout<<"换一种制式:"<<endl;
        cout<<"    t1是:";
        t1.show_time();
        cout<<"    t2是:";
        t2.show_time();
        return 0;
    }
    
    
    
    运行结果:


    @ Mayuko


  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/mayuko/p/4567519.html
Copyright © 2011-2022 走看看