简易文本编辑器.docx

上传人:b****3 文档编号:5890096 上传时间:2023-05-09 格式:DOCX 页数:13 大小:57.88KB
下载 相关 举报
简易文本编辑器.docx_第1页
第1页 / 共13页
简易文本编辑器.docx_第2页
第2页 / 共13页
简易文本编辑器.docx_第3页
第3页 / 共13页
简易文本编辑器.docx_第4页
第4页 / 共13页
简易文本编辑器.docx_第5页
第5页 / 共13页
简易文本编辑器.docx_第6页
第6页 / 共13页
简易文本编辑器.docx_第7页
第7页 / 共13页
简易文本编辑器.docx_第8页
第8页 / 共13页
简易文本编辑器.docx_第9页
第9页 / 共13页
简易文本编辑器.docx_第10页
第10页 / 共13页
简易文本编辑器.docx_第11页
第11页 / 共13页
简易文本编辑器.docx_第12页
第12页 / 共13页
简易文本编辑器.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

简易文本编辑器.docx

《简易文本编辑器.docx》由会员分享,可在线阅读,更多相关《简易文本编辑器.docx(13页珍藏版)》请在冰点文库上搜索。

简易文本编辑器.docx

简易文本编辑器

数据结构课程设计

 

题目简易文本编辑的探究

系(部)电子与信息工程系

班级

姓名

学号

指导教师王静

2011年01月03日

电子与信息工程系

《数据结构》课程设计任务书

设计题目

简易文本编辑器

已知技术参数和设计要求

 

要求:

1、具有图形菜单界面;

2、查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行

块),删除

3、可正确存盘、取盘;

正确显示总行数。

设计内容与步骤

1、结点结构的设计

2、算法设计与分析

3、程序设计、实现、调试

4、课程设计说明书

设计工作计划与进度安排

1、设计工作4学时

2、实现与调试16学时

3、课程设计说明书8学时

设计考核要求

1、考勤30%

2、课程设计说明书70%

计算机教研室制

简易文本编辑的探究

张权

安康学院计算机科学与技术09级陕西省安康市725000

摘要:

简易文本编辑是最常用的文档提取和编辑工具。

通过对简易文本的研究,利用C语言实现了从文件中读取数据,并进行的提取和简易编辑的功能。

没有脱离C语言下数组长度的有限性。

关键字:

文件提取、存储;字符串替换、查找;插入;删除;行移动;

1引言

在操作系统中,外存中的数据、文档或程序,都是以文件的形式保存,甚至对目录和各种设备的操作也都等同于文件的操作。

因此对文件的操作就要求首先从文件中读取数据,然后对读取的数据进行操作,最后,当操作完成后再将数据重新写入文件中。

在此过程中必须熟练掌握文件的基本操作。

首先要调用一个文件,需要有以下的信息:

1、文件当前的读写位置,文件存放在哪个磁介质中,含盘符及路径。

2、与该文件对应的内存缓冲区的地址。

3、缓冲区中未被处理的字符串。

4、文件操作方式,是读数据还是写数据。

从文件中读取数据,然后以链表的形式放入内存中,对文件数据进行查找替换删除操作。

找到要进行操作的字符串的位置,然后再进行一系列的操作。

最后,完成对文件数据的操作,重新调用文件指针将数据写入文件操作,完成实验。

将数据从文件中读取出来以后,在进行操作。

2问题分析

一个简易文本编辑器应该具有图形菜单界面,包括查找,替换(等长,不等长),插入(插串,文本块的插入)、块移动(行块),删除文本信息等功能并可正确存盘、取盘,正确显示总行数。

3数据结构与算法分析

3.1结构与算法分析

为实现数据结构的有序存储,该编辑器应该用顺序表来存储输入的信息。

顺序表是数据结构中线性表的一种,它是用一块地址连续的存储空间依次存储线性表的元素。

其特点为:

在顺序表上逻辑关系相邻的俩个元素在物理位置上也相邻;在顺序表上可以随即存储表中的元素。

在编辑器的主界面中如下提示信息:

3.11清空以前的文本信息:

将用数据内容全部置为0;

显示当前文本信息:

遍历用数组存入的信息,并输出到显示器上:

3.12编辑信息:

定义一个结构体,并在结构体中定义一个字符型的一维数组和一个整型变量,这个整型变量用于记录一维数组中存入数据的个数;

3.13替换文本信息:

首先在数组中查找要被替换的信息,如果找到该信息,提示输入要替换的信息内容,否则提示未找到要被替换的信息:

3.14插入文本信息:

首先在数组中查找要插入的点,如果找到该插入点,提示输入插入信息,确认插入信息后,提示选择向前插入信息还是向后插入信息,如果未找到插入点,显示未找到要插入的位置;

3.15移动文本信息:

首先在数组中查找要移动的信息,如果找到该信息,提示是进行列移动还是行移动,否则提示未找到要移动的信息;

