数据结构课程设计——简单行编辑程序

合集下载

数据结构行编辑程序报告

数据结构行编辑程序报告
SqStack S,S1;
InitStack(S);
InitStack(S1);
char ch,c;
ch=getchar();
while(ch!=EOF){//EOF为全文结束符
while(ch!=EOF&&ch!='\n'){
switch(ch){
case'#':Pop(S,c); break;//仅当栈非空时退栈
二.设计
用栈编辑一个输入缓冲区
1.用“#”符号删除前一个错误的字符,用Pop退出栈顶元素已删除最后一个错误元素。
2.用“@”符号删除前面一行元素,循环使用判断前是否还有元素,如有用Pop删除。直至判断栈空为止。实现退行功能。
此程序很恰当的运用了栈后进先出的特点,将栈定义,在算法中直接调用,帮助实现“#”符号的退格功能和“@”符号的退行功能。
}
Status GetTop(SqStack S,SElemType &e)
{//取栈顶元素
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
}//GetTop
Status Push(SqStack &S,SElemType e)
{//入栈将e放入栈里面
case'@':{
while(!StackEmpty(S))
Pop(S,c);
};break;//构造空栈S
default:Push(S,ch); break;//有效字符进栈,未考虑栈满情形
}
ch=getchar();//从终端接收下一字符
}
while(!StackEmpty(S)){

简单的行编辑器

简单的行编辑器

计算机工程学院课程设计报告设计名称:数据结构课程设计选题名称:简单的行编辑器姓名:学号:专业班级:软件工程软件102 系(院):计算机工程学院设计时间:设计地点:软件工程实验室、教室<2>用户可从键盘上输入字符,以*结尾表示输入字符结束,界面上会输出用户输入的字符,以及行编辑的功能选择项。

(如输入如下字符beijing huan ying ni *)<3>输入选择1,则依次输出:字母个数:17数字个数:0空格个数:4字符总数:21是否继续使用(Y/N):<4.1>选择Y,则出现行编辑器的功能选择,<4.2>如果第三步结束选择N,则输出**********谢谢使用**********<,再次需要进行行编辑器功能选择:输入选择2;则输出“请输入要统计的某一字符”提示用户输入要查找的字符假如输入i;则输出:i在文章中出现次数为:4;是否继续使用(Y/N)<**********谢谢使用**********<则输出行编辑器的功能选择项目;选择3;输出“请输入要删除子串的起始位置和长度:”提示用户输入,如果输入0 7输出“删除某一子串后:”huan ying ni**********谢谢使用**********<5>其他字符测试;例如用户输入:beijing BEIJING 520*输出字母个数:14数字个数:3空格个数:2字符总数:19统计字符i出现次数为2;删除从8号位器长度为7的字串后输出字符为beijing 520五用户手册1.运行程序,首先出现主界面。

主界面首行显示“欢迎使用文本编辑器”,输出提示信息“请输入要编辑的字符”,然后界面显示用户输入的字符。

然后主界面文本编辑器的功能菜单,功能菜单包括三个选项:选项一:统计字数,选择该项可进字数统计,当用户输入字符结束后,选择功能选项一,主界面回自动统计各字符数,然后输出。

2;选项二:统计出现次数,选择该项可进行对文章中某一字符出现字数的统计,当用户选择功能二时,主界面回输出提示信息,提示用户输入要统计的字符,用户可从键盘任意输入字符,以回车键结束。

简单行编辑程序说明书

简单行编辑程序说明书

摘要文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。

限制这些操作以行为单位进行的编辑程序称为行编辑程序。

行编辑器只能从事最简单的输入输出。

输入、编辑、文档显示并不能同步地进行。

编辑的文本文件可能很大,全部读入内存的做法既不经济也不总能实现。

一种解决办法是逐行地编辑,任何时刻只把待编辑文件的一行放在内存,称为活区。

允许输入出错时发现错误并及时更正。

一般而言,用户无法直接输入文本,而只能在文本终端上通过简要的命令,对已有的文档进行添加或编写。

现利用字符串来定义,设计并实现了一个简单行编辑程序,具备行编辑器的行插入,行删除等基本功能。

关键词:行编辑器;文本;字符串AbstractText editor is the basic software tools, the use of computers for word processing, to achieve the insertion of text files, delete modify operation. Restrictions on these operating units to conduct the editor called line editing process. Line editor can be engaged in the input and output of the most simple. The input, editing, document display can not synchronously. Edit text files can be quite large, all read into memory is neither economic nor can always achieve. One solution is to edit line by line, any moment only put a line to edit the file in memory, known as the living area. Allow the discovery of the error input errors and corrected in time. In general, the user cannot enter text directly, but only through the brief commands in the text terminal, the document may be added or write. We use the string to define, design and realize a simple line editor, with the line editor row insert, delete and other basic functions.Keywords: line editor; text; string目录1.概述 (1)1.1设计背景 (1)1.2内容 (2)1.3要求 (2)2.概要设计 (3)2.1程序模块图 (3)2.2 存储结构的定义 (4)2.3功能函数 (4)2.4主函数 (5)3.详细设计 (5)3.1数据结构设计 (5)3.2程序说明 (7)3.3主要函数设计 (7)3.3.1行删除函数del()子程序设计 (7)3.3.2行插入行数insert()子程序的设计 (10)3.3.3活区切换函数saveanddisplay(20)子函数设计 (12)3.3.4显示函数display()子程序设计 (13)4.调试过程及实验结果 (16)4.1调试过程 (16)5总结 (21)参考文献 (22)致谢 (23)1.概述1.1设计背景行编辑器是文本编辑器的一种,针对行进行编辑。

简单行编辑课程设计

简单行编辑课程设计

简单行编辑课程设计一、教学目标本课程的目标是让学生掌握简单文本编辑的基本知识和技能,培养他们独立进行文本编辑的能力,并提高他们对计算机操作的兴趣和信心。

具体目标如下:知识目标:使学生了解文本编辑的基本概念、原理和方法,包括文本的插入、删除、复制、粘贴等功能;掌握常用的文本编辑软件的使用方法,如Notepad、Word等。

技能目标:培养学生能够熟练运用文本编辑软件进行文本的编辑和排版,能够运用基本的查找和替换功能,掌握简单的代码编写和运行。

情感态度价值观目标:通过文本编辑的学习,使学生感受到计算机技术的实用性和趣味性,增强他们对计算机技术的热爱和探索精神,培养他们独立思考和解决问题的能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.文本编辑的基本概念和原理:介绍文本编辑的概念、原理和方法,使学生了解文本编辑在计算机应用中的重要性。

2.文本编辑软件的使用:详细讲解常用的文本编辑软件如Notepad、Word的使用方法,包括文本的插入、删除、复制、粘贴等功能。

3.文本的排版和格式设置:介绍如何进行文本的排版和格式设置,使学生能够熟练掌握文本编辑软件的排版功能。

4.代码编写和运行:讲解简单的代码编写和运行,使学生了解计算机编程的基本过程,培养他们的编程思维。

三、教学方法为了提高教学效果,我们将采用多种教学方法相结合的方式进行教学:1.讲授法:通过讲解文本编辑的基本概念、原理和方法,使学生了解文本编辑的基础知识。

2.案例分析法:通过分析实际案例,使学生掌握文本编辑软件的使用方法和技巧。

3.实验法:让学生亲自动手进行文本编辑的实践,培养他们独立进行文本编辑的能力。

4.讨论法:学生进行小组讨论,分享学习心得和经验,提高他们的合作能力和沟通能力。

四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用适合学生程度的文本编辑教材,为学生提供系统的学习材料。

2.参考书:提供相关的参考书籍,丰富学生的学习资源。

简单行编辑器 数据结构 课程设计

简单行编辑器 数据结构 课程设计

简单行编辑器数据结构课程设计概述:本文旨在设计一种简单的行编辑器,以满足基本的文本编辑需求。

行编辑器是一种常见的文本编辑工具,它允许用户在文本中进行插入、删除、挪移光标等操作。

为了实现这一目标,我们将采用数据结构来管理文本的存储和操作。

1. 数据结构设计:1.1 文本存储:我们可以使用链表作为文本的基本数据结构,每一个节点存储一个字符。

链表的每一个节点包含一个字符和指向下一个节点的指针。

这样的设计可以方便地进行插入和删除操作,同时保持文本的顺序。

1.2 光标位置:光标的位置可以用一个指针指向链表中的某个节点。

这个指针可以指向一个字符之前、之后或者字符本身的位置。

通过挪移光标指针,用户可以在文本中进行插入、删除和挪移操作。

2. 功能实现:2.1 插入操作:用户可以在光标当前位置插入一个字符。

插入操作包括以下步骤:- 创建一个新节点,存储要插入的字符。

- 将新节点插入到光标所在节点的前面或者后面,更新链表的指针。

2.2 删除操作:用户可以删除光标当前位置的字符。

删除操作包括以下步骤:- 找到光标所在节点。

- 更新链表的指针,将光标所在节点从链表中移除。

2.3 光标挪移操作:用户可以通过挪移光标来改变插入和删除操作的位置。

光标挪移操作包括以下步骤:- 根据用户输入的指令,将光标指针向前或者向后挪移一个节点。

2.4 文本显示:用户可以查看当前编辑的文本内容。

通过遍历链表,将字符挨次输出即可。

3. 用户界面设计:为了方便用户操作,我们可以设计一个简单的用户界面,包括以下组件:- 文本显示区域:显示当前编辑的文本内容。

- 光标位置指示器:显示光标当前位置。

- 命令输入框:接收用户输入的命令。

4. 实例演示:假设用户输入以下命令序列:- 插入字符 'A':光标指向开头,文本变为 "A"。

- 插入字符 'B':光标指向 'A' 后面,文本变为 "AB"。

简单行编辑系统课程设计

简单行编辑系统课程设计
gotoxy(57,1+i);
cprintf("%c",179);
}
for(i=1;i<=11;i++)
{
gotoxy(46+i,2);
if(value==0) value=300; /*此value为局部变量*/
{
case 0:gotoxy(22,3); cprintf(" Open "); break;
case 1:gotoxy(22,4); cprintf(" Save "); break;
case 2:gotoxy(22,5); cprintf(" Exit "); break;
{
case 0:gotoxy(47,3); cprintf(" del "); break;
case 1:gotoxy(47,4); cprintf(" insert "); break;
{
gotoxy(21,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口左边输出 | */
gotoxy(32,1+i);
cprintf("%c",179); /*窗口内文本的输出函数,在窗口右边输出 | */
gotoxy(47,3); cprintf(" del ");
gotoxy(47,4); cprintf(" insert ");
gotoxy(47,5); cprintf(" change ");
}

行编辑程序说明书

行编辑程序说明书

摘要本课程设计是实现“简单的行编辑程序”,此编辑程序的主要用处是接受用户从终端输入的程序和数据,并存入用户的数据区。

这个行编辑程序需要实现的功能包括:能够设立一个输入缓冲区,用于接受用户输入的一行字符然后逐行存入用户数据区;用户在输入出差错时,并在发现有误时可以及时更改。

此程序是一个课程设计的程序,只是模拟的一个简单的行编辑器,如需要真正设计一个行编辑器,那么还需要更为完善的程序。

关键词:行编辑;数据结构;VC++;线性结构AbstractThis course is designed to achieve "a simple line editor", the main use of this editing program is to accept input from the terminal user programs and data, and the data stored in the user's area. This program needs to achieve line editing features include: the ability to set up an input buffer for receiving a line of characters entered by the user and stored in the user data area progressive; awry when the user input, and can be found in time to change the wrong time . This program is a curriculum design process, just simulate a simple line editor, such as the need to really design a line editor, you also need a more comprehensive program.Keyword:Line editing; data structure; VC + +; linear structure目录1课题设计要求 (1)1.1课程设计的题目及内容 (1)1.2 题目要求 (2)2概要设计 (3)2.1存储结构的定义 (3)2.2功能函数 (3)2.3主函数 (4)2.4 函数设计 (4)2.4.1 主函数界面设计 (4)2.4.2帮助函数界面设计 (5)2.4.3用户操作界面设计 (5)3详细设计 (10)3.1主函数的设计 (10)3.2帮助函数子程序设计 (10)3.3编辑函数子程序设计 (11)3.4活区显示函数子程序设计 (12)3.5活区切换函数子函数设计 (13)3.6行删除函数子程序设计 (14)3.7行插入行数子程序的设计 (15)4调试过程及实验结果 (16)4.1调试过程 (16)4.2实验结果 (16)4.2.1帮助函数调试结果 (16)4.2.2打开文件函数调试结果 (17)4.2.3活区显示函数调试结果 (17)4.2.4活区切换函数调试结果 (18)4.2.5行删除函数调试结果 (18)4.2.6行插入函数调试结果 (19)5结论 (20)参考文献 (21)致谢 (22)附录1:用户使用说明 (23)附录2:源程序 (24)1课题设计要求1.1课程设计的题目及内容本次课程设计的题目为:简单的行编辑程序。

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

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

《数据结构》课程设计班级: 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 数据结构设计系统采用线性表的顺序存储结构存储通讯录信息。

行编辑程序课程设计

行编辑程序课程设计

行编辑程序课程设计一、课程目标知识目标:1. 学生能理解行编辑程序的基本概念,掌握其功能和用途。

2. 学生能掌握行编辑程序的基本操作,如插入、删除、替换和查找。

3. 学生了解行编辑程序与文本处理软件(如记事本、Word等)的区别和联系。

技能目标:1. 学生能够独立使用行编辑程序进行文本编辑和操作。

2. 学生能够运用行编辑程序解决实际问题,如修改代码、配置文件等。

3. 学生通过行编辑程序的学习,培养逻辑思维和问题解决能力。

情感态度价值观目标:1. 学生对计算机编程产生兴趣,树立编程学习的自信心。

2. 学生培养良好的编程习惯,注重代码规范和团队协作。

3. 学生认识到行编辑程序在实际应用中的价值,激发学习计算机科学的热情。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术学科,以实践操作为主,理论讲解为辅。

2. 学生特点:六年级学生具备一定的计算机操作基础,思维活跃,好奇心强。

3. 教学要求:结合学生实际,注重实践操作,提高学生的动手能力和解决问题的能力。

二、教学内容1. 行编辑程序基本概念:介绍行编辑程序的定义、功能和用途,结合课本第二章第一节内容,让学生了解行编辑程序在计算机编程中的重要性。

2. 行编辑程序基本操作:详细讲解插入、删除、替换和查找等操作,对应课本第二章第二节,通过实例演示和练习,使学生熟练掌握操作方法。

3. 行编辑程序与文本处理软件的对比:分析行编辑程序与文本处理软件的异同,以课本第二章第三节为例,让学生明白两者在实际应用中的适用场景。

4. 实践操作:安排学生进行行编辑程序的操作练习,结合课本第二章练习题,巩固所学知识,提高实际操作能力。

5. 行编辑程序在实际应用中的案例:介绍行编辑程序在编程、配置文件等领域的应用,参照课本第二章案例分析,激发学生学习兴趣,培养实际应用能力。

6. 编程习惯与规范:讲解编程过程中应注意的规范和习惯,结合课本相关内容,培养学生良好的编程素养。

简单行编辑

简单行编辑

电子信息工程学院
课程设计报告
设计名称:数据结构课程设计
简单行编辑程序
姓名:学号:
专业班级:电子信息工程学院
系(院):
设计时间:
设计地点:EDA实验室
要打开的文件内容显示出来。

3.在执行“5.Open the file”时,输入想要打开文件的正确路径,回车。

如果想要打开的文件不存在,则跳出运行。

4.在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。

六测试成果
图(1):
图(2):
图(3):
图(4):
七附录(源程序清单)
#include "stdio.h"
#include "stdlib.h" #include "string.h" struct line{。

简单型编辑程序课程设计

简单型编辑程序课程设计

简单型编辑程序课程设计一、课程目标知识目标:1. 学生能理解简单型编辑程序的基本概念和功能。

2. 学生能掌握简单型编辑程序的操作步骤和使用方法。

3. 学生能了解简单型编辑程序在日常生活和学习中的应用场景。

技能目标:1. 学生能运用简单型编辑程序进行文本的创建、编辑和保存。

2. 学生能通过简单型编辑程序实现文本格式的调整,如字体、字号、颜色等。

3. 学生能运用简单型编辑程序进行基本的文本排版,如对齐、缩进、行距等。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习编程的自信心。

2. 学生在学习过程中,养成合作、探究、解决问题的良好习惯。

3. 学生能意识到编程在生活中的重要作用,认识到编程对个人和社会的价值。

课程性质:本课程为信息技术课程,旨在培养学生的编程兴趣和基本技能。

学生特点:六年级学生具有一定的计算机操作基础,对新鲜事物充满好奇心,但注意力集中时间较短。

教学要求:结合学生特点,课程设计应注重实践性、趣味性和互动性,以激发学生的学习兴趣和积极性。

通过分解课程目标为具体的学习成果,使学生在实践中掌握简单型编辑程序的使用方法,提高编程素养。

同时,注重培养学生的合作精神、创新意识和解决问题的能力。

二、教学内容1. 简单型编辑程序概述- 了解编辑程序的定义及作用- 掌握简单型编辑程序的特点2. 编辑程序的基本操作- 文本创建、编辑和保存- 文本格式调整(字体、字号、颜色等)- 文本排版(对齐、缩进、行距等)3. 实践操作与案例分析- 使用简单型编辑程序进行文本编辑与排版- 分析实际案例,了解编辑程序在生活中的应用4. 课堂互动与讨论- 学生互相分享学习心得和操作技巧- 针对实际问题进行讨论,提高解决问题的能力5. 教学内容安排与进度- 第一课时:简单型编辑程序概述,了解编辑程序的基本功能- 第二课时:编辑程序的基本操作,学习文本编辑与排版方法- 第三课时:实践操作与案例分析,巩固所学知识,提高实际操作能力- 第四课时:课堂互动与讨论,分享经验,解决实际问题教材章节关联:本教学内容与教材中“简单型编辑程序”章节相关,涵盖了该章节的核心内容,包括编辑程序的基本概念、操作方法及实践应用等。

简单行编辑系统数据结构课程设计

简单行编辑系统数据结构课程设计

数据结构课程设计说明书2012 年 8月 30 日1. 概述 (1)1.1 设计目的 (1)1.2 设计目标及要求设计要求 (1)1.3 设计进度 (1)1.4 分工 (2)2. 需求分析及总体设计 (2)2.1 数据结构 (2)2.2 功能框架 (2)3.功能模块详细设计 (2)3.1设计流程 (3)3.2主要源代码 (3)4.功能模块详细设计 (5)4.1设计流程......................................................................... 错误!未定义书签。

4.2主要源代码 (5)1. 概述1.1 设计目的被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现。

所以设计这一种以行为单位进行的编辑程序。

主要是逐段地编辑。

任何时刻只把待编辑文件的一段放在内存,称为活区。

需要用到的数据结构是链表。

1.2 设计目标及要求设计要求(1)行插入:格式: i<回车><行号><回车><文本><回车>功能:在指定行之后插入一行或几行。

(2)行删除:格式: d<回车><行号1>[<空格><行号2>]<回车>功能:在指定行之后插入一行或几行。

(3)行替换:格式: i<回车><行号><回车><文本><回车>功能:在指定行之后插入一行或几行。

(4)活区切换:格式: n<回车>功能:将活区写入文件,并从文件中读入下一段,作为新的活区。

(5)活区显示:格式: p<回车>功能:逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后备页(如果存在)。

印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。

课程设计简单行编辑

课程设计简单行编辑

课程设计简单行编辑一、教学目标本课程旨在让学生掌握简单行编辑的基本知识和技能,包括文本的选择、复制、剪切、粘贴、撤销和红色o等。

通过本课程的学习,学生将能够熟练使用文本编辑软件,提高工作效率,培养良好的信息素养和职业道德。

同时,通过实际操作,让学生感受计算机技术的魅力,激发学生对计算机科学的兴趣,培养学生的创新精神和团队协作能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.简单行编辑的基本概念和术语,如文本、编辑器、选择、复制、剪切、粘贴等。

2.文本编辑软件的使用方法,如打开文件、保存文件、撤销操作等。

3.常用编辑命令的讲解和演示,如选择命令、复制命令、剪切命令、粘贴命令等。

4.行编辑技巧的讲解和练习,如快速定位、批量替换、查找和替换等。

5.综合练习,让学生运用所学知识解决实际问题。

三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:教师讲解基本概念、原理和方法,引导学生理解掌握。

2.演示法:教师现场演示操作步骤,学生跟随操作,加深理解和记忆。

3.练习法:学生独立完成练习题,巩固所学知识,提高操作技能。

4.小组讨论法:学生分组讨论问题,培养团队协作能力和沟通能力。

5.案例分析法:分析实际案例,让学生学会将理论知识应用于实际工作中。

四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供学习参考。

2.参考书:提供相关领域的参考书籍,拓展学生的知识视野。

3.多媒体资料:制作精美的PPT、教学视频等,提高教学效果。

4.实验设备:准备计算机、投影仪等设备,保障课堂教学的正常进行。

5.网络资源:利用校园网,为学生提供在线学习资源,方便学生自主学习。

五、教学评估本课程的评估方式包括平时表现、作业、考试等多个方面,以全面、客观、公正地评价学生的学习成果。

1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。

2.作业:包括课后练习、小项目等,占总评的30%。

数据结构课程设计——简单行编辑程序

数据结构课程设计——简单行编辑程序

/*指向表中最后一个项目的指针 */
struct line *find(int),*dls_store(struct line *);
void patchup(int,int),delete_text(),list(),save(char *),load(char *);
menu_select(); enter(int linenum);
四 设计与调试分析
这个程序的源程序是我在图书馆资料上找的,当时不能运行,main 的界面也不是现在这样。 源程序里面也没有存文件和读取文件的功能,我先对源程序进行调试分析,把里面的错误一一 改正,编写出 mian 程序。然后在里面添加了存文件和打开文件的功能,使的程序更加完善。 本程序在运行时,必须选择“3.Display a line”才能将输入,删除或者打开后的文件显示出 来,这就有点浪费时间,使得操作有点复杂。
}
/* 显示菜单,供用户选择 */ menu_select() {
char s[80]; int c; printf("\t\t1.Enter\n"); printf("\t\t2.Delete a line\n"); printf("\t\t3.Display a line\n"); printf("\t\t4.Save the file\n"); printf("\t\t5.Read the file\n"); printf("\t\t6.Quit\n"); do{ printf("\n\n\t\t Please choice a num :"); gets(s); c=atoi(s); }while(c<0||c>6); return(c); }

数据结构课程设计:行编辑程序

数据结构课程设计:行编辑程序

一、需求分析由于被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现。

而用行编辑把待编辑文件的一段放进内存,称为活区。

本行编辑程序是以每行不超过320个字符为前提的。

每次编辑会读入80行,活区每次只显示20行。

1.该程序要实现以下基本编辑命令和一些相关的命令:(1)行插入。

格式:i<回车><行号><回车><文本><回车>。

将<文本>插入活区第<行号>行之后。

(2)行删除。

格式:d<回车><行号1>,<行号2><回车>。

删除活区中第<行号1>行到第<行号2>行。

(3)活区切换。

格式:n<回车><页数><回车>。

由于每次从输入文件读入80行,而活区每页显示20行,而活区切换就是要切换到需编辑的页面上去。

(4)活区显示。

格式p<回车>。

显示当前要编辑的活区内容。

印出的每一行都有一个前置行号和一个空格符,行号固定为2位,增量为1。

(5)清屏。

格式:c<回车>。

(6)获得帮助。

格式:h<回车>。

(7)退出。

格式:e<回车>。

二、概要设计程序结构流程图:存储结构的定义如下:typedef struct text{char string[80];//存储每一行的元素struct text *next;//指向后一个节点的指针int flat;//确定此行是否被删除的标志}text,*textp;功能函数:Status Createlist(textp &head);功能:建立一个80个节点的链表,是整个活区的大小int del(textp head);功能:删除显示的活区的任意一行。

int display(textp &head);功能:按照每页20行的规格显示活区的内容。

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

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

课程设计说明书课程名称:数据结构课程设计专业:电子信息科学与技术班级: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菜单显示及输出子模块菜单显示模块的主要功能是将菜单进行显示,内容包括本设计的主要功能及相关代号。

数据结构-课程设计-简单行编辑程序

数据结构-课程设计-简单行编辑程序
3)测试数据
由学生依据软件工程的测试技术自己确定。注意测试边界数据,如首行、尾行。
4)实现提示
(1) 设活区的大小用行数activemaxlen(可设为100)来描述。考虑到文本文件行长通常为正态分布,且峰值在60到70之间,用320×activemaxlen大小的字符数组实现存储将造成大量浪费。可以以标准行块为单位为各行分配存储,每个标准行块含81个字符。这些行块可以组成一个数组,也可以利用动态链表连接起来。一行文字可能占多个行块。行尾可用一个特殊的ASCII字符(如(012)8)标识。此外,还应记住活区起始行号。行插入将引起随后各行行号的顺序下推。
(2) 初始化过程包括:请用户提供输入文件名(空串表示无输入文件)和输出文件名,两者不能相同。然后尽可能多地从输入文件中读入各行,但不超过activemaxlen-x。x的值可以自定。
(3) 在执行行插入命令的过程中,每接收到一行时到要检查活区大小是否已达activemaxlen。如果是,则为了在插入这一行之后仍保持活区大小不超过activemaxlen,应将插入点之前的活区部分中第一行输出到输出文件中;若插入点为第一行之前,则只得将新覆盖后一个。然后将要插入的内容写入插入处即可。
行与行之间交换,这个比较容易实现。只需将要交换的两行的内容交换即可。
三、总体设计
程序的功能图:
程序流程图


四、详细设计
struct Row行的结构体,包含行的内容,行的编号;
class Active活区的类,包含活区内行的总数量、行的结构体;
2)基本要求
实现以下4条基本编辑命令:
(1) 行插入。格式:i<行号><回车><文本><回车>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计——简单行编辑程序电子信息工程学院课程设计报告设计名称: 数据结构课程设计简单行编辑程序姓名: 学号:专业班级: 电子信息工程学院系 (院):设计时间:设计地点: EDA实验室指导教师评语:成绩:签名:年月日数据结构课程设计报告第 1 页,共 15 页1(课程设计目的1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。

2(课程设计任务与要求:任务问题描述:文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。

限制这些操作以行为单位进行的编辑程序称为行编辑程序。

被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法即不经济,又不总能实现。

一种解决方法是逐段的编辑。

任何时刻只把待编辑文件的一段放在内存,称为活区。

试按这种方法实现一个简单的行编辑程序,设文件每行不超过320个字符,很少超过80个字符。

要求:实现以下4条基本的编辑命令:(1)行插入。

格式:i<行号><回车><文本>. <回车>将<文本>插入活区中第<行号>行之后。

(2)行删除。

格式:d<行号1>[<空格><行号2>.]<回车>例如删除活区中第<行号1>行(到第<行号2>行)。

例如:例如:“d10?”和d1014?”。

(3)活区切换。

格式:n<回车>将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。

(4)活区显示。

格式:p<回车>逐页地(每页20行)显示活区内容,在每显示的一页之后请用户决定是否继续显示以后各页(如果存在)。

印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。

各条命令中的行号均须在活区中各行号范围之内,只有插入命令的行号可以等于活区第一行行号减一,表示插入当前的屏幕中第一行之前,否则命令参数非法。

数据结构课程设计报告第 2 页,共 15 页3(课程设计说明书一需求分析(1)、被编译的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总能实现。

任何时刻只把待编辑文件的一段放在内存,称为活区。

(2)、活区的大小用行数ActiveMaxLen(可设为100)来描述。

可以以标准行块为单位为各行分配存储,每个标准行块可含81个行块。

(3)、将输入文件中的内容的ActiveMaxLen – x(x由用户自己定义)行的内容读入活区中。

然后分别对活区中的内容进行编辑。

(4)、分别实现各命令的函数,然后对客户的需求实行相应的操作。

对命令格式不正确的进行处理。

二概要设计ADT line{基本操作:enter(linenum)初始条件:有内存。

操作结果:linenum +1.delete_text( )初始条件:line存在。

操作结果:若删除的最后一行,则直接删除。

若删除中间一行,则后面的linenum -1。

Load( )初始条件:存在文件file操作结果:打开文件。

} ADT line三详细设计1)将文本插在指定行端部enter(int linenum){struct line *info;for(;;){info=(struct line *)malloc(sizeof(struct line)); if(!info){printf("\t! 内存不够~\n");数据结构课程设计报告第 3 页,共 15 页return(NULL);}printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text){if(find(linenum)) patchup(linenum,1);if(*info->text) start=dls_store(info);}else break;linenum++;}return(linenum);}2)删除一行void delete_text(){struct line *info;char s[80];int linenum;printf("\tlinenum :");gets(s);linenum=atoi(s);info=find(linenum);if(info){if(start==info){start=info->next;if(start) start->prior=NULL; else last=NULL;}else{info->prior->next=info->next;if(info!=last)info->next->prior=info->prior;else last=info->prior;}free(info);patchup(linenum+1,-1);}}数据结构课程设计报告第 4 页,共 15 页3)存文件void save(char *fname){struct line *info;char *p;FILE *fp;if((fp=fopen(fname,"w"))==NULL){printf("\t Can't open the file !\n"); exit(0);}printf("\t Saving :\n");info=start;while(info){p=info->text;while(*p) putc(*p++,fp);putc('\n',fp);info=info->next;}fclose(fp);}4)读取文件void load(char *fname){struct line *info,*temp;char *p;FILE *fp;int size,inct;if((fp=fopen(fname,"r+"))==NULL){printf("\t Can't open the file !\n"); exit(0);}while(start){temp=start;start=start->next;free(temp);}printf("\n\t Reading...\n");size=sizeof(struct line);start=(struct line*)malloc(size);if(!start){数据结构课程设计报告第 5 页,共 15 页printf("\n\t内存已经用完 !");return;}info=start;p=info->text;inct=1;while((*p=getc(fp))!=EOF){p++;while((*p=getc(fp))!='\n') p++;*p='\0';info->num=inct++;info->next=(struct line*)malloc(size); if(!info->next){printf("\n\t内存已经用完 !");return;}info->prior=temp;temp=info;info=info->next;p=info->text;}temp->next=NULL;last=temp;free(info);start->prior=NULL;fclose(fp);}四设计与调试分析这个程序的源程序是我在图书馆资料上找的,当时不能运行,main的界面也不是现在这样。

