Java课程设计实验报告及全部源码流程图

  • 格式:doc
  • 大小:714.87 KB
  • 文档页数:72

下载文档原格式

  / 72
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

一、实验目的

1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。

2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。

3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。

二、实验要求

1.问题描述准确、规范。

2.程序结构合理,调试数据准确、有代表性.。

3.界面布局整齐,人机交互方便。

4.输出结果正确。

5.正确撰写实验报告。

三、实验内容

编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。

四、实验步骤

1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。

2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。

3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。

4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。

5.详细的上机实验步骤见任务分工及程序设计进度表。

五、实验结果

经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。

下面是程序运行效果截图:

日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

备忘录主界面(实现备忘录的添加,及当前日历的显示):

备忘录主界面(实现备忘录的显示,及对当前备忘录的修改删除等):

时钟主界面(显示当前时间,实现报整点报时功能):

六、实验总结

两周的课程设计结束了,在这其中历尽酸甜苦辣咸各种滋味,不过收获颇丰。从学习C语言、数据库等等计算机编程类课程开始,自己始终有种感觉,那就是太理论化了、缺少实践。而这次的Java程序设计可以说与以往大不相同,先是在课堂上老师讲述了有关的基础理论、基本语法知识,而后再加上这两周的课程设计,可以说是真正能够体会到程序编程的乐趣,也第一次发现自己原来对程序设计是如此的感兴趣。尤其是由于课程时间较紧,课上时间老师只是简单给我们讲述了一下Java Swing的基础知识,并没有去深入,而在此次课程设计中大量用到的监听事件的有关知识需要自己去查标准文档,去网上找相关系料,这无疑对自己是一个挑战。但是两周下来,我做到了,我独立完成了对备忘录程序的编写,累积下来这部分共涉及到包括Action Listener,Mouse Listener,Menu Listener,Document Listener 等各种各类监听18个监听,分为6个类,累计完成程序千余行。而给我印象最深刻的便监听了,可以说是整个备忘录的大部分代码都是与监听相关,这也是让我我学会了对程序监听的运用,当然只是学会远远谈不上精通。

我编写的类有Test、MainWin、MyMenuListener1、PoliceListen、PoliceListen2、MyWindowListener。其中Test类主要是用来定义备忘录主窗口的各种组件以及在相关组件上添加监听以实现备忘录添加、修改、删除等功能。MainWin类主要是用来创建Test对象,用以显示窗口的。

MyMenuListener1主要是给今日待办菜单定义菜单监听,从而使其选中后能显示今日待办的备忘记事,而当未被选中时相关的文字、按钮又都会隐藏掉。PoliceListen主要是用来定义日历日期按钮事件的监听,用以监听当点击相关日期时会弹出相应日期的备忘记事的窗口来。PoliceListen2主要是定义备忘录窗口中添加按钮的时间监听,使其被点击后能够显示添加备忘记事功能的相关功能按钮和相关文本区。MyWindowListener主要是定义备忘录窗口的窗口监听,和PoliceListen共同使用来对窗口的激活状态进行监听,以保证窗口能够按照预定计划弹出和关闭。

在实验过程中遇到了大大小小各种困难,通过自己查资料、询问老师、同学讨论基本解决了这些困难。下面我就说一说在这次课程设计中遇到的问题有哪些,以及自己的解决办法和从中得出的经验心得。首先在对备忘录窗口的布局问题上,一开始采用流式布局,按钮少的时候效果还算说得过去,但是当按钮一多整个布局就不那么好控制了了。为了实现预期的效果,最终采用了null布局,在该种布局下,需要为每个组件指定坐标,否则组件将不会显示。首先我的想法是,根据窗口的高度和宽度来对按钮进行布局,我相信这种方法肯定是正规程序设计中在布局是采用的方法,但是摆在眼前的问题是时间比较紧,没有大量的时间来进行这种比较精确地布局。因此,最终是通过不断地尝试来给组件赋予坐标值,最终效果是肉眼感觉起来是不错的,如果时间充足当然可以做的更精确一点。

第二个问题也是一个比较简单的问题,因为刚开始不熟悉监听,因此遇到了弹出一个窗口后,再点击这个按钮本来按照效果不应该在弹出窗口的,但是依旧能弹出。为了解决这个问题,自己想了一个办法那就是标记,当有窗口弹出时,将标记值变成1,而当标记值为1的时候,点击此按钮将不会触发监听事件,只有当标记值为0的时候该监听事件才能起到作用,然后当此窗口的状态为关闭时,又会将该标记值变成0,这样的效果主要是通过PoliceListen和MyWindowListen两个类来完成的,其中PoliceListen是鼠标监听,而MyWindowListen则是窗口监听。这是这一个监听最终在自己的努力下成功了,才使自己对监听事件产生了浓厚的兴趣,以至于后来加了那么多监听虽然困难很多也没有退缩。自己也从中体会到平时的程序之所以能够相应操作的原理,那就是对命令、对动作进行监听。而且,有时候看起来非常简单的功能实现起来也不是很容易,就像本例中的所说的那样。

在完成了第一个监听以后,又在Test里面加入了N多个监听,这些监听大部分是ActionListener监听,也即最常有的一类监听。为了避免类过多,我大多采用了匿名类的方式内嵌于Test类中。这些监听的设计中,大部分没有遇到问题,有少数是因为自己的逻辑顺序不对而没有达到预期的效果,最后都能调整过来。遇到的问题是读取选中日期,以及在那三个下拉框中怎么