简单文本编辑器设计报告.docx

上传人:b****2 文档编号:2250481 上传时间:2022-10-28 格式:DOCX 页数:27 大小:137.62KB
下载 相关 举报
简单文本编辑器设计报告.docx_第1页
第1页 / 共27页
简单文本编辑器设计报告.docx_第2页
第2页 / 共27页
简单文本编辑器设计报告.docx_第3页
第3页 / 共27页
简单文本编辑器设计报告.docx_第4页
第4页 / 共27页
简单文本编辑器设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

简单文本编辑器设计报告.docx

《简单文本编辑器设计报告.docx》由会员分享,可在线阅读,更多相关《简单文本编辑器设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

简单文本编辑器设计报告.docx

简单文本编辑器设计报告

简易文本编辑器

●需求分析

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

●概要设计

为实现数据的有序存储,该编辑器用字符数组来存储输入的信息。

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

其特点为:

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

在编辑器的主界面中应有如下提示信息(包括功能的完成的基本思想):

1)清空以前的文本信息:

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

2)显示当前文本信息:

遍历用数组存入的信息,并输入到外部显示器上;

3)编辑信息:

通过对数组的直接输入操作得到字符数组,这要求数组有绝对大的空间,而且每一次的输入完毕必须有相应的数组下表地址的记录,应此建立一个全局变量ntext记录;

4)查找信息:

通过循环在数组中找到所需要的信息;

5)替换文本信息:

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

6)插入文本信息:

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

7)移动文本信息:

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

8)删除文本信息:

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

9)退出编辑器:

通过确认是否保存安全退出。

10)程序中主要的函数为:

子串查找在朱串的位置,程序如下:

intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配)

{

inti1=l,j=0;

while(i1

{

if(text[i1]==t[j])//继续匹配下一个字符

{

j++;

i1++;

//主串和子串依次匹配下一个字符

}

else//主串、子串指针回溯重新开始下一次匹配

{

i1=i1-j+1;//主串从下一个位置开始匹配

j=0;

//子串从头开始匹配

}

}

if(j>=i2)

{

return(i1-i2);

}//返回匹配的第一个字符的下标

else

return(-1);//模式匹配不成功

}

●详细设计

1.包括的头文件

#include"stdafx.h"

#include

#include

#include

#include

#defineMAX10000

#define_CRT_SECURE_NO_DEPRECATE//在vs中取消warning的警告

2.相关函数原型

voidmenu();

voidshuru(chartext[]);

voidbc(chartext[]);

voiddakai(chartext[]);

voiddayin(chartext[]);

voidchazhao(chartext[],intl);

voidtihan(chartext[],intl);

intstrindex(chartext[],chart[],inti2,intl);

voidshanchu(charp[],intl);

voidcs(chartext[]);

voidcharu(chartext[],intl);

voidtuichu(intstatus);

chartext[MAX]="";//文本编辑域

charname[20]="";//文件保存的位置

intstatus=0;//显示是否保存过的状态

intntext;//文本编辑的位置

3./*打开文件模块*/

voiddakai(chartext[])

{

system("cls");

FILE*fp;

charpd,ch;

charname[30];

inti=0;

printf("输入A:

确定打开文件(未保存的数据将会丢失)M:

返回主菜单");

fflush(stdin);

pd=getchar();

if(pd=='A'||pd=='a')

{

printf("请输入要打开文件名字(例如c:

\\a.txt)");

scanf("%s",name);

while((fp=fopen(name,"r"))==NULL)

{

printf("\n打开文件失败,请重新输入要打开的文件名:

");

scanf("%s",name);

}

cs(text);

while(!

feof(fp))

{

ch=fgetc(fp);

text[i]=ch;

i++;

}

text[i]='\0';

ntext=i;

fclose(fp);

printf("\n文件读取成功\n文件内容为\n");

dayin(text);

}

if(pd=='M'||pd=='m')

menu();

}

4./*保存模块*/

voidbc(chartext[])

{

system("cls");

FILE*fp;

charpd;

chartmp;

inti;

printf("\n输入【A】保存;任意键返回主菜单不保存\n");

fflush(stdin);

pd=getchar();

if(!

(pd=='A'||pd=='a'))

{

menu();

}

else

{

if(name[20]==NULL)

{

printf("\n请输入保存文件名(例如:

c:

\\a.txt):

");

scanf("%s",name);

}

while((fp=fopen(name,"w+"))==NULL)

{

printf("文件不存在,请重新输入文件名:

");

scanf("%s",name);

}

printf("\nA:

确定;B:

取消:

");

while(scanf("%c",&tmp)!

=EOF)

{

if(tmp=='A'||tmp=='a')

{

for(i=0;i

fprintf(fp,"%c",text[i]);

fclose(fp);

status=1;

printf("\n文件保存成功\n");

break;

}

if(tmp=='B'||tmp=='b')

{

break;

}

}

}

}

5./*初始化模块*/

voidcs(chartext[])

{

inti;

for(i=0;i

{

text[i]='\0';

}

ntext=0;

status=0;

}

intstrindex(chartext[],chart[],inti2,intl)//查找要操作的数据的位置(模式匹配)

{

inti1=l,j=0;

while(i1

{

if(text[i1]==t[j])//继续匹配下一个字符

{

j++;

i1++;

//主串和子串依次匹配下一个字符

}

else//主串、子串指针回溯重新开始下一次匹配

{

i1=i1-j+1;//主串从下一个位置开始匹配

j=0;

//子串从头开始匹配

}

}

if(j>=i2)

{

return(i1-i2);

}//返回匹配的第一个字符的下标

else

return(-1);//模式匹配不成功

}

6./*菜单显示模块*/

voidmenu()

{

system("cls");

time_ttimep;

time(&timep);

printf("%s",ctime(&timep));

printf("\n\n\n\n\n\n\n\n\n\t\t\tWelcomtouseourTXTeditionsystem!

\n");

printf("\n\n\t\t\t欢迎您使用文本编辑器软件!

\n");

printf("\n\n\n\n\n\n\n\n\npressEntertocontinue...\n");

getchar();

loop:

system("cls");

printf("\n\n\n\n\t\t******************简易文本编辑器*****************\n\n");

printf("\t\t\t\t----0.清空内容--\n");

printf("\t\t\t\t----1.打开文件--\n");

if(ntext==0){

printf("\t\t\t\t----2.输入内容--\n");

}

else{

printf("\t\t\t\t----2.继续输入--\n");

}

printf("\t\t\t\t----3.查找------\n");

printf("\t\t\t\t----4.插入------\n");

printf("\t\t\t\t----5.删除------\n");

printf("\t\t\t\t----6.替换------\n");

printf("\t\t\t\t----7.显示内容--\n");

printf("\t\t\t\t----8.保存------\n");

printf("\t\t\t\t----9.退出------\n");

printf("\n\t\t*********************选项************************\n");

printf("\n\t\t\t\t输入选项0-9:

");

charn;

fflush(stdin);

n=getchar();

if(n>='0'&&n<='9')

{

switch(n)

{

case'0':

cs(text);break;

case'1':

dakai(text);break;

case'2':

shuru(text);break;

case'3':

chazhao(text,0);break;

case'4':

charu(text,1);break;

case'5':

shanchu

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1