Java实训报告书-文本编辑器

更新时间:2024-07-07 14:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实训报告书

实训名称: Java程序设计实训

系 (部): 信息工程系 专业班级: 计算机科学与技术 学生姓名: 学 号: 指导教师: 完成日期:

实训课题 文本编辑器 实训人姓名 同组人员 实训日期 实训成绩 指导教师评语 指导教师签名:______________ _______年 ____ 月____日

课程实训报告书

……………………………目 录

目 录 ............................................................................................................................. 1 1 实训目的 ...................................................................................................................... 2

1.1 实训目的 .......................................................................................................... 2 1.2实训要求 ............................................................................................................ 2 2 文本编辑器系统的分析与设计 ..................................................................................... 2

装………………3 …………4 …………订………5 …………………………线………………………… …2.1 系统功能描述 ................................................................................................... 2

2.2 系统模块设计 ................................................................................................... 2 2.3 数据库结构设计 ............................................................................................... 3 主要代码清单 ............................................................................................................. 4

3.1生成菜单栏及菜单项 ........................................................................................... 4 3.2监听事件处理 ..................................................................................................... 5 程序运行与测试 .......................................................................................................... 6

4.1文本区功能测试 .................................................................................................. 6

4.2文件菜单功能测试 .............................................................................................. 7 4.3编辑菜单功能测试 .............................................................................................. 9 4.4工具菜单功能测试 ............................................................................................ 10 实训总结 .................................................................................................................. 13

1

课程实训报告书

文本编辑器的设计和实现

1 实训目的

1.1 实训目的

《Java程序设计实训》是计算机专业一门重要的专业技术基础实践课程。为了能够较好的完成实训任务,学生应具备软件开发技术的基础知识,实训的主要目的在于将理论与实际应用相结合,使用程序设计语言java,以及相关软件设计开发知识完成软件的设计开发任务。本实训课程将为整个专业的学习以及软件设计水平的提高打下良好的基础,提高学生项目分析、设计、编写、调试和测试的能力,并培养基本的、良好的团队合作能力。

实训中目的是要综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握软件开发技术,提高分析、解决实际问题的能力 1.2实训要求

本次实训要求在学生能够较熟练使用java程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。

2 文本编辑器系统的分析与设计

2.1 系统功能描述

通过此系统可以实现如下功能:

1)可进行文件的新建、打开、保存、编辑等基本功能。 2)支持复制、剪切和粘贴操作 3)可进行查找和替换操作

2.2 系统模块设计

根据系统自带的文档编辑器的特征设计,包括如下的功能模块: 一、 整体结构框架包括:菜单栏和文档编辑区

二、 每个框架分别包含不同的子框架,各个模块的具体框架:

2

课程实训报告书

? 菜单栏:文件、编辑、工具、帮助 ? 菜单栏中各个子菜单功能

文件:新建、打开、保存、另存为、退出 编辑:剪切、复制、粘贴 工具: 查找、替换 帮助:帮助

? 子菜单功能的实现主要的几个功能介绍

1) 打开与另存为:两个窗体调用系统函数直接利用,注意格式的选择 2) 查找:查找内容、查找、查找下一个 ? 文本编辑区

监视文本内容是否改变、监听光标所在位置

2.3 数据库结构设计

1.程序E-R图

菜单栏 文件

编辑 工具 帮助

文件 新建

打开 保存 另存为 退出 3

课程实训报告书

剪切 帮助 编辑 复制 帮助 关于 粘贴

3 主要代码清单

3.1生成菜单栏及菜单项

在窗体初始化时,自动添加菜单及其菜单项,用于在文本编辑器中对文本去内容进行操作,使用for语句循环生成菜单栏和菜单项。

public void addmyMenu() // 菜单函数,生成菜单

