java课程设计万年历程序设计报告Word文件下载.docx

上传人:b****2 文档编号:4377416 上传时间:2023-05-03 格式:DOCX 页数:41 大小:26.25KB
下载 相关 举报
java课程设计万年历程序设计报告Word文件下载.docx_第1页
第1页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第2页
第2页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第3页
第3页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第4页
第4页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第5页
第5页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第6页
第6页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第7页
第7页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第8页
第8页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第9页
第9页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第10页
第10页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第11页
第11页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第12页
第12页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第13页
第13页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第14页
第14页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第15页
第15页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第16页
第16页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第17页
第17页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第18页
第18页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第19页
第19页 / 共41页
java课程设计万年历程序设计报告Word文件下载.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java课程设计万年历程序设计报告Word文件下载.docx

《java课程设计万年历程序设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《java课程设计万年历程序设计报告Word文件下载.docx(41页珍藏版)》请在冰点文库上搜索。

java课程设计万年历程序设计报告Word文件下载.docx

DevelopmentKit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中JavaDevelopmentKit简称JDK是大多开发工具的基础。

以上的每种开发工

具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和

软硬件环境等因素来选择一种合适的开发工具。

第1页

1需求分析

1.1需求分析

本程序的要求为:

1.使用图形用户界面;

2.本程序能够实现日期与星期的查询。

1.2功能设计

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

(1)通过网页形式运行,实现图形界面。

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

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

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

第2页

2.概要设计

2.1程序设计思路

1.总天数的算法:

首先用if语句判断定义年到输入年之间每一年是否为闰年,是

闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令

总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到

要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使

总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

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

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

是7,则为星期日。

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

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

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

第3页

2.2程序运行界面

图2-1程序运行界面

2.3流程图

开始

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

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

判断日期是否更新

第4页

结束

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

3.1.初始化组件

importjava.awt.*;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.MouseEvent;

importjava.awt.event.MouseListener;

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

//importjava.sql.Date;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

第5页

importjava.util.Calendar;

importjava.util.Date;

importjavax.swing.JButton;

importjavax.swing.JDialog;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JScrollPane;

importjavax.swing.JTable;

importjavax.swing.JTextArea;

importjavax.swing.JTextField;

importjavax.swing.table.DefaultTableModel;

3.2.初始化数据

private

Calendar

cld

=Calendar.

getInstance

();

String[]

astr

={

"

星期一"

星期二"

星期三"

星期四"

星期五"

"

星期六"

星期日"

};

DefaultTableModel

dtm

=

newDefaultTableModel(

null,astr);

JTable

table

new

JTable(

dtm);

//

装日期的表格

JScrollPane

sp

newJScrollPane(

);

JButton

bLastYear

JButton(

上一年"

bNextYear

下一年"

);

private

JBut

bNextMonth

=newJButton(

下月"

JTextField

jtfYear

JTextField(5);

//jtfYear

年份显示和输入文本

jtfMonth

JTextField

(2);

//jtfMonth

月份显示文本框

JPanel

p1

newJPanel();

//装入控制日期按钮的模块

p2=

p3=

newJPanel(

newBorderLayout());

p4=

newGridLayout(2,1));

p5=

bAdd

