文档库 最新最全的文档下载
当前位置:文档库 › 万年历C++源代码

万年历C++源代码

万年历C++源代码
万年历C++源代码

#include "iostream"

using namespace std;

//#include "stdafx.h"//1900.1.1是星期1

int yeardaysform1900(int year);

int mouthdays(int year,int mouth);

void printyear();

void printmouth(int ,int);

void findday();

char *dayss[]={"日","一","二","三","四","五","六"};

int main()

{

cout<<"******************************************************************* *********"<

cout<<"******************************* 欢迎本万年历!

******************************"<

cout<<"******************************************************************* *********"<

do{

cout<<"李金香,请选择:"<

cout<<"--------------------------1.显示莫一年的万年历

------------------------------"<

cout<<"--------------------------2.显示莫一月的万年历

------------------------------"<

cout<<"--------------------------3.查询莫一天的

-------------------------------------"<

cout<<"--------------------------0.退出

---------------------------------------------"<

int choice;

cin>>choice;

hh:switch(choice)

{

case 1:printyear();break;

case 2:

{ int year,mouth;cout<<"请输入年和月,如:2012 10"<

cin>>year>>mouth;

printmouth(year,mouth);break;}

case 3:findday();break;

case 0:exit(0);break;

default:cout<<"输入错误,请重新输入:"<

cin>>choice;goto hh;

}

}while(1);

return 0;

}

int yeardaysform1900(int year)

