文本编辑器的设计与实现

合集下载

文本编辑器的设计与实现

文本编辑器的设计与实现

3、尚需完成的功能
• (1)、查找功能。 • (2)、字数统计以及行号的显示。 • (3)、快捷键的设置。
4、存在的问题和解决方案
• (1)、文件的格式问题 • 目前该文本编辑器只能制作和打开.html格式的 文档,同时文件保存时没有设置默认保存格式。 • 解决方案:新增部分常用文档格式,同时在保 存时设置默认文档格式,出现保存界面时自动文 件名后出现文档格式 • (2)、界面设计有所欠缺 • 由于QT学习时间尚短,界面设计尚不太熟悉, 界面布局和色彩有些单一。 • 解决方案:进一步学习和熟悉QT,逐步对操 作界面进行改进。
另存为: 另存为: bool TextEdit::fileSaveAs() { QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."), QString(), tr("HTML-Files (*.htm *.html);;All Files (*)")); if (fn.isEmpty()) return false; setCurrentFileName(fn); return fileSave(); }
格式操作
• 字体大小: 字体大小:
• • • • • • QFontDatabase db; foreach(int size, db.standardSizes()) comboSize->addItem(QString::number(size));
connect(comboSize, SIGNAL(activated(const QString &)), this, SLOT(textSize(const QString &))); comboSize->setCurrentIndex(comboSize>findText(QString::number(QApplication::font() • .pointSize()))); • } •

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。

它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。

本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。

一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面:1. 用户界面设计:一个好的文本编辑器应具备直观友好的用户界面,提供各种操作选项和快捷键,使用户能够轻松地进行文本编辑。

2. 文本处理功能:文本编辑器应具备基本的文本处理功能,如插入和删除文本、查找和替换、拷贝和粘贴等。

这些功能需要通过合适的数据结构和算法来实现。

3. 文本格式化:文本编辑器应支持对文本进行格式化操作,如自动对齐、缩进、换行等。

4. 多标签支持:多标签功能允许用户同时打开多个文本文件,并在它们之间切换。

这要求程序设计中能够有效地管理多个文本文件的打开、关闭和切换。

二、代码示例下面是几个简单的代码示例,用于展示文本编辑器的一些基本功能。

