打印

小小万年历程序

[复制链接]
3275|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liub_2014|  楼主 | 2013-3-5 22:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


#include <iostream.h>
#include<stdio.h>
#define N 30
void menu();
void yeardays(int year);
void monthdays(int year,int month);
void daydata(int year,int month,int day);
void menuyear();
void menumonth();
void menuday();
                /*日期类开始*/
class Calender
{
public:
        Calender()
        {
                Year=1902;
                Month=1;
                Day=1;
                weeknumber=2;
        }
    Calender(int year)
        {
        Year=year;
                Month=1;
                weeknumber=2;
                Day=1;

        }
    Calender(int year,int month)
        {
            Year=year;
                Month=month;
                weeknumber=2;Day=1;
}
        Calender(int year,int month,int day)
        {
               Year=year;
                Month=month;
                Day=day;
        weeknumber=2;
        }
    void showcalender(int year);
        void showcalender(int year,int month);
    void showcalender(int year,int month,int day);
    int getyear();
    int getmonth();
    int getday();
private:
        int isruiyear(int year);
        int firstyear(int year);
        int firstmonth(int year,int month,int firstday);
    int Year;
        int Month;
    int Day;
    int weeknumber;
};                  /*类定义部分*/

void Calender::showcalender(int year)
{
        int i;
    cout<<"    欢迎查看"<<year<<"的日历"<<endl;
    for(i=1;i<=12;i++)
           showcalender(year,i);
}
void Calender::showcalender(int year,int month)
{
    char weekdate[7][10]={{"星期一"},{"星期二"},{"星期三"},{"星期四"},{"星期五"},{"星期六"},{"星期日"}};
        int firstday=firstyear(year);
        int i,k,j=isruiyear(year);
    cout<<endl<<year<<"年"<<month<<"月的日历"<<endl;
    switch(month)
        {        
            case 1:
                        {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                                
                        }break;
         case 2:
                        {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<28+j+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                                
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
                 case 3:
                         {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
       case 4:
                        {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<30+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
      case 5:
                        {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
      case 6:
                        {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<30+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
          case 7:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
     case 8:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
      case 9:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<30+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
      case 10:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
       case 11:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<30+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
      case 12:
                  {
                         i=firstmonth(year,month,firstday);
                for(k=0;k<7;k++)
                               cout<<weekdate[k]<<" ";
                                cout<<endl;
                                for(k=0;k<31+i;k++)
                                {
                                        if(k<i)
                                                cout<<"       ";
                                        else
                                                if((k-i+1)<10)
                                                    cout<<(k-i+1)<<"      ";
                                                else
                                                        cout<<(k-i+1)<<"     ";
                                        if((k+1)%7==0)
                                                cout<<endl;
                                }
                        }break;
        }
        cout<<endl;
}
void Calender::showcalender(int year,int month,int day)
{
   char weekdate[7][10]={{"星期一"},{"星期二"},{"星期三"},{"星期四"},{"星期五"},{"星期六"},{"星期日"}};
   int firstday=firstyear(year);
   int i=firstmonth(year,month,firstday);
   int number=(day-1)%7;
   if(i+number<=6)
          number=i+number;
        else
          number=i+number-7;
        cout<<year<<"年"<<month<<"月"<<day<<"号  "<<weekdate[number]<<endl;
}
int Calender::isruiyear(int year)
{
  if((year%4==0 && year%100!=0) || year%400==0)
          return 1;
  else
          return 0;
}
int Calender::firstyear(int year)      /*每年第一天的星期序号*/
{
    int i,counts=0;
        for(i=1902;i<year;i++)
        {
         if(isruiyear(i)==1)
                         counts=counts+366;
         else
                         counts=counts+365;
        }
        counts=counts%7;
        if(weeknumber+counts<=6)
                return(weeknumber+counts);
        else
                return(weeknumber+counts-7);

}
int Calender::firstmonth(int year,int month,int firstday)    /*每月第一天的星期序号*/
{
        int j,counts=0;
        if(isruiyear(year)==1)
                j=29;
        else
                j=28;
   switch(month)
   {
   case 1:counts=0+counts;break;
   case 2:counts=31;break;
   case 3:counts=31+j;break;
   case 4:counts=31*2+j;break;
   case 5:counts=31*2+30+j;break;
   case 6:counts=31*3+30+j;break;
   case 7:counts=31*3+30*2+j;break;
   case 8:counts=31*4+30*2+j;break;
   case 9:counts=31*5+30*2+j;break;
   case 10:counts=31*5+30*3+j;break;
   case 11:counts=31*6+30*3+j;break;
   case 12:counts=31*6+30*4+j;break;
   }
   counts=counts%7;
        if(firstday+counts<=6)
                return(firstday+counts);
        else
                return(firstday+counts-7);
}
int Calender::getyear()
{
        return Year;
}
int Calender::getmonth()
{
        return Month;
}
int Calender::getday()
{
        return Day;
}            /*日期类结束*/


/*函数定义部分*/
void menu()
{
        int i=1,select;

        while(i)
        {
            cout<<"    欢迎进入万年历信息系统"<<endl;
            cout<<"1 显示一年的日历信息"<<endl<<"2 显示 一月的日历信息"<<endl;
            cout<<"3 显示某一天的日历信息"<<endl<<"0 退出"<<endl;
        cin>>select;
                if(select>3 || select<0)
                {
                        cout<<"输入选择有错误,重新输入"<<endl;
                        continue;
                }
                else
                {
                        switch(select)
                        {
                        case 1:menuyear();break;
                case 2:menumonth();break;
                case 3:menuday();break;
           /* case 0:exit;break;*/
                        }
                }

        }
}

void menuyear()
{
   int year;
        cout<<"liubiao"<<endl;
        cout<<"    欢迎进入万年历信息系统"<<endl;
        cout<<" 请输入你要查看的年份"<<endl;
        cin>>year;
        yeardays(year);
}
void menumonth()
{
    int year,int month;
        cout<<"liubiao"<<endl;
        cout<<"    欢迎进入万年历信息系统"<<endl;
        cout<<" 请输入你要查看的年份"<<endl;
        cin>>year;
        cout<<" 请输入你要查看的月份"<<endl;
        cin>>month;
        monthdays(year,month);
}
void menuday()
{
    int year,month,day;
        cout<<"    欢迎进入万年历信息系统"<<endl;
        cout<<" 请输入你要查看的年份"<<endl;
        cin>>year;
        cout<<" 请输入你要查看的月份"<<endl;
        cin>>month;
        cout<<" 请输入你要查看的日期"<<endl;
        cin>>day;
        daydata(year,month,day);
}
void yeardays(int year)
{
        class Calender Year;
        Year.showcalender(year);
        
}
void monthdays(int year,int month)
{
         class Calender Year;
        Year.showcalender(year,month);
        
}
void daydata(int year,int month,int day)
{
   class Calender Year;
   Year.showcalender(year,month,day);
        
}


/*函数实现部分*/
int main()
{
    menu();
        return 0;
}

相关帖子

沙发
NE5532| | 2013-3-6 12:54 | 只看该作者
楼主贴个程序,不加任何说明?

使用特权

评论回复
板凳
xuri_6| | 2013-3-6 13:07 | 只看该作者
:o是呀,什么情况撒

使用特权

评论回复
地板
refee| | 2013-3-6 13:51 | 只看该作者
可能是贴出来让大家学习学习……;P

使用特权

评论回复
5
firejing| | 2013-3-6 15:09 | 只看该作者
辛苦了,不知道好不好用啊~

学习中。

使用特权

评论回复
6
xm419| | 2013-3-6 15:16 | 只看该作者
学习代码的话,注释能否多加一点

使用特权

评论回复
7
liub_2014|  楼主 | 2013-3-6 18:23 | 只看该作者
xm419 发表于 2013-3-6 15:16
学习代码的话,注释能否多加一点

在学习时写的,这些都没怎么想到

使用特权

评论回复
8
abtl168| | 2013-3-6 19:13 | 只看该作者
liub_2014 发表于 2013-3-6 18:23
在学习时写的,这些都没怎么想到

楼主还有时间,可以对关键代码作解释的,没关系。
这样,我们会给很多在校的小白们一些参考的!

使用特权

评论回复
9
refee| | 2013-3-8 17:01 | 只看该作者
关键是得先用CoolFormat把代码规整一下,然后加点注释之类的,不然看起来有点累人……;P

使用特权

评论回复
10
liub_2014|  楼主 | 2013-3-8 21:37 | 只看该作者
refee 发表于 2013-3-8 17:01
关键是得先用CoolFormat把代码规整一下,然后加点注释之类的,不然看起来有点累人…… ...

谢谢指点!

使用特权

评论回复
11
refee| | 2013-3-10 01:26 | 只看该作者
CoolFormat源代码格式化是一款C\C++\C#\CSS\HTML\Java\JavaScript\JSON\PHP\SQL\XML代码格式化工具。

CoolFormat源代码格式化使用手册.pdf

311.75 KB

使用特权

评论回复
12
liub_2014|  楼主 | 2013-3-10 19:26 | 只看该作者
refee 发表于 2013-3-10 01:26
CoolFormat源代码格式化是一款C\C++\C#\CSS\HTML\Java\JavaScript\JSON\PHP\SQL\XML代码格式化工具。 ...

谢谢了

使用特权

评论回复
13
天信平常心| | 2013-5-7 23:46 | 只看该作者
xiexie

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

178

帖子

0

粉丝