java课程设计万年历程序设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

山东科技大学

信息学院

JAVA程序设计

学院:信息科学与工程学院

班级:计算机11-3

学号:************

**:**

目录

目录 (1)

前言 (1)

1需求分析 (2)

2.概要设计 (3)

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

4.测试分析 (13)

5.源程序清单 (13)

6.课程设计体会 (22)

前言

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)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。

(4)通过点击“更新”来刷新日历。

2.概要设计

2.1程序设计思路

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

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

2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,

若是7,则为星期日。

3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日

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

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

2.2程序运行界面

图2-1 程序运行界面

2.3流程图

开始

初始化程序,获取当前日期

调取当前日期下日志文件绘制界面

判断日期是否更新

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

3.1.初始化组件

import java.awt.*;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

import java.io.InputStreamReader; import java.io.OutputStreamWriter;

//import java.sql.Date;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.table.DefaultTableModel;

3.2.初始化数据

private Calendar cld = Calendar.getInstance();

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

private DefaultTableModel dtm = new DefaultTableModel(null,astr); private JTable table = new JTable(dtm); //装日期的表格private JScrollPane sp = new JScrollPane(table);

private JButton bLastYear = new JButton("上一年");

private JButton bNextYear = new JButton("下一年");private JBut bNextMonth = new JButton("下月");

private JTextField jtfYear = new JTextField(5);//jtfYear年份显示和输入文本框

private JTextField jtfMonth = new JTextField(2);//jtfMonth月份显示文本框private JPanel p1 = new JPanel(); //装入控制日期按钮的模块private JPanel p2 = new JPanel();

private JPanel p3 = new JPanel(new BorderLayout());

private JPanel p4 = new JPanel(new GridLayout(2,1));

private JPanel p5 = new JPanel(new BorderLayout());

private JButton bAdd = new JButton("保存日志");

private JButton bDel = new JButton("删除日志");

private JTextArea jta = new JTextArea(); //jta--JTextArea private JScrollPane jsp = new JScrollPane(jta);

private JLabel l = new JLabel("年份文本框中可直接键入要查找的年份,以提高查询效率");

private JLabel lt = new JLabel();

private JLabel ld = new JLabel();

private int lastTime;

相关文档
最新文档