zoukankan      html  css  js  c++  java
  • c++课程设计(日历)

    今天比较无聊,就随便找了个程序设计来做,下面是源代码,以及效果图...不喜请喷!
    /*
    题目1:年历显示。 功能要求: (1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 (2) 输入年月,输出该月的日历。 (3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 */
      1 //日历
      2 // Coder @Gxjun 2014/3/30/10:35
      3 #include<iostream>
      4 #include<ctime>
      5 #include<string>
      6 #include<iomanip>
      7 using namespace std;
      8 namespace isprimer
      9 {
     10     int ren[13]={0,31,60,91,131,162,192,223,254,284,315,335,366} ; //是闰年
     11     int pin[13]={0,31,59,90,130,161,191,222,253,283,314,334,365} ;
     12 }
     13 namespace mon
     14 {
     15     int ren_month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
     16     int pin_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
     17 }
     18 bool isprim(int year)
     19 {
     20   if(year%400==0||(year%4==0&&year%100!=0))
     21      return true;
     22    return false;
     23 }
     24 void print(int month,int weekly,int tol_day)
     25 {
     26 
     27    int k=1;
     28    cout.width(3);
     29    cout<<month<<"  SUN MON TUE WED THU FRI SAT"<<endl;
     30    cout<<"     ";
     31    int kongge=weekly%7;
     32    while(kongge)
     33    {
     34      cout<<"    ";
     35      kongge--;
     36    }
     37    for(k=1;k<=tol_day ;k++)
     38    {
     39        cout<<setw(3)<<setiosflags(ios::right)<<k<<" ";
     40        if(weekly%7==6)
     41            cout<<endl<<"     ";
     42          weekly++;
     43    }
     44    cout<<endl;
     45 }
     46 class Calender
     47 {
     48   public :
     49     Calender(){};
     50     Calender(int y):year(y){};
     51     Calender(int y,int m): year(y),month(m){};
     52     Calender(int y,int m,int d): year(y),month(m),day(d){};
     53     ~Calender(){};
     54     void show1();
     55     void show2();
     56     void show3();
     57   private:
     58   int year;
     59   int month;
     60   int day;
     61 };
     62 void Calender::show1()
     63 {
     64     time_t current;
     65     struct tm *t;
     66     time(&current); //得到目前的时间
     67      t=localtime(&current);
     68      t->tm_year+=1900;
     69      t->tm_mon+=1;
     70      cout<<"今天的时间为:"<<t->tm_year<<"";
     71      cout<<t->tm_mon<<""<<t->tm_mday<<""<<endl;
     72      cout<<"您要查询的时间为: "<<year<<""<<month<<""<<day<<""<<endl;
     73      //判断是否闰年
     74      using namespace isprimer ;
     75        int en,start;
     76      if(isprim(t->tm_year)) //这一天为闰年
     77         start=ren[t->tm_mon-1]+t->tm_mday ;
     78      else
     79         start=pin[t->tm_mon-1]+t->tm_mday ;
     80      if(isprim(year))
     81           en=ren[month-1]+day;
     82      else
     83           en=pin[month-1]+day;
     84         int  year_cha=year - t->tm_year;
     85         int ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+en-start;
     86         cout<<"相隔:"<<ans<<""<<endl;
     87         cout<<"那一天是:"<<t->tm_wday+ans%7<<endl;
     88 };
     89 void Calender::show2()
     90 {
     91     time_t current;
     92     struct tm *t;
     93     time(&current); //得到目前的时间
     94     t=localtime(&current);
     95        int en,start,sday=1;
     96      using namespace isprimer ;
     97      t->tm_year+=1900;
     98      t->tm_mon++;
     99      if(isprim(t->tm_year)) //这一天为闰年
    100         start=ren[t->tm_mon-1]+t->tm_mday ;
    101      else
    102         start=pin[t->tm_mon-1]+t->tm_mday ;
    103      using namespace mon ;
    104      if(isprim(year))
    105           en=ren[month-1]+sday;
    106      else
    107           en=pin[month-1]+sday;
    108         int  year_cha=year - t->tm_year;
    109         int ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+en-start;
    110         //得到本月初一是星期几
    111         int weekly=t->tm_wday+ans%7;
    112         if(weekly<0)weekly+=7;
    113       if(isprim(year))
    114           print(month,weekly,ren_month[month]);
    115      else
    116          print(month,weekly,pin_month[month]);
    117 };
    118 void Calender::show3()
    119 {
    120     int start,ans;
    121     using namespace mon;
    122     time_t k;
    123     time(&k);
    124     struct tm *t;
    125     t=localtime(&k);
    126     //推出其为星期几即可
    127     int sday,mon;
    128     sday=mon=1;
    129     t->tm_year+=1900;
    130     t->tm_mon++;
    131     using namespace isprimer;
    132     if(isprim(t->tm_year))
    133     start=ren[t->tm_mon-1]+t->tm_mday;
    134     else
    135     start=pin[t->tm_mon-1]+t->tm_mday;
    136     int year_cha=(year-t->tm_year);
    137     ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+1-start;
    138     int weekly=t->tm_wday+ans%7;
    139     if(weekly<0)weekly+=7;
    140     if(isprim(year))
    141       {
    142           for(int i=1;i<=12 ;i++ )
    143           print(i,(weekly+ren[i-1])%7,ren_month[i]);
    144       }
    145     else
    146          for(int i=1;i<=12 ;i++ )
    147           print(i,(weekly+pin[i-1])%7,pin_month[i]);
    148 
    149 };
    150 int main()
    151 {
    152     int tem,aa,bb,cc;
    153     cout<<"你想要查找什么?";
    154     cout<<"1.某年某月某日距现在的天数以及是星期几?"<<endl;
    155     cout<<"2.某年某月的一个月的日历"<<endl;
    156     cout<<"3.某年的日历"<<endl;
    157     cin>>tem;
    158     switch(tem)
    159     {
    160      case 1:
    161      {
    162          cout<<"输入年 月 日"<<endl;
    163          cin>>aa>>bb>>cc;
    164          Calender stu(aa,bb,cc);
    165          stu.show1();
    166      } ;break;
    167      case 2:
    168      {
    169           cout<<"输入年 月"<<endl;
    170          cin>>aa>>bb;
    171          Calender tt(aa,bb);
    172          cout<<"this  is "<<aa<<" Calender !"<<endl;
    173          tt.show2();
    174          break;
    175      }
    176      case 3:
    177      {
    178          cout<<"输入 年"<<endl;
    179          cin>>aa;
    180          Calender stu(aa);
    181         stu.show3();
    182      }
    183     }
    184       return 0;
    185 }

    效果图:

  • 相关阅读:
    第一次结对编程作业
    第一次个人编程作业
    获取file中字段,写入到TXT文件中
    通过file中的字段查询MySQL内容
    MySQL常用语句
    MySQL乱码问题
    脚本数据编码格式转换
    mysql 常用命令操作
    thinkphp项目 Class 'finfo' not found
    POJ3255--次短路
  • 原文地址:https://www.cnblogs.com/gongxijun/p/3633874.html
Copyright © 2011-2022 走看看