万年历课程设计说明书Word文件下载.docx

上传人:b****3 文档编号:16717500 上传时间:2022-11-25 格式:DOCX 页数:36 大小:468.16KB
下载 相关 举报
万年历课程设计说明书Word文件下载.docx_第1页
第1页 / 共36页
万年历课程设计说明书Word文件下载.docx_第2页
第2页 / 共36页
万年历课程设计说明书Word文件下载.docx_第3页
第3页 / 共36页
万年历课程设计说明书Word文件下载.docx_第4页
第4页 / 共36页
万年历课程设计说明书Word文件下载.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

万年历课程设计说明书Word文件下载.docx

《万年历课程设计说明书Word文件下载.docx》由会员分享,可在线阅读,更多相关《万年历课程设计说明书Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。

万年历课程设计说明书Word文件下载.docx

关键词:

万年历;

图形界面;

java技术

序言

1996年Java第一次发布就引起了人们的极大兴趣。

关注Java的人士不仅限于计算机出版界,还有诸如《纽约时报》、《华盛顿邮报》、《商业周刊》这样的主流媒体。

Java时第一种也是唯一一种在NationalPublicRadio上占用了十分钟时间进行介绍的程序设计语言,并且还得到了$100000000的风险投资基金。

这些基金全部用来支持这种特别的计算机语言开发的产品。

Java语言在Internet舞台上以及亮相便名声大噪,其原因在于它将有望成为连接用户与信息的万能胶,而不论这些信息来源于Web服务器、数据库、信息提供商,还是任何其他渠道,Java固有的可靠性与安全性不仅令Java程序员放心,也令使用Java程序的用户放心。

而此次将用Java设计一个万年历表,我们更加了解Java面向对象的程序设计语言。

正文

一、系统分析与设计

1、系统的要求

(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒);

(2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天);

(3)由类Time和日期类Date,派生出DateTime类,除具有年、月、日、时、分、秒外,还增加国名和与格林威治时间的差;

(4)输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断输出下一秒的时间和日期,以及格林威治的日期和时间。

2、系统的总体设计

系统的界面结构设计图如下:

图1万年历界面结构图

二、详细设计

2.1类Calendars

主类Calendars实现Runnable、ActionListener、ItemListener接口中的run()方法、actionPerformed()方法和itemStateChanged()方法。

创建构造方法calendar()完成构造窗体的功能。

创建主方法main()构造对象,实现线程机制调度,进入程序开始操作。

实现run方法(),完成线程机制,即动态显示时间。

创建内部类BgoAction和BstopAction实现按钮的功能。

2.2类Time

设置私有成员变量hour、minute、second都为整型。

设置成员方法如下:

publicvoidchangeBtoG(Timea,Timeb)此方法以将北京时间转变为格林威治时间

publicvoidgethour(Timet,Stringstr)、publicvoidgetminute(Timet,Stringstr)和publicvoidgetsecond(Timet,Stringstr)三个成员方法分别用以获得设置的北京时间时、分、秒。

publicvoidsetzero(Timetimer)此方法用于将时间全部归零。

publicvoidtimeadd(Timetimer)此方法用于时间的增加。

publicStringshowhour()、publicStringshowminute()publicStringshowsecond()此三个成员方法分别用于返回设置的时、分、秒。

publicStringshowtime(Timeobj)用字符串方式返回设置的时间。

2.3类CalTabel

此类用于构造日历并用表Table的形式显示。

设置了三个按钮JButtonlastMonthButton=newJButton("

<

"

);

