1. 程式人生 > >設計一個多功能的MyTime類

設計一個多功能的MyTime類

題目內容:

定義一個帶過載建構函式的日期類Date,資料成員有年、月、日;成員函式包括:一個帶引數的建構函式Date(int,int,int),一個不帶引數的建構函式(設定日期為1900年1月1日),一個按“年-月-日”格式顯示日期的函式,一個對資料成員賦值的函式void init(int,int,int)。

主函式中對類的測試要求: 1. 分別使用兩個不同的過載建構函式建立兩個日期類物件(必須為d1,d2,d2初始值為2100-12-12); 2. 按“年-月-日”格式分別顯示兩個物件的值; 3. 輸入資料,用init函式為d1賦值; 2.按“年-月-日”格式顯示物件d1的值;。 輸入格式: 給d1賦值的資料

輸出格式: d1的預設值d2的初始值d1賦值後的值

輸入樣例: 2011 4 29 輸出樣例: 1900-1-1 2100-12-12 2011-4-29

#include <iostream>
#include <cmath>
#include<iomanip>
using namespace std;
class MyTime
{
 int hour;
 int min;
 int sec;
 int seccha(int h,int m,int s);
 public:
  MyTime(){
   hour = 0;
   min = 0;
   sec = 0;
  }
  MyTime(int h,int m,int s)
  {
   (h>=0 && h<=12)?  hour = h:hour = 0;
   (m>=0 && m<=60)?  min = m:min = 0;
   (s>=0 && s<=60)?  sec = s:sec = 0;
  }
  void inite(int h,int m,int s)
  {
   (h>=0 && h<=12)?  hour = h:hour = 0;
   (m>=0 && m<=60)?  min = m:min = 0;
   (s>=0 && s<=60)?  sec = s:sec = 0;
  }
  void out_12()
  {
   int h1;
   if(hour>=12) {
   h1 = hour%12;
   cout<<setw(2)<<setfill('0')<<h1<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"PM"<<endl; 
   }else
   {
   cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<" "<<"AM"<<endl;
   }
  }
  void out_24()
  {
   cout<<setw(2)<<setfill('0')<<hour<<":"<<setw(2)<<setfill('0')<<min<<":"<<setw(2)<<setfill('0')<<sec<<endl; 
  }
  void Addtime(int h, int m, int s)
  {
   sec = sec + s;
   if(sec >=60)  
   {
    min = min + sec/60;
    sec = sec % 60;
   }
   min = min + m;
   if(min >=60)  
   {
    hour = hour + min/60;
    min = min % 60;
   }
   hour = (hour + h) % 24;
   
  }
  void decreatime(int h, int m, int s)
  {
   int sum1 = seccha(h,m,s);
   int sum2 = seccha(hour,min,sec);
   int sum = abs(sum1 - sum2);
   int h1,m1,s1;
   hour = sum/3600;
   min = (sum%3600)/60;
   sec = sum%60;
  }
};
 int MyTime :: seccha(int h,int m,int s)
 {
  return h*3600 + m*60 + s;
 }
int main()
{
 int hour,min,sec,h1,m1,s1;
 cin>>hour>>min>>sec>>h1>>m1>>s1;
 MyTime t1,t2(8,10,30);
 t1.out_12();
 t1.out_24();
 t2.out_12();
 t2.out_24();
 t1.inite(hour,min,sec);
 t1.Addtime(h1,m1,s1);
 t1.out_12();
 t1.out_24();
 t2.decreatime(h1,m1,s1);
 t2.out_12();
 t2.out_24();
 return 0;
}