java课程设计报告万年历Word文件下载.docx
《java课程设计报告万年历Word文件下载.docx》由会员分享,可在线阅读,更多相关《java课程设计报告万年历Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
![java课程设计报告万年历Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/22/b567f52b-4754-438f-9c81-806e45fb54e5/b567f52b-4754-438f-9c81-806e45fb54e51.gif)
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("
日志删除成功"
日志删除失败"
没有找到日志文件"
}
(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("
HHmmssz"
privatebooleanb=true;
publicTimer(JLabellt)
this.lt=lt;
publicvoidrun()
while(true)
try
if(b)
lt.setText(fy.format(newDate()));
lt.setText(fn.format(newDate()));
b=!
b;
this.sleep(500);
catch(InterruptedExceptionex)
ex.printStackTrace();
6.运行结果
7.软件测试
年份输入错误显示
闰年2月份演示以及日志保存
8.总结
对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。
最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。
经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。
在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的知识点。
自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。
通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。
还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。
还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。
所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。
网络是我们学习的最好的老师之一。
有问题,问网络,是一个很好的习惯。
9.参考文献
1.Java编程实例
2.部分资料来源于网络