第五周项目四 -静态成员应用 由老师版本的完善版

来源:互联网 发布:网络平台推广好做吗 编辑:程序博客网 时间:2024/06/05 01:18

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

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. class Time{  
  2. public:  
  3.     Time(int=0,int=0,int=0);  
  4.     void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm  
  5.     void add_seconds(int); //增加n秒钟  
  6.     void add_minutes(int); //增加n分钟    
  7.     void add_hours(int); //增加n小时    
  8.     static void change24();  //改变静态成员is_24,在12和24时制之间转换  
  9.     static void changefrom0();   //改变静态成员from0,切换是否前导0  
  10.  private:  
  11.     static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm   
  12.     static bool from0; //为true时,前导0,8:23:5显示为08:23:05  
  13.     int hour;  
  14.     int minute;  
  15.     int sec;  
  16. };  
  17. //下面写出静态成员的初始化及各成员函数的定义……  
  18. int main( )   
  19. {  }  

[参考解答]

#include <iostream>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小时    void change();    void work();    void add_time();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;};//下面写出静态成员的初始化及各成员函数的定义……bool Time::is_24=true;        //这个作为全局变量,bool Time::from0=false;Time::Time(int h,int m,int s): hour(h), minute(m), sec(s) {}void Time::show_time( ) //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm{    change();    int h=(is_24)?hour:hour%12;    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;    work();}//这一部分值得我们好好学习一下这样的写法。void Time::add_seconds(int n) //增加n秒钟{    sec+=n;    if (sec>59)    {        add_minutes(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;}void Time::change(){    cout<<"请选择你要输出的格式。"<<endl;    cout<<"是否为24小时制(Y/N):";    char ch;    cin>>ch;    is_24=(ch=='Y'?true:false);    cout<<"是否为前导‘0’(Y/N):";    char n;    cin>>n;    from0=(n=='Y'?true:false);}void Time::add_time(){    cout<<"秒钟增加的时间:";    int s;    cin>>s;    add_seconds(s);    cout<<"分钟增加的时间:";    int m;    cin>>m;    add_minutes(m);    cout<<"时钟增加的时间:";    int h;    cin>>h;    add_hours(h);    work();}void Time::work(){    cout<<"有以下功能供您选择:"<<endl;    cout<<"1. 增加时间   2. 输出时间  "<<endl;    int x;    while(cin>>x)    {        switch(x)        {        case 1:            add_time();            break;        case 2:            show_time();            break;        }    }}int main(){    int h,m,s;    cin>>h>>m>>s;    Time t1(h,m,s);    t1.show_time();    t1.work();    return 0;}


在这个程序中实现了人与程序的交流。

0 0
原创粉丝点击