课程设计文本编辑器的设计(1)
VB课程设计报告---文本编辑器

VB课程设计报告——文本编辑器学院名称:计算机学院学生姓名:专业名称:计算机科学与技术班级:一、课程设计题目用Visual Basic程序设计语言编写一个简易的文本编辑器要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。
二、课程设计目的(1)目标:实现类似与WINDOWS平台下的记事本程序。
(2)涉及功能:新建、打开、保存、另存为、退出、编辑、撤销、复制、粘贴、剪切、删除、查找、全选、打印、格式、字体、颜色、查看、状态栏、帮助、关于等三、课程设计说明1创建应用程序界面2设置属性3编写代码4保存应用程序5调试,运行应用程序6生成可执行文件四、源代码Dim filecount As IntegerDim inputdata As StringDim TargetPosition As IntegerDim pos As IntegerDim targey As StringDim neirong As StringPrivate Sub A_Click()On Error Resume Nextcmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.Action = 2Open cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1End SubPrivate Sub C_Click()End SubPrivate Sub D_Click()End SubPrivate Sub Form_Load()Text1.Text = ""Text1.Left = 0Text1.Top = 550Text1.Width = Form1.ScaleWidthText1.Height = Form1.ScaleHeightmnucut.Enabled = Falsemnucopy.Enabled = Falsemnudelete.Enabled = Falsemnuselectall.Enabled = Falsemnupaste.Enabled = Truemnuleft.Checked = TrueEnd SubPrivate Sub Form_Resize()'如果窗体不处于最小化text1状态,改变text1大小以适应窗体大小变化If Form1.WindowState <> 1 ThenText1.Width = Form1.Width - 120If Form1.Height < 1200 ThenForm1.Height = 1200End IfText1.Height = Form1.Height - 1350End IfEnd SubPrivate Sub Form_Unload(Cancel As Integer)Dim msg As IntegerIf Text1.Text <> neirong Thenmsg = MsgBox(" 内容已被修改,是否保存文件", 48 + vbYesNoCancel, "提示")If msg = vbYes ThenOn Error GoTo Errcmndlg1.DialogTitle = "保存文件"cmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowSaveOpen cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1Err:If Err.Number = cdlCancel ThenCancel = TrueEnd IfElseIf msg = vbNo ThenEndElseIf msg = vbCancel ThenCancel = TrueEnd IfElseEndEnd IfEnd SubPrivate Sub mnucopy_Click() '复制利用SetText 方法,将选中的文本放入剪贴板上Clipboard.SetText Text1.SelTextPrivate Sub mnucut_Click() '剪切Clipboard.SetText Text1.SelTextText1.SelText = ""End SubPrivate Sub mnudelete_Click() '删除Text1.SelText = ""End SubPrivate Sub mnuedit_Click() '编辑菜单项代码' 如果文本框中没有选中的内容,则剪切\复制\删除和粘贴菜单无效,否则有效If Text1.SelLength <> 0 Thenmnucut.Enabled = Truemnucopy.Enabled = Truemnudelete.Enabled = Truemnupaste.Enabled = TrueElsemnucut.Enabled = Falsemnucopy.Enabled = Falsemnudelete.Enabled = FalseEnd IfEnd SubPrivate Sub mnuexit_Click() '退出EndEnd SubPrivate Sub mnufind_Click() '查找FindText 1mnuNext.Enabled = TrueEnd SubPrivate Sub mnufont_Click() '字体On Error GoTo A:cmndlg1.Flags = cdlCFBoth Or cdlCFEffectscmndlg1.ShowFontIf cmndlg1.FontName > "" ThenText1.FontName = cmndlg1.FontNameText1.FontSize = cmndlg1.FontSizeText1.FontBold = cmndlg1.FontBoldText1.FontItalic = cmndlg1.FontItalicText1.FontStrikethru = cmndlg1.FontStrikethru Text1.FontUnderline = cmndlg1.FontUnderline Text1.FontBold = cmndlg1.FontBoldText1.ForeColor = cmndlg1.ColorA:If Err.Number < 0 ThenExit SubEnd IfEnd SubPrivate Sub mnufontcolor_Click() '字体颜色cmndlg1.ShowColorText1.ForeColor = cmndlg1.ColorEnd SubPrivate Sub mnuleft_Click() '左对齐Text1.Alignment = 0mnuleft.Checked = Truemnuright(1).Checked = Falsemnuright(2).Checked = FalseEnd SubPrivate Sub mnunew_Click() '新建Text1.Text = ""End SubPrivate Sub FindTex(ByVal start_at As Integer) targey = targeypos = InStr(start_at, Text1.Text, targey)If pos > 0 Then '找到了匹配字符串TargetPosition = posText1.SelStart = TargetPosition - 1'选中找到的字符串Text1.SelLength = Len(targey)Text1.SetFocusElse '没有找到匹配的字符串MsgBox "没找到匹配的字符串", 48, "提示"Text1.SetFocusEnd IfEnd SubPrivate Sub mnuNext_Click() '查找下一个FindTex TargetPosition + 1End SubPrivate Sub mnuopen_Click() '打开Dim inputdata As StringOn Error GoTo nofilecmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowOpenText1.Text = ""If cmndlg1.FileName <> "" ThenOpen cmndlg1.FileName For Input As #1Do While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text & inputdata & vbCrLoopClose #1End IfExit Subnofile:If Err.Number = 32755 Then Exit SubEnd SubPrivate Sub FindText(ByVal start_at As Integer)'获取用户输入的要查找的字符串targey = InputBox("请输入要查找的内容", "查找")pos = InStr(start_at, Text1.Text, targey)If pos > 0 Then '找到了匹配字符串TargetPosition = posForm1.Text1.SelStart = TargetPosition - 1'选中找到的字符串Form1.Text1.SelLength = Len(targey)Form1.Text1.SetFocusElse '没有找到匹配的字符串MsgBox "没找到匹配的字符串", 48, "提示"Form1.Text1.SetFocusEnd IfEnd SubPrivate Sub mnupaste_Click() '粘贴用GetText1 方法,将剪切板中的内容粘贴到光标所在位置Text1.SelText = Clipboard.GetText()End SubPrivate Sub mnuprint_Click() '打印On Error Resume Nextcmndlg1.ShowPrinterPrinter.Copies = cmndlg1.CopiesPrinter.Print Text1.TextEnd SubPrivate Sub mnuright_Click(Index As Integer) '右对齐\居中菜单代码Select Case IndexCase 1Text1.Alignment = 1mnuleft.Checked = Falsemnuright(1).Checked = Truemnuright(2).Checked = FalseCase 2Text1.Alignment = 2mnuleft.Checked = Falsemnuright(1).Checked = Falsemnuright(2).Checked = TrueEnd SelectEnd SubPrivate Sub mnusave_Click() '保存On Error Resume Nextcmndlg1.DialogTitle = "保存文件"cmndlg1.Filter = "文本文件|*.txt"cmndlg1.CancelError = Truecmndlg1.ShowSaveOpen cmndlg1.FileName For Output As #1Print #1, Text1.TextClose #1End SubPrivate Sub mnuselectall_Click() '全选Text1.SelStart = 0Text1.SelLength = Len(Text1.Text)End SubPrivate Sub Text1_Change()If Text1.Text = "" Thenmnufind.Enabled = FalsemnuNext.Enabled = FalseElsemnufind.Enabled = Truemnuselectall.Enabled = TrueEnd IfEnd SubPrivate Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case ButtonCase "新建"Call mnunew_ClickCase "打开"Call mnuopen_ClickCase "剪切"Call mnucut_ClickCase "复制"Call mnucopy_ClickCase "粘贴"Call mnupaste_ClickCase "保存"Call mnusave_ClickCase "查找"Call mnufind_ClickEnd SelectEnd SubPrivate Sub tre_Click()Shell ("notepad 使用说明.txt")End SubPrivate Sub xufeng_Click()Form2.Visible = TrueEnd Sub五、运行结果保存功能查找功能打开功能颜色修改功能字体修改功能七、心得体会作为一名计算机专业的学生,在接触了C语言、数据结构与C++课程后,对计算机语言有了一定的兴趣,于是在这个学期我毫不犹豫的选择了VB课程(算法与程序设计)。
文本编辑器Delphi课程设计

目录课程设计任务书 (2)1.试验题目: (3)2.项目概述 (3)3.系统旳功能需求 (3)3.1总体设计 (3)3.2系统功能 (3)3.3系统工作流程 (4)4.文本编辑器旳详细设计 (4)4.1文本编辑器旳界面设置 (4)4.1.1新建工程 (4)4.1.2修改窗口: (4)4.2文本编辑器旳详细代码分析 (7)5.心得体会: (10)6.参照文献 (11)7.道谢 (11)8.附录 (12)课程设计任务书班级姓名1.试验题目:文本编辑器2.项目概述程序大部分菜单都在窗体中对应有一种快捷图标。
包括新建、打开、保留、剪切、复制、粘贴、左对齐、右对齐、居中、文字加粗、文字倾斜、文字加下划线和文字大小等命令, 在菜单中还包括字体颜色、窗体背景颜色等命令。
运用这些基本命令, 可以很以便地处理诸多文本文档。
该程序界面友好, 当把鼠标放在快捷工具栏上时, 程序会给出快捷菜单提醒, 同步, 在窗体下方旳中间, 也有该快捷命令旳阐明文字。
首先要处理窗体旳布局和设计问题。
然后给各个菜单和快捷工具栏中旳按钮添加有关程序代码。
这个文本编辑器与一般旳简易旳文字编辑程序旳制作有所不一样。
首先, 必须设置好菜单旳属性和功能;另一方面, 当所有旳菜单都设计好之后, 还必须对工具栏进行设计, 工具栏旳开发与设计是最具挑战性旳工作, 由于整个界面旳美观都取决于工具栏旳制作,而整个程序使用与否以便、快捷, 也取决于工具栏旳安排和属性旳设置。
然后, 还需进行某些细部旳修饰, 例如底部任务栏上旳提醒用语以和协助菜单旳设计等。
3.系统旳功能需求 3.1总体设计3.2系统功能该文本编辑器具有完整旳菜单, 大部分菜单都在窗体对应有一种快捷图标。
包括新建、打开、保留、剪切、复制、粘贴、做对齐、右对齐、居中、文字加粗、文字倾斜、文字下划线和文字大小等命令, 在菜单中还包括字体颜色、窗体背景颜色。
运用这些命令, 可以很以便地处理诸多文本文档。
文本编辑器课程设计

