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

2020-04-18 07:13

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

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

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

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

根据年份和月份来添加后面的日期(如此叙述可能不太明了,老师可以对照程序截图中的备忘录主窗口中的那个日期下拉框来看),其实最后解决了就会发现,其实这些也并不难,在日期处理上只要监听年份和月份。年份判断该年是否为闰年,月份判断是那个月,最终可以确定该月应该添加多少item到下拉框中。而读取选中日期则是将日历主窗口文本框中的年份、下拉框中的月份以及点击按钮上的数字读取出来将他们分别设置成下拉框中的默认年月日则可。另外为了使得后面的备忘记事文件名称长度一致,在进行加入的时候会先比对一下该数字是否为两位数,如果不是两位数则将前面加0后再导入。

下一个问题则是在监听文本框的问题上,因为课本上对DocumentListener也是简单介绍了下,为了实现预想的效果,即在文本框有文字的时候下面的确定键可用,没有文字的时候下面的确定键不可用而只有取消键可用,通过查阅标准文档和询问老师,最终弄清楚了每个抽象方法的含义,顺利的实现了该功能。

最后,在如何保存每日记事的问题上,解决这一问题可以有两种思路,一种是搭建一个数据库,两一种是通过保存文件的形式。毫无疑问,通过写入数据库的方式更有难度、更有挑战性,但是考虑到在备忘录方面一直都是我一个人在做,精力方面可能不够,最后我采用了写文件的形式来保存,每日的记事。后来发现有的组使用数据库实现的,最后他们组得分B+,我们得分B,其实有时候输在了不敢尝试上、或者说分工更明确一点更好(毕竟有些东西一个人做了,别人或许有帮忙的心也差不上手了)。当然虽然写文件的形式比较简单一点,这中间也要做好相关逻辑的设计。在写文件的时候采用选中日期为文件名的方式进行保存,在读文件时候则读取以选中日期文件命名的文件,将其显示在文本区中。另外在修改了当天记事后,炫耀对文件以同样的方式进行保存。

最后该程序还有不足,比如说未能实现相关的时间提醒的功能、有些细节处理的不够使得部分地方缺少人性化。对于代码这部分,自己第一次编写者这些代码有些地方还需要锻炼,比如说对类的划分、对相关语句进行打包成一个函数来重复调用提高代码的重用性等等,因为有些语句(像设置组件可见不可见的语句)在大量的地方都用到了,但是我写的时候只是把他们复制下来,这部分代码应该做成一个函数,或者抽象成类效果能更好点。验收结束的那一刻所有的压力、所有的因遇到而尝到的苦涩最终都化成满满的喜悦,或者在某种程度上更是一种成就感。

七、附件

1.程序流程图、类结构图 (1)程序流程图

该程序可以分为三个部分,即日历主程序和时钟、备忘录两个程序。其中时钟程序是通过日历主界面上的按钮触发事件来启动并创建相应的窗口,备忘录程序是通过日历上按钮事件触发的。日历主窗口可以实现分页显示、上下翻动、为每月选定背景等功能,时钟窗口可以实现指针和数字时钟显示、整点报时功能,备忘录程序可以通过创建、修改、删除已选定日期为文件名的文件来实现添加、修改、删除多条记事的功能。整个程序流程如下图(由于整个流程图较大,为了使其在听一个版面中显现出来,因此有些字体可能偏小,老师如若看不清,可以用Visio打开放大查看)所示:

开始日历主窗口部件初始化,并添加相应监听触发时钟按钮事件文本框输入年份按钮调节年份下拉框选择月份按钮调节月份触发备忘录按钮监听事件触发today按钮事件初始化时钟窗口组件,并添加相应监听触发年份监听事件触发月份监听事件触发背景监听事件初始化备忘录窗口组件,并添加相应监听绘制时钟表盘监听系统时间显示选定年份月份日历显示选定年份月份日历背景显示备忘录窗口整点触发监听事件点击今日待办按钮点击添加按钮时钟窗口显示整点报时日历主窗口显示(默认为当前日期)触发今日待办按钮监听事件触发添加按钮监听事件添加记事文本区显示空白否是否存在以是否存在以被选中日期被选中日期命名的文件命名的文件是删除文件否是否保存是否保存是读取该文件并在文本区显示保存以当前日期命名的文件是是否删除是否删除是否是否修改是否修改重写文件否保持当前状态结束 (2)类图

日历程序类图:

时钟主程序主要包含四个类,其中OurCalender、MainWin、ACalender三个类是都是JFrame的子类。OurCalender里包含程序的入口,Mainwin主要用来创建窗口对象,ACalender主要用来创建日历对象,NongLi主要用来进行农历的显示。日历程序类图如下所示:

JFrameOurCalendarMainWin+MainWin()+actionPerformed(in e : ActionEvent)NongLi+lYearDays(in y : int) : int+leapDays(in y : int) : int+leapMonth(in y : int) : int+monthDays(in y : int, in m : int) : int+Lunar(in y : int, in m : int) : long+calElement(in y : int, in m : int, in d : int) : long+getchina(in day : int) : string+shower() : string1ACalendar+Year : JTextField#Month : JComboBox#TheYear : JLabel+TheMonth : JLabel+this_date : Date+Label_title : JLabel+Button_day : JButton+Up1 : JButton+Down2 : JButton+Up2 : JButton+Down1 : JButton+Today : JButton-background : string+jP : JPanel+this_year : int+this_month : int- bool : bool-year_num : string-month_num : int+week : int+day : int+ACalendar()+setYM()+setDay()+getYear() : int+getMonth() : int+getWeek() : int+setImg(in month_num : int)+actionPerformed(in e : ActionEvent)1。

时钟类图:

时钟类主要包含DrawClock和Clock类,其中DrawClock类主要是用来创建时钟对象,而Clock类主要是用来创建窗口对象和时钟监听来进行整点报时。时钟程序类图如下所示:


Java课程设计实验报告及全部源码流程图(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国医学独立实验室现状及发展前景分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: