C++课程设计简易文本编辑器

合集下载

简单的C语言编辑器课程设计

简单的C语言编辑器课程设计

扬州大学编译原理课程设计报告题目简单的编译器班级计科0802班学号081202427姓名张俊指导教师姜卯生成绩扬州大学信息工程学院2011年6月10日一、课程设计题目实现一个简单的编译器二、课程设计目的通过编译原理课程设计,加深对课堂中所讲授的内容的理解,设计一个具有词法分析、语法、语义分析、错误处理的综合程序。

进一步掌握编译程序常用实现的方法和技术,使学生初步具有研究、设计、编制和调试编译程序的能力。

三、课程设计要求1.实现一个C语言子集或Pascal语言子集的编译器,工具任选。

2.要求实现的功能:翻译 +,-,*, / 四则运算表达式及布尔表达式,翻译包含if语句,while语句及do-while语句及相互间的嵌套。

四、课程设计语言及选用工具选用语言:Java工具 Eclipse五、课程设计方法设计过程中用到的数据结构://关键字数组public static List<Eryuanshi> keyWord= new ArrayList<Eryuanshi>();//自定义符号串数组p ublic static Eryuanshi[] valueAndClass = new Eryuanshi[100];//目标代码数组public static List<Siyuanshi> siyuanshi= new ArrayList<Siyuanshi>();//目标代码类,存放四元式的另外一种形式class Siyuanshi{String op;String str1;String str2;}//二元式类,存放词法分析后的标志符,关键字及其类号class Eryuanshi{String word;int classID;}Stack<Integer> stateStack = new Stack<Integer>(); //状态栈Stack<String> symStack = new Stack<String>(); //符号栈Stack<String> semanticStack = new Stack<String>(); //语义栈编译器主要分为两个模块:(1)词法分析程序:主要功能是从文件逐个单词读取源程序,进行次词法分析,并输出源程序的二元式列表,二元式列表保存在keyWord对象数组中。

c语言课程设计C语言文本编辑器

c语言课程设计C语言文本编辑器

文本编辑器文本编辑器是最常用的文档创建和编辑工具。

随着计算机科学与技术的发展,用来处理文本的编辑器随处可见,并且形式多样。

比如,Windows下的记事本,写字板,EditPlus,UltraEdit等都是十分优秀的文本编辑器和处理工具。

在本章中,我们将向读者讲解如何利用C语言来发展开发一个简易的文本编辑器。

1 设计目的利用C语言的单链表数据结构及相关函数,本章编程实现了一个与DOS操作系统下的Edit相似的文本编辑器。

再次文本编辑器中,用户可以通过快捷和选择菜单项,完成基本的文本编辑器和文件处理工作。

通过文章的介绍,读者可以了解文本编辑器的开发过程,掌握菜单的开发技巧,加深对文件操作的理解。

更重要的是,希望此程序能抛砖引玉,引领读者掌握编程的方法和技巧,开发出更优秀的程序。

2 功能描述如图.1所示,文本编辑器主要由五大功能模块构成,它们分别是文件操作模块,文本编辑模块,剪切操作模块,菜单控制模块和帮助及其他模块。

下面分别简要介绍功能模块的功能。

(1)文件操作模块。

在文件操作模块中,主要完成文件的创建,打开,保存和另存操作。

用户可以选择File菜单上的New子菜单来完成新建文本文件操作;选择File菜单上的Save子菜单来完成保存文件操作选择File菜单上的Open子菜单来完成打开文件操作;选择Flie菜单上的Save as子菜单来完成文件的另存为操作。

在文件的打开,保存和另存为操作中,系统会提示用户输入文件路径及文件名。

值得一提的是,当用户打开一个文件时,指定的文件必须存在,否则系统会报错。

(2)文本编辑器模块。

在文本编辑器模块中,主要完成在编辑窗口中以添加或插入的方式输入字符,删除光标所在当前位置的单个字符或前一个位置的单个字符,朝上下左右4个方向的光标移动操作。

