好玩的万年历

/* 
* Copyright (c) 2012, 烟台大学计算机学院 
* All rights reserved. 
* 作    者:李慧慧
* 完成日期:2012 年 12 月 06 日 
* 版 本 号:v1.0 
* 
* 输入描述: 月份年份
* 问题描述:无
* 程序输出:漂亮的万年历
* 问题分析:略
* 算法设计:略
#include <iostream>
#include <string>
#include <iomanip>

using namespace std;
/*
*@function:判断给定年是否是闰年
*@return: true 闰年,false 平年
*/
bool isRunYear(int year);
/*
*@function:将指定年以前的所有年转成天数
*@return: 天数,比如输入的是2012,代表将
*    1900--2011所有年转成天数
*/
long year2day(int year);
/*
*@function:将指定月以前的所有月转成天数
*@return: 天数,比如输入的是8,代表将
*    1--7所有月转成天数
*/
int month2dayNum(int month,int year);
/*
*@function:返回指定月有多少天
*@return: 天数
*/
int month2day(int month,int year);
/*
*  主要的界面
*/
void mainFram();

int main()
{
    string accountName="a";
    string accountpwd="1";
    cout<<"\n\t--尊敬的用户,欢迎光临普通日历查询系统--"<<endl;
    cout<<"请输入用户名:";
    cin>>accountName;
    cout<<"请输入密码:";
    cin>>accountpwd;
    if(accountName=="a"&&accountpwd=="1"){
        cout<<"\n--------------------------------------------------------"<<endl;
        cout<<"\n********欢迎使用万年历系统*********\n";
        while(true){
            mainFram();
        }

    }else{
        cout<<"您输入的账号或密码有误,是否继续(输入 y 表示继续,其他表示退出)!"<<endl;
    }
    return 0;
}

void mainFram()
{
    int year,month,weekday;
    long sumDay=0;
long yeraday = 0;
    cout<<"请选择年份:"<<endl;
    cin>>year;
    cout<<"请选择月份:"<<endl;
    cin>>month;
    sumDay=year2day(year)+month2dayNum(month,year);
    weekday=sumDay%7;
    cout<<weekday<<endl;
if(isRunYear(year))
{
cout << "今年是闰年"<<endl;
}
else
{
cout << "今年不是闰年"<<endl;
}

    cout<<"\n   星期日  星期一  星期二  星期三  星期四  星期五  星期六\n";

for(int i=1;i<=weekday;i++)
{
cout<<"        ";
}
/*if(weekday==0)
{
weekday = 7; 
}*/

    i=weekday+2;

if(i==8)
{
i = 1; 
}
for(int j=1;j<=month2day(month,year);j++)
{
 
/*cout<<"  ";
cout<<j;
    cout<<"    ";*/
cout << setw(8)<<j<<setw(8);

i++;
if(i==8)
{
i=1;
cout<<"\n";
}

}
cout<<"\n";

}

bool isRunYear(int year){
    if((year%4==0&&year%100!=0)||(year%400==0)){
        return true;
    }else{
        return false;
    }
}

long year2day(int year)
{
    int i;
    long sum=0;
    for(i=1900;i<year;i++)
{
        if(isRunYear(i))
{
            sum+=366;
        }else{
            sum+=365;
        }
    }
    return sum;
}

int month2day(int month,int year){
     int day=0;
     switch(month){
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
             day=31;
             break;
        case 4:
        case 6:
        case 9:
        case 11:
              day=30;
              break;
        case 2:
            if(isRunYear(year)){
                day=29;
            }else{
                day=28;
            }
            break;
     }
     return day;
}

int month2dayNum(int month,int year){
    int i,sum=0;
    for(i=1;i<month;i++)
{
        sum+=month2day(i,year);
    }
    return sum;
} 


运行结果:

好玩的万年历_第1张图片

哈哈,好哇

你可能感兴趣的:(好玩的万年历)