⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++calender.txt

📁 该代码是实现日历的查询用的。。。。其中的说明搜很详细了。。。个人觉得不错啊
💻 TXT
字号:
//time.h
#include <iostream.h>
class Time
{
public:
Time(int =0, int =0, int =0);
void setTime(int,int,int);
void setTime();
void printMilitary(); //以24小时形式输出时间
void printStandard(); //以12小时形式输出时间
private:
int hour;
int minute;
int second;
};


//time.cpp
#include "time.h"
Time::Time(int hr,int min,int sec)
{
setTime(hr,min,sec);
}
void Time::setTime(int hr,int min,int sec)
{
hour=(hr<0||hr>24)?0:hr;
minute=(min<0||min>59)?0:min;
second=(sec<0||sec>59)?0:sec;
}
void Time::setTime()
{
int h,m,s;
cout<<"请输入时间:"<<endl;
cin>>h>>m>>s;
setTime(h,m,s);
}
void Time::printMilitary()
{
cout<<(hour<10 ? "0":"")<<hour<<":"
<<(minute<10 ? "0":"")<<minute<<":"
<<(second<10 ? "0":"")<<second<<endl;
}
void Time::printStandard()
{
cout<<((hour==0||hour==12)?12:hour%12)<<":"
<<(minute<10 ? "0":"")<<minute<<":"
<<(second<10 ? "0":"")<<second
<<(hour<12 ? " AM":" PM")<<endl;
}




#include "time.h"
#include<stdlib.h>
class Tdate{
public:
Tdate(int =2006,int =3,int =1,int =0,int =0,int =0);
void Menupri(void);
void SetTime(void);
void SetDay(void);
void Dayadd(void); //日期加1
void Daysub(void); //日期减1
void Dayprint(void);
void Timeprint();
int getyear() { return year;}
int getmonth() { return month;}
int getday() {return day;}
int getdayofmonth(int y,int m);
int Dayofweek(int y,int m,int d=1);
int IsLeapYear() const{ return ( year%4==0 && year%100!=0 )||( year%400==0 ); }
void pMonthRili(int y,int m);
void checkday();
void pYearRil();
private:
  int year;
  int month;
  int day;
  int week;
  Time timeNow;
};



#include "data.h"
#include<iomanip.h>
#include<iostream.h>
#include<string.h>
int const NoLeapday[]={31,28,31,30,31,30,31,31,30,31,30,31}; //平年
int const Leapday[]={31,29,31,30,31,30,31,31,30,31,30,31}; //润年
char const *WeekDay[]={"日","一","二","三","四","五","六"};
char const *Menu[]={" 请选择菜单 ",
  "",
  " 0.设置时间",
  " 1.输出时间",
  " 2.输出日期",
  " 3.设置日期",
  " 4.日期加1",
  " 5.日期减1",
  " 6.输出年日历",
  " 7.输出本月日历",
  " 8.查询日历",
  " 9.退出",};
unsigned char MenuLen=10;

Tdate::Tdate(int y,int m,int d,int hr,int min,int sec):timeNow(hr,min,sec)
{
year=y;
month=m;
day=d; 
week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/100)%7;
}
void Tdate::SetTime() //设置时间
{
timeNow.setTime();
}
void Tdate::SetDay() //设置日期
{
system("cls");
cout<<"请输入年月日"<<endl;
cin>>year>>month>>day;
while(month>12||month<0||day<=0||(IsLeapYear()&&(day>Leapday[month-1]))||!IsLeapYear()&&(day>NoLeapday[month-1])) //判断输入是否正确
{
cout<<"输入错误!"<<endl<<"重新输入"<<endl;
cin>>year>>month>>day;
}
}
void Tdate::Menupri() //打印菜单
{
for(int i=0;i<=MenuLen;i++)
cout<<Menu<<endl;
}
void Tdate::Dayadd() //日期加1
{

if((IsLeapYear()&&(day==Leapday[month-1]))||!IsLeapYear()&&(day==NoLeapday[month-1]))
  {
  day=1;
  if(month==12)
  { month=1;
  year++;
  }
  else
  month++;
  }
else
  day++; 
cout<<"明天是:"<<year<<"-"<<month<<"-"<<day<<endl;
}
void Tdate::Daysub() //日期减1
{
if(day==1)  //如果是1号
{ if(month==1) //如果是1月1号
  { month=12;
  year--;
  }
  else  //其他月
  month--;
  if(IsLeapYear()) //闰年
  day=Leapday[month-1];
  else  //平年
  day=NoLeapday[month-1];
}
else //不是1号
  day--; 
cout<<"昨天是:"<<year<<"-"<<month<<"-"<<day<<endl;
}

int Tdate::getdayofmonth(int y,int m)  //获取"y"年"m"月的天数
{
if(IsLeapYear())
  return (Leapday[m-1]);
else
  return(NoLeapday[m-1]);
}

int Tdate::Dayofweek(int y,int m,int d) 
{
int new_year,new_month;
new_year=y;
new_month=m;
if(m==1||m==2)
{
new_month+=12;
new_year--;
}
return ((d+2*new_month+3*(new_month+1)/5+new_year+new_year/4-new_year/100+new_year/100)%7);
}
void Tdate::pYearRil() //从1月开始打印日历
{
for(int k=1;k<=12;k++)
  pMonthRili(getyear(),k);
}
void Tdate::pMonthRili(int y,int m)
{
  int w=Dayofweek(getyear(),m,1); //计算1号是星期几
  cout<<"**********"<<y<<"年"<<m<<"月"<<"**********"<<endl;
  for(int i=0;i<=6;i++)
  cout<<setw(4)<<WeekDay;
  cout<<endl; 
  cout<<setw(4*w)<<"";
  for(i=1;i<=getdayofmonth(getyear(),m);i++)
  { cout<<setw(4)<<i;
  w++;
  if(w==7)
  { w=0;
  cout<<endl;
  }
  }
  cout<<endl<<"*****************************"<<endl;
}

void Tdate::Dayprint(void)
{
char p[10];
week=Dayofweek(getyear(),getmonth(),day);
strcpy(p,WeekDay[week==7?0:week]);
cout<<year<<"-"<<month<<"-"<<day<<" 星期"<<p<<endl;
timeNow.printStandard();

}
void Tdate::Timeprint()
{
cout<<"//以24小时形式输出时间"<<endl;
timeNow.printMilitary();
cout<<"//以12小时形式输出时间"<<endl;
timeNow.printStandard();
}




//main.cpp
#include "data.h"
void main()
{
Tdate myday(2006,3,28,20,21,59);
Tdate checkday;
int index;
while(1)
{
myday.Menupri(); //输出菜单
cin>>index;
switch(index)
  {
  case 0: myday.SetTime();break;
  case 1: myday.Timeprint();break;
  case 2: myday.Dayprint();break;
  case 3: myday.SetDay(); break;
  case 4: myday.Dayadd();break;
  case 5: myday.Daysub();break;
  case 6: myday.pYearRil();break;
  case 7: myday.pMonthRili(myday.getyear(),myday.getmonth());break;
  case 8:
  {
  checkday.SetDay();
  checkday.Dayprint();
  }
  break;
  default: exit(1);
  }
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -