c++日历改进版

来源:互联网 发布:淘宝店铺店招全屏 编辑:程序博客网 时间:2024/05/15 23:53
#include<iostream>  # include<fstream>  #include<time.h>  #include<string>  #include<iomanip>  using namespace std;  void bangzhu();  void xianzaishijian();  void chakanrili();  int runnian(int);  int tianshu(int,int);  void shuru();  int shurupanduan(int ,int,int);  void shuchu();  void shuxiang(int);  void shuchushuxiang();  void dijitian();  void nianli();  int main()  //主函数  {      int a;      bangzhu();      while(cin>>a)      {if(a==0)      break; system("cls");        switch(a)          {//case 0: break;break;          case 1: xianzaishijian(),bangzhu();break;          case 2: chakanrili();break;          case 3: shuchushuxiang();break;          case 4: dijitian();break;          case 5: nianli();break;            case 9: bangzhu();break;}            }  return 0;}    void xianzaishijian()    //输出现在时间以及当前月份日历  {   time_t t = time(NULL);   struct tm   *local = localtime(&t);   int year = local -> tm_year + 1900;   int month = local -> tm_mon + 1;   int day = local -> tm_mday;  int hour = local -> tm_hour;   int minute = local -> tm_min;   int second = local -> tm_sec;     int d,y,m,l;  y=year;  m=month;  d=day;  int z=1;  l=shurupanduan(y, m,z);   while(l==0)   {cin>>y>>m;  l=shurupanduan(y,m,z);  }      int q,s,i,sum=0;       for(i=1905;i<y;i++)       {sum+=365;         s=runnian(i);           if(s==1)             sum++;}       for(i=1;i<m;i++)       {s=runnian(y);  switch(i)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  sum+=q;  }       if(s==1&&m>2)          sum++;  switch(m)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  s=runnian(y);  if(s==1&&m==2)  q++;  int u,w;  u=sum%7;  w=3*u;  sum=sum+d;  d--;  d=sum%7;    cout <<"当前时间: "<<endl<<year<<"年"<<month<<"月"<<day<<"日"<<' '<<"星期";     switch(d)  {case 0:cout<<"日";break;  case 1:cout<<"一";break;  case 2:cout<<"二";break;  case 3:cout<<"三";break;  case 4:cout<<"四";break;  case 5:cout<<"五";break;  case 6:cout<<"六";break;  }  cout<<"  ";  shuxiang(year);  cout <<endl<<"     "<<hour<<":"<<minute<<":"<<second<<endl<<endl;   cout<<" 日 一 二 三 四 五 六"<<endl;  for(i=1;i<=w;i++)  cout<<' ';    for(i=1;i<=q;i++)    {if(u==6)    {cout<<fixed<<setw(2)<<i<<"              "<<endl;;    u=-1;}     else cout<<fixed<<setw(2)<<i<<' ';       u++;}       }   void bangzhu()                         //操作指令提示  {  cout<<"请输入以下指令"<<endl<<endl;             cout<<"    1.输出当前时间          " <<endl;      cout<<"============================"<<endl;      cout<<"    2.查看指定月份日历         "<<endl;      cout<<"============================"<<endl;      cout<<"    3.查看属相         "<<endl;      cout<<"============================"<<endl;      cout<<"    4,计算指定日期是一年中的第几天"<<endl;      cout<<"============================"<<endl;      cout<<"    5,显示输出任何一年的年历,并写入一文本"<<endl;      cout<<"============================"<<endl;      cout<<"    9.输出指令集"<<endl;      cout<<"============================"<<endl;      cout<<"    0.结束本程序          "<<endl ;      cout<<"============================"<<endl;  }    int shurupanduan(int a,int b,int c=1)   //判断输入年月是否正确  {int l=1,q;  if(a<=0||b<=0||b>12||c<0)  {l=0;  cout<<"您的输入有误请重新输入"<<endl;}  switch(b)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  if(c>q)  {l=0;  cout<<"您的输入有误请重新输入"<<endl;}    return l;}    int runnian(int a) //判断是是否为闰年  {int l=0;  if((a%4==0&&a%100!=0)||(a%400==0))  l=1;  return l;  }    void chakanrili()   //查看指定月份日历  {cout<<"请输入年月中间用空格隔开如2013 1"<<endl;  int y,m,l;  cin>>y>>m;  int z=1;  l=shurupanduan(y,m,z);   while(l==0)   {cin>>y>>m;  l=shurupanduan(y,m,z);  }      int q,s,i,sum=0;       for(i=1905;i<y;i++)       {sum+=365;         s=runnian(i);           if(s==1)             sum++;}       for(i=1;i<m;i++)       {s=runnian(y);  switch(i)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  sum+=q;  }       if(s==1&&m>2)          sum++;  switch(m)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  s=runnian(y);  if(s==1&&m==2)  q++;  int u,w;  u=sum%7;  w=3*u;  cout<<" 日 一 二 三 四 五 六"<<endl;  for(i=1;i<=w;i++)  cout<<' ';    for(i=1;i<=q;i++)    {if(u==6)    {cout<<fixed<<setw(2)<<i<<"              "<<endl;;    u=-1;}     else cout<<fixed<<setw(2)<<i<<' ';       u++;}  cout<<endl;}    void shuxiang(int y)//判断属相  {int p;  p=y%12;  switch(p)    {case 1:cout<<"鸡年";break;   case 2:cout<<"狗年";break;    case 3:cout<<"猪年";break;   case 4:cout<<"鼠年";break;    case 5:cout<<"牛年";break;    case 6:cout<<"虎年";break;    case 7:cout<<"兔年";break;   case 8:cout<<"龙年";break;   case 9:cout<<"蛇年";break;   case 10:cout<<"马年";break;   case 11:cout<<"羊年";break;   case 12:cout<<"猴年";break;}  }  void shuchushuxiang() //输出属相  {      cout<<"请输入年份"<<endl;      int y;      cin>>y;      shuxiang(y);      cout<<endl;  }  void dijitian()  {int y,m,d,sum=0,i,l,s,q;  cout<<"请输入年月日"<<endl;  cin>>y>>m>>d;  l=shurupanduan(y,m,d);   while(l==0)   {cin>>y>>m;  l=shurupanduan(y,m,d);  }      for(i=1;i<m;i++)       {s=runnian(y);  switch(i)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  sum+=q;  }       if(s==1&&m>2)          sum++;       sum=sum+d;       cout<<y<<"年"<<m<<"月"<<d<<"日是这一年中第"<<sum<<"天"<<endl;    }  void nianli()  {cout<<"请输入文本名称:";   char s[20];  cin>>s;   ofstream outfile(s,ios::out);  cout<<"请输入年份"<<endl;  int y,m,l;  cin>>y;  for(m=1;m<=12;m++)  {  int z=1;  l=shurupanduan(y,m,z);   while(l==0)   {cin>>y>>m;  l=shurupanduan(y,m,z);  }      int q,s,i,sum=0;       for(i=1905;i<y;i++)       {sum+=365;         s=runnian(i);           if(s==1)             sum++;}       for(i=1;i<m;i++)       {s=runnian(y);  switch(i)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  sum+=q;  }       if(s==1&&m>2)          sum++;  switch(m)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  s=runnian(y);  if(s==1&&m==2)  q++;  int u,w;  u=sum%7;  w=3*u;  outfile<<"   "<<y<<"年"<<m<<"月"<<endl;  outfile<<" 日 一 二 三 四 五 六"<<endl;  for(i=1;i<=w;i++)  outfile<<' ';    for(i=1;i<=q;i++)    {if(u==6)    {outfile<<fixed<<setw(2)<<i<<"              "<<endl;;    u=-1;}     else outfile<<fixed<<setw(2)<<i<<' ';       u++;}  outfile<<endl;  }  for(m=1;m<=12;m++)  {  int z=1;  l=shurupanduan(y,m,z);   while(l==0)   {cin>>y>>m;  l=shurupanduan(y,m,z);  }      int q,s,i,sum=0;       for(i=1905;i<y;i++)       {sum+=365;         s=runnian(i);           if(s==1)             sum++;}       for(i=1;i<m;i++)       {s=runnian(y);  switch(i)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  sum+=q;  }       if(s==1&&m>2)          sum++;  switch(m)  {case 1:q=31;break;  case 2:q=28;break;  case 3:q=31;break;  case 5:q=31;break;  case 7:q=31;break;  case 8:q=31;break;  case 10:q=31;break;  case 12:q=31;break;  case 4:q=30;break;  case 6:q=30;break;  case 9:q=30;break;  case 11:q=30;break;}  s=runnian(y);  if(s==1&&m==2)  q++;  int u,w;  u=sum%7;  w=3*u;  cout<<"   "<<y<<"年"<<m<<"月"<<endl;  cout<<" 日 一 二 三 四 五 六"<<endl;  for(i=1;i<=w;i++)  cout<<' ';    for(i=1;i<=q;i++)    {if(u==6)    {cout<<fixed<<setw(2)<<i<<"              "<<endl;;    u=-1;}     else cout<<fixed<<setw(2)<<i<<' ';       u++;}  cout<<endl;  }  }  

1 0
原创粉丝点击