万年历课程设计说明书.docx

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

万年历课程设计说明书.docx

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

万年历课程设计说明书.docx

万年历课程设计说明书

(此文档为word格式,下载后您可任意编辑修改!

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2012年秋季学期

 

Java课程设计

 

题目:

万年历的设计

成绩:

摘要2

序言3

正文4

一、系统分析与设计4

二、详细设计5

2.1类Calendars5

2.2类Time5

2.3类CalTabel5

三、系统测试6

四、软件使用说明书9

设计总结10

参考文献11

致谢12

附录1(源代码)13

 

摘要

根据万年历的需要,设计一个万年历的程序,实现在此万年历表中有关日期和时间的基本操作:

显示当时系统的日期和时间;显示当日的年和月;通过查询显示指定年、月的日历;设置北京时间,以显示北京和格林威治的时间并以设定的时间开始计时。

设置时间和查询日历通过设计的窗体执行和显示。

关键词:

万年历;图形界面;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:

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);

for(inti=0;i<60;i++){listminute.add(String.valueOf(i));}

listsecond=newList(1,true);

for(inti=0;i<60;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(){

TODOAuto-generatedmethodstub

while(true){

SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dde)

{}

}

}

publicvoidactionPerformed(ActionEvente){

}

publicvoiditemStateChanged(ItemEvente){

TODOAuto-generatedmethodstub

Listtemp;

StringsList[];

Stringmgr=newString("");

if(e.getItemSelectable()instanceofList){

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

sList=temp.getSelectedItems();

for(inti=0;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{

publicvoidactionPerformed(ActionEvente){

TODOAuto-generatedmethodstub

state=true;

}}

privateclassBstopActionimplementsActionListener{

publicvoidactionPerformed(ActionEvente){

TODOAuto-generatedmethodstub

state=false;

}}

}

classTime{

privateintstr;}

else

returns;

}

publicStringshowminute(){

Strings,str;

s=String.valueOf(minute);

if(minute<10){

str="0"+s;

returnstr;}

else

returns;

}

publicStringshowsecond(){

Strings,str;

s=String.valueOf(second);

if(second<10){

str="0"+s;

returnstr;

}

else

returns;

}

publicStringshowtime(Timeobj){

Stringstr;

str=obj.showhour()+":

"+obj.showminute()+":

"+obj.showsecond();

returnstr;

}

}

packagecalender;

importjavax.swing.*;

importjava.util.*;

importjava.awt.*;

importjava.text.*;

importjavax.swing.table.DefaultTableCellRenderer;

importjavax.swing.table.DefaultTableModel;

importjavax.swing.table.TableCellRenderer;

importjava.awt.Font;

importjavax.swing.table.JTableHeader;

importjava.awt.event.*;

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