数据结构课程设计小型文本编辑器的设计
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:
文本编。
简易文本编辑器--数据结构课设
摘要当下C++语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C++知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。
简易文本编辑器的问题就是一个例子,传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
关键词:简易文本编辑器,数据结构,顺序表。
目录一、需求分析 (1)1.1问题描述 (1)1.2基本任务 (1)二、概要设计 (1)2.1主界面设计 (1)2.2数据结构设计 (1)三、详细设计 (2)3.1清空内容模块 (2)3.2打开文件模块 (2)3.3输入模块 (2)3.4插入模块 (2)3.5删除模块 (2)3.6替换模块 (2)3.7显示模块 (2)3.8保存模块 (3)3.9系统层次图 (3)四、测试结果 (3)4.1文本编辑器主界面 (3)4.2系统功能 (4)五、调试分析 (7)六、心得体会 (8)七、参考文献 (9)八、程序源代码 (10)一、需求分析1.1问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
1.2基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)打开文本读取已保存的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5)替换不需要的文本信息;(6)显示所有的文本信息;(7)保存所输入、插入、替换过的文本信息;(8)清空文本信息。
二、概要设计2.1主界面设计为了实现简易文本编辑器的各项功能,设计一个含有多个菜单项的主控菜单模块以操作系统的各项功能,进而方便用户使用系统。
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 设计背景随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一系列的操作来修改,因此,文件的修改操作是十分重要的。
小型编译程序的设计与实现.
小型编译程序的设计与实现本实验设计的小型编译程序涉及到编译前端的三个阶段:词法分析、语法分析和语义分析生成中间代码(四元式),编译程序的重点放在中间代码生成阶段。
编译程序的输出结果包括词法分析后的二元式序列、变量名表;语法分析后的状态栈分析过程显示;语义分析生成中间代码后的四元式程序。
整个程序分为三个部分:(1)词法分析部分(2)语法分析、语义分析及四元式生成部分(3)输出显示部分1.词法分析器设计词法分析器的功能是输入源程序,输出单词符号。
我们规定输出的单词符号格式为如下的二元式:(单词种别编码,单词自身的值)由于我们规定的程序语句中涉及单词较少,故在词法分析阶段忽略了单词输入错误的检查。
1.1 单词符号的内部定义及在编译程序中的定义我们对常量、变量、临时变量、保留关键字(if、while、begin、end、else、then、do等)、关系运算符、逻辑运算符、分号、括号等,规定其内部定义如下:符号种别编码说明sy_if 0 保留字 if sy_then 1 保留字 then sy_else 2 保留字 else sy_while 3 保留字 while sy_begin 4 保留字 begin sy_do 5 保留字 do sy_end 6 保留字 end a 7 赋值语句semicolon 8 “ ; ”e 9 布尔表达式Jinghao 10 “ # ”S 11 语句L 12 复合语句Tempsy 15 临时变量EA 18 B and(即布尔表达式中的B∧EO 19 B or(即布尔表达式中的B∨Plus 34 “ + ”Times 36 “ * ”Becomes 38 “ := ” 赋值Op_and 39 “ and ”Op_or 40 “ or ”Op_not 41 “ not ”Rop 42 关系运算符Lparent 48 “ ( ”Rparent 49 “ ”Ident 56 变量Intconst 57 整常量#include "stdio.h" /*如果使用TC的话,需要配置头文件路径*/ #include "string.h"#define ACC -2/************************/#define sy_if 0#define sy_then 1#define sy_else 2#define sy_while 3#define sy_begin 4#define sy_do 5#define sy_end 6#define a 7#define semicolon 8#define e 9#define jinghao 10#define S 11#define L 12#define tempsy 15#define EA 18 /*E and*/#define E0 19 /E or*/#define plus 34#define times 36#define becomes 38#define op_and 39#define op_or 40#define op_not 41#define rop 42#define lparent 48#define rparent 49#define ident 56#define intconst 571.2 变量及数据结构说明编译程序中涉及到的变量及数据结构说明如下:char ch='\0'; /*从字符缓冲区读取当前字符*/int count=0; /*词法分析结果缓冲区计数器*/static char spelling[10]={""}; /*存放识别的字*/static char line[81]={""}; /*一行字符缓冲区,最多80个字符*/char *pline; /*字符缓冲区指针*/static char ntab1[100][10]; /*变量名表,共100项,每项长度10*/struct ntab{int tc; /*真值*/int fc; /*假值*/}ntab2[200]; /*在布尔表达式E中保存有关布尔变量的真、假值*/int label=0; /*指向ntab2的指针*/struct rwords{char sp[10];int sy;}; /*保留字表的结构,用来与输入缓冲区中的单词进行匹配*/ struct rwords reswords[10]={{"if",sy_if},{"do",sy_do},{"else",sy_else},{"while",sy_while},{"then",sy_then},{"begin",sy_begin},{"end",sy_end},{"and",op_and},{"or",op_or},{"not",op_not}}; /*保留字表初始化,大小为10*/struct aa{int sy1; /*存放单词的种别编码*/int pos; /*存放单词自身的值*/}buf[1000], /*词法分析结果缓冲区*/n, /*读取二元式的当前字符*/n1, /*当前表达式中的字符*/E, /*非终结符*/sstack[100], /*算术或布尔表达式加工处理使用的符号栈*/ibuf[100], /*算术或布尔表达式使用的缓冲区*/stack[1000]; /*语法分析加工处理使用的符号栈*/struct aa oth; /*四元式中的空白位置*/struct fourexp{char op[10];struct aa arg1;struct aa arg2;int result;}fexp[200]; /*四元式的结构定义*/int ssp=0; /*指向sstack栈指针*/struct aa *pbuf=buf; /*指向词法分析缓冲区的指针*/int nlength=0; /*词法分析中记录单词的长度*/int tt1=0; /*变量名表指针*/char *cfile; /*源程序文件,~为结束符*/int lnum=0; /*源程序行数记数*/int sign=0; /*sign=1为赋值语句;=2为while语句;=3为if语句*/ /*******************************************************/int newt=0; /*临时变量计数器*/int nxq=100; /*nxq总是指向下一个将要形成的四元式地址,*//*每次执行gen()时,地址自动增1*/int lr; /*扫描LR分析表1过程中保存的当前状态值*/int lr1; /*扫描LR分析表2或表3所保存的当前状态值*/int sp=0; /*查找LR分析表时状态栈的栈顶指针*/int stack1[100]; /*状态栈1定义*/int sp1=0; /*状态栈1的栈顶指针*/int num=0; /*算术或布尔表达式缓冲区指针*/struct ll{int nxq1; /*记录下一条四元式的地址*/int tc1; /*真值链*/int fc1; /*假值链*/}labelmark[10]; /*记录语句嵌套层次的数组,*//*即记录嵌套中每层的布尔表达式E的首地址*/int labeltemp[10]; /*记录语句嵌套层次的数组,*//*即记录每层else之前的四元式地址*/int pointmark=-1, /*labelmark数组指针*/pointtemp=-1; /*labeltemp数组指针*/1.3 主函数main()void main({cfile=fopen("pas.dat","r"; /*打开C语言源文件*/readch(; /*从源文件读一个字符*/scan(; /*词法分析*/disp1(;disp3(;stack[sp].pos=0;stack[sp].sy1=-1; /*初始化状态栈*/stack1[sp1]=0; /*初始化状态栈1*/oth.sy1=-1;printf("\n**************** 状态栈变化过程以及归约顺序 ****************\n";readnu(; /*从二元式读入一个符号*/lrparse(; /*语法语义分析产生四元式*/getch(;disp2(;printf("\n程序运行结束!\n";getch(;}1.4 词法分析函数说明(1)读取函数 readline( 、readch(词法分析包含从源文件读取字符的操作,但频繁的读文件会影响程序执行效率,故实际上是从源程序文件“pas.dat”中读取一行到输入缓冲区,而词法分析过程中每次读取一个字符时则是通过执行readch()从输入缓冲区获得的;若缓冲区已被读空,则再执行readline()从pas.dat中读取下一行至输入缓冲区。
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程序设计。
扬大课程设计报告-C语言子集编译器
扬州大学编译原理课程设计题目C语言子集编译器班级学号姓名成绩扬州大学信息工程学院一、课程设计目的通过编译原理课程设计,加深对课堂中所讲授的内容的理解,设计一个具有词法分析、语法、语义分析、错误处理的综合程序。
进一步掌握编译程序常用实现的方法和技术,使学生初步具有研究、设计、编制和调试编译程序的能力。
二、课程设计题目实现一个简单的编译器三课程设计要求1.实现一个C语言子集或Pascal语言子集的编译器,工具任选。
2.要求实现的功能:翻译 +,-,*, / 四则运算表达式及布尔表达式,翻译包含if语句,while语句及do-while语句及相互间的嵌套。
四、课程设计语言及选用工具选用语言:Java工具 Eclipse五、课程设计方法1,本课程设计的数据结构设计过程中用到的栈:static Vector<String>DataStack = new Vector<String>(); 输入流栈static Vector<String>targetAnaStack = new Vector<String>(); 输入备份栈static Vector<String>AnalysStack = new Vector<String>(); 分析栈static Vector<String>KeyWordStack = new Vector<String>(); 保留字栈static Vector<String>JiexanStack = new Vector<String>(); 界限符栈static Vector<String>YunsuanfuStack = new Vector<String>(); 运算符栈中间代码的构造:包括标号,符号,第一操作数,第二操作数,和目的操作数class midCode {String sign;String op1;String op2;LoopLastLocation p1;}class LoopLastLocation { //每一个目的操作数都联系着一个对应的跳转标号String LastLocation;Int BiaoHao;}总体构成:跳转标号(操作符,第一操作数,第二操作数,目的操作数或者跳转标号)2,器主要分为四个部分:词法分析、语法分析、中间代码生成和目标代码生成。
文本编辑器的程序设计及代码示例
文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。
它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。
本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。
一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面: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()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。
数据结构课程设计模板(DOC)
数据结构与算法课程设计报告题目:学院:专业班级:学生姓名:指导教师:2016 年06 月2 9日目录一、课程设计目的 (3)二、课程设计步骤 (3)三、课程设计内容 (5)四、课程设计报告...................................................................... 错误!未定义书签。
五、提交材料 (6)六、考核方式与评分标准 (7)七、参考文献 (9)附录1 齐齐哈尔大学软件工程系课程设计说明书(报告)撰写规范 (10)一、课程设计目的及要求《数据结构与算法分析》课程设计培养计算机专业的学生的算法程序设计能力。
通过上机实验,可以培养学生程序设计的方法和技巧,提高学生编制清晰、合理、可读性好的系统程序的能力,加深对数据结构课程和算法的理解。
使学生更好地掌握数据结构的基本概念、基本原理、及基本算法,具有分析算法、设计算法、构造和开发较复杂算法的基本能力。
要求学生能综合运用《数据结构与算法分析》的相关知识,培养学生上机解决一些与实际应用结合紧密的、规模较大的问题的能力,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握数据结构和算法设计技术,掌握分析实际问题的能力并提高C语言编程技巧,培养良好的编程风格。
课程设计要求独立完成,题目自选(参考题目见三,也可自拟),但需要老师确认(6月16日前定题),一人一题,要求程序有能采用交互式工作方式的界面进行功能的选择,只能用文件存储数据和处理数据不能使用数据库。
要求在教学周的第18周前完成。
二、课程设计步骤随着计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。
然而,编制一个10000行的程序的难度绝不仅仅是一个5000行的程序的两倍,因此软件开发需要系统的方法。
一种常用的软件开发方法,是将软件开发过程分为分析、设计、实现和维护四个阶段。
虽然数据结构课程中的课程设计的复杂度远不如(从实际问题中提出来的)一个“真正的”软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,完成课程设计的应有如下的5个步骤:1.问题分析和任务定义通常,课程设计题目的陈述比较简洁,或者说是有模棱两可的含义。
简单的行编辑器
计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。
(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。
主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。
然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。
2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。
数据结构简易文本编辑器
数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。
从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。
而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。
首先,让我们来了解一下什么是数据结构。
简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。
常见的数据结构包括数组、链表、栈、队列、树和图等。
在文本编辑器中,通常会用到多种数据结构来实现不同的功能。
对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。
一种常见的选择是使用字符数组。
字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。
但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。
为了提高插入和删除操作的效率,我们可以考虑使用链表。
链表中的每个节点存储一个字符和指向下一个节点的指针。
在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。
但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。
除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。
比如,当用户输入新的字符时,我们需要将其插入到适当的位置。
如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。
如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。
删除操作类似。
对于字符数组,需要将删除位置后的字符向前移动。
对于链表,只需修改相关指针,释放被删除的节点。
为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。
如果文本内容是有序的,二分搜索可以大大提高查找的效率。
另外,撤销和重做功能也是文本编辑器中常见的需求。
为了实现这两个功能,我们可以使用栈来保存操作的历史记录。
当执行一个操作时,将其相关信息压入撤销栈。
Vwwuor数据结构课程设计—文章编辑设计报告
生命是永恒不断的创造,因为在它内部蕴含着过剩的精力,它不断流溢,越出时间和空间的界限,它不停地追求,以形形色色的自我表现的形式表现出来。
--泰戈尔文章编辑——冯岳良20080573 一、需求分析功能:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;二、概要设计1、定义结构体 struct line,文本行采用顺序存储,行与行之间采用链式存储开始主函数输入文字统计个数查找某一子串输出文字统计字母、数字、空删除这一子串格、某一字符串的个数以及文章总字数输出删除后的文章具体操作2、主要函数:int FindString(LINE * &head,char *str) /*统计str在文章中出现的次数*/ 求在一行中Str出现的次数的流程图:①.查找第一个字符,如果有第一个字符即p->data[i]==str[0],设计数器k=0 ②.查找这个字符后面的字符与要查找的字符串是否匹配即p->data[i+j]==str[j],如果匹配k++③.重复第二步,如果k=len2,则查找到,count++;如果没查找到,重新进行第一步void delstringword(char *s,char *str) /*删除字符串*s 中的字符串*str*/开始count=0;h=0;len1=0; len2=strlen(str);p->data[i]==str[0]i++k=0;j=0;p->data[i+j]==str[j]k++;j++;k=len2count++; i=i+k-1;结束YNYNNY实现思想:①.从字符串s 中寻找str 第一次出现的位置 *p=strstr(s,str);②.len=strlen(s);i=len-strlen(p)即前i 项恰好不含要删除的字符串,将前i 项复制到tmp 中 ③.j=i+strlen(str) 即要删除的字符串在i+1和j 之间,将j 之后的字符串复制到tmp 中④.将tmp 赋给串s ,返回s三、详细设计:#include<iostream.h> #include <string.h>#include <stdio.h> /*文本每行以字符串形式存储,行与行之间以链表存储*/ typedef struct line {char *data; struct line *next;}LINE; /*创建一链表,同时向里面输入文本数据*/ void Create(LINE * &head) {printf ("请输入一页文章,以Ctrl+E(^E)为结尾(每行最多输入80字符!):\n");LINE *p=new LINE; /*首先为链表 建立一个附加表头结点*/ head=p; /*将p 付给 表头指针*/ char tmp[100]; while(1) {gets(tmp); /*输入字符串!*/ if(strlen(tmp)>80) {printf("每行最多输入80字符");str pi jsfor(m=0;m<i;m++) tmp[count++]=s[m];for(n=j;n<len;n++) tmp[count++]=s[n];tmp}if(tmp[0]==5)break; /*如果发现输入 ^E,则退出输入*/ p=p->next=new LINE;p->data=new char[strlen(tmp)+1]; /*为结点分配空间 */ strcpy(p->data,tmp);if(tmp[strlen(tmp)-1]==5) /*除去最后一个控制符 ^E */{p->data[strlen(tmp)-1]='\0';break;}}p->next=NULL; /*最后的一个指针为空 */head=head->next;}/*统计字母数*/int CountLetter(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z')) /*计算字母数*/count++;}while((p=p->next)!=NULL); /*遍历链表*/return count; /*返回文章的字母总数*/}/*统计数字数*/int CountNumber(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/for(int i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;/*计算数字数,ASCII码*/}while((p=p->next)!=NULL); /*遍历链表*/}/*统计空格数*/int CountSpace(LINE * &head){LINE *p=head;int count=0;do{int Len=strlen(p->data); /*计算当前 data 里的数据元素的个数*/ for(int i=0;i<Len;i++)if(p->data[i]==32)count++; /*计算空格数,空格ASCII码为32*/ }while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计文章的总字数*/int CountAll(LINE * &head){LINE *p=head; /*保存链表的首地址*/int count=0;do /*计算总字符数*/{count+=strlen(p->data);}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*统计str在文章中出现的次数*/int FindString(LINE * &head,char *str){LINE *p=head;int count=0;int h=0;int len1=0; /*保存当前行的总字符数*/ int len2=strlen(str); /*待统计字符串的长度*/ int i,j,k;do{len1=strlen(p->data); /*当前行的字符数*/for(i=0;i<len1;i++) /*字符匹配*/{if(p->data[i]==str[0]){k=0;for(j=0;j<len2;j++)if(p->data[i+j]==str[j]) k++;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL); /*遍历链表*/return count;}/*删除指定的字符串*/void delstringword(char *s,char *str)/* *s为输入的字符串,*str为将要删除的字符*/{char *p=strstr(s,str); /*从字符串s中寻找str第一次出现的位置*/char tmp[80];int len=strlen(s);int i=len-strlen(p);int j=i+strlen(str);int count=0;for(int m=0;m<i;m++)tmp[count++]=s[m];for(int n=j;n<len;n++)tmp[count++]=s[n];tmp[count]='\0';strcpy(s,tmp); /*返回新的字符串*/}void DelString(LINE * &head,char *str){LINE *p=head;do{if(strstr(p->data,str)!=NULL)delstringword(p->data,str);}while((p=p->next)!=NULL); /*遍历链表*/}/*向屏幕输出文章*/void OutPut(LINE * &head){LINE *p=head;do{printf("%s\n",p->data);}while((p=p->next)!=NULL); /*遍历链表*/}void main(){LINE *head;Create(head);printf("输入的文章为:\n");OutPut(head);printf("\n");printf("全部字母数:%d \n",CountLetter(head));printf("数字个数:%d \n",CountNumber(head));printf("空格个数: %d \n",CountSpace(head));printf("文章总字数: %d \n",CountAll(head));char str1[20],str2[20];printf("\n");printf("请输入要统计的字符串:");scanf("%s",str1);printf("%s出现的次数为:%d \n",str1,FindString(head,str1)); printf("\n");printf("请输入要删除的某一字符串:");scanf("%s",str2);DelString(head,str2);printf("删除%s后的文章为:\n",str2);OutPut(head);}四、调试分析:1.测试数据及结果2、问题思考:输入文章时,计算机怎样识别文章是否结束?输出文章时,怎样处理表示结束的字符?解决方案:输入文章时,以Ctrl+E(^E)为结尾,当tmp[0]==5时,发现输入^E,则退出输入。
数据结构-课程设计--简易文本编辑器
《数据结构》课程设计班级: 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 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。
文本编辑器课程设计报告
青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 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.算法设计:本程序要求储存结构为线性表结构,可以输入大小写的英文字母,任何数字和标点符号。
数据结构课程设计参考题目
数据结构课程设计参考题目数据结构课程设计题目数据结构课程设计题目(大题目).doc一、公司销售管理系统项目开发基本要求1.客户信息管理:对客户的基本信息进行添加、修改和删除。
2.产品信息管理:对产品的基本信息进行添加、修改和删除。
3.供应商信息管理:对供应商的基本信息进行添加、修改和删除。
4.订单信息管理:对订单的基本信息进行添加、修改和删除。
二、高校科研管理系统系统主要用于帮助高校或科研单位管理和维护各项科研相关资料项目开发基本要求1.系统用户管理模块:为系统新用户设置用户名及口令;操作员更改自己的系统口令。
2.数据字典管理模块:管理项目性质包括:分为国家自然科学基金、863、部省科委及企业集团四种情况;范围包括:分为全国、国际、地方三种情况;检索源包括:分为EI、SC I、核心和一般四种情况。
3.项目参加人员管理模块包括:显示添加修改删除查询。
4.项目基本情况模块包括:显示添加修改删除查询。
5.项目获奖情况模块包括:显示添加修改删除查询。
6.期刊论文管理模块包括:显示添加修改删除查询。
7.著作管理模块包括:显示添加修改删除查询。
8.科研工作量统计模块:按照学校科研工作量计算办法,为每位科研人员进行科研工作量的计算和统计。
9.科研积分统计模块:按照学校科研积分计算办法,为每位科研人员进行科研计分的计算和统计。
三、网络五子棋对战四、不同排序算法模拟五、科学计算器数据结构课程设计题目1.运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。
比赛分成m 个男子项目,和w个女子项目。
项目编号为男子1……m,女子m+1……m+w。
不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
(m<=20,n<=2 0)功能要求:1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
简易文本编辑器制作流程
简易文本编辑器操作步骤如下。
(1)新建一个 Windows 应用程序项目,并命名为Wordpad 。
⑵把窗体Forml 命名为 MainForm ,Text 属性设置为"文本编辑器”,IsMdiContainer 属性设置为true 。
⑶在MainForm 上放置一个 MenuStrip ,不更改命名。
在如图1所示的MDI 窗体 菜单中添加主菜单和子菜单并命名和设置 Text 属性。
⑷设置【格式】主菜单下的【粗体】、【斜体】和【下划线】3个菜单项的Image 属性,并加 上相应的图标(图标可以自行选择)⑸在MainForm 上放置一个 MenuStrip ,不更改命名。
按如图 2所示给工具栏添加 3个工具 按钮并命名和设置 Text 属性。
分别设置 3个工具按钮的Image 属性并加上相的图标。
⑹新添加一个 Windows 窗体,命名为 frmMDIChild 。
在其中添加一个 RichTextBox 控件, 把它的Dock 属性设置为Fill ,使之充满整个窗体。
(7)分别双击【新建】和【退出】子菜单,给它们生成Click 事件。
(8) 按Ctrl 键同时选中【粗体】、【斜体】、【下划线】子菜单,并在事件窗口中双击 Click 事件,使它们共享同一事件方法。
(9) 同时选中【平铺】、【层叠】、【水平并排】、【垂直并排】子菜单,并在事件窗口中双击 Click 事件,也使它们共享同一事件方法。
(10) 选中前面添加的 ToolStrip 控件,并生成它的ItemClicked 事件。
(11) 打开代码窗口,在其中输入如下代码:private int mdiChildCount=O;〃用于记录打开 MDI 子窗体的次数private void mitemNew_Click(object sender,EventArgs e){mdiChildCount++;〃每打开一个 MDI 子窗体就加1frmMDIChild mdiChild=new frmMDIChild();〃 创建一个新的 MDI 子窗体mdiChild.MdiPare nt=this;u.shlnBIndshlnllalic 戈样怔弍童口Kh-inl'ntieii .inemdiChild.Show();mdiChild.Text=" 文档"+mdiChildCount.ToString();// 更改窗体标题}private void mitemExit_Click(object sender,EventArgs e){// 退出应用程序Close();}private void mitemBlod_Click(object sender,EventArgs e){// 直接调用自定义函数formatText formatText(((ToolStripItem)sender).Text);}private void toolStrip1_ItemClicked(object sender,ToolStripItemClickedEventArgs e) {// 直接调用自定义函数formatText formatText(((ToolStripItem)e.ClickedItem).Text); }private void mitemArrangeIcons_Click(object sender,EventArgs e){//根据菜单项的Text 属性来区分它们switch(((ToolStripItem)sender).Text){// 重新排列MDI 子窗体case"平铺":youtMdi(MdiLayout.ArrangeIcons);break;case'层叠":youtMdi(MdiLayout.Cascade);break;case'水平并排":youtMdi(MdiLayout.TileHorizontal);break;default:youtMdi(MdiLayout.TileVertical);break;}}private void formatText(string itemText)// 自定义方法{// 寻找处于激活状态下的MDI 子窗体Form activeChild=this.ActiveMdiChild;if(activeChild!=null)// 如果找到{// 寻找MDI 子窗体上的处于活动状态的RichTextBox 控件RichTextBox aBox=(RichTextBox)activeChild.ActiveControl;if(aBox!=null)// 如果找到{// 提取RichTextBox 中的选中的文字的字体Font fontOfSelectedText=aBox.SelectionFont;FontStyle fs;switch(itemText)// 根据菜单项或工具按钮的Text 属性来区分他们{// 更改字体样式,并存放在FontStyle 类型变量fs 中case"粗体":fs=aBox.SelectionFont.Bold?FontStyle.Regular:FontStyle.Bold;break;case"斜体":fs=aBox.SelectionFont.Italic?FontStyle.Regular:FontStyle.Italic;break;default:fs=aBox.SelectionFont.Underline?FontStyle.Regular:FontStyle.Underline;break;}Font FontToApply=new Font(fontOfSelectedText,fs);aBox.SelectionFont=FontToApply;// 更改选中部分的字体样式}}}运行结果:运行程序,多次选择菜单【文件】|【新建】,打开多个MDI 子窗体,在每个MDI 子窗体中输入文字。
数据结构课程设计完整版
西安郵電學院数据结构课程设计报告题目:魔王语言翻译/多项式相乘系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:一、课程设计目的通过本次课程设计,强化上机动手能力,使我们在理论和实践的基础上进一步巩固《C语言程序设计》、《数据结构——使用C语言》课程学习的内容,初步掌握工程软件设计的基本方法,熟知链表,栈,队以及文件的使用方法,学会将知识应用于实际,提高分析和解决问题的能力,为毕业设计和以后工作打下基础。
二、课程设计内容【1】、魔王语言问题描述有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。
但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的:(1)α→β1β2 ……βm(2)(θδ1δ2 ……δn)→θδnθδn-1 …… θδ1 θ在这两种形式中,从左到右均表示解释;从右到左均表示抽象。
试写一个魔王语言的解释系统,把他的话解释成人能听懂的话。
基本规则现在有以下三种规则,设大写字母表示魔王语言解释的词汇,小写字母表示人的语言的词汇;希腊字母表示可以用大写或小写替换的变量。
魔王语言可含人的词汇。
(1)B->tAdA(2)A->sae(3)示例:魔王说:B(ehnxgz)B解释成人的语言:tsaedsaeezegexenehetsaedsae若每个小写字母含义如下表示:t d s a e z g x n h天地上一只鹅追赶下蛋恨则魔王说的话是:天上一只鹅地上一只鹅鹅追鹅赶鹅下鹅蛋鹅恨鹅天上一只鹅地上一只鹅【2】、多项式相乘问题描述用带头结点的动态单链表来表示多项式,在此基础上完成多项式的乘法运算。
三、需求分析对所开发系统功能、性能的描述,想要实现的目标。
【1】魔王语言有一个魔王总是使用自己的一种非常精炼的而抽象的语言讲话,没有人能听懂。
但他的语言是能够逐步解释成人能听懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计小型文本编辑器的
设计
沈阳航空航天大学
课程设计报告
课程设计名称:数据结构课程设计
课程设计题目:小型文本编辑器的设计
院(系):计算机学院
专业:
班级:
学号:
姓名:
指导教师:
目录
沈阳航空航天大学 ........................... 错误!未定义书签。
1 程序模块说明 ............................ 错误!未定义书签。
1.1程序模块............................. 错误!未定义书签。
1.2模块功能说明......................... 错误!未定义书签。
2 程序流程图说明 .......................... 错误!未定义书签。
2.1主函数流程图......................... 错误!未定义书签。
2.2显示模块流程图....................... 错误!未定义书签。
2.3查找模块流程图....................... 错误!未定义书签。
2.4替换模块流程图. ...................... 错误!未定义书签。
2.5将文本初始化......................... 错误!未定义书签。
3 函数的描述 .............................. 错误!未定义书签。
3.1串的初始化........................... 错误!未定义书签。
3.2查找函数............................. 错误!未定义书签。
3.3 替换函数........................... 错误!未定义书签。
3.4 串的块链存储....................... 错误!未定义书签。
4 程序测试和运行的结果..................... 错误!未定义书签。
4.1初始化一个串......................... 错误!未定义书签。
4.1.1 ................................... 错误!未定义书签。
4.1.2.................................. 错误!未定义书签。
4.2查找与替换字符串..................... 错误!未定义书签。
4.2.1 ................................... 错误!未定义书签。
4.2.2 ................................... 错误!未定义书签。
4.2.3 ................................... 错误!未定义书签。
4.2.4 ................................... 错误!未定义书签。
4.2.5 ................................... 错误!未定义书签。
4.2.6 ................................... 错误!未定义书签。
参考文献 ................................... 错误!未定义书签。
附录(关键部分程序清单)................. 错误!未定义书签。
查找和替换函数............................ 错误!未定义书签。
生成一个其值等于CHARS的串T,成功返回1,否则返回0错误!未定义书签。
输出字符串T .............................. 错误!未定义书签。
源代码..................................... 错误!未定义书签。
1 程序模块说明
1.1 程序模块
为了更方便地完成字符串的查找,此程序采用串的块链式存
储结构存储方式。
经过主模块调用四个小模块完成文本编辑的各种功能。
用户可在主模块上循环对程序进行操作。
1.2 模块功能说明
1.主模块:用户可编辑任一文档,输入要在文本中查找的信息。
初始化一个字符串,并用串的块链式存储结构存储。
2. 编辑文本信息:将用户编辑的文本信息分行输出来,并输出字符串的长度和行数。
3.查找模块:遍历整个文本,查找字符串在串中的位置,并输出其所在位置,直到遍历完整个文本结束。
4.替换模块:先查找你要替换的字符所在位置,然后根据用户选择是否替换该字符。
5.退出模块:退出程序,等待用户下次重行运行该程序。