当前位置:文档之家› java课程设计 万年历

java课程设计 万年历

java课程设计 万年历
java课程设计 万年历

万年历设计

摘要

Java语言自1995年面世以来,以其与平台无关性、安全性、面向对象等特性被越来越多的人使用,是目前应用非常广泛的一门面向对象的程序设计语言,本次课程设计的万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查找,在开发的过程中,首先对相应的数据和图形界面初始化,并获取

系统当前的年和月,如果要进行查找,可以通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。

本设计是对图形用户界面,布局管理器的综合运用,理解JA V A的时间处理机制,编写独立运行的窗口。该万年历采用Myeclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对程序进行不断修正和改进,直到形成可行系统。

关键词: java、面向对象、万年历

目录

1、前言 (1)

2、设计内容 (1)

3、设计过程 (1)

3.1需求分析 (1)

3.2 概要设计 (1)

3.3 详细设计 (2)

3.4 代码实现 (4)

3.5 运行结果 (8)

4、总结 (9)

5、参考文献 (10)

1、前言

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java 支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java 的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的工具有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。本次万年历就是通过JA V A语言来完成的。

2、设计内容

万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查找,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本设计是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。

3、设计过程

3.1需求分析

本次设计的要求为通过使用图形用户界面,从而能够实现日期与星期的查询。本程序的具体功能为如下几个方面:

(1)能够实现图形界面

(2)能以月历形式显示日期与星期

