首页 > 编程 > C++ > 正文

C++实现简易万年历

2020-01-26 13:23:13
字体:
来源:转载
供稿:网友

本文实例为大家分享了C++实现简易的万年历,供大家参考,具体内容如下

代码如下:

/**文件名称:万年历.cpp*作  者:chenghan*完成日期:2019/1/10*版 本 号:1.0*问题描述:制作一个简单的万年历 */ #include<iostream>#include <string>using namespace std;//判断一年是否为闰年,是返回true 否返回falsebool isleapyear(int year); //兔子图案 void Rabbit();  //封装时间类 私有数据成员包括年月日 class Date{ private:  int year, month, day; //私有数据成员  public:  Date(){} //无参的构造函数   Date(int year, int month, int day); //有参的构造函数   void Disp_Date();  //显示星期数   void set(); //用户输入时间   int week(); //判断星期的函数  void show(); //显示日历的函数 };//主函数 int main(){  Date t; //创建一个Date类对象   string N="yes";  Rabbit();  while(N=="yes"){ t.set(); //调用设置时间函数  t.Disp_Date(); //显示星期    t.show();  //展示日历画面    cout<<"/n是否继续查询,是(yes)否(no)/n";   cin>>N; }     return 0;}//判断一年是否为闰年,是返回true 否返回falsebool isleapyear(int year){  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)    return true;  else    return false;}//兔子图案void Rabbit()  { cout<<endl;  cout<<"         ┏━┓ ┏━┓"<<endl;  cout<<"作者:chenghan  ★│┃ ┃│┃"<<endl;  cout<<"         ┃│┗灬┛│┃"<<endl;  cout<<"版本:1.0     ┃     ┃"<<endl;  cout<<"         ┃ ^   ^ ┃"<<endl;  cout<<"时间:2019/1/10    ˇ   "<<endl;  cout<<"         ┗○━━━○┛"<<endl;    cout<<"---------------------------------/n";    cout<<"欢 来 万 历"<<endl;  cout<<" 迎 到 年 !"<<endl;     cout<<"---------------------------------------------------/n";}//有参的构造函数 Date::Date(int year, int month, int day) //有参的构造函数 {     this->year = year;    this->month = month;    this->day = day;}//显示星期数void Date::Disp_Date(){        cout << year << "年" << month << "月" << day << "日 星期" ;    switch(this->week()){     case 0:     cout<<"日/n";     break;     case 1:     cout<<"一/n";     break;     case 2:     cout<<"二/n";     break;     case 3:     cout<<"三/n";     break;     case 4:     cout<<"四/n";     break;     case 5:     cout<<"五/n";     break;     case 6:     cout<<"六/n";     break; }  }  //用户设置时间void Date::set(){    cout<<"请输入您所想要查找的年、月、日:";  cin>>year>>month>>day;}//判断星期的函数 int Date::week(){ int C,y,d,M; if(this->month==1||this->month==2){ C = (this->year-1)/100; y = (this->year-1)%100; M = this->month+12;  d = this->day;  }  else{ C = this->year/100; //C世纪数减一 y = this->year%100; //y年份后两位  d = this->day; //d是日 M = this->month; } int W = C/4 - 2*C + y + y/4 + 13 * (M+1) / 5 + d - 1; //判断星期的蔡勒公式  if (W < 0) /* 如果w是负数,则计算余数方式不同 */ {    W = 7 - (-W) % 7;    return W; //返回值1~6对应星期一到六 0对应七  } else return W%7;}//显示日历的函数 void Date::show(){    Date temp; temp.year = this->year; temp.month = this->month; temp.day = 1;  int count = temp.week(); cout<<"---------------------------------------------------"<<endl;  //粗制滥造的界面  cout<<"---------------------"<<this->year<<"年"<<this->month<<"月"<<"---------------------/n";  cout<<"日 一 二 三 四 五 六/n"; for(int i=0;i<count;i++){ cout<<" /t"; } if(temp.month == 1 ||temp.month == 3 ||temp.month == 5 || temp.month ==7 || temp.month ==8 || temp.month ==10 ||temp.month == 12){ for(int j=1;j<32;j++){  if(j<10)cout<<" "<<j<<"/t";  else cout<<j<<"/t";  if(count==6){  cout<<"/n";  count = 0;  }  else count++; } } else if(temp.month == 4 ||temp.month == 6 ||temp.month == 9 ||temp.month == 11){ for(int j=1;j<31;j++){  if(j<10)cout<<" "<<j<<"/t";  else cout<<j<<"/t";  if(count==6){  cout<<"/n";  count = 0;  }  else count++; } } else if(temp.month==2){ if(isleapyear(this->year)){  for(int j=1;j<30;j++){  if(j<10)cout<<" "<<j<<"/t";  else cout<<j<<"/t";  if(count==6){   cout<<"/n";   count = 0;  }  else count++;  } } else{  for(int j=1;j<29;j++){  if(j<10)cout<<" "<<j<<"/t";  else cout<<j<<"/t";  if(count==6){   cout<<"/n";   count = 0;  }  else count++;  } }  } cout<<"/n---------------------------------------------------";} 

运行结果:

代码中没有检查输入错误的机制,写的比较粗糙,有许多错误之处望指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表