程序设计_文本编辑器的设计与实现汇总
java课设文本编辑器的设计与实现
淮海工学院计算机工程学院
课程设计报告
设计名称:面向对象课程设计
选题名称:文本编辑器的设计与实现
姓名:学号:
专业班级:
系(院):计算机工程学院
设计时间:2015.6.21~2014.7.4
设计地点:计算机楼机房、教室、宿舍
();
("确定");
("这是一个简单的文本编辑器!");
();
();
();
(200,200,250,150);
();
(20 ,60,220,30);
( ("楷体",16));
();
(100,100,50,30);
();
}
( e)
{
(())
{
();
}
}
}
4.2运行结果显示
如图1:文本编辑器主界面
如图2:文本编辑器文件菜单
如图3:
文本
编辑
器编
辑菜
单
如图4:文本编辑器格式菜单
如图5:文本编辑器帮助菜单
如图6:文本编辑器字体格式和背景
如图7:
文本编。
程序设计总结(推荐12篇)
程序设计总结第1篇文件的定义:存储在外部存储介质(外存)上数据的集合。
C语言将每一个与主机相连的输入或输出设备都看作是一个文件文件的使用和管理:在程序运行时由程序在外存上建立或打开一个文件,通过写操作将数据存入该文件;由程序打开外存上的某个已有文件,并通过读操作将文件中的数据读入内存供程序使用文件的路径文件的存储形式文件缓冲区C程序中文件的操作过程(通过库函数实现,已定义在)结构体类型FILE文件指针文件的打开文件的使用方式文件的关闭格式化读函数格式化写函数字符方式读函数字符方式写函数字符串读函数字符串写函数数据块读函数(可用于读写数组、结构变量的值,多用于读写二进制文件)数据块写函数(可用于读写数组、结构变量的值,多用于读写二进制文件)程序设计总结第2篇数组:一组有序的、类型相同的数据的集合,这些数据被称为数组的元素定义:类型说明符数组名[正整数常量表达式],例如float mark[100];char str[200];int a[2+3];初始化:在数组定义时为数组元素赋初值(赋初值的个数不能超过数组总元素的个数)引用:数组名[下标],如a[3]。
程序设计总结第3篇定义:函数是按规定格式书写的能完成特定功能的一段程序。
函数之间地位平等,可互相调用也可自身调用函数的调用:指一个函数暂时中断运行,去执行另一个函数的过程函数的返回:return 表达式或 return (表达式)函数原型声明值传递函数调用的执行过程实参向形参单向值传递嵌套调用:在调用一个函数的过程中,又调用另一个函数递归调用:在调用一个函数的过程中又出现直接或间接的调用该函数本身程序设计总结第4篇变量的作用域:指变量在程序中的作用范围,与变量定义的位置有关。
可分为局部变量和全局变量局部变量(内部变量)全局变量(外部变量)变量的生存期:指变量值存在时间的长短,与变量的存储类型有关。
可分为静态存储和动态存储变量的存储类型内存供用户使用的存储空间变量的具体存储种类局部变量的具体存储种类:自动变量、静态局部变量、寄存器变量自动变量(auto)静态局部变量(static)寄存器变量(register)全局变量的具体存储种类内部函数(静态函数)外部函数编译预处理宏定义带参数的宏定义终止宏定义文件包含条件编译程序设计总结第5篇内存:即内部存储器,由存储单元组成,存储单元的最小单位是字节。
多文本编辑器设计与实现方案
多文本编辑器设计与实现方案(WORD版完整可编辑,需更多资料请联系)摘要在深入研究当前各种文本编辑软件优劣的前提上,分析软件开发中程序员的实际需求,发现他们有时候并不需要打开系统庞大、启动较慢的集成开发环境来阅读改写代码,只需要通过小型的文本编辑器即可。
然而大多数小型文本编辑器并不能高亮显示代码中的关键字,或者软件本身闭源,不能根据需要改变高亮显示关键字列表,或者软件只有windows版或Linux版平台移植性较差,这并不能满足经常需要在各个软件系统平台之间交叉开发的程序员的需求,甚至影响了他们的工作效率。
本系统运用了平台移植性较好的Qt语言来开发,不同平台之间只需要重新编译即可,且代码易读可重用性良好,程序员只需要修改代码中关键字列表或根据需要自定义自己的高亮显示关键字列表即可,这一软件为程序员阅读改写代码提供了便利。
关键词自定义;多文本编辑器;Qt;高亮显示The Design and Implementation of Multiple Document EditorAbstractIn the further study of the current various text editing software quality on the premise of the analysis of the actual demand of software development programmers, find that they sometimes don't need to open the large system, start the slower integrated development environment to read rewrite code, you just need to through the small text editor. But most small text editor is not highlighted keywords in your code, or closed source software itself, not according to the need to change the highlighted keywords list, or software version only Windows or Linux version of the moving platform plant sex is bad, it doesn't meet often need to cross between different software system platform development demand for programmers, and even affect their work efficiency. This system USES the platform portability better Qt to develop language, you just need to recompile, between the platform and code easy to read good reusability, programmers only need to modify the code in the keywords list or according to the need to customize your highlighted keywords list, this software provides convenience for programmers to read rewriting code.Key words: multiple document editor; plugins; custom highlight目录摘要.......................错误!未定义书签。
C++课程设计简易文本编辑器
目录第一章课程设计目的和要求 (1)1.1课程设计的目 (1)1.2基本要求 (1)第二章课程设计任务内容 (2)2.1设计背景 (2)2.2简易文本编辑器设计内容 (2)第三章详细设计 (3)3.1总体结构图 (3)3.2函数分析 (3)3.3主函数程序流程图 (4)3.4子函数流程图 (5)第四章程序编码与调试 (7)4.1程序编码 (7)4.2编码调试 (8)4.3运行结果 (9)第五章课程设计心得与体会 (11)附录1 参考文献 (12)附录2 源程序代码 (13)第一章课程设计目的和要求C语言课程设计是一门实践性非常强的课程,不但要注重c语言程序设计基本知识的学习,更要注重程序设计技能的培养,使学生能够允许渐进地把握c语言程序设计的技能。
通过课程设计,培养学生阅读和编写程序的能力,培养计算机程序设计的能力和素质,以及思维方法。
初步积累编程经验,打下良好的计算机应用基础。
1.1课程设计的目1.通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《c语言程序设计》课程学习的内容2.掌握工程软件设计的基本方法,强化上级动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性。
3.掌握基本的程序设计过程和技巧,掌握基本的分析问题合理性,通过计算机求解问题的能力,具备初步的高级语言程设计能力。
为后续个门计算机课程的学习和毕业设计打下结实基础。
4.通过c语言课程设计,使学生了解高级程序设计语言的结构。
1.2 基本要求1.基本要求:①要求用VC中的MFC控件打开和保存文件。
②要求在设计的程序中至少能完成六种编辑功能。
③完成的程序界面要美观,能够完成六种编辑的全过程。
2.创新要求:①在记事本中增加工具栏,工具栏中应有常使用的工具按钮;②在记事本中增加状态栏;第二章课程设计任务内容2.1 设计背景随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一系列的操作来修改,因此,文件的修改操作是十分重要的。
VB课程设计-文本编辑器
VB课程设计报告——文本编辑器学院名称:学生姓名:专业名称:班级:一、课程设计题目用Visual Basic程序设计语言编写一个简易的文本编辑器要求:有最基本的文本编辑功能,包括复制、剪切、粘贴、字体设置、背景颜色设置、字体颜色设置;同时拥有文本管理功能,包括打开文件、保存文件;以及完整的系统运行退出等功能,所有的操作可选择设定的快捷键。
二、课程设计目的虽然本学期的Visual Basic课程是自学的,相对于课堂学习有些不足,但通过平时的上机实验,初步掌握了VB程序设计的各种方法,学会了编写最基本的VB程序;对于完整的VB程序设计来讲是很不足的,平时掌握的只是单独的窗体(Form)程序编写,以及各种简单控件的使用,没有做到很好连贯性,所以有必要做一次完整的VB程序设计,结合所学的基本知识,使用多个窗体自成一套系统,加上各种控件的综合运用,初步设计一个合格的VB 应用程序;这样在巩固VB所学的同时,更好地学会程序设计的一些思想和方法,对于以后的编程学习或是工作有重要的实践意义。
三、课程设计说明题目为文本编辑器,即是最基本的文本编辑程序,首先必须做好文本编辑器本身的功能,然后对其完善,做成一个完整的小程序功能设计说明:功能是这个文本编辑器的核心内容,也就是程序的作用,它是用来做什么的;本程序就是用来编写文本的,编写过程中要利用到窗体(Form)一个,控件包括:RichTextBox1(超文本框)、CommonDialog(通用对话框),以及InputBox(消息框)、菜单编辑器等,。
要做的工作就是编写代码把这些控件和窗体等结合为一体,使得程序能够成为一体,顺畅运行。
本次设计在按照题目要求的前提下,为了完整地展示一个应用程序,在最初就设计为最基本的文本的编辑器,所以取名为“易记本”,就是简易记事本的简称,然后加入图标,在程序完成之后还进行了大包操作,得到应用程序的安装文件,最后安装在电脑上运行使用。
四.源代码Private Sub Command1_Click()Dim i As IntegerIf Text2.Text <> "123456" Theni = MsgBox("密码错误", 5 + vbExclamation, "警告")If i <> 6 ThenEndElseText2.Text = ""Text2.SetFocusEnd IfEnd IfForm1.HideForm2.ShowEnd SubPrivate Sub Form_Load()Text1.Text = ""Text1.MaxLength = 6Text2.Text = ""Text2.MaxLength = 6Text2.PasswordChar = "*"End SubPrivate Sub Text1_LostFocus()If Not IsNumeric(Text1.Text) Then MsgBox "帐号必须为数字", , "警告" Text1.Text = ""Text1.SetFocusEnd IfEnd SubPrivate Sub Command1_Click()Form2.HideForm3.ShowEnd SubPrivate Sub Command2_Click()Form2.HideForm4.ShowEnd SubPrivate Sub Command3_Click()Form2.HideForm5.ShowEnd SubPrivate Sub Color_Click() CommonDialog1.Action = 3Text1.ForeColor = CommonDialog1.Color End SubPrivate Sub Command1_Click()Form3.HideForm2.ShowEnd SubPrivate Sub Copy_Click()Dim st As Stringst = Text1.SelTextEnd SubPrivate Sub Cut_Click()Dim st As Stringst = Text1.SelTextText1.SelText = ""End SubPrivate Sub Exit_Click()EndEnd SubPrivate Sub Font_Click()CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects CommonDialog1.Action = 4Text1.FontName = CommonDialog1.FileNameText1.FontSize = CommonDialog1.FontSizeText1.FontBold = CommonDialog1.FontBoldText1.FontItalic = CommonDialog1.FontItalicText1.FontStrikethru = CommonDialog1.FontStrikethru Text1.FontUnderline = CommonDialog1.FontUnderline Text1.ForeColor = CommonDialog1.ColorEnd SubSub New_Click()Text1.Text = ""Me.Caption = FileEnd SubSub Open_Click()CommonDialog1.Action = 1Text1.Text = ""Open CommonDialog1.FileName For Input As #1Do While Not EOF(1)Line Input #1, inputdataText1.Text = Text1.Text + inputdata + vbCrLfLoopClose #1End SubPrivate Sub Paste_Click()Text1.SelText = stEnd SubPrivate Sub Print_Click()CommonDialog1.Action = 5For i = 1 To CommonDialog1.CopiesPrinter.Print Text1.TextNext iPrinter.EndDocEnd SubPrivate Sub SaveAs_Click()CommonDialog1.FileName = "vb课设用.txt" CommonDialog1.DefaultExt = "txt"CommonDialog1.Action = 2Open CommonDialog1.FileName For Output As #1 Print #1, Text1.TextEnd SubDim arr As Long, sum As Long, a As IntegerPrivate Sub Command1_Click()a = HScroll1.ValueText1.Text = plus(a)Call isprime(a)End SubPrivate Sub Command2_Click()EndEnd SubPrivate Sub HScroll1_Change()Label2.Caption = HScroll1.ValueEnd SubSub isprime(max As Integer)Dim x As Integer, i As Integer, j As IntegerFor i = 2 To maxx = 0For j = 2 To i - 1If i Mod j = 0 Then x = 1Next jIf x = 0 Then Label2.Caption = Label2.Caption & i & " " Next iEnd SubFunction plus(a As Integer) As LongFor i = 1 To asum = sum + iNext iplus = sumEnd FunctionDim x1 As IntegerDim y1 As IntegerDim x2 As IntegerDim y2 As IntegerDim flag As BooleanPrivate Sub Command1_Click()On Error Resume NextCommonDialog1.CancelError = True CommonDialog1.DialogTitle = "颜色" CommonDialog1.ShowColorIf Err <> 32755 Then Picture1.ForeColor = CommonDialog1.Color End IfEnd SubPrivate Sub Command2_Click()Picture1.ClsEnd SubPrivate Sub Command3_Click()Form5.HideForm6.ShowEnd SubPrivate Sub Option1_Click()Picture1.DrawWidth = 1End SubPrivate Sub Option2_Click()Picture1.DrawWidth = 2End SubPrivate Sub Option3_Click()Picture1.DrawWidth = 4End SubPrivate Sub Option4_Click()Picture1.DrawWidth = 8End SubPrivate Sub Form_Load()Picture1.Scale (0, 0)-(400, 400)flag = FalseEnd SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) flag = Truex1 = Xy1 = YEnd SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If flag = False ThenExit SubEnd IfIf flag = True Thenx2 = Xy2 = YPicture1.Line (x1, y1)-(x2, y2)x1 = x2y1 = y2End IfEnd SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) flag = FalseEnd SubDim ctP As Single, ctDu() As Single, ctDuS As LongPrivate Sub Command1_Click()Picture1.AutoRedraw = True: ctP = 3.1415926Timer1.Interval = 20: Timer1.Enabled = Not Timer1.EnabledEnd SubPrivate Sub Command2_Click()Form7.HideForm6.ShowEnd SubPrivate Sub Form_Load()Me.Caption = "旋转的椭圆": Command1.Caption = "转/停"Text1.Text = "9 个": Timer1.Enabled = FalseEnd SubPrivate Sub Text1_Change()ctDuS = Val(Text1.Text)If ctDuS > 200 Then Text1.Text = "200"If ctDuS < 1 Then ctDuS = 1ReDim ctDu(0 To ctDuS)End SubPrivate Sub Timer1_Timer()Dim I As LongPicture1.DrawWidth = 3Picture1.ClsFor I = 0 To ctDuSctDu(I) = ctDu(I) + ctP * 0.01 * I / 9If ctDu(I) > ctP * 2 Then ctDu(I) = ctDu(I) - ctP * 2Show1 ctDu(I), &HFFFFFF / (ctDuS + 1) * I * 0.6NextDim x As Single, y As SingleStatic J As SinglePicture1.DrawWidth = 15x0 = Picture1.ScaleWidth * 0.5: y0 = Picture1.ScaleHeight * 0.5 Picture1.PSet (x0, y0), 255x = 1200: y = 0: J = J - 0.05If J < -ctP * 2 Then J = J + ctP * 2Zhuan J, x, yPicture1.PSet (x0 + x, y0 + y), RGB(0, 0, 255)End SubPrivate Sub Show1(ToJ As Single, Se As Long)Dim I As Single, x As Single, y As Single, x0 As Single, y0 As Single Dim a As Single, b As Single, x1 As Single, y1 As SingleIf Picture1.ScaleWidth < Picture1.ScaleHeight Thena = Picture1.ScaleWidth * 0.45Elsea = Picture1.ScaleHeight * 0.45End Ifb = a * 0.25x0 = Picture1.ScaleWidth * 0.5: y0 = Picture1.ScaleHeight * 0.5x = -a: y = 0: Zhuan ToJ, x, yx1 = a: y1 = 0: Zhuan ToJ, x1, y1Picture1.Line (x0 + x, y0 + y)-(x0 + x1, y0 + y1), Sex = 0: y = -b: Zhuan ToJ, x, yx1 = 0: y1 = b: Zhuan ToJ, x1, y1Picture1.Line (x0 + x, y0 + y)-(x0 + x1, y0 + y1), SeFor I = 0 To ctP * 2 Step 0.1x = a * Sin(I): y = b * Cos(I)Zhuan ToJ, x, yPicture1.Line -(x0 + x, y0 + y), SeNextx = a * Sin(I): y = b * Cos(I)Zhuan ToJ, x, yPicture1.Line -(x0 + x, y0 + y), SeEnd SubPrivate Sub Zhuan(ToJ As Single, x As Single, y As Single) Dim S As Single, J As SingleS = Sqr(x ^ 2 + y ^ 2)If S = 0 Then J = 0 Else J = y / SIf Abs(J) >= 1 ThenIf J > 0 Then J = ctP * 0.5 Else J = -ctP * 0.5ElseJ = Atn(J / Sqr(-J * J + 1))End IfIf x < 0 Then J = -ctP - Jx = S * Cos(J + ToJ): y = S * Sin(J + ToJ) End Sub Private Sub Command1_Click()EndEnd Sub五、运行结果六.心得体会通过本次课程设计,使我对VB的认识更加深入了一层,VB主要由两部分组成,一个是Visual 可视化界面设计,另一个是Basic程序设计。
多文档文本编辑器
可视化程序设计-多文档文本编辑器设计报告学号:000000000000姓名:XXXX学院:XXXXX层次:XXXX目录一、设计分析 (3)二、开发平台、工具.................................................. 3.三、程序结构及设计.................................................. 3.3.1文件模块:...................................................... 3.3.2编辑模块: ......................................................4.3.3格式模块: ......................................................4.3.4查看模块: ......................................................4.3.5帮助模块: ......................................................4.四、源程序代码说明.................................................. 6.4.1界面设计 ...................................................... .6..4.2.具体功能的实现................................................. 6.五、操作方法流程及程序试验结果 (9)5.1.程序启动界面:................................................. 9.5.2.新建多个文本文件............................................... 9.5.3文档编辑页面 .................................................. 1.05.4.保存界面 (10)5.5打开文档 (11)5.6退出文档 (11)5.7字体大小设置界面 (12)5.8字体颜色设置界面 (12)六、设计体会 (13)设计分析编写一个多文档的文本编辑器,具备以下功能:(1)具备一般文本编辑器的基本功能:新建、保存、打开、另存为和退出;(2)能够同时打开多个文本文件进行编辑;(3)能够对所编辑的文件进行保存,保存类型为txt ;(4)能够打开计算机上面已经存在的文本文件,并进行编辑;(5)编辑:(复制、剪切、粘贴、全选);(6)格式:(自动换行、字体、颜色),格式的设置功能要区分是设置当前块的格式还是设置所有内容的格式;(7)界面设计时应有工具栏,弹出菜单,状态栏等功能来提高操作的便利性;开发平台、工具在.NET FrameWork 3.0下采用 2010旗舰版工具;使用C#语言。
文本编辑器的程序设计及代码示例
文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。
它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。
本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。
一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面: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()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。
基于vc6.0 MFC对话框的文本编辑器设计报告,附程序
桂林电子科技大学信息科技学院2011级面向对象实训任务书
文本编辑器
一:基本任务
设计一个基于对话框的文本编辑器,实现常用文本编辑器的基本功能。
二:要求和评分标准
1、基本要求
(1) 按照题目要求独立设计文本编辑器所需的所有按钮,并完成程序源码编写、调试及关键代码注释。
(40分)
(2)能够实现文本文档的创建与保存。
(10分)
(3)能够实现文本信息的编辑。
(15分)
(4)能够实现文字的字体、颜色等设置。
(15分)
2、发挥部分
能够实现文本编辑器的其它功能。
(20分)
三、实训报告格式
1、任务题目;
2、性能、指标、要求;
3、方案设计:
①方案论证
②工作原理
4、软件设计
5、制作与调试过程;
6、实训心得体会。
1。
文本编辑器实现原理
文本编辑器实现原理
文本编辑器的实现原理可以简单概括为以下几步:
1.用户输入文本:用户在编辑器中输入文本,此时文本呈现在编辑器
的屏幕上。
2.文本存储:编译器将用户输入的文本存储在内存或外部存储设备中,以便用户在下次使用编辑器时可以继续编辑。
3.文本修改:当用户对文本进行修改时,编辑器会检测用户的操作
(比如插入、删除、修改等)并相应地更新文本的内容。
4.光标控制:编辑器需要追踪光标的位置并控制其移动,以便用户可
以编辑文本的任何部分。
5.用户界面:用户界面需要显示编辑器的各种工具和选项,比如字体、颜色、格式等。
6.保存和打开:编辑器需要提供保存和打开文本的功能,以便用户可
以在其他时间或设备上打开和编辑他们的文本。
总的来说,文本编辑器实现的原理就是通过对用户输入的文本进行存储、修改和展示等一系列操作,为用户提供方便快捷的文本编辑功能。
数据结构-课程设计--简易文本编辑器
《数据结构》课程设计班级: 10计本2班姓名:邓寅森学号: 2010305202指导教师:杨老师完成日期: 2011年12月计算机科学与技术系课程设计评分表课程名称: 数据结构 简易文本编辑器教师签名:日期:一、需求分析1.1 问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)查询文本中满足要求的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5) 查看所有的文本信息。
二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。
系统进入菜单运行界面如图所示:简易文本编辑器主菜单2.2 数据结构设计系统采用线性表的顺序存储结构表示和存储“简易文本编辑器”中的信息。
实现文本的输入,删除,插入,查找,显示功能。
2.3 系统功能设计运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。
每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。
三、模块设计3.1 模块设计系统主要包含主程序模块和其它操作模块。
其调用关系如图所示。
模块调用示意图3.2 系统子模块及其功能设计本系统共设计了16个子模块,各程序的函数名及功能说明如下:1、/*由模式串nextval值*/void GetNextval(SqVString T,int nextval[])2、/*模式匹配KMP算法*/int KMPIndex(SqVString S,int pos,int next[],SqVString T)3、/*初始化串*/void InitString(SqVString *S,char *str)4、/*串插入*/int StrInsert(SqVString *S,int pos,SqVString T)5、/*串删除*/int StrDelete(SqVString *S,int pos,int len)6、/*求子串*/int SubStr(SqVString S,int pos,int len,SqVString *T)7、/*串连接*/int Concat(SqVString *S,SqVString T)8、/*串赋值*/int StrAssign(SqVString *S,char *value)9、void InputString() //新建10、void DeleteString()//删除11、void DeleteSubstring()//删除12、void InsertSubstring()//查找13、void DisplayString()//显示14、void cd()//进入界面15、void ts()//主菜单16、void tc()//退出3.3 系统模块之间的调用关系系统的16个子模块之间的主要调用关系所示:系统函数调用关系图四、详细设计4.1 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。
文本编辑器的设计与实现
研究现状
现有的文本编辑器如Notepad、Sublime Text、Atom等各 有优缺点,但都存在一些共性问题,如性能瓶颈、功能单一 、用户体验不够友好等。因此,研究如何设计和实现一个更 好的文本编辑器具有重要意义。
目前,文本编辑器的研究主要集中在算法优化、用户体验设 计、扩展性等方面。例如,利用机器学习算法优化文本编辑 器的自动补全和语法高亮功能;通过用户调研和可用性测试 等方法提升用户体验;设计可扩展的插件系统等。
04
安全性问题将是未来文本编辑器设计的重要考虑因素,保障用户数据 的安全和隐私将成为关键。
THANKS
感谢观看
检查文本编辑器的各项功能是否正常工作,如打开文件、保存文 件、剪切、复制、粘贴等。
兼容性测试
确保文本编辑器在不同的操作系统、不同版本的软件上都能正常运 行,不会出现兼容性问题。
错误处理测试
测试文本编辑器在遇到异常情况时的处理能力,如文件损坏、内存 不足等。
性能测试
响应时间测试
测量文本编辑器在执行 各种操作时的响应时间, 确保响应时间在可接受 的范围内。
内存占用测试
检查文本编辑器在运行 过程中占用的内存大小, 确保不会造成系统资源 过度消耗。
文件处理能力测试
测试文本编辑器在处理 大文件时的性能表现, 如打开、保存、编辑等 操作的速度。
用户反馈与评估
01
用户调研
通过问卷调查、访谈等方式收集用户对文本编辑器的使用体验和意见。
02
数据分析
对收集到的用户反馈进行数据分析和挖掘,找出用户最关心的问题和改
04
实现过程
技术选型
编程语言选择
选择一种高效且易于维护的编程语言,如 Python、Java或C。
java课程设计报告-java课程设计
Java 课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3二、综合设计正文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31. 系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31.1系统开发背景、开发范围、建设目标与必要性开发⋯⋯⋯⋯⋯⋯⋯⋯31.2需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.1功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.2系统运行环境与开发工具⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43 . 系统实施⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3.1 源程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43.2 .系统测试及部分截图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12三、综合设计总结或结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四、参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java 程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单 GUI 设计和程序功能设计。
通过 GUI 设计实现图形用户界面,提供图形菜单,方便用户操作。
使用Java 语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。
文本编辑器课程设计报告
青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 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.文本格式化:用户可以对文本进行格式化,例如设置字体颜色、字体大小、字体样式(例如加粗、斜体等)等。
4.搜索和替换功能:用户可以搜索编辑器中的文本,找到并替换指定的文本。
5.保存和打开文本文件:用户可以将编辑器中的文本保存成一个文本文件,并且可以打开一个已经存在的文本文件进行编辑。
6.撤销和重做功能:用户可以撤销之前的操作,并重做已经撤销的操作。
7.拼写检查和自动纠错功能:编辑器可以检查用户输入的文本中的拼写错误,并根据语言规则自动纠正错误。
8.自动保存:编辑器可以在一定时间间隔内自动保存用户的文件,以防止意外的程序崩溃或电源故障导致数据丢失。
9.多窗口和标签:用户可以同时打开多个编辑器窗口,并在每个窗口中进行不同的编辑。
10.快捷键:编辑器可以提供一些常用功能的快捷键,以方便用户的操作。
11.缩进和对齐:编辑器可以提供自动缩进和对齐功能,以使文本整齐明了。
12.行号和标记:编辑器可以显示行号,并允许用户通过添加标记(例如断点)来快速导航到特定行。
13.支持多种编程语言:编辑器可以针对不同的编程语言提供特定的功能,例如语法高亮、代码折叠等。
当然,上述的特性只是一个简单文本编辑器的基本要求,实际上,现代化的文本编辑器具有更多更强大的功能和特性。
基于Java的文本编辑软件的设计与实现_论文终稿(目录+正文部分)
目录1 绪论 (1)1.1课题研究的背景及意义 (1)1.2 文本编辑器软件的应用现状 (1)1.3 本文工作和结构安排 (2)1.3.1 本文主要工作 (2)1.3.2 本文结构安排 (3)1.4 小结 (3)2 相关技术介绍 (4)2.1 Java技术 (4)2.1.1 Java特点 (4)2.1.2 程序开发常用包 (5)2.2 小结 (6)3 系统分析与设计 (7)3.1 软件需求分析 (7)3.2 系统类设计 (8)3.3 系统总体设计 (13)3.3.1 设计原理 (15)3.3.2 功能模块划分 (15)3.4 小结 (17)4 详细设计与实现 (18)4.1 系统开发平台及工具选择 (18)4.2 主窗体设计与实现 (18)4.3 新建功能设计与实现 (20)4.3.1 新建功能概述 (20)4.3.2 新建功能技术分析 (20)4.3.3 新建功能实现过程 (21)4.4 打开功能设计与实现 (21)4.4.1 打开功能概述 (21)4.4.2 打开功能技术分析 (21)4.4.3 打开功能实现过程 (22)4.5保存功能设计与实现 (22)4.5.1 保存功能概述 (22)4.5.2 保存功能技术分析 (22)4.5.3 保存功能实现过程 (23)4.6 全选功能设计与实现 (23)4.6.1 全选功能概述 (23)4.6.2 全选功能技术分析 (23)4.6.3 全选功能实现过程 (23)4.7 退出功能设计与实现 (24)4.7.1 退出功能概述 (24)4.7.2 退出功能技术分析 (24)4.7.3 退出功能实现过程 (24)4.8 查找功能设计与实现 (25)4.8.1 查找功能概述 (25)4.8.2 查找功能技术分析 (25)4.8.3 查找功能实现过程 (25)4.9 查找下一个功能设计与实现 (26)4.9.1 查找下一个功能概述 (26)4.9.2 查找下一个功能技术分析 (26)4.9.3 查找下一个功能实现过程 (26)4.10 替换功能设计与实现 (27)4.10.1 替换功能概述 (27)4.10.2 替换功能技术分析 (27)4.10.3 替换功能实现过程 (28)4.11 设置字体功能设计与实现 (28)4.11.1 设置字体功能概述 (28)4.11.2 设置字体功能技术分析 (28)4.11.3 设置字体功能实现过程 (28)4.12 编译功能设计与实现 (29)4.12.1 编译功能概述 (29)4.12.2 编译功能技术设计 (29)4.12.3 编译功能实现过程 (30)4.13 运行功能设计与实现 (30)4.13.1 运行功能实现概述 (30)4.13.2 运行功能技术分析 (30)4.13.3 运行功能实现过程 (31)4.14 获取系统时间功能设计与实现 (31)4.15 复制功能设计与实现 (31)4.16 剪切功能设计与实现 (32)4.17 粘贴功能设计与实现 (32)4.18 帮助功能设计与实现 (32)4.19 小结 (33)5测试目的 (34)5.1测试目的 (34)5.2 功能测试 (34)5.3界面测试 (34)5.4 小结 (36)6 结束语 (37)6.1 总结 (37)6.2 展望 (37)附录 (38)参考文献 (40)致谢 (41)XX学校本科毕业设计1 绪论本章是论文的序言部分,将论述论文研究的背景、意义、研究现状以及论文要完成的工作。
C语言实现简易文本编辑器
C语⾔实现简易⽂本编辑器本程序要求完成⼀个简易⽂本编辑器,能够完成⽂本的录⼊、编辑、删除、查找,并能够完成⽂件的存取。
在⽂本编辑软件中把⽤户输⼊的所有⽂本内容作为⼀个字符串。
虽然各种⽂本编辑软件的功能有强弱差别,但是基本操作都包括串的输⼊、修改、删除(包括整⾏删除和⼀⾏中的⼦串删除)、查找、输出等。
通过分析,系统应该包括以下功能:1、具有简单的⽂字或图形菜单界⾯2、能实现串或⽂本块的查找、替换、删除、插⼊、移动操作。
3、能实现⽂本⽂件的存盘和读取功能。
4、具有友好的界⾯和较强的容错能⼒设计思路1、采⽤的逻辑结构⽂本编辑器主要是针对⽂本进⾏编辑,⽂本的操作就是对字符的操作。
⽂本编辑器可以从⾏、列两个⽅向进⾏编辑。
每⼀⾏可以看成⼀个线性表,线性表是⼀种线性结构,线性结构的特点是数据元素之间为线性关系,数据元素“⼀个接⼀个的排列”。
在⼀个线性表中数据元素的类型是相同的,由于每⼀⾏可以存储的最⼤字数是相同的,⾏⽅向所有线性表的最⼤长度可以设置成相同的。
⾏与⾏之间的关系也可以看成⼀个线性表。
2、采⽤的存储结构线性表的存储分为两种:顺序存储和链式存储。
顺序存储是指在内存中⽤地址连续的⼀块存储空间顺序存放线性表的各元素,⽤这种存储形式存储的线性表称为顺序表。
在程序设计语⾔中,⼀维数组在内存中占⽤的存储空间就是⼀组连续的存储区域,因此,⽤⼀维数组来表⽰顺序表的数据存储区域是再合适不过的。
链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建⽴数据元系之间的线性关系,对每个数据元素除了存放数据元素⾃⾝的信息之外,还需要和⼀起存放其后继或前驱所在的存储单元的地址,这两部分信息组成⼀个“结点”,每个元素都如此。
存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。
只有⼀个存储单元地址的为单链表,有两个存储单元地址的为双链表。
考虑到实际的功能需求,每⾏的线性表可以⽤顺序存储⽅式,每个字符是⼀个节点。
几种常用网页文本编辑器总结
文本编辑器应用总结一.lhgeditor文本编辑器lhgeditor组件文件结构:1. lhgeditor.js:组件的核心JS文件2. lhgeditor.css:组件的样式表文件3. images:组件所需的图片都在此文件夹中以上三个文件为组件所必须的三个文件,组件包中其它以“_”开头的文件为示例的演示文件,实际使用中不需要这些文件。
当然框架核心文件lhgcore.js是每个组件都必须用到的文件,记得加载组件前先要加载此文件。
lhgeditor组件使用说明:1. 在调用组件的页面加载lhgcore.j s和lhgeditor.js两个文件。
2. 在window.onload函数里加入J.editor.add(编辑器的id).init();例:<script type="text/javascript">window.onload = function(){J.editor.add('elm1').init();}</script><form action="_postdate.asp" method="post" target="_blank"><div><textarea name="elm1" id="elm style="width:600px;height:300px;">lhgeditor小型在线编辑器</textarea></div><input type="submit" value="Submit" /></form>二.nicEdit文本编辑器<script type="text/javascript">bkLib.onDomLoaded(function() {new nicEditor().panelInstance('area1');new nicEditor({fullPanel : true}).panelInstance('area2');new nicEditor({iconsPath : '../nicEditorIcons.gif'}).panelInstance('area3');new nicEditor({buttonList :['fontSize','bold','italic','underline','strikeThrough','subscript',' superscript','html','image']}).panelInstance('area4');new nicEditor({maxHeight : 100}).panelInstance('area5');});</script>//默认模式//new nicEditor().panelInstance('area1');<textarea cols="50" id="area1"></textarea>//All A vailable Buttons//new nicEditor({fullPanel : true}).panelInstance('area2');<textarea cols="60" id="area2">Some Initial Content was in this textarea</textarea>//new nicEditor({iconsPath : '../nicEditorIcons.gif'}).panelInstance('area3');<textarea cols="50" id="area3"></textarea>//自定义按钮//new nicEditor({buttonList :['fontSize','bold','italic','underline','strikeThrough','subscript','superscript','html','image']}).panelInstance('area4');<textarea cols="50" id="area4">HTML <b>content</b> <i>default</i> in textarea</textarea>//设置文本编辑器的最大高度//new nicEditor({maxHeight : 100}).panelInstance('area5');<textarea style="height: 100px;" cols="50" id="area5">HTML <b>content</b> <i>default</i> in textarea</textarea>三.kindeditor文本编辑器(1) 支持多种语言php、asp(2) 功能强大默认模式<script charset="utf-8" src="../kindeditor-min.js"></script><script charset="utf-8" src="../lang/zh_CN.js"></script><script>var editor;KindEditor.ready(function(K) {editor = K.create('textarea[name="content"]', {resizeType : 1,allowPreviewEmoticons : false,allowImageUpload : false,items : ['fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic','underline','removeformat', '|', 'justifyleft','justifycenter', 'justifyright', 'insertorderedlist','insertunorderedlist', '|', 'emoticons', 'image', 'link']});});</script><textarea name="content" style="width:700px;height:200px;visibility:hidden;">KindEditor</textarea>Multi Language Examples(多语言)<script charset="utf-8" src="../kindeditor-min.js"></script><script>var editor;KindEditor.ready(function(K) {K('select[name=lang]').change(function() {if (editor) {editor.remove();editor = null;}editor = K.create('textarea[name="content"]', {langType : this.value});});K('select[name=lang]').change();});</script><form><p><select name="lang"><option value="en">English</option><option value="zh_CN">简体中文</option><option value="zh_TW">繁體中文</option><option value="ar">Arabic</option></select></p><textarea name="content" style="width:800px;height:200px;"></textarea> </form>粘贴设置:<script charset="utf-8" src="../kindeditor-min.js"></script><script charset="utf-8" src="../lang/zh_CN.js"></script><script>KindEditor.ready(function(K) {K.create('#content1', {pasteType : 0});K.create('#content2', {pasteType : 1});K.create('#content3', {pasteType : 2});});</script>禁止粘贴<textarea id="content1" name="content" style="width:700px;height:200px; visibility:hidden;"></textarea>纯文本粘贴<textarea id="content2" name="content" style="width:700px;height:200px; visibility:hidden;"></textarea>HTML粘贴<textarea id="content3" name="content" style="width:700px;height:200px; visibility:hidden;"></textarea>自定义插件<script charset="utf-8" src="../kindeditor-min.js"></script> <script charset="utf-8" src="../lang/zh_CN.js"></script> <script>// 自定义插件#1ng({example1 : '插入HTML'});KindEditor.plugin('example1', function(K) {var self = this, name = 'example1';self.clickToolbar(name, function() {self.insertHtml('<strong>测试内容</strong>');});});// 自定义插件#2ng({example2 : 'CLASS样式'});KindEditor.plugin('example2', function(K) {var self = this, name = 'example2';function click(value) {var cmd = self.cmd;if (value === 'adv_strikethrough') {cmd.wrap('<span style="background-color:#e53333;text-decoration:line-through;"></span>');} else {cmd.wrap('<span class="' + value + '"></span>');}cmd.select();self.hideMenu();}self.clickToolbar(name, function() {var menu = self.createMenu({name : name,width : 150});menu.addItem({title : '红底白字',click : function() {click('red');}});menu.addItem({title : '绿底白字',click : function() {click('green');}});menu.addItem({title : '黄底白字',click : function() {click('yellow');}});menu.addItem({title : '自定义删除线',click : function() {click('adv_strikethrough');}});});});KindEditor.ready(function(K) {K.create('#content1', {cssPath : ['../plugins/code/prettify.css', 'index.css'],items : ['source', 'removeformat', 'example1', 'example2', 'code']});});</script><textarea id="content1" name="content" style="width:700px;height:200px; visibility:hidden;"></textarea>单独调用组件上传图片弹出框<script src="../kindeditor.js"></script><script src="../lang/zh_CN.js"></script><script>KindEditor.ready(function(K) {var editor = K.editor({allowFileManager : true});K('#image').click(function() {editor.loadPlugin('image', function() {editor.plugin.imageDialog({imageUrl : K('#url').val(),clickFn : function(url, title, width, height, border, align) {K('#url').val(url);editor.hideDialog();}});});});});</script><input type="text" id="url" value="" /> <input type="button" id="image" value="选择图片" />取色器<script src="../kindeditor-min.js"></script><script>KindEditor.ready(function(K) {var colorpicker;K('#colorpicker').bind('click', function(e) {if (colorpicker) {colorpicker.remove();colorpicker = null;}var colorpickerPos = K('#colorpicker').pos();colorpicker = K.colorpicker({x : colorpickerPos.x,y : colorpickerPos.y + K('#colorpicker').height(),z : 19811214,selectedColor : 'default',noColor : '无颜色',click : function(color) {K('#color').val(color);colorpicker.remove();colorpicker = null;}});});});</script><input type="text" id="color" value="" /> <input type="button" id="colorpicker" value="打开取色器" />四.jsp基本编辑器使用步骤:1.把edit.htm 修改为edit.jsp2.把想要使用的地方包含edit.jsp就行了代码:<!--富文本编辑器--><%@ include file="edit.jsp"%>注意事项:在需要引入编辑器的页面中的onload事件,要结合edit.jsp中的事件五.Xheditor(1) 解压压缩文件,将其中的xheditor-zh-cn.min.js以及xheditor_emot、xheditor_plugins和xheditor_skin三个文件夹上传到网站相应目录注:如果您网站中没有使用jQuery框架,也请一并上传jquery文件夹中的jquery-1.4.4.min.js (2) 在相应html文件的</head>之前添加<script type="text/javascript" src="/js/jquery.js"></script><script type="text/javascript" src="/js/xheditor.js"></script>注:如果jQuery之前已经在项目页面中使用,请勿重复添加引用代码(3).方法1:在textarea上添加属性:class="xheditor"例如:<textarea name="content" class="xheditor">test</textarea>方法2:在您的页面初始JS代码里加上:$('#elm1').xheditor();$('#elm1').xheditor();例如:$({$('#elm1').xheditor();});相应的卸载编辑器的代码为$('#elm1').xheditor(false);例:自定义按钮<script type="text/javascript" src="../jquery/jquery-1.4.4.min.js"></script><script type="text/javascript" src="../xheditor-1.1.12-zh-cn.min.js"></script><script type="text/javascript">$(pageInit);function pageInit(){$.extend(xheditor.settings,{shortcuts:{'ctrl+enter':submitForm}});$('#elm1').xheditor({tools:'full'});$('#elm2').xheditor({tools:'mfull'});$('#elm3').xheditor({tools:'simple'});$('#elm4').xheditor({tools:'mini'});$('#elm5').xheditor({tools:'Cut,Copy,Paste,Pastetext,|,Source,Fullscreen,About'});$('#elm6').xheditor({tools:'Cut,Copy,Paste,Pastetext,/,Source,Fullscreen,About'});}function submitForm(){$('#frmDemo').submit();}</script>1,full(完全):<br /><textarea id="elm1" name="elm1" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为:</textarea>2,mfull(多行完全):<br /><textarea id="elm2" name="elm2" rows="8" cols="80" style="width: 40%"> 当前实例调用的Javascript源代码为:</textarea>3,simple(简单):<br /><textarea id="elm3" name="elm3" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为:</textarea>4,mini(迷你):<br /><textarea id="elm4" name="elm4" rows="8" cols="80" style="width: 40%"> 当前实例调用的Javascript源代码为:</textarea>5,custom(自定义):<br /><textarea id="elm5" name="elm5" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为:</textarea>6,自定义多行模式:<br /><textarea id="elm6" name="elm6" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为</textarea>皮肤选择注:为了保持项目精简,同一个页面只能调用一个皮肤,当同一界面同时调用多个皮肤时,最后一个皮肤的按钮面板样式会影响之前的<script type="text/javascript" src="../jquery/jquery-1.4.4.min.js"></script><script type="text/javascript" src="../xheditor-1.1.12-zh-cn.min.js"></script><script type="text/javascript">$(pageInit);function pageInit(){$.extend(xheditor.settings,{shortcuts:{'ctrl+enter':submitForm}});$('#elm1').xheditor({skin:'default'});$('#elm2').xheditor({skin:'o2007blue'});$('#elm3').xheditor({skin:'o2007silver'});$('#elm4').xheditor({skin:'vista'});$('#elm5').xheditor({skin:'nostyle'});}function submitForm(){$('#frmDemo').submit();}</script>1,默认皮肤:<br/><textarea id="elm1" name="elm1" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为:</textarea>2,Office 2007 蓝色:<br /><textarea id="elm2" name="elm2" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为:</textarea>3,Office 2007 银白色:<br /><textarea id="elm3" name="elm3" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为</textarea>4,Vista:<br /><textarea id="elm4" name="elm4" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为</textarea>5,NoStyle:<br /><textarea id="elm5" name="elm5" rows="8" cols="80" style="width: 40%">当前实例调用的Javascript源代码为</textarea>六.Tinymce使用:tinyMCE.init({mode : "textareas",theme : "simple" //模式skin : "o2k7",//word});默认模式<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script> <script type="text/javascript">tinyMCE.init({mode : "textareas",theme : "simple"});</script><textarea id="elm1" name="elm1" rows="8" cols="80" style="width: 40%">This is some example text that you can edit inside the <strong>TinyMCE editor</textarea>皮肤设置<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">tinyMCE.init({// General optionsmode : "exact",elements : "elm1",theme : "advanced",plugins :"autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreple,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosa",// Theme optionstheme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|, justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist, numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,prevw, |,forecolor,backcolor", theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|, charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullsc",theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|, styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,no,template,pagebreak,restoredraft",theme_advanced_toolbar_location : "top",//工具栏位置theme_advanced_toolbar_align : "left",//工具栏对齐方式theme_advanced_statusbar_location : "bottom",//状态显示栏的位置theme_advanced_resizing : true,// Example content CSS (should be your site CSS)content_css : "css/content.css",// Drop lists for link/image/media/template dialogstemplate_external_list_url : "lists/template_list.js",external_link_list_url : "lists/link_list.js",external_image_list_url : "lists/image_list.js",media_external_list_url : "lists/media_list.js",// Replace values for the template plugintemplate_replace_values : {username : "Some User",staffid : "991234"}});</scritp><textarea id="elm1" name="elm1" rows="8" cols="80" style="width: 40%"><script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">// O2k7 skintinyMCE.init({// General optionsmode : "exact",elements : "elm2",theme : "advanced",skin : "o2k7",plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink, emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreg, xhtmlxtras,template,inlinepopups,autosave",// Theme optionstheme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|, justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime, preview,|,forecolor,backcolor", theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|, charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullsc",theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|, styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",theme_advanced_toolbar_location : "top",theme_advanced_toolbar_align : "left",theme_advanced_statusbar_location : "bottom",theme_advanced_resizing : true,// Example content CSS (should be your site CSS)content_css : "css/content.css",// Drop lists for link/image/media/template dialogstemplate_external_list_url : "lists/template_list.js",external_link_list_url : "lists/link_list.js",external_image_list_url : "lists/image_list.js",media_external_list_url : "lists/media_list.js",// Replace values for the template plugintemplate_replace_values : {username : "Some User",staffid : "991234"}});</script><textarea id="elm2" name="elm2" rows="8" cols="80" style="width: 40%">This is some example text that you can edit inside the <strong>TinyMCE editor;.</textarea><script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">// O2k7 skin (silver)tinyMCE.init({// General optionsmode : "exact",elements : "elm3",theme : "advanced",skin : "o2k7",skin_variant : "silver",plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",// Theme optionstheme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect, formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|, ltr,rtl,|,fullscreen",theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|, styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchas,nonbreaking,template,pagebreak,restoredraft",theme_advanced_toolbar_location : "top",theme_advanced_toolbar_align : "left",theme_advanced_statusbar_location : "bottom",theme_advanced_resizing : true,// Example content CSS (should be your site CSS)content_css : "css/content.css",// Drop lists for link/image/media/template dialogstemplate_external_list_url : "lists/template_list.js",external_link_list_url : "lists/link_list.js",external_image_list_url : "lists/image_list.js",media_external_list_url : "lists/media_list.js",// Replace values for the template plugintemplate_replace_values : {username : "Some User",staffid : "991234"}});</script><textarea id="elm3" name="elm3" rows="8" cols="80" style="width: 40%">This is some example text that you can edit inside the <strong>TinyMCE</textarea><script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script><script type="text/javascript">// O2k7 skin (silver)tinyMCE.init({// General optionsmode : "exact",elements : "elm4",theme : "advanced",skin : "o2k7",skin_variant : "black",plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave",// Theme optionstheme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect, formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|, ltr,rtl,|,fullscreen",theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",theme_advanced_toolbar_location : "top",theme_advanced_toolbar_align : "left",theme_advanced_statusbar_location : "bottom",theme_advanced_resizing : true,// Example content CSS (should be your site CSS)content_css : "css/content.css",// Drop lists for link/image/media/template dialogstemplate_external_list_url : "lists/template_list.js",external_link_list_url : "lists/link_list.js",external_image_list_url : "lists/image_list.js",media_external_list_url : "lists/media_list.js",// Replace values for the template plugintemplate_replace_values : {username : "Some User",staffid : "991234"}});</script><textarea id="elm4" name="elm4" rows="8" cols="80" style="width: 40%">This is some example text that you can edit inside the ;</textarea>七.ueditor11.避免了重复加载源码高亮的核心代码2.修复了word粘贴table过滤出错问题3.修复插入地图会出现style="undefined"的问题4.优化了list,多个相邻的属性一直的list会合并5.可以在列表中的一行里产生多行的效果(通过回车再回退操作),类似office的效果6.添加自定义样式功能7.修了在chrome下右键删除td里的图片会把整个td删除的问题8.改进了不同的页面调用一个editor,URL问题9.增加了颜色选择器的颜色10.改进了提供的后台程序的安全性11.代码高亮支持折行12.改进了源码编辑模式下的性能(ie下),并且支持自动换行13.修改了在destroy之后会在ie下报错的问题14.给初始化容器name值,那么在后台取值的键值就是name给定的值,方便多实例在一个form下提交15.支持插入script/style这样的标签16.修复了列表里插入浮动图片,图片不占位问题17.源码模式下,去掉了pre中的18.完善了_example下的demo例子19.base64的图片被过滤掉了使用方法:var editorOption = {//这里可以选择自己需要的工具按钮名称,此处仅选择如下五个toolbars:[['FullScreen', 'Source', 'Undo', 'Redo','Bold']],//focus时自动清空初始化时的内容autoClearinitialContent:true,//关闭字数统计wordCount:false,//关闭elementPathelementPathEnabled:false//更多其他参数,请参考editor_config.js中的配置项};var editor_a = new baidu.editor.ui.Editor(editorOption);editor_a.render( ' textarea的Id ' );例:简单应用<script type="text/javascript">var UEDITOR_HOME_URL = "../"; //指向dialogs,themes等目录的父目录,推荐使用/开头的绝对路径</script><script type="text/javascript" charset="utf-8" src="../editor_config.js"></script><!--使用版--><!--<script type="text/javascript" charset="utf-8" src="../editor_all.js"></script>--><!--开发版--><script type="text/javascript" charset="utf-8" src="editor_api.js">paths = ['editor.js','core/browser.js','core/utils.js','core/EventBase.js','core/dom/dom.js','core/dom/dtd.js','core/dom/domUtils.js','core/dom/Range.js','core/dom/Selection.js','core/Editor.js','commands/inserthtml.js','commands/image.js','commands/justify.js','commands/font.js','commands/link.js','commands/map.js','commands/iframe.js','commands/removeformat.js','commands/blockquote.js','commands/indent.js','commands/print.js','commands/preview.js','commands/spechars.js','commands/emotion.js','commands/selectall.js','commands/paragraph.js','commands/directionality.js','commands/horizontal.js','commands/time.js','commands/rowspacing.js','commands/lineheight.js','commands/cleardoc.js','commands/anchor.js','commands/delete.js','commands/wordcount.js','plugins/pagebreak/pagebreak.js','plugins/checkimage/checkimage.js','plugins/undo/undo.js','plugins/paste/paste.js', //粘贴时候的提示依赖了UI'plugins/list/list.js','plugins/source/source.js','plugins/shortcutkeys/shortcutkeys.js','plugins/enterkey/enterkey.js','plugins/keystrokes/keystrokes.js','plugins/fiximgclick/fiximgclick.js','plugins/autolink/autolink.js','plugins/autoheight/autoheight.js','plugins/autofloat/autofloat.js', //依赖UEditor UI,在IE6中,会覆盖掉body的背景图属性'plugins/highlight/highlight.js','plugins/serialize/serialize.js','plugins/video/video.js','plugins/table/table.js','plugins/contextmenu/contextmenu.js','plugins/pagebreak/pagebreak.js','plugins/basestyle/basestyle.js','plugins/elementpath/elementpath.js','plugins/formatmatch/formatmatch.js','plugins/searchreplace/searchreplace.js','plugins/customstyle/customstyle.js','ui/ui.js','ui/uiutils.js',。
PDF编辑器高级版APP的程序设计及代码示例
PDF编辑器高级版APP的程序设计及代码示例PDF编辑器是一种常用的工具,它可以方便地对PDF文件进行编辑、添加注释、合并、拆分和转换等操作。
为了更好地满足用户的需求,开发一款功能强大的PDF编辑器高级版APP是一个很有意义的项目。
本文将介绍一种实现PDF编辑器高级版APP的程序设计及代码示例。
一、功能需求分析在设计PDF编辑器高级版APP之前,我们需要明确其功能需求。
根据市场调研和用户反馈,我们将确定以下主要功能:1. PDF文件编辑:允许用户对PDF文件进行文本、图片和表格的编辑,包括添加、删除、修改等操作。
2. 注释和批注:提供文本框、标注、画笔和印章等工具,使用户可以添加注释和批注到PDF文件中。
3. 文件转换:支持将PDF文件转换为其他格式,如Word、Excel和图片等,以便用户在不同场景下使用。
4. 文件合并和拆分:允许用户将多个PDF文件合并为一个,或将一个PDF文件拆分为多个独立的文件。
5. 文件加密和解密:提供密码保护功能,确保用户的PDF文件安全可靠。
6. 图片提取和插入:允许用户从PDF文件中提取图片,也可以将图片插入到PDF文件中。
7. 文档全文搜索:支持对PDF文件进行全文搜索,方便用户快速定位所需内容。
二、程序设计为了实现上述功能需求,我们可以采用以下程序设计方案:1. 前端设计:采用现代化的UI设计,使用户操作界面友好、直观。
可以使用Flutter框架进行跨平台开发,支持iOS和Android等主流操作系统。
2. 后端设计:建议采用Java语言,并且使用MVC(Model-View-Controller)架构模式进行开发,以保证代码的清晰和可维护性。
3. 数据库设计:为了存储用户的PDF文件和相关信息,可以选择使用关系型数据库,如MySQL或SQLite。
4. API设计:针对每个功能需求,设计对应的API接口,实现前后端的数据交互和业务逻辑处理。
5. 异常处理:在程序设计中,应该充分考虑异常情况的处理,如文件格式错误、用户权限不足等,保证程序的稳定性和安全性。
简单文本编辑器-设计报告
简易文本编辑器●需求分析该简易文本编辑器具有图形菜单界面,包括打开,查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除,显示文本信息,保存文本信息等等功能并可正确存盘、取盘,正确显示总行数。
●概要设计为实现数据的有序存储,该编辑器用字符数组来存储输入的信息。
数组是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。
其特点为:在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存取表中的元素。
在编辑器的主界面中应有如下提示信息(包括功能的完成的基本思想):1) 清空以前的文本信息:将用数组存的数据内容全部置为0;2) 显示当前文本信息:遍历用数组存入的信息,并输入到外部显示器上;3) 编辑信息:通过对数组的直接输入操作得到字符数组,这要求数组有绝对大的空间,而且每一次的输入完毕必须有相应的数组下表地址的记录,应此建立一个全局变量ntext记录;4) 查找信息:通过循环在数组中找到所需要的信息;5) 替换文本信息:首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息;6) 插入文本信息:首先在数组中查找要插入点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;7) 移动文本信息:首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是进行行移动,否则提示未找到要移动的信息;8) 删除文本信息:首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;9) 退出编辑器:通过确认是否保存安全退出。
10)程序中主要的函数为:子串查找在朱串的位置,程序如下:int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配){int i1=l,j=0;while (i1<ntext&&j<i2){if (text[i1]==t[j]) //继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else //主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1; //主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if (j>=i2){return(i1-i2);} //返回匹配的第一个字符的下标elsereturn(-1); //模式匹配不成功}详细设计1.包括的头文件#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <time.h>#include <string.h>#define MAX 10000#define _CRT_SECURE_NO_DEPRECATE //在vs中取消warning的警告2.相关函数原型void menu();void shuru(char text[]);void bc(char text[]);void dakai(char text[]);void dayin(char text[]);void chazhao(char text[],int l);void tihan(char text[],int l);int strindex(char text[],char t[],int i2,int l);void shanchu(char p[],int l);void cs(char text[]);void charu(char text[],int l);void tuichu(int status);char text[MAX]=""; //文本编辑域char name[20]=""; //文件保存的位置int status=0; //显示是否保存过的状态int ntext; //文本编辑的位置3./*打开文件模块*/void dakai(char text[]){system("cls");FILE *fp;char pd,ch;char name[30];int i=0;printf("输入A:确定打开文件(未保存的数据将会丢失) M:返回主菜单");fflush(stdin);pd=getchar();if (pd=='A'||pd=='a'){printf("请输入要打开文件名字(例如c:\\a.txt)");scanf("%s",name);while ((fp=fopen(name,"r"))==NULL){printf("\n打开文件失败,请重新输入要打开的文件名:");scanf("%s",name);}cs(text);while(!feof(fp)){ch=fgetc(fp);text[i]=ch;i++;}text[i]='\0';ntext=i;fclose(fp);printf("\n文件读取成功\n文件内容为\n");dayin(text);}if (pd=='M'||pd=='m')menu();}4./*保存模块*/void bc(char text[]){system("cls");FILE *fp;char pd;char tmp;int i;printf("\n输入【A】保存;任意键返回主菜单不保存\n");fflush(stdin);pd=getchar();if (!(pd=='A'||pd=='a')){menu();}else{if(name[20]==NULL){printf("\n请输入保存文件名(例如: c:\\a.txt):");scanf("%s",name);}while ((fp=fopen(name,"w+"))==NULL){printf("文件不存在,请重新输入文件名:");scanf("%s",name);}printf("\nA:确定;B:取消:");while(scanf("%c",&tmp)!=EOF){if (tmp=='A' || tmp=='a'){for(i=0;i<ntext;i++)fprintf(fp,"%c",text[i]);fclose(fp);status=1;printf("\n文件保存成功\n");break;}if (tmp=='B' || tmp=='b'){break;}}}}5./*初始化模块*/void cs(char text[]){int i;for (i=0;i<ntext;i++){text[i]='\0';}ntext=0;status=0;}int strindex(char text[],char t[],int i2,int l) //查找要操作的数据的位置(模式匹配) {int i1=l,j=0;while (i1<ntext&&j<i2){if (text[i1]==t[j]) //继续匹配下一个字符{j++;i1++;//主串和子串依次匹配下一个字符}else //主串、子串指针回溯重新开始下一次匹配{i1=i1-j+1; //主串从下一个位置开始匹配j=0;//子串从头开始匹配}}if (j>=i2){return(i1-i2);} //返回匹配的第一个字符的下标elsereturn(-1); //模式匹配不成功}6./*菜单显示模块*/void menu(){system("cls");time_t timep;time (&timep);printf("%s",ctime(&timep));printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcom to use our TXT edition system!\n");printf("\n\n\t\t\t 欢迎您使用文本编辑器软件!\n");printf("\n\n\n\n\n\n\n\n\npress Enter to continue...\n");getchar();loop:system("cls");printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");printf("\t\t\t\t----0.清空内容--\n");printf("\t\t\t\t----1.打开文件--\n");if (ntext==0){printf("\t\t\t\t----2.输入内容--\n");}else {printf("\t\t\t\t----2.继续输入--\n");}printf("\t\t\t\t----3.查找------\n");printf("\t\t\t\t----4.插入------\n");printf("\t\t\t\t----5.删除------\n");printf("\t\t\t\t----6.替换------\n");printf("\t\t\t\t----7.显示内容--\n");printf("\t\t\t\t----8.保存------\n");printf("\t\t\t\t----9.退出------\n");printf("\n\t\t*********************选项************************\n");printf("\n\t\t\t\t输入选项0-9:");char n;fflush(stdin);n=getchar();if(n>='0'&&n<='9'){switch (n){case '0': cs(text);break;case '1': dakai(text);break;case '2': shuru(text);break;case '3': chazhao(text,0);break;case '4': charu(text,1);break;case '5': shanchu(text,0);break;case '6': tihan(text,0);break;case '7': dayin(text);break;case '8': bc(text);break;case '9': tuichu(status);default : break;}}else{printf("\n输入有误,请重新输入:");fflush(stdin);n=getchar();}system("pause");goto loop;}7./*查找*/void chazhao(char text[],int l){system("cls");int i,t,a=-1;char pattern[20],bd,pd;printf("原文为:\n");dayin(text);printf("请输入您要查找的内容");scanf("%s",pattern);printf("您查找的内容是:%s\n",pattern);t=strlen(pattern);loop:a=strindex(text,pattern,t,l);if (a!=-1){l=a+t;}int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (text[i]=='\n'){hs++;ls=0;}}if (a==-1){printf("查找到结尾没有找到\n输入【R】将重头查找;任意键返回主菜单");l=0;fflush(stdin);pd=getchar();}else{printf("已经找到在第%d行第%d列,输入【R】继续查找下一处;任意键返回主菜单",hs,ls);fflush(stdin);bd=getchar();if (bd=='R'||bd=='r')goto loop;}if (pd=='R'||pd=='r'){l=0;chazhao(text,l);}}8./*显示模块*/void dayin(char text[]){system("cls");printf("现在文本的内容为:\n");printf("%s\n",text);int hs=1,i;for (i=0;i<ntext;i++){if (text[i]=='\n'){hs++;}}printf("\n文本共有%d行\n",hs);}9./*输入模块*/void shuru(char text[]){system("cls");printf("请输入内容(输入@结束输入并返回主菜单):\n");printf("%s",text);char c;int i=ntext,j=ntext;fflush(stdin);while ((c=getchar())!='@'){text[i]=c;i++;ntext=i;continue;}int cout=0,zf=0,h=1,hs=1,zfs=0;for(;cout<ntext;cout++){zf++;if(text[cout]=='\n'){h++;zf--;}if(text[cout]==' ')zf--;}for(cout=j;cout<ntext;cout++){zfs++;if(text[cout]=='\n'){hs++;zfs--;}if(text[cout]==' ')zfs--;}printf("统计:文本一共有%d个字符,%d行,本次输入了%d个字符,%d行\n",zf,h,zfs,hs);}10./*删除*/void shanchu(char p[],int l){int i,a=-1,t2=0;char x[20],px,pd,pdx,c;system("cls");printf("%s",p);printf("\n输入【A】执行查找删除内容;任意键返回主菜单:");fflush(stdin);px=getchar();if (px=='a'||px=='A'){printf("\n输入您要删除的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}loop:a=strindex(p,x,t2,l);int hs=1,ls=0;for (i=0;i<=a;i++){ls++;if (p[i]=='\n'){hs++; ls=0;}}if (a==-1){printf("已查找结束,您要删除的内容不存在\n输入【R】重新输入要删除的内容;其他键将返回主菜单:");l=0;fflush(stdin);pdx=getchar();}else{printf("你要删除的内容在第%d行第%d列\n 输入【A】确定删除;输入【B】寻找下个词;其他键将返回主菜单:",hs,ls);fflush(stdin);pd=getchar();l=t2+a;if (pd=='a'||pd=='A'){for(i=a;i<ntext;i++){p[i]=p[i+t2];}ntext=ntext-t2;printf("删除成功,删除后的内容为:\n%s\n",text);}else if (pd=='b'||pd=='B')goto loop;}if(pdx=='r'||pdx=='R')shanchu(text,l);}}11./*插入*/void charu(char text[],int l) //向文本中插入内容{system("cls");int i=0,t=0,t2=0,a=-1,b;char cr[20]="",pd,x[500],c,d;printf("\n当前文本信息为:\n");printf("%s",text);printf("\n输入您要在哪个内容前插入,以@结束:");fflush(stdin);while ((c=getchar())!='@') //用一个数组接收要插入在哪个内容之前{if (c=='@'){break;}else{cr[t]=c;t++;continue;}}loop:a=strindex(text,cr,t,l); //查找并返回要插入的位置点int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (text[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到插入点,输入【R】查找其他;按其他键返回菜单:\n");l=0;fflush(stdin);d=getchar();fflush(stdin);}else{printf("\n您要插入的位置是第%d行,第%d列之前\n【A】.不是此位置向后继续找插入点\n【B】.在此位置插入\n按其他键返回菜单\n请选择:",hs,ls+1);fflush(stdin);pd=getchar();if (pd=='a'||pd=='A'){l=a+t;goto loop;}else if (pd=='b'||pd=='B'){printf("\n\n输入您要插入的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@'){if (c=='@'){break;}else{x[t2]=c;t2++;continue;}}for (i=ntext;i>=a;i--){text[i+t2]=text[i];}for (i=0;i<t2;i++){text[i+a]=x[i];}ntext=ntext+t2;printf("\n当前文本信息为:\n");for (i=0;i<=ntext-1;i++)printf("%c",text[i]);printf("\n文本插入成功\n");fflush(stdin);getchar();}}if (d=='r'||d=='R'){l=0;charu(text,l);}status=0;}12./*替换*/void tihan(char p[],int l) //内容替换{int t=0,t1=0,i,a,b;char c,th[20],d,d1,bth[20];int i2;system("cls");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);printf("\n输入要被替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t指替换前内容的长度{if (c=='@'){break;}else{bth[t]=c;t++;continue;}}loop:a=strindex(p,bth,t,l); //查找要被替换的内容的位置int hs=1,ls=0;for (b=0;b<a;b++){ls++;if (p[b]=='\n'){hs++;ls=0;}}if (a==-1){printf("\n查找到结尾没有找到要被替换的内容\n输入【R】查找其他内容,按其他键返回主菜单键\n");l=0;d=getchar();fflush(stdin);}else{printf("\n\n已经找到要查找的数据在第%d行第%d列\n输入【A】继续向后查找相同内容\n输入其他键将进行替换操作\n请选择:",hs,ls+1);fflush(stdin);l=t+a;char pd;pd=getchar();if (pd!='a'&&pd!='A'){printf("\n是否要替换该内容?\nA:替换给内容;其他键返回主菜单\n请选择:");fflush(stdin);d1=getchar();if (d1=='a'||d1=='A'){printf("\n输入要替换的内容,以@结束:");fflush(stdin);while ((c=getchar())!='@') //t1指替换后的内容长度{if (c=='@'){break;}else{th[t1]=c;t1++;continue;}}if (t==t1) //将要被替换的内容和替换后的内容进行长度比较{for (i=0;i<t1;i++)p[i+a]=th[i];}else{if (t>t1){for (i=0;i<t1;i++){p[i+a]=th[i];}for (i=a+t1;i<ntext;i++){p[i]=p[i+t-t1];}ntext=ntext+t1-t;}else{for (i=ntext;i>=a;i--){p[i+t1-t]=p[i];}for (i=0;i<t1;i++){p[i+a]=th[i];}ntext=ntext+t1-t;}}printf("替换成功");printf("\n当前文本信息为:\n");for (i2=0;i2<=ntext-1;i2++)printf("%c",p[i2]);getchar();status=0;}}elsegoto loop;}if(d=='r'||d=='R')tihan(text,l);}13./*退出*/void tuichu(int status){char pd;if(status)exit(0);elseprintf("还未保存文件,确定退出?(Q.直接退出;Y.保存后退出");fflush(stdin);pd=getchar();if(!(pd=='Q'||pd=='q'))bc(text);exit(0);}int main(){menu();return (0);}调试分析1.界面设计2.界面设计2主界面的设计如图,比较单调。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计报告(2014/2015学年第一学期)题目:文档编辑器的设计与实现专业组长学号姓名组员学号姓名指导教师指导单位日期文档编辑器的设计与实现一课题内容与要求文档编辑器系统是对一个文本内容进行各种常规操作,例如:插入、删除、查找、替换等功能。
通过此课题,熟练掌握文本文件的操作及用字符数组来实现字符串操作的功能。
基本要求:(1)首先文件标准化处理:如果句子有前导空格和后导空格,则删除这些空格,单词与单词之间只保留一个空格。
(2)统计功能:可方便地统计出文档中所有出现次数最多和最少的字符串。
(3)查找与替换功能:能够查找任意一个字符串在文档中出现的次数,并可以选择全部或有选择地将其替换为另一个字符串。
(4)显示功能:编辑完成后可以显示编辑后的文档。
(5)抽取功能:根据要求将文件中的某一类字符抽取,并存入另外的文件,如抽取所有的数字、抽取所有的字母等。
(1)提供可操作的主菜单:输出个菜单,用于显示若干个可选的功能选项。
根据输入的选项来运行不同的功能,运行不同的函数。
(2)进行文本信息的载入:选择输入方式,输入文本内容,提供可操作文本。
(3)统计数据功能:输出第二子菜单,用于显示若干个可选的功能选项。
根据输入的选项来运行不同的功能,运行不同的函数。
(4)编辑数据功能:输出个菜单,用于显示若干个可选的功能选项。
根据输入的选项来运行查找、删除、插入、显示当前文本等不同的功能,运行不同的函数。
(5)退出程序:退出当前程序。
三概要设计本程序共有11个函数1、HeadWord() 标题函数,即一个输出标题,永远出现在程序的最顶端。
2、CreatWord() 文本输入函数,实现对文本的内容进行输入;3、PrintWord() 当前文本内容输出函数,实现文本内容输出;4、CountWord() 文章内容统计函数,文本内容进行统计,包括对文本内容中的大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;5、SearchWord() 文章内容查找函数,实现查找部分;6、DeleteWord() 文章内容删除函数,实现删除部分;7、InsertWord() 文章内容插入函数,实现插入部分;8、Bmenu() 第二子菜单函数,实现子菜单功能;9、AboutWord() 显示作者信息的函数;10、menu() 主菜单函数,实现可操作菜单;11、main()主函数。
(1)查找功能:图二:查找功能图图三:插入功能图图四:删除功能图图五:统计功能图四源程序代码#include<stdio.h>#include<malloc.h>#include<string>#include<iostream>#include<stdlib.h>#include<conio.h>#include<fstream>using namespace std;#define Link_Size 100int NUM,C,N;typedef struct list{char data[80];int length;struct list *next;struct list *pre;int row;} LinkList;LinkList *head;void HeadWord(){// system("cls");cout<<"\t\t****************************************************\n"; cout<<"\t\t**** 欢迎使用简单的文本编辑器****\n"; cout<<"\t\t****************************************************\n"; }LinkList *LoadWord(){LinkList *temp;char ch;int i,j;head->next=(LinkList *)malloc(sizeof(LinkList));head->pre=NULL;temp=head->next;temp->pre=NULL;temp->length=0;for(i=0;i<80;i++)temp->data[i]='\0';cout<<"继续上次输入(输入#号结束):\n";for(j=0;j<Link_Size;j++){for(i=0;i<80;i++){ch=getchar();temp->data[i]=ch;temp->length++;if(ch=='#'){NUM=j;break;}}if(ch=='#'){temp->length=i;temp->next=NULL;break;}temp->next=(LinkList *)malloc(sizeof(LinkList)) ;temp->next->pre=temp;temp=temp->next;for(i=0;i<80;i++)temp->data[i]='\0';}ofstream ocout;ocout.open("f://text.txt",ios::app);ocout<<temp->data;ocout.close();LinkList *temp;char ch; temp->row=NUM+1;system("cls");return temp;}LinkList *CreatWord(){int i,j;head->next=(LinkList *)malloc(sizeof(LinkList));head->pre=NULL;temp=head->next;temp->pre=NULL;temp->length=0;for(i=0;i<80;i++)temp->data[i]='\0';cout<<"开始创建文本,请输入文章(输入#号结束):\n"; for(j=0;j<Link_Size;j++){for(i=0;i<80;i++){ch=getchar();temp->data[i]=ch;temp->length++;if(ch=='#'){NUM=j;break;}}if(ch=='#'){temp->length=i;temp->next=NULL;break;}temp->next=(LinkList *)malloc(sizeof(LinkList)) ;temp->next->pre=temp;temp=temp->next;for(i=0;i<80;i++)temp->data[i]='\0';}ofstream ocout;ocout.open("f://text.txt");ocout<<temp->data;ocout.close();temp->row=NUM+1;system("cls");return temp;}void PrintWord(){ifstream icin;icin.open("f://text.txt");char tt[100]={0};icin.getline(tt,100,0);cout<<tt<<endl;}void CountWord(){LinkList *temp;char ch;int i,j,t;int WORD=0,word=0,space=0,num=0,punct=0,sum=0;temp=head->next;for(j=0;j<=NUM;j++){for(i=0;(i<80)&&(temp->data[i])!='#';i++){ch=temp->data[i];if((ch>='A')&&(ch<='Z'))WORD++;else if((ch>='a')&&(ch<='z'))word++;else if((ch>='0')&&(ch<='9'))num++;else if(ch==' ')space++;else if(ch==33||ch==34||ch==39||ch==44||ch==46||ch==58||ch==59||ch==63){punct++;}}sum=WORD+word+num;}while(1){cout<<"\n";HeadWord();cout<<"\t\t****************************************************\n"; cout<<"\t\t**** 文章内容统计菜单****\n"; cout<<"\t\t****************************************************\n"; cout<<"\t\t**** 1、文章中大写字母的个数****\n"; cout<<"\t\t**** 2、文章中小写字母的个数****\n"; cout<<"\t\t**** 3、文章中数字的个数****\n"; cout<<"\t\t**** 4、文章中标点符号的个数****\n"; cout<<"\t\t**** 5、文章中空格的个数****\n"; cout<<"\t\t**** 6、文章中所有字数****\n"; cout<<"\t\t**** 7、退出返回主菜单****\n"; cout<<"\t\t**** 8、直接退出本系统****\n"; cout<<"\t\t****************************************************\n"; cout<<"\t\t请选择需统计项目:";cin>>t;switch(t){case 1:system("cls");HeadWord();cout<<"文章中大写字母的个数:"<<WORD<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 2:system("cls");HeadWord();cout<<"文章中小写字母的个数:"<<word<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 3:system("cls");HeadWord();cout<<"文章中数字的个数:"<<num<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 4:system("cls");HeadWord();cout<<"文章中标点符号的个数:"<<punct<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 5:system("cls");HeadWord();cout<<"文章中空格的个数:"<<space<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 6:system("cls");HeadWord();cout<<"文章中所有字数:"<<sum<<endl;cout<<"按回车键继续·····";getchar();getchar();system("cls");break;}if(t==7){system("cls"); break;}if(t==8) exit(0);}}void SearchWord(char *str1,LinkList* temp){char Data[20] ;int i,j,k=0,sum=0;int l=1;temp=head->next;strcpy(Data,str1);for(i=0;i<=NUM;i++){for(j=0;j<80;j++){if((temp->data[j])==Data[k]) k++;else if(Data[k]!='\0'){j=j-k;k=0;}if(Data[k]=='\0'){sum++;j=j-k+1;cout<<"\t\t\t第"<<l<<"次出现在第"<<i+1<<"行第"<<j+1<<"列\n";k=0;continue;}}temp=temp->next;}cout<<"\t\t\t字符串总共出现次数为:"<<sum<<endl;C=sum;N=i*80+j;}void DeleteWord(char *str2){ char Data[20];LinkList *temp,*term;int i,j,k,m,y,num;strcpy(Data,str2);for(y=0;y<C;y++){num=80;k=0,m=0;temp=head;for(i=0;i<=NUM;i++){term=temp;temp=temp->next;for(j=0;j<80;j++){if((temp->data[j])==Data[k]) k++;else if(Data[k]!='\0') {j=j-k;k=0;}if(Data[k]=='\0'){num=j;break;}}if(num<80) break;}for(;i<=NUM;i++){for(;j<80;j++)if(j+1<k){term->data[80-k+num]=temp->data[j+1];}elsetemp->data[j-k+1]=temp->data[j+1];}term=temp;temp=temp->next;j=0;}}}LinkList * InsertWord(LinkList *temp){char Data[20];int h,l;cout<<"\t\t请输入要插入的字符或字符串:"<<endl;getchar();gets(Data);printf("\n\t\t当前文章内容为:");PrintWord();printf("\n\t\t请输入要插入的行:");scanf("%d",&h);printf("\n\t\t请输入要插入的列:");scanf("%d",&l);int i=(h-1)*80+l;LinkList *a;int n=strlen(Data);int m ;int insertRow=i/80+1;int row=temp->row;int j;if(insertRow==row){for(m=temp->length-1;m>=(i%80)&&n>0;m--)temp->data[m+n]=temp->data[m];for(m=(i%80),j=0;m<n+(i%80);m++,j++){temp->data[m]=Data[j];}}else{int r=0;for(int p=insertRow; p<row;p++){if(p == insertRow)r=0;elser=n;for(m=temp->length-1-r;m>=0&&n>0;m--)temp->data[m+n]=temp->data[m];a=temp;temp = temp->pre;temp->length = 80;for(m = temp->length-n,j=0;m<temp->length;m++,j++)a->data[j]=temp->data[m];}for(m=temp->length-n-1;m>=(i%80);m--)temp->data[m+n]=temp->data[m];for(m=(i%80),j=0;m<(i%80)+n;m++,j++)temp->data[m] =Data[j];}return temp;}void Bmenu(LinkList *temp){char str1[20];char str2[20];int a;do{HeadWord();cout<<"\n\t\t****************************************************\n"; cout<<"\t\t**** 文章内容处理菜单****\n";cout<<"\t\t****************************************************\n"; cout<<"\t\t**** 1、查找文章中的字符或者字符串****\n"; cout<<"\t\t**** 2、删除文章中的字符或者字符串****\n"; cout<<"\t\t**** 3、向文章中插入字符或者字符串****\n"; cout<<"\t\t**** 4、显示当前文章内容****\n"; cout<<"\t\t**** 5、返回主菜单****\n"; cout<<"\t\t**** 6、直接退出系统****\n"; cout<<"\t\t****************************************************\n"; cout<<"\t\t 请选择:";cin>>a;switch(a){case 1:system("cls");HeadWord();cout<<"\t\t\t请输入您需要查找的字符或字符串:";getchar();gets(str1);SearchWord(str1,temp);cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 2:system("cls");HeadWord();cout<<"\t\t\t请输入您需要删除的字符或字符串:";getchar();gets(str2);SearchWord(str2,temp);DeleteWord(str2);cout<<"\t\t\t删除%s 后的文章为:"<<str2<<endl;PrintWord();cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 3:system("cls");HeadWord();InsertWord(temp);cout<<"\t\t\t插入字符或字符串后文章为:";PrintWord();cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 4:system("cls");HeadWord();PrintWord();cout<<"按回车键继续·····";getchar();getchar();system("cls");break;}if(a==5){system("cls");break;}if(a==6) exit(0);}while(1);}void AboutWord(){cout<<"\n\n\t\t 关于\n";cout<<"\t\t****************************************************\n";cout<<"\t\t** 谢谢使用**\n";cout<<"\t\t****************************************************\n";cout<<"\n";}void menu(LinkList *temp){int t;do{HeadWord();printf("\n");cout<<"\t\t****************************************************\n";cout<<"\t\t**** 主菜单****\n";cout<<"\t\t****************************************************\n";cout<<"\t\t**** 1、文章内容输入****\n";cout<<"\t\t**** 2、显示当前文章内容****\n";cout<<"\t\t**** 3、进入文章内容统计菜单****\n";cout<<"\t\t**** 4、进入文章内容处理菜单****\n";cout<<"\t\t**** 5、关于****\n";cout<<"\t\t**** 6、退出文本编辑器****\n";cout<<"\t\t****************************************************\n";cout<<"\t\t**** 注:第一次运行本程序时请选择1号功能****\n";cout<<"\t\t****************************************************\n";cout<<" \t\t 请选择:";cin>>t;if((t>6)&&(t<1)){cout<<"对不起,无此功能,请输入正确的功能序号!\n";}elseswitch(t){case 1:system("cls");cout<<"\t\t************继续上次输入还是重新输入?*************"<<endl;cout<<"\t\t*******1:继续输入***********2:重新输入*********\n";int s;cin>>s;switch(s){case 1:HeadWord();temp=LoadWord();break;case 2:HeadWord();temp=CreatWord();break;}case 2:system("cls");PrintWord();printf("\n");cout<<"按回车键继续·····";getchar();getchar();system("cls");break;case 3:system("cls");CountWord();break;case 4:system("cls");Bmenu(temp);break;case 5:system("cls");HeadWord();AboutWord();cout<<"按回车键继续·····";getchar();getchar();system("cls");break;}if(t==6) break;}while(1);}int main(){head=(LinkList *)malloc(sizeof(LinkList));LinkList *temp;menu(temp);return 0;}五测试结果及数据分析运行程序后,主菜单如图所示:图2 主菜单欲输入文本,输入1,按Enter键,出现下图:图3 选择输入方式:1:继续输入;2:重新输入输入2,按Enter键,出现下图:图4 创建文本输入文章内容,以#号键结束,按Enter键,出现下图:图5 主菜单输入3,按Enter键,进入文章内容统计菜单,如下图:图6 文章内容统计菜单输入1,按Enter键,出现下图:图7 输出文章中大写字母个数按Enter键继续,输入2出现下图:图8输出文章中小写字母个数按Enter键继续,出现下图:图9 输入3,按Enter键继续,出现下图:图10 输出文章中数字个数按Enter键继续,出现下图:图11 输入4,按Enter键继续,出现下图:图12 输出文章中标点符号的个数按Enter键继续,出现下图:图13 输入5,按Enter键继续,出现下图:图14 输出文章中空格个数按Enter键继续,输入6,出现下图:图15 输出文章中所有字数按Enter键继续,出现下图:图16主菜单,输入4按Enter键继续,进入文章内容处理菜单,出现下图:图17 输入1,按Enter键继续,出现下图:图18 输入o,按Enter键继续,进行查找,出现下图:图19 输出查找结果按Enter键继续,出现下图:图20 输入2按Enter键继续,出现下图:图21 输入要删除的字符或字符串按Enter键继续,出现下图:图22 输出删除结果按Enter键继续,出现下图:图23 输入要插入的字符或字符串按Enter键继续,出现下图:图24 输入所要插入的位置按Enter键继续,出现下图:图25 输出插入结果六调试过程中问题(1)输入输出问题:由于要将数据存到文件中,输入输出就不同于直接输入输出,c++的输出读到空格便会停止,用getline函数解决;(2)追加输入问题:用ocout.open("f://text.txt")输入会覆盖掉以前的内容,如果不想覆盖以前内容,通过加参数实现,即ocout.open("f://text.txt",ios::app),在两个功能设子菜单供选择;(3)循环结束问题:break与exit(0)功能在某些情况下相似,某些情况下却只能选其一,否则运行就有问题;(4)选择问题:当选择要操作的功能时,若选择数字超过列表范围,就会出现未知错误,需增设超出范围就返回的功能,例如用switch语句可以较容易解决;(5)数组空间问题:若预设空间过小,则输入长文本和进行插入等复杂操作时就会很容易出问题,预设空间过大又会造成空间浪费,如何取舍成为关键;七课程的设计与总结在本次实验中,我们选取的课题是文档编辑器的设计与实现,设计该程序的目的主要是对一个文本内容进行一些常规操作,例如:插入,删除,查找,替换等功能,以此来熟练掌握对文本文件及字符数组的操作来实现字符串操作的功能。