数据结构课程设计-文章编辑演示_第1页
数据结构课程设计-文章编辑演示_第2页
数据结构课程设计-文章编辑演示_第3页
数据结构课程设计-文章编辑演示_第4页
数据结构课程设计-文章编辑演示_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计任务书

专业名称:计算机科学与技术(软件工程)

课程名称:数据构造课程设计

设计题目:文章编辑问题

起止时间:2023年6月24日至2023年7月12日

问题描述

静态存储一页文章,每行最多不超过80个字符,共N行,程序可

以记录出文字、数字、空格的个数,并且可以对文章中特定内容进行

查找和替代,同步也可以删除指定内容。

基本规定

(1)分别记录出其中英文字母数和空格数和整篇文章总字数;

(2)记录某一字符串在文章中出现的次数,并输出该次数;

(3)查找出文章中某一段文字,并用其他文字进行替代;

(4)删除某一子串,并将背面H勺字符前移。

输出形式:

(1)分行输出顾客输入欧I各行字符;

(2)分4行输出〃所有字母数〃、〃数字个数〃、〃空格个数〃、〃文

章总字数〃;

(3)查找出指定字符串在文章中出现的所有地方并替代,输出替

代后成果;

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

实现提醒

存储构造使用线性表,分别用几种子函数实现对应的功能,并且使用

菜单的形式,可以选择所要进行日勺操作(查找、替代、册IJ除、记录等)。

文章编辑系统

1概要设计

本次课程设计的题目是文章编辑系统,本系统H勺功能描述如下:顾客新建文

本、浏览新建文本、文本字符记录、指定字符串记录、指定字符串删除、指定字

符串替代等操作。

1.新建文本

2.浏览输入文本

3.文本字符记录

4.指定字符串记录

5.指定字符串删除

6.指定字符串替代

7.退出系统

本系统包括七个功能模块,分别为:新建文本模块,浏览输入文本模块,指

定字符串记录模块,指定字符串删除模块,指定字符串删除模块,指定字符串替

代模块以退出系统模块。新建文本模块实现顾客录入文本信息,并且系统自动保

留录入信息。浏览输入文本模块实现了显示顾客录入信息的功能。指定字符串统

模块实现了对英文字母数和空格数和整篇文章总字数日勺记录。指定字符串记录实

现了记录顾客自定义字符串个数的功能。指定字符串删除模块实现了对顾客自定

义字符串H勺删除。指定字符串替代模块实现了替代顾客自定义字符串为顾客定义

时新字符功能。退出系统模块实现了退出系统功能。

图1.1系统功能模块图

2详细设计

这部分详细简介了系统中重要部分日勺功能实现,以和代码功能阐明。

voidCreate(LINE*&head)

printf(〃请输入一页文章,以Ctrl+E为结尾(每行最多输入80字

符!):\n〃);〃以Ctrl+E结束文本录入,防止发生混淆

LINE*p=newLINE;/*首先为链表建立一种附加表头结点*/

head=p;/*将P付给表头指针*/

charch[100:;

while(1)

(

gets(ch);/*输入字符串!*/

if(strlen(ch)>80)

(

printf(〃每行最多输入80字符〃);

break;

)

if(ch[0]==5)break;/*假如发现输入'E,则退出输入*/

p-p->next-newLINE;

p->data=newchar[strlen(ch)+1];/*为结点分派空间*/

strcpy(p->data,ch);

if(ch[strlen(ch)-l]==5)/*除去最终一种控制符E*/

(

p->data[strlen(ch)-1]=,\0J;

break;

)

)

p->next=NULL;/*最终的一1种指针为至*/

head=head->next;

}

/**文本字数记录**/

intCountSpace(LINE*&head)〃记录空格数

(

LINE*p=head;

intasc_space=32;

intcount=0;

inti;

intLen;

do{

Len=strlen(p->data);

for(i=0;i<Len;i++)

if(p->data[i]==asc_spacc)

count++;

}while((p=p->next)!=NULL);

returncount;

)

intCountNum(LINE*&head)〃记录数字个数

LINE*p=head;

intcount=0;

intLen;

inti;

do{

Len=strlen(p->data);

for(i=0;i<Len;i++)

if(p->data[i]>=48&&p->data[i]<=57)

count++;

}while((p=p->next)!=NULL);

returncount;

)

intCount_All_Word(LINE*&head)〃记录文章的总字数

(

LINE*p=head;

intcount=0;

do{

count+=strlen(p->data);

}while((p=p->next)!=NULL);

returncount;

)