当光标所在位置及后面的位置没有字符时,系统会以添加的方式输入字符;当光标所在位置及后面的位置有字符时,系统会已插入的方式输入字符。

用户可以使用BackSpace键删除光标前一个字符,也可以使用Del键删除当前位置的字符或删除Ctrl+左移(右移)键i选定了的多个字符。

C++课程设计简易文本编辑器

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 设计背景随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一系列的操作来修改,因此,文件的修改操作是十分重要的。

数据结构课程设计--简易文本编辑器

数据结构课程设计--简易文本编辑器

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级:2012-1 设计人:山东科技大学2015年 7 月 11 日目录1需求分析说明 (2)1.1主函数模块 (2)1.2菜单显示及输出子模块 (2)1.3查找功能子模块 (2)1.4替换功能子模块 (2)1.5插入功能子模块 (3)1.6块移动功能模块 (3)1.7删除功能模块 (3)1.8读盘功能模块 (3)1.9存盘功能模块 (3)1.10测试数据 (3)2概要设计说明 (4)2.1设计思想 (4)2.2模块调用图 (4)2.3程序代码简介 (4)3详细设计说明 (7)3.1主函数模块 (7)3.2菜单显示及输出子模块 (7)3.3查找功能子模块 (7)3.4替换子模块 (9)3.5插入子模块 (10)3.6块移动模块 (11)3.7删除模块 (12)3.8读盘功能模块 (13)3.9存盘功能模块 (15)3.10流程图 (16)4调试分析 (17)4.1遇到的问题 (17)4.2测试结果 (18)5用户使用说明 (22)6课程设计总结 (24)1需求分析说明简易文本编辑器的总体目标:在Visual Studio的开发环境下,利用所学C 语言和数据结构的相关知识,开发一个具有良好人机界面的简易文本编辑器,实现对文本的简单修改,从而达到编辑文本以及查看文本信息的目的。

基本功能如下:(1)界面友好,易与操作。

采用菜单或其它人机对话方式进行选择。

(2)能正确打开所键入的文本路径,并能够读取相应文本信息。

(3)能对打开的文本进行文本信息显示、替换、查找、块移动、删除等基本操作。

(4)能够正确对修改后的文本内容存盘。

(5)正确显示文本总行数。

以下是各功能模块的功能描述:1.1主函数模块主函数模块的主要功能是初始化菜单界面,功能按键选择并调用相关模块,实现软件功能。

1.2菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。

C语言实现文本编辑器

C语言实现文本编辑器

C语言实现文本编辑器本文将介绍使用C语言实现一个简单的文本编辑器的基本原理和实现步骤。

通过此编辑器,用户可以打开、编辑、保存和关闭文本文件,并且具备基本的文本编辑功能,如插入、删除、查找和替换文本等。

一、编辑器界面设计为了实现一个简单易用的文本编辑器,我们可以设计一个基于命令行界面的编辑器。

用户可以通过文本命令来操作编辑器,从而实现基本的编辑功能。

二、文件的打开和保存在C语言中,我们可以使用标准文件操作函数来实现文件的打开和保存。

用户可以通过指定文件路径来打开或保存文件。

打开文件时,程序会读取文件内容,并将其显示在编辑器界面中;保存文件时,程序会将编辑器内的文本内容写入目标文件中。

三、基本文本编辑功能1. 插入文本用户可以使用插入命令将文本内容插入到当前光标位置之前或之后。

程序会根据插入位置的不同,调整光标的位置,并显示插入后的文本内容。

2. 删除文本用户可以使用删除命令删除当前光标位置处的文本内容。

程序会删除光标所在位置的字符,并相应地调整文本的显示和光标的位置。

3. 搜索文本用户可以使用搜索命令来查找特定的文本内容。

程序会从当前光标位置开始搜索,并根据搜索结果将光标移动到匹配文本的位置。

