当前位置:文档之家› 高级语言程序设计说明书-万年历系统

高级语言程序设计说明书-万年历系统

高级语言程序设计说明书-万年历系统
高级语言程序设计说明书-万年历系统

高级语言程序设计

设计题目:万年历系统

前言

课程设计目的

《高级语言程序设计》课程设计是电子信息、光信息专业以及物理学专业集中实践性环节之一,是学习完《高级语言程序设计》课程后进行的一次全面的综合练习,其目的在于加深对程序设计基本知识的理解,掌握使用C语言进行模块化软件设计的基本方法,提高通过编写程序解决实际问题的能力,为今后从事设计工作和后续各种编程课程的学习打好基础。

一、问题重述

设计:“万年历系统”

要求:模仿现实生活中的挂历,编写程序要求当用户输入年份时能输出该年的日历,在日历上能够看出某天是星期几,可以显示任意一年任意一天,并能够知道是否是闰年等。

二、功能要求

1、判断一年是否为闰年;

2、判断某年某月某日是星期几;

3、显示一整年的日历;

4、退出系统。

三、设计目的

1.通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能

力,能更好的巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!

更加也体会到以后在工作中团队合作的重要性和必要性!

2.通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的

程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。

四、设计思想及过程

【一】由于万年历具有以下特点:

1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。

由于公元1月1日设为星期六,故3月1日为星期三。——注意这个“三”

为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时

间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)所以百年%4=0闰或(年%4=0并且年<>0)闰。

3。每4年(3个平年+1个闰年)共208周+5天——注意这个“5天”

每百年共100*(208周+5天)-1天=5217周+5天——注意这个“5天”(整百年暂设为平年)

每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和

“1天”(4个整百年只有一个闰年)

即400年一轮回!(原来万年历400年前是一家)

【二】根据万年历以上特点进行编写:

首先对万年历年、月、日进行编写,编写程序先定义每月的天数为28天,如月份为1、3、5、7、8、10、12就定义天数为31天反之如果月份为4、6、9、11就输出天数为30天,由上可见2月份为28天但是如果为闰年就有29天就要定义另一个函数#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0当为闰年时可得1加上该程序便可得到每月的天数。具体程序见(五、万年历程序)

再对其中的星期进行编写:由于公元1月1日设为星期六,故3月1日为星期三,可以用万年3月1日星期算法(特别是那个三)

由于其公式为:

某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

闰4百年3月1日星期算法(百年%4=0)

其公式为:

某年3月1日星期几=(年+年/4+月星期表+日+2天)%7

例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四

2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一

2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六

2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期算法(百年%4<>0)

其公式为:

某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)

%7=(15+22+3)%7=40%7=星期五

1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)

%7=(15+70+2+3)%7=90%7=星期六

1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)

%7=(15+110+0+3)%7=128%7=星期二

1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)

%7=(15+120+3+3)%7=141%7=星期一

2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)

%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)

%7=(5+0+1+3)%7=9%7=星期二

2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)

%7=(5+0+2+3)%7=10%7=星期三

2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)

%7=(5+0+3+3)%7=11%7=星期四

2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)

%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)

9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)

%7=(120+15+3+3)%7=141%7=星期一

注:按400年一轮回!(400年前是一家)的说法

1600年,2000年是一样的;

1700年,2100年是一样的;

1800年,2200年是一样的;

1900年,2300年是一样的。

其中万年某日星期算法

其公式为:

某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

闰年1月2月3月4月5月6月7月8月9月10月11月12月

天数31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年1月2月3月4月5月6月7月8月9月10月11月12月

天数31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

为对以上的万年历星期的算法是正确的对其进行了以下的计算:

⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

1900年元旦1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年)故4+4=1 即1900年元旦是星期一1949年国庆1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年)故4+2=6 即1949年国庆是星期六

1999年12月31日31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年)故2+3=5 即1999年12月31日是星期五

⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年

%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算:

2000年元旦1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(闰年)故3+3->6 即2027年元旦是星期六2018年春节16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年)故0+5=5 即2018年春节是星期五2099年12月31日31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年)故2+2=4 即2099年12月31日是星期四

对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五、万年历程序)中。

五、个性化设计

1.增加被查询日期是否存在的判断。

例如:2011年2月29日这天是不存在的,因为2011年不是闰年(leap year)。

输入查询日期,则输出结果如下:

日期不存在时系统的人性化提示为:连续输入多次不存在的日期,系统就发飙了,先清屏,说“别玩我,你是外星人嘛??”

其他常用的不存在日期(如month大于12,day大于31(自然有的是30、28、19),year小于0的)也能判断。好处是减少了因为盲目套用判断带来的误判(即无论日期是什么都输出一个它是什么date)。

2.增加简易心情系统,完善选择。

增加了简单的累计输入有误的计算,输入不和要求次数太多系统会有不同反应;同时完善了选择模式,即不再选项范围内的判断及提醒,同样累计。

例子1:

A.主界面选择的输入有误

B.提示在(1,2,3 or 4)中再次选择,下次选对之后需要确认。如图:选对3之后系统提示如下。

C.连续多次选择错误,系统就发飙了,先清屏,说“确认好你的选择!!”然后继续选择。

注:其他输入(如选择Yy/Nn)有误时类似,展示如下。

次数多后:

个性化功能总结:

此思想为人工神经网络(Artificial Neural Networks)的简易,相当于传递函数为简单的累加,思维判断仅为判断累加的大小,且系统情绪发泄完后自动清空累加值。相当于一条很简单的神经。