intCount_Letter(LINE*&head)〃记录字母数

(

LINE*p=head;

intcount=0;

intLen;

inti;

do{

Len=strlen(p->data);

for(1=0;i<Len;i++)

if(p->data[i]>=,a*&&p->data[i]<=,z,p->data[i]>=,&&

p->data[i]<=,Z')count++;〃计算字母个数

}

while((p=p->next)!=NULL);

returncount;

}

intFindWord(LINE*&head,char*sch)〃记录sch在文章中出现日勺次数

LINE*p=head;

intcount=0;

intlenl=O;

intlen2=strlen(sch);

inti,j,k;

do(

lenl=strlen(p->data);//目前行口勺字符数

for(i=0;i<lenl;i++)

(

if(p->data[i]==sch[0])

(

k=0;

for(j=0;j<=len2-l;j++)

if(p->deila[i+j]一sch[j])k-k+1;

if(k==len2){count++;i=i+k-l;}

)

)

}while((p=p->next)!=NULL);

returncount;

)

/**特定字符串的删除**/

voiddcl_string_word(char*s,char*sch)

char*p=strstr(s,sch);

chartmp[80];

intlen=strlen(s);

intk,kk;

inti=len-strlen(p);

intj=i+strlen(sch);

intcount=0;

for(k=0;k<i;k++)

tmp[count++]=s[k];

for(kk=j;kk<lcn;kk++)

tmp[count++]=s[kk];

Unp[counl]-'\0';

strcpy(s,tmp);

)

voidDelString(LINE*&head,char*sch)〃删除指定的字符串

(

LINE*p=head;

do{

while(strstr(p->data,sch)!=NULL)

delstringword(p->data,sch);

}while((p=p->next)!=NULL);

}

特定字符串的替代**/

voidrcplace_string_word(char*s,char*sch,char*rch)

