简易文本编辑器任务书课程设计报告
VB课程设计报告---文本编辑器

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

用汇编语言编程设计一个简单的文本编辑器界面,显示文本文件的建立、编辑、退出界面。通过设计,掌握屏幕显示和下拉式菜单的工作原理,进一步提高综合运用知识的能力。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
(1)要求一级菜单包含“FILE┃EDIT┃QUIT”,“FILE”的二级下拉式菜单包含“NEW”、“SAVE”、“OPEN”等;“EDIT”的二级下拉式菜单包含“COPY”、“PASTE、“SELECT”等;“QUIT”没有下拉菜单。
中北大学
课程设计任务书
11/12学年第二学期
学院:
信息与通信工程学院
专业:
自动化
学 生 姓 名:
学 号:课程设计Biblioteka 目:简单文本编辑器界面设计
起迄日期:
2012年6月4日~2012年6月8日
课程设计地点:
中北大学
指导教师:
张艳兵、张秀艳
系主任:
王忠庆
下达任务书日期:2012年6月1日
课 程设计任 务 书
1
2
3
4
5
6
5.设计成果形式及要求:
课程设计说明书1份
程序流程图1份
程序清单1份
6.工作计划及进度:
起迄日期
工作内容
12年6月4日~6月5 日
6月5日~6月6日
6月6日~6月7 日
6月7日~6月8日
6月17日
查阅资料,确定设计方案
画出流程图
编写并调试程序
撰写课程设计说明书
课程设计答辩
系主任审查意见:
(2)选择方案,画出流程图。
(3)编写汇编语言源程序,并调试。
(4)写出设计说明书。
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程序设计。
文本编辑器课程设计

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

软件学院课程设计报告书课程名称设计题目文本编辑器的设计与实现专业班级 XXXXXXXXXXX 学号 xxxxxxxxxx 姓名 xxx 指导教师2011 年11月1 设计时间2011年11月2 设计目的《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。
本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。
3设计任务文本编辑器的设计与实现:设计一个类似于Windows记事本(Notepad)的Java程序。
可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。
4 设计内容4.1需求分析需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。
能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。
文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。
4.2概要设计4.2.1程序基本功能概括图4.2.1 功能架构图4.2.2程序主要组件概括1.基本的Frame框架;2.菜单;3.打开文件对话框;4.保存文件对话框;5.颜色对话框;6.Choice下拉列表,运来实现字体设置;7.简单的帮助框架。
文本编辑器.

