c++时间类

一上午写完的。百度了几个算法。

 

#include <iostream>
#include <windows.h>
#include <iomanip>
using namespace std;
int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void settime();
void zhuye();
void settime_showtime();
int main()
{
 cout<<"是否使用本程序。请选择 y/n"<<endl;
 char ch;
 cin>>ch;
 if(ch=='y')
 {
  zhuye();//欢迎界面
  settime_showtime();//设置时间,显示时间
 
 }
 else
  return 0;
 return 0;
}
bool isleapyear(int year)
{
 return (year%4==0 && year%100!=0)||(year%400==0);
}


class time //time类
{
protected:
 int hour;
 int minute;
 int second;
public:
 time();
 time(int h,int m,int s);
};
class date //Date类
{
protected:
 int year;
 int month;
 int day;
public:
 date();
 date(int y,int mon,int d);
};
class datetime:public time,public date //由time date派生出来的类
{
private://因为没有新增数据成员,所以为空
 
public:
 datetime();//因为创建未被初始化的对象,所以声明默认函数
 datetime(int y,int mon,int d,int h,int m,int s);//自定义构造函数
 void setdatetime();//设置时间的成员函数
 void showdatetime();//显示时间的成员函数
 void getdatetime(int &y,int &m,int &d,int &h,int &min,int &s)//在后面查询中输出时间日期。
 {
  y=year;
  m=month;
  d=day;
  h=hour;
  min=minute;
  s=second;
 }
};
time::time()
{
 hour=0;
 minute=0;
 second=0;
}
time::time(int h,int m,int s)
{
 hour=h;
 minute=m;
 second=s;
}
date::date()
{
 year=0;
 month=0;
 day=0;
}
date::date(int y,int mon,int d)
{
 year=y;
 month=mon;
 day=d;
}
datetime::datetime()// 定义默认构造函数
{}
datetime::datetime(int y,int mon,int d,int h,int m,int s):date(y,mon,d),time(h,m,s)
{}
void datetime::setdatetime() //设置时间的成员函数
{
 cout<<"请输入时间,年,月,日,时,分,秒"<<endl;
 cout<<"年:";cin>>year;
 cout<<"月:";cin>>month;
 cout<<"日:";cin>>day;
 cout<<"时:";cin>>hour;
 cout<<"分:";cin>>minute;
 cout<<"秒:";cin>>second;
 cout<<endl;

}
void datetime::showdatetime() //更新时间的成员函数
{
  cout<<"您输入的时间更新显示:"<<endl;

 for(;;)
 { 
  cout<<"\r";
  cout<<year<<"."<<month<<"."<<day<<" "<<hour<<":"<<minute<<":"<<second;
  if(second>58)
   {
    second=0,minute++;
    if(minute>59)
    {
     minute=0,second=0,hour++;
     if(hour>23)
     {
      day++,hour=0,minute=0,second=0;
      if(month==2&&isleapyear(year))
      {
       monthday[2]++;
      }
      if(day>(monthday[month]))
      {
       month++,day=0;
       if(month>11)
       {
        year++,month=1,day=1,hour=0,minute=0,second=0;
       }

      }


     }

    }
    
  }
  else second++; 
  Sleep(1000);
 }

}
void zhuye() //定义欢迎界面函数
{
 cout<<"                  **************";
 cout<<"欢迎使用电子时间表";
 cout<<"**************"<<endl;
}
void settime_showtime()//定义设置时间,显示时间函数

 void xuanze(datetime &c1);
 datetime c1;
 c1.setdatetime();
 xuanze(c1);//选择界面
 c1.showdatetime();
}

int monthdays(datetime &c1);
int getDays(datetime &c1);
int yearDays(datetime &c1);