(

intStringLen;

charcaNewString[100];

char*FindPos=strstr(s,sch);

//if((JFindPos)||(!sch))

//return-1;

while(FindPos)

(

memset(caNewString,0,sizeof(caNewString));

StringLen=FindPos-s;

strncpy(caNewString,s,StringLen);

strcat(caNewString,reh);

strcat(caNewString,FindPos+strlen(sch));

strcpy(s,caNewString);

FindPos=strstr(s,sch);

/*return0;*/

}

voidReplace_String(LINE*&head,char*sch,char*reh)〃替代指定日勺字

符串

{

LINE*p=head;

do(

while(strstr(p->data,sch)!=NULL)

replace_stringword(p->data,sch,reh);

}while((p=p->next)!=NULL);

)

/**打印输入欧I文本**/

voidOutPutTxt(LINE*&head)〃向屏幕输出文章

(

LINE*p=head;

printf(〃文本文献输出如下:〃);

do(

printf(z,%s\n,z,p->data);

}while((p=p->next)!=NULL);

}

voidCount(LINE*&head)

(

printf("文章记录信息成果:\n〃);

printf("所有字母数:%d\n/z,Count_Letter(head));

printf(〃数字个数:%d\nz,,Count_Num(heac));

printf("空格个数:%d\n,z,Count_Space(head));

printfC文章总字

数:%d\n/z,(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Cou

ntLetter(head))/2);

printf(〃\n〃);

)

voidmain()

(

LINE*head;

charsch[20];

charreh[20];

charID[10];

charch;

chartmp_sch[20];

chartmp_rch[20];

3调试汇报

在本次程序设计中,在编译过程中,出现了几次问题

(1)错误提醒:errorC2660:'search':functiondoesnottake1parameters

错误类型:Search函数参数错误

改正措施:将case语句后加break语句进行返回。

(2)错误提醒:enorC2228:leftof*.search'musthaveclass/struct/uniontype

错误类型:指针符号使用错误

改正措施:将s.Search(stu,s)更改为s->search(stu,s)

(3)错误提醒:errorC2676:binary'»':'classstd::basic_ofstream<char,struct

std::char_traits<char>>'doesnotdefinethisoperatororaconversiontoatype

acceptabletothepredefinedoperator

错误类型:文献流输入输出符号使用错误,错误使用>>作为文献写入操作符。

改正措施:将〉改为〈<。

4测试成果

测试项目测试数据测试成果

登陆界面1.新建文本显示:

2.浏览输入文本1.新建文本

3.文本字符记录2.浏览输入文本

4.指定字符串记录3.文本字符记录

5.指定字符串删除4.指定字符串记录

6.指定字符串替代5.指定字符串删除

7退.出6.指定字符串替代

7退.出

新建功能输入1:新建文本显示:

Abcdefg1234567Abcdefg1234567

显本功能输入2:浏览输入文本显示顾客录入成果:

Abcdefg1234567

记录功能输入3:文本字符记录文章记录信息成果:

所有字母数:7

数字个数:7

空格个数:1

文章总字数:15

指定字符串记输入4:指定字符串删除出现次数:1

录功能输入要记录字符串:Ab

指定字符串删输入5:指定字符串删除删除后文本文献如下:

除功能输入要删除字符串:Abcdefg1234567

指定字符串替输入6:指定字符串替代替代后文本文献如下:

代功能要替代掉H勺字符串:cdefg!!!!1234567

要替代成日勺字符串:!!”

5使用阐明

本系统开始时显示所有选择项。选择项采用文字提醒,数字选择进行选择操

作。

C'*C:\DocuBentsandSettings\NSI\桌面\Debug\2012023301267-王苍穹-文章编辑...

文章编辑系统

学号:201.2023301267

[.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统17

5.指定字符串的删除

6.指定字符串的替换

7.退出

请输入功能序号:

图5.1显示运行界面

录入选项:

输入1:新建文本

、、"C八DocumentsandSettings'NSIA桌面\Debug\2012023301267-王苍4一文章编辑...

请输入一页文章,以CtrbE为结尾<每行最多输入8。字符?八

alskdjfklasdjfdklfjdsk32113123yKE

图5.2新建文本界面

输入2:浏览输入文本

图5.3浏览输入文本界面

输入3:文本字符记录

丁C•

继计

信吉

数2

IT数

文1

1.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统1-

5.指定字符串的删除

6.指定字符串的替换

7-退:土

请输入功能序号:

图5.4文本字符记录界面

输入4:指定字符串记录

*C:\DocuBentsandSettings\NSI\桌面\Debug\2tH2023301267-王苍穹-文章编辑...

文本文件输出如下:

alskd.ifklasd.ifdkl£.idsk32113123

跚黑翘—____________________________

1.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统17

5.指定字符串的删除

6.指定字符串的替换

7.退出

图5.5指定字符串记录界面

输入5:指定字符串删除

c<<C:\Docu«entsandSettings\NSI\桌面\Debug\2012023301267-王苍穹-文章编辑...

请输入赢除的菱

文本文件输出如下:

alskdjfklasdjfdkl£jdsk32113123

删除后文本文件输出如下:

Iskdjfklsdjfdkl£jdsk32113123

1.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统17

5.指定字符串的删除

6.指定字符串的替换

7.退出

聋黑穴搂常翼“鹭

图5.6指定字符串删除界面

输入6:指定字符串替代

密*C:\DocuBentsandSettings\NSI\桌面\Debug\2012023301267-王苍穹-文章编辑..

Iskdjfklsdjfdklfjdsk32113123

请输入要替换成的字符串:?

文本文件输出如下.

Iskdjfklsdjfdklfjdsk32113123

替换后文本文件输出如下:

ls?djfflsdjfd!IfJdsf32113123

1.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统干

5.指定字符串的删除

6.指定字符串的替换

7.退出

《篇文”算施簿K第二"HE™"""™""EH

图5.7指定字符串替代界面

输入7:退出

c\*C:\DocuMentsandSettings\NSI\桌面\Debug\2012023301267-王苍穹-文章编辑...||

文本文件输出如下:

Iskdjfklsdjfdklfjdsk32113123

替换后文本文件输出如下:

IsfdjffIsdjfdfIfJdsf32113123

1.新建文本

2.浏览输入文本

3.文本字符统计

4.指定字符串的统1-

5.指定字符串的删除

6.指定字符串的替换

7-退1土

图5.8退出界面

6总结

感谢老师的指导和讲解。通过老师的讲解,让我对这门课程有了深刻的认识

和理解,也让我对这门课程有了重新的认识。

通过近两周的课程设计中,我学到了数据构造程序设计中对类的设计措施,

和对磁盘文献的操作,从中理解了数据构造中的设计思想。通过这次集中上机实

习,我充足意识到了数据构造日勺用途是非常广的,功能也非常强大,是学计算机

不可缺乏口勺知识;更重要的是,在这次编程中熟悉了编写一种比较复杂程序的流

程,以和发现问题、处理问题的I能力,为了下一次学习一门新的J计算机语言做了

充足准备。在之前感觉还是遥不可和的功能,目前可以实现了,这自然要感谢老

师和同学们的热心协助,这是我得以和时完毕这个程序日勺重要原因。最终还是要

感谢老师对我们孜孜不倦的教导。

9须:以刁/L抠7T,东凯71,/取7口报7T,E7T~~7T,MVT:

评语:

批阅教师签字:年月日

附录:所有代码

#include<string.h>

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

typedefstructline

(

char*data;

structline*next;

JUNE;

voidCreate(LINE*&head)

printf(”请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):\n”);

LINE*p=newLINE;/*首先为链表建立一种附加表头结点*/

head=p;/*将p付给表头指针*/

charch[100];

while(l)

{

gets(ch);/*输入字符串!*/

if(strlen(ch)>80)

(

printfC每行最多输入80字符)

break;

}

if(chf0]==5)break;/*假如发现输入^E,则退出输入*/

p=p->next=ne\vLINE;

p->data=newchar[strlen(ch)+l];/*为结点分派空间*/

strcpy(p->data.ch);

if(ch[strlen(ch)-1J==5)/*除去最终一种控制符AE*/

I

p->data[strlen(ch)-l]='\0';

break;

}

)

p->next=NULL;/*最终日勺一种指针为空*/

head=head->next;

}

/**文本字数记录**/

intCount_Space(LINE*&head)〃记录空格数

{

LINE*p=head;

intasc_spacc=32;

intcount=0;

inti;

intLcn;

do(

Len=strien(p->data);

for(i=0;i<Lcn;i++)

if(p->data|i]==asc_space)

count++;

)while((p=p->next)!=NULL);

returncount;

1

iniCount_Num(LINE*&head)//记录数字个数

(

LINE*p=hcad;

intcount=0;

intLen;

inti;

do{

Lcn=strlcn(p->data);

for(i=0;i<Len;i++)

if(p->data[i]>=48&&p->data[i]<=57)

count++;

}while((p=p->next)!=NULL);

returncount;

)

intCount_All_Word(LINE*&head)//记录文章的总字数

{

LINE*p=head;

intcount=0;

do{

count+=strlen(p->data);

}while((p=p->next)!=NULL);

returncount;

1

intCount_Letter(LINE*&head)〃记录字母数

{

LINE*p=head;

intcount=0;

intLen;

inti;

do{

Lcn=strlcn(p->data);

for(i=0;i<Len;i++)

if(p->data[i]>-a'&&p->data[i]<="z'||p->data[i]>=,A'&&

p->data[i]<='Z,)count+-;〃计算字母个数

}

while((p=p->next)!=NULL);

returncount;

)

intFind_Word(LINE*&head,char*sch)〃记录sch在文章中出现的J次数

{

LINE*p=head;

intcount=0;

intlenl=0;

intlen2=strlen(sch);

inti,j,k;

do{

lenl=strlen(p->data);〃目前行日勺字符数

for(i=0;i<lenl;i++)

if(p->data[i1==schf0])

k=();

for(j=0;j<=len2-l;j++)

if(p->data[i+j]==sch|j])k=k+l;

if(k==len2){count++;i=i+k-l;}

I

)

}while((p=p->next)!=NULL);

returncount;

)

/**特定字符串的删除**/

voiddel_string_word(char*s,char*sch)

(

char*p=strstr(s,sch);

chartmp[80J;

intlen=strlen(s);

intk,kk;

inti=len-strlen(p);

intj=i+strlen(sch);

intcount=0;

for(k=0;k<i;k++)

tmp[count++]=s[k];

for(kk=j;kk<lcn;kk++)

tmp[count+4-]=s[kk];

tmp[count]='\()';

strcpy(sjmp);

1

voidDel_String(LINEx&head,char*sch)〃删除指定的I字符串

(

LINE*p=head;

do{

whiIe(strstr(p->data,sch)!=NULL)

del_string_word(p->data,sch);

}while((p=p->next)!=NULL);

)

/**特定字符串日勺替代**/

voidreplace_string_word(char*s,char*sch,char*reh)

{

intStringLen;

charcaNewStringfl00];

char*FindPos=strstr(s,sch);

//if((!FindPos)||(!sch))

//return-1;

while(FindPos)

(

memset(caNewSlring,0,sizeof(caNewString));

StringLen=FindPos-s;

strncpy(caNewString,s,StringLen);

strcat(caNewString,reh);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论