JButtonnextMonthButton=newJButton("

>

JButtoncurrentButton=newJButton("

今"

并设置三个内部类LML、NML和CBL分别通过实现接口ActionListener中的actionPerformed()方法来完成三个按钮的功能。

构造方法CalTabel()用于创建显示日历的Tabel表。

三、系统测试

3.1万年历界面制作如下:

图2万年历操作界面

3.2在操作界面上按“》”按钮,显示下一月如下:

图3显示下一个月的日历

3.3在图3中点击按钮“《”显示上一月如下图:

图4显示上一月的日历

3.4在图4中设置时间的时、分、秒分别为10,20.30如下图所示:

图5设置北京时间

3.5在图5中点击按钮“确定”,北京时间和格林威治时间将自动运行,截图如下:

图6时间自动运行

3.6在图6中点击按钮“停止”,时间将停止在某一时刻如下图:

图7设置的时间停止运行

四、软件使用说明书

1在图2中所示,按钮“《”、“》”、“今”的功能分别为在日历表中显示上一月日历,在日历表中设置下一月日历,在日历表中显示本月日历。

2列表“时”、“分”、“秒”分别用来选择北京时间的时、分、秒的设置。

3按钮“确定”用来确定北京时间设置并运行北京时间和格林威治时间。

4按钮“停止”用来停止北京时间和格林威治时间的运行。

设计总结

万年历表的设计,是通过Java图形界面来实现的。

在设计过程中,我遇到了很多不曾知道的困难,如采用布局管理器布局后,将组件精确放置在指定地方,以及对组件的设计和实现组件在窗体中的功能。

对于遇到的这些困难,刚开始的时候我是一筹莫展的,也让我在设计过程中十分狼狈。

此后,我就又回到书本,把在设计中遇到的问题对照着书一一了解,一一分析,虽然仍然还有很多问题,但是设计总算在推进中,这一点让我很欣慰。

在自己重新学习的过程中,感觉自己对Java的了解真是九牛一毛。

所以我下定决心要虚心求教,在后来毫无头绪的设计中,我通过不断地询问,也非常幸运地获得了同学们的细心指导。

于是让我这对Java知之甚少的人完成了这次对万年历的设计。

在对万年历设计的过程中,通过那些对我产生困难的问题,让我重新明白了Java这门程序设计语言,也让我深深地体会到了程序设计的苦涩和甘甜。

参考文献

[1]曲朝阳,杨杰明等.Java程序设计.北京:

清华大学出版社,2008.10

[2]耿祥以,张跃平.Java大学生实用教程.北京:

电子工业出版社,2012.6

[3]明日科技.Java经典编程.北京:

清华大学出版社,2012.10

[4]李尊朝,苏军.Java语言程序设计.北京:

中国铁道出版社,2004.2

[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.

致谢

能比较顺利地完成这次课程设计,很大程度上得力于老师和同学们的帮助,在此向他们致以诚挚的谢意。

这次很多细节的地方能完成都得感谢老师的耐心指导,他们的严谨治学让我受益匪浅,也让对我以后的学习和工作的态度产生了积极地影响。

在程序设计中,同学们七嘴八舌,各抒己见,相互帮助,以使我们能够我们能在这枯燥的程序设计中自娱自乐,并且比较顺利地完成。

这不仅让我们在技术上更上一层楼,还让我们的感情更进一步了,在此感谢他们。

附录1(源代码)

packagecalender;

importjava.util.*;

importjava.awt.*;

importjava.awt.List;

importjava.awt.event.*;

importjava.text.SimpleDateFormat;

publicclassCalendarsimplementsRunnable,ActionListener,ItemListener{

Calendarcal1=newGregorianCalendar();

CalTabletabel=newCalTable(cal1);

Timetimer=newTime();

Timegtimer=newTime();

Framecalendar;

Panelpanel1,panel2,panel3,panel4;

Panelpanel21,panel22;

Labellabel1;

Labellabelhour,labelminute,labelsecond,labeltime,labelbeijing,labelGreenwich;

Labellabel,labelbeijingtime,labelGreenwichtime,labelnull,labelnull2;

LabellabelSouth;

Listlisthour,listminute,listsecond;

Buttonbuttonsure,buttonstop;

privatebooleanstate;

publicbooleangetstate(){returnstate;

}

publicCalendars(){

*创建、设置窗体*

calendar=newFrame("

Calendars"

calendar.setSize(500,365);

calendar.setLayout(newBorderLayout());

calendar.setResizable(false);

窗体大小不可改变

calendar.setVisible(true);

*创建、设置面板1*

panel1=newPanel();

panel1.setBackground(Color.lightGray);

label1=newLabel("

"

Label.RIGHT);

panel1.add(label1);

将面板1加入到窗体calendar

calendar.add(panel1,BorderLayout.NORTH);

*创建、设置面板2*

panel2=newPanel();

panel2.setLayout(newGridLayout());

panel2.setBackground(Color.lightGray);

创建按钮

Buttonbuttonsure=newButton("

确定"

buttonsure.addActionListener(newBgoAction());

Buttonbuttonstop=newButton("

停止"

buttonstop.addActionListener(newBstopAction());

labelnull=newLabel("

labelnull2=newLabel();

labelbeijingtime=newLabel("

labelGreenwichtime=newLabel("

00:

00"

创建标签

labelhour=newLabel("

时:

labelminute=newLabel("

分:

labelsecond=newLabel("

秒:

创建列表

listhour=newList(1,true);

for(inti=0;

i<

24;

i++){listhour.add(String.valueOf(i));

listminute=newList(1,true);

60;

i++){listminute.add(String.valueOf(i));

listsecond=newList(1,true);

i++){listsecond.add(String.valueOf(i));

列表不设置多项选择,只允许单项选择

listhour.setMultipleMode(false);

listminute.setMultipleMode(false);

listsecond.setMultipleMode(false);

设置列表大小

listhour.setSize(20,10);

给列表添加事件监听器

listhour.addActionListener(this);

listhour.addItemListener(this);

listminute.addActionListener(this);

listminute.addItemListener(this);

listsecond.addActionListener(this);

listsecond.addItemListener(this);

将标签和列表添加到面板

panel2.add(labeltime);

panel2.add(labelnull);

panel2.add(labelhour);

panel2.add(listhour);

panel2.add(labelminute);

panel2.add(listminute);

panel2.add(labelsecond);

panel2.add(listsecond);

panel2.add(buttonsure);

panel2.add(buttonstop);

panel2.add(labelbeijing);

panel2.add(labelbeijingtime);

panel2.add(labelGreenwich);

panel2.add(labelGreenwichtime);

将面板2加入到窗体calendar

calendar.add(panel2,BorderLayout.EAST);

*创建、设置面板3*

panel3=newPanel();

panel3.setLayout(newGridLayout(1,1));

panel3.add(tabel);

将面板3加入到窗体中

calendar.add(panel3,BorderLayout.CENTER);

*创建、设置面板4*

panel4=newPanel();

panel4.setLayout(newGridLayout(1,1));

panel4.setBackground(Color.lightGray);

labelSouth=newLabel("

thankyou!

panel4.add(labelSouth);

*将面板4加入窗体*

calendar.add(panel4,BorderLayout.SOUTH);

*关闭窗口*

calendar.addWindowListener(newWindowAdapter()

{

publicvoidwindowClosing(WindowEvente)

{

System.exit(0);

}

});

}

publicstaticvoidmain(String[]args){

TODOAuto-generatedmethodstub

Calendarsmy=newCalendars();

Threadthread=newThread(my);

thread.start();

publicvoidrun(){

while(true){

SimpleDateFormatsdf=newSimpleDateFormat("

yyyy-MM-dde)

{}

}

publicvoidactionPerformed(ActionEvente){

publicvoiditemStateChanged(ItemEvente){

Listtemp;

StringsList[];

Stringmgr=newString("

if(e.getItemSelectable()instanceofList){

temp=(List)(e.getItemSelectable());

sList=temp.getSelectedItems();

for(inti=0;

sList.length;

i++)

mgr=mgr+sList[i]+"

;

if(e.getSource()==listhour)timer.gethour(timer,mgr);

if(e.getSource()==listminute)timer.getminute(timer,mgr);

if(e.getSource()==listsecond)timer.getsecond(timer,mgr);

privateclassBgoActionimplementsActionListener{

state=true;

}}

privateclassBstopActionimplementsActionListener{

state=false;

classTime{

privateintstr;

else

returns;

publicStringshowminute(){

Strings,str;

s=String.valueOf(minute);

if(minute<

10){

str="

0"

+s;

returnstr;

publicStringshowsecond(){

s=String.valueOf(second);

if(second<

publicStringshowtime(Timeobj){

Stringstr;

str=obj.showhour()+"

:

+obj.showminute()+"

+obj.showsecond();

importjavax.swing.*;

importjava.text.*;

importjavax.swing.table.DefaultTableCellRenderer;

importjavax.swing.table.DefaultTableModel;

importjavax.swing.table.TableCellRenderer;

importjava.awt.Font;

importjavax.swing.table.JTableHeader;

publicclassCalTableextendsJPanel{

privatestaticfinallongserialVersionUID=1L;

JButtonlastMonthButton=newJButton("

JButtonnextMonthButton=newJButton("

JButtoncurrentButton=newJButton("

JLabelcurrentMonthLabel=newJLabel();

JTabletable=newJTable();

Calendarcalendar;

inttoday;

intmonthDays;

intwhiteDay;

publicCalTable(Calendarcalendar){

this.calendar=calendar;

setOpaque(false);

lastMonthButton.setToolTipText("

上个月"

nextMonthButton.setToolTipText("

下个月"

currentButton.setToolTipText("

今天"

lastMonthButton.setBackground(Color.WHITE);

nextMonthButton.setBackground(Color.WHITE);

currentButton.setBackground(Color.WHITE);

updateTable(calendar);

setSelected();

lastMonthButton.addActionListener(newLML());

nextMonthButton.addActionListener(newNML());

currentButton.addActionListener(newCBL());

BoxbuttonPane=Box.createHorizontalBox();

buttonPane.add(lastMonthButton);

buttonPane.add(Box.createHorizontalGlue());

buttonPane.add(currentM

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

当前位置:首页 > 经管营销 > 金融投资

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

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