庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc

上传人:b****2 文档编号:13777206 上传时间:2022-10-13 格式:DOC 页数:15 大小:208.50KB
下载 相关 举报
庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc_第1页
第1页 / 共15页
庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc_第2页
第2页 / 共15页
庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc_第3页
第3页 / 共15页
庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc_第4页
第4页 / 共15页
庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc

《庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc(15页珍藏版)》请在冰豆网上搜索。

庞贝贝-1104040216-课设报告3-文章编辑Word文档下载推荐.doc

输出形式:

(1)分行输出用户输入的各行字符;

(2)分4行输出"

全部字母数"

、"

数字个数"

空格个数"

文章总字数"

(3)输出删除某一字符串后的文章;

二、概要设计

1、为了实现程序,需要使用线性表、串复制、求串长

typedefstructLNode

{

ElemType*elem

Intlength

Intlistsize;

}LNode,*linklist;

StrCopy(&

T,s)

初始条件:

串S存在

操作结果:

由串复制得串T.

Strlength(S)

串S存在。

操作结果:

返回S的元素个数,称为串的长度。

2、本程序分四个模块

1)输入输出模块

输入模块的设计思想:

每页设立一个头结点head,每行设立一个行结点p,p可以指向后一行(包含next指针),而且每一个行结点还要有一定存储空间,用于存放该行的字符串,这里又有三种方式,一种是用大小为80的字符数组存放,一种是采用动态存储方式,根据字符串的大小分配数组的大小,还有一种是线性表形式,为每个单词分配一个结点,以空格键作为标志,这样便于查找单词和删除单词,但有一点就是空格数不好统计,输入的时候需要连续为每个单词分配存储空间。

经过综合考虑,本算法决定采用第二种动态分配数组大小的方案。

同时。

为了便于用户输出某行,要为每个结点设置一个行号。

设计方案用图解表示为:

由于c++语言的输入标志为cin,而cin不识别空格键,会自动跳过空格键,继续输入别的字符,不能满足文章编辑器的功能需求,故本程序采用c语言的输入语言get(),get语句有一个特点就是会以回车键作为字符串输入结束的标志,本程序将利用这个特点作为行结束的标志。

而以#作为一页文章结束的标志。

linklistCreateTXT()

{

for(标志)

{gets(字符串);

\\gets函数以回车键结束,却不输入回车键

申请字符串大小的数组空间;

拷贝字符串给申请到的数组空间;

}

输出模块主要借助指针输出。

voidOutPutTxt(linklisthead)

while(行指针不为空)

{

for()

输出每行字符串;

}

2)统计模块

统计模块分五大模块,分别是:

"

某一字符串出现的次数"

intCount_Space(linklisthead)//统计空格数

intcount=0;

遍历链表;

if(字符==’\0’)

count++;

returncount;

intCount_ZM(linklisthead)//统计字母数

if(('

a'

<

=字符<

='

z'

)||'

A'

=字符<

Z'

))

count++;

intCount_All_Word(linklisthead)//统计文章的总字数

count=count+每行的字符长度;

intCount_Num(linklisthead)//统计数字数

intcount;

if(’0’<

=’9’)

3)查找模块

intFind_Word(linklisthead,charsch[])//统计sch在文章中出现的次数

for()//在每一行中查找;

for()

{采用简单串匹配算法;

每找到一个匹配串则计数器加1;

4)删除模块

linklistDel_String(linklisthead,charsch[])//删除指定的字符串

for()//遍历每一行

每搜索到一个相同的字符串,清空,并把后面的字符串前移

5)主程序模块

voidmain()

while标志)

switch()

case标志:

命令;

break;

......

default:

输出提示语,输入代码有误;

各模块之间的关系

主程序模块momokuai

文本输入输出模块

文本信息统计模块

文本查询模块

文本删除模块

三、详细设计

#include<

iostream.h>

#include<

stdio.h>

stdlib.h>

string.h>

1、行结点

char*data;

LNode*next;

2、创建文本

chartemp[80];

inti,N;

cout<

请问共要输入几行?

;

cin>

>

N;

请输入文本:

endl;

linklistp,head;

p=newLNode;

p->

data=NULL;

next=NULL;

head=p;

for(i=0;

i<

i++)

gets(temp);

//以回车键作为行结束标志,却不接收最后一个回车键

next=newLNode;

p=p->

next;

data=newchar[strlen(temp)+1];

//申请字符串大小的空间(比字符串大1,用于存放字符串结束标识符)

strcpy(p->

data,temp);

data[strlen(temp)]='

\0'

returnhead;

}

3、输出文本

linklistp;

inti;

p=head->

while(p)

for(i=0;

p->

data[i]!

cout<

data[i];

cout<

p=p->

4、统计文章总字数

intCount_All_Word(linklisthead)

intcount=0;

count=count+strlen(p->

data);

p=p->

returncount;

5、统计文章数字数

intCount_Num(linklisthead)

for(inti=0;

if(p->

data[i]>

0'

&

data[i]<

9'

count++;

6、统计文章字母数

intCount_ZM(linklisthead)

if((p->

)||(p->

7、统计文章空格数

intCount_Space(linklisthead)

data[i]=='

'

8、查找字符串

intFind_Word(linklisthead,charsch[])

intcount=0,i,j,len1,len2,b,k;

len2=strlen(sch);

len1=strlen(p->

b=len1-len2;

=b;

{ for(k=i,j=0;

j<

len2;

{

data[k]==sch[j])

{k++;

j++;

elsebreak;

}

if(j==len2)

}

9、删除字符串

linklistDel_String(linklisthead,charsch[])

intcount=0,i,j,len1,len2,b,k;

)//寻找相同的串;

if(j==len2)//如果找到相同的串就删除并移动后面的字符串

{

while(p->

data[k])

{p->

data[k-len2]=p->

data[k];

p->

data[k]=NULL;

k++;

len1=strlen(p->

//修正串长

b=len1-len2;

//修正参数

i=0;

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

当前位置:首页 > 工程科技 > 冶金矿山地质

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

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