{

JMenuBar menubar = new JMenuBar();// 菜单栏添加若干菜单 this.setJMenuBar(menubar);

String menustr[] = { \文件\, \编辑\, \工具\, \帮助\ };//菜单栏字符串数组 JMenu menu[] = new JMenu[menustr.length];

for (int i = 0; i < menu.length; i++) {//为菜单栏赋值 }

String menuitemstr0[] = { \新建\, \打开\, \保存\, \另存为\, \退出\ };// 文JMenuItem menuitem0[] = new JMenuItem[menuitemstr0.length];

menu[i] = new JMenu(menustr[i]); menubar.add(menu[i]);

件菜单中添加若干菜单项

4

课程实训报告书

}

for (int i = 0; i < menuitem0.length; i++) {//为文件菜单赋值 }

String menuitemstr1[] = { \剪切\, \复制\, \粘贴\ };// 编辑菜单中添加若干菜JMenuItem menuitem1[] = new JMenuItem[menuitemstr1.length]; for (int i = 0; i < menuitem1.length; i++) { }

String menuitemstr2[] = { \查找\, \替换\ };// 工具菜单中添加若干菜单项 JMenuItem menuitem2[] = new JMenuItem[menuitemstr2.length]; for (int i = 0; i < menuitem2.length; i++) { }

JMenuItem menuitemstr3 = new JMenuItem(\帮助\);// 帮助菜单中添加帮助菜单项 menu[3].add(menuitemstr3);

menuitemstr3.addActionListener(this);// 注册监听事件

menuitem2[i] = new JMenuItem(menuitemstr2[i]); menu[2].add(menuitem2[i]);

menuitem2[i].addActionListener(this);// 为每个菜单项注册监听事件 menuitem1[i] = new JMenuItem(menuitemstr1[i]); menu[1].add(menuitem1[i]);

menuitem1[i].addActionListener(this);// 为每个菜单项注册监听事件 menuitem0[i] = new JMenuItem(menuitemstr0[i]); menu[0].add(menuitem0[i]);

menuitem0[i].addActionListener(this);// 为每个菜单项注册监听事件

单项

3.2监听事件处理

注册监听事件,当进行操作时,监听事件活得事件源并选择相应的操作,对不同的事件调用不同的函数,得到文本操作的不同结果。

public void actionPerformed(ActionEvent e) // 监听事件处理函数

{

if (e.getSource() instanceof JMenuItem) // 判断事件是否来自于菜单项 {

if (e.getActionCommand() == \新建\) { }

if (e.getActionCommand() == \打开\) { }

if (e.getActionCommand() == \保存\) { }

if (e.getActionCommand() == \另存为\) { }

5

saveother();// 执行另存为函数 save();// 执行保存函数 open();// 执行打开函数 FileName=\未命名1\;

text.replaceRange(\, 0, text.getText().length());

课程实训报告书

}

}

if (e.getActionCommand() == \退出\) }

if (e.getActionCommand() == \替换\) { }

if (e.getActionCommand() == \帮助\) {//帮助消息窗体 }

JOptionPane.showMessageDialog(this,

\该记事本程序属于个人所编写,由于时间仓促,难免有不足之处仅供初学JOptionPane.PLAIN_MESSAGE);

replace();// 执行替换函数 System.exit(0);// 系统退出 text.cut();// 剪切 text.copy();// 复制 text.paste();// 粘贴 find();// 执行查找函数

if (e.getActionCommand() == \剪切\) if (e.getActionCommand() == \复制\) if (e.getActionCommand() == \粘贴\) if (e.getActionCommand() == \查找\) {

者使用!\, \帮助\,

4 程序运行与测试

4.1文本区功能测试

a) 字体的显示,开始的时候不做任何操作的时候显示的默认值,通过修改字体

的属性来修改字体。

b) 对文本事件进行监听,如果文本编辑窗口中如果有事件触发,关闭时能够有

必要的信息提示。

c) 状态栏的可以正常显示文本的状态信息。

6

课程实训报告书

4.2文件菜单功能测试

文件中的功能测试:

a) 通过文件字符流读取文件,创建缓冲区存储文件流。

b) 当保存文件时,先判断文件是否未被保存过,如果未被保存过,则创建

新文件并通过输出流来存储文件,当文件已经保存过再对文件进行修改时,则会提示保存的消息窗体。

c) 另存为是通过不同的方法来创建一个新的文件。 附:

打开与保存代码:

public void open() // 打开函数

