数据结构课程设计 文章编辑Word格式.docx

上传人:b****3 文档编号:6810647 上传时间:2023-05-07 格式:DOCX 页数:23 大小:218.11KB
下载 相关 举报
数据结构课程设计 文章编辑Word格式.docx_第1页
第1页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第2页
第2页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第3页
第3页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第4页
第4页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第5页
第5页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第6页
第6页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第7页
第7页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第8页
第8页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第9页
第9页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第10页
第10页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第11页
第11页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第12页
第12页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第13页
第13页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第14页
第14页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第15页
第15页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第16页
第16页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第17页
第17页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第18页
第18页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第19页
第19页 / 共23页
数据结构课程设计 文章编辑Word格式.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据结构课程设计 文章编辑Word格式.docx

《数据结构课程设计 文章编辑Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计 文章编辑Word格式.docx(23页珍藏版)》请在冰点文库上搜索。

数据结构课程设计 文章编辑Word格式.docx

3、删除某一子串,并将后面的字符前移。

4、实现功能:

⑴分行输出用户输入的各行字符;

⑵分4行输出“全部字母数”、“数字个数”、“空格个数”、“文章总字数”

⑶输出删除某一字符串后的文章。

四、主要数据结构与算法

1、主要数据结构

1.1主要数据结构

函数名

实现功能

typedefstruct{DataTypea[MAXSIZE];

intlength;

}Article;

定义串的静态存储分配结构

voidinput(Article*s)

输入文本

voidptint(Article*s)

输出文本

voidletter_number(Article*s)

输出全部字母个数

voidspace_number(Article*s)

输出全部空格个数

voiddigit_number(Article*s)

输出全部数字总数

voidsize_number(Article*s)

输出文章总字数

voiddele_print(Article*p,Article*s)

输出删除某一字符串后的文章

voidCounter(Article*p,Article*s)

统计某个字符串在文章中出现的次数

表1主要数据结构

1.2程序流程图

图1程序流程图

2、主要算法设计

2.1输入文本

输入一段文本,当输入的文本是回车符(“\n”)时,将输入的文本最后一个字符赋成字符串的结束符’\0’,然后修改输入文本的长度。

voidinput(Article*s)/**输入文本**/