void xuanze(datetime &c1)//选择界面函数定义

 void rili();
 void jieri(int m);
 void chaxunxingqi(int y,int m,int d);
 void rili(datetime &);
 void jieri(int m);
 int choice;
 int y,m,d,h,min,s;
 cout<<"     *****欢迎使用查询日历服务*****"<<endl;
 cout<<"请输入时间,格式:年月日,时分秒"<<endl;
 c1.getdatetime(y,m,d,h,min,s);
 cout<<"您将要使用的功能:"<<endl;
 cout<<"1.判断输入的时间查询当天为星期几2.通过年月查询本月日历.3.查询所输入的月份的节日"<<endl;
 cout<<"请输入你的选择:"<<endl;
 cin>>choice;
 switch(choice)
 {
 case 1:
  chaxunxingqi(y,m,d);break;//查询星期几
 case 2:
  rili(c1);break;//查询输入时间的本月日历
 case 3:
  jieri(m);break;//是否为节日
 
 }
 cout<<"是否继续使用查询服务?请输入选择 y/n 。"<<endl;
 char c;
 cin>>c;
 switch(c)
 {
 case 'y': xuanze(c1);break;
 default:main();break;
 }
}
void chaxunxingqi(int y,int m,int d) //查询星期几,在网上百度到一个公式,int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;基姆拉尔森计算公式。

 cout<<"            *****欢迎使用查询星期服务*****"<<endl;
 int x=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
 switch(x)
 {
 case 1: cout<<"星期一"<<endl; break;
 case 2: cout<<"星期二"<<endl; break;
 case 3: cout<<"星期三"<<endl; break;
 case 4: cout<<"星期四"<<endl; break;
 case 5: cout<<"星期五"<<endl; break;
 case 6: cout<<"星期六"<<endl; break;
 case 0: cout<<"星期日"<<endl; break;
 }
}
int yeardays(datetime &c1)//判断整年的天数

 int y,m,d,h,min,s;
 c1.getdatetime(y,m,d,h,min,s);
 if(isleapyear(y))
  return 365;
 else
  return 366;
}
int monthdays(datetime &c1)//判断整月的天数
{
 int y,m,d,h,min,s;
 c1.getdatetime(y,m,d,h,min,s);
 if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) return 31;
 else if(yeardays(c1)==366&&m==2) return 29;
 else if(yeardays(c1)==365&&m==2) return 28;
 else return 30;

}
int getDays(datetime &c1)
{
   int i;
   int sum=0;
   int y,m,d,h,min,s;
 c1.getdatetime(y,m,d,h,min,s);
   if(y>1901)
      for(i=1901;i<y;i++) sum+=yeardays(c1);
   if(m>1)
      for(i=1;i<m;i++) sum+=monthdays(c1);
   return sum;
}


void rili(datetime& c1)
{ //1990.1.1是星期一
 cout<<"            *****欢迎使用查询日历服务*****"<<endl;
 cout<<endl;
 int y,m,d,h,min,s;
 c1.getdatetime(y,m,d,h,min,s);
 int sum,day,i,j,monthday;
 sum=getDays(c1);
 day=(1+sum)%7;
 monthday=monthdays(c1);
 cout<<"                                                                         ******"<<m<<"月的日历"<<"******"<<endl;
 cout<<endl;
 cout<<": "<<y<<"年"<<m<<"月"<<endl;
 cout<<"Sun Mon Tue Wed Thu Fri Sat"<<endl;
 for(i=0;i<(day+1)%7;i++)
         cout<<"    ";
      for(i=1,j=day+1;i<=monthday;i++,j++)
      {
         cout<<setw(4)<<setiosflags(ios::right)<<i;
         if((j+1)%7==0) cout<<endl;
      }
      cout<<endl;
}
 

void jieri(int m)

   cout<<endl; 
   cout<<"**********************************"<<endl; 
   switch(m) 

