2022年2022年简单行编辑程序 .pdf
《2022年2022年简单行编辑程序 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年简单行编辑程序 .pdf(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构程序设计实验报告简单行编辑程序院 系 : 计 算 机科 学 与 技术 学 院专 业: 软 件工 程 1班姓 名 :丁 珊 珊学号 : E01214269日期 : 2014/9/19名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 17 页 - - - - - - - - - 一 、 需 求 分 析1、问 题 描 述: 文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。被编辑的
2、文本文件可能很大,全部读入编辑程序的数据空间 (内存)的做法即不经济,又不总能实现。一种解决方法是逐段的编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。试按这种方法实现一个简单的行编辑程序, 设文件每行不超过320个字符,很少超过 80 个字符。2、此程 序 具备 以 下 功能 :(1) 行插入。 格式:i. 将插入活区中第 行之后。(2) 行删除。 格式:d;删除活区中第 行(到第 行) 。(3) 活区切换。 格式: n 将活区写入输出文件, 并从输入文件中读入下一段,作为新的活区。(4) 活区显示。 格式: p 逐页地(每页20 行)显示活区内容,在每显示的一页之后请用户决定是否继续
3、显示以后各页(如果存在)。印出的每一行要前置行号和一个空格符,行号固定占4 位,增量为 1。各条命令中的行号均须在活区中各行号范围之内,只有插入命令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 17 页 - - - - - - - - - 的行号可以等于活区第一行行号减一,表示插入当前的屏幕中第一行之前,否则命令参数非法。二、概要设计1、主页面设计2、存储结构设计typedef struct text char stringSIZE;/存储每一行的元素struct te
4、xt *next;/指向后一个节点的指针int length; text,*textp;3、系统功能设计1)行插入名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 17 页 - - - - - - - - - 2)行删除3)活区切换4)活区显示5)结束4、程序调用关系程序结构流程图:三 、详 细 设 计1 、 数据结构存储定义typedef struct text char stringSIZE;/存储每一行的元素struct text *next;/指向后一个节点的指针i
5、nt length; text,*textp;2、 行插入int insert(textp &head,FILE *out) int hang,i; textp p,p1; scanf(%d,&hang); p=(textp)malloc(sizeof(text);/为插入行分配空间开始输入命令i 输入命令 d 输入命令n 输入命令p 输入命令e 插入一行文字删除一行内容切换活区显示活区结束程序名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 17 页 - - - - -
6、- - - - fflush(stdin); fgets(p-string,80,stdin); /*输入插入行的内容 */ p1=head-next; if(head-length=ActiveMaxLen) fputs(p1-string,out); else if(hang=1) p-next=head-next; head-next=p; head-length+; else for(i=2;inext; p-next=p1-next; p1-next=p; head-length+; printf( 在第%d 行前插入完成 n,hang); return OK; 3、行删除int d
7、el(textp &head) /删除 d 命令对应的函数, 用来删 maxmin 中的行,用结构体中的 flat 表示是否被删除 text *p,*q; int min,max,i; scanf(%d %d,&min,&max); if(head=NULL) printf(nlist null!n); return OK; p=head; for(i=1;inext; for(i=i-1,q=p-next;inext=q-next; free(q); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
8、 - - - 第 5 页,共 17 页 - - - - - - - - - q=p-next; head-length-; printf( 第%d 行到第 %d 行删除完成! n,min,max); return OK; 4、活区切换Status LoadFile(textp head,FILE *fp) /* 从文件读内容到活区 */ textp p; for(p=head;p&(!feof(fp);p=p-next) if(!fgets(p-string,80,fp) break; p-flat=1; return 0; Status SaveFile(textp head,FILE *o
9、ut) /* 存储活区的函数 */ textp p; for(p=head;p;p=p-next) if(p-flat=1) fputs(p-string,out); /* 输出活区的内容到指定的文件*/ p-flat=0; return OK; 5、活区显示void display(textp head)/显示 P命令对应的函数,用来显示活区的内容 int i; int j=head-length/20; int k=0; textp p=head-next; for(j=0;jlength/20;j+) printf(*page%d*n,j+1); for(i=20*j+1;ilength
10、;p=p-next,i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 17 页 - - - - - - - - - printf(%2d,i); printf( %s,p-string); if(i%20=0) break; printf( 是否继续显示下一页,是输入1,否输入 0.n); scanf(%d,&k); if(k=0) break; if(j=head-length/20-1) printf( 没有后续页面了 n); break; 四 、测 试 分 析
11、1.开始界面名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 17 页 - - - - - - - - - 2.用户输入一个已经存在的文本文件名称in.txt 并回车,程序将读出内容并存入一个新的文本文件out 中。并输入命令 p,显示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 17 页 - - - - - - - - - 3.输入命令 i,在文
12、本文件中插入文本。4.输入命令 d, 删除选中文本。并输入命令 p, 显示当前活区。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 17 页 - - - - - - - - - 5.输入命令 n,切换活区。并输入命令平,显示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 17 页 - - - - - - - - - 6.输入命令 e,结束程序并清
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年简单行编辑程序 2022 简单 编辑 程序
限制150内