简易文本编辑器制作流程
- 格式:doc
- 大小:75.50 KB
- 文档页数:3
目录第一章课程设计目的和要求 (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 设计背景随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一系列的操作来修改,因此,文件的修改操作是十分重要的。
word文档制作教程Word是目前最常用的文字处理软件之一,它具有简单易学、功能强大的特点。
以下将为您介绍一些关于Word文档制作的基本教程。
首先是新建文档。
打开Word后,点击“文件”选项卡,在弹出的菜单中选择“新建”,即可新建一个空白文档。
也可以直接点击Word窗口左上方的小标签上的“新建文档”图标,快速创建一个新文档。
接下来是文本输入。
在新建文档中,您可以开始输入您想要写的内容。
选择光标所在的位置,并开始输入文字。
Word会自动进行字体、字号、行距等基本设置,您也可以自行调整这些参数,以满足您的需求。
然后是格式调整。
选择您想要调整格式的文字,点击“开始”选项卡中的各种功能按钮进行格式调整,如字体、字号、加粗、倾斜、下划线等。
您还可以调整段落的对齐方式、间距、缩进等。
接着是插入图片。
在您的文档中,您可以插入图片来丰富内容。
点击“插图”选项卡,在弹出的菜单中选择“图片”,从计算机中选择需要插入的图片文件,点击确定即可插入该图片。
同时,您还可以插入表格、图表、形状等其他元素来美化您的文档。
点击“插入”选项卡,选择您想要插入的元素,根据需要进行进一步的设置和调整。
最后是保存文档。
在您完成文档后,点击左上角的“文件”选项卡,选择“保存”或“另存为”,选择您希望保存的位置和文件名,点击保存即可。
Word还支持不同格式的保存,您可以根据需要选择保存为docx、pdf等格式。
以上就是关于Word文档制作的基本教程,希望可以对您有所帮助。
当然,Word还有很多其他高级功能和操作,比如页眉页脚、目录、批注等,您可以根据需要进一步学习和深入使用。
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程序设计。
java实现简易文本编辑器importjava.awt.某; importjava.awt.event.某; importjava 某.wing.某; importjava某.wing.event.某; importjava.util.某; importjava.io.某; importjava某.wing.filechooer.某; importjava某.wing.filechooer.FileFilter; importjava.awt.datatranfer.某; publicclaTe某te某tendJFrame { Te某tAreaarea; Stringname=null; Stringboard=null; privateClipboar dcb; publicTe某t()throwE某ception { etTitle("记事本"); Toolkitkit=Toolkit.getDefaultToolkit(); Imageimg=kit.getIm age("01.jpg"); etIconImage(img); JMenuBarjmb=newJMenuBar(); a dd(jmb); etJMenuBar(jmb); JMenufile=newJMenu("文件"); JMenuedit=newJMenu("编辑"); JMenuItemrebuild=newJMenuItem("新建"); JMenuItemave=newJMenuItem("保存"); JMenuItemopen=newJMenuItem("打开"); JMenuItemanotherSave=newJMenuItem("另存为"); file.add(rebuild); file.add(ave); file.add(open); file.a dd(anotherSave); rebuild.etAccelerator(KeyStroke.getKeyStroke(" ctrlN")); open.etAccelerator(KeyStroke.getKeyStroke("ctrlO")); ave.etAccelerator(KeyStroke.getKeyStroke("ctrlS")); anotherSa ve.etAccelerator(KeyStroke.getKeyStroke("ctrlA")); area=newTe 某tArea(); add(area); //JScrollPanecroldPane=newJScrollPane(area );//设置滚动轴//add(croldPane); ave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ aveTe某t(); }catch(E某ceptione某) { } } }); open.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ openTe某t(); }catch(E某ceptione某) { } } }); rebuild.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ area.etTe 某t(""); name=null; }catch(E某ceptione某) {} } }); anotherSave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { anotherSaveTe 某t(); } }); JMenuItemcut=newJMenuItem("剪切"); JMenuItemcopy=newJMenuItem("复制"); JMenuItemplater=newJMenuItem("粘贴"); JMenuItemall=newJMenuItem("全选"); edit.add(cut); edit.add(copy); edit.add(plater); edit.ad d(all); cut.etAccelerator(KeyStroke.getKeyStroke("ctrl某")); copy.etAccelerator(KeyStroke.getKeyStroke("ctrlC")); plat er.etAccelerator(KeyStroke.getKeyStroke("ctrlV")); all.etAccele rator(KeyStroke.getKeyStroke("ctrlA")); cb=Toolkit.getDefaultTo olkit().getSytemClipboard(); cut.addActionLitener(newActionLite ner()//剪切{ publicvoidactionPerformed(ActionEvente) { board=area.ge tSelectedTe某t(); cb.etContent(newStringSelection(board),null); area.replaceRange("",area.ge tSelectionStart(),area.getSelectionEnd()); } }); copy.addActionLitener(newActionLitener()//复制{ publicvoidactionPerformed(ActionEvente) { board=area.getSelectedTe某t(); cb.etContent(newStringSelection(board),null); } }); pla ter.addActionLitener(newActionLitener()//粘贴{ publicvoidactionPerformed(ActionEvente) { try{ Tranfer ablecontent=cb.getContent(null); Stringt=(String)content.getTra nferData(DataFlavor.tringFlavor); area.replaceRange(t,area.getS electionStart(),area.getSelectionEnd()); }catch(E某ceptione 某) {} } }); all.addActionLitener(newActionLitener()//全选{ publicvoidactionPerformed(ActionEvente) { area.etSelect ionStart(0); area.etSelectionEnd(area.getTe某t().length()); } }); JMenuhelp=newJMenu("帮助"); JMenuItemabout=newJMenuItem("关于"); help.add(about); about.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { JFrameframe=new JFrame("关于"); frame.etSize(150,100); frame.etLocation(400,300); JTe某tAreaarea1=newJTe某tArea("制作人:杨杰\n制作时间:2022.8.03"); frame.add(area1); frame.etViible(true); } }); jmb.add(file); jmb.add(edit); jmb.add(help); etSize(600,400);etLocation(300,200); etViible(true); etDefaultCloeOperation( JFrame.E某IT_ON_CLOSE); } publicvoidopenTe某t()//打开{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howOpenDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); etTitle(name); try{ BufferedReade rin=newBufferedReader(newFileReader(name)); Stringline=null; S tringdata=""; while((line=in.readLine())!=null) { if(data=="" ) { data=data+line; } ele { data=data+"\n"+line; } } ar ea.etTe某t(data); in.cloe(); }catch(E某ceptione某) { } } } publicvoidaveTe某t()//保存{ if(name==null) { JFileChooerchooer=newJFileChooer(); F ileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } ele { try{ OutputStreamout=newFileOutputStre am(name); Stringdata=area.getTe某t() ; out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publicvoidanotherSaveTe某t()//另存为{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write( data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publictaticvoidmain(String[]arg)throwE 某ception { newTe某t(); } }。
如何使用文本编辑器创建新的程序文件程序员们在编写代码时通常会使用文本编辑器来创建新的程序文件。
文本编辑器是一种软件工具,用于处理、编辑和生成纯文本文件。
下面将介绍如何使用文本编辑器创建新的程序文件的步骤。
第一步:选择适合编程的文本编辑器首先,我们需要选择一款适合编程的文本编辑器。
目前市面上有许多文本编辑器可供选择,如Sublime Text、Visual Studio Code、Atom 等。
这些编辑器有丰富的功能和插件,让编程更加方便高效。
第二步:打开文本编辑器并创建新文件在选择并安装好合适的文本编辑器后,我们打开该编辑器,准备创建新的程序文件。
在编辑器的菜单中,选择“文件”或“新建”选项,然后选择“新建文件”或者直接使用快捷键Ctrl+N(或Cmd+N)来创建一个新的空白文件。
第三步:选择适合的文件类型和格式一般来说,编程需要用到不同的文件类型和格式,如C、C++、Java、Python等。
因此,在创建新文件时,我们需要根据要编写的程序语言来选择相应的文件类型和格式。
在大多数文本编辑器中,可以通过选择“文件”菜单中的“保存为”选项或者使用快捷键Ctrl+S(或Cmd+S)来保存新文件。
在保存时,我们要注意选择正确的文件类型和格式,并为文件起一个合适的名字,以便后续的编程工作。
第四步:编写程序代码一旦新的程序文件创建并保存好,我们就可以开始编写程序代码了。
通过在文本编辑器中输入代码,并利用编辑器的代码自动补全、语法高亮等功能,可以更加高效地编写程序。
需要注意的是,在编写代码时要保持良好的代码风格和缩进,以提高代码的可读性和维护性。
第五步:保存和管理程序文件在编写程序的过程中,及时保存程序文件是十分必要的。
通过选择文本编辑器中的“保存”选项或使用快捷键Ctrl+S(或Cmd+S)保存文件,可以保留最新的代码修改。
另外,在项目的开发过程中,我们可能会有多个程序文件需要创建和管理。
因此,我们可以使用文本编辑器提供的“新建标签页”或“分屏显示”功能,便于在同一个编辑器窗口中同时查看和编辑多个文件。
文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。
它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。
本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。
一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面: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()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。
文本编辑器实现原理
文本编辑器的实现原理可以简单概括为以下几步:
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 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。
电脑制作作文电子稿步骤
《电脑制作作文电子稿步骤》
嘿,咱今儿就来说说怎么在电脑上整出作文电子稿这个事儿。
首先啊,你得找台电脑,这就跟做饭得有锅一样。
比如说,我那次写作文,因为自己电脑坏了,就急匆匆跑到我哥那去借,结果他还不在家,我等啊等,等得都快不耐烦了,他才回来,拿到电脑的时候我都感觉这事儿咋这么坎坷呢。
电脑到手了,就该打开文档编辑软件啦,不管是Word 还是啥的都成。
然后嘞,新建一个空白文档,就像给你的作文搭个舞台,这就是它要展示的地方。
接下来,就该用键盘敲字啦!一个字一个字地把咱脑袋里的想法敲出来。
我记得我那次写作文,遇到个不太会写的字,纠结了好半天,最后还是查了字典才搞定。
写着写着,还得注意排版,该分段就分段,别一股脑全堆在一起,不然读起来可费劲了。
我有时候写着写着就忘了分段,回头一看,哎呀,那长得哟,自己都不想多看一眼。
等全部写完了,一定得检查检查,看看有没有错别字、语病啥的。
我那次就犯了个低级错误,把“的”写成了“地”,还好及时发现改过来了。
这就是电脑制作作文电子稿的步骤啦,虽然简单,可每一步都得认真对待,这样才能整出一篇漂亮的电子稿来哟!就像我经历的那些小波折一样,搞定了就会特别有成就感。
怎么样,都学会了吧!。
Word文档制作的步骤有哪些在当今的数字化时代,Word 文档的使用频率极高,无论是撰写报告、论文、方案,还是制作简历、合同等,都离不开它。
掌握 Word 文档的制作步骤,可以让我们更高效、更专业地完成各种文档任务。
下面,就为大家详细介绍一下 Word 文档制作的具体步骤。
第一步:打开 Word 软件在电脑桌面或开始菜单中找到 Word 图标,双击打开。
如果是首次使用,可能需要一些时间进行软件的初始化设置。
第二步:选择文档模板Word 提供了多种模板,包括空白文档、简历模板、报告模板等。
根据自己的需求选择相应的模板。
如果是简单的文字编辑,选择空白文档即可。
第三步:页面设置在开始编辑内容之前,先进行页面设置。
点击“布局”选项卡,可以设置页面大小(如 A4、A3 等)、页边距(上下左右的距离)、纸张方向(横向或纵向)等。
第四步:输入标题在文档的开头,输入文档的标题。
标题应简洁明了,能够准确概括文档的主要内容。
可以根据需要设置标题的字体、字号、加粗、倾斜、颜色等格式。
第五步:编辑正文内容接下来就可以输入正文内容了。
在输入过程中,可以随时调整字体、字号、颜色、行距等格式。
为了让文档结构清晰,还可以使用段落格式,如首行缩进、段落间距等。
第六步:插入图片、表格等元素如果需要在文档中插入图片,点击“插入”选项卡,选择“图片”,然后从本地文件夹中选择要插入的图片。
同样,要插入表格,可以选择“表格”,然后根据需要绘制或选择表格的行数和列数。
第七步:设置页眉页脚页眉页脚可以包含文档的页码、日期、作者等信息。
点击“插入”选项卡中的“页眉”或“页脚”,进行相应的编辑。
第八步:检查拼写和语法错误在完成文档编辑后,使用 Word 的拼写和语法检查功能,检查文档中是否存在错误。
如果发现错误,及时进行修改。
第九步:保存文档点击“文件”选项卡,选择“保存”或“另存为”,选择保存的位置和文件名,并选择保存的文件格式(如docx 或doc)。
如何在电脑上创建新的文本文件在电脑上创建新的文本文件是我们日常工作中经常会遇到的任务之一。
不论是作为笔记、备忘录、代码文件等,创建文本文件都是我们必备的技能。
本文将会详细介绍如何在电脑上创建新的文本文件,并探讨一些常见的文本文件创建方式。
一、使用文本编辑器创建文本文件在电脑上创建文本文件最常见的方式就是使用文本编辑器软件。
以下是几个常用的文本编辑器软件和创建文本文件的步骤:1. Notepad(记事本):在Windows系统中,每台电脑都配备了记事本应用程序。
你可以通过点击“开始菜单”→“所有程序”→“附件”→“记事本”来打开记事本。
一旦记事本被打开,你可以直接在记事本上输入文字,然后保存即可创建一个新的文本文件。
2. Sublime Text:Sublime Text是一款功能强大的文本编辑器软件,适用于多种操作系统。
你可以从Sublime Text的官方网站上下载并安装该软件。
安装完成后,打开Sublime Text并点击“文件”→“新建”来创建一个新的文本文件。
在编辑器窗口中输入文字后,使用“文件”→“保存”将其保存为一个新的文本文件。
3. Visual Studio Code:Visual Studio Code(简称VS Code)是一款免费的代码编辑器,用于Windows、macOS和Linux系统。
你可以从VS Code的官方网站上下载并安装该软件。
安装完成后,打开VS Code并点击“文件”→“新建文件”来创建一个新的文本文件。
在编辑器窗口中输入文字后,使用“文件”→“保存”将其保存为一个新的文本文件。
二、使用终端命令创建文本文件如果你喜欢使用终端或命令行界面,你也可以使用一些终端命令来创建新的文本文件。
下面是几个常用的终端命令:1. Windows系统中的命令行:在Windows系统中,你可以使用以下命令来创建新的文本文件:```echo. > filename.txt```在命令行中输入以上命令,并将“filename”替换为你想要的文件名,然后按回车键即可创建一个新的文本文件。
四川师范大学成都学院高级语言程序课程设计文本编辑器设计学生姓名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.支持多种编程语言:编辑器可以针对不同的编程语言提供特定的功能,例如语法高亮、代码折叠等。
当然,上述的特性只是一个简单文本编辑器的基本要求,实际上,现代化的文本编辑器具有更多更强大的功能和特性。
C语⾔实现简易⽂本编辑器本程序要求完成⼀个简易⽂本编辑器,能够完成⽂本的录⼊、编辑、删除、查找,并能够完成⽂件的存取。
在⽂本编辑软件中把⽤户输⼊的所有⽂本内容作为⼀个字符串。
虽然各种⽂本编辑软件的功能有强弱差别,但是基本操作都包括串的输⼊、修改、删除(包括整⾏删除和⼀⾏中的⼦串删除)、查找、输出等。
通过分析,系统应该包括以下功能:1、具有简单的⽂字或图形菜单界⾯2、能实现串或⽂本块的查找、替换、删除、插⼊、移动操作。
3、能实现⽂本⽂件的存盘和读取功能。
4、具有友好的界⾯和较强的容错能⼒设计思路1、采⽤的逻辑结构⽂本编辑器主要是针对⽂本进⾏编辑,⽂本的操作就是对字符的操作。
⽂本编辑器可以从⾏、列两个⽅向进⾏编辑。
每⼀⾏可以看成⼀个线性表,线性表是⼀种线性结构,线性结构的特点是数据元素之间为线性关系,数据元素“⼀个接⼀个的排列”。
在⼀个线性表中数据元素的类型是相同的,由于每⼀⾏可以存储的最⼤字数是相同的,⾏⽅向所有线性表的最⼤长度可以设置成相同的。
⾏与⾏之间的关系也可以看成⼀个线性表。
2、采⽤的存储结构线性表的存储分为两种:顺序存储和链式存储。
顺序存储是指在内存中⽤地址连续的⼀块存储空间顺序存放线性表的各元素,⽤这种存储形式存储的线性表称为顺序表。
在程序设计语⾔中,⼀维数组在内存中占⽤的存储空间就是⼀组连续的存储区域,因此,⽤⼀维数组来表⽰顺序表的数据存储区域是再合适不过的。
链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建⽴数据元系之间的线性关系,对每个数据元素除了存放数据元素⾃⾝的信息之外,还需要和⼀起存放其后继或前驱所在的存储单元的地址,这两部分信息组成⼀个“结点”,每个元素都如此。
存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。
只有⼀个存储单元地址的为单链表,有两个存储单元地址的为双链表。
考虑到实际的功能需求,每⾏的线性表可以⽤顺序存储⽅式,每个字符是⼀个节点。
创建txt文档的操作方法创建TXT文档是一种常见的文本编辑操作,无论用途是写作、编程、记录信息等,都可以通过创建TXT文档来实现。
下面将介绍几种创建TXT文档的常见方法。
方法一:使用文本编辑器创建TXT文档1. 打开任意一个文本编辑器软件,比如记事本、Sublime T ext、Notepad++等。
2. 在软件上方的菜单栏中选择“文件”选项。
3. 在下拉菜单中选择“新建”或者直接按快捷键“Ctrl+N”创建一个新文件。
4. 输入或粘贴文本内容到新建的空白文件中。
5. 将文件保存为TXT格式,点击菜单栏中的“文件”选项,选择“另存为”或者直接按快捷键“Ctrl+S”。
6. 在弹出的保存窗口中选择文件的存放路径,并在“文件名”一栏中输入文件名,例如“example.txt”。
7. 在“保存类型”或“文件类型”中选择纯文本(*.txt)。
8. 点击“保存”,TXT文档保存成功。
方法二:使用命令行创建TXT文档(适用于Windows系统)1. 打开命令行终端,可以通过以下方式打开:- 按下Windows键+R,输入“cmd”并按Enter键。
- 在开始菜单中找到“命令提示符”或“Windows PowerShell”并打开。
2. 在命令行中输入以下命令创建TXT文档:echo. > example.txt这个命令使用了echo命令和重定向符(>),将一个空行输出到一个新建的TXT文件中。
3. 在当前目录下会生成一个名为“example.txt”的TXT文件。
方法三:使用文本处理软件创建TXT文档1. 打开Microsoft Word、WPS等文本处理软件。
2. 在新建的文档中输入或粘贴文本内容。
3. 点击菜单栏中的“文件”选项。
4. 在弹出的下拉菜单中选择“另存为”。
5. 在弹出的保存窗口中选择TXT文件格式(*.txt)。
6. 输入文件名,并选择保存路径。
7. 点击“保存”,TXT文档保存成功。
简易文本编辑器
操作步骤如下。
(1)新建一个Windows应用程序项目,并命名为Wordpad。
(2)把窗体Form1命名为MainForm,Text属性设置为“文本编辑器”,IsMdiContainer
属性设置为true。
(3)在MainForm上放置一个MenuStrip,不更改命名。
在如图1所示的MDI窗体
菜单中添加主菜单和子菜单并命名和设置Text属性。
(4)设置【格式】主菜单下的【粗体】、【斜体】和【下划线】3个菜单项的Image属性,并加上相应的图标(图标可以自行选择)
(5)在MainForm上放置一个MenuStrip,不更改命名。
按如图2所示给工具栏添加3个工具按钮并命名和设置Text属性。
分别设置3个工具按钮的Image属性并加上相的图标。
(6)新添加一个Windows窗体,命名为frmMDIChild。
在其中添加一个RichTextBox控件,把它的Dock属性设置为Fill,使之充满整个窗体。
(7)分别双击【新建】和【退出】子菜单,给它们生成Click事件。
(8)按Ctrl键同时选中【粗体】、【斜体】、【下划线】子菜单,并在事件窗口中双击Click事件,使它们共享同一事件方法。
(9)同时选中【平铺】、【层叠】、【水平并排】、【垂直并排】子菜单,并在事件窗口中双击Click 事件,也使它们共享同一事件方法。
(10)选中前面添加的ToolStrip控件,并生成它的ItemClicked事件。
(11)打开代码窗口,在其中输入如下代码:
private int mdiChildCount=0;//用于记录打开MDI子窗体的次数
private void mitemNew_Click(object sender,EventArgs e)
{
mdiChildCount++;//每打开一个MDI子窗体就加1
frmMDIChild mdiChild=new frmMDIChild();//创建一个新的MDI子窗体
mdiChild.MdiParent=this;
mdiChild.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子窗体中输入文字。
选择文字中的一部分,并单击工具栏和菜单中的【粗体】、【斜体】和【下划线】这几个按钮,观察选中文字的变化。
分别选择【窗口】主菜单下的几个菜单项重新排列MDI 子窗口,观察效果。