3.16删除文本信息:

首先在数组中查找要删除的信息,如果找到该信息,提示是否确认删除该信息,通过确认来删除信息,如果未找到要删除的信息,提示未找到该信息;

4结语

本实验通过对文件数据的操作,主要考查了一下几个方面的知识:

1、对文件的基本操作,包括数据的读取和重新写入;

2、要求掌握对数组的熟练运用,包括数组的,查找,替换,删除,插入等;

3、重点要求掌握在函数调用。

通过对本实验的学习,熟练掌握了以上的知识,我们才能继续进行以后的程序学习。

附件:

#include"stdio.h"

#include"stdlib.h"

#include"string.h"

intindex(chars1[],chars2[])//查找

{inti=0,j,m,f=0;

while(s1[i]!

='\0')

{

m=i;

j=0;

while(s2[j]!

='\0')

if(s1[m]!

=s2[j])

break;

else

{

m++;

j++;

}

if(s2[j]=='\0')

return(i);

else

i++;

}

return(-1);

}

voidth(chars[],chart[],charr[])//替换

{intj,p,m,n,i=1,a=1;

while(index(s,t)!

=-1)

{

i=index(s,t);

p=strlen(s);

m=strlen(t);

n=strlen(r);

if(i<0)

break;

elseif(m>n)

{

for(j=i+m;j<=p;j++)

s[j-m+n]=s[j];

}

elseif(m

{

for(j=p;j>=i+m;j--)

s[j-m+n]=s[j];

}

for(j=0;j

s[i+j]=r[j];

s[p-(m-n)]='\0';}

printf("运行后数据为:

\n");

puts(s);

}

voidcr(chars1[],chars2[],inti)//插入

{

intk,l1,l2;

l1=strlen(s1);

l2=strlen(s2);

for(k=l1-1;k>=i-1;k--)

{

s1[l2+k]=s1[k];

}

for(k=0;k

{

s1[i-1+k]=s2[k];

}

s1[l1+l2-1]='\0';

printf("运行后数据为:

\n");

puts(s1);

}

voidshanchu(chars1[],chars2[])//删除

{intn=1,s,m,i;

while(index(s1,s2)!

=-1)

{n=index(s1,s2);

s=strlen(s1);

m=strlen(s2);

for(i=n;i<=s;i++)

s1[i]=s1[i+m];}

printf("运行后数据为:

\n");

puts(s1);

}

voidyidong(chars[],chart[],inti)//移动

{

intn,a,m,f;

n=index(s,t);

a=strlen(s);

m=strlen(t);

for(f=n;f<=a;f++)

s[f]=s[f+m];

cr(s,t,i);

}

voidmain()

{

chars[100];

inti=0,n=0,q,c,f=0;

charch,a[100],r[100],m[100],t[100],y='y';

FILE*fp;

fp=fopen("d:

\\k4.txt","r+");

while(!

feof(fp))//读取数据

{

ch=fgetc(fp);

s[i++]=ch;

}

s[i]='\0';

printf("原文本内容为:

\n");

puts(s);//读盘

while(y=='y'||y=='Y')

{

printf("********************\n");

printf("1、查找与替换\n");

printf("2、插入\n");

printf("3、块移动\n");

printf("4、删除\n");

printf("********************\n");

printf("请选择(1~4):

");

scanf("%d",&c);

getchar();

switch(c)

{

case1:

printf("输入查找的数据:

\n");

gets(a);

if(index(s,a)!

=-1)

printf("找到\n");

else

{printf("找不到!

\n");break;}

printf("输入要替换的数据:

\n");

gets(r);

th(s,a,r);break;//替换

case2:

printf("输入要插入的数据:

\n");

gets(m);

printf("输入要插入的位置:

\n");

scanf("%d",&q);

cr(s,m,q);getchar();break;//插入

case3:

printf("输入要移动的数据:

\n");

gets(t);

if(index(s,t)==-1)break;

printf("输入要移动的位置:

\n");

scanf("%d",&q);

yidong(s,t,q);

getchar();

break;

case4:

printf("输入要删除的数据:

\n");

gets(t);

if(index(s,t)!

=-1)

printf("找到\n");

else

printf("找不到!

\n");

shanchu(s,t);

break;

}

printf("********************\n");

printf("是否继续:

Y/N\n");

scanf("%c",&y);

}

rewind(fp);//指针复位

fputs(s,fp);//存盘

fclose(fp);}

运行结果:

任务总结:

这是不成功的课程设计有待提高,本来想用链表来实现,但最后百般调试仍无结果,不能脱离C语言下数组长度的有限性。

我只能无奈的宣布失败,知道自己所学胜少,能力范围,只能这样。

课程设计成绩评定表

出勤

情况

出勤天数

缺勤天数

出勤情况及设计过程表现(20分)

论文(20分)

设计成果(60分)

总成绩(100分)

 

指导教师签名:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2