java万年历课程设计报告.docx

上传人:b****5 文档编号:11797062 上传时间:2023-04-02 格式:DOCX 页数:9 大小:72.46KB
下载 相关 举报
java万年历课程设计报告.docx_第1页
第1页 / 共9页
java万年历课程设计报告.docx_第2页
第2页 / 共9页
java万年历课程设计报告.docx_第3页
第3页 / 共9页
java万年历课程设计报告.docx_第4页
第4页 / 共9页
java万年历课程设计报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

java万年历课程设计报告.docx

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

java万年历课程设计报告.docx

java万年历课程设计报告

 

java万年历课程设计报告

 

 

西安科技大学

程序设计综合实训课程设计报告

 

题目:

万年历

班级:

学号:

姓名:

 

2112月

 

 1.1选题目的及意义1

 

 

1.绪论

1.1选题目的及意义

  选题目的:

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

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

主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们组每个人的学习情况比较合适,而且经过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。

1.2系统概述

随着电子技术的不断发展,人们的不断创新,万年历已经不再局限于书本形式,而是以电脑软件或者电子产品的形式出现。

让其更加便捷。

在学习了JAVA课程后,将以JAVA形式编译出一个简易的万年历。

1.3人员组成及分工

付磊:

负责搜集查找资料

王杜超:

调试程序

两人共同负责程序的编写与修改

2.需求分析

本程序的要求为:

1.使用图形用户界面;

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

3.能够添加或者删除日志

3.总体设计

(1)能够经过图形界面显示日历。

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

(3)支持用户自己输入年份,能够经过上一年,下一年等按钮来选择年份和月份。

(4)能够添加或者删除而且点击对应日期显示日志。

4.详细设计

1.总天数的算法:

首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

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

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

使总天数除以7取余得几既为星期几,若是0,则为星期日。

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

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

4.查询年份必须为四位有效数字,否则不予显示。

5.显示系统时间。

程序初始化

获取当前系统时间年份等数据

提交年月变更数据

是否输入年份或选择月份

开始

计算,绘制屏幕

结束

6.流程图

 

流程图

5.系统实现

5.1开发环境

myeclipse-8.5.0-win32

5.2关键技术

(1)界面的绘制与显示

publicclasswannianliextendsJFrameimplementsActionListener,MouseListener

{

privateCalendarcld=Calendar.getInstance();

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

privateDefaultTableModeldtm=newDefaultTableModel(null,astr);

privateJTabletable=newJTable(dtm);//装日期的表格

privateJScrollPanesp=newJScrollPane(table);

privateJButtonbLastYear=newJButton("上一年");

privateJButtonbNextYear=newJButton("下一年");

privateJButtonbLastMonth=newJButton("上月");

privateJButtonbNextMonth=newJButton("下月");

privateJTextFieldjtfYear=newJTextField(5);//jtfYear年份显示和输入文本框

privateJTextFieldjtfMonth=newJTextField

(2);//jtfMonth月份显示文本框

privateJPanelp1=newJPanel();//装入控制日期按钮的模块

privateJPanelp2=newJPanel();

privateJPanelp3=newJPanel(newBorderLayout());

privateJPanelp4=newJPanel(newGridLayout(2,1));

privateJPanelp5=newJPanel(newBorderLayout());

privateJButtonbAdd=newJButton("保存日志");

privateJButtonbDel=newJButton("删除日志");

背景颜色,字体的显示

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

table.setColumnSelectionAllowed(true);

table.setSelectionBackground(Color.BLACK);//当选定某一天时这一天背景黑色

table.setSelectionForeground(Color.GREEN);//选定的日期字体是绿色的

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

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

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

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

(2)根据月份判断每个月的天数以及判断是否为闰年判断2月的天数

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;

}

(3)日志的添加与删除

if(e.getSource()==bDel)

{

intr=table.getSelectedRow();

intc=table.getSelectedColumn();

Filefiledel=newFile(ld.getText()+".txt");

if(filedel.exists())

{

if(filedel.delete())

{

jta.setText("日志删除成功");

}

else

{

jta.setText("日志删除失败");

}

}

else

{

jta.setText("没有找到日志文件");

}

}

}

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

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

}

catch(NumberFormatExceptionex)

{

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

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

return;

}

(5)显示系统时间

lassTimerextendsThread//显示系统时间

{

privateJLabellt;

privateSimpleDateFormatfy=newSimpleDateFormat("yyyy.MM.ddG'at'HH:

mm:

ssz");

privateSimpleDateFormatfn=newSimpleDateFormat("yyyy.MM.ddG'at'HHmmssz");

privatebooleanb=true;

publicTimer(JLabellt)

{

this.lt=lt;

}

publicvoidrun()

{

while(true)

{

try

{

if(b)

{

lt.setText(fy.format(newDate()));

}

else

{

lt.setText(fn.format(newDate()));

}

b=!

b;

this.sleep(500);

}

catch(InterruptedExceptionex)

{

ex.printStackTrace();

}

}

6.运行结果

7.软件测试

年份输入错误显示

 

闰年2月份演示以及日志保存

8.总结

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

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

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

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

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

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

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

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

因此网络这个强大的工具,确实是我们学习之中能够借助的一个很好的帮手。

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

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

9.参考文献

1.赤金聂松JavaApplet实例编程

2.部分资料来源于网络

 

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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