{

inti;

s->

length=0;

for(i=0;

i<

MAXSIZE;

i++)

{

scanf("

%c"

&

(s->

a[i]));

s->

length++;

if(s->

a[i]=='

\n'

{

s->

a[i]='

\0'

;

length--;

break;

}

}

}

2.2输出文本

将输入的文本,如果输入文本的长度为0,则以错误提示出现在屏幕上,若长度不为0,则以每行显示80个字符的格式输出在屏幕上。

voidptint(Article*s)/*输出文本*/

inti,j=0;

if(!

s->

length)

printf("

\n错误!

"

);

else

for(i=0;

length;

printf("

s->

a[i]);

j++;

if(j%80==0)

printf("

\n"

2.3输出删除某一字符串后的文章

此函数用到了串的简单模式匹配,即:

设置一个标记succ,当正文串s与模式串匹配成功时,标记succ=1;

当正文串s与模式串匹配不成功时,succ=0。

最后根据标记的值来判断时候找到匹配的子串,最终实现删除操作。

voiddele_print(Article*p,Article*s)/*输出删除某一字符串后的文章*/

inti,j,succ,flag=1;

i=0;

while((i<

=s->

length-p->

length+1))

j=0;

succ=1;

/*用j扫描模式p*/

while((j<

=p->

length-1)&

&

succ)

if(p->

a[j]==s->

a[i+j])

j++;

else

succ=0;

if(j==p->

length)

flag=0;

if(!

succ)

{

else

i=i+p->

length-1;

i++;

printf("

%s\n"

a+i);

if(flag==1)

但找不到要删除的字符串!

2.4统计某个字符串在文章中出现的次数

此函数也用到了串的简单模式匹配,即:

最后根据标记的值来判断时候找到匹配的子串。

设置一个计数标记k,当匹配成功时,将匹配的结果记录保存下来后,最后输出统计特殊字符串出现的次数。

voidCounter(Article*p,Article*s)/*统计某个字符串在文章中出现的次数*/

inti,j,succ,k=0;

elsesucc=0;

if(succ)

k++;

if(k>

0)

\n该字符串在文章中出现的次数为:

%d次\n"

k);

五、调试与分析

1、菜单主界面

图2主界面

2、输入函数

由于程序的功能的不足,虽然可以输入中文,但是不能够统计中文字符的个数。

图3输入文本

3、输出文本

在输入一段文本之后的显示输出文本如下图所示,每行最多输入80个字符。

图4输出文本

4、统计文字、数字、空格的个数

图5统计文字、数字、空格的个数

5、统计某个字符串在文章中出现的次数

图6统计某个字符串在文章中出现的次数

6、输出删除某一字符串后的文章

由于程序不够完善,不能进行连续的删除操作,只能进行一次删除操作后再返回主菜单,继续调用删除函数时,不能够接着第一次删除操作后得到的结果再删除字符串,运行结果如图8所示。

同时在输出文章中没有出现过的字符串时,由于程序功能的欠缺,程序功能还是会将原文章打印出来。

不能很有效地提示删除不成功,或者提示重新输入之类的提示语。

运行结果如图9所示。

图7删除某一字符串后显示的文章

图8删除功能缺点一

图9删除功能缺点二

六、总结

通过五天的课程设计的内容,我完成了文章编辑题目的设计。

但是程序还不够完善,因为有些功能还是不能够实现。

例如:

在执行菜单时,第一次选择删除删除特殊字符串的操作时,特殊字符串被删除了后,又返回主菜单,继续再选择删除功能时,第一次被删除后得到的结果,继续再删除就不能进行了。

在设计过程中,设计删除函数时,其中用到串的模式匹配,在匹配时出现了错误,导致程序一直不能执行下去,通过老师和同学的帮助下,也一一解决了,同时也锻炼了调试程序的能力。

还有在用指针时,没开辟存储空间,程序也不能执行。

但是通过这次的课程设计,加强了我的动手、思考和解决问题的能力。

设计的结果固然重要,但是设计过程更为重要,在这次的作业中,我学到了很多的东西,也积累了关于做这样的课程设计的一些经验。

通过这一次的课程设计,让我对《数据结构》以及其课程设计的知识也有了更深的理解和认识。

所以,我们在理解书本知识的同时,应该尽可能多做一些算法题,提高自己分析问题和解决问题的能力,这也是学习这门课程最终的目的。

七、参考文献

[1]王震江,何英,吴绍兵.数据结构.云南:

云南大学出版社,2008

[2]谭浩强.C程序设计(第四版).北京:

清华大学出版社,2010

[3]王爱民,李杰,罗颖.数据结构(C语言描述).北京:

清华大学出版社,2011

八、程序清单

#include<

string.h>

stdio.h>

stdlib.h>

malloc.h>

conio.h>

#defineMAXSIZE1000

typedefcharDataType;

typedefstruct

DataTypestr[MAXSIZE];

intlength;

}Article;

Article*s,*p,*t,*m;

str[i]));

str[i]=='

str[i]='

str[i]);

voidletter_number(Article*s)/*全部字母个数*/

\n错误!

if((s->

str[i]>

='

a'

str[i]<

z'

)||(s->

A'

Z'

))

%d"

j);

voidspace_number(Article*s)/*全部空格个数*/

if(s->

'

voiddigit_number(Article*s)/*全部数字总数*/

0'

9'

voidsize_number(Article*s)/*文章总字数*/

length);

str[j]==s->

str[i+j])

str+i);

voidmain()

charn;

Article*s,*t,*m;

system("

color3F"

\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"

\t┃*设计题目:

文章编辑*┃\n"

\t┃************************************************************┃\n"

\t┃*☆☆☆昆明学院信息技术学院☆☆☆*┃\n"

\t┃*∮2011级计科2班杨铄201111010234∮*┃\n"

\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"

PAUSE"

cls"

color3f"

菜单列表\n"

\t┃***┃\n"

\t┃*0.退出*1.输入一段文字*┃\n"

\t┃*2.显示输入的文字*3.统计字母、数字、空格*┃\n"

\t┃*4.统计特殊字符串出现频率*5.删除某一特殊字符串*┃\n"

while((n='

)&

(n='

1'

2'

3'

4'

5'

{

\n请选择你需要操作的步骤(0~5):

fflush(stdin);

%s"

n);

switch(n)

{

case'

:

{

exit(0);

}

s=(Article*)malloc(sizeof(Article));

printf("

请输入一段文字:

input(s);

break;

\n文本录入完毕!

输出的文本为:

ptint(s);

\n全部字母个数为:

letter_number(s);

\n全部空格个数为:

space_number(s);

\n全部数字个数为:

digit_number(s);

\n文章总字数为:

size_number(s);

m=(Article*)malloc(sizeof(Article));

\n请输入要统计的字符串:

input(m);

\n统计字符串的结果为:

Counter(m,s);

{

t=(Article*)malloc(sizeof(Article));

\n请输入要删除的字符串:

input(t);

\n结果为:

dele_print(t,s);

}

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

当前位置:首页 > 法律文书 > 调解书

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

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