在此基础上改变网络类型,增加神经元,丰富传递函数,增强判断的逻辑性,添加记忆机制,这样神经的思维模式更接近大脑,能做复杂的决定,可以记忆,就能做出复杂的神经。人工神经网络(Artificial Neural Networks)的应用将成为人工智能的基石。

六、附录

以下是源代码(TV环境),VC环境(特殊要求可能需要)中只要稍作更改,这里便不再赘述。

#include "stdio.h"

#include "conio.h"

int isleapyear(int year)

{

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

return 1;

else

return 0;

}

void display1(int year)

{

int mon=1,da=1,x,i;

x=whatdate(calculate(year,mon,da)) ;

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

{

printf("Month %d th:\n",i);

x=display2(year,i,x);

printf("\n\n");

}

}

int display2(int year,int month,int x)

{

int i;

printf(" SUN MON TUE WEN THU FRI SAT \n"); disp3(x+1);

for(i=1;i<=month_day(year,month);i++)

{

if(x>6)

{

x=0;

printf("\n");

}

x++;

printf("%8d",i);

disp3(1);

}

return x;

}

int disp3(int n)

{

int i=1;

while(i

{printf(" ");i++;}

}

int calculate(int year,int month,int day)

{

int i,s=0;

for(i=1;i

{

s=s+365+isleapyear(i);

}

for(i=1;i

{

s=s+month_day(year,i);

s=s+day;

return (s);

}

int whatdate(int sum1)

{

int sum;

sum=calculate(2011,11,11);

if((sum1-sum+5)%7>=0)

return ((sum1-sum+5)%7);

else

return ((sum1-sum+5)%7+7);

}

int month_day(int year,int month)

{

int daymax[12]={31,28,31,30,31,30,31,31,30,31,30,31};

if(isleapyear(year)&&month==2)

return 29;

else

return daymax[month-1] ;

}

main()

{

int daymax[12]={31,28,31,30,31,30,31,31,30,31,30,31},opt,add=0,sum;

/*add 为累计心情值为个性化做铺垫*/

int year,month,day;

char ch;

char*

month_str[]={"January","February","March","April","May","June","July","August","September","October","November", "December"};

char* week[]={"Sunday","Monday","Tuesday","Wednesday","Thurday","Friday","Saturday"};

printf(" Welcome to my perpetual calendar.\n\n @@ director & Designer : Han Shuai~

@@ \n\n\n");

while(1)

{

printf(" Please select the service you need:\n\n 1 Search whether the year is leap year or not.\n 2 Search what day the day is\n 3 Print the calander of the whole year\n 4 Exit\n");

scanf("%d",&opt) ;

fflush(stdin);/*clean up the Cache memory*/

switch(opt)

{

case 1:

printf("Please input a year: XXXX\n");

scanf("%d",&year) ;

fflush(stdin);/*clean up the Cache memory*/

clrscr();/*clean screen*/

printf("\t\t %d is ",year);

if(isleapyear(year)==0)

printf("not");

printf(" a laep year.\n\n\n\n");

}

break;

case 2:

{

printf("Please input your year&month&day in mind: XXXX,XX,XX\n");

scanf("%d,%d,%d",&year,&month,&day) ;

fflush(stdin);/*clean up the Cache memory*/

if(year<0||month<0||month>12||day<=0||day>month_day(year,month))

do

{

add++ ;

printf(" \t WARING::\n\tThe day:%d-%d-%d is not exist ~.~!!!! \n\nPlease input your year&month&day in mind: XXXX,XX,XX\n",year,month,day);

scanf("%d,%d,%d",&year,&month,&day) ;

fflush(stdin);/*clean up the Cache memory*/

while(add>4)

{

clrscr();/*clean screen*/

printf("\tDo not play with me .\n\tAre you out of earth??\n\n"); /*连续输入多次不存在的日期,系统就发飙了,先清屏,说“别玩我,你是外星人嘛??”*/

add=0;

}

}

while(year<0||month<0||month>12||day<=0||day>daymax[month_day(year,month)]);

add=0;/*恢复心情值*/

printf("\n\tThe date %d-%d-%d is %s.\n",year,month,day,week[whatdate(calculate(year,month,day))]);

}

break;

case 3:

{

printf("\tPlease input your year you want display:XXXX\n");

scanf("%d",&year);

display1(year);

}

break;

case 4:

{

add=0;

printf("\tAre you sure??((Y/N)");

scanf("%c",&ch);

fflush(stdin); /*clean up the Cache memory*/

if(ch=='y'||ch=='Y')

exit(0);

while(ch!='N'&&ch!='n')

{

add=add++;

printf("\tYou get be kidding~.~!~!~!\n\t\tWhat are you think about?\n\t\tAre you sure to exit?\t((Y/N)");/*输入的不是YyNn 的话,系统会提示你搞清楚再输入*/

if(add>4)

{clrscr();printf("\n\t Make\n \t\t Sure\n \t\t\t Your\n \t\t\t \t Answer\n!!!!!!!! (Y/N)"); } /*如果连续几次输入的不是YyNn的话,系统就发飙了,先清屏,说“搞清楚你的回答!!”*/

scanf("%c",&ch);

fflush(stdin);/*clean up the Cache memory*/

if(ch=='y'||ch=='Y')

exit(0);

}

break;

default:

{

add=0;

while(opt!=1&&opt!=2&&opt!=3&&opt!=4)

{

add=add++;

printf("\t~~.~~ ! ~~.~~ ! --_--~! What are you think about?\n\tMake a choice(1 2 3 or 4)\n");

if(add>4)

{clrscr();printf("\n\t Make\n \t \t Sure\n \t \t\t Your\n \t\t\t \t Answer\n!!!!!!!!\n");break;}

scanf("%d",&opt) ;

fflush(stdin);/*clean up the Cache memory*/

if(opt==1||opt==2||opt==3||opt==4)

printf("\t\n\t\tyou finally got this.please type again!\n\n");

} /*连续多次选择错误,系统就发飙了,先清屏,说“确认好你的选择!!”*/ }

add=0; /*恢复心情值*/

break;

}

}

}

getch();

}

数字电子课设:万年历的设计

编号 北京工商大学 数字电子技术基础 《万年历的设计》 姓名 学院 班级 学号 设计时间

一、设计目的 1、熟悉集成电路的引脚安排 2、掌握芯片的逻辑功能及使用方法 3、了解数字电子钟及万年历的组成及工作原理 4、熟悉数字电子钟及万年历的设计与制作 5、熟悉multisim电子电路设计及仿真软件的应用 二、设计思路 1、设计60进制秒计数器芯片 2、设计24进制时计数器芯片 3、设计31进制天计数器芯片 4、设计12机制月计数器芯片 5、设计7进制周计数器芯片 6、设计闰年平年不同月份不同进制逻辑 三、设计过程 1、Tr_min and s 60进制计数器芯片: “秒”、“分”电路都六十进制,它由一级十进制计数器和一级六进制计数器组成,六十进制计数器的设计图如下,采用四个片74ls161N串联而成,低位芯片的抚慰信号作为下级输入信号,串接起来构成“秒”、“分”计数器芯片。

2、Tr_hour24进制计数器芯片: 24进制计数器芯片的设计图如下,时计数电路由两片74ls161串联组成。当时个位计数为4,十位计数为2时,两片74ls160N复零,从而构成24进制计数。 3、Tr_day天计数器芯片: 采用两片74ls160N和一片74ls151N串联而成,天计数器的进制受到月计数器反馈M、N影响和年计数器反馈R4的影响,在M、N不收到反馈信息的时候,天计数器为28进制,电路设计图如下:

4、Tr_week周计数器芯片: 周计数器由一块74ls161N构成一个七进制计数器,原理与秒、分、时计数器相似,电路设计图如下 5、Tr_month月计数器芯片: 采用两片74160N和两片74HC151D_2V串联而成,月计数器的反馈信息M、N影响

万年历系统设计方案和对策

电子万年历系统设计 The design of Electronic calendar system 专业:电子信息科学与技术 学号: 姓名:

电子万年历系统设计 摘要:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,并且给人类生活带来了根本性的改变。尤其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便。虽然在日常生活中,各种信息处理终端如电脑、手机等给我们提供了准确的时间信息。但是在大多数场合却仅仅局限于个人的适用范围之内。在家居生活中,一款悬挂余居室墙壁上大方得体的电子钟不仅能为我们提供准确的时间显示,而且魅惑了环境,给单调的居室带来了现代化的气息,因而成为许多家庭的必备之选。 本文设计了一种基于八位串行输入-并行输出移位寄存器74HC164芯片,以STC89C52单片机为核心、数码显示的电子万年历,主要介绍了时钟芯片、温度传感器、仿真模块,以及万年历硬件和软件的设计,实现了准确显示,公历年、月、日、农历月、日、时、分、秒功能。 关键字:单片机;时钟芯片;温度传感器;仿真

The Design of Electronic Calendar System Abtract:In recent years, with computer penetration in the social sphere and the development of large-scale integrated circuits, MCU applications are constantly deepening, as it has a function of strong, small size, low power consumption, cheap, reliable, easy to use , And other characteristics, and therefore particularly suited to control the system and to human life brought about fundamental changes. SCM is by the application of technology products have entered the tens of thousands of households. The emergence of electronic calendar to the lives of people of many convenience. While in everyday life, dealing with all kinds of information terminals such as computers, mobile phones has provided us with accurate time information. However, in most occasions is limited to individuals within the scope of the application. In home life, hoisted more than a generous living room walls of the appropriate electronic bell can not only provide us with accurate time, and tantalized by the environment, bring to the monotonous room a modern flavor, so many families must Of the election. In this paper, a design based on eight serial input - output parallel shift register 74 HC164 chip to STC89C52 microcontroller as the core, digital display electronic calendar, mainly on the clock chip temperature sensor, simulation modules, hardware and calendar And software design, to achieve an accurate, the calendar year, month, day and the Lunar month, day, hours, minutes and seconds functions.

电子万年历课程设计报告

课程:创新与综合课程设计 电子与电气工程系 实践教学环节说明书 题目名称电子万年历 院(系)电子与电气工程学院 专业电子信息工程 班级119411 学号1109635010 学生姓名11 指导教师q1 起止日期13周周一~14周周五

电子万年历 一.设计目的 设计一个具有报时功能、停电正常运行(来电无需校时)、带有年月日、时分秒及星期显示的电子日历。 二.方案设计 硬件控制电路主要用了AT89S52芯片处理器、LCD1602显示器等。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及星期显示程序等组成。主控程序中对整个程序进行控制,进行了初始化程序及计数器、还有键盘功能程序、以及显示程序等工作,时间控制程序是电子万年历中比较重要的部分。时间控制程序体现了年、月、日、时、分、秒及星期的计算方法。时间控制程序主要是定时器0计时中断程序每隔10ms中断一次当作一个计数,每中断一次则计数加1,当计数100次时,则表示1秒到了,秒变量加1,同理再判断是否1分钟到了,再判断是否1小时到了,再判断是否1天到了,再判断是否1月到了,再判断是否1年到了,若计数到了则相关变量清除0。先给出一般年份的每月天数。如果是闰年,第二个月天数不为28天,而是29天。再用公式s=v-1 +〔(y-1/4〕-〔(y-1/100〕+〔(y-1/400〕+ d计算当前显示日期是星期几,当调节日期时,星期自动的调整过来。闰年的判断规则为,如果该年份是4或100的整数倍或者是400的整数倍,则为闰年;否则为非闰年。在我们的这个设计中由于只涉及100年范围内,所以判断是否闰年就只需要用该年份除4来判断就行了。 三.系统的设计框图 本系统以AT89S52单片机为核心,结合时钟芯片DS1302,LCD1602,键盘等外围器件,实现电子万年历的一系列功能,并通过液晶屏和按键控制完成人机交互的功能。系统总体设计框图如图(1)所示

北极星数码万年历使用说明书

北极星数码万年历 北极星数码万年历使用说明书 操作说明 1、按键说明:设置键、上调键、下调键、流水开关键。 2、时间调整在正常走时状态下,按“设置”键进入时间设置状态,同时年份“闪烁”,可按“上调”或“下调”键修改年份,修改好后按“设置”键将闪烁位移到公历“月”,按“上调”或“下调”键修改月份;用同样的方法可对日、时、分进行设置;12个公历节日及倒计天数、24个农历节气及倒计天数、12生肖、12星座、星期、农历月、日将自动跟随公历的变化。当分设定好后,再按“设置”键退出时间设置,回到正常时间状态。 3、节气灯花样转换在正常走时状态下,按住“设置”键3秒钟即可进入节气灯花样转换。 4、12/24小时制切换在正常走时状态下,按住“上调”键3秒钟,则可进行12小时制与24小时制的切换。上电复位时,可默认为24小时制或12小时制,由选项决定。 5、开/关整点报时在正常走时状态下,按住“下调”键3秒钟听到“嘀”一声,则可以打开或关闭整点报时功能。 6、天数倒计时或顺计时(由选项决定)在正常时间状态下,按“模式”键进入“天数计时状态”,在温度位显示“d1”,计时天数位若显示“――――”,表示计时“无效”;若显示具体数字表示有效,按“上调”键可以切换“有效”/“无效”,按“设置”键进入天数设定,且左边第一位(千位)闪烁,按“上调”或“下调”键修改内容,按“设置”键移动闪烁位置到第二位(百位),按“上调”或“下调”键修改闪烁位的内容,同样方法可设置十位与个位 7、闹钟 8组定闹(由按键选项决定),默认值无效,默认时间为――:――点,闹钟设定:在正常时间状态下(或天数计时状态),按“下调”键进入“定闹查询状态”,定闹指示灯点亮,在温度位显示“A1”,表示当前你看到的是“第1组定闹”的信息,在小时、分钟位显示“――∶――”,表示定闹“无效”;显示“XX∶XX”的具体时间,表示定闹“有效”,按“上调”键可以切换“有效”/“无效”,按“设置”键进入定闹时间设定,且小时位闪烁,按“上调”或“下调”键修改闪烁位的内容,按“设置”键移动闪烁位置到分钟位,按“上调”或“下调”键修改闪烁位的内容,再按“设置”键确认并退出定闹时间设定,再按“下调”键进入下一组闹铃状态,其设置与“第1组定闹”相同,依次类推即可设置所有定闹。 8、生日提醒①7组生日提醒,默认值无效。②生日提醒设定:在最后一组定闹状态,再按一次“下调”键则进入第一组生日提醒,生日提醒指示灯点亮,在温度位显示“b1”,在公历“月日位”显示有效“生日日期”或无效日期“――――”,则表示生日以“公历日期”为准,若在农历“月日位”显示则表示生日以农历日期为准;按“上调”键可“打开/关闭”该组生日提醒,按“设置”键进入“该组生日提醒日期”设置,按“上调”或“下调”键修改其内容,按“设置”键移动闪烁位置,再按“设置”键确认该组生日提醒设置,再按“下调”键进入下一组生日提醒,依次类推即可设置所有生日提醒,当在最后一组生日提醒时,按“下调”键则退到正常时间状态若闹铃中没有一组设置有效,则定闹指示灯熄灭,在任何闹铃时间到正在响闹 北极星数码万年历使用说明书第1页共2页

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

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

计算机与信息工程系2014年6月6日

目录 1 设计容及要求 (1) 1.1设计容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (2) 2.1程序设计思路 (2) 2.2 总体程序框图 (3) 3 设计过程或程序代码 (4) 3.1各个模块的程序流程图及运行界面 (4) 3.2对关键代码加以分析说明 (7) 4 设计结果与分析 (13) 4.1程序调试的结果 (13) 4.2程序设计分析 (13) 5 小结 (14) 致 (15) 参考文献 (16) 源程序 (17)

1 设计容及要求 1.1设计容 万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规。 (2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。 (3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。 (4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 1.2设计任务及具体要求 利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。 要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。当用户随意改动年份或月份时系统自动显示与星期对应的日期。用户点击日

Java万年历课程设计报告

杭州师范大学钱江学院课程设计 题目万年历 学院钱江学院 专业信电分院计算机科学与技术 班级计算机1101 姓名崔伊平 指导教师王李冬 2013 年9 月20 日

目录 一.概述 (1) 二.总体方案设计 (2) 三.详细设计 (3) 四.最终输出 (7) 五.课程设计总结 (8) 参考文献 (9)

一、概述 1.课程设计的目的 通过显示年日历程序的设计,培养学生综合利用java语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力。 通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《java语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了java语言的好处和其可用性! 2.课程设计的要求 2.1 输入查询的年份与月份,单击“更新”按扭,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用。要掌握APPLET容器中添加组件的方法,理解JAVA 的事件处理机制,编写独立的运行窗口。 2.2 输出形式 使用独立的运行窗口进行显示。界面主要由两部分组成——查询输入部分和结果显示部分。查询输入部分包括两个文本域,一个用于输入年份:一个用于选择月份:一个更新按扭,用来触发查询事件。

二总体方案设计 1.程序开发环境 a.开发环境:eclipse b.系统环境:windows xp/7 c.设计工具:Microsoft office 2003 2.整体流程图 图1 流程图 3.功能模块图

C语言万年历程序设计

C语言万年历程序设计 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-

目录 第1章需求分析 (6) 第2章概要设计 (6) 第3章详细设计 (11) 第四章运行结果及分析 (17) 1.登陆界面 (17) 2.显示某年全年日历 (17) 3.显示某月日历 (18) 第5章课程设计心得 (20) 参考文献 (21)

第1章需求分析 (1)程序运行时,首先给出四个菜单选项和输入提示: 图1-1 (2)用户可以通过主菜单选择不同选项。输入1,通过输入年份可显示一年每个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;若输入3,通过输入年份月份和日期(中间以空格分开)可显示该日的星期;输入0,则退出查询系统。 第2章概要设计

1.菜单选择界面可通过下面所示函数时现; 主要思路: 通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选项的功能实现。 闰年与平年的判断: 代码如下: void main() { int year,month,day,a,b; while(1) { printf("\n\n\n\n");

printf(" **********************************************************\n \n"); printf(" * * \n"); printf(" 欢迎进入万年历查询系 统 \n"); printf(" * * \n\n"); printf(" **********************************************************\n \n\n"); printf(" 1 年历 2 月历 3 日历 4 退出\n"); printf(" 请输入您的选择<1~4>,按回车键确定: "); scanf("%d",&b); switch(b) { case 1: printf("\n请输入您要查的年份: "); scanf("%d",&year); a=x3(year,1,1); if(a==0) { printf("错误!请您重新输入。\n"); break;} nianli(year); break; case 2: printf("\n请输入您要查的年和月,年月之间用空格隔开: "); scanf("%d%d",&year,&month); a=x3(year,month,1); if(a==0) { printf("错误!请您重新输入。\n");

Java课程设计-万年历

河北科技大学课程设计报告 号:学生姓名:学 专业班级:程序设计课程设计Java课程名称:学期学年第 2 2 015 学年学期: 2 014 — 指导教师:刘伟月年 2 0

的?.................................................................. ................................1?? 2.需求分................................................................... .........析................................1? 3.总体设计................................................................... ........................................1? 4.详细设计................................................................... ........................................1?

5.软件测试................................................................... . (10) 6.课程设计总结................................................................... ................................11. 一、课程设计目的(1)熟练使用java语言编写程序,解决实际问题。? (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;? (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析本程序的要求为: 1.使用图形用户界面;? 2.本程序能够实现日期与星期的查询。 ?三、总体设计(1)可以通过图形界面显示日历。? (2)能以月历形式显示日期与星期。? (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。? ?四、详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 ,0若是取余得几既为星期几,7使总天数除以输出月份第一天为星期几的算法:2. 则为星期日。? 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。? 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import import; import import import ; import ; import import import java.awt.*; import import java.text.*; import ;

万年历系统

程序实践报告 万年历系统的设计 专业 学生姓名 班级 学号 指导教师 起止日期

系统万年历的设计 目录 1课程设计目的及要求 (1) 1.1课程设计目的 (1) 1.2课程设计要求 (1) 2课题总体设计 (1) 2.1 系统需求分析 (1) 2.2系统功能描述 (1) 2.3系统功能模块图 (2) 2.4系统流程图 (2) 3课题总体设计 (3) 3.1 概念设计 (3) 3.2 逻辑设计 (3) 3.3 物理设计 (3) 4详细设计 (3) 4.1 leap()模块设计 (3) 4.2 show()模块设计 (5) 4.3 主函数main()模块设计 (6) 5调试与测试 (6) 6小结 (10) 参考文献 (11) 附录 (12) 附录1 源程序清单 (12)

程序实践报告(2010) 万年历系统的设计 1 课程设计目的及要求 1.1 课程设计目的 1、巩固并加深对C语言程序设计知识的理解; 2、掌握和提高C语言编程和程序的基本调试的基本技能; 3、进一步理解和运用结构化程序的思想和方法; 4、提高运用C语言解决实际问题的能力; 5、初步掌握开发小型实用软件的基本方法; 6、掌握书写程序设计开发文档的能力。 1.2课程设计要求 1、根据分组情况对规定的课程设计题目要求进行分析、设计; 2、利用Turbo C 独立编写程序代码,并调试程序使其能正确运行; 3、源程序要有适当的注释,使程序容易阅读; 4、设计完成的软件要便于操作和实用,至少采用文本菜单界面鼓励学生自动增加 新功能模块; 5、完成并提交课程设计报告,具体要求见相关说明文档。 2课题总体设计 1.、当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几); 2、当系统日期变到下一个月时,系统自动翻页到下一月。 2.1 系统需求分析 a. 使用图形用户界面; b.本程序能过模仿现实生活中的挂历。 2.2系统功能描述 1)当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几); 2)当系统日期变到下一个月时,系统自动翻页到下一月。

基于STM32的智能万年历课程设计说明书

课程设计说明书 设计题目:基于STM32的智能万年历 专业:电气工程及其自动化 班级: 设计人:

课程设计任务书 学院电气信息系专业电气工程及其自动化 一、课程设计题目:基于STM32的智能万年历 专题名称:最小应用系统 二、课程设计主要参考资料 (1)刘火良,杨森.STM32库开发实战指南[M].北京:机械工业出版社.2013.5 (2)ADS7943中文参考资料[M/CD]. (3)ILI9320控制器中文参考资料[M/CD]. 三、课程设计应解决主要问题 (1)最小应用系统:包括MCU、复位、启动、晶振、电源等。 (2)日历的显示和设置; (3)万年历的算法和实现; (4)定时闹钟功能; (5)无线设置功能。 四、课程设计相关附件(如:图纸、软件等) (1)软件:Keil μVision4 (2)开发平台:神州Ⅱ号STM32嵌入式技术开发板 五、任务发出日期:课程设计完成日期: 指导教师签字:系主任签字:

指导教师对课程设计的评语 指导教师(签章): 日期:

摘要 单片机应用技术飞速发展,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中广泛使用的各种智能IC卡、电子宠物等,从大到国家防卫,小到日常生活,方方面面都离不开单片机。单片机是集CPU,RAM,ROM,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。 二十一世纪的今天科技与经济迅速发展,人们的生活节奏变得越来越快,生活水平越来越高,对于生活的品味和质量的要求也更高。人们不再满足于只能提供简单计时功能的时钟,希望在能保证计时精确的基础上能多添加一些其他功能,诸如日历、定时等。 本文主要介绍了以STM32F103VCT6开发板为核心部件来设计的一款万年历,以其内部的RTC时钟模块作为时钟,用TFTLCD液晶显示器作为显示模块,时钟电路能准确提供24小时制时间、平年闰年的判断以及定时。采用Keil uVision4进行编写调试程序,以神州二号嵌入式技术开发板为硬件平台进行设计,最终实现在显示屏上显示时间、日期、以及进行定时等功能。 以基于STM32的智能万年历作为设计的课题,因为它有很好的开放性和可发挥性,不仅考察了对单片机的掌握能力而且强调了对单片机扩展的应用。另外液晶显示的万年历已经越来越流行,特别适合在家庭居室、办公室、大厅、会议室、车站和广场等地方使用,它具有显示清晰直观、走时准确、可以进行夜视等功能,并且还可以扩展出其它多种功能。所以,电子万年历作为设计课题很有价值。 经过两周的课程设计,我们完成了按键和触摸两种方式对万年历的控制,实现了基本的万年历功能和闹钟功能。本次课程设计让我对万年历有了深刻理解,更让我对stm32有了更进一步的学习。 关键词:STM32F103VCT6;最小应用系统;万年历

电子万年历课程设计

烟台南山学院单片机课程设计题目电子万年历 姓名: 所在学院:烟台南山学院 所学专业:自动化 班级: 学号: 指导教师: 完成时间:

摘要 单片机作为当今领域应用广泛的电子器件,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,日期,调整时间,日期,从而到达学习、设计、开发软、硬件的能力。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本设计由单片机AT89C51芯片和LED数码管为核心,运用DS1302时钟芯片,辅以必要的电路,构成了一个单片机电子时钟。

1 绪论 (1) 2 总体方案设计与论证 (2) 2.1数字时钟方案 (2) 2.2显示方案 (3) 3 硬件系统的方案设计 (4) 3.1 系统框图 (4) 3.2 单片机的选择 (4) 3.3 时钟电路DS1302 (7) 3.4 时钟电路及复位电路 (9) 3.5 驱动电路 (9) 3.6 显示电路 (10) 3.7 按键接口 (11) 4 软件系统设计 (12) 4.1 时间信息获取程序 (12) 4.2 显示程序 (12) 5 系统调试 (13) 5.1 系统调试 (13) 5.2 时钟显示 (13) 5.3 DS1302的调试 (13) 5.4 按键电路调试 (13) 6 总结 (14) 参考文献 (15) 附录:系统程序 (16)

万年历

科名片 万年历(gregorian solar calendar and chinese lunar calendar)我国古代传说中最古老的一部太阳历。为纪念历法编撰者万年功绩,便将这部历法命名为“万年历”。而现在所使用的万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用,与原始历法并无直接联系 目录 由来 1. 第一个版本 2. 第二个版本 择日宜忌 阳历与阴历 在线万年历 干支年历歌诀 图书《万年历》(2009) 1. 基本信息 2. 内容简介 3. 图书目录 图书《万年历》(2008) 1. 基本信息 2. 内容简介 3. 目录 由来 1. 第一个版本 2. 第二个版本 择日宜忌 阳历与阴历 在线万年历 干支年历歌诀 图书《万年历》(2009) 1. 基本信息 2. 内容简介 3. 图书目录 图书《万年历》(2008) 1. 基本信息 2. 内容简介 3. 目录 展开 编辑本段由来 第一个版本 要想 ?? ?? 追寻万年历的由来,那故事得从远古时代的商朝说起……有名樵夫唤做万年,有一天他上山砍柴,砍罢了就坐在树下休息。他眼望著树影出神,心中想的,仍是如何将节令定准的事。

不知不觉过了大半个时辰,他才发现地上的树影已悄悄地移动了方位。万年灵机一动,心想,何不利用日影的长短来计算时间呢?回到家后,万年就设计了一个“日晷仪”。可是,一遇上阴雨天,日晷仪又失去效用了。 有一天,万年在泉边喝水,看见崖上的水很有节奏的往下滴,规律的滴水声又启发了他的灵感。回家後,万年就动手做了一个五层的漏壶,利用漏水的方法来计时。这么一来,不管天气阴晴,都可以正确地掌握时间了。有了计时的工具,万年更加用心的观察天时节令的变化。经过长期的归纳,他发现,每隔三百六十多天,天时的长短就会重覆一次。只要搞清楚日月运行的规律,就不用担心节令不准了。万年就带著自制的日晷仪及水漏壶去觐见天子祖乙,说明节令不准与天神毫不相干。祖乙觉得万年说的很有道理,就把万年留下,在天坛前盖起日晷台、漏壶亭,又派了十二个童子供万年差遣。从此以后,万年得以专心致志的研究时令。过了一段日子,祖乙派阿衡去了解万年制历的情况。万年拿出自己推算出的初步成果,说:日出日落三百六,周而复始从头来。草木荣枯分四时,一岁月有十二圆。 阿衡听後,非常忐忑不安,他担心制出准确的历法,得到天子重用,直接的威胁到他的地位。於是阿衡就以重金收买了一名刺客,准备行刺万年。无奈万年全心研究时令,几乎从不离开所住的日月阁。刺客只好趁夜深人静之时,挽起了箭射杀万年。只听得嗖的一声,一箭射中了万年的胳膊,万年应声倒下。童子们高喊抓拿刺客,守卫的兵士及时抓住了刺客,将他扭送天子。祖乙问明了是阿衡的诡计,就下令将阿衡收押,亲自到日月阁来探望万年。万年就把自己最新的研究成果报告给祖乙:现在申星追上了百星蚕百星,星象复原,子时夜交,旧岁已完,时又始春,希望天子定个节名吧!祖乙说:春为岁首,就叫春节吧。当时祖乙见万年为了制历,日夜劳瘁又受了箭伤,心中不忍,就请他入宫调养身体,万年答道:“多谢天子厚爱,只是目前的太阳历还是草历,不够准确,要把岁末尾时也闰进去。否则,久而久之,又会造成节令失常。为了不负众望,我必须留下来,继续把太阳历定准。”又经过了数十个寒暑,万年精心制定的太阳历终于完成了。当他把太阳历献给祖乙时,已是个白发苍苍的老人了。祖乙深受感动,就把太阳历定名为万年历,并封万年为日月寿星,以上就是万年历名称的由来。 第二个版本 相传,在很久以前,有个名叫万年的青年,看到当时节令很乱,想把节令定准。一天,他上山砍柴,坐在树阴下休息,树影的移动启发了他,他设计了一个测日影计天时的晷仪。可是,天阴雨雾,影响测量。后来,山崖上的滴泉引起了他的兴趣,他又动手做了一个五层漏壶。天长日久,他发现每隔三百六十多天,天时的长短就会重复一遍。当时的国君叫祖乙,天气风云的不测,使他很苦恼。 一个名叫阿衡的大臣,为讨好皇上,奏称要设天台敬祭天神。祖乙认为有理,便带领百官去祭天,却无济于事。万年知道后,忍不住就带着日晷和漏壶去见皇上,对祖乙讲清了日月运行的道理。祖乙听后龙颜大悦,感到有道理。于是把万年留下,在天坛前修建日月阁,筑起日晷台和漏壶亭。并派了十二个童子服侍万年。祖乙对万年说:"希望你能测准日月规律,推算出准确的晨夕时间,创建历法,为天下的黎民百姓造福。"有一次,祖乙传旨要阿衡去了解万年测试历法的进展情况。当他登上日月坛时,看见天坛边的石壁上刻着:日出日落三百六周而复始从头来。草木枯荣分四时,一岁月有十二圆。阿衡见此,知道万年的历法已研究成功,心中忐忑不安。他万分惧怕万年因创建历法而得宠,国君会怪罪自己提出祭祀天神的主意。于是,他阴谋策划,派了一个刺客去除掉万年。刺客攀上日月阁,见万年正在阁上观察星斗,便张弓搭箭,准备射死他。谁知,刺客被卫士发现,被当场缉拿。祖乙知后,惩处了阿衡,亲自登上日月阁看望万年。万年指着天象,对祖乙说:"现在正是十二个月满,旧岁已完,新春复始,祈请国君定个节吧。"祖乙说:"春为岁首,就叫春节吧。"冬去春来,年复一年。后来,万年经过长期观察,精心推算,制定出了准确的太阳历。当他把太阳历呈奉给

电子万年历的设计与实现

毕业设计(论文)任务书 题目:电子万年历的设计与实现 任务与要求: 设计一以单片机为核心控制的万年历,具有多项显示和控制功能。要求:准确计 时,以数字形式显示当前年月日、星期、时间; 具有年月日、星期、时间的设置和调整功能;自行设计所需直流电源 时间: 2010年9 月 27 日至 2010 年 11 月 23 日共 8 周 所属系部:电子工程系

摘要 随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。 而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LED数码管显示的日历钟逐渐受到人们的欢迎。LED数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。所以,电子万年历无论作为比赛题目还是练习题目都是很有价值。 关键词:单片机;万年历 1

目录 1 概述 (5) 1.1单片机原理及应用简介 (5) 1.2系统硬件设计 (6) 1.3结构原理与比较.............................. 错误!未定义书签。2系统总体方案及硬件设计......................... 错误!未定义书签。 2.1系统总体方案................................ 错误!未定义书签。 2.2硬件电路的总体框图设计 (12) 2.3硬件电路原理图设计 (12) 3软件设计 (13) 3.1主程序流程图 (13) 3.2显示模块流程图 (14) 4P ROTEUS软件仿真 (15) 4.1仿真过程 (15) 4.2仿真结果 (16) 5课程设计体会 (17) 参考文献 (18) 附录:源程序代码附 (18) 结束语 (25) 2

万年历应用小程序设计报告

题目:万年历应用小程序 一、题目陈述: 设计一个万年历,要求具有显示年份、月份、日期的功能,与windowsXP 系统的日期与时间的界面和功能类似。 二、问题分析: 万年历的界面可由内容面板类panel 和spinner 、textArea 、comboBox 等容器构成;布局可以由BorderLayout 、FlowLayout 、GridLayout 使其达到美观整齐的效果。万年历功能的实现是通过添加相应的监听器和事件处理函数来完成的。 三、题目设计: (一)、类设计: 1、 面板类CalendarDemo :嵌入显示月份的comboBox 和显示年份的spinner ,以及显 示日期的textArea 。 2、 窗口类CalendarTest :镶入面板,设计窗口大小等属性,并包含主函数。运行后显 示该窗口。 3、 类与类之间的关系: (二)、界面设计: 根据windows 的日期界面,利用JPanel 提供的BorderLayout 、FlowLayout ,将包含comboBox 和spinner 的panel1放在NORTH 区,包含textArea 的panel2放在CENTER 区。CalendarDemo 类的对象panel 的titledBorder 设置为“日期”

(三)、事件处理: 匿名内部类事件监听器做事件处理:用comboBox实现月份变换改变日期变换的PopupMenuListener()、用spinner实现年份变换改变日期变换的ChangeListener()。 具体处理方式: (四)、主要的成员变量和成员函数: 1、面板类CalculatorDemo:JComboBox comboBox;JSpinner spinner;JTextArea textArea; JPanel panel1,panel2;String[] monthsString[] date;int thisYear, thisMonth;Public void typeset() ; 2、窗口类CalculatorTest:CalendarDemo panel;public static void main; 四、源代码: import javax.swing.*; import java.awt.*; import javax.swing.event.*; public class CalendarDemo extends JPanel { JComboBox comboBox; JSpinner spinner;

课程设计万年历的设计52503328

课程设计万年历的设计52503328

兰州理工大学 计算机与通信学院 2014年秋季学期 面向对象课程设计 题目:万年历的设计

序言 《面向对象的程序设计》是计算机专业一门重要的专业基础课。此次课程设计的目的是以面向对象程序设计语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,学生在下述各方面的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++语言程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题、解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象的程序设计方法。 (6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。

目录 摘要 (2) 第一章系统总体设计 (3) 一.理论说明 (3) 二.流程图说明 (4) 1.总体流程说明图 (4) 2.部分流程说明图 (4) 第二章系统详细设计 (7) 一.主要组成部分 (7) 二.源程序 (9) 第三章系统测试 (34) 四软件使用说明书 (40) 一.系统运行环境 (40) 二.系统操作提示 (40) 总结 (41) 参考文献 (42) 致谢 (42)

电子万年历设计

课程论文论文题目基于单片机的电子万年历设计 课程名称单片机原理及接口技术 专业年级 2014级自动化3班 学生姓名孙宏远贾腾飞 学号 2016年12 月3 日

摘要: 本文介绍了基于AT89C51单片机的多功能电子万年历的硬件结构和软硬件设计方法。系统以AT89C51单片机为控制器,以串行时钟日历芯片DS1302记录日历和时间,它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。万年历采用直观的数字显示,可以在LED上同时显示年、月、日、周日、时、分、秒,还具有时间校准等功能。此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,具有广阔的市场前景。。 关键词:AT89C51单片机,DS1602时钟芯片,LCD1602显示屏。串口通信。 一:引言 本设计的基于单片机控制的电子万年历,具有年、月、日、星期、时、分、秒的显示等功能,实现过程就是由主控制发送信息给DS1302时钟芯片再由时钟芯片反馈给单片机,再由主控制器传送给LCD1602显示屏显示信息。并且可以在键盘设置模块输入修改时间,当键盘设置时间、日期时,单片机主控制根据输入信息,通过串口通信传送给DS1302时钟芯片,DS1302芯片读取当前新信息产生反馈传送给单片机,然后单片机根据控制最后输送显示信息到LCD1602液晶显示屏模块上显示。 二:硬件设计: 2.0.硬件的设计总框图 2.1 DS1032时钟电路 DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。芯片如图。 DS1302的内部主要由移位寄存器、指令和控制逻辑、振荡分频电路、实时时钟以及RAM组成。每次操作时,必须首先把CE置为高电平。再把提供地址和命令信息的8位装入移位寄存器。数据在SCLK的上升沿串行输入。无论是读周期还是写周期发生,也无论传送方式是单字节还是多字节,开始8位将指定内部何处被进行访问。在开始 8个时钟周期把含有地址信息的命令字装入移位寄存器之后。紧随其后的时钟在读操作时输出数据。 2.2 LCD1602与AT89C52的引脚接线 LCD1602采用总线式与单片机相连,AT89c52的P1口直接与液晶模块的数据总线D0~D7相连;P2 口的0,1,2脚分别与液晶模块的RS、RW、E脚相连。滑动变阻器用于调整液晶显示的亮度。电路如图

相关主题
文本预览
相关文档 最新文档