万年历设计报告.docx

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

万年历设计报告.docx

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

万年历设计报告.docx

万年历设计报告

 

JAVA万年历设计报告

学习中心:

西安翻译学院

层次:

专升本

专业:

计算机科学与技术

姓名:

乔文东

学号:

61481610310001

 

JAVA万年历设计报告

一课程实习目的:

(1)为用户开发一个便捷的万年历;

(2)对java技术的灵活应用;

(3)掌握日期处理技术;

(4)初步了解软件工程理论知识。

二课程实习内容与要求:

(1)内容

通过本课程设计教学所要求达到的目的是:

实现一个简洁的万年历,通过日期的处理,能按照用户的需求查看各年份的日期。

(2)课程实习的基本要求

(1)使用图形用户界面;

(2)实现日期与星期的查询。

三系统功能分析:

1系统的主要功能:

(1)可以查看当前的年份、月份和日期;

(2)增加了时间栏,便于用户查看当前时间;

(3)能够查找1至9999年的日期与星期的关系。

2系统功能结构图

(1)Clock类:

实现了Runnable接口,运用线程,实现时钟的功能,包含了paint方法。

Paint方法:

从系统获取当前日期,以设置时钟的初始值。

(2)MainFrame类:

作为主类实现了JFrame接口,调用Clock类,包含了MainFrame方法,Init方法,use方法,Resetday方法。

MainFrame方法:

定义各个参数,应用AWT的绘图功能,构建总体框架;获取所要查找的年份和月份,通过调用use方法和Resetday方法,实现“查看”按钮的功能,并得到所需结果。

Init方法:

调用系统的年份和月份,以设置查看面板和日期面板的初始值。

use方法:

确定所要查询的年月的第一天的是星期几。

Resetday方法:

进一步处理所查询的年份月份,确定查询月份的天数;

图1系统功能结构

 

四系统运行

1.运行界面如下:

用户可根据需要在下拉式菜单中选择所要查询的年份和月份,然后点击“查看”按钮:

图2运行界面

2.流程图:

图3

 

五课程设计体会

本次课程设计为课本后设计题目任选一题进行设计。

思考一段时间后,我决定做一个万年历的设计。

因为通过设计这样的一个日历小组件,能使自己对JAVA的一些基础知识掌握的更加牢固。

对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。

最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。

经过长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。

在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。

自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。

通过这次课程设计,我明白了编写程序,不仅要求对课本知识有深刻的了解,同时要求程序设计者有较强的思维和动手能力。

还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。

还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。

所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。

网络是我们学习的最好的老师之一。

有问题,问网络,是一个很好的习惯。

(附上源代码)

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.table.DefaultTableModel;

importjava.io.*;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.GregorianCalendar;

importjava.util.Locale;

importjava.util.TimeZone;

publicclassh_main1extendsJFrameimplementsActionListener,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("下月");

privateJButtonbAddClock=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();

privateJTextFieldh1=newJTextField(5);

privateJTextFieldm1=newJTextField(5);

privatestaticJTextAreajta=newJTextArea(10,5);

privateJScrollPanejsp=newJScrollPane(jta);

privateJTextAreajta1=newJTextArea(5,4);

privateJScrollPanejsp1=newJScrollPane(jta1);

privateJLabell=newJLabel("你可以向年份输入框中输入年份,提高查询效率");

privateJLabellt=newJLabel();

privateJLabelld=newJLabel();

privateJLabelts=newJLabel("请在右边下拉菜单选择你要选择的城市");

privateJLabelclock=newJLabel("闹钟");

privateJLabelnotice=newJLabel("备忘录");

privateJLabelhour=newJLabel("小时");

privateJLabelminute=newJLabel("分钟");

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

privateJLabelnull1=newJLabel();

privateintlastTime;

privateStringlocalTime=null;

privateStrings=null;

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

