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++ ,