数据结构课程设计文章编辑

上传人:lis****210 文档编号:110812012 上传时间:2022-06-19 格式:DOCX 页数:18 大小:206.57KB
收藏 版权申诉 举报 下载
数据结构课程设计文章编辑_第1页
第1页 / 共18页
数据结构课程设计文章编辑_第2页
第2页 / 共18页
数据结构课程设计文章编辑_第3页
第3页 / 共18页
资源描述:

《数据结构课程设计文章编辑》由会员分享,可在线阅读,更多相关《数据结构课程设计文章编辑(18页珍藏版)》请在装配图网上搜索。

1、课程设计任务书专业名称:计算机科学与技术(软件工程)课程名称:数据结构课程设计设计题目:文章编辑问题起止时间:2013年6月24日至2013年7月12日问题描述静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。基本要求(1) 分别统计出其中英文字母数和空格数及整篇文章总字数;(2) 统计某一字符申在文章中出现的次数,并输出该次数;(3) 查找出文章中某一段文字,并用其他文字进行替换;(4) 删除某一子申,并将后面的字符前移。输出形式:(1) 分行输出用户输入的各行字符;(2) 分4行输出全部

2、字母数、”数字个数、空格个数、”文意总字数;(3) 查找出指定字符申在文章中出现的所有地方并替换,输出替换后结果;输出删除某一字符申后的文章;实现提示存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。文章编辑系统1概要设计本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。1. 新建文本2. 浏览输入文本3. 文本字符统计4. 指定字符串统计5. 指定字符串删除6. 指定字符串替换7. 退出系统本系统包含七个功能模块,分别

3、为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。浏览输入文本模块实现了显示用户录入信息的功能。指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。指定字符串统计实现了统计用户自定义字符串个数的功能。指定字符串删除模块实现了对用户自定义字符串的删除。指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。退出系统模块实现了退出系统功能。文章编辑系统指定字符串统计文本字符统计浏览输入文本新建文本图1.1系统功能模块图2详细设计这部分

4、详细介绍了系统中主要部分的功能实现,以及代码功能说明。voidCreate(LINE*&head)(printf(请输入一页文章,以符!):n);/LINE*p=newLINE;/*head=p;/*charch100;while(1)(gets(ch);/*if(strlen(ch)80)Ctrl+E为结尾(每行最多输入80字以Ctrl+E结束文本录入,避免发生混淆首先为链表建立一个附加表头结点*/将p付给表头指针*/输入字符串!*/printf(-每行最多输入80字符);break;if(ch0=5)break;/*p=p-next=newLINE;p-data=newcharstrlen

5、(ch)+1;strcpy(p-data,ch);if(chstrlen(ch)-1=5)/*p-datastrlen(ch)-1=0;break;p-next=NULL;/*head=head-next;如果发现输入AE,则退出输入*/*为结点分配空间*/除去最后一个控制符人*/最后的一个指针为空*/*文本字数统计*/intCount_Space(LINE*&head)/统计空格数LINE*p=head;intasc_space=32;intcount=0;inti;intLen;doLen=strlen(p-data);for(i=0;idatai=asc_space)count+;whi