{

int i,days=0;

for(i=1990;i

{

if(i%4==0&&i%100!=0||i%400==0)

days+=366;

else

days+=365;

}

return days;}

int mouthdays(int year,int mouth)

{

int days;

bool aa;

if(year%4==0&&year%100!=0||year%400==0)aa=true;

else

aa=false;

switch(mouth)

{case 1:case 3:case 5:case 7:case 8:case 10:case 12: days=31;break;

case 2:if(aa)days=29;else days=28;break;

default:days=30;

}

return days;}

void printyear()

{

cout<

cout<<"请输入年:"<

cout<

int year;int i;

cin>>year;

for(i=1;i<13;i++)

{printmouth(year,i);for(int i=0;i<100000000;i++);}

}

void printmouth(int year,int mouth)

{

int i,days=0;

cout<

//int year,mouth;

//cout<<"请输入年和月,(如2012 3)"<

cout<

//cin>>year>>mouth;

days+=yeardaysform1900(year);

for(i=1;i

days+=mouthdays(year,i);

i=days%7;

int j=0;int aa=0;

cout<

for(j=0;j<7;j++)

cout<

for(j=0;j

cout<<" ";aa++;

if(aa%7==0)cout<

}

for(j=1;j<=mouthdays(year,mouth);j++)

{

if(aa%7==0)cout<

cout<

}cout<

}

void findday(){cout<<"请输入年月日,如:2012 10 1"<

cin>>year>>mouth>>day;int totalday=0,i;

for(i=1900;i

totalday+=yeardaysform1900(i);

for(i=1;i

totalday+=mouthdays(year,i);

for(i=1;i

totalday+=i;

totalday%=7;

cout<

C语言实训--万年历源代码

# include #include #include #include #include # define YEAR 365 int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int leap(int year); int calday(int y,int m); int counterdays(int year,int month,int day); int week(int year,int month,int day); int eachyeartotal(int year,int month,int day); int maxDay(int y,int month); void print(int y,int m,int w); void festival (int year,int month,int day); int IsLeap(int y); int guanli(int i); void rili(int year,int month); int rili1(); void rili2(); void rili3(); void rili4(); void rili5(); void fan(); void show(int year,int month,int date,int sec,int mini,int hour); int main() { int i; printf("***************************************\n"); printf("1.查询日历,输入年份:\n"); printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n"); printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n"); scanf("%d",&i); guanli(i); return 0; } int guanli(int i) { switch(i) { case 1:rili1();return main();

万年历系统源代码

#include #include #include #include #include #define KEYNUMUp 0x48 #define KEYNUMDown 0x50 #define KEYNUMLeft 0x4b #define KEYNUMRight 0x4d #define KEYNUMPageUp 0x49 #define KEYNUMPageDown 0x51 int year,month,day; //全局变量记录时间 int daysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31, 31,30,31, 30,31}}; int runYear(int year) //判断是否是闰年 { int flag=0; if(year%400==0||(year%4==0&&year%100!=0)) flag=1; return flag; } struct tm* getDay()//从系统取得当前时间 { time_t timer; struct tm* gmt; time(&timer); gmt=localtime(&timer); return gmt; } int dayExame(int year,int month,int day)//检查日期是否正确 { if(year<0||month<1||month>12||day<1||day>31) return 0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10:

C语言编写的万年历代码

该代码在VC++6.0编译器下运行,只要按照编译器给出的说明操作,就能将万年历显示在调试窗口中了……………………………………由于制作时间匆忙,很多注释都来不及写了,对于出学者可以慢慢看,代码很简单的,都放在了主函数里,如果有兴趣的话,可以把这些代码放在几个文件里,这样会好看点,加油了! #include #include void main() { int m,i,j,n=0,y=2010,wo,w,a; printf("input the form of: year-month:\t"); scanf("%d-%d",&y,&m); //输入格式的决定 if(y%4==0&&y%100!=0||y%400==0) a=29; else a=28; //闰年的判断及2月日数的确定 if(m<1||m>12){ printf("month is not exit,please input later!\n"); exit(0); } wo=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7; //1月1日的算法wo表示 for(i=0;i<55;i++) printf("*"); //*的输入 printf("\n"); for(j=1;j<=7;j++) printf("星期%d\t",j); //星期的输入 printf("\n"); //表前的建造 switch(m){ case 1:for(i=1;i

printf("\t"); n++; } for(j=1;j<=31;j++){ if(n%7==0) printf("\n"); printf("%d\t",j); n++; } break; // 1 month case 2:w=(wo+31)%7; for(i=1;i

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

数字万年历简易C语言程序源代码

#include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit rs=P2^0; // lcd 控制端 sbit en=P2^2; // lcd 控制端 sbit all=P2^1; // lcd 控制端 sbit s0=P1^5; //时间调节 sbit s1=P1^6; sbit s2=P1^7; sbit voice=P2^7; int nt; sbit DQ=P2^6; sbit DS1302_CLK = P2^3; //实时时钟时钟线引脚sbit DS1302_IO = P2^4; //实时时钟数据线引脚sbit DS1302_RST = P2^5; //实时时钟复位线引脚sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; unsigned char time; #define ads_y 0 #define ads_mo 3 #define ads_d 6 #define ads_w 9 #define ads_h 65 #define ads_m 68 #define ads_s 71 #define DS1302_SECOND 0x80 //写入ds地址宏定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

用C语言编写万年历,详细代码

/* welcome to use the WanNianLi system! */ #include #include #include char* month_str[]={"January","February","March","April","May","June","July","August ","September","October","November","December"}; char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Sat urday"}; int leap (int year)//判断闰年 { if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } int month_day(int year,int month) //判断这一个月有多少天 { int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31}; //初始化每个月的天数if(leap(year)&&month==2 ) return 29; else return(mon_day[month-1]); } int firstday(int year,int month,int day)//判断这一个月的第一天是星期几 { int c=0; float s; int m; for(m=1;m

51单片机实现万年历程序文件

51单片机实现万年历 利用AT89S52单片机的P0口来和另外几个口来控制1602液晶的显示和P1口还有其它口来控制ds12887时钟芯片。设置四个按键,1个定义为时间设置功能键,一个定义为闹钟设置功能键,另外两个用来调节时间的增减。 原理图: pcb图:

源程序: #include #define uint unsigned int #define uchar unsigned char sbit beep=P2^0;//蜂鸣器控制口 sbit timeadd=P2^1;//调节时间加 sbit timesub=P2^2;//调节时间减 sbit timeclk=P2^3;//闹钟设定键 sbit timefun=P2^4;//时间设定键 sbit lcdrs=P2^5;//液晶的命令和数据控制口 sbit ledrw=P2^6;//液晶的写数据口 sbit lcden=P2^7;//液晶显示模块的使能端 sbit timeds=P3^3;//时钟芯片地址闸 sbit timerw=P3^4;//时钟芯片读写 sbit timeas=P3^5;//时钟芯片地址闸 sbit timeen=P3^6;//时钟芯片片选 uchar code table[]="20 - - week "; uchar code table1[]=" : : ";//要显示的字符串 char num,shi,fen,miao,nian=2000,yue,ri,week,numfun,anumfun,flag,flag1; uchar leap;

void delay(uint x){ uchar i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void didi() { beep=0; delay(1000); beep=1; delay(1000); } void write_(uchar ){ lcdrs=0; P0=; delay(5); lcden=1; delay(20); lcden=0; } void write_date(uchar date){ lcdrs=1; P0=date; delay(5); lcden=1; delay(20); lcden=0; } void write_sfm(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10; write_(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge); } void write_nyr(uchar add,uchar date){ uchar shi,ge; shi=date/10; ge=date%10;

万年历系统——C语言完整版

实验十九:编写一个万年历系统 1.设计目的: 从实验的角度来看,这次课程设计一方面可以让自己巩固并加深对C语言程序设计知识的理解,掌握和提高C语言编程和程序的基本调试的基本技能,进一步理解和运用结构化程序的思想和方法;另一方面,可以让自己在面对一个全新的问题时,学会如何思考,如何寻找问题的关键,从而提升自己的能力。 2.总体设计: 1.、当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几); 2、当系统日期变到下一个月时,系统自动翻页到下一月。 3.调试与测试: 4.源程序清单和执行结果:

#include #include #include #include int leap(int year ) { if ((year %4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { return 1; } return 0; } void show(int year,int month,int date,int sec,int mini,int hour) { const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i,j,wdays,mdays,days; for(i=1,days=0;i

万年历时钟芯片代码

万年历时钟芯片代码 /******************************************************************** * 文件名: 时钟DS1302LCD.c * 描述: 该程序实现了用单片机来控制时钟芯片DS1302进行时钟的显示。时钟会在1602上显示. * 创建人:东流,2012年2月7日 * 版本号:1.0 * 杜邦线接法:P3.5接J18的1端;J3.6接J18的2端;J3.7接J18的3端。1602接到J17的排座上。 ********************************************************************* **/ #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit T_CLK = P3^5; /*实时时钟时钟线引脚*/ sbit T_IO = P3^6; /*实时时钟数据线引脚*/ sbit T_RST = P3^7; /*实时时钟复位线引脚*/ //这三个引脚参考资料 sbit E=P2^7; //1602使能引脚 sbit RW=P2^6; //1602读写引脚 sbit RS=P2^5; //1602数据/命令选择引脚 /******************************************************************** * 名称: delay() * 功能: 延时,延时时间大概为5US。 * 输入: 无 * 输出: 无 ********************************************************************* **/ void delay() { _nop_();

万年历C语言代码

万年历C语言代码 #include main() { for(;;) { int year,month,a,b,c,m,n=28;/*定义变量*/ long e; printf("请输入年份"); scanf("%d",&year); e=year; e--; /*前一年*/ e=(e*365+e/4)%7; /*计算这一年的第一天是星期几*/ m=e; /*把第一天的日期赋给m*/ if((year%4==0)||(year%100!=0)&&(year%400!=0))/*如果是闰年*/ n++; printf("%d的日历:",year); for(month=1;month<=12;month++) { if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)/*这几个月每个月都是31天*/ { c=0; printf("\n"); printf(" %d月\n",month); printf(" 日一二三四五六\n"); for(b=1;b<=m;b++) { c++; printf(" ");/*从星期日开始到这个月开始的那天前都是空的*/ } for(a=1;a<=31;a++) { c++; if(c%7-1==0&&c!=1)/*判断一行是否已排满,满了就要换行*/ printf("\n"); if(a<10) /*如果是小于10,空一格,大于10,前后空*/ printf(" "); printf(" %d ",a); m++; if(m==7)/*一行排满,开始换行。(指的是这个月的最后一行)*/ m=0;

万年历C语言设计

万年历的设计: 要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 万年历的程序流程图: 主要程序流程图: 具体对于月份和年份的程序图如下:

上图为计算星期方法上图为打印日历程序图

万年历的设计的程序源代码: #include #include #include void f() { int day,month,year,sum,leap,S; printf("\n请输入年月日\n"); scanf("%d%d%d",&year,&month,&day); while(1) { if((month>12||month<1)||(day>31||day<1)) { printf("输入错误,重新输入"); scanf("%d%d%d",&year,&month,&day); } else break; } switch(month) {

case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; if(year%400==0||(year%4==0&&year%100!=0)) leap=1; else leap=0; if(leap==1&&month>2) sum++; S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; switch(S)

Java万年历源代码

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; publicclass wannianli extends Jframe//窗体类implements ActionListener,//事件处理接口MouseListener { private Calendar cld = Calendar.getInstance();//获取一个Calendar类的实例对象 private String[] astr = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" }; //JPanel是Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing包中,是一种轻量级容器,可以加入到JFrame窗体中。JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField等private DefaultTableModel dtm = new DefaultTableModel(null, astr);//创建了一个表格模型 private JTable table = new JTable(dtm); private JScrollPane sp = new JScrollPane(table); private JButton bLastYear = new JButton("上一年

万年历程序(不要嫌程序长,功能很齐全,而且对初学者很有帮助)

#include #include #define uint unsigned int #define uchar unsigned char void Stopwatch(); //声明秒表函数 void Clock(); //声明闹钟函数 void Output(); //声明输出函数 void important(); //声明重要函数(相当于mian()函数) void TLimit(); //声明调节温度上下限函数 sbit DS1302_CLK = P1^7; //实时时钟时钟线引脚 sbit DS1302_IO = P1^6; //实时时钟数据线引脚 sbit DS1302_RST = P1^5; //实时时钟复位线引脚 sbit wireless_1 = P3^0; //温度过上限标志 sbit wireless_2 = P3^1; //温度适中标志 sbit wireless_3 = P3^2; //温度过下限标志 sbit fan = P3^4; //开风扇标志 sbit clock=P3^5; //开关闹钟 sbit setclock = P3^6; //闹钟开启控制 sbit stopwatch = P3^7; //秒表开启控制 sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数 sbit Set = P2^0; //模式切换键 sbit Up = P2^1; //加法按钮 sbit Down = P2^2; //减法按钮 sbit out = P2^3; //立刻跳出调整模式按钮 sbit DQ = P1^0; //温度传送数据IO口 char c3,c2=0; char c=0,LowerBonud=20,UpperLimit=30; char a1=0,a2=0,a3=0,a4=0; char k[8]={'0','0',':','0','0',':','0','0'}; void InitTimer0(void)//产生10ms时间间隔 { TMOD = (TMOD & 0XF0) | 0X01; //定时器0工作在模式1,16Bit定时器模式 TH0 = (65536 - 8000)/256; TL0 = (65536 - 8000)%256; TR0 =1; ET0 =1;//开启定时器和中断 EA = 1; } char done,count,temp,flag,up_flag,down_flag; // uchar temp_value; //温度值

jQuery万年历日历设置代码

jQuery万年历日历设置代码- A5源码

万年历系统课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》 课程设计报告 题目:万年历系统 专业:计算机科学与技术 班级: 姓名: 学号: 指导教师: 成绩: 计算机与信息工程系 2014年6月6日

目录

1 设计内容及要求 万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。 (2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。 (3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。 (4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。 要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。当用户随意改动年份或月份时系统自动显示与星期对应的日期。用户点击日期时系统会显示具体星座信息。 2 概要设计 (1)总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 (2)输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期

万年历课程设计报告

西安文理学院软件学院课程设计报告 设计名称:程序语言课程设计 设计题目:万年历 学生学号:1402110147 专业班级:软件工程一班 学生姓名:罗强强 学生成绩: 指导教师(职称):张庆刚 课题工作时间:2012.11.15 至2012.11.29

软件学院课程设计任务书 指导教师:院长: 日期:2012年11月15日

摘要 本程序是一个万年历程序,模仿现实生活中的挂历. 当前页以系统当前日期的月为准显示当前月的每一天(显示出日及对应的星期几). 当系统日期变到下一月时,系统自动翻页到下一月,还可以在程序中任意的输入公元年份,月,日进行日期查询,当输入完成后,用户图形界面出现相应年月简易的日历表,并且是以星期的格式出现。而且每个运行界面的颜色都不相同。在本程序中主要运用了定义整型,字符型,指针变量,字符型数组和指针数组,数组的初始化和引用和指针的使用,达到 c 语言程序编写所体现的方便快捷的功效。

目录 摘要...................................................................................................II 第一章绪论.............................................................. .. (2) 1.1 课题的背景 (2) 1.2 课题的目的 (2) 1.3 课题的意义 (2) 第二章设计简介及设计方案论述 (3) 2.1 实现的功能 (3) 2.2 结构模块分析 (3) 第三章详细设计 (4) 3.1 设计思路 (4) 3.2 功能模块 (4) 3. 3 各模块函数详细说明 (5) 第四章运行结果............................................................................... .. (9) 4.1 系统使用说明 (9) 4.2 系统运行结果接截图 (9) 总结 (12) 参考文献 (13) 附录主要程序代码 (14)

java万年历程序代码

package pack; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Calendar; import java.util.Date; public class rili extends JFrame implements ActionListener { JButton b_today, b_query; JLabel lb_Year, lb_Month; JButton b_week[] = new JButton[7]; JButton b_day[][] = new JButton[6][7]; Container thisContainer; JPanel pUp; JPanel pCenter; JPanel pCenter_week, pCenter_day; JComboBox year, month; public void init() { b_today = new JButton("Today"); b_query = new JButton("Query"); setTitle("日历"); lb_Year = new JLabel("Year"); lb_Month = new JLabel("Month"); year = new JComboBox(); month = new JComboBox(); setDate(); pUp = new JPanel(); pUp.add(lb_Year); pUp.add(year); pUp.add(lb_Month); pUp.add(month); pUp.add(b_today); pUp.add(b_query); b_today.addActionListener(this); b_query.addActionListener(this); pCenter = new JPanel(); pCenter_week = new JPanel(); b_week[0] = new JButton("星期日"); b_week[1] = new JButton("星期一"); b_week[2] = new JButton("星期二"); b_week[3] = new JButton("星期三");

万年历程序源代码

#include #include #include using namespace std; int dayofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int dd[12]={ 31,28,31,30,31,30,31,31,30,31,30,31 }; class datee { private: int d,m,y; public: int isLeap( int y ); int getDayPerMonth( int y , int m ); int getNumDay( datee D ); bool legalDate( datee D ); void count(); }; /*?D??ê?·?ê?èò?ê*/ int datee::isLeap( int y ) { if( !(y%4)&&y%100 || !(y%400) ) return 1; return 0; } /*????2?í??é???t??·Yμ?ììêy*/ int datee::getDayPerMonth( int y , int m ) { if( m==2 ) return dd[1]+isLeap( y ); return dd[m-1]; } /*????ê±??2?*/ int datee::getNumDay( datee D ) { int ret=0;

int i; for( i=1 ; i<=D.y ; i++ ) ret+=365+isLeap( D.y ); for( i=1 ; i9999 ) return false; if( D.m<1||D.m>12 ) return false; if( D.d<1||D.d>getDayPerMonth( D.y , D.m ) ) return false; return true; } void datee::count() { long day; datee sysDate,date; cout<<"please input what date you want to compared:"<>date.y>>date.m>>date.d; while( !legalDate(date) ) { cout<<"illegal date,input again: "<>date.y>>date.m>>date.d; } cout<<"the tow:"; cin>>sysDate.y>>sysDate.m>>sysDate.d; while( !legalDate(sysDate) ) { cout<<"illegal system date,input again: "<>sysDate.y>>sysDate.m>>sysDate.d; } day=getNumDay(date)-getNumDay(sysDate); if(day<0) day=-day;