1、一、需求分析一、需求分析 由于被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不 经济,也不总能实现。而用行编辑把待编辑文件的一段放进内存,称为活区。本行编辑程 序是以每行不超过 320 个字符为前提的。每次编辑会读入 80 行,活区每次只显示 20 行。 1. 该程序要实现以下基本编辑命令和一些相关的命令: (1) 行插入。格式:i。 将插入活区第行之后。 (2) 行删除。格式:d,。 删除活区中第行到第行。 (3) 活区切换。格式:n。 由于每次从输入文件读入 80 行,而活区每页显示 20 行,而活区切换就是要切换 到需编辑的页面上去。 (4) 活区显示。格式 p。
2、显示当前要编辑的活区内容。印出的每一行都有一个前置行号和一个空格符,行 号固定为 2 位,增量为 1。 (5)清屏。 格式:c。 (6)获得帮助。格式:h。 (7)退出。 格式:e。 二、概要设计二、概要设计 程序结构流程图: 存储结构的定义如下:存储结构的定义如下: typedef struct text char string80;/存储每一行的元素 struct text *next;/指向后一个节点的指针 int flat;/确定此行是否被删除的标志 初始化 输入命令 i 输入命令 d 输入命令 n 输入命令 p 输入命令 c 输入命令 h 输入命令 e 插入一行内 容 删除一行内 容
3、 切换活区 显示活区 清屏 显示帮助 信息 退出 text,*textp; 功能函数:功能函数: Status Createlist(textp 功能:建立一个 80 个节点的链表,是整个活区的大小 int del(textp head); 功能:删除显示的活区的任意一行。 int display(textp 功能:按照每页 20 行的规格显示活区的内容。 void freemem(textp 功能:销毁链表,释放内存。 int insert(textp 功能:在显示的活区插入一行内容。 Status SaveFile(textp head,FILE *out); 功能:将活区的内容保存到输出
4、文件。 Status LoadFile(textp head,FILE *fp); 功能:从输入文件读取内容到活区。 void HELP(); 功能:提供命令的格式。 主函数:主函数: void main() 初始化; 输入命令; Switch(c) case e: 退出并保存编辑的内容 case p: 显示活区 case n: 活区切换 case d: 删除一行 case i: 插入一行 case c: 清屏 case h: 获得帮助 三、三、详细设计详细设计 #include #include #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef struct text char string80;/存储每一行的元素 struct text *