java课程设计报告万年历詹永堂.doc

上传人:b****1 文档编号:231025 上传时间:2022-10-07 格式:DOC 页数:21 大小:371KB
下载 相关 举报
java课程设计报告万年历詹永堂.doc_第1页
第1页 / 共21页
java课程设计报告万年历詹永堂.doc_第2页
第2页 / 共21页
java课程设计报告万年历詹永堂.doc_第3页
第3页 / 共21页
java课程设计报告万年历詹永堂.doc_第4页
第4页 / 共21页
java课程设计报告万年历詹永堂.doc_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

java课程设计报告万年历詹永堂.doc

《java课程设计报告万年历詹永堂.doc》由会员分享,可在线阅读,更多相关《java课程设计报告万年历詹永堂.doc(21页珍藏版)》请在冰豆网上搜索。

java课程设计报告万年历詹永堂.doc

《Java程序设计》课程设计报告

题目:

万年历

学院:

计算机科学与工程学院

专业:

信息管理与信息系统

学生姓名:

詹永堂

学号:

1100340129

指导教师:

汪华登

2013年6月30日

20

目录

目录

前言 3

1需求分析 3

1.1需求分析 3

1.2功能设计 3

2.概要设计 4

2.1程序设计思路 4

2.2程序运行界面 4

2.3流程图 5

3.各模块的功能及程序说明 5

3.1.初始化组件 5

3.2.初始化数据 6

3.3.绘制程序界面 7

3.4计算各个月的天数 8

3.5年份输入控制 9

3.6获取点击表格详细日期 10

3.7打印日期 11

3.8国际时间系统调用显示 11

3.9显示系统时间 12

3.10农历计算模块 12

4.测试分析 20

6.课程设计体会 20

参考文献 21

前言

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有JavaME,JavaSE和JavaEE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

本次课程设计开发平台使用Eclipse。

参照JDK帮助。

1需求分析

1.1需求分析

本程序的要求为:

(1)能够显示实现1800-2100年的日期,包括公历、农历、星期、二十四节气。

(2)能够按照月份格式显示,或按照星期格式显示。

(3)能够显示系统时间。

(4)能够设置闹钟。

(5)能够查询若干国际大城市(分布在不同时区)的时间。

1.2功能设计

本程序要构建的万年历程序,其功能有以下几个方面:

一、设计程序运行界面,具有显示各种功能的面板模块,并对各功能按钮就行时间监听;

二、程序需要显示1800年到2100年的日历,包括公历、农历、时间所对应的星期。

要求系

统能够从界面上的操作获取公历日期,计算其所对应的星期和相应的农历并显示到界面上;

三、程序要求显示系统时间,并能设置闹铃。

要求可以自己设置一个时间点,在这一时间点

做出相应的响应;

四、查询显示若干国际城市不同时区的时间,这里只需要调用Java的系统里就可以解决。

五、对时间的更新,日历显示要求关联系统时间,能在进入程序时显示系统时间对应的日历,

并能返回当天日历;

六、程序界面的美观设计和人性化结构,要求具有良好的人机交互,容易理解界面内容,易

操作;

七、就现在的水平来说,功能1、2、3、5是可以实现,功能4有待研究,可能遇到的问题是

按钮对时间的监听处理可能难度较大,还有就是在公历转农历中可能比较难获取相应的公历

变化日期。

2.概要设计

2.1程序设计思路

1.总天数的算法:

首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

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

    2.输出月份第一天为星期几的算法:

使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

3.算出输出月份第一天为星期几的算法:

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

4.获取系统时间,计算当天农历日期并显示

2.2程序运行界面

2.3流程图程序初始化

获取当前系统时间年份等数据

提交年月变更数据

是否输入年份或选择月份

开始

计算,绘制屏幕

结束

计算农历

3.各模块的功能及程序说明

3.1.初始化组件

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.table.DefaultTableModel;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.GregorianCalendar;

importjava.util.Locale;

importjava.util.TimeZone;

3.2.初始化数据

publicclasswannianliextendsJFrameimplementsActionListener,MouseListener{

privateCalendarcld=Calendar.getInstance();//获取一个Calendar类的实例对象

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

privateDefaultTableModeldtm=newDefaultTableModel(null,astr);

privateJTabletable=newJTable(dtm);

privateJScrollPanesp=newJScrollPane(table);

privateJButtonbLastYear=newJButton("上一年");

privateJButtonbNextYear=newJButton("下一年");

privateJButtonbLastMonth=newJButton("上月");

privateJButtonbNextMonth=newJButton("下月");

privateJPanelp1=newJPanel();//设立八个中间容器,装入布局控制日期的按钮模块

privateJPanelp2=newJPanel(newGridLayout(3,2));//网格布局

privateJPanelp3=newJPanel(newBorderLayout());//边界布局

privateJPanelp4=newJPanel(newGridLayout(2,1));

privateJPanelp5=newJPanel(newBorderLayout());

privateJPanelp6=newJPanel(newGridLayout(2,2));

privateJPanelp7=newJPanel(newGridLayout(2,1));

privateJPanelp8=newJPanel(newBorderLayout());

privateJComboBoxtimeBox=newJComboBox(TimeZone.getAvailableIDs());//对所有支持时区进行迭代,获取所有的id;

privateJTextFieldjtfYear=newJTextField(5);//jtfYeaar年份显示输入框

privateJTextFieldjtfMonth=newJTextField

(2);//jtfMouth月份显示输入框

privateJTextFieldtimeField=newJTextField();//各城市时间显示框

privatestaticJTextAreajta=newJTextArea(10,5);//农历显示区

privateJScrollPanejsp=newJScrollPane(jta);

privateJLabell=newJLabel("花江小精灵:

亲!

你可以直接输入年月查询.");

privateJLabellt=newJLabel();

privateJLabelld=newJLabel();

privateJLabellu=newJLabel("农历和节气");

privateJLabelnull1=newJLabel();

privateintlastTime;

//privateStringlocalTime=null;

privateStrings=null;

privateSimpleDateFormatdateFormat=newSimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒");

3.3.绘制程序界面

publicwannianli(){

super("花江日历过去仅留追忆,未来刚生憧憬,唯有坚守本心,把握今天ZYT詹永堂");//框架命名

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭函数

this.getContentPane().setLayout(newBorderLayout(9,10));

jta.setLineWrap(true);//长度大于分配长度时候则换行

jta.setFont(newFont("黑体",Font.BOLD,16));

table.setBackground(Color.white);

table.setGridColor(Color.pink);//星期之间的网格线是灰色的

table.setBackground(Color.white);

table.setColumnSelectionAllowed(true);//将table中的列设置为可选择

table.setSelectionBackground(Color.pink);//当选定时背景颜色为黑色

table.setSelectionForeground(Color.GREEN);

table.setBackground(newColor(184,207,229));//日期显示表格为浅蓝色

table.setFont(newFont("黑体",Font.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1