4. 替换文本用户可以使用替换命令将指定的文本内容替换为新的内容。

程序会搜索文本中的所有匹配项,并将其替换为新的内容。

四、其他功能扩展除了基本的文本编辑功能外,我们还可以对编辑器进行功能扩展,以提升用户体验和编辑效率。

一些可能的扩展功能包括:1. 撤销和重做功能:允许用户撤销和重做操作,以便回退或恢复文本编辑的历史记录。

2. 多窗口编辑:支持同时打开和编辑多个文本文件的功能,提供多窗口切换和管理。

3. 自动保存与恢复:定时自动保存编辑的文本内容,并在下次启动时自动恢复上次编辑的状态。

4. 语法高亮:根据文本类型,对关键字、注释、字符串等进行特殊标记显示,提升代码可读性。

五、总结通过使用C语言,我们可以实现一个简单但功能完善的文本编辑器。

C语言实现简易文本编译器

C语言实现简易文本编译器

C语言实现简易文本编译器数据结构课程设计之简易文本编译器(C语言实现)需求分析(1)具有图形菜单界面:显示实时年份,日期,星期及时间(2)查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数替换(等长,不等长):对文本中的文本实现等长及不等长替换插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本块移动(行块,列块移动):向下移动一行,向上移动一行,具体行号列号处向左移动或向右移动删除:删除一行,删除莫一行,莫列,定长的内容(3)可正确存盘、取盘;:可读取,保存文本;(4)正确显示总行数。

(行数不少于5行,每行字符数不少于80个字符)采用的数据结构1:采用的逻辑结构文本编辑器主要是针对文本进行编辑,文本的操作就是对字符的操作。

文本编辑器可以从行、列两个方向进行编辑。

每一行可以看成一个线性表,线性表是一种线性结构,线性结构的特点是数据元素之间为线性关系,据元素“一个接一个的排列”。

在一个线性表中数据元素的类型是相同的,由于每一行可以存储的最大字数是相同的,行方向所有线性表的最大长度可以设置成相同的。

行与行之间的关系也可以看成一个线性表。

2.采用的存储结构线性表的存储分为两种:顺序存储和链式存储。

顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。

在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序表的数据存储区域是再合适不过的。

链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建立数据元系之间的线性关系对每个数据元素除了存放数据元素自身的信息之外,还需要和一起存放其后继或前驱所在的存储单元的地址,这两部分信息组成一个“结点”,每个元素都如此。

存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。

只有一个存储单元地址的为单链表,有两个存储单元地址的为双链表。

考虑到实际的功能需求,每行的线性表可以用顺序存储方式,每个字符是一个节点。

c#文本编辑器课程设计

c#文本编辑器课程设计

摘要:这个课题是一个关于文本编辑器的小程序,运用一些简单的记事本的基本操作功能来实现的。

该程序利用C#程序编写,在Visual Studio 2005的环境下进行调试运行的。

对于该程序开发,必须达到以下要求:1、熟悉.NET开发环境,能够使用C#语言在.NET平台上独立设计、开发WINDOWS应用程序。

2、掌握C#语言的异常处理技术,能够使用.NET各种调试方法调试代码,掌握帮助的使用方法。

3、掌握常用控件以及控件的常用属性的使用方法。

4、界面要做到简洁易懂,具有人性化等特点。

5、程序没有在使用过程中不存在任何的问题。

目录摘要: (1)一、采用技术 (3)1. visual studio 2005编辑环境 (3)2.C#的窗体编程编程 (3)二、选题说明 (4)三.总体说明 (4)1. 程序的基本结构 (4)2. 程序的主要技术 (4)四.详细说明 (5)1. 界面设计 (5)五.遇到的问题和解决方法 (9)六.心得体会 (9)七.参考文献 (10)八.部分程序代码 (10)一、采用技术1. visual studio 2005编辑环境Visual Studio 是微软公司推出的开发环境。

是目前最流行的 Windows 平台应用程序开发环境。