文本编辑器课程设计一、课程目标知识目标:1. 理解文本编辑器的基本功能与操作,掌握常见的文本编辑命令;2. 学会使用文本编辑器进行文档的创建、编辑、保存和打印;3. 了解文本编辑器的不同类型,如记事本、Word等,并掌握它们的特点与适用场景。
技能目标:1. 能够熟练运用文本编辑器进行文字输入、排版和格式设置;2. 学会使用文本编辑器的查找与替换功能,提高文本处理效率;3. 掌握文本编辑器的拼写检查、语法检查功能,提升写作质量。
情感态度价值观目标:1. 培养学生对文本编辑器的兴趣,激发他们主动探索和使用新工具的积极性;2. 培养学生的信息素养,使他们认识到文本编辑器在日常生活和学习中的重要性;3. 引导学生养成良好的文本编辑习惯,注重文档的美观与规范,提升个人形象。
本课程针对年级:小学四年级课程性质:信息技术课程学生特点:四年级学生对电脑操作已有一定的基础,对新事物充满好奇心,但操作熟练程度和文本编辑能力有限。
教学要求:1. 结合学生特点,课程内容应以实践操作为主,注重培养学生的动手能力;2. 教学过程中,教师应充分调动学生的积极性,鼓励他们主动探索和尝试;3. 教学评价应以学生实际操作能力和学习态度为主要标准,关注学生的学习过程和成果。
二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,如记事本、Word等。
- 教材章节:第一章 认识文本编辑器- 内容列举:文本编辑器的定义、功能、分类及其适用场景。
2. 文本编辑器基本操作:学习文本输入、选取、删除、复制、粘贴等基本操作。
- 教材章节:第二章 文本编辑器的基本操作- 内容列举:文字输入、基本编辑命令、撤销与重做。
3. 文档格式设置:学习字体、字号、颜色、对齐方式等格式设置。
- 教材章节:第三章 文档格式设置- 内容列举:字体设置、段落设置、页面布局。
4. 文档高级功能:掌握查找与替换、拼写检查、语法检查等功能。
- 教材章节:第四章 文档高级功能- 内容列举:查找与替换、拼写检查、语法检查。
课程设计文本编辑器的设计