《面向对象程序设计》课程设计报告题目:文本编辑器软件设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号: 20121183011指导教师:吴奕20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制面向对象程序设计课程设计任务书目录1需求与总体设计 (1)1.1需求分析 (1)1.2总体功能图 (1)1.3 总体设计思路 (1)(1)文件菜单 (1)(2)编辑菜单 (2)(3)右键菜单 (2)1.4 总体模块图 (2)1.5简要类图 (3)2详细设计 (5)2.1各类的功能及关键代码设计和类图表示 (5)(1)首先创建一个公共的类名为Bjq (5)(2)创建一个空的菜单条并添加两个菜单项(文件、编辑) (5)(3)先设计一个匿名内部类,为文件、编辑菜单添加其它下拉子菜单 (5)(4)右键快捷菜单的字体子菜单的创建 (6)(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:复制、粘贴、字体大小、字体颜色 (7)(6)为窗体添加监听器 (7)(7)设计main方法:为整个程序的开始提供了入口 (8)2.2程序流程图 (8)2.3 详细类图 (10)3编码实现 (11)程序实现代码: (11)4系统测试 (18)4.1错误处理 (18)4.2主要的测试截图 (18)1.程序运行界面 (18)2.编辑菜单及其复制粘贴功能 (19)3.右键菜单及其功能效果 (20)4.文件菜单及其功能界面 (21)1需求与总体设计1.1需求分析仿照windows 里面的写字板编写文本编辑器程序主要采用了图形界面,实现了如下功能:(1)基本的文件操作,包括新建、打开、保存、退出。
(2)基本的文本编辑操作,包括剪切、复制、粘贴、删除、全选。
本着实用至上的原则,在原有基础上又添加了字体、文字颜色修改等功能,同时在主界面上添加了为各功能添加了工具条,以方便用户使用。
微机原理课程设计—简易文本编辑器

计算机与通信学院软件学院课程设计说明书简易文本编辑器作者:刘正翔学号:11700215专业:软件技术班级:软件2班指导教师:张聚礼答辩时间: 2012/7/2简易文本编辑器刘正翔11700215微型计算机原理及应用课程设计任务书题目:简易文本编辑器学生姓名:刘正翔学号:11700215 班级:软件2 班题目类型:软件工程(R)指导教师:张聚礼一.微型计算机原理及应用课程设计内容汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。
尽管汇编语言程序设计编程效率低,但其运行效率高、速度快。
因此掌握汇编语言是学好微机原理和接口设计的第一步。
设计一个功能较完备的文本编辑器,文本编辑器大小为24行80列,界面提供编辑菜单、文件操作菜单及简单帮助。
二.微型计算机原理及应用课程设计目的1、学习磁盘文件的建立、打开、关闭和读写等操作功能调用;2、实现对磁盘文件的存取;3、熟练掌握BIOS、DOS的系统功能调用;三.微型计算机原理及应用课程设计的要求1、利用DOS系统功能调用和BIOS功能调用设计一个有菜单栏的编辑窗口。
在该窗口中可以实现文本的输入;可以利用“Del”键、“BackSpace”键、“Home”键、“End”键、“↑”、“↓”、“←”、“→”方向移动键实现对输入文本的全屏编辑。
使用彩色组和背景颜色来设计界面颜色,利用DOS系统功能调用的磁盘文件存取技术实现文件的“信件”、“打开”、“保存”、“另存为”与“退出”功能。
2、查阅文献资料,一般在5篇以上;3、完成算法设计和程序设计、调试;4、撰写课程设计说明书;5、做好答辩工作。
四.微型计算机原理及应用课程设计思路DOS提供了一组完成磁盘文件的建立、打开、关闭和读写等操作的功能调用。
利用DOS 和BIOS功能调用,汇编语言可实现对磁盘文件的存取。
利用BIOS功能调用中的10H 中断类型,可以设置显示模式,设置窗口背景、字符颜色等。
文本编辑器课程设计报告

青岛农业大学理学与信息科学学院高级语言课程设计报告设计题目文本编辑器学生专业班级计算机科学与技术学生姓名(学号)设计小组其他同学姓名(学号)指导教师完成时间 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.算法设计:本程序要求储存结构为线性表结构,可以输入大小写的英文字母,任何数字和标点符号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学数据结构课程设计说明书学生姓名:张兴凯学号:1021011547 学院: 软件学院专业: 软件工程题目: 简易文本编辑器成绩指导教师何志英2011年12月20日1.设计目的简易文本编辑器2.设计内容和要求1) 具有图形菜单界面;2) 查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块,列块移动),删除3) 可正确存盘、取盘;4) 正确显示总行数。
3.本设计所采用的数据结构本程序是对输入的文字进行操作,故使用的数据结构为单链表操作线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。
它包括两个域:其中存储数据元素信息的域称为数据域;存储直接后继存储位置的域称为指针域。
另有全局变量*head,作为文章的头指针。
在文章内容创建部分中使用线性表的链式存储,并使用全局变量对文本的各种信息进行存储;文章的内容统计、删除、查找、插入都采用链表操作完成。
4.功能模块详细设计4.1 详细设计思想本程序所定义函数的设计思想:CreatWord()文本内容输入函数定义LinkList指针变量*temp: LinkList *temp;定义文本输入变量ch,记录文本行数变量j,记录每行字符数变量i;申请动态存储空间:head->next=(LinkList *)malloc(sizeof(LinkList));首行头指针的前驱指针为空:head->pre=NULL;利用循环进行文本输入PrintWord()当前文本输出函数定义文本行数变量j,每行字符数i:int i,j;定义指针变量:LinkList *p;将指针p指向链表表头: p=head->next;利用循环输出链表中信息:for(j=0;j<=NUM&&p!=NULL;j++){=for(i=0;(i<80)&&(p->data[i])!='#';i++){=printf("%c",p->data[i]);}p=p->next;SearchWord( ) 文本内容查找函数定义一个数组,用来记录需要查找的字符内容:char Data[20];定义定义文本行数变量j,每行字符数i,记录字符出现的次数变量:利用循环进行查找操作,核心算法为:if((temp->data[i])==Data[k])k++;//将输入的查找字符与链表中信息比较,找到第一个相同的字符else if(Data[k]!='\0'){i=i-k; k=0; } // //从主串第i-k个位置重新查找if(Data[k]=='\0'){sum++;//此字符出现的次数加1i=i-k+1; //i记录下该字符串出现的位置printf("\t\t第%d次出现在第%d行第%d列\n",l,j+1,i);l++;k=0;continue;}temp=temp->next; //指向下一行DeleteWord( ) 文本内容删除函数定义一个数组用来存储需要删除的字符或者字符串:char Data[20];定义指针变量:LinkList *temp,*term;使用VC++中拷贝函数讲形参中需要删除的字符或字符串赋值给已定义的数组:strcpy(Data,str2);使用循环进行删除操作:其核心算法为:for(j=0;j<=NUM;j++){ for(i=0;i<80;i++){ if((temp->data[i])==Data[k]) k++;else if(Data[k]!='\0') {i=i-k;k=0;}if(Data[k]=='\0'){num=i; break; } }if(num<80) break; }首先是使用循环查找到需要删除字符或者字符串的字符数以及字符或者字符串的位置,以便于删除;for(;j<=NUM;j++){ for(;i<80;i++){ if(i+1<k){ term->data[80-k+num]=temp->data[i+1]; } //删除的字符串不在最后一行,将下一行的字符(由temp指向)前移到前行else temp->data[i-k+1]=temp->data[i+1]; } //当要删除的字符串在最后一行只要将最后一行的字符前移term=temp;temp=temp->next;j=0; }//在使用循环,从查找到的字符或者字符串开始进行删除,在一行删除完毕之后,转至下一行进行删除。
本程序所定义的函数:1、HeadWord() 标题函数,即一个输出标题,永远出现在程序的最顶端。
2、save() 文件存储函数3、load() 文件读取函数4、CreatWord() 文本输入函数5、PrintWord() 当前文本内容输出函数6、SearchWord() 文章内容查找函数7、DelWord() 文章内容删除函数8、InsertWord() 文章内容插入函数9、Replace() 文章内容替换函数10、Bmenu() 第二子菜单函数11、menu() 主菜单函数12、main()主函数4.2 运行结果(1)执行完menu() 主菜单函数后的结果(2)输入文章内容的结果(3)读取当前文本内容信息(4)进入文本内容处理菜单(5)查找文章中字符或者字符串(6)显示当前文章内容(7)返回主菜单4.3 核心代码#include "stdafx.h"#include "stdio.h"#include "conio.h"#include"malloc.h"#include"string.h"#include"iostream.h"#include"stdlib.h"#define Link_Size 100int NUM,C,N,hang; /*定义全局变量,Num用来记录行号,C用来记录子串在主串中出现的总次数*/#define MAXLEN 80char buffer[MAXLEN],fname[120];char *lineptr[Link_Size];;FILE *fp;int modified=0,/*正文被修改标志*/last;/*当前正文行数*/char *chpt;/*输入命令行字符指针*/typedef struct _list /*行表结构*/{char data[80]; /*记录一行字符*/int length; /*记录一行字符长度*/struct _list *next; /* 后继指针*/struct _list *pre;/*前趋指针*/int row; /*记录整篇文章的行数*/}LinkList;LinkList *head; /*定义全局变量*head,文章首行头指针*/void HeadWord(){printf("\t\t****************************************************\n"); printf("\t\t**** 欢迎使用简单的文本编辑器****\n"); printf("\t\t****************************************************\n"); }int save(char *fname){int i;FILE *fp;char name[80];if(!*fname){printf("filename:");gets(name);}else strcpy(name,fname);if((fp=fopen(name,"wb"))==NULL)return 0;for(i=0;i<last;i++){fputs(lineptr[i],fp);free(lineptr[i]);}fclose(fp);printf("file %s already saved.",name); getch();return 1;}int load(char *fname){FILE *fp;char ch,*p;int i;if((fp=fopen(fname,"rb"))==NULL) return 0; while(!feof(fp)){ch=getc(fp);if(ch=='\x09')for(i=0;i<8;i++,p++) *p='\x20';else if(ch!='\n'&&ch!=EOF){*p=ch;p++;}}*p='\0';fclose(fp);}LinkList *CreatWord(){LinkList *temp;char ch;int i,j;/*记录文本行数变量j,记录每行字符数变量i*/ 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';printf("开始创建文本,请输入文章(按#结束):\n");for(j=0;j<Link_Size;j++){for(i=0;i<80;i++){ch=getchar();temp->data[i]=ch;temp->length++;if(ch=='\n')hang++;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';}temp->row=NUM+1;system("cls");return temp;}void PrintWord(){int i,j;/*记录文本行数变量j,记录每行字符数变量i*/ LinkList *p;p=head->next;system("cls");HeadWord();printf("\n当前文章的内容是:");for(j=0;j<=NUM&&p!=NULL;j++){for(i=0;(i<80)&&(p->data[i])!='#';i++){printf("%c",p->data[i]);}p=p->next;}printf("\n当前文章行数为:%d\n",hang);}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;printf("\t\t第%d次出现在第%d行第%d列\n",l,i+1,j+1);l++;k=0;continue;}}temp=temp->next;}printf("\t\t\t字符串总共出现次数为:%d\n\n",sum);C=sum;N=i*80+j;}void DelWord(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;printf("\n\t\t请输入要插入的字符或字符串:");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 Replace(){int k,m,n,i,j;sscanf(chpt,"%d%d%d",&k,&m,&n); /* 读入参数*/if(m<=0||m>last||n<m||last-(n-m+1)+k>=Link_Size)/* 检查参数合理性*/ {printf("Error!\n");return;}/* 先完成删除*/if(n>last)n=last; /* 修正参数*/for(i=m;i<=n;i++) /* 删除正文*/free(lineptr[i-1]);for(i=m,j=n+1;j<=last;i++,j++)lineptr[i-1]=lineptr[j-1];last=i-1;/* 以下完成插入*/for(i=last;i>=m;i--)lineptr[i+k-1]=lineptr[i-1];for(i=0;i<k;i++){fgets(buffer,MAXLEN,stdin);lineptr[m+i-1]=(char *)malloc(strlen(buffer)+1);strcpy(lineptr[m+i-1],buffer);}last+=k; /* 修正正文行数*/modified=1; /* 正文被修改*/}void Bmenu(LinkList *temp){char str1[20];char str2[20];int a;do{HeadWord();printf("\n\t\t****************************************************\n"); printf("\t\t**** 文章内容处理菜单****\n"); printf("\t\t****************************************************\n"); printf("\t\t**** 1、查找文章中的字符或者字符串****\n"); printf("\t\t**** 2、删除文章中的字符或者字符串****\n"); printf("\t\t**** 3、向文章中插入字符或者字符串****\n"); printf("\t\t**** 4、替换文章中的字符或者字符串****\n"); printf("\t\t**** 5、显示当前文章内容****\n"); printf("\t\t**** 6、返回主菜单****\n");printf("\t\t**** 7、直接退出系统****\n"); printf("\t\t****************************************************\n"); printf("\t\t 请选择:");scanf("%d",&a);switch(a){case 1:system("cls");HeadWord();printf("\t\t\t请输入您需要查找的字符或字符串:");getchar();gets(str1);SearchWord(str1,temp);printf("按回车键继续·····");getchar();getchar();system("cls");break;case 2:system("cls");HeadWord();printf("\t\t\t请输入您需要删除的字符或字符串:");getchar();gets(str2);SearchWord(str2,temp);DelWord(str2);printf("\t\t\t删除%s 后的文章为:",str2);PrintWord();printf("按回车键继续·····");getchar();getchar();system("cls");break;case 3:system("cls");HeadWord();InsertWord(temp);printf("\t\t\t插入字符或字符串后文章为:");PrintWord();printf("按回车键继续·····");getchar();getchar();system("cls");break;case 4:system("cls");HeadWord();Replace();printf("\t\t\t替换字符或字符串后文章为:");printf("按回车键继续·····");getchar();getchar();system("cls");break;case 5:system("cls");HeadWord();PrintWord();printf("按回车键继续·····");getchar();getchar();system("cls");break;}if(a==6){system("cls");break;}if(a==7) exit(0);}while(1);}void menu(LinkList *temp){char name[20];int t;do{HeadWord();printf("\n");printf("\t\t****************************************************\n"); printf("\t\t**** 主菜单****\n"); printf("\t\t****************************************************\n"); printf("\t\t**** 1、文章内容输入****\n"); printf("\t\t**** 2、保存文本****\n"); printf("\t\t**** 3、读取文本****\n"); printf("\t\t**** 4、当前文本内容信息****\n"); printf("\t\t**** 5、进入文章内容处理菜单****\n"); printf("\t\t**** 6、退出文本编辑器****\n"); printf("\t\t****************************************************\n");printf("\t\t**** 注:第一次运行本程序时请选择1号功能****\n"); printf("\t\t****************************************************\n"); printf(" \t\t 请选择:");scanf("%d",&t);if((t>6)&&(t<1)){printf("对不起,无此功能,请输入正确的功能序号!\n");}elseswitch(t){case 1:system("cls");HeadWord();temp=CreatWord();break;case 2:save(name);break;case 3:load(name);break;case 4:PrintWord();printf("\n");printf("按回车键继续·····");getchar();getchar();system("cls");break;case 5:system("cls");Bmenu(temp);break;}if(t==6) break;}while(1);}void main(){head=(LinkList *)malloc(sizeof(LinkList));LinkList *temp;menu(temp);}5.课程设计心得及存在问题本程序是在线性表的基础上改进的,用到了双向链表和一些c++里面的知识。