源程序里面也没有存文件和读取文件的功能,我先对源程序进行调试分析,把里面的错误一一改正,编写出mian程序。

然后在里面添加了存文件和打开文件的功能,使的程序更加完善。

本程序在运行时,必须选择“3.Display a line”才能将输入,删除或者打开后的文件显示出来,这就有点浪费时间,使得操作有点复杂。

五用户手册1(本程序在win-tc下运行。

2(在进行输入,删除或者打开文件的操作后,再选择“3.Display a line”将输入,删除或者想数据结构课程设计报告第 6 页,共 15 页要打开的文件内容显示出来。

3(在执行“5.Open the file”时,输入想要打开文件的正确路径,回车。

如果想要打开的文件不存在,则跳出运行。

4(在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。

六测试成果图(1):图(2):数据结构课程设计报告第 7 页,共 15 页图(3):图(4):七附录(源程序清单)#include "stdio.h"#include "stdlib.h"#include "string.h"struct line{数据结构课程设计报告第 8 页,共 15 页char text[81];int num; /*行号*/struct line *next; /*指向下一个输入项目的指针 */struct line *prior; /*指向前一个项目的指针 */};struct line *start; /*指向表中第一个项目的指针 */struct line *last; /*指向表中最后一个项目的指针 */struct line *find(int),*dls_store(struct line *);void patchup(int,int),delete_text(),list(),save(char *),load(char *); menu_select();enter(int linenum);void main(int argc,char *argv[]){char s[80],choice,fname[80];int linenum=1;start=NULL;last=NULL;if(argc==2) load(argv[1]);/*读取命令行上的文件 */do{choice=menu_select();switch(choice){case 1:printf("\tlinenum :");gets(s);linenum=atoi(s);enter(linenum);break;case 2:delete_text();break;case 3:list();break;case 4:printf("\tfilename :");gets(fname);save(fname);break;case 5:printf("\tfilename :");gets(fname);load(fname);break;case 6:exit(0);}}while(1);数据结构课程设计报告第 9 页,共 15 页}/* 显示菜单,供用户选择 */menu_select(){char s[80];int c;printf("\t\t1.Enter\n");printf("\t\t2.Delete a line\n");printf("\t\t3.Display a line\n");printf("\t\t4.Save the file\n");printf("\t\t5.Read the file\n");printf("\t\t6.Quit\n");do{printf("\n\n\t\t Please choice a num :");gets(s);c=atoi(s);}while(c<0||c>6);return(c);}/*将文本插在指定行端部*/enter(int linenum){struct line *info;for(;;){info=(struct line *)malloc(sizeof(struct line));if(!info){printf("\t! 内存不够~\n");return(NULL);}printf("%d:",linenum);gets(info->text);info->num=linenum;if(*info->text){if(find(linenum)) patchup(linenum,1);if(*info->text) start=dls_store(info);}else break;linenum++;}return(linenum);数据结构课程设计报告第 10 页,共 15 页}/*当文本内容插在文件中间时其下面的内容的行号必须增加1,而 */ /*删除时,被删除的文本后面的行号必须减1 */void patchup(int n,int incr){struct line *i;i=find(n);while(i){i->num=i->num+incr;i=i->next;}}/*按行号排序后插入 */struct line *dls_store(struct line *i) {struct line *old,*p;if(last==NULL){i->next=NULL;i->prior=NULL;last=i;return(i);}p=start;old=NULL;while(p){if(p->num){old=p;p=p->next;}else{if(p->prior){p->prior->next=i;i->next=p;p->prior=i;return start;}i->next=p;i->prior=NULL;p->prior=i;return(i);数据结构课程设计报告第 11 页,共 15 页}}old->next=i;i->next=NULL;i->prior=old;last=i;return start;}/*删除一行 */void delete_text(){struct line *info;char s[80];int linenum;printf("\tlinenum :");gets(s);linenum=atoi(s);info=find(linenum);if(info){if(start==info){start=info->next;if(start) start->prior=NULL; else last=NULL;}else{info->prior->next=info->next; if(info!=last)info->next->prior=info->prior; else last=info->prior;}free(info);patchup(linenum+1,-1);}}/*查找一行文本 */struct line *find(int linenum){struct line *info;info=start;while(info){数据结构课程设计报告第 12 页,共 15 页if(linenum==info->num) return(info); info=info->next;}return(NULL);}/*显示文本 */void list(){struct line *info;info=start;while(info){printf("%d:%s\n",info->num,info->text); info=info->next;}printf("\n\n");}/*存文件 */void save(char *fname){struct line *info;char *p;FILE *fp;if((fp=fopen(fname,"w"))==NULL){printf("\t Can't open the file !\n"); exit(0);}printf("\t Saving :\n");info=start;while(info){p=info->text;while(*p) putc(*p++,fp);putc('\n',fp);info=info->next;}fclose(fp);}/*读取文件 */void load(char *fname){struct line *info,*temp;数据结构课程设计报告第 13 页,共 15 页char *p;FILE *fp;int size,inct;if((fp=fopen(fname,"r+"))==NULL){printf("\t Can't open the file !\n"); exit(0);}while(start){temp=start;start=start->next;free(temp);}printf("\n\t Reading...\n");size=sizeof(struct line);start=(struct line*)malloc(size);if(!start){printf("\n\t内存已经用完 !");return;}info=start;p=info->text;inct=1;while((*p=getc(fp))!=EOF){p++;while((*p=getc(fp))!='\n') p++;*p='\0';info->num=inct++;info->next=(struct line*)malloc(size); if(!info->next){printf("\n\t内存已经用完 !");return;}info->prior=temp;temp=info;info=info->next;p=info->text;}temp->next=NULL;last=temp;free(info);start->prior=NULL;数据结构课程设计报告第 14 页,共 15 页fclose(fp);}参考文献:1(严蔚敏,吴伟民 (数据结构(,语言版)(北京大学出版社,20062(谭浩强(,语言程序设计教程(高等教育出版社,19983(,美,Robert L(Kruse(数据结构与程序设计(,语言第二版)(清华大学出版社,20054.课程设计心得通过对数据结构的课程设计,我了解并发现了很多调试程序的方法,而且懂得了如何处理错误的方法。

相关文档
最新文档