.《高级语言程序设计》课程设计报告题目: 文本编辑器的设计 专业: 计算机科学与技术 班级:14计科一班: 彭鑫 指导教师: 王峻成绩:计算机学院 2015年4月24日2014-2015学年 第2学期目录1 设计内容及要求 (2)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具体要求基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。
数据结构课程设计之文本编辑器

##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 2011年6月20日至2011年6月30日指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:简易文本编辑器主要是针对文字编辑处理,对于如何编辑一个简易文本编辑器程序我们可以利用线性表示实现其功能,线性表便于插入删除查找功能,而文本编辑器需要用到这些功能,因此可以利用线性表实现。
对于文本编辑器应该具有插入、删除、查找等功能,并且可以显示所有输入数据,可正确存盘、取盘,正确显示编辑的文字长度。
2.基本功能:简易文本编辑器应该具有的功能:图形菜单界面:位置查找:数据查找:显示所有输入数据:插入:删除文本信息:可正确存盘、取盘:正确显示长度:3.输入输出:输入数据,数据类型为整形,且输入的字符或数字不多于100个,输出为输出输入的数据,输出输入数据的长度,输出插入元素及插入后的数据,输出查找元素的,输出的数据均为整形。
二、概要设计1.设计思路:首先构造一个线性表, 然后利用线性表的存储结构顺序存储方式,实现文本的编辑添加查找删除.2.数据结构设计:程序采取了线性结构利用顺序存储的方法,采用该结构的原因是线性表利于存储、插入、删除、查找、修改等功能,使用它可以使程序运行简单方便。
定义程序中用到的抽象数据类型;抽象数据类型线性表的定义如下:ADT SqList{数据对象:D={ai | ai∈data,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:InitList(*L)操作结果:构造一个空的线性表L。
GetLength(L)初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem( L, i,*e)初始条件:线性表L已存在,1≤i≤L.Length.操作结果:查找指定的某元素i,并将值赋给e,用e 输出。
文本编辑系统课程设计

文本编辑系统课程设计一、课程目标知识目标:1. 学生能理解文本编辑系统的基本概念,掌握常见的文本编辑操作。
2. 学生能掌握文本格式化、排版和美化的基本方法,提高文档编辑效率。
3. 学生了解文本编辑软件的基本功能,如查找与替换、拼写检查等。
技能目标:1. 学生能熟练使用文本编辑软件进行文档创建、编辑和保存。
2. 学生具备文本排版和格式化的能力,能根据需求调整字体、段落和页面布局。
3. 学生能够运用软件的辅助功能,如模板、样式等,提高文档编辑速度。
情感态度价值观目标:1. 学生培养良好的文本编辑习惯,注重文档的整洁与美观。
2. 学生在团队协作中,学会尊重他人意见,提高沟通与表达能力。
3. 学生通过文本编辑,培养审美意识,提高对文本信息的敏感度。
本课程针对初中年级学生,结合学科要求和学生学习特点,设计实用、操作性强的教学内容。
课程注重培养学生的实际操作能力,使学生在掌握基本知识的同时,提高文本编辑技能。
通过本课程的学习,学生能够更好地应对日常学习、生活中的文本编辑需求,提升个人综合素质。
二、教学内容1. 文本编辑系统简介:介绍文本编辑软件的发展历程、常见文本编辑软件及其特点。
- 教材章节:第一章,第一节2. 文档基本操作:创建、打开、保存、关闭文档,复制、剪切、粘贴文本。
- 教材章节:第一章,第二节3. 文本格式设置:设置字体、字号、颜色,调整段落格式、行间距、首行缩进等。
- 教材章节:第二章,第一节4. 文档排版与美化:使用项目符号、编号,调整页面边距、纸张方向,插入图片、图表等。
- 教材章节:第二章,第二节5. 高级功能应用:查找与替换、拼写检查、语法检查、使用模板与样式。
- 教材章节:第三章,第一节6. 文档编辑实践:结合实际案例,进行文档编辑、排版和美化操作。
- 教材章节:第三章,第二节教学内容按照由浅入深的原则进行安排,使学生能够逐步掌握文本编辑的基本技能。
教学进度根据学生的学习情况和掌握程度进行调整,确保学生能够扎实掌握各个知识点。
文本编辑器课程设计报告

青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 2011-11-03 设计地点信息楼机房2011年 11 月 05 日一、课程设计目的和任务为了方便处理文本内容,减少在处理文本时的额外活动,设计了本程序。
比如在统计文本中的中英文字母数和空格数以及整篇文章的总字数时,可以利用本程序,这样比较方便、省时。
又比如统计某一字符串在文章中出现的次数,并输出该次数,也可利用本程序。
还可以利用本程序将文本的某一子串删除并将后面的字符前移。
二、分析与设计1.程序的基本功能:(1)分别统计出其中英文字母数和空格数以及整篇文章的总字数。
(2)统计某一字符串在文章中出现的次数,并输出该次数。
(3)删除某一子串,并将后面的字符前移。
2.系统总框图:(1)、统计字符个数算法流程图(2)、删除某一字符串算法流程图(3)、查找某一字符串出现的次数算法流程图3.定义的函数及说明:此程序由12个函数构成。
(1)存储结构:char wz[N][80]存储文章的字符数组,为全局变量(2)输入函数:readdat()通过此函数从文件中读取文本(3)输出函数:out()将文本内容输出(4)字符数统计函数:int countword(int n1,int n2)统计ASC 码在n1与n2之间的字符(5)字符串出现次数统计函数:int cz(char *s)查找某一字符串出现的次数(6)字符删除函数:void del(char *s)删除要删除的字符串(7)主函数:void main()通过主函数调用各个子函数完成程序功能(8)文件函数open("E:/yy/wzin.dat","r+")打开文件(9) 字符串位置函数strstr(wz[i],s);字符串s 在文章第i行首次出现的位置(10) 字符串长度函数strlen(wz[i]);文章第i 行的长度(11) 字符串比较函数strcmp(s1,"@@")比较字符串内容当为@@时停止输入(12) 字符串复制函数strcpy(wz[i],s1);/*将s1中的内容复制到wz[i]中4.算法设计:本程序要求储存结构为线性表结构,可以输入大小写的英文字母,任何数字和标点符号。
文本编辑器设计

四川师范大学成都学院高级语言程序课程设计文本编辑器设计学生姓名xxx学号x所在学院x专业名称x班级x级x班指导教师x成绩x学院二○一四年十二月课程设计任务书文本编辑器设计内容摘要:当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。
目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行C++程序语言的编译与运行很少,不能更好的适应当前用户的要求。
本设计所完成的文本编辑器功能是针对学习C++程序语言,因此我们利用C++程序设计虚拟机和软件用户以及使用者的应用过程形成一整套完整的编写代码,编译,运行。
本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏,还有链接C++语言虚拟机实现编译与运行。
操作系统为Windows 7。
关键词:文本编辑器C++程序语言编译运行The design of text editorAbstract:Today, the rapid development of computer and network technology, society is rapidly advancing to the information society, we need a more intelligent, more professional software to help us to finish the work, so as to improve work efficiency.At present, many text editors species, to provide the function of many, but can satisfy the compiling and running the user to achieve a variety of functions and the C++ programming language is very few, can better adapt to the requirements of the current user. The completion of the design of the text editor function is for learning C++ programming language, so we use the C++ program design of virtual machines and software users and users of the application process of form a complete set of code, compile, run. The development of the text editor includes interface window menus and toolbars, and link the C + + programming language virtual machine implementation compile and run.The development of the text editor use VC++6.0 as the development tool, and the operating system is Window 7.Keywords:The text editor C + + programming language compile function目录前言 (1)1 课程设计的意义及目的 (1)2 文本编辑器总体结构设计 (2)2.1 文本编辑器功能 (2)2.1.1 文本编辑器的基本功能 (2)2.2 总体结构 (2)3 文本编辑器各功能模块 (4)3.1需求分析 (4)3.2 功能模块 (4)4 软件结构设计 (5)4.1 撤销 (5)4.2 删除 (6)4.3 剪切 (7)4.4 复制 (9)4.5 粘贴 (10)5 操作步骤 (12)5.1打开文本编辑窗口 (12)5.2输入文本 (12)5.3删除文本内容 (12)5.4在编辑里选择撤销 (13)5.5选中文本,编辑里选复制 (13)5.6在编辑里选择粘贴 (14)5.7再次选中文本内容,剪切 (14)5.8再粘贴 (15)结束语 (16)附录 (17)文本编辑器前言在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序设计》课程设计报告题目: 文本编辑器的设计 专业: 计算机科学与技术 班级: 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具体要求基本要求:编辑器应具备对文本文件的打开、保存、新建、查找、插人、删除、修改、字符串替换、统计字数,统计行数等功能,对于超过一屏的长文件,应能够分页显示。
设计用户接口命令,实现对文本的编辑2 概要设计2.1系统的功能简介输入一页文字,程序实现文字、数字、空格的统计;可以删除一行信息;查找定位单词;定行位置插入;文件存盘;装入文件;并能显示输入及其他功能。
2.2系统功能模块图运行所需环境:win7及以下各版本windows,visual C++6.0。
2.3各个模块之间的主要关系该系统的功能主要是实现文本的输入,并对文本的相应信息进行的操作。
各个模块之间的关系是相互联系的。
首先,主函数包含了所有的子函数。
主函数是整个系统的核心。
子函数之间也是有联系的,对文本信息的显示、删除、统计、查找、插入,存储,装入,必须是在文本信息输入的情况下进行的。
因此对文本的输入是非常重要的。
在文本的删除、统计、查找、插入、存储、装入、保存所有的子函数之间是没有多大联系的。
3 详细设计3.1文件操作(1)文件的新建的实现:int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档"),TEXT("温馨提示"),MB_YESNO | MB_ICONQUESTION);if(ret==IDYES) //根据选择如果保存{OPENFILENAME ofn; //文件对象char szFile[MAX_PATH]; //文件的大小,最大ZeroMemory(&ofn,sizeof(ofn)); //文件的初始化ofn.lStructSize = sizeof(ofn);ofn.lpstrFile = szFile;ofn.lpstrFile[0] = TEXT('\0');ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0"); //保存的文件类型ofn.nFilterIndex = 1;ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.hwndOwner = hwnd;ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if (GetSaveFileName(&ofn)){FILE *fp;fp=fopen(szFile,"w"); //打开文件if(fp==NULL){MessageBox(NULL,TEXT("文件无法保存"),TEXT("呜呜"),MB_OK);}TCHAR str[10000];TCHAR end[10000];memset(end,0,10000);GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}SetDlgItemText(hwnd,IDC_EDIT1,"");}else{SetDlgItemText(hwnd,IDC_EDIT1,"");}(2)文件打开的实现:case ID_MENUITEMOPEN: //文本的打开{OPENFILENAME ofn;char szFile[MAX_PATH]; //保存路径变量ZeroMemory(&ofn,sizeof(ofn));在这里我们使用ZeroMemory“函数”,ZeroMemory其实并不是函数,看一下ZeroMemory的定义:ofn.lStructSize = sizeof(ofn);ofn.lpstrFile = szFile;//szFile是一个字符数组,那么szFile这个名字就代表这个字符数组的首地址这是一个指针的应用,把接收选择文件名的数组的地址传递到GetOpenFileName函数中。
ofn.lpstrFile[0] = TEXT('\0');ofn.lpstrFile[0] = TEXT('\0');效果等价于ZeroMemory(szFile,sizeof(szFile)/sizeof(char));ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");文件过滤器*.*就表示所有文件*.txt就表示所有文本文件abc*.*就表示所有以abc开头的文件abc*.txt就表示所有以abc开头的文本文件(txt)ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0");用“\0”分割出几个段,每两段是一组过滤器,每组的第一个段代表过滤器的显示的值,而第二段表示真正的过滤器ofn.nFilterIndex = 1; //选择一个过滤器ofn.lpstrFileTitle = NULL;windows的一个惯例:结构体的指针类型别名一般是LP+结构体的名字GetOpenFileName(&ofn)而不是GetOpenFileName(ofn),因为GetOpenFileName函数要的是OPENFILENAME的指针(8)只要用户还没关闭对话框,那么GetOpenFileName函数是停住的,同步模式的PlaySound 以及getchar、scanf是一样的。
用户关闭对话框,GetOpenFileName函数返回,返回值是BOOL,等于TRUE表示用户选择了文件,如果等于FALSE就表示用户选择了【取消】按钮ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.hwndOwner = hwnd;ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;if(GetOpenFileName(&ofn)){FILE *fp;fp=fopen(szFile,"r");if(fp==NULL){MessageBox(NULL,TEXT("文件打开错误!"),TEXT("记事本"),MB_OK);}TCHAR line[256];TCHAR end[10000];memset(line,0,256);memset(end,0,256);while(!feof(fp)){fgets(line,sizeof(line),fp);lstrcat(end,line);int w=strlen(end);end[w-1]='\0';lstrcat(end,"\r\n");}SetDlgItemText(hwnd,IDC_RICHEDIT1,end);fclose(fp); //关闭文件}break;}break;(3)文件保存的实现:case ID_MENUITEMSAVE: //文本的保存{OPENFILENAME ofnb;char bcFile[MAX_PATH];ZeroMemory(&ofnb,sizeof(ofnb));ofnb.lStructSize = sizeof(ofnb);ofnb.lpstrFile = bcFile;ofnb.lpstrFile[0] = TEXT('\0');ofnb.nMaxFile = sizeof(bcFile);ofnb.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.txt\0");ofnb.nFilterIndex = 1;ofnb.lpstrFileTitle = NULL;ofnb.nMaxFileTitle = 0;ofnb.lpstrInitialDir = NULL;ofnb.hwndOwner = hwnd;ofnb.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST|OFN_OVERWRITEPROMPT;if (GetSaveFileName(&ofnb)){FILE * fp = fopen (".txt","w"); //保存所有文件都为txt格式TCHAR baoc [100000]; //保存的最大容量为100000GetDlgItemText(hwnd,IDC_RICHEDIT1,baoc,sizeof(baoc));fputs(baoc,fp);fclose(fp);}}break;(4)退出文本编辑器的实现:int ret=MessageBox(NULL,TEXT("是否把更改保存到新建的文本文档"),TEXT("温馨提示"),MB_YESNO | MB_ICONQUESTION);if(ret==IDYES){OPENFILENAME ofn;char szFile[MAX_PATH];ZeroMemory(&ofn,sizeof(ofn));ofn.lStructSize = sizeof(ofn);ofn.lpstrFile = szFile;ofn.lpstrFile[0] = TEXT('\0');ofn.nMaxFile = sizeof(szFile);ofn.lpstrFilter = TEXT("ALL\0*.*\0Text\0*.TXT\0C++\0*.cpp\0");ofn.nFilterIndex = 1;ofn.lpstrFileTitle = NULL;ofn.nMaxFileTitle = 0;ofn.lpstrInitialDir = NULL;ofn.hwndOwner = hwnd;ofn.Flags = OFN_EXPLORER |OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;ofn.lpstrTitle=TEXT("保存");if (GetSaveFileName(&ofn)){FILE *fp;fp=fopen(szFile,"w");if(fp==NULL){MessageBox(NULL,TEXT("文件无法保存"),TEXT("呜呜"),MB_OK);}TCHAR str[10000];TCHAR end[10000];memset(end,0,10000);GetDlgItemText(hwnd,IDC_EDIT1,str,sizeof(str));fputs(str,fp);fclose(fp);}MessageBox(NULL,TEXT("文件保存成功!放心关闭"),TEXT("嘻嘻"),MB_OK);}EndDialog(hwnd, 0);3.2编辑操作:(1)剪切的实现:case ID_MENUITEMCUT: //剪切{ SendDlgItemMessage(hwnd,IDC_RICHEDIT1,WM_CUT,0,0);//传递对话框中的内容首先获取RichEdit中的内容,WM_CUT,传递要进行操作的内容,0,0为两个WPARAM和LPARAM是约定的消息参数类型。