{   case 1:   
      cout<<"*    "<<m<<"/1"<<"     新年元旦"<<endl; 
   cout<<"*    "<<m<<"/6"<<"     中国13亿人口日"<<endl; 
   cout<<"*    "<<m<<"/10"<<"    中国110宣传日"<<endl; 
        break; 
   case 2: 
   cout<<"*    "<<m<<"/2"<<"     世界湿地日"<<endl; 
   cout<<"*    "<<m<<"/4"<<"     世界癌症日"<<endl; 
   cout<<"*    "<<m<<"/7"<<"     国际声援南非日"<<endl; 
   cout<<"*    "<<m<<"/10"<<"    世界气象日"<<endl; 
   cout<<"*    "<<m<<"/14"<<"    情人节"<<endl; 
   cout<<"*    "<<m<<"/21"<<"    国际母语日"<<endl; 
  break; 
   case 3: 
   cout<<"*    "<<m<<"/3"<<"     全国爱耳日"<<endl; 
   cout<<"*    "<<m<<"/8"<<"     妇女节"<<endl; 
   cout<<"*    "<<m<<"/12"<<"    植树节"<<endl; 
   cout<<"*    "<<m<<"/15"<<"    国际消费日"<<endl; 
   cout<<"*    "<<m<<"/21"<<"    世界森林日"<<endl; 
   cout<<"*    "<<m<<"/22"<<"    世界水日"<<endl; 
   cout<<"*    "<<m<<"/23"<<"    世界气象日"<<endl; 
   cout<<"*    "<<m<<"/24"<<"    世界防治结核病日"<<endl; 
  break; 
   case 4: 
   cout<<"*    "<<m<<"/1"<<"     愚人节"<<endl; 
   cout<<"*    "<<m<<"/5"<<"     清明节"<<endl; 
   cout<<"*    "<<m<<"/7"<<"     世界卫生日"<<endl; 
   cout<<"*    "<<m<<"/22"<<"    世界地球日"<<endl; 
  break; 
   case 5: 
   cout<<"*    "<<m<<"/1"<<"     国际劳动节"<<endl; 
   cout<<"*    "<<m<<"/4"<<"     中国青年节"<<endl; 
   cout<<"*    "<<m<<"/5"<<"     全国碘缺乏病日"<<endl; 
   cout<<"*    "<<m<<"/8"<<"     世界红十字日"<<endl; 
   cout<<"*    "<<m<<"/12"<<"    国际护士节"<<endl; 
   cout<<"*    "<<m<<"/15"<<"    国际家庭日"<<endl; 
   cout<<"*    "<<m<<"/17"<<"    世界电信日"<<endl; 
   cout<<"*    "<<m<<"/18"<<"    世界博物馆日"<<endl; 
   cout<<"*    "<<m<<"/19"<<"    中国汶川地震哀悼日"<<endl; 
   cout<<"*    "<<m<<"/20"<<"    全国学生营养日"<<endl; 
   cout<<"*    "<<m<<"/22"<<"    国际生物多样性日"<<endl; 
   cout<<"*    "<<m<<"/31"<<"    世界无烟日"<<endl; 
  break; 
   case 6: 
    cout<<"*    "<<m<<"/1"<<"     国际儿童节"<<endl; 
    cout<<"*    "<<m<<"/5"<<"     世界环境日"<<endl; 
    cout<<"*    "<<m<<"/6"<<"     全国爱眼日"<<endl; 
    cout<<"*    "<<m<<"/17"<<"    防治荒漠化和干旱日"<<endl; 
    cout<<"*    "<<m<<"/23"<<"    国际奥林匹克日"<<endl; 
    cout<<"*    "<<m<<"/25"<<"    全国土地日"<<endl; 
    cout<<"*    "<<m<<"/26"<<"    国际反毒品日"<<endl; 
   break; 
   case 7: 
    cout<<"*    "<<m<<"/1"<<"     香港回归日"<<endl; 
    cout<<"*    "<<m<<"/1"<<"     建党节"<<endl; 
    cout<<"*    "<<m<<"/7"<<"     抗日战争纪念日"<<endl; 
    cout<<"*    "<<m<<"/8"<<"     世界过敏性疾病日"<<endl; 
    cout<<"*    "<<m<<"/11"<<"    世界人口日"<<endl;        
   break; 
       case 8: 
    cout<<"*    "<<m<<"/1"<<"     八一建军节"<<endl;             
   break; 
       case 9: 
    cout<<"*    "<<m<<"/1"<<"     劳动节"<<endl; 
    cout<<"*    "<<m<<"/8"<<"     国际扫盲日"<<endl; 
    cout<<"*    "<<m<<"/10"<<"    教师节"<<endl; 
    cout<<"*    "<<m<<"/10"<<"    世界预防自杀日"<<endl; 
    cout<<"*    "<<m<<"/16"<<"    国际臭氧层保护日"<<endl;            
    cout<<"*    "<<m<<"/17"<<"    国际和平日"<<endl; 
    cout<<"*    "<<m<<"/20"<<"    国际爱牙日"<<endl; 
    cout<<"*    "<<m<<"/27"<<"    世界旅游日"<<endl;             
   break; 
       case 10: 
    cout<<"*    "<<m<<"/1"<<"     国庆节"<<endl; 
    cout<<"*    "<<m<<"/1"<<"     国际音乐节"<<endl; 
    cout<<"*    "<<m<<"/2"<<"     国际减轻自然灾害日"<<endl; 
    cout<<"*    "<<m<<"/7"<<"     国际住房日"<<endl;          
    cout<<"*    "<<m<<"/8"<<"     全国高血压日"<<endl; 
    cout<<"*    "<<m<<"/8"<<"     世界视觉日"<<endl;         
     break; 
       case 11: 
    cout<<"*    "<<m<<"/8"<<"     中国记者日"<<endl; 
    cout<<"*    "<<m<<"/9"<<"     消防宣传日"<<endl; 
    cout<<"*    "<<m<<"/11"<<"    光棍节"<<endl; 
    cout<<"*    "<<m<<"/14"<<"    世界糖尿病日"<<endl; 
    cout<<"*    "<<m<<"/17"<<"    国际大学生节"<<endl; 
            break; 
        default: 
    cout<<"*    "<<m<<"/1"<<"     世界艾滋病日"<<endl; 
    cout<<"*    "<<m<<"/3"<<"     世界残疾人日"<<endl; 
    cout<<"*    "<<m<<"/9"<<"     世界足球日"<<endl; 
    cout<<"*    "<<m<<"/20"<<"    澳门回归纪念日"<<endl; 
    cout<<"*    "<<m<<"/21"<<"    国际篮球日"<<endl; 
    cout<<"*    "<<m<<"/24"<<"    平安夜"<<endl; 
    cout<<"*    "<<m<<"/25"<<"    圣诞节"<<endl; 
    cout<<"*    "<<m<<"/25"<<"    世界强化免疫日"<<endl; 
    cout<<"*    "<<m<<"/26"<<"    毛泽东诞辰"<<endl; 
  }


}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值