6、le(p=p-next)!=NULL);returncount;intCount_Num(LINE*&head)/统计数字个数LINE*p=head;intcount=0;intLen;inti;do(Len=strlen(p-data);for(i=0;idatai=48&p-datainext)!=NULL);returncount;intCount_All_Word(LINE*&head)/统计文章的总字数(LINE*p=head;intcount=0;do(count+=strlen(p-data);while(p=p-next)!=NULL);returncount;intCount

7、_Letter(LINE*&head)/统计字母数(LINE*p=head;intcount=0;intLen;inti;do(Len=strlen(p-data);for(i=0;idatai=a&p-dataidatai=A&p-datainext)!=NULL);returncount;统计sch在文章中出现的次intFind_Word(LINE*&head,char*sch)/LINE*p=head;intcount=0;intlen1=0;intlen2=strlen(sch);inti,j,k;dolen1=strlen(p-data);/当前行的字符数for(i=0;idatai

8、=sch0)k=0;for(j=0;jdatai+j=schj)k=k+1;if(k=len2)count+;i=i+k-1;while(p=p-next)!=NULL);returncount;/*特定字符串的删除*/voiddel_string_word(char*s,char*sch)char*p=strstr(s,sch);chartmp80;intlen=strlen(s);intk,kk;inti=len-strlen(p);intj=i+strlen(sch);intcount=0;for(k=0;ki;k+)tmpcount+=sk;for(kk=j;kkdata,sch)!=

9、NULL)del_string_word(p-data,sch);while(p=p-next)!=NULL);/*特定字符串的替换*/voidreplace_string_word(char*s,char*sch,char*reh)(intStringLen;charcaNewString100;char*FindPos=strstr(s,sch);/if(!FindPos)|(!sch)/return-1;while(FindPos)(memset(caNewString,0,sizeof(caNewString);StringLen=FindPos-s;strncpy(caNewStri

10、ng,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_string_word(p-data,sch,reh);while(p=p-next)!=NULL);/*

11、打印输入的文本*/voidOutPutTxt(LINE*&head)/向屏幕输出文章(LINE*p=head;printf(-文本文件输出如下:);do(printf(%sn”,p-data);while(p=p-next)!=NULL);voidCount(LINE*&head)(printf(文章统计信息结果:n);printf(全部字母数:dn”,Count_Letter(head);printf(数字个数:%dn,Count_Num(head);printf(空格个数:%dn,Count_Space(head);printf(文章总数:dn”,(Count_All_Word(head)

12、+Count_Num(head)+Count_Space(head)+Count_Letter(head)/2);printf(n);voidmain()(LINE*head;charsch20;charreh20;charID10;charch;chartmp_sch20;chartmp_rch20;3调试报告在本次程序设计中,在编译过程中,出现了几次问题错误提示:errorC2660:search:functiondoesnottake1parameters错误类型:Search函数参数错误改正方法:将case语句后加break语句进行返回。错误提示:errorC2228:leftof.s

13、earchmusthaveclass/struct/uniontype错误类型:指针符号使用错误改正方法:将s.Search(stu,s)更改为s-search(stu,s)(1) 错误提示:errorC2676:binary:classstd:basic_ofstreamchar,structstd:char_traitsdoesnotdefinethisoperatororaconversiontoatypeacceptabletothepredefinedoperator错误类型:文件流输入输出符号使用错误,错误使用作为文件写入操作符。改正方法:将改为。4测试结果测试项目测试数据测试结果

14、登陆界面1. 新建文本2. 浏览输入文本3. 文本字符统计4. 指定字符串统计5. 指定字符串删除6. 指定字符串替换7. 退出显示:1. 新建文本2. 浏览输入文本3. 文本字符统计4. 指定字符串统计5. 指定字符串删除6. 指定字符串替换7. 退出新建功能输入1:新建文本Abcdefg1234567显示:Abcdefg1234567显示功能输入2:浏览输入义本显示用户录入结果:Abcdefg1234567统计功能输入3:文本字符统计文章统计信息结果:全部字母数:7数字个数:7空格个数:1文早总子数:15指定字符串统计功能输入4:指定字符串删除输入要统计字符串:Ab出现次数:1指定字符串删

15、除功能输入5:指定字符串删除输入要删除字符串:Ab删除后文本文件如下:cdefg1234567指定字符串替换功能输入6:指定字符串替换要替换掉的字符串:cdefg要替换成的字符串:!替换后文本文件如下:!12345675使用说明本系统开始时显示所有选择项。选择项采用文字提示,数字选择进行选择操作。图5.1显示运行界面录入选项:输入1:新建文本=*C:DuEumrt3andSettincsXHSI1XDebuc2D120233D126T王我号ST幸罢Sr.nisitdjrkirtsJjFdKirJisham1naaE输入2:浏览输入文本图5.3浏览输入文本界面输入3:文本字符统计、CiVncuM

16、EiitaandSettineDebut?DI20233D1267-Tifi-VSS.宇喑23息:1信城.;-H1KL新建立本L洲览输入文本3-文本宇符统计*指定字哥串的筑费定字苻串的删除&一指定宇符早的督换孔退出Mi请输入刁能寻B=、*C:DuEiiBexrtsandSeftincDebus201202330126T-王弟琴女幸SiS,土本?z件希出如下,aUMjfkMMjfd*UJkK1131&3出现豹次:数为=2MWwnfliYnHzlPInMTHiWUTVMFMlPmHIniWHJTWL新建文本A浏地特入文本3.交本字荷统计队指定字符串的.$-捐定字符申的删除J指定宇符申的昔换A退出H

17、MHMMX4KMHMHMMMMMMMNMMMM-KMKMMKMMAKMKMKHkHHHXMKM44MHN4KMNMMHMM4M清输入功能序号图5.5指定字符串统计界面输入5:指定字符串删除=、*C:DuELiMrtsandSettinesW5I-D&M)ebuf2012023301Z6T-王器号一5T幸编街,斥和.曹垂戒的字待初本文件输出如下;lakdjfhLccftjfdkLEjdck3Z113123普换信奁本艾忤苟出如下,luTdjffldjfdlIfJds*32113122L新建立本矶浏览/入文本3一文本宇符统计*指定字符串的算站C指定字符串的删除指定宇符串的督换%退出*mmMMM4KM

18、HMI4KMM-MMM44MMWK-M-K厦感胃MHMMKWMMMMM请莆.叮说序4s-图5.7指定字符串替换界面输入7:退出6总结感谢老师的指导和讲解。通过老师的讲解,让我对这门课程有了深刻的认识和了解,也让我对这门课程有了重新的认识。通过近两周的课程设计中,我学到了数据结构程序设计中对类的设计方法,及对磁盘文件的操作,从中理解了数据结构中的设计思想。经过这次集中上机实习,我充分意识到了数据结构的用途是非常广的,功能也非常强大,是学计算机不可缺少的知识;更重要的是,在这次编程中熟悉了编写一个比较复杂程序的流程,以及发现问题、解决问题的能力,为了下一次学习一门新的计算机语言做了充分准备。在之前

19、感觉还是遥不可及的功能,现在可以实现了,这自然要感谢老师和同学们的热心帮助,这是我得以及时完成这个程序的重要因素。最后还是要感谢老师对我们孜孜不倦的教导。成绩:预习报告分,系统分,课设报告分,总分评语:分,总评:批阅教师签字:年月日附录:全部代码#include#include#include#includetypedefstructline(char*data;structline*next;LINE;voidCreate(LINE*&head)(printf(请输入一页文章,以LINE*p=newLINE;head=p;charch100;while(1)(gets(ch);if(strl

20、en(ch)80)(Ctrl+E为结尾(每行最多输入80字符!):n);/*首先为链表建立一个附加表头结点*/*将p付给表头指针*/*输入字符串!*/printf(每行最多输入break;80字符);if(ch0=5)break;p=p-next=newLINE;p-data=newcharstrlen(ch)+1;/*如果发现输入人,则退出输入*/*为结点分配空间*/strcpy(p-data,ch);if(chstrlen(ch)-1=5)/*除去最后一个控制符AE*/(p-datastrlen(ch)-1=0;break;p-next=NULL;/*最后的一个指针为空*/head=hea

21、d-next;/*文本字数统计*/intCount_Space(LINE*&head)/统计空格数(LINE*p=head;intasc_space=32;intcount=0;inti;intLen;do(Len=strlen(p-data);for(i=0;idatai=asc_space)count+;while(p=p-next)!=NULL);returncount;intCount_Num(LINE*&head)/统计数字个数(LINE*p=head;intcount=0;intLen;inti;do(Len=strlen(p-data);for(i=0;idatai=48&p-d

22、atainext)!=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(i=0;idatai=a&p-dataidatai=A&p-datainext)!=NULL);return

23、count;intFind_Word(LINE*&head,char*sch)/统计sch在文章中出现的次数(LINE*p=head;intcount=0;intlen1=0;intlen2=strlen(sch);inti,j,k;do(len1=strlen(p-data);/当前行的字符数for(i=0;idatai=sch0)(k=0;for(j=0;jdatai+j=schj)k=k+1;if(k=len2)(count+;i=i+k-1;while(p=p-next)!=NULL);returncount;/*特定字符串的删除*/voiddel_string_word(char*s

24、,char*sch)(char*p=strstr(s,sch);chartmp80;intlen=strlen(s);intk,kk;inti=len-strlen(p);intj=i+strlen(sch);intcount=0;for(k=0;ki;k+)tmpcount+=sk;for(kk=j;kkdata,sch)!=NULL)del_string_word(p-data,sch);while(p=p-next)!=NULL);/*特定字符串的替换*/voidreplace_string_word(char*s,char*sch,char*reh)(intStringLen;char

25、caNewString100;char*FindPos=strstr(s,sch);/if(!FindPos)|(!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;*/

26、voidReplace_String(LINE*&head,char*sch,char*reh)/替换指定的字符串(LINE*p=head;do(while(strstr(p-data,sch)!=NULL)replace_string_word(p-data,sch,reh);while(p=p-next)!=NULL);/*打印输入的文本*/voidOutPutTxt(LINE*&head)/向屏幕输出文章(LINE*p=head;printf(-文本文件输出如下:);do(printf(%sn”,p-data);while(p=p-next)!=NULL);voidCount(LINE*

27、&head)(printf(文章统计信息结果:n);printf(全部字母数:%dn,Count_Letter(head);printf(数字个数:%dn,Count_Num(head);printf(空格个数:%dn,Count_Space(head);printf(文章总字数:dn”,(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_Letter(head)/2);printf(n);voidmain()(LINE*head;charsch20;charreh20;charID10;charch;chartmp_sc

28、h20;chartmp_rch20;printf(n);printf(n);printf(文章编辑系统n);printf(n);printf(n);printf(2012023301267while(1)(printf(学号:n);n);n);n);n);n);n);n);n);n);n);n);n);n);n);n);printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(printf(n);1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串的统

29、计5.指定字符串的删除6.指定字符串的替换7.退出printf(*5);printf(-请输入功能序号:);scanf(%s”,ID);while(1)(if(strcmp(ID,1”)=0)(printf(-新建文本要覆盖已有文本,是否继续输入?(Y/N)n);getchar();scanf(%c”,&ch);system(cls);if(ch=n|ch=N)break;elseif(ch=y|ch=Y)Create(head);break;elseif(strcmp(ID,2”)=0)(system(cls);OutPutTxt(head);break;elseif(strcmp(ID,3

30、”)=0)(system(cls);OutPutTxt(head);printf(n);Count(head);break;elseif(strcmp(ID,4”)=0)(system(cls);printf(-请输入要统计的字符串:);scanf(%s,sch);printf(n);OutPutTxt(head);printf(n);printf(出现的次数为:dn”,Find_Word(head,sch);break;elseif(strcmp(ID,5”)=0)system(cls);printf(-请输入要删除的某一字符串:);scanf(%s,tmp_sch);printf(n);O

31、utPutTxt(head);Del_String(head,tmp_sch);printf(删除后);OutPutTxt(head);break;elseif(strcmp(ID,6”)=0)system(cls);printf(-请输入要替换掉的某一字符串:);scanf(%s,tmp_rch);printf(n);OutPutTxt(head);printf(-请输入要替换成的字符串:);scanf(%s,reh);printf(n);OutPutTxt(head);Replace_String(head,tmp_rch,reh);printf(-替换后);OutPutTxt(head);break;elseif(strcmp(ID,7”)=0)printf(你确定要退出系统吗?(Y/N)n);getchar();scanf(%c”,&ch);system(cls);if(ch=n|ch=N)break;elseif(ch=y|ch=Y)exit(0);elsesystem(cls);printf(-您输入字母有错,请重新输入!nn);break;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!