数据结构课程设计简单行编辑程序Word文档下载推荐.docx
- 文档编号:13259751
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:19
- 大小:58.10KB
数据结构课程设计简单行编辑程序Word文档下载推荐.docx
《数据结构课程设计简单行编辑程序Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计简单行编辑程序Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
文本编辑程序是利用计算机进行文字加工的基本软件工具,实现对文本文件的插入、删除等修改操作。
限制这些操作以行为单位进行的编辑程序称为行编辑程序。
被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法即不经济,又不总能实现。
一种解决方法是逐段的编辑。
任何时刻只把待编辑文件的一段放在内存,称为活区。
试按这种方法实现一个简单的行编辑程序,设文件每行不超过320个字符,很少超过80个字符。
要求:
实现以下4条基本的编辑命令:
(1)行插入。
格式:
i<
行号>
<
回车>
文本>
.<
将<
插入活区中第<
行之后。
(2)行删除。
d<
行号1>
[<
空格>
行号2>
.]<
例如
删除活区中第<
行(到第<
行)。
例如:
“d10?
”和d1014?
”。
(3)活区切换。
n<
将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。
(4)活区显示。
p<
逐页地(每页20行)显示活区内容,在每显示的一页之后请用户决定是否继续显示以后各页(如果存在)。
印出的每一行要前置行号和一个空格符,行号固定占4位,增量为1。
各条命令中的行号均须在活区中各行号范围之内,只有插入命令的行号可以等于活区第一行行号减一,表示插入当前的屏幕中第一行之前,否则命令参数非法。
数据结构课程设计报告第2页,共15页
3(课程设计说明书
一需求分析
(1)、被编译的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济,也不总
能实现。
(2)、活区的大小用行数ActiveMaxLen(可设为100)来描述。
可以以标准行块为单位为各行分配存
储,每个标准行块可含81个行块。
(3)、将输入文件中的内容的ActiveMaxLen–x(x由用户自己定义)行的内容读入活区中。
然后
分别对活区中的内容进行编辑。
(4)、分别实现各命令的函数,然后对客户的需求实行相应的操作。
对命令格式不正确的进行处理。
二概要设计
ADTline{
基本操作:
enter(linenum)
初始条件:
有内存。
操作结果:
linenum+1.
delete_text()
line存在。
若删除的最后一行,则直接删除。
若删除中间一行,则后面的linenum-1。
Load()
存在文件file
打开文件。
}ADTline
三详细设计
1)将文本插在指定行端部
enter(intlinenum)
{
structline*info;
for(;
;
)
info=(structline*)malloc(sizeof(structline));
if(!
info)
printf("
\t!
内存不够~\n"
);
数据结构课程设计报告第3页,共15页
return(NULL);
}
%d:
"
linenum);
gets(info->
text);
info->
num=linenum;
if(*info->
text)
if(find(linenum))patchup(linenum,1);
text)start=dls_store(info);
elsebreak;
linenum++;
return(linenum);
2)删除一行
voiddelete_text()
chars[80];
intlinenum;
\tlinenum:
gets(s);
linenum=atoi(s);
info=find(linenum);
if(info)
if(start==info)
start=info->
next;
if(start)start->
prior=NULL;
elselast=NULL;
else
prior->
next=info->
if(info!
=last)
next->
prior=info->
prior;
elselast=info->
free(info);
patchup(linenum+1,-1);
数据结构课程设计报告第4页,共15页
3)存文件
voidsave(char*fname)
char*p;
FILE*fp;
if((fp=fopen(fname,"
w"
))==NULL)
\tCan'
topenthefile!
\n"
exit(0);
\tSaving:
info=start;
while(info)
p=info->
text;
while(*p)putc(*p++,fp);
putc('
\n'
fp);
info=info->
fclose(fp);
4)读取文件
voidload(char*fname)
structline*info,*temp;
intsize,inct;
r+"
while(start)
temp=start;
start=start->
free(temp);
\n\tReading...\n"
size=sizeof(structline);
start=(structline*)malloc(size);
start)
数据结构课程设计报告第5页,共15页
\n\t内存已经用完!
return;
inct=1;
while((*p=getc(fp))!
=EOF)
p++;
='
)p++;
*p='
\0'
num=inct++;
next=(structline*)malloc(size);
next)
prior=temp;
temp=info;
temp->
next=NULL;
last=temp;
start->
四设计与调试分析
这个程序的源程序是我在图书馆资料上找的,当时不能运行,main的界面也不是现在这样。
源程序里面也没有存文件和读取文件的功能,我先对源程序进行调试分析,把里面的错误一一
改正,编写出mian程序。
然后在里面添加了存文件和打开文件的功能,使的程序更加完善。
本程序在运行时,必须选择“3.Displayaline”才能将输入,删除或者打开后的文件显示出
来,这就有点浪费时间,使得操作有点复杂。
五用户手册
1(本程序在win-tc下运行。
2(在进行输入,删除或者打开文件的操作后,再选择“3.Displayaline”将输入,删除或者想
数据结构课程设计报告第6页,共15页要打开的文件内容显示出来。
3(在执行“5.Openthefile”时,输入想要打开文件的正确路径,回车。
如果想要打开的文件不存在,则跳出运行。
4(在进行保存文件的操作时,在提示后输入想要保存的正确路径名,再按回车,文件即被保存。
六测试成果
图
(1):
图
(2):
数据结构课程设计报告第7页,共15页
图(3):
图(4):
七附录(源程序清单)
#include"
stdio.h"
stdlib.h"
string.h"
structline{
数据结构课程设计报告第8页,共15页
chartext[81];
intnum;
/*行号*/
structline*next;
/*指向下一个输入项目的指针*/
structline*prior;
/*指向前一个项目的指针*/
};
structline*start;
/*指向表中第一个项目的指针*/
structline*last;
/*指向表中最后一个项目的指针*/
structline*find(int),*dls_store(structline*);
voidpatchup(int,int),delete_text(),list(),save(char*),load(char*);
menu_select();
enter(intlinenum);
voidmain(intargc,char*argv[])
chars[80],choice,fname[80];
intlinenum=1;
start=NULL;
last=NULL;
if(argc==2)load(argv[1]);
/*读取命令行上的文件*/
do{
choice=menu_select();
switch(choice)
case1:
enter(linenum);
break;
case2:
delete_text();
case3:
list(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 简单 编辑 程序