#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:
case 12:
if(day>31)return 0;break;
case 4:
case 6:
case 9:
case 11:
if(day>30)return 0;break;
default:
if(runYear(year)&&day>29)
return 0;
else if(runYear(year)==0&&day>28)
return 0;
}
return 1;
}
int getwDay(int year,int month,int day)//取得星期
{
int nday=0,nDay,i,w;
for(i=0;i nday+=daysOfMonth[runYear(year)][i]; nday+=day; nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday; w=nDay%7; return w; } void printCalender(int year,int month,int day); void setDay(int &year,int &month,int &day)//调节日期 { printf("%c:上一年 %c:下一年\n",24,25); printf("%c:上个月 %c:下个月\n",27,26); printf("PageUp:昨天 PageDown:明天\n"); printf("其他:返回主菜单\n"); char k; getch(); k=getch(); switch(k) //通过方向键和PageUp、PageDown键来调整日期 { case KEYNUMUp: year--; if(dayExame(year,month,day)==0){year++; printf("%c",7);} //检查日期的合法性,//若错误,保持日期不变,并警告 system("cls");printCalender(year,month,day);setDay(year,month,day);break; case KEYNUMDown: year++; if(dayExame(year,month,day)==0){year--;printf("%c",7);} system("cls");printCalender(year,month,day);setDay(year,month,day);break; case KEYNUMLeft: month--; if(dayExame(year,month,day)==0){month++;printf("%c",7);} system("cls");printCalender(year,month,day);setDay(year,month,day);break; case KEYNUMRight: month++; if(dayExame(year,month,day)==0){month--;printf("%c",7);} system("cls");printCalender(year,month,day);setDay(year,month,day);break; case KEYNUMPageUp: day--; if(dayExame(year,month,day)==0){day++;printf("%c",7);} system("cls");printCalender(year,month,day);setDay(year,month,day);break; case KEYNUMPageDown: day++; if(dayExame(year,month,day)==0){day--;printf("%c",7);} system("cls");printCalender(year,month,day);setDay(year,month,day);break; default: ; } } void printCalender(int year,int month,int day)//打印月历 { int i; char wday[7][4]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; printf(" %d年%d月%d日\n",year,month,day); printf("***********************************\n"); for(i=0;i<7;i++) printf("%5s",wday[i]); printf("\n"); int w; int nowDay=1; w=getwDay(year,month,nowDay);//找到第一天的星期 int n; n=daysOfMonth[runYear(year)][month-1]; switch(w) //放置第一天 { case 0:printf("%5d",nowDay);break; case 1:printf("%10d",nowDay);break; case 2:printf("%15d",nowDay);break; case 3:printf("%20d",nowDay);break; case 4:printf("%25d",nowDay);break; case 5:printf("%30d",nowDay);break; default:printf("%35d\n",nowDay); } nowDay++; for(i=1;i { w=getwDay(year,month,nowDay); printf("%5d",nowDay); if(w==6) //如果是星期六则换行打印 puts("\n"); nowDay++; } printf("\n***********************************\n\n"); } void checkCalender()//查询日历 { system("cls"); int year,month,day; printf("请输入你要查询的日期(格式为年月日,如2011 12 22):"); scanf("%d%d%d",&year,&month,&day); while(!dayExame(year,month,day)) //如果日期输入不正确,则重新输入{ printf("%c你输入的日期错误,请重新输入:",7); scanf("%d%d%d",&year,&month,&day); } system("cls"); if(runYear(year)) printf("\n 闰年\n\n"); else printf("\n 平年\n\n"); printCalender(year,month,day); } void inline backMenu() { printf("请按任意字符键返回主菜单:"); getch(); system("cls"); } void mainMenu(int &year,int &month,int &day)//主菜单 { printf(" ************主菜单************\n"); printf(" * 1、日历显示 *\n"); printf(" * 2、日历查询 *\n"); printf(" * 3、修改日期 *\n"); printf(" * 4、帮助 *\n"); printf(" * 5、退出 *\n"); printf(" ******************************\n"); char menu[100]; int flag=0; do{ int f=0; do { f=0; printf("\n 请输入相应数字:"); scanf("%s",menu); if(strlen(menu)>2)f=1; }while(f==1); switch(*menu) { case '1': system("cls"); //清屏 printCalender(year,month,day); backMenu(); //实现任意键返回主菜单 mainMenu(year,month,day); break; case '2': system("cls"); checkCalender(); backMenu(); mainMenu(year,month,day); break; case '3': system("cls"); printCalender(year,month,day); setDay(year,month,day); printf("请按任意字符键返回主菜单:"); getch(); system("cls"); mainMenu(year,month,day); break; case '4': system("cls"); printf("在主菜单中输入相应的数字就可以完成以下功能:\n\n"); printf("* 1、显示今天所在月的月份\n\n"); printf("* 2、输入日期,判断该年是否是闰年,并显示所在月份的月历\n\n"); printf("* 3、用%c %c %c %c PageUp PageDown 进行日期的调整\n\n",24,25,27,26); printf("* 4、显示功能及操作方法\n\n"); printf("* 5、退出程序\n\n"); backMenu(); mainMenu(year,month,day); break; case '5':system("cls");printf("程序已退出!\n");exit(0); default:printf("%c 输入错误!\n",7);flag=1; } }while(flag); } void main() { struct tm *gmt=getDay(); year=gmt->tm_year+1900; month=gmt->tm_mon+1; day=gmt->tm_mday; printCalender(year,month,day);//用系统时间进行初始化,打印当前月历 backMenu(); mainMenu(year,month,day); } # include #include 该代码在VC++6.0编译器下运行,只要按照编译器给出的说明操作,就能将万年历显示在调试窗口中了……………………………………由于制作时间匆忙,很多注释都来不及写了,对于出学者可以慢慢看,代码很简单的,都放在了主函数里,如果有兴趣的话,可以把这些代码放在几个文件里,这样会好看点,加油了! #include 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) 班级: 电商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.添加当日行事历,储存与清除功能 #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 /* welcome to use the WanNianLi system! */ #include 51单片机实现万年历 利用AT89S52单片机的P0口来和另外几个口来控制1602液晶的显示和P1口还有其它口来控制ds12887时钟芯片。设置四个按键,1个定义为时间设置功能键,一个定义为闹钟设置功能键,另外两个用来调节时间的增减。 原理图: pcb图: 源程序: #include 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; 实验十九:编写一个万年历系统 1.设计目的: 从实验的角度来看,这次课程设计一方面可以让自己巩固并加深对C语言程序设计知识的理解,掌握和提高C语言编程和程序的基本调试的基本技能,进一步理解和运用结构化程序的思想和方法;另一方面,可以让自己在面对一个全新的问题时,学会如何思考,如何寻找问题的关键,从而提升自己的能力。 2.总体设计: 1.、当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几); 2、当系统日期变到下一个月时,系统自动翻页到下一月。 3.调试与测试: 4.源程序清单和执行结果: #include 万年历时钟芯片代码 /******************************************************************** * 文件名: 时钟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语言代码 #include 万年历的设计: 要求:模仿现实生活中的挂历,能够显示年历、月历、日历,并具备退出功能。当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。当系统日期变到下一月时,系统自动翻页到下一月。 万年历的程序流程图: 主要程序流程图: 具体对于月份和年份的程序图如下: 上图为计算星期方法上图为打印日历程序图 万年历的设计的程序源代码: #include 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) 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 C语言实训--万年历源代码
万年历系统源代码
C语言编写的万年历代码
java课程设计 万年历 源代码
数字万年历简易C语言程序源代码
用C语言编写万年历,详细代码
51单片机实现万年历程序文件
万年历系统——C语言完整版
万年历时钟芯片代码
万年历C语言代码
万年历C语言设计
Java万年历源代码
万年历程序(不要嫌程序长,功能很齐全,而且对初学者很有帮助)
jQuery万年历日历设置代码