第二学期第六周项目4--静态成员作用

来源:互联网 发布:通用权限管理框架源码 编辑:程序博客网 时间:2024/05/09 15:07
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 作    者:沈远宏* 完成日期:2014 年 4 月 07日* 版 本 号:v1.0* 输入描述: 无* 问题描述:设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据,在下面的设计中,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位的数字前是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。* 程序输出:略* 问题分析:略* 算法设计:略*/#include <iostream>using namespace std;class Time{public:    Time(int=0,int=0,int=0);    void set_time();    void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm    void add_seconds(int n); //增加n秒钟    void add_minutes(int n); //增加n分钟    void add_hours(int n); //增加n小时    static void change24();  //改变静态成员is_24,在12和24时制之间转换    static void changefrom0();   //改变静态成员from0,切换是否前导0private:    bool is_time(int h,int m, int s);    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){}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;    }}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>=60)    {        add_minutes(sec/60);        sec=sec%60;    }}void Time::add_minutes(int n) //增加n分钟{    minute+=n;    if(minute>=60)    {        add_hours(minute/60);        minute%=60;    }}void Time::add_hours(int n) //增加n小时{    hour+=n;    if(hour>=24)    {        hour=hour/24;        hour%=24;    }} bool Time::is_24=true; bool Time::from0=false; void Time::change24(){    if(is_24)    {        cout<<"为24小时制"<<endl;        cout<<"改为12小时制"<<endl;        is_24=false;    }}//这种制零的方法比我之前用的方法好多了。至少省了20行,少占用了很多空间 void Time::changefrom0(){    from0=!from0;}void Time::show_time( )//根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm{    int h;    h=(is_24)?hour:hour%12;        if(h<10)        cout<<"0";        cout<<h<<":";        if(minute<10)        cout<<"0";        cout<<minute<<":";        if(sec<10)        cout<<"0";        cout<<sec;        if(!is_24)        {            cout<<((hour>12)?"pm":"am")<<endl;        }        cout<<endl;}//下面写出静态成员的初始化及各成员函数的定义……int main( ){    Time t1;    int N,M,L;    t1.set_time();    t1.show_time();    cout<<"请输入增加N时:"<<endl;    cin>>N;    t1.add_hours(N);    t1.show_time();    cout<<"请输入增加M分:"<<endl;    cin>>M;    t1.add_minutes(M);        t1.show_time();    cout<<"请输入增加L秒:"<<endl;    cin>>L;    t1.add_seconds(L);        t1.show_time();        Time::change24();        Time::changefrom0();        t1.show_time();    return 0;}


运行结果:

 

0 0
原创粉丝点击