数据结构课程设计--简易文本编辑器
数据结构课程设计--简易文本编辑器
课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级: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菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。
数据结构简易文本编辑器
数据结构简易文本编辑器在当今数字化的时代,文本编辑是我们日常工作和生活中经常进行的操作。
从撰写文章、编辑代码到简单的记事,都离不开文本编辑器的帮助。
而数据结构在文本编辑器的设计和实现中起着至关重要的作用,它决定了编辑器的性能、功能和用户体验。
首先,让我们来了解一下什么是数据结构。
简单来说,数据结构是一种组织和存储数据的方式,以便于对数据进行访问、修改和操作。
常见的数据结构包括数组、链表、栈、队列、树和图等。
在文本编辑器中,通常会用到多种数据结构来实现不同的功能。
对于一个简易的文本编辑器,我们可以使用线性的数据结构来存储文本内容。
一种常见的选择是使用字符数组。
字符数组可以直接存储文本中的字符,通过索引可以快速访问和修改特定位置的字符。
但这种方式存在一些局限性,比如当需要插入或删除大量字符时,可能会导致效率低下,因为需要移动大量后续的字符。
为了提高插入和删除操作的效率,我们可以考虑使用链表。
链表中的每个节点存储一个字符和指向下一个节点的指针。
在进行插入和删除操作时,只需要修改相关节点的指针即可,不需要移动大量的数据。
但链表的随机访问性能较差,如果需要频繁访问特定位置的字符,可能会比较耗时。
除了存储文本内容的数据结构,我们还需要考虑如何实现文本的编辑操作。
比如,当用户输入新的字符时,我们需要将其插入到适当的位置。
如果使用字符数组,我们可以先找到插入位置,然后将后续的字符向后移动,再将新字符插入。
如果使用链表,则可以直接在插入位置创建新的节点,并调整相关指针。
删除操作类似。
对于字符数组,需要将删除位置后的字符向前移动。
对于链表,只需修改相关指针,释放被删除的节点。
为了实现文本的查找和替换功能,我们可以使用一些搜索算法,比如顺序搜索或二分搜索。
如果文本内容是有序的,二分搜索可以大大提高查找的效率。
另外,撤销和重做功能也是文本编辑器中常见的需求。
为了实现这两个功能,我们可以使用栈来保存操作的历史记录。
当执行一个操作时,将其相关信息压入撤销栈。
简单行编辑器 数据结构 课程设计
简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。
行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。
为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。
1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。
链表的每一个节点包含一个字符和指向下一个节点的指针。
这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。
1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。
这个指针可以指向一个字符之前、之后或者字符本身的位置。
通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。
2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。
插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。
- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。
2.2 删除操作:用户可以删除光标当前位置的字符。
删除操作包括以下步骤:- 找到光标所在节点。
- 更新链表的指针,将光标所在节点从链表中移除。
2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。
光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。
2.4 文本显示:用户可以查看当前编辑的文本内容。
通过遍历链表,将字符挨次输出即可。
3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。
- 光标位置指示器:显示光标当前位置。
- 命令输入框:接收用户输入的命令。
4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。
- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。
数据结构课程设计之文本编辑器
##大学数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院学生姓名:班级:学号:____起迄日期: 2011年6月20日至2011年6月30日指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:简易文本编辑器主要是针对文字编辑处理,对于如何编辑一个简易文本编辑器程序我们可以利用线性表示实现其功能,线性表便于插入删除查找功能,而文本编辑器需要用到这些功能,因此可以利用线性表实现。
对于文本编辑器应该具有插入、删除、查找等功能,并且可以显示所有输入数据,可正确存盘、取盘,正确显示编辑的文字长度。
2.基本功能:简易文本编辑器应该具有的功能:图形菜单界面:位置查找:数据查找:显示所有输入数据:插入:删除文本信息:可正确存盘、取盘:正确显示长度:3.输入输出:输入数据,数据类型为整形,且输入的字符或数字不多于100个,输出为输出输入的数据,输出输入数据的长度,输出插入元素及插入后的数据,输出查找元素的,输出的数据均为整形。
二、概要设计1.设计思路:首先构造一个线性表, 然后利用线性表的存储结构顺序存储方式,实现文本的编辑添加查找删除.2.数据结构设计:程序采取了线性结构利用顺序存储的方法,采用该结构的原因是线性表利于存储、插入、删除、查找、修改等功能,使用它可以使程序运行简单方便。
定义程序中用到的抽象数据类型;抽象数据类型线性表的定义如下:ADT SqList{数据对象:D={ai | ai∈data,i=1,2,3……,n,n≥0}数据关系:R1={<ai-1,ai>| ai-1,ai∈D,i=1,2,3,……,n}基本操作:InitList(*L)操作结果:构造一个空的线性表L。
GetLength(L)初始条件:线性表L已存在。
操作结果:返回L中数据元素的个数。
GetElem( L, i,*e)初始条件:线性表L已存在,1≤i≤L.Length.操作结果:查找指定的某元素i,并将值赋给e,用e 输出。
C语言实现简易文本编译器
C语言实现简易文本编译器数据结构课程设计之简易文本编译器(C语言实现)需求分析(1)具有图形菜单界面:显示实时年份,日期,星期及时间(2)查找:查找文本中的字符串,显示其出现的行数,列数及总共出现次数替换(等长,不等长):对文本中的文本实现等长及不等长替换插入(插串,文本块的插入):插入一行或在具体行号列号处插入文本块移动(行块,列块移动):向下移动一行,向上移动一行,具体行号列号处向左移动或向右移动删除:删除一行,删除莫一行,莫列,定长的内容(3)可正确存盘、取盘;:可读取,保存文本;(4)正确显示总行数。
(行数不少于5行,每行字符数不少于80个字符)采用的数据结构1:采用的逻辑结构文本编辑器主要是针对文本进行编辑,文本的操作就是对字符的操作。
文本编辑器可以从行、列两个方向进行编辑。
每一行可以看成一个线性表,线性表是一种线性结构,线性结构的特点是数据元素之间为线性关系,据元素“一个接一个的排列”。
在一个线性表中数据元素的类型是相同的,由于每一行可以存储的最大字数是相同的,行方向所有线性表的最大长度可以设置成相同的。
行与行之间的关系也可以看成一个线性表。
2.采用的存储结构线性表的存储分为两种:顺序存储和链式存储。
顺序存储是指在内存中用地址连续的一块存储空间顺序存放线性表的各元素,用这种存储形式存储的线性表称为顺序表。
在程序设计语言中,一维数组在内存中占用的存储空间就是一组连续的存储区域,因此,用一维数组来表示顺序表的数据存储区域是再合适不过的。
链式存储是通过-组任意的存储单元来存储线性表中的数据元素的,为建立数据元系之间的线性关系对每个数据元素除了存放数据元素自身的信息之外,还需要和一起存放其后继或前驱所在的存储单元的地址,这两部分信息组成一个“结点”,每个元素都如此。
存放数据元素信息的称为数据域,存放其前驱或后继地址的称为指针域。
只有一个存储单元地址的为单链表,有两个存储单元地址的为双链表。
考虑到实际的功能需求,每行的线性表可以用顺序存储方式,每个字符是一个节点。
简易文本编辑器
攀枝花学院课程设计摘要此次课程设计设计了一个简易的文本编辑器,该编辑器通过利用DOS系统功能调用和BIOS功能调用设计一有菜单栏的编辑窗口,在该窗口中可以实现文本的输入。
该文本编辑器利用BIOS功能调用中的10H中断类型,调用06号功能,实现了设置窗口背景的功能;调用DOS功能中的09号功能,实现显示菜单信息字符串的功能;调用BIOS中的键盘I/O中断调用中的0号功能;从键盘读取字符,通过对上,下,左,右,光标间以及DEL,INS,BACKSPACE,END,HOME键的扫描码的判断,结合10H中中断的02号,03号功能确定光标的相应移动,从而实现对输入文本的全屏幕编辑;利用DOS系统功能调用中的文件管理功能,如建立文件,打开文件,读文件,写文件,实现对文件的操作。
运行可执行文件,输入文本,利用Del键、Home键、BackSpace键、Home键、上下左右光标键对输入文本的全屏幕编辑,按F1键激活菜单,下移光标,选择保存,输入文件名。
也可以选择File菜单的其他菜单项,它们的功能均可实现。
按F10键激活帮助,按ESC键退出帮助。
关键词:DOS系统功能调用,BIOS功能调用,中断I攀枝花学院课程设计1、课程设计题目:简易文本编辑器1.1 问题提出及设计思想该程序主要是设计一个简易文本编辑器,达到可以可利用Del键、BackSpace 键、Home键、End键上下左右光标键对文本进行全屏编辑的目的。
用BIOS功能调用中的10H中断类型,调用06号功能,设置窗口背景;调用DOS功能中的09号功能,实现显示菜单信息字符串;调用BIOS中的键盘I/O中断调用中的0号功能;从键盘读取字符,通过对上,下,左,右,光标间以及DEL,INS,BACKSPACE,END,HOME键的扫描码的判断,结合10H中中断的02号,03号功能确定光标的相应移动,从而实现对输入文本的全屏幕编辑;利用DOS系统功能调用中的文件管理功能,如建立文件,打开文件,读文件,写文件,实现对文件的操作。
数据结构文本编辑器
数据结构课程设计报告一.需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。
静态存储一页文章,每行最多不超过80个字符,共N行。
要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。
(4)插入某一字符或者子串。
(5)查找某一字符或者子串。
存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。
输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。
通过题目及其要求可知,本程序应实现以下功能:(1)文章内容的输入:包括字母、标点符号、数字等;(2)文章内容的统计:包括文章中大写字母、小写字母、数字、标点符号、空格以及文章所有字数的个数的统计;(3)文章内容的处理:包括对文章内容的查找、删除以及对指定位置进行插入操作,其中在查找的过程中统计出该字符或字符串在文章中出现的次数;2.问题分析本程序是对一段英文文章的内容进行处理,存储方式采用链式存储,没有文件操作,故本程序对其文本内容的所有操作都是在链表中进行的。
对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中,在此部分设计中最大的问题在于输入文章过程中输入的字符数大于80时如何换行;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过比较即可得到,标点符号通过ASCⅡ比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数及位置并输出个数及位置。
数据结构课程设计小型文本编辑器的设计
数据结构课程设计小型文本编辑器的设计沈阳航空航天大学课程设计报告课程设计名称:数据结构课程设计课程设计题目:小型文本编辑器的设计院(系):计算机学院专业:班级:学号:姓名:指导教师:目录沈阳航空航天大学 ........................... 错误!未定义书签。
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初始化一个串......................... 错误!未定义书签。
数据结构课程设计简易文本编辑器
《数据结构》课程设计班级: 10计本2班姓名:邓寅森学号: 2010305202指导教师:杨老师完成日期: 2011年12月计算机科学与技术系课程设计评分表课程名称:数据结构简易文本编辑器项目评价设计方案的合理性与创造性设计与调试结果设计说明书的质量功能完善度综合成绩学号班级姓名综合成绩2010305202 10计本2班邓寅森教师评语教师签名:日期:目录一、需求分析 (3)二、概要设计 (3)三、模块设计 (5)四、详细设计 (7)五、调试分析 (8)六、用户使用说明 (12)七、参考文献 (12)八、对所设计的软件进行自我评价,如创新点、未解决的问题等情况说明 (12)九、程序源代码: (13)一、需求分析1.1 问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
1.2 基本任务通过用户调查分析及实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)查询文本中满足要求的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5) 查看所有的文本信息。
二、概要设计为了完成需求分析的基本任务,主要从以下3个方面进行设计:2.1 主界面设计为了实现简易文本编辑器的各项功能,设计了一个含有多个菜单项的主控菜单模块以操作系统的各项功能,以方便用户使用系统。
系统进入菜单运行界面如图所示:简易文本编辑器主菜单2.2 数据结构设计系统采用线性表的顺序存储结构表示和存储“简易文本编辑器”中的信息。
实现文本的输入,删除,插入,查找,显示功能。
2.3 系统功能设计运行程序,提示进入菜单,按“回车键”进入主菜单,再可以在主菜单上进行各项操作。
每次进入菜单,选择“1键”新建文本,然后才可以进行其他操作,或者按“0键”选择退出。
简易文本编辑器课程设计报告说明书
简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由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引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。
简易文本编辑器数据结构课设
摘要当下C++语言是一门重要的课程学习,学会运用并结合其他的知识一起解题是一件值得我们重视的,数据结构是一门结合C++知识的重要课程,因此我们要学会将平时课本的知识运用到我们现实生活当中,这样才能让我们所学的知识更加深刻。
简易文本编辑器的问题就是一个例子,传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
关键词:简易文本编辑器,数据结构,顺序表。
目录一、需求分析11.1问题描述11.2基本任务1二、概要设计12.1主界面设计12.2数据结构设计1三、详细设计23.1清空内容模块23.2打开文件模块23.3输入模块23.4插入模块23.5删除模块23.6替换模块23.7显示模块23.8保存模块33.9系统层次图3四、测试结果34.1文本编辑器主界面34.2系统功能4五、调试分析7六、心得体会8七、参考文献9八、程序源代码10一、需求分析1.1问题描述传统的纸质文档已经不能满足大家的需求,有容易丢失、查找不方便等缺点。
计算机信息管理为人们的生活、工作提供了方便,提高了效率。
“简易文本编辑器”就是为了帮助老师、同学或其他一些需要使用文本编辑的人员进行管理和分析的一种计算机应用程序。
1.2基本任务通过用户调查分析和实际需求,系统需要实现如下基本任务:(1)输入数据信息建立文本;(2)打开文本读取已保存的信息;(3)插入新的信息到文本中;(4)删除不再需要的文本信息;(5)替换不需要的文本信息;(6)显示所有的文本信息;(7)保存所输入、插入、替换过的文本信息;(8)清空文本信息。
二、概要设计2.1主界面设计为了实现简易文本编辑器的各项功能,设计一个含有多个菜单项的主控菜单模块以操作系统的各项功能,进而方便用户使用系统。
2.2数据结构设计为实现数据的有序存储,该编辑器应该用顺序存储结构来存储输入的信息。
数据结构课程设计——简单行编辑程序
电子信息工程学院
课程设计报告
设计名称:数据结构课程设计
简单行编辑程序
姓名:学号:
专业班级:电子信息工程学院
系(院):
设计时间:
设计地点:EDA实验室
要打开的文件内容显示出来。
3.在执行“5.Open the file”时,输入想要打开文件的正确路径,回车。
如果想要打开的文件不存在,则跳出运行。
4.在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。
六测试成果
图(1):
图(2):
图(3):
图(4):
七附录(源程序清单)
#include "stdio.h"
#include "stdlib.h" #include "string.h" struct line{。
数据结构课程设计报告-文本编辑器参考模板
《数据结构》课程设计报告题目:基于顺序结构的文本编辑器的设计专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:2014-2015学年第一学期目录1课程设计内容 (1)1.1 设计内容 (1)1.2 设计任务 (1)1.3 具体要求 (1)2 概要设计 (1)2.1 系统的功能简介 (1)2.2 各个模块之间的主要关系 (2)3 设计过程及代码分析 (2)4 设计结果与分析 (15)5 源程序 (16)6 总结 (24)7 致谢 (24)8 参考文献 (25)1 课程设计内容1.1 设计内容《文本编辑器》主要根据课程设计要求进行设计的,本次课程设计的内容及要求是设计一个文本编辑器,能实现文本内容输入、显示、统计、处理、保存和退出文本编辑器等基本功能,主界面具有图形菜单界面、输入文本、打开文件、显示当前文本内容、进入文本内容统计菜单、进入文本内容处理菜单、保存、退出文本编辑器。
其中文本内容统计菜单包含大小写字母、数字、标点符号、空格、所有字符的统计;文本内容处理菜单包含查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
1.2 设计任务主要利用C语言的文件操作能力设计一个简单的文本编辑器,对于文本编辑器来说,数据结构相对简单,使用一个有较大长度的顺序表即可,在程序中可采用一维数组来实现。
使用数组表示的顺序表来存储文本具有简洁、访问方便、输出方便等特点。
1.3 具体要求明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用数据结构进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
2 概要设计2.1 系统的功能简介该系统的主要功能是实现文本内容输入、显示、统计、处理、保存。
首先,输入文本内容并保存;选择打开文件,打开刚才保存的文件;选择显示当前文章内容,可以预览文件内容;进入文章内容统计菜单,可以对文章中大写字母、小写字母、数字、标点符号、空格、所有字数的统计;进入文章内容处理菜单,查找、删除文章中的字符或者字符串,向文章中插入字符或者字符串,从文章中复制字符或者字符串,修改行内容,替换字符或者字符串。
文本器电子稿
数据结构课程设计报告题目:简易文本编辑器院(系):计算机工程学院专业:嵌入式系统软件班级:嵌入式1091学生:陈进美指导教师:寇海洲孙成富邱军林殷路2010年12月目录一、设计目的 (1)二、设计内容 (1)三、程序设计步骤 (2)四、调试分析 (8)五、测试结果 (8)六、课程设计小结: (15)一、设计目的1、能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。
2、提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。
3、初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。
4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
5、培养根据选题需要选择学习书籍,查阅文献资料的自学能力。
二、设计内容1、系统名称:简易文本编辑器简易文本编辑器的功能包括:删除,查找,移动,存盘,取盘,替换,求总行数,插入等。
要求有图形界面,以使上述业务可以简单操作。
2、要求:(1)编辑器可以从文件中读取数据,进行要求操作,再存入该文件中。
文件操作前后都应分行。
(2)通过此文本编辑器可以实现如下功能:①取盘功能:读入文件内容。
②查找功能:根据客户提供的内容查找首字母在文本中的位置。
②删除功能:根据客户提出的内容将文本中的该内容删除。
④插入功能:在文本中客户要求的位置插入客户要求插入的内容。
④移动功能:按客户要求将相应行移到指定位置。
④替换功能:按客户要求将指定内容替换成客户提供的内容。
④求总行数功能:求得文本中的行数。
④将改好的内容存入文本中。
三、程序设计步骤三、程序设计步骤1)功能分析说明图:2)采用主要的数据结构类型。
using System;using System.Collections.Generic; using ponentModel; using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace _1{public partial class Form1 : Form{char[] zong=new char [100];//存储文件内容的字符数组zongstring zong1;//存储文件内容的字符串zong1int danchang = 0;//文件中字符满行的行数public Form1(){InitializeComponent();}private void textBox6_TextChanged(object sender, EventArgs e) {}private void bqp_Click(object sender, EventArgs e){string a = "C:\\123\\111.txt";FileInfo f = new FileInfo(a);StreamReader reader1 = f.OpenText();string zong3 = reader1.ReadLine();//读出第一行string zong2 = reader1.ReadLine();//读出第二行int j = 2;StringBuilder sb = new StringBuilder("", 100);sb.Append(zong3);//合并一二行sb.Append(zong2);while (zong3.Length ==zong2.Length)//&&(danchang*j<zong1.Length||zong1.Length==0)){zong2 = reader1.ReadLine();//逐行读出?sb.Append(zong2);//逐行并入sbj++;}reader1.Close();zong1 = sb.ToString();//读出的内容存入zong1zong = zong1.ToCharArray();//存入zongqp.Text = zong1;//将读出的内容显示出来danchang = zong3.Length;//求出?满行字符数}private void bcz_Click(object sender, EventArgs e){int i = 0;string ab = cznr.Text;int ef = zong1.Length - ab.Length+1;//实际最多比较个数int i1 = 0;for(i=0;i<ef;i++){int j=0;if(zong1[i]==ab[0])//找到Ì查找内容的一个字符{for (j=i;j<ab.Length + i;j++)//比较后续字符{if (zong1[j] == ab[j-i] && j==(i + ab.Length - 1))//查到内容{ i1 = i;//记录索引i = ef;//跳出大循-环break;//跳出小循-环}}}}i1++;czjg.Text =i1.ToString();//输出查找内容的位置}private void bcr_Click(object sender, EventArgs e){StringBuilder sb = new StringBuilder("", 100);sb.Append(zong);string zong2 = sb.ToString();int i = int.Parse(crwz.Text);//读入插入位置StringBuilder a = new StringBuilder(zong2.Substring(0, i - 1), 100);//取出zong1中插入位置前的字符串a.Append(crnr.Text);//并入插入内容zong2 = zong2.Substring(i - 1, zong2.Length - i + 1);//取出插入位置后的Ì字符串a.Append(zong2);//并入zong1 = a.ToString();//存入zong1zong = zong1.ToCharArray();//存入zong}private void bth_Click(object sender, EventArgs e){int i = 0;string ab = yw.Text;int ef = zong1.Length - ab.Length+1;int i1 = 0;for(i=0;i<ef;i++){int j=0;if(zong1[i]==ab[0]){for (j=i;j<ab.Length + i;j++){if (zong1[j] == ab[j-i] && j==(i + ab.Length - 1)){ i1 = i;i = ef;break;}}}}//查找要替换的原文的索引//下面与插入类似?string c = zong1.Substring(0, i1);StringBuilder sb1 = new StringBuilder("", 100);sb1.Append(c);sb1.Append(tw.Text);sb1.Append(zong1.Substring (i1 + ab.Length, zong1.Length - i1 - ab.Length)); zong1=sb1.ToString ();zong = zong1.ToCharArray();}private void bsc_Click(object sender, EventArgs e){int i = 0;string ab = scnr.Text;int ef = zong1.Length - ab.Length + 1;int i1 = 0;for (i = 0; i < ef; i++){int j = 0;if (zong1[i] == ab[0]){for (j = i; j < ab.Length + i; j++){if (zong1[j] == ab[j - i] && j == (i + ab.Length - 1)){i1 = i;i = ef;break;}}}}//查删除内容的索引//类似替换,只是替文为空string c = zong1.Substring(0, i1);StringBuilder sb1 = new StringBuilder("", 100);sb1.Append(c);sb1.Append(zong1.Substring(i1 + ab.Length, zong1.Length - i1 - ab.Length)); zong1 = sb1.ToString();zong = zong1.ToCharArray();}private void bcp_Click(object sender, EventArgs e){int i = zong1.Length / danchang;int yushu=zong1.Length %danchang;if(yushu!=0)i++;string []b=new string [i];for (int j = 0; j < i - 1; j++){b[j]=zong1.Substring(j*danchang,danchang);}b[i-1]= zong1.Substring(zong1.Length-yushu, yushu);string fullPath = "C:\\123\\111.txt";File.Delete(fullPath);FileStream fs= File.Create(fullPath);fs.Close();if (File.Exists(fullPath)){using (StreamWriter sw = new StreamWriter(fullPath, true,Encoding.Default)){for(int j=0;j<i;j++)sw.WriteLine(b[j]);}}cp.Text = zong1;}private void byd_Click(object sender, EventArgs e){int i = zong1.Length / danchang;//求满行数int yushu = zong1.Length % danchang;//非满行的字符数if (yushu != 0)//确定总行数i++;string[] b = new string[i];for (int j = 0; j < i - 1; j++){b[j] = zong1.Substring(j * danchang, danchang);}b[i - 1] = zong1.Substring(zong1.Length - yushu, yushu);//以行为单位存入字符串数组int i1 = int.Parse(ydh.Text);//读入要移动的行int i2 = int.Parse(hd.Text);//读入移动的目的地string c = b[i1 - 1];//取出要移动的行if (i1 < i2)//如果后移,则将移动行与目的地间的行串前移(包括目的地的行串)ê?for (int i3 = i1; i3 < i2; i3++)b[i3 - 1] = b[i3];if (i1 > i2)//如果前移,则将移动行与目的Ì地间的Ì行串后移(包括目的地的行串)for (int i4 = i1 - 2; i4 > i2-2; i4--)b[i4 + 1] = b[i4];b[i2 - 1] = c;//在目的地存入要移动的行StringBuilder sb = new StringBuilder(b[0], 100);//b的所有元素并入sbfor (int cs = 1; cs < i; cs++)sb.Append(b[cs]);zong1 = sb.ToString();//存入zong1zong = zong1.ToCharArray();//存入zong}private void bqzhs_Click(object sender, EventArgs e){int i = zong1.Length / danchang;//求满行数int yushu = zong1.Length % danchang;//非满行D的字符数if (yushu != 0)//确定总行数i++;zhs.Text = i.ToString();//输出行数}private void ydh_TextChanged(object sender, EventArgs e){}private void Form1_Load(object sender, EventArgs e){}}sing System;}四、调试分析从本实习题的编制过程中容易看出,一个复杂的程序不是一蹴而就的,它需要无数次的调试,或者是语言的不规范,或者是考虑的情况部全面。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2015/7/11
2
成绩:
指导教师评语
指导教师(签章):
年月日
3
山东科技大学学生课程设计
目录
1 需求分析说明 .................................................................................................. 2
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
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
言 科学出版社 2010,10
三、 设计应解决下列各主要问题:
____1、 具有菜单图形界面;
2、 具有查找、替换、插入、块移动、删除等功能;
3、 可正确存盘、取盘;
4、 正确显示总行数
四、 设计说明书应附有下列图纸:
1、 模块调用图
2、 程序流程图
五、 小组分工说明:
六、命题发出日期: 2015/7/4 _ 设计完成日期:
2 概要设计说明 .................................................................................................. 4
2.1 设计思想 .......................................................................................................... 4 2.2 模块调用图 ...................................................................................................... 4 2.3 程序代码简介 .................................................................................................. 4
课程设计说明书
课程名称: 数据结构课程设计
专 业: 电子信息科学与技术 班级:
2012-1
设 计 人:
山东科技大学
2015 年 7 月 11 日
1
ห้องสมุดไป่ตู้
山东科技大学
课程设计任务书
一、 课程设计题目:
简易文本编辑器
二、 设计原始资料: [1] 严蔚敏、吴伟民,数据结构( C语言版)清华
大学出版社 2012,05 [2] 孙承爱、赵卫东,程序设计基础—基于 C 语