(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份

(4)通过点击“update”按钮来更新和刷新日历

3.2 概要设计

(1)总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为

闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

(2)输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

(3)算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

(4)如果年份小于1582年则程序不予判断。

3.3 详细设计

(1)流程图

图1 程序流程图

(2)导入程序所需的类

import java.applet.Applet;

import java.awt.*;

import java.util.*;

(3)初始化数据

public class WanNianLi extends Applet{

static final int TOP = 70; //顶端距离

static final int CELLWIDTH=50,CELLHEIGHT = 30; //单元格尺寸static final int MARGIN = 3; //边界距离

static final int FEBRUARY = 1;

TextField tfYear = new TextField("2004", 5); //显示年份的文本域

Choice monthChoice = new Choice(); //月份选择下拉框

Button btUpdate = new Button("update"); //更新按钮

GregorianCalendar calendar=new GregorianCalendar(); //日历对象

Font smallFont = new Font("TimesRoman", Font.PLAIN, 15); //显示小字体

Font bigFont = new Font("TimesRoman", Font.BOLD, 50); //显示大字体

String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"};

String months[] = {"1", "2", "3", "4","5", "6", "7", "8", "9","10", "11", "12"};

int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数

int searchMonth,searchYear; //查询的年份及月份

}

(4)绘制程序的界面

public void init(){

setBackground(Color.green); //设置背景颜色

searchMonth = calendar.get(Calendar.MONTH); //得到系统年份,当前的年份

searchYear = calendar.get(Calendar.YEAR); //得到系统月份,当前的月份

add(new Label("Year:")); //增加组件到Applet

tfYear.setText(String.valueOf(searchYear)); //设置文本域文字

add(tfYear);

add(new Label("Month:"));

monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体

for (int i = 0; i < 12; i++) {

monthChoice.addItem(months[i]); //增加下拉框选项

}

monthChoice.select(searchMonth); //设置下拉框当前选择项

add(monthChoice);

add(btUpdate);

int componentCount=this.getComponentCount(); //得到Applet中的组件数量

for (int i=0;i

getComponent(i).setFont(smallFont); //设置所有组件的显示字体

}

}

3.4 代码实现

package ss2;

import java.applet.Applet;

import java.awt.*;

import java.util.*;

public class WanNianLi extends Applet{

static final int TOP = 70; //顶端距离

static final int CELLWIDTH=50,CELLHEIGHT = 30; //单元格尺寸

static final int MARGIN = 3; //边界距离

static final int FEBRUARY = 1;

TextField tfYear = new TextField("2004", 5); //显示年份的文本域

Choice monthChoice = new Choice(); //月份选择下拉框

Button btUpdate = new Button("update"); //更新按钮

GregorianCalendar calendar=new GregorianCalendar(); //日历对象

Font smallFont = new Font("TimesRoman", Font.PLAIN, 15); //显示小字体

Font bigFont = new Font("TimesRoman", Font.BOLD, 50); //显示大字体

String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"}; String months[] = {"1", "2", "3", "4","5", "6", "7", "8", "9","10", "11", "12"};

int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数

int searchMonth,searchYear; //查询的年份及月份

public void init(){

setBackground(Color.green); //设置背景颜色

searchMonth = calendar.get(Calendar.MONTH); //得到系统年份,当前的年份

searchYear = calendar.get(Calendar.YEAR); //得到系统月份,当前的月份

add(new Label("Year:")); //增加组件到Applet

tfYear.setText(String.valueOf(searchYear)); //设置文本域文字

add(tfYear);

add(new Label("Month:"));

monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体

for (int i = 0; i < 12; i++) {

monthChoice.addItem(months[i]); //增加下拉框选项

}

monthChoice.select(searchMonth); //设置下拉框当前选择项

add(monthChoice);

add(btUpdate);

int componentCount=this.getComponentCount(); //得到Applet中的组件数量

for (int i=0;i

getComponent(i).setFont(smallFont); //设置所有组件的显示字体}

}

public void paint(Graphics g){

FontMetrics fontMetric; //显示字体的FontMetrics对象

int fontAscent;

int dayPos;

int totalWidth, totalHeight; //总的宽度,高度

int numRows; //行数

int xNum, yNum; //水平和垂直方向单元格数量

int numDays;

String dayStr; //显示天数字符串

int margin;

g.setColor(Color.YELLOW); //设置当前颜色

g.setFont(bigFont); //设置当前使用字体

g.drawString(searchYear+"年",60,TOP+70); //绘制字符串

g.drawString((searchMonth+1)+"月",200,TOP+130);

g.setColor(Color.black);

g.setFont(smallFont);

fontMetric = g.getFontMetrics(); //获取变量初值

fontAscent = fontMetric.getAscent();

dayPos = TOP + fontAscent / 2;

totalWidth = 7 * CELLWIDTH; //得到总的表格宽度

for (int i = 0; i < 7; i++) {

g.drawString(days[i], (CELLWIDTH-fontMetric.stringWidth(days[i]))/2 + i*CELLWIDTH,dayPos-20); //绘制表格标题栏

}

numRows = getNumberRows(searchYear, searchMonth); //计算需要的行的数量

totalHeight = numRows * CELLHEIGHT; //得到总的表格高度

for (int i = 0; i <= totalWidth; i += CELLWIDTH) {

g.drawLine(i, TOP , i, TOP+ totalHeight); //绘制表格线

}

for (int i = 0, j = TOP ; i <= numRows; i++, j += CELLHEIGHT) {

g.drawLine(0, j, totalWidth, j); //绘制表格线

}

xNum = (getFirstDayOfMonth(searchYear, searchMonth) + 1) * CELLWIDTH - MARGIN;

yNum = TOP + MARGIN + fontAscent;

numDays = daysInMonth[searchMonth] + ((calendar.isLeapYear(searchYear) && (searchMonth == FEBRUARY)) ? 1 : 0);

for (int day = 1; day <= numDays; day++) {

dayStr = Integer.toString(day);

g.drawString(dayStr, xNum - fontMetric.stringWidth(dayStr), yNum); //绘制字符串

xNum += CELLWIDTH;

if (xNum > totalWidth) {

xNum = CELLWIDTH - MARGIN;

yNum += CELLHEIGHT;

}

}

}

public boolean action(Event e, Object o){

int searchYearInt;

if (e.target==btUpdate){

searchMonth = monthChoice.getSelectedIndex(); //得到查询月份

searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份

if (searchYearInt > 1581) {

searchYear = searchYearInt;

}

repaint(); //重绘屏幕

return true;

}

return false;

}

private int getNumberRows(int year, int month) { //得到行数量

int firstDay;

int numCells;

if (year < 1582) { //年份小于1582年,则返回-1

return (-1);

}

if ((month < 0) || (month > 11)) {

return (-1);

}

firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天

if ((month == FEBRUARY) && (firstDay == 0) && !calendar.isLeapYear(year)) { return 4;

}

numCells = firstDay + daysInMonth[month];

if ((month == FEBRUARY) && (calendar.isLeapYear(year))) {

numCells++;

}

return ((numCells <= 35) ? 5 : 6); //返回行数

}

private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天int firstDay;

int i;

if (year < 1582) { //年份小于1582年,返回-1

return (-1);

}

if ((month < 0) || (month > 11)) { //月份数错误,返回-1

return (-1);

}

firstDay = getFirstDayOfYear(year); //得到每年的第一天

for (i = 0; i < month; i++) {

firstDay += daysInMonth[i]; //计算每月的第一天

}

if ((month > FEBRUARY) && calendar.isLeapYear(year)) { firstDay++;

}

return (firstDay % 7);

}

private int getFirstDayOfYear(int year){ //计算每年的第一天int leapYears;

int hundreds;

int fourHundreds;

int first;

if (year < 1582) { //如果年份小于1582年

return (-1); //返回-1

}

leapYears = (year - 1581) / 4;

hundreds = (year - 1501) / 100;

leapYears -= hundreds;

fourHundreds = (year - 1201) / 400;

leapYears += fourHundreds;

first=5 + (year - 1582) + leapYears % 7; //得到每年第一天

return first;

}

}

3.5 运行结果

4、总结

经过这段时间的努力,基本上完成了这次java课程设计,也基本上实现了在需求分析时所要完成的功能。通过这次的课程设计,让我更好的把课本上学到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,也让我更深层次的认识了java及其功能的强大,同时也发现了自己的太多不足,对JA V A 语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。

通过这次课程设计,进一步加强了我的动手能力。为了完成好这次课程设计,做了较多的准备,上网查阅了好多的相关资料,也翻阅了许多的相关的书籍。在这些过程中也无形的锻炼了我的思维分析、遇到问题及解决问题的能力,同时我也明白了编写程序,不仅要求对所学知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。在这次课程设计中我收获的不仅仅是课本上的知识的实际应用,还有编程的基本习惯和开发系统时应注意的流程。

5、参考文献

[1].张亦辉,冯华,胡洁. Java面向对象程序设计,人民邮电出版社,2008.10

[2].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2

[3].赵生慧,Java面向对象程序设计,高等教育出版社,2007.7

[4].耿翔义,张跃平,Java面向对象程序设计,清华大学出版社,2010.1

[5].辛运帏等,Java程序设计(第二版),清华大学出版社,2006.8

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课程设计+文档+源代码(万年历+闹钟+记事本)

2015年12月18日 一、课程题目 设计一个万年历系统,实现以下功能 (1)可以查看当前的年份、月份和日期; (2)有时间栏,便于用户查看当前时间; (3)能够查找1至9999年的日期与星期的关系。 其它功能可自行开发。 二、题目分析与设计 1.使用的开发环境为eclipse Jdk环境:jdk1.8 2. (此为万 年历界面图) 使用了jTabbedPane 类对功能页面分页,布局策略基本用BorderLayout 和GridLayout 。 3.本项共有5个类,基本一个功能有一个类实现,主类CalendarMain 只包含一个main函数:对创建框架和其属性设置。

AlarmDemo类则实现闹钟功能;NoteBook 类实现记事本功能;CalendarsView 类则实现基本日历功能,ChooseDay 类是一个弹窗,被CalendarsView 调用,CalendarsView 、AlarmDemo 也在该类被调用; . 4.日历界面使用了jTable ,功能的实现逻辑则是 1.首先定义两个全局变量---年和月,查看不同时间的日历,该变量也 随之改变。 2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推 算具体某月第一天是星期几。 3.知道一个月第一天是星期几,则该月日历既可以顺序列出。 闹钟的功能实现思路: 1.获取界面设定的时间。

2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时 间 3.到设定的时间,启动弹窗,播放闹铃 4.闹铃科根据文件选择器自行选择 记事本功能实现思路 1.在项目文件夹先新建一个txt文件作为储存的数据库 2.利用File 类和io 数据流将界面文本储存进txt文件,实现保存功 能 3.每当程序启动,读取txt文件内容并显示到界面上 三、测试分析 1.使用如下拓展包

基于AT89C51的数字万年历设计

江西理工大学南昌校区 毕业设计(论文) 题目:基于AT89C51的数字万年历设计 系别:信息工程系 专业:电气自动化 班级:09电子自动化1班 学生: 学号:09321131 指导教师:职称:助教

摘要 电子万年历是一种日常广泛应用的计时工具,在现代社会中越来越流行。数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周、时、分、秒、温度等信息,还具有时间校准等功能。第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。 本文中万年历的设计过程在硬件与软件方面进行同步设计,硬件部分主要由AT89C51单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路等组成。在单片机的选择上使用了AT89C51单片机,该单片机适合于许多较为复杂控制应用场合,显示器使用液晶LCD1602。软件方面主要包括日历程序、液晶驱动程序、显示程序等,这些程序采用C语言编写。所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。并且利用Protel软件进行制图,画出PCB图并且制作出实物。 关键词: 时钟电钟;液晶LCD1602;单片机

ABSTRACT E-calendar is a very extensive daily timing tool, more popular in modern society. For digital electronic calendar using intuitive digital display, simultaneously displays year, month, day, day, hour, minute, second, temperatures and other information, also with a time calibration capabilities. The third revolution is a single-chip digital timing technology ( electronic calendar ), so that the timing product walk time difference from graded narrowing to 1/ 6000000 of a second, from the original traditional pointer timing for the development of people's daily more familiar luminous digital display, intuitive and clear, and the increase of the full automatic date, week, temperature and other daily auxiliary information display function, which is more in line with consumer needs. Therefore, the electronic calendar brings a watch industry a big progress. Synchronizing design of calendar is based on hardware and software design. Hardware part by AT89C51 microcontroller, circuit for LCD, reset circuit, clock circuits, voltage-stabilizing circuit and serial download circuits and other components of the circuit. On the choice of using single-chip microcomputer AT89C51 microcontroller, the microcontroller is suitable for a host of complex control applications. Monitor LCD LCD1602. Software includes calendar, LCD drivers, display program. Programs using a language. All the programming is completed, Kiel C51 debugging software, sure no problem, in Proteus software embedded in single-chip microcomputer in the simulation. And the use of Portal software for drawing and draw the PCB. Keywords : clock electric clock II

C++万年历实验报告

《高级语言程序设计》课程设计报告万年历程序设计

(1)课程设计名称:C++万年历设计 (2)使用工具软件:Microsoft visual C++ (3)课程设计内容简介 1、以开关语句进行执行功能的选择,这些功能分别是: A、判断闰年; B、判断某天是星期几; C、判断某年的隶属生肖; D、输出某年的日历; E、输出某月的日期; F、退出系统; 2、建立类wnl,定义类的成员函数; void isleapyear(); //判断闰年,用于输出判断结果,以流的形式bool isleap(int year); //判断闰年,返回判断结果,用于计算天数int getdays(int year,int month,int day); //获取据第一天天数 void weekdays(int year,int month,int day);//获取星期几 void printyear(int year); //输出年的日历 void printyearmonth(int year,int month); //输出某年某月的日历 void animal(int year); //判断某年的生肖 int getyear(){return Year;} //返回私有成员的值 int getmonth(){return Month;} int getday(){return Day;} 3、定义私有成员:i nt Year,Month,Day; 4、定义类的对象:_wnl; 5、为类的成员函数填写代码,满足功能实现; 6、运行环境:控制台应用程序的源程序; (4)得意之处: 1、可以满足多功能实现,可以循环执行功能; 2、可以选择每行输出的月份数; 3、有欢迎界面; 4、客户输入错误会有提示; 5、使用了C语言的流的形式,判断闰年,提高执行速度; 6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;(5)创意的技术实现

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.添加当日行事历,储存与清除功能

推荐-电子万年历的设计与制作课程设计 精品

华南农业大学 电子工程学院应用物理系 课程设计(报告)任务书 设计题目:电子万年历的设计与制作 任务与要求(请按所选题目自行总结) 任务:设计一个电子万年历,利用实时时钟芯片ds1302和51单片机制作实时时钟。 要求: 1.使用LCD1602显示屏显示日期和时间; 2.能够显示新历和农历; 3. 包括时钟模块,能够显示实时时钟; 4. 要有时间设置按键部分; 5. 完成硬件电路的设计后,编写程序,实现时间和日期的显示等功能; 6. 调试程序,完成功能验证,写出完整的课程设计。 实验器材: 1.单片机最小系统:单片机(插座),晶振,电阻,电容,按键; 2.电源模块:自锁开关,LED灯,USB插座; 3.按键模块:按键; 4.1602显示模块:1602(排母),电位器,电容; 5.RTC模块:DS1302芯片(插座),晶振,CR2032电池(插座); 6.DIY小部件:漆包线,杜邦线,排针,排母,IC插座,电阻包,电容包,烙铁套装; 开始日期20XX 年 3 月 4 日完成日期20XX 年3 月 23 日

电子万年历设计 摘要:本系统是由单片机最小系统、电源模块、按键模块、LCD1602显示模块及RTC模块组成的电子万年历系统。通过时钟模块实时进行时间和日期的计数,进而传递给单片机处理,单片机再将其传递给LCD1602模块显示当前时间,另设有按键模块可以完成时间设置以及日期查询等功能操作。其设计简单,性能优良,时间设置可调,同时同步显示农历和星期,具有较强的实用性。本文先简要介绍每个模块的工作原理,再作整个系统电路的综合分析,说明该电子万年历的实现过程。 Summary:This system,electronic calendar system,is posed of SCM minimum system, power supply module, keys module, LCD1602 display module and RTC module .Through RTC module for counting the time and date, and then transmit to SCM for processing,and then send it to the LCD1602 module to show the current time, also operates key modules can be pleted time setting and operating date query function.Its simple design, excellent performance, adjustable time setting, synchronous display lunar calendar and week at the same time, has strong practicability.This paper first briefly introduces the working principle of each module, and then a prehensive analysis of the circuit.The last,illustrate the whole system implementation process of the electronic calendar. 关键词:万年历,计时,显示,农历 Keywords: calendar、timing、display、

万年历实验报告

篇一:电子万年历实验报告 重庆电力高等专科学校 计算机科学系 实训报告 课程名称 实验名称 班级信息0911 姓名廖林单片机应用技术电子万年历 学号 200903020243 教师任照富 日期 2010-12-28 地点一教七机房一、实训任务: 1、看实训要求,计划出自己实训所要用元件,在网上查找资料。 2、思考仿真原理图,然后画出来(具体i/o口暂时不确定)。 3、在网上找一些程序,然后自己改一些,进行编译。 4、编译无误之后,跟原理图相联系,完成最终的仿真图。 5、进行最后的改写,把程序和仿真原理图确定下来。 6、根据仿真图形,制作出实物图。 7、在实物制作过程中,进行电路检查和最后的调试。 二、实训要求: 要求:能显示阳历的年、月、日、星期、时、分、秒; 能显示阴历的年、月、日; 能进行日期、时间的调整。 扩展:能显示当前温度; 有闹钟功能(至少2个) 选择ds1302时钟芯片,温度传感器采用ds18b20数字温度传感器。 三、实训环境(软件、硬件): 软件:keil protues7.5 硬件:计算机2单片机的应用 四、实训意义:在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人,而数字化的钟表给人们带来了极大的方便。由于单片机具有灵活性强、成本低、功耗低、保密性好等特点,所以电子日历时钟一般都以单片机为核心,外加一些外围设备来实现。 电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。所以,电子万年历无论作为竞赛题目还是毕业设计题目都是很有价值。对于这个实验项目,我们还要有一些其他的基本知识掌握和意义:(1)在学习了《数字电子技术》和《单片机原理及接口技术》课程后,为了加 深对理论知识的理解,学习理论知识在实际中的运用,为了培养动手能力和解决实际问题的经验,了解专用时钟芯片ds1302,并会用ds1302芯片开发时钟模块,应用到其他系统中去。熟悉keil和protues软件调试程序和仿真. (2)通过实验提高对单片机的认识; (3)通过实验提高焊接、布局、电路检查能力; (4)通过实验提高软件调试能力; (5)进一步熟悉和掌握单片机的结构及工作原理。

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.功能模块图

简单万年历设计

信电学院 电子信息工程专业CDIO一级项目项目设计说明书(2013/2014学年第一学期) 项目名称:简单万年历的设计 专业班级:电子信息工程 学生姓名: 学号: 指导教师: 设计周数:一周 设计成绩: 2013 年12 月29 日

目录 1项目设计目的及任务--------------------------------------------------------------2 2 设计方案--------------------------------------------------------------2 3 电路仿真与分析--------------------------------------------------------------9 4项目设计心得-------------------------------------------------------------17 5参考文献-------------------------------------------------------------17

1.项目设计目的及任务 用51单片机或52单片机为主体,设计并制作一台数字万年历。基本要求有时钟显示(时/分/秒);日期、星期显示,可设定月份;上电即可显示当前系统的时间该系统的设计电路是以 AT89C51单片机为核心控制器,其外围电路主要包括时钟模块,液晶模块,和与电脑主机通信模块等。通过 PC 机在 Internet 上同步时间,整个系统使用C语言进行编程,实现其设计的各种功能。输出方式灵活、功耗低、计时准确、性能稳定、维护方便等优点。实用电子时钟是一个时间控制系统,既能作为一般的时间显示器,同时可以根据需要扩展其功能。系统上电自检后,实时实现小时、分钟、秒以及日历的显示等指示信息的显示,通过按键可实现校对时间等功能。 2 设计方案 2.1总方案设计:设计简单万年历一般有三个可行方案,方案一:纯硬件电路系统,各功能采用分离的硬件电路模块实现。用时序逻辑电路实现时钟功能,用555定时器实现闹钟的设定。但这种实现方法可靠性差、控制精度低,灵活性小、线路复杂、安装调试不方便,而且不方便实现对系统的扩展。方案二:用可编程逻辑器件(PLD)实现。这种方案与前一种相比,可靠性增加,同时可以很好的完成时钟的功能。同时这种方案只能选用数码管显示,显示的效果不够理想,无法很好的完成扩展功能的要求。同时,系统的灵活性不够。方案三:采用单片机作为系统的控制核心。随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行I/O口、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元、PWM控制输出单元、PWM输出时的死区可编程控制功能等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业流水线控制系统、作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、自动测试系统等。我们选用的是方案三。因为单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关:

万年历课程设计报告

课程设计报告 课程名称程序设计基础专周题目年历显示 姓名XX 班级XXXXXX 学号XX 指导教师XXX 设计时间2015-03-02至2015-03-06 成都工业学院计算机工程系

成都工业学院 课程设计(论文)任务书 一、课程设计题目年历显示 二、课程设计工作自 2015年 03月 02日至 2015年 03月 06日。 三、课程设计地点: XXXX 四、课程设计内容要求: 1.本课程设计的目的 1) 增进对C语言各理论知识的熟练程度, 2) 加强算法设计的能力,为以后的程序设计与编写打下良好基础。 3)增加对C语言的熟练程度,提高程序设计的能力,并初步接触实用程序的编写。 2.课程设计的任务及要求 题目:年历显示 要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。 (2)输入年月,输出该月的日历。 (3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。 3)课程设计编写要求 1)详细清晰地描述个人的课程设计工作; 2)要按照本模板的规格打印誊写课程报告; 3)课程报告包括目录、内容提要、正文、课程设计体会、参考文献、附 录等; 4)课程报告装订按学校的统一要求完成 4)评分标准: 1)完成原理分析:20分; 2)完成设计过程:40分; 3)完成代码分析:20分。 4)个人创新工作:20分。 学生签名:XX 2015年 3 月8 日