目前已经开发到 8.0 版本,也就是 Visual Studio 2005。

Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。

Visual Studio 是一套完整的开发工具集,用于生成 Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。

Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成开发环境 (IDE),利用此 IDE 可以共享工具且有助于创建混合语言解决方案。

简易文本编辑器课程设计报告说明书

简易文本编辑器课程设计报告说明书

简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。

基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。

程序算法立足于书本并适当改良,能够实现文本的一些特定操作。

关键词:文本编辑 C语言程序算法Abstract:The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.Key words:Text editing C programming language Program algorithm1引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第一章课程设计目的和要求 (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 设计背景随着计算机在社会生活深红越来越深入而广泛的应用,在文件中有些文件需要改动,比如插入,替换,删除等一系列操作,为了更好的修改文件,不得不进行一系列的操作来修改,因此,文件的修改操作是十分重要的。

2.2简易文本编辑器设计内容1.具有显示总行数;2.具有:查找,替换(等长,不等长),插入(插串,文本块的插入),块移动(行块,列块移动),删除;3.可正确存盘,取盘。

第三章详细设计3.1总体结构图该程序是用c语言编译成的,主要能够实现查找功能、复制功能、粘贴功能、替3.2函数分析ID_FILE_NEW:新建ID_FILE_OPEN:打开ID_FILE_PRINT:打印DECLARE_MESSAGE:删除ID_EDIT_FIND:查找ID_EDIT_REPLACE:替换ID_EDIT_CUT:剪切ID_EDIT_COPY:粘贴ID_EDIT_HELP:帮助ID_EDIT_ALL :全选3.3主函数程序流程图图3-2 主函数流程图为了添加工具按钮,要使用ActiveX控件中的Microsoft Windows Common Control 6.0控件。

请按上述方法添加。

选择其中一个叫ImageList的控件来装载图像。

在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。

图片可在C:\Microsoft VisualStudio\Common\Graphics\Bitmaps\TlBr_W98下选择(假设VB安装在C盘下)。

在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。

如插入“新建”的图片,我们在“关键字”栏注明“New”。

图片有了,接下来在程序界面添加工具栏(ToolBar)。

添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:①“图像列表”:选择ImageList1②“样式”:根据喜爱选择1-trbStandard或者2-trbFlat继续点击“属性页”的“按钮”选项,插入若干按钮。

按钮有多种样式,请根据需要设置。

这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。

3.4子函数流程图图3-3 ID_EDIT_FIND查找流程图这是实现查找功能的函数。

首先我们要输入想要查找的内容。

然后点击确定。

程序根据输入的内容,检索文本。

如果检索到输入的内容就显示出来,如果没有就要求重新输入。

图3-4 ID_EDIT_REPLACE替换流程图这是实现替换功能的函数。

首先要选中要替换的内容,然后输入想要替换的内容。

点击替换按钮,电脑会检索文本。

然后用项替换的内容,替换选中的内容。

图3-5 ID_EDIT_CUT剪切流程图这是实现剪切功能的函数。

首先要选中剪切的内容。

然后剪切,程序会把剪切的内容放到建立的缓存中。

第四章程序编码与调试4.1 程序编码1.设计方法和基本原理:(1)问题的解决方案:根据问题描述,可以将问题解决分为三步:①绘制界面:新建一个标准EXE工程,点击Icon属性给它找个合适的Icon图标。

②编辑菜单。

按Ctrl+E调出菜单编辑器,设置菜单编辑器的菜单项。

③编写代码。

④添加工具按钮⑤编写工具按钮代码(2)主要技术问题的描述:①为了将要编辑的文档显示出来,要添加一个控件。

使用单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到Microsoft RichText Box 6.0并选中它,“确定”按钮。

这时左边的工具栏上出现了该控件的图标。

在窗体上绘制RichText Box,其大小和位置可不用理睬,我们将在代码中处理,为了在打开和编辑文件时有垂直滚动条,可以把它的ScrollBar属性设为2-rtfVertical。

②将ActiveX控件中的公共对话框Microsoft Common Dialog 6.0控件添加到控件箱中,以便提供一组标准的操作对话框,进行诸如打开和保存文件,设置打印选项,以及选择颜色和字体等操作。

③参考教材第五章的内容,编写程序代码。

④为了添加工具按钮,要使用ActiveX控件中的Microsoft Windows Common Control6.0控件。

请按上述方法添加。

选择其中一个叫ImageList的控件来装载图像。

在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。

图片可在C:\Microsoft Visual Studio\Common\Graphics\Bitmaps\TlBr_W98下选择(假设VB安装在C盘下)。

在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。

如插入“新建”的图片,我们在“关键字”栏注明“New”。

图片有了,接下来在程序界面添加工具栏(ToolBar)。

添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项:①“图像列表”:选择ImageList1②“样式”:根据喜爱选择1-trbStandard或者2-trbFlat继续点击“属性页”的“按钮”选项,插入若干按钮。

按钮有多种样式,请根据需要设置。

这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“New”(即ImageList1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。

⑶编写工具栏的按钮代码:工具栏按钮的代码编辑很简单,可以按照下面的格式去编写:Private Sub ToolBar1_ButtonClick(ByVal Button As MSComctlLib.Button)On Error Resume Next '出错处理Select Case Button.Key '按关键字选择Case "新建"mnuNew_Click '等于菜单项“新建”被单击Case "打开" '等于菜单项“打开”被单击mnuOpen_Click'......(继续编写其它按钮的代码)End Select4.2编码调试根据数据结构、函数功能和主要的流程图,进行源代码操作。

在编码时,注意代码的书写规范,包括命名惯例、注释、分隔和缩进等,这样使程序层次清晰,增强可读性和可维护性。

编码完成后,检查错误,编译直到正常运行,达到预期效果。

4.3运行结果运行结果及部分运行界面截图如下:图4-1 初始状态图4-2 替换操作图4-3 查找操作第五章课程设计心得与体会步入大学,我们接触到了更多的计算机专业知识。

在大一第二学期,学习了c++程序设计,大二的时候又学习了数据结构课程。

而这学期的课程设计,对我来说是一个新的挑战。

从开始到现在,课程设计的每一个环节,我自己都精心准备,让我对编程有了更深刻的认识,也是我知道了自己的不足之处。

在老师刚布置下来任务之后,我便开始在网上和图书管理搜集资料,虽然关于这方面的资料很多,但是好多都和我的不相匹配。

于是我每一本书都仔细阅读,筛选出了对我的程序设计有用的信息。

然后,看懂了是一方面,自己动手做,又是另一个挑战。

我发现如果不是透彻的弄懂了,在实际操作的时候,根本实现不了结果。

于是,我又把资料仔细的阅读,并询问老师和同学们,再加上自己的摸索,最终提早完成了任务。

我设计的是简易文本编辑器,要求有查找,插入,替换,块移动,删除功能,在这次课程设计作业的过程中,虽然课程设计有明确的目的及要求,但由于在设计方面我们没有经验,理论基础知识掌握得不牢固,在设计中难免会出现这样那样的问题。

在编写过程中也有许多小问题,比如没有定义,缺少符号等等,但经过仔细的修改以及寻求别人的帮助把问题也改正了,大多数是因为自己的粗心而引起的。

在设计过程中,要独立的完成自己的设计思路。

在学习理论知识的同时也要参加实践活动,把课本上的知识运动到实践当中去,也是我们学习专业理论知识的最终目的。

本次的课程设计,培养了我C++语言,C语言及其他课程的理论知识和理论联系实际,应用生产实际知识解决实际问题的能力;在设计的过程中还培养独立自主的能力。

在今后的学习过程中我们会更加努力。

附录1 参考文献1.谭浩强:C++程序设计,清华大学出版社,2004年6月第一版2.严蔚敏:数据结构(C语言版),清华大学出版社,1997年4月第一版3.王大刚:《c语言编程宝典》4.鲁沐浴:《c语言最新编程技巧200例》,电子工业出版社,1997年1月5.梁翎,李爱齐:《c语言程序设计使用技巧与程序实例》,上海科普出版社,1996年5月6.陈国章:《Turbo c程序技巧与应用实例》,天津科学技术出版社,1995年5月7.王士元:《c高级使用程序设计》,清华大学出版社,1996年6月8.Herbert Schildt:《C:The Complete Reference》9.黄明,梁旭,万红丽:《c语言课程设计》,电子工业出版社,2006年10.郭翠英:《c语言程序设计案例精编》,中国水利水电出版社,2005年附录2 源程序代码11A081__INCLUDED_)// 简单文本.cpp : Defines the class behaviors for the application.//#include "stdafx.h"#include "简单文本.h"#include "MainFrm.h"#include "简单文本Doc.h"#include "简单文本View.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////// //// CMyAppBEGIN_MESSAGE_MAP(CMyApp, CWinApp)//{{AFX_MSG_MAP(CMyApp)ON_COMMAND(ID_APP_ABOUT, OnAppAbout)// NOTE - the ClassWizard will add and remove mapping macros here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSG_MAP// Standard file based document commandsON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)// Standard print setup commandON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////// //// CMyApp constructionCMyApp::CMyApp(){// TODO: add construction code here,// Place all significant initialization in InitInstance}/////////////////////////////////////////////////////////////////////////// //// The one and only CMyApp objectCMyApp theApp;/////////////////////////////////////////////////////////////////////////// //// CMyApp initializationBOOL CMyApp::InitInstance(){AfxEnableControlContainer();// Standard initialization// If you are not using these features and wish to reduce the size// of your final executable, you should remove from the following// the specific initialization routines you do not need.#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in a shared DLL #elseEnable3dControlsStatic(); // Call this when linking to MFC statically #endif// Change the registry key under which our settings are stored.// TODO: You should modify this string to be something appropriate// such as the name of your company or organization.SetRegistryKey(_T("Local AppWizard-Generated Applications"));LoadStdProfileSettings(); // Load standard INI file options (including MRU)// Register the application's document templates. Document templates// serve as the connection between documents, frame windows and views.CSingleDocTemplate* pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMyDoc),RUNTIME_CLASS(CMainFrame), // main SDI frame windowRUNTIME_CLASS(CMyView));AddDocTemplate(pDocTemplate);// Parse command line for standard shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);// Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo))return FALSE;// The one and only window has been initialized, so show and update it.m_pMainWnd->ShowWindow(SW_SHOW);m_pMainWnd->UpdateWindow();return TRUE;}/////////////////////////////////////////////////////////////////////////// //// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)// No message handlers//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()// App command to run the dialogvoid CMyApp::OnAppAbout(){CAboutDlg aboutDlg;aboutDlg.DoModal();}/////////////////////////////////////////////////////////////////////////// //// CMyApp message handlers// MainFrm.h : interface of the CMainFrame class///////////////////////////////////////////////////////////////////////////// //#if !defined(AFX_MAINFRM_H__2B4A6574_EC9D_4C5B_802E_9FFB04EF8786__INCLUDED_ )#define AFX_MAINFRM_H__2B4A6574_EC9D_4C5B_802E_9FFB04EF8786__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CMainFrame : public CFrameWnd{protected: // create from serialization onlyCMainFrame();DECLARE_DYNCREATE(CMainFrame)// Attributespublic:// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMainFrame)virtual BOOL PreCreateWindow(CREATESTRUCT& cs);//}}AFX_VIRTUAL// Implementationpublic:virtual ~CMainFrame();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected: // control bar embedded membersCStatusBar m_wndStatusBar;CToolBar m_wndToolBar;// Generated message map functionsprotected://{{AFX_MSG(CMainFrame)afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);// NOTE - the ClassWizard will add and remove member functions here.// DO NOT EDIT what you see in these blocks of generated code!//}}AFX_MSGDECLARE_MESSAGE_MAP()};/////////////////////////////////////////////////////////////////////////// ////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately beforethe previous line.#endif// !defined(AFX_MAINFRM_H__2B4A6574_EC9D_4C5B_802E_9FFB04EF8786__INCLUDED_)// 简单文本.h : main header file for the 简单文本 application//#if !defined(AFX__H__1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3__INCLUDED_)#define AFX__H__1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000#ifndef __AFXWIN_H__#error include 'stdafx.h' before including this file for PCH #endif#include "resource.h" // main symbols/////////////////////////////////////////////////////////////////////////// //// CMyApp:// See 简单文本.cpp for the implementation of this class//class CMyApp : public CWinApp{public:CMyApp();// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyApp)public:virtual BOOL InitInstance();//}}AFX_VIRTUAL// Implementation//{{AFX_MSG(CMyApp)afx_msg void OnAppAbout();// NOTE - the ClassWizard will add and remove member functions here.// DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGDECLARE_MESSAGE_MAP()};/////////////////////////////////////////////////////////////////////////// ////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX__H__1DD5B072_4F80_4F7C_9F05_2FFBCD7DE7F3__INCLUDED_)// 简单文本Doc.h : interface of the CMyDoc class///////////////////////////////////////////////////////////////////////////// //#if !defined(AFX_DOC_H__55667EB4_AB9C_44C9_B790_E5E249118EB1__INCLUDED_) #define AFX_DOC_H__55667EB4_AB9C_44C9_B790_E5E249118EB1__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CMyDoc : public CDocument{protected: // create from serialization onlyCMyDoc();DECLARE_DYNCREATE(CMyDoc)// Attributespublic:// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyDoc)public:virtual BOOL OnNewDocument();virtual void Serialize(CArchive& ar);//}}AFX_VIRTUAL// Implementationpublic:virtual ~CMyDoc();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:// Generated message map functionsprotected://{{AFX_MSG(CMyDoc)// NOTE - the ClassWizard will add and remove member functions here.// DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGDECLARE_MESSAGE_MAP()};/////////////////////////////////////////////////////////////////////////// ////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif// !defined(AFX_DOC_H__55667EB4_AB9C_44C9_B790_E5E249118EB1__INCLUDED_)// 简单文本View.h : interface of the CMyView class///////////////////////////////////////////////////////////////////////////// //#if !defined(AFX_VIEW_H__1E4AC431_E4C9_4EE2_86C3_195FF811A081__INCLUDED_) #define AFX_VIEW_H__1E4AC431_E4C9_4EE2_86C3_195FF811A081__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CMyView : public CView{protected: // create from serialization onlyCMyView();DECLARE_DYNCREATE(CMyView)// Attributespublic:CMyDoc* GetDocument();// Operationspublic:// Overrides// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CMyView)public:virtual void OnDraw(CDC* pDC); // overridden to draw this viewvirtual BOOL PreCreateWindow(CREATESTRUCT& cs);protected:virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);//}}AFX_VIRTUAL// Implementationpublic:virtual ~CMyView();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endifprotected:// Generated message map functionsprotected://{{AFX_MSG(CMyView)// NOTE - the ClassWizard will add and remove member functions here.// DO NOT EDIT what you see in these blocks of generated code !//}}AFX_MSGDECLARE_MESSAGE_MAP()};#ifndef _DEBUG // debug version in 简单文本View.cppinline CMyDoc* CMyView::GetDocument(){ return (CMyDoc*)m_pDocument; }#endif/////////////////////////////////////////////////////////////////////////// ////{{AFX_INSERT_LOCATION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_VIEW_H__1E4AC431_E4C9_4EE2_86C3_195FF8。

相关文档
最新文档