文本编辑器设计.docx
《文本编辑器设计.docx》由会员分享,可在线阅读,更多相关《文本编辑器设计.docx(22页珍藏版)》请在冰豆网上搜索。
文本编辑器设计
四川师范大学成都学院高级语言程序课程设计
文本编辑器设计
学生姓名
xxx
学号
x
所在学院
x
专业名称
x
班级
x级x班
指导教师
x
成绩
x学院
二○一四年十二月
课程设计任务书
学生姓名
x
学生学号
x
学生专业
x
学生班级
x
指导教师
x
职称
x
发题日期
2014年10月15日
完成日期
2014年12月19日
设计题目
文本编辑器设计
设计目的:
为了满足普通用户对文本文档进行一般的简单操作,设计文本编辑器,用户可以对文本进行如下的基本操作。
通过该课程设计,锻炼学生的基本编程技能,基于C语言基本知识,进一步扩展C++和windows界面编程的知识和应用;培养学生分析问题和解决问题的能力;促进把所学知识灵活应用到具体实践中。
具体任务及要求:
2.撤销:
撤销前一步所进行的操作;
2.删除:
删除当前选定字符(串);
3.剪切:
复制并删除选定字符(串);
4.复制:
复制选定字符(串);
5.粘贴:
对粘贴内容进行粘贴。
课程设计进度安排:
序号
内容安排
时间
1
收集课程设计相关资料
10.15~10.26
2
学习MFC相关知识
10.27~10.31
3
需求分析、澄清和软件概要设计
11.1~11.3
4
软件详细设计及功能验证
11.4~12.4
5
提交论文、总结、答辩
12.5~12.19
课程设计参考文献:
[1]仇芒仙等编.C/C++程序设计案例教程.北京:
清华大学出版社,2012.8
[2]钱能.C++程序设计教程.北京:
清华大学出版社,2005
[3]严蔚敏等编.数据结构(C语言版).北京:
清华大学出版社,2008.3
[4]任哲.MFCWindows应用程序设计(第3版).北京:
清华大学出版社,2013.3
[5]欧阳志宏等编.MFC程序设计轻松入门.北京:
人民邮电出版社.2009.4
指导教
师签字
院长审
核签字
文本编辑器设计
内容摘要:
当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。
目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行C++程序语言的编译与运行很少,不能更好的适应当前用户的要求。
本设计所完成的文本编辑器功能是针对学习C++程序语言,因此我们利用C++程序设计虚拟机和软件用户以及使用者的应用过程形成一整套完整的编写代码,编译,运行。
本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏,还有链接C++语言虚拟机实现编译与运行。
操作系统为Windows7。
关键词:
文本编辑器 C++程序语言 编译 运行
Thedesignoftexteditor
Abstract:
Today,therapiddevelopmentofcomputerandnetworktechnology,societyisrapidlyadvancingtotheinformationsociety,weneedamoreintelligent,moreprofessionalsoftwaretohelpustofinishthework,soastoimproveworkefficiency.
Atpresent,manytexteditorsspecies,toprovidethefunctionofmany,butcansatisfythecompilingandrunningtheusertoachieveavarietyoffunctionsandtheC++programminglanguageisveryfew,canbetteradapttotherequirementsofthecurrentuser.ThecompletionofthedesignofthetexteditorfunctionisforlearningC++programminglanguage,soweusetheC++programdesignofvirtualmachinesandsoftwareusersandusersoftheapplicationprocessofformacompletesetofcode,compile,run.Thedevelopmentofthetexteditorincludesinterfacewindowmenusandtoolbars,andlinktheC++programminglanguagevirtualmachineimplementationcompileandrun.
ThedevelopmentofthetexteditoruseVC++6.0asthedevelopmenttool,andtheoperatingsystemisWindow7.
Keywords:
ThetexteditorC++programminglanguagecompilefunction
文本编辑器
前言
在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。
文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。
第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不具备在窗口和屏幕中显示的功能。
它包含了一些非常短的命令(为了减少打字量)。
其中一个命令能够把文件的指定部分通过打字机打印出来。
编辑光标是想象中的一个插入点,通过特殊命令,可以把它移动到特定内容字符串所在的行。
随后,内容字符串又被扩展成正则表达式。
如果想看到文件的变化,你需要把它打印出来。
相对于穿孔机来说,人们认为这种基于行的文本编辑器具有革命性的进步。
如果没有它,用户就需要把那些处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。
当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。
最早的全屏编辑器中,有一种叫做O26,它是于1967年为CDC6000系列机器的操作控制台而作的。
另外一个早期的全屏编辑器是vi。
vi诞生于20世纪70年代,至今,它仍是Unix和Linux的标准编辑器。
全屏编辑器对视频终端的销售起到了促进的作用。
文本编辑器在Windows的应用中是一个非常重要的项目,在过去十数年中,微软对windows文本编辑器有多个版本的升级改进,而基于其他的编程环境的文本编辑器也是多如牛毛,今天我们用MFC可视化编译环境做一个简易的文本编辑器。
1课程设计的意义及目的
为了满足普通用户对文本文档进行一般的简单操作,设计文本编辑器,用户可以对文本进行如下的基本操作。
通过该课程设计,锻炼学生的基本编程技能,基于C语言基本知识,进一步扩展C++和windows界面编程的知识和应用;培养学生分析问题和解决问题的能力;促进把所学知识灵活应用到具体实践中。
该课程设计要求学生综合运用在课程中学到的技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。
在课程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法。
2文本编辑器总体结构设计
2.1文本编辑器功能
2.1.1文本编辑器的基本功能
该文本编辑器是用windows编写的一个程序,运行后弹出文本编辑器的主界面,由键盘输入或以打开的方式输入或显示文本文件内容。
其中程序的编辑项可对当前的文本进行撤销、删除、剪切、复制、粘贴、在文本里显示当前时间、全选、清除、查找、替换、统计等功能。
程序的文件项可以对电脑上txt,c++等可以发出不同的报警声。
格式文件的打开、对当前文本的保存和另存、对当前文本的的新建以及退出文本编辑系统。
输入形式:
Ø直接在文本编辑框中输入文本内容
Ø以打开的方式打开并在文本框中显示电脑的上文本
输出形式:
Ø对编辑框中尚无文本内容时进行查找、替换、统计等,程序会弹出一个提示尚无文本信息的小对话框,需输入文本后再进行以上操作
Ø对编辑框中已有文本内容后进行查找、替换、统计操作,程序将弹出3与之对应的对话框,根据所弹出的对话框的按键要求进行之后的操作就可以。
保存文件,另存为等功能都异曲同工,撤销、删除、剪切、复制、粘贴、等就直接在主文本编辑框中操作,直接在其显示操作后的文本信息。
2.2总体结构
该程序是用C++语言编译成的,编辑中主要能够实现撤销功能、复制功能、粘贴功能、删除功能和剪切功能。
图2-1系统功能图
图2-2系统流程图
3文本编辑器各功能模块
文本编辑器主要由五大功能构成,他们分别是文件操作模块,文本编辑模块,剪切操作模块,菜单控制模块和帮助及其他模块。
在文本编辑模块中,主要完成文件的撤销、删除操作。
剪切操作模块主要完成剪切、复制、粘贴操作。
3.1需求分析
文本编辑器的设计是基于MicrosoftVisualStudio2008开发的一款小型的软件,主要的设计是为了满足普通用户对文本文档进行一般的简单操作,通过MFC可视化编程环境,直接生成一个友好的用户操作界面,通过这个窗口,用户可以对文本进行如下的基本操作。
文本编辑器主要由五大功能构成,他们分别是文件操作模块,文本编辑模块,剪切操作模块,菜单控制模块和帮助及其他模块。
在文件操作模块中,主要完成文件的创建,打开,保存和另存操作。
用户可以选择文件菜单上的新建子菜单来完成新建文本文件操作;选择文件菜单上的保存子菜单来完成保存文件操作选择文件菜单上的打开子菜单来完成打开文件操作。
在文件的打开,保存和另存为操作中,系统会提示用户输入文件路径及文件名。
值得一提的是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。
3.2功能模块
在文本编辑器模块中,主要完成在编辑窗口中以添加或插入的方式输入字符,删除光标所在当前位置的单个字符或前一个位置的单个字符,朝上下左右4个方向的光标移动操作。
当光标所在位置及后面的位置没有字符时,系统会以添加的方式输入字符;当光标所在位置及后面的位置有字符时,系统会已插入的方式输入字符。
用户可以使用BackSpace键删除光标前一个字符,也可以使用Del键删除当前位置的字符。
Ø撤销:
撤销前一步所进行的操作,从“编辑下拉菜单”或“右键菜单撤销
Ø删除:
删除当前选定字符(串),从“编辑下拉菜单”或“右键菜单”中删除
Ø全选:
对文本编辑框中文本全部选定,从“编辑下拉菜单”或“右键菜单”中全简易文本编辑器
主要完成对已选定文本的剪切,复制,粘贴工作。
如果用户要剪切文本以便可以将它移动到其他位置,可通过先选定文本,然后选择Edit菜单上的Cut子菜单完成剪切任务。
如果用户要复制文本以便可以将它黏贴到其他位置,必须先选定文本,然后选择Edit菜单上的Copy子菜单来完成复制任务。
如果用户要粘贴剪切或复制的文本,必须将光标置于要粘贴文本的位置,然后选择Edit菜单上的Paste子菜单来完成粘贴任务。
Ø剪切:
复制并删除选定字符(串),从“编辑下拉菜单”或“右键菜单”中剪切
Ø复制:
复制选定字符(串),“编辑下拉菜单”或“右键菜单”中复制
Ø粘贴:
对粘贴内容进行粘贴,从“编辑下拉菜单”或“右键菜单”中粘贴
4软件结构设计
4.1撤销
撤销命令是系统自带的函数,使用是调用OnMenuUndo函数命令,详细代码如下所示:
voidCTxteditDlg:
:
OnEditundo()
{
//TODO:
Addyourcommandhandlercodehere
//直接调用类CEdit的成员函数Undo
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->Undo();
}
图4-1撤销流程图
4.2删除
删除命令调用的是系统自带函数,使用的是OnMenuDelete函数命令,详细代码如下所示:
voidCTxteditDlg:
:
OnEditDelete()
{
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->Delete();
}
图4-2删除流程图
4.3剪切
剪切命令调用的是系统自带函数,使用的是OnMenueCut函数命令,详细代码如下所示:
voidCTxteditDlg:
:
OnMenucut()
{
//TODO:
Addyourcommandhandlercodehere
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->Cut();//删除编辑控件中当前选中的文本,并将删除的文本拷贝到剪贴板中
}
图4-3剪切流程图
4.4复制
复制命令调用的是系统自带函数,使用的是OnMenuCopy函数命令,详细代码如下所示:
voidCTxteditDlg:
:
OnMenucopy()
{
//TODO:
Addyourcommandhandlercodehere
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->Copy();//删除编辑控件中当前选中的文本,并将删除的文本拷贝到剪贴板中
}
图4-4复制流程图
4.5粘贴
粘贴命令调用的是系统自带函数,使用的是OnMenuPaste函数命令,详细代码如下所示:
voidCTxteditDlg:
:
OnMenupast()
{
//TODO:
Addyourcommandhandlercodehere
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->Paste();//删除编辑控件中当前选中的文本,并将删除的文本拷贝到剪贴板中
图4-4粘贴流程图
5操作步骤
5.1打开文本编辑窗口
5.2输入文本
5.3删除文本内容
5.4在编辑里选择撤销
5.5选中文本,编辑里选复制
5.6在编辑里选择粘贴
5.7再次选中文本内容,剪切
5.8再粘贴
结束语
步入大学,我们接触到了更多的计算机专业知识。
在大一第二学期,学习了C++程序设计,大二的时候又学习了数据结构课程。
而这学期的课程设计,对我来说是一个新的挑战。
从开始到现在,课程设计的每一个环节,我自己都精心准备,让我对编程有了更深刻的认识,也是我知道了自己的不足之处。
在老师刚布置下来任务之后,我便开始在网上和图书管理搜集资料,虽然关于这方面的资料很多,但是好多都和我的不相匹配。
于是我每一本书都仔细阅读,筛选出了对我的程序设计有用的信息。
然后,看懂了是一方面,自己动手做,又是另一个挑战。
我发现如果不是透彻的弄懂了,在实际操作的时候,根本实现不了结果。
于是,我又把资料仔细的阅读,并询问老师和同学们,再加上自己的摸索,最终提早完成了任务。
我设计的是简易文本编辑器,要求有查找,插入,替换,块移动,删除功能,在这次课程设计作业的过程中,虽然课程设计有明确的目的及要求,但由于在设计方面我们没有经验,理论基础知识掌握得不牢固,在设计中难免会出现这样那样的问题。
在编写过程中也有许多小问题,比如没有定义,缺少符号等等,但经过仔细的修改以及寻求别人的帮助把问题也改正了,大多数是因为自己的粗心而引起的。
在设计过程中,要独立的完成自己的设计思路。
在学习理论知识的同时也要参加实践活动,把课本上的知识运动到实践当中去,也是我们学习专业理论知识的最终目的。
本次的课程设计,培养了我C++语言,C语言及其他课程的理论知识和理论联系实际,应用生产实际知识解决实际问题的能力;在设计的过程中还培养独立自主的能力。
在今后的学习过程中我们会更加努力。
经过了连续两周的不懈努力,我终于完整的完成了文本编辑器的课程设计。
在做此实验中虽然碰到了很多困难,但是在克服困难的同时我们获益良多。
巩固书本上的知识,对书上的知识能更透彻地了解。
通过自己设计程序积累调试数据结构经验,培养了我的编程能力。
巩固我们所学的C++编程知识,消化课堂所讲解的内容。
对所学课程及其知识的一种整理,将原本在我们脑中比较混乱的课程设计重新梳理。
1)通过课程设计我更好的掌握编程的基本设计思路,为以后灵活运用奠定了基础。
2)相对于以前,我能够独立的完成简单的程序设计以及完成一份较为满意的程序设计报告。
3)通过这次课程设计,达到了我增强巩固C++编程知识的目的,使知识全面化,系统化。
4)C++程序设计在计算机学科的学习中,是一门比较重要的环节,这次的巩固与加深提高了我的实际工作能力,培养科学作风,为学习后续课程和今后系统开发奠定基础。
5)课程设计更注重的是综合训练,做到学以致用。
6)培养了分析问题与解决问题的能力。
附录
//txtedit.cpp:
Definestheclassbehaviorsfortheapplication.
//
#include"stdafx.h"
#include"txtedit.h"
#include"txteditDlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//////////////////////////////////////////////////////////////////////
//CTxteditApp
BEGIN_MESSAGE_MAP(CTxteditApp,CWinApp)
//{{AFX_MSG_MAP(CTxteditApp)
//NOTE-theClassWizardwilladdandremovemappingmacroshere.
//DONOTEDITwhatyouseeintheseblocksofgeneratedcode!
//}}AFX_MSG
ON_COMMAND(ID_HELP,CWinApp:
:
OnHelp)
END_MESSAGE_MAP()
//////////////////////////////////////////////////////////////////////
//CTxteditAppconstruction
CTxteditApp:
:
CTxteditApp()
{
//TODO:
addconstructioncodehere,
//PlaceallsignificantinitializationinInitInstance
}
//////////////////////////////////////////////////////////////////////
//TheoneandonlyCTxteditAppobject
CTxteditApptheApp;
//////////////////////////////////////////////////////////////////////
//CTxteditAppinitialization
BOOLCTxteditApp:
:
InitInstance()
{
AfxEnableControlContainer();
//Standardinitialization
//Ifyouarenotusingthesefeaturesandwishtoreducethesize
//ofyourfinalexecutable,youshouldremovefromthefollowing
//thespecificinitializationroutinesyoudonotneed.
#ifdef_AFXDLL
Enable3dControls();//CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically
#endif
CTxteditDlgdlg;
m_pMainWnd=&dlg;
intnResponse=dlg.DoModal();
if(nResponse==IDOK)
{
//TODO:
Placecodeheretohandlewhenthedialogis
//dismissedwithOK
}
elseif(nResponse==IDCANCEL)
{
//TODO:
Placecodeheretohandlewhenthedialogis
//dismissedwithCancel
}
//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe
//application,ratherthanstarttheapplication'smessagepump.
returnFALSE;
}
参考文献
[1]仇芒仙等编.C/C++程序设计案例教程.北京:
清华大学出版社,2012.8
[2]钱能.C++程序设计教程.北京:
清华大学出版社,2005
[3]严蔚敏等编.数据结构(C语言版).北京:
清华大学出版社,2008.3
[4]任哲.MFCWindows应用程序设计(第3版).北京:
清华大学出版社,2013.3
[5]欧阳志宏等编.MFC程序设计轻松入门.北京:
人民邮电出版社.2009.4
成绩评定表
学生姓名
x
学生学号
x
学生专业
x
学生班级
x
指导教师
x
职称
x
设计题目
文本编辑器设计
评
语
评定成绩
等级
分数
指导教师签字:
年月日
说明:
分数采用百分制,相应的等级为:
优:
90~100:
良:
80~89;中:
70~79;及格:
60~69;不及格:
60分以下。