目录目录................................................................................................................... - 1 - 正文................................................................................................................... - 2 - 一、需求分析............................................................................................... - 2 - 二、个人工作.................................................................. 错误!未定义书签。 三、概要设计............................................................................................... - 2 - 流程图……………………………………………………………….- 2- 程序……………………………………………………………….- 4- 四、程序结果.................................................................. 错误!未定义书签。 课程设计体会.......................................................................... 错误!未定义书签。

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 ;

万年历课程设计实验报告

百度文库- 让每个人平等地提升自我 黄淮学院 JAVA 课程设计报告 题目:《万年历》课程设计 学院:信息工程学院 专业:计算机科学与技术 班级:计科1101班 指导老师: 二0一三年六月

目录 前言 (2) 1需求分析 (2) 1.1需求分析 (2) 1.2功能设计 (3) 2.概要设计 (3) 2.1程序设计思路 (3) 3.流程图 (5) 4.程序的主要类,和说明: (6) C (17) F (18) G (18) I (19) M (19) S (19) U (20) 类分层结构 (20) 接口分层结构 (21) 前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、

Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都 有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 1需求分析 1.1需求分析 本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。 1.2功能设计 本程序要构建的万年历程序,其功能有以下几个方面: (1)实现图形界面,通过简单的单击按钮能实现查询日期操作。 (2)能以月历形式显示日期与星期。 (3)提供月份的下拉形式菜单来选择月份。 2.概要设计 2.1程序设计思路 (1)日期类的设计: 设定日期年的方法 public void changeYear(String year){ cal.set(Calendar.YEAR,Integer.parseInt(year)) ; updateCalendar();//每次修改年后,更新日期

万年历时钟实验报告

万年历时钟设计报告 专业: 年级: 姓名: 学号: 指导老师:

万年历的设计与仿真 一、实验目的; 电子时间显示器现在在任何地方都有涉及到,例如电子表和商场、车站的时间显示等等,所以它是一种既方便又实用的技术,而我们所做的万年历则是在它的基础上做出来的,通过万年历的制作,我们可以进一步了解计数器的使用,了解各个进制之间的转换,以及他的任意进制计数器的构成方法等,并且进一步了解74LS160以及74ls90的性质,以及门电路的使用等。 二、实验要求: A. 设计一个能显示“年月日”、“星期”、“时分秒“的十进制万年历时钟显示器; B. 要求要满足一天24小时,一小时60分,一分60秒; C. 关于显示星期天时,要用8来代替; D. 年月日显示时,要满足大月31天,小月30天,闰年二月29天,平年二月28天; 三、实验器材: ISIS 仿真软件、一些常用逻辑门(与门、非门,或门等); 本实验要用到得芯片有:74ls160 74ls161 74ls160 74ls160: 74ls160是一块十进制上升沿触发计数器如右下图: 其中MR 是异步清零端,LOAD 是同步置数端 CLK 是时钟脉冲输入端;D0、D1、D2、D3是 置数输入端,Q0、Q1、Q2、Q3是计数输出端, RCO 是进位端; 74ls161与74ls160的功能基本相同,74ls160是十进制的,而74ls161是十六进制的。 异步清零端 进位端 同步置数端

置九端 74ls90: 74ls90是一块二—五—十进制计数器其图如下: 其中 2、3端为置零端,6、7端为置九端, CKB 为五进制脉冲输入端,CKA 二进制脉冲输入端, ,Q0、Q1、Q2、Q3是计数输出端; LED 七段显示器: 其功能是将BCD 码以十进制形式显示出来,其图如下: 四、万年历时钟构架图: 万年历时钟显示器需要有显示“年”、“月”、“日”、“星期”、“时”、“分” “秒”的功能,又根据它们之间的进位和置位关系 可知,它们主要有以下各部分组成,其整个电路的 框架图如下图所示: 五进制脉冲输入端 置零端 二进制脉冲输入端

Java课程设计-万年历

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

课程设计成绩评定表 学生姓名学号成绩专业班级起止时间 设计题目 指导教师评语学习态度:端正□较端正□一般□较差□ 学习纪律:好□较好□一般□较差□ 出勤情况:好□较好□一般□较差□ 程序设计:好□较好□一般□较差□ 动手能力:强□较强□一般□较差□ 团队精神:好□较好□一般□较差□ 创新意识:强□较强□一般□较差□ 课程设计完成情况:优秀□好□一般□较差□ 课程设计报告完成情况:优秀□好□一般□较差□ 指导教师: 年月日

目录 1.课程设计目的 (1) 2.需求分析 (1) 3.总体设计 (1) 4.详细设计 (1) 5.软件测试 (10) 6.课程设计总结 (11)

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

java课程设计报告-万年历

山西大学Java课程设计报告 题目:万年历 班级:14 班 学号: 姓名:

2016年12月 目录 1 绪论 (1) 1.1选题目的及意义 (1) 1.2 系统概述 (1) 1.3 人员组成及分工 (1) 2 需求分析 (1) 3 总体设计 (1) 4 详细设计 (1) 5 系统实现 (2) 5.1 开发环境 (3) 5.2 关键技术 (3) 6.运行结果 (6) 7.软件测试 (7) 8.总结 (7)

9 参考文献 (8) 1.绪论 1.1选题目的及意义 选题目的:本次课程设计为课本后设计题目任选一题进行设计。思考一段时间后,我们组决定做一个万年历的设计。主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们每个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA 的一些基础知识掌握的更加牢固。 1.2 系统概述 随着电子技术的不断发展,人们的不断创新,万年历已经不再局限于书本形式,而是以电脑软件或者电子产品的形式出现。让其更加便捷。在学习了JAVA课程后,将以JAVA 形式编译出一个简易的万年历。 1.3 人员组成及分工 :负责搜集查找资料 :调试程序 最后进行程序的编写与修改

2.需求分析 本程序的要求为:1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 3.可以添加或者删除日志 3.总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。(4)可以添加或者删除并且点击对应日期显示日志。 4.详细设计 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是 闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 2. 输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是 0,则为星期日。 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该 日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4. 查询年份必须为四位有效数字,否则不予显示。 5.显示系统时间。 6.流程图

基于PFGA的万年历的设计

郑州大学西亚斯国际学院 本科毕业论文(设计) 题目基于FPGA的万年历的设计 指导教师周晓平职称讲师 学生姓名陈重学号20111521131 专业电子信息工程班级电信(1)班 院(系)电子信息工程学院 完成时间2015年4月7号

基于FPGA的万年历的设计 摘要 基于FPGA的万年历的设计,基本功能是用来显示年月日时分秒及时间修改功能。数字日历是采用数字电路实现对ho、mi、se计时的装置,主要包括组合逻辑电路与时序电路,主要完成的功能是使用VerilogHDL语言,在QuartusII上完成电路设计,模拟程序开发,基本功能是能够显示/修改ho、mi、se,主要有:主要遥控模块、时间及其数据显示调设、时间多路选择、显示调整、日期的自动工作与设置、秒表计时模块、钟表模块、频率选取模块、译码器组成万年历的系统电路设计。软件模拟直接在FPGA软件上进行编译仿真与实验开发板共同完成。对于程序的编写使用VerilogHDL语言,根据不同模块的功能和各个模块之间的相互作用控制关系进行编译仿真。 电子万年历是采用的是以秒表计时显示时间的工具,大量运用于居室、办公室、商场、汽车站、火车站等场合。与古老的钟表进行比较拥有较好的精准性、灵活性、美观性、并拥有较长的使用年限。数字万年历主要包括组合逻辑电路与时序电路,还能展现自动报警、定时广播信息等功能。数字电子万年历采用软件开发模拟,使开发生产的成本大大降低,而且功能上有很强的灵活性,如果想改变它的功能只需要在软件上进行修改就能完成。相对于老式钟表来讲精度大大增加,并且维修改动更为方便,也不用像日历一样每天翻页,使人们的的生活更加方便。因此研究数字万年历有非常重要现实意义,匹配当前电子仪器的开发优势,对于当前市场也有相当大的潜力。 关键词FPGA /万年历/VerilogHDL/QuartusII

C语言课程设计实验报告(万年历)

C语言课程设计 一、题目及功能描述 题目:万年历的设计 利用C语言设计出万年历,使其实现如下要求 1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。假定输入的年份在1-9999年之间。 2、输入年月,输出该月的月历。 3、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。: 4、指定键盘的某些键,用于控制变换不同年、月、日的显示。即:当前若正在显示2011年的年历,按下键盘“←”方向键后,年历变为2010年的。 二、使用的所有变量的说明 变量说明:(以下均为整型变量) year 表示年份的变量 month 表示月份的变量 day 表示日期的变量 select 表示菜单选择的变量 i 表示月份的变量 j 表示一个月中的某一天的变量

sum 判断某天是一年中的第几天的变量 number判断某天离公元1年1月1日还有几天的变量 a[] 表示每月天数的数组变量 year1 系统时间年份的变量 month1 系统时间月份的变量 day1 系统时间日期的变量 三、程序清单及其说明 #include "time.h" /*包含的头文件*/ #include "stdio.h" #include "math.h" #include "windows.h" #include "conio.h" #define KEYNUMUp 0x48 /*宏定义*/ #define KEYNUMDown 0x50 #define KEYNUMLeft 0x4b #define KEYNUMRight 0x4d #define KEYNUMPageUp 0x49 #define KEYNUMPageDown 0x51

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