《Java程序设计》实训报告文档编辑器.docx
《《Java程序设计》实训报告文档编辑器.docx》由会员分享,可在线阅读,更多相关《《Java程序设计》实训报告文档编辑器.docx(20页珍藏版)》请在冰豆网上搜索。
《Java程序设计》实训报告文档编辑器
《Java程序设计》实训报告
——《文档编辑器》
一、实训任务及要求:
1.1、实训的任务
《Java程序设计实训》是计算机专业一门重要的专业技术基础实践课程。
为了能够较好的完成实训任务,学生应具备软件开发技术的基础知识,实训的主要目的在于将理论与实际应用相结合,使用程序设计语言java,以及相关软件设计开发知识完成软件的设计开发任务。
本实训课程将为整个专业的学习以及软件设计水平的提高打下良好的基础,提高学生项目分析、设计、编写、调试和测试的能力,并培养基本的、良好的团队合作能力。
1.2、实训的要求
实训中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握软件开发技术,提高分析、解决实际问题的能力
本次实训要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练
二、需求分析:
参考系统附件中的记事本,设计实现一个文本编辑器。
通过此系统可以实现如下功能:
1)可进行文件的新建、打开、保存、编辑等基本功能。
2)支持复制、剪切、撤销和粘贴等操作
3)可进行查找和替换操作,字体格式颜色的更换。
4)支持自动换行、状态栏改变等操作
三、详细设计:
3.1、系统模块设计
根据系统自带的文档编辑器的特征设计,包括如下的功能模块:
一、整体结构框架包括:
菜单栏快捷菜单栏状态栏文档编辑区
二、每个框架分别包含不同的子框架,各个模块的具体框架:
Ø菜单栏:
文件编辑格式查看帮助
Ø菜单栏中各个子菜单功能
文件:
新建打开保存另存为打印退出
编辑:
撤销剪切复制删除粘贴查找查找下一个替换转到全选时间/日期
格式:
自动换行字体颜色查看:
状态栏帮助:
帮助关于
Ø状态栏中包含的子菜单:
时间当前光标所在行数打开的文件的信息
Ø子菜单功能的实现主要的几个功能介绍
1)查找和替换:
查找内容查找下一个替换全部替换区分大小写方向(向上向下)取消
2)字体格式:
字体字形大小示例确定取消
3)颜色设置:
背景颜色字体颜色(调用系统内部的色板)
4)打开与另存为:
两个窗体调用系统函数直接利用,注意格式的选择
Ø文本编辑区
监视文本内容是否改变、文本的创建时间文本的行数监听光标所在位置
3.2、记事本结构设计
1.程序设计E—R图
整体框架图
菜单栏结构图
文件结构图
编辑、帮助、查看、格式结构图
2.程序设计过程中结构图:
整体结构图快捷菜单结构图
主要功能设计框架图字体框架设计图
其余部分控件的实现主要功能实现图
四、运行调试与分析讨论:
4.1对文档编辑区进行测试
a)打开文档时,文本没有修改可以直接关闭,没有提示,如果对文本进行了操作就会有提示,保存或者直接跳过不保存,或者直接撤销对关闭事件的处理。
b)字体的显示,开始的时候不做任何操作的时候显示的默认值,通过修改字体的属性来修改字体。
c)对文本事件进行监听,如果文本编辑窗口中如果有事件触发,关闭时能够有必要的信息提示。
d)状态栏的可以正常显示文本的状态信息(文本的位置、时间、文本的鼠标位置)
4.2打开与另存为测试
打开与另存为运行截图:
另存为截图打开截图
运行与测试基本功能:
a)打开文件不是txt类文档的时候显示的是乱码,能够正常的打开文本文档。
b)另存为文档时,当文档为txt文档时能正常的用系统自带的记事本打开,当保存为doc文档时,利用word打开时部分正常的显示文本(对文本的解码了解较少)。
c)默认打开和另存为的地址为“我的文档”。
4.3新建、粘贴、剪切、复制等功能的测试
初始运行时的功能实现新建功能的实现
粘贴前粘贴后
粘贴和复制剪切等功能都能正常的实现,上图为复制功能的实现过程,复制利用剪切板中的信息内容,不在同一个文本中的信息,直接可以把剪切板中的信息复制到文本中。
菜单栏的功能与快捷菜单栏的功能一样。
但是撤销功能稍微复杂一点,必须有必要的监听事件,还要利用剪切板的内容。
状态栏的显示状况:
修改前的状态栏
修改之后状态栏
光标所在的位置发生了变化,实现了功能。
跳转功能的实现:
跳转的行有最大值的限制,当超出最大值时软件提示出现错误。
4.4查找和替换功能的测试
查找和替换功能的实现过程:
当查找内容没有输入内容,进行查找时有必要的信息提示,当查找的内容不能找到时,有提示信息,查找的内容替换时计数被替换的数目。
替换可以一个个的替换,也可以全部一次性的替换,查找功能和替换的功能集成在一起,可以向上和向下不同方式的查询,也可以按照字符的大小写查询。
不论是查询失败还是查询成功都有必要的信息提示。
特殊情况的处理:
查找内容时不输入内容的时候的提示和找不到输入的内容时的必要提示信息。
4.5字体的类型大小等功能的测试
字体修改功能的实现,第一个图是系统默认值的显示效果,第二个是系统字体修改之后的效果。
字体的颜色修改,调用系统内部的颜色面板,通过三种不同的方式来修改颜色,监听鼠标事件,根据选中的内容来修改字体的颜色。
字体的大小可以根据自己设定的字体情况来修改,字体的大小可以直接调用系统内部的,此次没有利用系统字体大小,随便设置了几个大小选项。
总之,字体选项的三种功能可以完美实现。
4.6自动换行功能的测试
自动换行实现取消自动换行
测试结果:
自动换行能够正常的实现
五、设计体会与小结:
通过不到一周的实训,虽然实训的时间不长,但是总体上收获是很大的,我们的java课程学到的只是java和皮毛,一开始我还没有信心完成。
后来看到书到有一个关于记事本的小例子,我仔细看了之后。
对计事本有了一个大体的了解,在初训的实候知道自己应该做一个什么样的计事本了,在实训的过程中也遇到了不少困难,通过查API文档、上网搜索资料和看书,解决了问题,在写到字符的查找的替换时后,用到了上课时学到的知识,是通过查API文档获得的,现在我所写的计事本只实现在一些基本功能。
简单的复制粘贴,字体风格的设置,还有就是查找和替换功能以及一些字体风格的保存.对文件的操作基本都用到了。
在实现记事本的功能过程中,也不是很顺利,基本的文件读写和保存文档的复制、粘贴、删除等功能还比较容易实现,但如何改变字体、字体颜色和背景颜色,就比较麻烦了,要实现字体颜色和背景颜色,首先要调用系统的调色板,再进行设置。
但如何调用系统调色板?
我是通过查阅帮助文档来找到其调用方法的。
像自动换行、设置字体等都是通过方法来调用,给相关事件加上监听,在进行响应事件。
整个程序中方法才是最关键的,也是最困难的。
所以像查找、替换、转到几个功能我都不知道用什么方法,也由于时间有限,没有完成其功能。
总体的感觉是对java有了一个全新的认识,现在感觉用java做小的图形用户程序有些缺陷,但是在其的应用方面。
尤其是有网络方面的应用,在整个实训我也尝试过做一个小的画图软件。
但是由于时间关系还有一个是自身的知识的欠缺,最终这个事情被搁浅下来了。
最后还是进行计事本的编写。
由于在做画图软件时花了不了时间,所以现在的计事本的功能不是很全,如果有更多的时间,我会把这个记事体再完善一下,再把画图软件也做出来。
实训的时间不长,但是我会在课外把它们的功能完善。
然后再学习一下java和网络的编程,体验java的前沿技术。
在学习的过程中也体会到,遇到问题也要请教。
不然的话自己一个人去做的话会花很多的时间,我在做这个记事本的时间,其中也问到过许多问题,通过同学的帮助下解决了,提高了程序的开发进程。
其他的同学有问题的话我也是给他们尽量解决。
我认为学习知识的过程当中就应该是相互学习相互进步的。
Java是面在的主流技术我会努力将它学好,现在我缺乏的是坚持不懈的精神,虽然学习java的路还很找,但我会继续走下去。
六、附录:
系(部):
信息工程系
专业班级:
软件
(1)班
学生姓名:
陈学烽
学号:
1011302101012
完成日期:
2011年12月28日
主要代码清单
附录1工具栏项的所有项目:
JMenumFile,mEdit,mMode,mView,mHelp;
附录2每个工具栏下边的子菜单项
文件菜单:
JMenuItemmFile_New,mFile_Open,mFile_Save,mFile_ASave,mFile_Print,mFile_Exit;
编辑菜单:
JMenuItemmEdit_Undo,mEdit_Cut,mEdit_Copy,mEdit_Paste,mEdit_Del,mEdit_Search,mEdit_SearchNext,mEdit_Replace,mEdit_Turnto,mEdit_SelectAll,mEdit_TimeDate;
格式菜单:
JCheckBoxMenuItemformatMenu_LineWrap;
JMenuformatMenu_Color;
JMenuItemformatMenu_Font,formatMenu_Color_FgColor,formatMenu_Color_BgColor;
查看菜单:
JCheckBoxMenuItemviewMenu_Status;
帮助菜单:
JMenuItemmHelp_HelpTopics,mHelp_About;
部分程序运行截图:
部分程序代码:
mFile_New=newJMenuItem("新建(N)",'N');//定义功能项
mFile_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
mFile_New.addActionListener(this);//注册监听事件
mFile.add(mFile_New);//添加功能项
mFile.addSeparator();//添加分割线
其余类似的功能依次定义实现
//打开
if(result==JFileChooser.CANCEL_OPTION){
statusLabel1.setText("您没有选择任何文件");return;}
saveFileName=fileChooser.getSelectedFile();
if(saveFileName==null||saveFileName.getName().equals(""))
JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);else{saveFile();isNewFile=false;
currentFile=saveFileName;oldValue=Text.getText();
this.setTitle(saveFileName.getName()+"-记事本");
statusLabel1.setText(" 当前打开文件:
"+veFileName.getAbsoluteFile());}
}elseif(saveChoose==JOptionPane.NO_OPTION){Stringstr=null;
JFileCho