publich_main1(){

super("MyCalender");//框架命名

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

this.getContentPane().setLayout(newBorderLayout(5,5));

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

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

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

table.setSelectionBackground(Color.GRAY);//当选定某一天时背景颜色为黑色

table.setSelectionForeground(Color.GREEN);

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

table.setFont(newFont("黑体",Font.BOLD,24));//日期数字字体格式

table.setRowHeight(30);//表格的高度

table.addMouseListener(this);//鼠标监听器

jtfYear.addActionListener(this);//可输入年份的文本框

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

bLastYear.addActionListener(this);

bNextYear.addActionListener(this);

bLastMonth.addActionListener(this);

bNextMonth.addActionListener(this);

bAddClock.addActionListener(this);

timeBox.addItemListener(newTimeSelectedChangedListener());

//将按钮添加到Jpane上

p1.add(bLastYear);

p1.add(jtfYear);//年份输入文本框

p1.add(bNextYear);

p1.add(bLastMonth);

p1.add(jtfMonth);

p1.add(bNextMonth);

p2.add(clock);

p2.add(bAddClock);

p2.add(hour);

p2.add(h1);

p2.add(minute);

p2.add(m1);

p3.add(jsp,BorderLayout.SOUTH);

p3.add(lu,BorderLayout.CENTER);

p3.add(ld,BorderLayout.NORTH);

p4.add(l);

p4.add(lt);

p5.add(p4,BorderLayout.SOUTH);

p5.add(sp,BorderLayout.CENTER);

p5.add(p1,BorderLayout.NORTH);

p6.add(ts);

p6.add(timeBox);

p6.add(null1);

p6.add(timeField);

p7.add(notice);

p7.add(jsp1);

p8.add(p2,BorderLayout.CENTER);

p8.add(p7,BorderLayout.SOUTH);

this.getContentPane().add(p3,BorderLayout.EAST);

this.getContentPane().add(p5,BorderLayout.CENTER);

this.getContentPane().add(p6,BorderLayout.SOUTH);

this.getContentPane().add(p8,BorderLayout.WEST);

String[]strDate=DateFormat.getDateInstance().format(newDate())

.split("-");//获取日期

cld.set(Integer.parseInt(strDate[0]),Integer.parseInt(strDate[1])-1,0);

showCalendar(Integer.parseInt(strDate[0]),

Integer.parseInt(strDate[1]),cld);

jtfMonth.setEditable(false);//设置月份文本框为不可编辑

jtfYear.setText(strDate[0]);

jtfMonth.setText(strDate[1]);

this.showTextArea(strDate[2]);

ld.setFont(newFont("新宋体",Font.BOLD,24));

newTimer(lt).start();

newTimeThread().start();

this.setBounds(200,200,700,350);

this.setResizable(false);

this.setVisible(true);

}

publicvoidshowCalendar(intlocalYear,intlocalMonth,Calendarcld)

{

intDays=getDaysOfMonth(localYear,localMonth)+cld.get(Calendar.DAY_OF_WEEK)-2;

Object[]ai=newObject[7];

lastTime=0;

for(inti=cld.get(Calendar.DAY_OF_WEEK)-1;i<=Days;i++)

{

ai[i%7]=String.valueOf(i-(cld.get(Calendar.DAY_OF_WEEK)-2));

if(i%7==6)

{

dtm.addRow(ai);

ai=newObject[7];

lastTime++;

}

}

dtm.addRow(ai);

}

publicintgetDaysOfMonth(intYear,intMonth){

if(Month==1||Month==3||Month==5||Month==7||Month==8||Month==10||Month==12)

{

return31;

}

if(Month==4||Month==6||Month==9||Month==11)

{

return30;

}

if(Year%4==0&&Year%100!

=0||Year%400==0)//闰年

{

return29;

}

else{

return28;

}

}

publicvoidactionPerformed(ActionEvente)

{

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

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

{

intm,y;

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

{

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

=4)

{

thrownewNumberFormatException();

}

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

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

}

catch(NumberFormatExceptionex)

{

JOptionPane.showMessageDialog(this,"请输入4位0-9的数字!

","年份有误",JOptionPane.ERROR_MESSAGE);

return;

}

ld.setText("没有选择日期");

for(inti=0;i

if(e.getSource()==bLastYear){jtfYear.setText(String.valueOf(--y));}

if(e.getSource()==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));

}

else

{

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

}

}

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

showCalendar(y,m,cld);

}

if(e.getSource()==bAddClock){

try{

Clockclock=newClock();

clock.start();

if(Integer.parseInt(h1.getText())<0||Integer.parseInt(h1.getText())>23||

Integer.parseInt(m1.getText())<0||Integer.parseInt(m1.getText())>59)

{

throw(newException());

}

}

catch(Exceptionex){

JOptionPane.showMessageDialog(this,"时数应该为0——23,分钟数应该为0——59","时间有误",JOptionPane.ERROR_MESSAGE);

}

}

}

publicvoidmouseClicked(MouseEvente)

{

jta.setText(null);

intr=table.getSelectedRow();

intc=table.getSelectedColumn();

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

{

ld.setText("没有选择日期");

}

else

{

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

}

}

privatevoidshowTextArea(Objectselected)

{//在这里将公历化为农历

ld.setText(jtfYear.getText()+"年"+jtfMonth.getText()+"月"+selected+"日");

}

publicstaticvoidmain(String[]args)

{

JFrame.setDefaultLookAndFeelDecorated(true);

JDialog.setDefaultLookAndFeelDecorated(true);

newh_main1();

jta.setText(today());

}

privatevoidupdateTimeText(StringtimeZoneId){

if(timeZoneId!

=null){

TimeZonetimeZone=TimeZone.getTimeZone(timeZoneId);

dateFormat.setTimeZone(timeZone);

Calendarcalendar=Calendar.getInstance();

calendar.setTimeZone(timeZone);

timeField.setText(dateFormat.format(calendar.getTime()));

}else{

timeField.setTex

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

当前位置:首页 > 经管营销 > 经济市场

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

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