{

FileDialog open = new FileDialog(mainFrame, \打开\, FileDialog.LOAD); open.setVisible(true);

File file = new File(open.getDirectory() + open.getFile()); String path = file.getPath();//获得文件的路径

7

课程实训报告书

char Frist = path.charAt(0);//获取文件的第一个字符 if (Frist != 'n') {//判断是否为空 } }

FileName = open.getDirectory() + open.getFile();//获取文件名 char ch[] = null; try { {

JOptionPane.showMessageDialog(this, \文件没有打开!\);//显示消息提System.exit(0);

ch = new char[(int) file.length()];

BufferedReader br = new BufferedReader(new FileReader(file));//br.read(ch);//读文件 br.close();

文件度缓冲区

} catch (FileNotFoundException fe) //捕获异常

示窗口

} catch (IOException ie) //捕获异常 { }

this.setTitle(FileName);//将窗体标题赋值为文件名 String tempo = new String(ch);//将字符数组赋值给字符串 text.setText(tempo);//文本显示区显示

System.out.println(\); System.exit(0);

public void save() // 保存函数

} catch (FileNotFoundException fe_) {

System.out.println(\);

8

{

if (FileName.equals(\未命名1\))// 判断是否保存过 {

FileDialog save = new FileDialog(mainFrame, \保存\, FileDialog.SAVE); save.setVisible(true);

String temps = text.getText();// 获取文本去文字并复制给字符串temps try// 异常处理 {

File f = new File(save.getDirectory() + save.getFile());// 新建FileName = save.getDirectory() + save.getFile();// 得到文件名 BufferedWriter bw = new BufferedWriter(new FileWriter(f));// 输bw.write(temps, 0, temps.length());// 新文件写入 bw.close();

文件

入到文件中

课程实训报告书

}

}

else // 如果文件已经保存过 { }

String s = text.getText();// 得到所输入的文本内容 try// 异常处理 { }

File f = new File(FileName);// 新建文件

BufferedWriter bw = new BufferedWriter(new FileWriter(f));// 输bw.write(s, 0, s.length()); bw.close();

JOptionPane.showMessageDialog(this, \保存成功\); System.out.println(\); System.exit(0);

System.out.println(\); System.exit(0); }

System.exit(0);

System.out.println(\); System.exit(0);

} catch (IOException ie_) {

入到文件中

} catch (FileNotFoundException fe_) {

} catch (IOException ie_) {

4.3编辑菜单功能测试

复制前 粘贴后

9

课程实训报告书

剪切前 剪切后

剪切、复制、粘贴功能的实现是在注册监听事件后,对文本去的文字进行操作时,系统调用文本类本身的库函数来处理文本去的文字操作,将选中的文本读入缓冲区。然后再等待不同的操作方法的调用。 4.4工具菜单功能测试

功能描述:

查找需要先生成对应的窗体,使用相应的组件类来创建窗体,使用流布局管理器来对窗体中的各个控件进行布局,对查找和查找下一个按钮注册监听事件并编写相应的处理方法。文本去的文字使用相应的处理方法进行比较和处理,并对光标位置进行判断是否到文本末尾,使用异常处理语句捕获异常并处理。

10

课程实训报告书

功能描述:

替换也是需要先生成相应的窗体,使用相应的组件类来创建窗体,使用流布局管理器来对窗体中的各个控件进行布局,对替换和清空按钮注册监听事件并编写相应的处理方法。 附:

查找替换函数处理代码:

public void find()// 查找函数

{

find.setSize(300, 100); find.setResizable(false);

find.setLayout(new FlowLayout());//窗体流布局 Label label1 = new Label(\查找内容\); Button button1 = new Button(\查找\); Button button2 = new Button(\查找下一个\); find.add(label1); find.add(ltext1); find.add(button1); find.add(button2);

button1.addActionListener(new ActionListener() {//查找按钮事件方法

public void actionPerformed(ActionEvent e) { }

if (ltext1.getText() == \) }

;

int locate = text.getText().indexOf(ltext1.getText(), 0); text.select(locate, locate + ltext1.getText().length()); fromindex = locate + ltext1.getText().length(); else {

find.setLocation(this.getX()+50, this.getY()+50);

//注册按钮的监听事件

});

button2.addActionListener(new ActionListener() {//查找下一个按钮方法

public void actionPerformed(ActionEvent e) {

int locate = text.getText()

.indexOf(ltext1.getText(), fromindex);

if (locate == -1)

ltext1.setText(\已查找到文件末尾!\); else { }

text.select(locate, locate + ltext1.getText().length()); fromindex = locate + ltext1.getText().length();

11

课程实训报告书

} {

replace.setSize(200, 200);

replace.setLocation(this.getX()+50, this.getY()+50); replace.setResizable(false);

replace.setLayout(new FlowLayout()); Label label_1 = new Label(\查找内容\); Label label_2 = new Label(\替换为 \); Button button_1 = new Button(\替换 \); Button button_2 = new Button(\清空 \); replace.add(label_1); replace.add(ltext2); replace.add(label_2); replace.add(ltext3); replace.add(button_1); replace.add(button_2);

button_1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { }

if (ltext2.getText() == \) }

;

int locate = text.getText().indexOf(ltext2.getText(), 0); text.select(locate, locate + ltext2.getText().length()); text.replaceRange(ltext3.getText(), locate, locate

+ ltext2.getText().length());

else {

} });

find.addWindowListener(new WindowAdapter() { // 关闭对话框窗口

public void windowClosing(WindowEvent ee) { }

find.dispose();

});

find.show(); find.removeAll();

public void replace()// 替换函数

//注册按钮的监听事件

});