1. 创建文本文件```pythondef create_file(filename):# 创建一个新的文本文件file = open(filename, "w")file.close()```2. 打开文本文件```pythondef open_file(filename):# 打开文本文件并返回文件对象 file = open(filename, "r")return file```3. 插入文本```pythondef insert_text(file, position, text): # 在指定位置插入文本file.seek(position)content = file.read()file.seek(position)file.write(text + content)```4. 删除文本```pythondef delete_text(file, start, end):# 删除指定位置的文本file.seek(start)content = file.read()file.seek(start)file.write(content[:end - start])```5. 查找和替换文本```pythondef find_replace(file, old_text, new_text):# 在文本中查找指定内容并替换file.seek(0)content = file.read()new_content = content.replace(old_text, new_text)file.seek(0)file.write(new_content)```6. 关闭文本文件```pythondef close_file(file):# 关闭文本文件file.close()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。

文本编辑器实现原理

文本编辑器实现原理

文本编辑器实现原理
文本编辑器的实现原理可以简单概括为以下几步:
1.用户输入文本:用户在编辑器中输入文本,此时文本呈现在编辑器
的屏幕上。

2.文本存储:编译器将用户输入的文本存储在内存或外部存储设备中,以便用户在下次使用编辑器时可以继续编辑。

3.文本修改:当用户对文本进行修改时,编辑器会检测用户的操作
(比如插入、删除、修改等)并相应地更新文本的内容。

4.光标控制:编辑器需要追踪光标的位置并控制其移动,以便用户可
以编辑文本的任何部分。

5.用户界面:用户界面需要显示编辑器的各种工具和选项,比如字体、颜色、格式等。

6.保存和打开:编辑器需要提供保存和打开文本的功能,以便用户可
以在其他时间或设备上打开和编辑他们的文本。

总的来说,文本编辑器实现的原理就是通过对用户输入的文本进行存储、修改和展示等一系列操作,为用户提供方便快捷的文本编辑功能。

文本编辑器的设计与实现

文本编辑器的设计与实现

研究现状
现有的文本编辑器如Notepad、Sublime Text、Atom等各 有优缺点,但都存在一些共性问题,如性能瓶颈、功能单一 、用户体验不够友好等。因此,研究如何设计和实现一个更 好的文本编辑器具有重要意义。
目前,文本编辑器的研究主要集中在算法优化、用户体验设 计、扩展性等方面。例如,利用机器学习算法优化文本编辑 器的自动补全和语法高亮功能;通过用户调研和可用性测试 等方法提升用户体验;设计可扩展的插件系统等。
04
安全性问题将是未来文本编辑器设计的重要考虑因素,保障用户数据 的安全和隐私将成为关键。
THANKS
感谢观看
检查文本编辑器的各项功能是否正常工作,如打开文件、保存文 件、剪切、复制、粘贴等。
兼容性测试
确保文本编辑器在不同的操作系统、不同版本的软件上都能正常运 行,不会出现兼容性问题。
错误处理测试
测试文本编辑器在遇到异常情况时的处理能力,如文件损坏、内存 不足等。
性能测试
响应时间测试
测量文本编辑器在执行 各种操作时的响应时间, 确保响应时间在可接受 的范围内。
内存占用测试
检查文本编辑器在运行 过程中占用的内存大小, 确保不会造成系统资源 过度消耗。
文件处理能力测试
测试文本编辑器在处理 大文件时的性能表现, 如打开、保存、编辑等 操作的速度。
用户反馈与评估
01
用户调研
通过问卷调查、访谈等方式收集用户对文本编辑器的使用体验和意见。
02
数据分析
对收集到的用户反馈进行数据分析和挖掘,找出用户最关心的问题和改
04
实现过程
技术选型
编程语言选择
选择一种高效且易于维护的编程语言,如 Python、Java或C。

C语言实现文本编辑器

C语言实现文本编辑器

C语言实现文本编辑器本文将介绍使用C语言实现一个简单的文本编辑器的基本原理和实现步骤。

通过此编辑器,用户可以打开、编辑、保存和关闭文本文件,并且具备基本的文本编辑功能,如插入、删除、查找和替换文本等。

一、编辑器界面设计为了实现一个简单易用的文本编辑器,我们可以设计一个基于命令行界面的编辑器。

用户可以通过文本命令来操作编辑器,从而实现基本的编辑功能。

二、文件的打开和保存在C语言中,我们可以使用标准文件操作函数来实现文件的打开和保存。

用户可以通过指定文件路径来打开或保存文件。

打开文件时,程序会读取文件内容,并将其显示在编辑器界面中;保存文件时,程序会将编辑器内的文本内容写入目标文件中。

三、基本文本编辑功能1. 插入文本用户可以使用插入命令将文本内容插入到当前光标位置之前或之后。

程序会根据插入位置的不同,调整光标的位置,并显示插入后的文本内容。

2. 删除文本用户可以使用删除命令删除当前光标位置处的文本内容。

程序会删除光标所在位置的字符,并相应地调整文本的显示和光标的位置。

3. 搜索文本用户可以使用搜索命令来查找特定的文本内容。

程序会从当前光标位置开始搜索,并根据搜索结果将光标移动到匹配文本的位置。

4. 替换文本用户可以使用替换命令将指定的文本内容替换为新的内容。

程序会搜索文本中的所有匹配项,并将其替换为新的内容。

四、其他功能扩展除了基本的文本编辑功能外,我们还可以对编辑器进行功能扩展,以提升用户体验和编辑效率。

一些可能的扩展功能包括:1. 撤销和重做功能:允许用户撤销和重做操作,以便回退或恢复文本编辑的历史记录。

2. 多窗口编辑:支持同时打开和编辑多个文本文件的功能,提供多窗口切换和管理。

3. 自动保存与恢复:定时自动保存编辑的文本内容,并在下次启动时自动恢复上次编辑的状态。

4. 语法高亮:根据文本类型,对关键字、注释、字符串等进行特殊标记显示,提升代码可读性。

五、总结通过使用C语言,我们可以实现一个简单但功能完善的文本编辑器。

课程设计文本编辑器的设计(1)

课程设计文本编辑器的设计(1)

《高级语言程序设计》课程设计报告题目: 文本编辑器的设计 专业: 计算机科学与技术 班级: 14计科一班**: ** 指导教师: **成绩:计算机学院 2015年4月24日2014-2015学年 第2学期目录1 设计内容及要求................................... 错误!未定义书签。

1.1设计内容..................................... 错误!未定义书签。

1.2具体要求 (2)2 概要设计 (2)2.1系统的功能简介 (2)2.2系统功能模块图............................... 错误!未定义书签。

2.3各个模块之间的主要关系 (3)3 详细设计 (4)3.1文件操作 (4)3.2编辑操作 (9)3.3工具操作 (17)4 程序运行结果与调试 (19)4.1 在调试过程中出现的一些问题 (19)4.2 实验结果 (20)5 课程设计总结与感想 (24)参考文献 (24)源代码 (25)1 设计内容及要求1.1设计内容该文本编辑器运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。

其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。

程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。

程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。

最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问链接百度,访问114网页大全,为用户提供查找资料等功能服务。

1.2具体要求基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。

实现一个简单的文本编辑器

实现一个简单的文本编辑器

实现一个简单的文本编辑器随着数字时代的来临,我们的生活方式也越来越数字化。

越来越多的人开始将工作和娱乐转移到电脑上,而文本编辑器成为了他们生产力的关键之一。

虽然市场上已经有很多成熟的文本编辑器,但如果你想自己动手实现一个简单的文本编辑器,这也是很有意义的。

第一步,了解文本编辑器的基本功能。

文本编辑器主要用于文本的编写、修改、保存等。

编辑器的基本功能包括文件打开和新建、文本写入和修改、保存和另存为以及撤销、恢复等。

第二步,选择编程语言和工具。

要实现一个文本编辑器,需要选择合适的编程语言。

如果你想实现一个基于图形用户界面的编辑器,可以选择Java、C#等高级语言;如果想实现一个控制台下的编辑器,可以选择C/C++等语言。

在选择编程语言的同时,也需要选择合适的编程工具,如Eclipse、NetBeans、Visual Studio等。

第三步,实现编辑器的基本功能。

实现文本编辑器的基本功能可以让我们更好地理解编程的思路和技巧。

在实现编辑器时,首先需要实现文件打开和新建功能,可以使用系统的文件选择框或编写自己的文件选择框;其次,需要实现文本写入和修改功能,可以使用文本框或命令行等方式读入、显示和编辑文本;还需要实现保存和另存为功能,可以使用文件输入输出流将文本内容保存到磁盘上;最后,可以实现撤销、恢复等功能,使编辑器更加完善。

第四步,优化编辑器的性能和功能。

在基本功能实现后,可以通过增加功能模块和优化代码来优化编辑器的性能和功能。

例如,可以增加搜索和替换功能、增加编码和格式化功能、增加批量修改功能等。

优化代码方面,可以使用流式输入输出、多线程技术等提高程序的效率。

第五步,界面美化和交互优化。

漂亮的界面和良好的交互体验是吸引用户的重要组成部分。

在实现功能的基础上,可以通过灵活运用布局和颜色、使用快捷键等方式优化编辑器的界面美观和交互性。

例如,可以增加菜单栏、工具栏和状态栏,使用不同颜色来标识代码和注释等。

总之,实现一个文本编辑器需要付出很多的努力和时间。

课程设计文本编辑器的设计

课程设计文本编辑器的设计

《高级语言程序设计》课程设计报告题目: 文本编辑器的设计 专业: 计算机科学与技术 班级: 14计科一班姓名: 彭鑫 指导教师: 王峻成绩:计算机学院 2015年4月24日2014-2015学年 第2学期目录1 设计容及要求.................................................................................... 错误!未定义书签。

1.1设计容.......................................................................................... 错误!未定义书签。

1.2具体要求 (2)2 概要设计 (2)2.1系统的功能简介 (3)2.2系统功能模块图........................................................................ 错误!未定义书签。

2.3各个模块之间的主要关系 (3)3 详细设计 (4)3.1文件操作 (4)3.2编辑操作 (9)3.3工具操作 (17)4 程序运行结果与调试 (19)4.1 在调试过程中出现的一些问题 (19)4.2 实验结果 (20)5 课程设计总结与感想 (24)参考文献 (24)源代码 (25)1 设计容及要求1.1设计容该文本编辑器运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件容。

其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。

程序的文件项可以对电脑上txt,c++等格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。

程序的工具项为背景音乐,为用户提供了优美动听的音乐,仅在用户编辑疲惫乏力的时候尽情的享用。

最后在程序的帮助项有对该小型文本编辑器的关于,用来介绍该程序,还有访问百度,访问114网页大全,为用户提供查找资料等功能服务。

汇编语言实现文本编辑器

汇编语言实现文本编辑器

汇编语言实现文本编辑器
1.插入文本:用户可以在光标位置插入文本或者在指定位置插入文本。

通过汇编语言的内存操作指令,我们可以将后续的文本向后移动,腾出空
间来插入新的文本。

2.删除文本:用户可以删除光标位置或者指定位置的文本。

通过汇编
语言的内存操作指令,我们可以将后续的文本向前移动,填补被删除文本
的空白。

3.替换文本:用户可以替换当前光标位置或者指定位置的文本。

通过
汇编语言的内存操作指令,将待替换的文本覆盖到目标位置上即可。

4.查找文本:用户可以输入关键字,查找文本中包含该关键字的所有
位置。

通过汇编语言的循环和比较指令,我们可以逐个字符地遍历文本,
进行关键字的匹配。

除了上述基本功能外,我们还可以添加其他高级功能:
1.定位行:用户可以根据行号直接跳转到指定行。

通过计算行号与内
存地址的偏移,可以在汇编语言中实现该功能。

2.撤销和重做:用户可以撤销或者重做上一次的操作。

通过记录每次
操作的历史,可以在撤销和重做的时候重新应用或者回滚操作。

3.自动缩进:对于一些编程语言,我们可以根据语法规则自动缩进代码。

通过解析文本中的关键字和符号,可以实现自动缩进功能。

文本编辑器课程设计

文本编辑器课程设计

文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。

2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。

3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。

技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。

2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。

3. 学生通过实践操作,培养解决问题的能力和团队协作能力。

情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。

2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。

3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。

课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。

学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。

教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。

通过具体的学习成果分解,为后续教学设计和评估提供依据。

二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。

教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。

教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。

教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。

教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。

教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。

教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。

程序设计_文本编辑器的设计与实现.

程序设计_文本编辑器的设计与实现.

程序设计_文本编辑器的设计与实现.程序设计报告(2014/2015学年第一学期)题目:文档编辑器的设计与实现专业组长学号姓名组员学号姓名指导教师指导单位日期成员分工组长()对文件操作功能(查找,删除,插入)的代码编写,报告中概要设计与代码调试问题部分的撰写组员()统计功能代码的编写,翻阅书籍查找资料,报告中课程设计总结及需求分析部分的撰写组员()可操作的主菜单及主函数部分代码的编写,报告整体的撰写及测试数据及其结果分析,制图等评分细则评分项优秀良好及格差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简单评语教师签名年月日评分等级备注评分等级分为五种:优秀,良好,中等,及格,不及格文档编辑器的设计与实现一课题内容与要求文档编辑器系统是对一个文本内容进行各种常规操作,例如:插入、删除、查找、替换等功能。

通过此课题,熟练掌握文本文件的操作及用字符数组来实现字符串操作的功能。

基本要求:(1)首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。

(2)统计功能:可方便地统计出文档中所有出现次数最多和最少的字符串。

(3)查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。

(4)显示功能:编辑完成后可以显示编辑后的文档。

(5)抽取功能:根据要求将文件中的某一类字符抽取,并存入另外的文件,如抽取所有的数字、抽取所有的字母等。

二需求分析图一:文档编辑器系统的功能框架图编辑退出统计主菜单输入继续上次输入重输入大写字母个数小写字母个数数字的个数标点符号个数空格的个所有字数查找字符串删除字符串插入字符串显示当前内容(1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。

根据输入的选项来运行不同的功能,运行不同的函数。

c设计文本编辑器课程设计

c设计文本编辑器课程设计

c 设计文本编辑器课程设计一、教学目标本课程的设计文本编辑器课程旨在让学生掌握文本编辑器的基本概念、原理和应用,培养学生具备文本编辑器的使用和开发能力。

具体的教学目标如下:1.知识目标:(1)了解文本编辑器的发展历程和基本原理。

(2)掌握文本编辑器的主要功能和特点。

(3)了解文本编辑器的应用领域和前景。

2.技能目标:(1)能够熟练使用常见的文本编辑器。

(2)能够根据实际需求,编写简单的文本编辑器程序。

(3)能够对文本编辑器进行基本的维护和优化。

3.情感态度价值观目标:(1)培养学生对文本编辑器的兴趣,提高学生主动学习的积极性。

(2)培养学生团队协作的精神,提高学生的沟通与协作能力。

(3)培养学生勇于创新、追求卓越的品质,提高学生的自主创新能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑器概述:介绍文本编辑器的发展历程、基本原理和主要功能。

2.文本编辑器的使用:讲解如何熟练使用常见的文本编辑器,包括基本操作和高级功能。

3.文本编辑器程序设计:介绍文本编辑器的程序设计方法,包括界面设计、字符处理、文件操作等。

4.文本编辑器的维护与优化:讲解如何对文本编辑器进行维护和优化,以提高性能和稳定性。

5.文本编辑器的应用案例:介绍文本编辑器在实际应用中的案例,激发学生的学习兴趣和应用能力。

三、教学方法为了提高教学效果,本课程将采用以下教学方法:1.讲授法:通过讲解文本编辑器的基本概念、原理和应用,使学生掌握相关知识。

2.案例分析法:分析文本编辑器的实际应用案例,使学生更好地理解文本编辑器的功能和作用。

3.实验法:让学生动手编写文本编辑器程序,提高学生的实际操作能力和实践能力。

4.讨论法:学生进行小组讨论,培养学生的团队协作能力和沟通与表达能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用一本与文本编辑器相关的教材,作为学生学习的主要参考资料。

2.参考书:提供一些与文本编辑器相关的参考书籍,供学生拓展阅读。

实现一个简单的文本编辑器

实现一个简单的文本编辑器

实现一个简单的文本编辑器一个文本编辑器是一款用于编辑文本文件的应用程序。

它提供了基本的文本编辑功能,例如输入、删除、复制、粘贴和保存文本。

一个简单的文本编辑器可以有以下基本特性:1.文本输入和删除功能:用户可以通过键盘输入文本内容,并且可以通过删除键或退格键删除文本。

2.复制和粘贴功能:用户可以选择文本块,并将其复制到剪贴板中。

然后,可以将剪贴板中的文本粘贴到编辑器中的任何位置。

3.文本格式化:用户可以对文本进行格式化,例如设置字体颜色、字体大小、字体样式(例如加粗、斜体等)等。

4.搜索和替换功能:用户可以搜索编辑器中的文本,找到并替换指定的文本。

5.保存和打开文本文件:用户可以将编辑器中的文本保存成一个文本文件,并且可以打开一个已经存在的文本文件进行编辑。

6.撤销和重做功能:用户可以撤销之前的操作,并重做已经撤销的操作。

7.拼写检查和自动纠错功能:编辑器可以检查用户输入的文本中的拼写错误,并根据语言规则自动纠正错误。

8.自动保存:编辑器可以在一定时间间隔内自动保存用户的文件,以防止意外的程序崩溃或电源故障导致数据丢失。

9.多窗口和标签:用户可以同时打开多个编辑器窗口,并在每个窗口中进行不同的编辑。

10.快捷键:编辑器可以提供一些常用功能的快捷键,以方便用户的操作。

11.缩进和对齐:编辑器可以提供自动缩进和对齐功能,以使文本整齐明了。

12.行号和标记:编辑器可以显示行号,并允许用户通过添加标记(例如断点)来快速导航到特定行。

13.支持多种编程语言:编辑器可以针对不同的编程语言提供特定的功能,例如语法高亮、代码折叠等。

当然,上述的特性只是一个简单文本编辑器的基本要求,实际上,现代化的文本编辑器具有更多更强大的功能和特性。

项目一文本编辑器设计与实现

项目一文本编辑器设计与实现

课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注项目一:文本编辑器的设计与实现【项目背景】文本编辑器有两类:单文档和多文档文本编辑器。

单文档文本编辑器一次只能打开一个文件,如果要打开另一个文件,必须关闭当前打开的文件,微软的写字板程序就是单文档字处理程序。

多文档文本编辑器允许同时打开多个文件,每个文件占用一个子窗口,微软的Word程序就是多文档字处理程序。

本项目主要介绍建立单文档文本编辑器的方法,通过分析现有文本编辑器的功能与操作过程,利用C#开发一个新的文本编辑器。

【主要内容与技能要求】(1)会进行复杂窗口设计(2)会对常见的文本编辑功能进行分析与编码实现(3)会设计多文档窗口一、预备知识本项目主要利用RichTextBox控件来构成文本编辑区域。

1、RichTextBox控件的主要属性属性SelectedText、SelectionLength、SelectionStart:属性SelectionFont:属性SelectionColor:属性Lines:属性Modified:事件SelectionChange:事件TextChanged:2、RichTextBox控件的主要方法方法Clear():方法Copy()、Cut()、Paste():方法SelectAll():方法Find():方法SaveFile()和LoadFile():课程: C# Windows程序设计学年第_ _学期第周月日教学内容备注方法Undo():方法Redo():二、功能设计与实现1、剪贴板功能放RichTextBox控件到窗体。

属性Name=richTextBox1,Dock=Fill,Text=""。

private void menuItemEditCut_Click(object sender,EventArgs e){ richTextBox1.Cut(); } //剪切private void menuItemEditCopy_Click(object sender,EventArgs e){ richTextBox1.Copy(); } //拷贝private void menuItemEditPaste_Click(object sender,EventArgs e){ richTextBox1.Paste(); } //粘贴private void menuItemEditUndo_Click(object sender,EventArgs e){ richTextBox1.Undo(); } //撤销private void menuItemEditRedo_Click(object sender,EventArgs e){ richTextBox1.Redo(); } //恢复2、存取文件功能文本编辑器都应具有文件存取功能,菜单顶级菜单项“文件”的弹出菜单中一般包括如下菜单项:新建、打开、关闭、保存和另存为等。

简易文本编辑器的设计与实现

简易文本编辑器的设计与实现

简单文本编辑器的设计与实现1. 需求说明用汇编语言设计一个文本编辑器,可以在出现的界面中输入任意文本内容,利用DEL键、BACKSPACE键、HOME键、END键、上下左右光标键对文本进行全屏幕编辑。

按F1键激活菜单File,下移光标,选择New、Open、Save、Exit子菜单项实现文件的新建、打开、保存和退出功能。

按F10激活帮助,按Esc键退出帮助。

2. 设计说明2.1简要分析这个文本编辑器的设计采用了多个模块,有窗口模块、按键模块、光标模块、功能键模块等,而功能键模块中又是调用了按键模块。

为实现文本编辑,通过调用不同的模块达到预期的目的。

2.2概要设计3. 详细的算法描述3.1窗口模块WIN MACRO OPR1,OPR2,OPR3,OPR4,OPR5,OPR6 ;建立窗口 MOV AH,06HMOV AL,OPR1MOV BH,OPR2MOV CH,OPR3MOV CL,OPR4MOV DH,OPR5MOV DL,OPR6INT 10HENDM3.2光标模块POS_CURSE MACRO OP1,OP2,OP3 ;置光标位置MOV AH,02HMOV BH,OP1MOV DH,OP2MOV DL,OP3INT 10HENDMPOS_GET MACRO ;读光标位置MOV AH,03HMOV BH,0INT 10HENDM3.3部分按键模块HOME: ;Home键的功能POS_GETMOV ROW,DHMOV LINE,0JMP FIRST_END: ;End键的功能POS_GETMOV ROW,DHMOV LINE,79JMP FIRSTBAK_SP: ;退格键的功能POS_GETMOV ROW,DHMOV LINE,DLCMP LINE,0JE STOPDEC LINE3.4变量定义DATA SEGMENT ;定义数据段MENU DB ' File Help $'MANU_1 DB ' New ',13,10,'$'MANU_2 DB ' Open ',13,10,'$'MANU_3 DB ' Save ',13,10,'$'MANU_5 DB ' Exit ','$'HANDLE DW ?MESSAGE1 DB ' Please input new file name:','$'MESSAGE2 DB ' Please input save file name:','$'MESSAGE3 DB ' Please input open file name:','$'MESSAGE4 DB ' Save Or Not? (Y/N): ','$'PATH DB 50 DUP(0),'$'BUFFER DB 2000 DUP(?)BAK DB 3850 DUP(0)LINE DB ?ROW DB ?CHAR DB ?HELP_MAS5 DB 'Press F1 to active File. $' ;帮助内容HELP_MAS6 DB 'You can use Downcursor key to choose the fuction. $' HELP_MAS7 DB 'Press F10 to show the help massage.Press Esc To Quit. $'HANGLIE DB '???//???','$' ;行//列DATA ENDS3.5主函数MAIN PROC FAR ;主程序ASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXCALL WIND CALL EDITRETMAIN ENDP4. 源程序和执行结果4.1源程序RED_CHR MACRO ;从键盘读字符MOV AH,00HINT 16HENDMSTRING MACRO P1 ;显示字符串MOV AH,09HLEA DX,P1INT 21HENDMWIN MACRO OPR1,OPR2,OPR3,OPR4,OPR5,OPR6 ;建立窗口 MOV AH,06HMOV AL,OPR1MOV BH,OPR2MOV CH,OPR3MOV CL,OPR4MOV DH,OPR5MOV DL,OPR6INT 10HENDMPOS_CURSE MACRO OP1,OP2,OP3 ;置光标位置MOV AH,02HMOV BH,OP1MOV DH,OP2MOV DL,OP3INT 10HENDMPOS_GET MACRO ;读光标位置MOV AH,03HMOV BH,0INT 10HENDMDATA SEGMENT ;定义数据段MENU DB ' File Help $'MANU_1 DB ' New ',13,10,'$'MANU_2 DB ' Open ',13,10,'$'MANU_3 DB ' Save ',13,10,'$'MANU_5 DB ' Exit ','$'HANDLE DW ?MESSAGE1 DB ' Please input new file name:','$'MESSAGE2 DB ' Please input save file name:','$'MESSAGE3 DB ' Please input open file name:','$'MESSAGE4 DB ' Save Or Not? (Y/N): ','$'PATH DB 50 DUP(0),'$'BUFFER DB 2000 DUP(?)BAK DB 3850 DUP(0)LINE DB ?ROW DB ?CHAR DB ?HELP_MAS5 DB 'Press F1 to active File. $' ;帮助内容HELP_MAS6 DB 'You can use Downcursor key to choose the fuction. $' HELP_MAS7 DB 'Press F10 to show the help massage.Press Esc To Quit. $'HANGLIE DB '???//???','$' ;行//列DATA ENDSCODE SEGMENTMAIN PROC FAR ;主程序ASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXCALL WIND CALL EDITRETMAIN ENDPWIND PROC NEAR ;创建窗口子程序WIN 0,3EH,1,0,24,79 ;定义窗口背景WIN 1,1FH,0,0,0,79WIN 0,1FH,24,0,24,79SHOW: ;显示菜单位置及内容POS_CURSE 0,0,1MOV AH,09HLEA DX,MENUINT 21HPOS_CURSE 0,1,0MOV ROW,DHMOV LINE,DLWIND ENDPEDIT PROC NEARCHAR_GET: ;读字符CALL COMCOM PROC NEAR ;定义功能鍵POS_GETMOV ROW,DHMOV LINE,DLFIRST:POS_CURSE 0,ROW,LINEJ00: MOV AH,0INT 16H ;从键盘读字符 ah=扫描码 al=字符码 PUSH AXLEA DX,BUFFERMOV BUFFER[BX],ALINC BXCMP AH,48H ;上JZ UP_1CMP AH,50H ;下JZ DOWN_1CMP AH,4BH ;左JZ LEFTCMP AH,4DH ;右JZ RIGHTCMP AH,1CH ;回车JZ ENTER_1CALL FUC_KEYMOV AH,2MOV DL,ALINT 21HPOP AXCALL MENU_SHOWJMP J6DOWN_1:JMP DOWNENTER_1:JMP ENTER_2UP_1: JMP UPLEFT: ;光标左移POS_GETMOV ROW,DHMOV DL,LINECMP LINE,0JNZ DIRECTMOV LINE,79DEC ROWCMP ROW,0JE STOP2JMP FIRSTSTOP2:MOV ROW,1JMP FIRSTDIRECT:DEC LINEJMP FIRSTRIGHT: ;光标右移 POS_GETMOV ROW,DHMOV DL,LINECMP LINE,79JNZ DIRECT2MOV LINE,0INC ROWCMP ROW,24JE RETURNS1JMP FIRSTDIRECT2:INC LINEJMP FIRSTENTER_2:JMP ENTERUP: ;上移光标POS_GETMOV ROW,DHMOV DL,LINEDEC ROWCMP ROW,0JE STOP1JMP FIRSTSTOP1:MOV ROW,1JMP FIRSTDOWN: ;下移光标 POS_GETMOV ROW,DHMOV DL,LINEINC ROWCMP ROW,24JE STOP3JMP FIRSTSTOP3:MOV ROW,23JMP FIRSTRETURNS1:JMP RETURNSENTER: ;回车换行POS_GETMOV ROW,DHMOV LINE,DLINC ROWCMP ROW,24JE RETURNSMOV LINE,0JMP FIRSTRETURNS:MOV ROW,24MOV LINE,0JMP FIRSTJ6:RETCOM ENDPFUC_KEY PROC NEAR ;功能键子程序 NEXT:CMP AH,47H ;Home键JZ HOMECMP AH,4FH ;End键JZ _ENDCMP AH,0EH ;Backspace键JZ BAK_SPCMP AH,53HJZ DELCMP AH,44H ;F10键JZ HELP_0RETHELP_0: CALL HELPHOME: ;Home键的功能 POS_GETMOV ROW,DHMOV LINE,0JMP FIRST_END: ;End键的功能POS_GETMOV ROW,DHMOV LINE,79JMP FIRSTBAK_SP: ;退格键的功能 POS_GETMOV ROW,DHMOV LINE,DLCMP LINE,0JE STOPDEC LINEJMP ABSTOP:MOV LINE,0AB:POS_GET 0,ROW,LINEMOV AH,2MOV DL,00INT 21HJMP FIRSTDEL: ;Del键POS_GETMOV ROW,DHMOV LINE,DLDEC LINEPOS_GET 0,ROW,LINEMOV AH,2MOV DL,00INT 21HINC LINEJMP FIRSTCM:CMP LINE,00JZ POS_CMPOS_CM:POS_CURSE 0,0,0JMP FIRSTHELP PROC NEAR ;显示帮助信息CALL SAVEDISPLAY ;显示帮助信息每行的位置 POS_GETPUSH DXWIN 0,57H,4,5,21,70POS_CURSE 0,6,25STRING HELP_MAS5POS_CURSE 0,8,11STRING HELP_MAS6POS_CURSE 0,10,11STRING HELP_MAS7POP DXPOS_CURSE 0,DH,DLMOV AH,0INT 16HCMP AH,36H ;F10 active helpJNZ CLSCALL HELPCLS:WIN 0,1EH,9,10,13,70 ;清屏CALL BACKDISPLAYHELP ENDPFUC_KEY ENDPMENU_SHOW PROC NEAR ;显示菜单CALL SAVEDISPLAYPUSH CXCMP AH,3BH ;F1功能JZ MENU_SHJMP CHAR_GETMENU_SH: ;定义菜单的背景字体颜色 POS_GETPUSH DXWIN 0,06H,2,1,7,11WIN 0,65H,1,0,6,10POS_CURSE 0,1,0STRING MANU_1STRING MANU_2STRING MANU_3STRING MANU_5POP DXDEC DLPOS_CURSE 0,DH,DLCOPMAR:RED_CHRCMP AH,50HJZ MANU_NJMP MANU_HIDMANU_HID: ;菜单隐藏WIN 0,1EH,1,1,7,11CALL BACKDISPLAYJMP CHAR_GETMANU_N: ;开始定义各个菜单项WIN 0,65H,5,1,5,8POS_CURSE 0,5,0STRING MANU_5WIN 0,15H,1,1,1,8POS_CURSE 0,1,0STRING MANU_1RED_CHRCMP AH,48HJE MANU_NCMP AL,0DHJZ NEW_1CMP AH,50HJE MANU_OJMP MANU_HID MANU_N0:JMP MANU_NMANU_O:WIN 0,65H,1,1,1,8 POS_CURSE 0,1,0 STRING MANU_1 WIN 0,15H,2,1,2,8 POS_CURSE 0,2,0 STRING MANU_2 RED_CHRCMP AH,48HJE MANU_OCMP AL,0DHJZ OPEN_1CMP AH,50HJE MANU_SJMP MANU_HID NEW_1: JMP NEW_2 MANU_S:WIN 0,65H,2,1,2,8 POS_CURSE 0,2,0 STRING MANU_2 WIN 0,15H,3,1,3,8 POS_CURSE 0,3,0 STRING MANU_3 RED_CHRCMP AL,0DHJZ SAVE_1CMP AH,48HJE MANU_SCMP AH,50HJE MANU_AJMP MANU_HID OPEN_1: JMP OPEN_2MANU_N1:JMP MANU_NMANU_A:WIN 0,65H,3,1,3,8POS_CURSE 0,3,0STRING MANU_3RED_CHRCMP AH,48HJE MANU_ACMP AH,50HJE MANU_EJMP MANU_HIDMANU_N2:JMP MANU_N1NEW_2: JMP NEWSAVE_1: CALL SAVEMANU_E:WIN 0,15H,5,1,5,8POS_CURSE 0,5,0STRING MANU_5RED_CHRCMP AH,50HJE MANU_N2CMP AH,1CHJE EXITJMP MANU_HIDEXIT:CALL BACKDISPLAY WIN 0,07H,15,10,17,61 WIN 0,24H,14,9,16,60 MOV DH,15MOV DL,9MOV BH,0MOV AH,2INT 10HLEA DX,MESSAGE4 MOV AH,9MOV AH,1INT 21HCMP AL,79HJNZ QCALL QUITTQ: CMP AL,6EHJZ QUITQUIT: WIN 0,07H,0,0,24,79POS_CURSE 0,0,0MOV AH,4CHINT 21HRETMENU_SHOW ENDPNEW PROC NEAR ;新建文件 POS_GETPUSH DXCALL BACKDISPLAYWIN 0,07H,15,10,17,61WIN 0,24H,14,9,16,60,MOV DH,15MOV DL,9MOV BH,0MOV AH,02HINT 10HLEA DX,MESSAGE1CMP AL,0DHMOV AH,9INT 21HMOV BX,0ALL:MOV AH,01HINT 21HCMP AL,0DHJE ALLLMOV PATH[BX],ALJMP ALLALLL:WIN 0,3EH,15,9,17,61POP DXPOS_CURSE 0,DH,DLLEA DX,PATHMOV AH,3CHMOV CX,0INT 21HMOV HANDLE,AXMOV BX,AXMOV AH,3EHINT 21HWIN 0,3EH,1,0,23,79MOV DH,1MOV DL,0MOV BH,0MOV AH,2INT 10HJMP CHAR_GETNEW ENDPOPEN_2: JMP OPENOPEN PROC NEAR ;打开文件 CALL BACKDISPLAYWIN 0,07H,15,10,17,61WIN 0,24H,14,9,16,60MOV DH,15MOV DL,9MOV BH,0MOV AH,2INT 10HLEA DX,MESSAGE3MOV AH,9INT 21HMOV BX,0CLL:MOV AH,1INT 21HCMP AL,13JE CLLLMOV PATH[BX],AL INC BXJMP CLLCLLL:WIN 0,3EH,1,0,23,79 LEA DX,PATHMOV AH,3DHMOV AL,0INT 21HMOV HANDLE,AXLEA DX,BUFFERMOV BX,HANDLEMOV CX,2000MOV AH,3FHINT 21HWIN 0,3EH,1,23,1,79 MOV DH,1MOV DL,0MOV BH,0MOV AH,2INT 10HMOV CX,1000SUB BX,BXREPLAY:MOV DL,BUFFER[BX] INC BXMOV AH,2INT 21HLOOP REPLAYMOV BX,HANDLEMOV AH,3EHINT 21HMOV DH,1MOV DL,0MOV BH,0MOV AH,2INT 10HMOV CX,10MOV BX,0CLEAPATH_3:MOV BL,0MOV PATH[BX],BLLOOP CLEAPATH_3JMP CHAR_GETOPEN ENDPSAVE PROC NEAR ;保存文件 POS_GETPUSH DXWIN 0,3EH,1,0,6,10CALL BACKDISPLAYMOV AH,PATHCMP AH,21HJL J_3JMP J_4J_3:WIN 0,07H,15,10,17,61WIN 0,24H,14,9,16,60,MOV DH,15MOV DL,9MOV BH,0MOV AH,2INT 10HLEA DX,MESSAGE2MOV AH,9INT 21HMOV BX,0DLL:MOV AH,1INT 21HCMP AL,0DHJE DLLLMOV PATH[BX],ALINC BXJMP DLLDLLL:WIN 0,3EH,1,0,23,79POP DXPOS_CURSE 0,DH,DL J_4: LEA DX,PATHMOV AH,3CHMOV CX,0INT 21HMOV HANDLE,AXLEA DX,BUFFERMOV BX,HANDLEMOV CX,2000MOV AH,40HINT 21HMOV BX,HANDLEMOV AH,3EHINT 21HCALL BACKDISPLAY JMP CHAR_GETSAVE ENDP SAVEDISPLAY PROC NEAR PUSH AXPUSH BXPUSH CXPUSH DXPUSH DSMOV AX,0002HINT 33HMOV BX,0DMOV CX,3840DLOOP1:MOV AX,0B800HMOV DS,AXMOV DL,DS:[BX]MOV AX,DATAMOV DS,AXMOV BAK[BX],DLINC BXLOOP LOOP1MOV AX,0001HINT 33HPOP DSPOP DXPOP CXPOP BXPOP AXSAVEDISPLAY ENDPBACKDISPLAY PROC NEAR PUSH AXPUSH BXPUSH CXPUSH DXPUSH DSMOV BX,0DMOV CX,3840DLOOP11:MOV AX,DATAMOV DS,AXMOV DL,BAK[BX]MOV AX,0B800HMOV DS,AXMOV DS:[BX],DLINC BXLOOP LOOP11POP DSPOP DXPOP CXPOP BXPOP AXRETBACKDISPLAY ENDPQUITT PROC NEAR ;退出 CALL BACKDISPLAYWIN 0,07H,15,10,17,61WIN 0,24H,14,9,16,60,MOV DH,15MOV DL,9MOV BH,0MOV AH,2INT 10HLEA DX,MESSAGE2MOV AH,9INT 21HMOV BX,0QLL:MOV AH,1INT 21HCMP AL,0DHJE QLLLMOV PATH[BX],ALINC BXJMP QLLQLLL:WIN 0,07H,15,10,17,61WIN 0,3EH,14,9,16,60CALL BACKDISPLAYLEA DX,PATHMOV AH,3CHMOV CX,00INT 21HMOV HANDLE,AXLEA DX,BUFFERMOV BX,HANDLEMOV CX,2000MOV AH,40HINT 21HMOV BX,HANDLEMOV AH,3EHINT 21HCALL BACKDISPLAYWIN 0,07H,0,0,24,79MOV AH,4CHINT 21HRETQUITT ENDPEDIT ENDPCODE ENDSEND START ;结束4.2执行结果4.2.1测试方法在弹出的界面中第一行输入ABCDEFGHIJKLMN,在第二行输入abcdefghijklmn。

任务10 文本编辑器 设计

任务10 文本编辑器 设计
运行并执行当前活动子窗口的查找和替换工作,被子窗口调用; About 窗口:
一个类似欢迎窗口的作用,用于程序退出时显示一些特别效果用的,没什么大功 能; 2、数据类型: (1)主要调用的系统函数:
主窗口: OpenFileDialog openFile = new OpenFileDialog();//打开文件对话框 SaveFileDialog saveFile = new SaveFileDialog();//保存文件对话框 private MdiClient mdiClient;//当前窗体的客户区域 TreeNode tRoot = new TreeNode("我的电脑", 0, 0);//加载目录树
文件:新建、打开、保存、另存为、退出; 编辑:撤销、还原、剪切、复制、粘贴、查找/替换、全选; 格式:自动换行、字体; 查看:窗体布局; 帮助:关于程序;
快捷方式栏:新建、打开、保存、另存为、复制、剪切、粘贴、撤销、还原、居中、 左对齐、右对齐、查找;
文字编辑栏:文字样式、字体、字体大小、加粗、斜体、下划线、字体颜色; 其它:目录树、分隔栏、panel、imageList,timer 等;
FontStyle.Italic; //斜体 FontStyle.Underline; //下划线 colorDialog1.ShowDialog();//颜色对话框 fontDialog1.ShowDialog();//文字样式对话框
第二部分 知识总结
学生总结 完成上机训练模块
花费的时间 完成实战提高模块
花费的时间 本次实验对你而言
的难点
请将问题答案写在下面空白处
本次实验的收获
希望老师强化讲解 的知识要点
希望老师帮助回答 的问题

Java课设_文本编辑器

Java课设_文本编辑器

Java课设_文本编辑器预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制目录第一章绪论 (1)一、Java语言特点 (1)二、Java发展前景 (2)第二章问题分析 (5)一、文本编辑器的设计 (5)二、功能、性能 (5)三、开发环境 (6)四、设计示意图 (6)第三章系统详细设计 (7)一、文件打开与保存对话框的设计 (7)二、调用颜色对话框的设计 (9)三、建立Choice下拉列表实现对字体的设计 (10)四、剪切,复制,粘贴的设计 (10)第四章代码实现 (12)一、字形,字体大小部分 (12)二、帮助中关于主题部分 (14)第五章测试与调试 (16)一、调试分析 (16)二、测试结果 (16)第六章总结与心得 (19)第七章附录 (20)一、源代码 (20)二、参考文献 (31)第一章绪论一、Java语言特点1、面向对象Java语言是一个完全面向对象的语言,并且对软件工程技术有很强分得支持:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型:对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏:类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

2、平台无关性严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字限,最后的目标码都是一致:的:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行是系统,Java程序就可在任意的处理器上运行。

这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

3、安全问题Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性;毁灭系统资源;消耗系统资源;挖掘系统或个人机密;骚扰正常工作的进行。

4、多线程单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情;其他大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持);Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序;多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作;通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

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

软件学院课程设计报告书课程名称设计题目文本编辑器的设计与实现专业班级__________ XXXXXXXXXXX _________________ 学号_______________ xxxxxxxxxx ________________ 姓名xxx指导教师2011年11月1设计时间2011年11月2设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。

其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。

目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。

本设计所完成的文本编辑器功能是针对学习Java 程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。

3设计任务文本编辑器的设计与实现:设计一个类似于Windows记事本(NotepaQ的Java程序。

可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。

4设计内容4.1需求分析需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完整、准确、清晰、具体的要求。

简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。

能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。

文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。

4.2概要设计4.2.1程序基本功能概括图421 功能架构图4.2.2程序主要组件概括1.基本的Frame框架;2.菜单;3.打开文件对话框;4.保存文件对话框;5.颜色对话框;6.Choice下拉列表,运来实现字体设置;7.简单的帮助框架。

4.3详细设计4.3.1文件打开与保存文本编辑器的保存和打开功能的实现用文件对话框及输入输出流来完成。

先建立打开和保存对话框,在public void actionPeformed(ActionEvent e)里分别用FileWriter()和FileReader(方法实现保存和打开。

filedialog_save=newFileDialog(this,"保存文件对话框”,FileDialog.SAVE);filedialog_save.setVisible(false);filedialog」o ad=new FileDialog(this,"保存文件对话框”,FileDialog LOAD);f iledialog」o ad.setVisible(false);filedialog_save.addWi ndowListe ner(n eWWi ndowAdapter(){public void windowClosing(WindowEvent e){filedialog_save.setVisible(false);}});filedialog」o ad.addWi ndowListe ner(n ewWi ndowAdapter(){public void windowClosing(WindowEvent e){filedialog」o ad.setVisible(false);}});public void acti on Performed(Act ion Eve nte){if(e.getSource()==itemSave){filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null){try {File file=newFile(filedialog_save.getDirectory(),filedialog_save.getFile()); tofile=new FileWriter(file);out=new BufferedWriter(tofile);out.write(area.getText(),0,(area.getText())」en gth());out.close();tofile.close();catch(IOException e1){} elseif(e.getSource()==itemLoad)filedialog」o ad.setVisible(true);area.setText (n ull);String s;if(filedialog」oad.getFile()!=null) try{File file=newFile(filedialog_load.getDirectory(), filedialog」oad.getFile());file_reader =n ewFileReader(file);in=new BufferedReader(file_reader);while((s=i n.readLi ne())!=null) area.appe nd(s+'\n');in .close();file_reader.close();}catch(IOExceptione1) {}432字体,字形,字体大小的设置文本编辑器要实现对字体的设置,选用了GraphicsE nviro nment对象调用Stri ng [] getAvailableFo ntFamilyNames(方法,该方法可以获取计算机上所有可用的字体名称,并存放到字符串数组中。

Choicelist;GraphicsE nviro nmentge=GraphicsE nviro nmen t.getLocalGraphicsE nviro nmen t();Stri ng fon tName[]=ge.getAvailableF on tFamilyNames();public void itemStateChanged(ltemEvene){String name=list.getSelectedltem();Fontf= new Font(name,Font.PLAIN,15);area.setF on t(f);}elseif(e.getSource()==item8) // 设置字形(常规,倾斜,加粗){Font fon t=area.getF on t();int style=fo nt.getStyle();style=style A0;area.setF on t( newFon t("",style,fo nt.getSize()));}elseif(e.getSource()==item9){Font fon t=area.getF on t();int style=fo nt.getStyle();style=styleA2;area.setFo nt( newFon t("",style,fo nt.getSize()));elseif(e.getSource()==item10){Font fon t=area.getF on t();int style=font.getStyle();style=style A1;area.setFo nt( newFon t("",style,fo nt.getSize()));}elseif(e.getSource()==item11) 〃设置字体大小{Font fon t=area.getF on t();int style=font.getStyle();area.setF ont(newFon t(fo nt.getName(),style,12));}elseif(e.getSource()==item12){Font fon t=area.getF on t();int style=font.getStyle();area.setF ont(newFon t(fo nt.getName(),style,24));}elseif(e.getSource()==item13){Font fon t=area.getF on t();int style=font.getStyle();area.setF ont(newFon t(fo nt.getName(),style,36));}4.3.3剪切,复制,粘贴设置文本编辑器中关于剪切,复制,粘贴功能的实现选用处理JTextArea的DocumentEvent事件,通过area.cut(,area.copy(), area.paste(方法,点击“编辑”中相应菜单项可以选择将文本区中选中的内容剪切,复制,粘贴。

public void changedUpdate(DocumentEvene){String s=area.getText();}public void removeUpdate(DocumentEvents){cha ngedUpdate(e);}public void insertUpdate(DocumentEvene){cha ngedUpdate(e);}public void acti on Performed(Act ion Eve nte){elseif(e.getSource()==item2){area.cut();}elseif(e.getSource()==item3){area.copy();}elseif(e.getSource()==item4){area.paste();}}4.3.4插入子菜单,删除子菜单,创建格式菜单及其菜单项JMenultem insertItem=new JMenultem(”插入文本(K)");in sertltem.set Mnemon ic('K');editMe nu .add(i nsertltem);in sertltem.addActio nListe ner(new ActionListener(){public void action Performed(Action Eventevent){JPa neli nsertPa nel=n ewJPa nel();JLabel insertLabel=newJLabel("要插入的内容");JTextFieldi nputText=newJTextField(10);in sertPa nel.add(i nsertLabel);in sertPa nel.add(i nputText);JOptio nPan e.showMessageDialog( null,i nsertPa nel);int fromI ndex=displayText.getCaretPositio n();/取得当前的光displayText.i 标位置nsert(i nputText.getText(),froml ndex);}});JMe nultem RemoveItem=n ewJMe nultem(” 删除(G)");RemoveItem.set Mnemon ic('G');editMe nu.add(Removeltem);Removeltem.addActio nListe ner(n ewActio nListe ner(){public void action Performed(Action Evente){ int start=displayText.getSelectionStart();int end=displayText.getSelectionEnd();displayText.replaceRa nge( null,start,e nd);}});editMe nu.addSeparator();bar.add(editMenu );//add editMenuJMenuformatMenu= newJMenu("格式(R)");formatMe nu.set Mnemon ic('R');435创建,添加帮助菜项JMenuhelpMenu= newJMenu(”帮助(H)");helpMenu.setMnemonic('H');JMenultemhelpltem = new JMenultem(”帮助主题(H)...");helpItem.setMnemonic('H');helpMe nu .add(helpltem);helpItem.addAct ion Liste ner(new ActionListener(){public void acti on Performed(Act ion Eve nt eve nt){JTextAreahelpText = new JTextArea(JScrollPa nescroller = new JScrollPa ne(helpText);JOptio nPan e.showMessageDialog( null,scroller);}});bar.add(helpMenu); //添加4.4设计成果4.4.1运行界面L 事林岡稱[章规卜]★聲e ▼自赭擠彳了(MO0& C £>■ o设于Wir * 电事本(Notepad)fl'JJava程序。

相关文档
最新文档