newJButton(

保存日志"

bDel

删除日志"

JTextArea

jta

JTextArea();

//jta--JTextArea

jsp

JScrollPane(

JLabel

l=

JLabel(

年份文本框中可直接键入要查找的年份

以提高查询效

率"

lt

JLabel();

ld

int

lastTime

;

第6页

3.3.绘制程序界面

public

wannianli()

{

super

("

万年历"

//框架命名

this

.setDefaultCloseOperation(JFrame.

EXIT_ON_CLOSE);

//窗口关闭函数

.getContentPane().setLayout(

BorderLayout(10,0));

.setLineWrap(

true

.setGridColor(Color.

GRAY);

星期之间的网格线是灰色的

.setColumnSelectionAllowed(

.setSelectionBackground(Color.

BLACK);

当选定某一天时这一天背景

黑色

.setSelectionForeground(Color.

GREEN);

选定的日期字体是绿色的

.setBackground(

newColor(184,207,229));

日期显示表格颜色浅蓝色

.setFont(

newFont("

黑体"

Font.BOLD,24));

日期数字字体格式

.setRowHeight(30);

//表格的高度

.addMouseListener(

this);

鼠标监听器

jtfYear.addActionListener(this);

//可输入年份的文本框

//为各个按钮添加监听函数

bAdd.addActionListener(this);

bDel.addActionListener(this);

bLastYear.addActionListener(this);

bNextYear.addActionListener(this);

bLastMonth.addActionListener(this);

bNextMonth.addActionListener(this);

//将按钮添加到Jpanel上

p1.add(

//年份输入文本框

bLastMonth

p2.add(

bAdd);

p3.add(

BorderLayout.

CENTER);

p2,BorderLayout.

SOUTH);

ld,BorderLayout.

NORTH);

p4.add(

l);

第7页

p5.add(

p4

.getContentPane().add(

p5,BorderLayout.

p3,BorderLayout.

EAST);

String[]strDate=DateFormat.

getDateInstance

().format(

Date()).split(

-"

获得日期

.set(Integer.

parseInt

(strDate[0]),

Integer.

(strDate[1])-1,0);

showCalendar(Integer.

(strDate[1]),

.setEditable(

false

//设置月份的文本框为不可编辑

.setText(strDate[0]);

.setText(strDate[1]);

.showTextArea(strDate[2]);

Font(

新宋体"

Font.

BOLD,24));

Timer(

).start();

.setBounds(200,200,600,320);

.setResizable(

.setVisible(

}

3.4触发器

publicvoidactionPerformed(ActionEvente)

if(e.getSource()==jtfYear||e.getSource()==bLastYear||e.getSource()==bNextYear||

e.getSource()==bLastMonth||e.getSource()==

bNextMonth)

intm,y;

try//控制输入的年份正确,异常控制

if(jtfYear.getText().length()!

=4)

thrownewNumberFormatException();

y=Integer.parseInt(jtfYear.getText());

第8页

m=Integer.parseInt(jtfMonth.getText());

catch(NumberFormatExceptionex)

JOptionPane.showMessageDialog(this,"

请输入4位0-9的数字!

年份有误"

JOptionPane.ERROR_MESSAGE);

return;

ld.setText("

没有选择日期"

for(inti=0;

i<

lastTime+1;

i++){dtm.removeRow(0);

if(e.getSource()==

bLastYear){jtfYear.setText(String.valueOf(--y));

}

bNextYear){jtfYear.setText(String.valueOf(++y));

if(e.getSource()==bLastMonth)

if(m==1)

jtfYear.setText(String.valueOf(--y));

m=12;

jtfMonth.setText(String.valueOf(m));

else

jtfMonth.setText(String.valueOf(--m));

if(e.getSource()==bNextMonth)

if(m==12)

jtfYear.setText(String.valueOf(++y));

m=1;

jtfMonth.setText(String.valueOf(++m));

cld.set(y,m-1,0);

showCalendar(y,m,cld);

第9页

if(e.getSource()==bAdd)

intr=table.getSelectedRow();

intc=table.getSelectedColumn();

if(!

ld.getText().equals("

))

try

Filefile=newFile(ld.getText()+"

.txt"

BufferedWriterbw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(file)));

bw.write(jta.getText());

bw.close();

catch(FileNotFoundExceptionex)

ex.printStackTrace();

catch(IOExceptionex)

if(e.getSource()==bDel)

Filefiledel=newFile(ld.getText()+"

if(filedel.exists())

if(filedel.delete())

jta.setText("

日志删除成功"

日志删除失败"

没有找到日志文件"

第10页

publicvoidmouseClicked(MouseEvente)

jta.setText(null);

if(table.getValueAt(r,c)==null)

this.showTextArea(table.getValueAt(r,c));

publicvoidmousePressed(MouseEvente)

publicvoidmouseReleased(MouseEvente)

publicvoidmouseEntered(MouseEvente)

publicvoidmouseExited(MouseEvente)

privatevoidshowTextArea(Objectselected)

{//将所选日期显示出来,能不能弄成农历显示

ld.setText(jtfYear.getText()+"

年"

+jtfMonth.getText()+"

+selected+"

日"

Filefilein=newFile(ld.getText()+"

if(filein.exists())

BufferedReaderbr

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

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2