当前位置:编程学习 > C/C++ >>

5_5万年历(读程序)

[cpp]
/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: object.cpp
* 作者:纪子龙
* 完成日期: 2013年3  月 21 日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
* 程序输出:无
*/ 
#include <iostream>  
#include <iomanip>  
using namespace std; 
class Date 

private: 
    int year; 
    int month; 
    int day; 
    int monthDay[12]; 
public: 
    Date(int y=1, int m=1, int d=1):year(y),month(m),day(d)//在声明构造函数的同时指定默认参数  
    { 
        monthDay[0]=monthDay[2]=monthDay[4]=monthDay[6]=monthDay[7]=monthDay[9]=monthDay[11]=31; 
        monthDay[1]=28;  
        monthDay[3]= monthDay[5]= monthDay[8]= monthDay[10]=30;                                      
    }//给每月赋天数值  
    void SetYear(int y) { year=y; } 
    void SetMonth(int m) { month=m; } 
    void SetDay(int d) { day=d; }//设置年月日  
    int GetYear() const { return year; } 
    int GetMonth() const { return month; } 
    int GetDay() const { return day; } 
    int GetMonthDay(const int i) 
    { 
        if(i==2&&Isleapyear(year)) 
            return 29; 
        return monthDay[i-1];  
    } 
 
    bool Isleapyear(int y)          //  判断是否为闰年。  
    { 
        return ((y%4==0 && y%100!=0)||(y%400==0)); 
    } 
 
    int GetYearDays(int y)          //  年份y的天数。  
    { 
        if(Isleapyear(y)) 
            return 366; 
        return 365; 
    } 
 
    int DateToNum()     //  给定日期,返回天数。  
    { 
        int sum=0; 
        int i=0; 
        for(i=1;i<year;i++) 
            sum+=GetYearDays(i); 
        if(Isleapyear(year)) 
            monthDay[1]=29; 
        else 
            monthDay[1]=28; 
        for(int j=1;j<month;j++) 
            sum+=monthDay[j-1]; 
        return sum+day; 
    } 
 
    Date NumToDay(int n)                //  给定天数,返回日期。  
    { 
        Date d(1, 1, 1); 
        for(;n>=GetYearDays(d.year);d.year++) 
            n-=GetYearDays(d.year); 
        if(Isleapyear(d.year)) 
            monthDay[1]=29; 
        else 
            monthDay[1]=28; 
        for(;n>=monthDay[d.month];d.month++) 
            n-=monthDay[d.month]; 
        d.day=n; 
        return d; 
    } 
 
    void OutputYearDate(int y)          //  给定年份y,输出年份y的日历。  
    { 
        if(y<=0) 
            return; 
        int i=0; 
        int j=0; 
        Date d; 
        d.year=y; 
        d.day=1; 
        cout<<endl<<endl<<setw(20)<<y<<"年"<<endl; 
        while(i++<12) 
        { 
            cout<<endl<<endl<<setw(15)<<i<<" 月"<<endl; 
            cout<<endl 
                <<setw(5)<<"SUN" 
                <<setw(5)<<"MON" 
                <<setw(5)<<"TUE" 
                <<setw(5)<<"WED" 
                <<setw(5)<<"THU" 
                <<setw(5)<<"FRI" 
                <<setw(5)<<"SAT" 
                <<endl; 
            cout<<"-----------------------------------"<<endl; 
            j=0; 
            d.month=i; 
         &n
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,