资源描述:
《数据结构课程设计说明书--简单行编辑器》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、中北大学数据结构课程设计说明书学院:电子与计算机科学技术学院专业:网络工程/计算机科学与技术题目:简单行编辑器指导教师:组长姓名:学号组员姓名:学号组员姓名:学号组员姓名:学号组员姓名:学号 2012年8月30日13131.概述11.1设计目的11.2设计目标及要求设计要求11.3设计进度11.4分工12.需求分析及总体设计12.1数据结构12.2功能框架23.功能模块详细设计23.1设计流程23.2主要源代码24.功能模块详细设计24.1设计流程24.2主要源代码3131.概述1.1设计目的被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的作法既不经济,也不总能实现
2、。所以设计这一种以行为单位进行的编辑程序。主要是逐段地编辑。任何时刻只把待编辑文件的一段放在内存,称为活区。需要用到的数据结构是链表。1.2设计目标及要求设计要求(1)行插入:格式:i<回车><行号><回车><文本><回车>功能:在指定行之后插入一行或几行。(2)行删除:格式:d<回车><行号1>[<空格><行号2>]<回车>功能:在指定行之后插入一行或几行。(3)行替换:格式:i<回车><行号><回车><文本><回车>功能:在指定行之后插入一行或几行。(4)活区切换:格式:n<回车>功能:将活区写入文件,并从文件中读入下一段,作为新的活区。(5)活区显示:格式:p<回车>功能:
3、逐页地(每页20行)显示活区内容,每显示一页之后请用户决定是否继续显示以后备页(如果存在)。印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。(6)模式匹配:格式:k<回车><匹配文本><回车>131.3设计进度1》2012.8.20——2012.8.21需求分析2》2012.8.21下午交需求分析,主要分析课题的内容,需要用的数据结构,小组分工情况3》2012.8.22——2012.8.29编写源代码4》2012.8.30完成设计并书写课程设计说明书5》2012.8.31等待老师验收1.4分工薛建明:进行插入功能的编写。丛前:进行删除功能的编写。甘炀:进行活区的切换
4、功能的编写。杨志文:进行活区显示,KMP算法,界面的编写。2.需求分析及总体设计2.1数据结构用到数据结构的双向链表:typedefstructtext{charstring[80];structtext*next;structtext*pre;intflat;}text;简单行编辑系统2.2功能框架行删除编辑行插入退出模式匹配活区切换活区显示13(1)行插入:在指定行之后插入一行或几行。(2)行删除:在指定行之后插入一行或几行。(3)行替换:在指定行之后插入一行或几行。(4)活区切换:将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。(5)活区显示:逐页地(每页20行
5、)显示活区内容,每显示一页之后请用户决定是否继续显示以后备页(如果存在)。印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。(6)模式匹配:在当前活区中查找所要匹配的文本。3.功能模块详细设计3.1设计流程行插入功能:找到要插入的结点对应的指针,然后开辟新的空间,把开辟出的新的空间,与刚才的结点连接,同时再把新节点的指针域只向出入的下一个节点。主要思想:p=(text*)malloc(sizeof(text));//p为新插入节点p->next=p1->next;//p1为要出入结点的p->pre=p1;NYNY开始输入行号插入字符》80结点插入链表结点插入链表新建链
6、表是否为‘#’结束p1->next->pre=p;p1->next=p;3.2主要源代码voidinsert(){inti,j,hang,increhang=1,incre;13chars;text*p,*p1,*p2;printf("(Note:thei-throwinserttextinthei-throw!!Insertedtextin#Pleaseenterthelinenumberfortheendoftheflag):");scanf("%d",&hang);p=p1=NULL;if(hang==0){p=(text*)malloc(sizeof(text));p
7、->flat=1;p->next=head;head->pre=p;head=p;}if(hang!=0){for(i=0,p1=head;inext);//找到要插入行的前一行p=(text*)malloc(sizeof(text));//为插入行分配空间p->flat=1;p->next=p1->next;p->pre=p1;p1->next->pre=p;p1->next=p;}//从此行将插入行插入到链表中p->string[0]=g