button_2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) { }

ltext2.setText(\); ltext3.setText(\);

12

课程实训报告书

}

});

replace.addWindowListener(new WindowAdapter() { // 关闭对话框窗口

public void windowClosing(WindowEvent ee) { }

replace.dispose();

});

replace.show(); replace.removeAll();

5 实训总结

实训的时间很短,只有短短一周的时间,但是需要完成的工作很多,一个学

期的java学习我们所学的并不是很多,本次实训我选取的是文本编辑器的设计。虽然以前在c#中做过实训,但是c#是在图形用户界面中进行窗体的设计,是对窗体和Windows控件的操作,而在java中需要用代码来实现窗体的实例化和调用。是要通过代码来实例化和创建窗体,并通过代码来调用,引入了java中的多个类来实现各个窗体和控件,并发现了自己的不足之处。

在窗体中需要加入文本编辑区来存储文本,这就需要创建文本对象并对其进行实例化,并且在编辑菜单中还需要多个方法来实现对文本的操作和处理,比如剪切和复制,用到本身的函数来操作。对于所有的菜单和菜单项以及控件所做才操作处理都需要注册其相应的监听事件来完成,而在文件菜单中,打开的操作用到了文件的输入流,保存则用到了文本的输出流。而在打开事件中所以遇到的错误在查阅了很多资料后在得以解决,并在此过程中学到了很多老师在课程中没有讲到的知识,是自己受益匪浅,在文件菜单中的保存中,需要用if语句进行相应的判断,来执行不同的代码实现,并与相应的异常处理语句相结合来完善程序,是代码哥哥具有健壮性和灵活性,减少程序运行时错误出现。

在查找和替换中,对于查找函数则需要判断许多不同的情况来进行不同,尤其是要如何实现查找和替换的功能是最关键的,需要使用什么样的方法来达到这一目的是最困难的,通过网络和同学的讨论发现很多同学也遇到了这个问题,而采用现成的代码是行不通的,必须自己在实现中进行一次次的修改,不断调整代码的运行方式来实现其功能。

由于时间仓促,还有许多其他的功能没有,并在已实现的功能中也有不足的地方,还需要进一步对其进行修改。再次过程中不断加深对java程序设计的认

13

课程实训报告书

识和理解,丰富自己的知识,了解自己的不足,加强自己的理解能力和学习能力,提高自己独立解决问题的能力。Java是一门全新的计算机语言,需要自己对其全新的理解,而java的很多功能都需要在学习中去发现和理解,应用到不同的设计中去,并结合网络这个以有利工具方便自己学习java的语言和强大的编码能力,以及在以后的设计中把程序不断完善。

14

课程实训报告书

识和理解,丰富自己的知识,了解自己的不足,加强自己的理解能力和学习能力,提高自己独立解决问题的能力。Java是一门全新的计算机语言,需要自己对其全新的理解,而java的很多功能都需要在学习中去发现和理解,应用到不同的设计中去,并结合网络这个以有利工具方便自己学习java的语言和强大的编码能力,以及在以后的设计中把程序不断完善。

14

本文来源:https://www.bwwdw.com/article/59i.html

Top