《2022年文编辑 .pdf》由会员分享,可在线阅读,更多相关《2022年文编辑 .pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、个人资料整理仅限学习使用课程设计报告课程设计题目:文章编辑学生姓名:专 业:计算机科学与技术班级:学号: 指导教师:2018 年 06 月 21 日精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 15 页个人资料整理仅限学习使用目录一、实验题目1 二、实验时间、地点1 三、实验目的1 四、实验要求1 五、实现思路2 1、定义结构体22、主要函数:2六、实现过程4 主要代码: 4运行结果: 10 七、实验总结14 八、参考文献14 一、实验题目文章编辑:输入一页文字,程序可以统计出字母、数字、空格的个数。静态存储一页文章,每行最多不超过8
2、0 个字符,共 N 行;二、实验时间、地点第十九周,软件楼603 三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。四、实验要求1)分别统计出其中英文字母数和空格数及整篇文章总字数;2)统计某一字符串在文章中出现的次数,并输出该次数;3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符
3、号。输出形式:1)分行输出用户输入的各行字符;2)分 4行输出 全部字母数 、数字个数 、 空格个数 、 文章总字数 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 15 页个人资料整理仅限学习使用 /*统计 str 在文章中出现的次数 */精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 15 页个人资料整理仅限学习使用求在一行中 Str 出现的次数的流程图:查找第一个字符,如果有第一个字符即p-datai=str0,设计数器 k=0 查 找 这 个 字 符 后 面 的 字 符
4、与 要 查 找 的 字 符 串 是 否 匹 配 即p-datai+j=strj,如果匹配 k+重复第二步,如果k=len2,则查找到, count+;如果没查找到,重新进行第一步void delstringword(char *s,char *str /* 删 除 字 符 串 *s中 的 字 符 串*str*/实现思想:从字符串 s 中寻找 str 第一次出现的位置 *p=strstr(s,str。len=strlen(s。i=len-strlen(p即前 i项恰好不含要删除的字符串,将开始count=0。h=0。len1=0。p-datai=str0 i+ k=0。p-datai+j=str
5、j k+。k=len2 count+。i=i+k-1。结束Y N Y N N Y 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 15 页个人资料整理仅限学习使用前 i 项复制到 tmp中j=i+strlen(str 即要删除的字符串在i+1 和 j 之间,将 j 之后的字符串复制到 tmp中将 tmp赋给串 s,返回 s 六、实现过程主要代码:#include #include #include #include typedef struct line char *data。struct line *next。LINE。void Cr
6、eate(LINE * &head printf (请输入一页文章,以Ctrl+E(E 为结尾 ( 每行最多输入 80字符!:n。LINE *p=new LINE 。 /*首先为链表建立一个附加表头结点 */ head=p。 /*将 p 付给 表头指针 */ char ch100。 str p i j s for(m=0。m for(n=j。n tmp 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 15 页个人资料整理仅限学习使用 while(1 gets(ch。 /*输入字符串! */ if(strlen(ch80 printf(每
7、行最多输入 80 字符。 break。 if(ch0=5break。 /*如果发现输入 E,则退出输入 */ p=p-next=new LINE。 p-data=new charstrlen(ch+1。 /*为结点分配空间 */ strcpy(p-data,ch。 if(chstrlen(ch-1=5 /*除去最后一个控制符 E */ p-datastrlen(ch-1=0。 break。 p-next=NULL。 /*最后的一个指针为空 */ head=head-next。 /* 文本字数统计 */ int Count_Space(LINE* &head/统计空格数 LINE *p=head
8、。int asc_space=32。int count=0。int i。int Len 。do Len=strlen(p-data。for(i=0。i if(p-datai=asc_space count+。while(p=p-next!=NULL。return count。 int Count_Num(LINE * &head/统计数字个数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 15 页个人资料整理仅限学习使用 LINE *p=head。int count=0。int Len 。int i。do Len=strlen(p-da
9、ta。for(i=0。i if(p-datai=48 & p-datai count+。while(p=p-next!=NULL。return count。 int Count_All_Word(LINE * &head/统计文章的总字数 LINE *p=head。int count=0。do count+=strlen(p-data。while(p=p-next!=NULL。return count。 int Count_Letter(LINE * &head/统计字母数 LINE *p=head。int count=0。int Len 。int i。do Len=strlen(p-data
10、。for(i=0。i if(p-datai=a & p-dataidatai=A & p-dataicount+。 /计算字母个数 while(p=p-next!=NULL。return count。 int Find_Word(LINE * &head,char *sch/统计 sch 在文章中出现的次数 LINE *p=head。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 15 页个人资料整理仅限学习使用int count=0。int len1=0。int len2=strlen(sch。int i,j,k。do len1=st
11、rlen(p-data。/ 当前行的字符数for(i=0。i if(p-datai=sch0 k=0。for(j=0。j if(p-datai+j=schjk=k+1。if(k=len2 count+。i=i+k-1 。 while(p=p-next!=NULL。return count。 /* 特定字符串的删除 */ void del_string_word(char *s,char *sch char *p=strstr(s,sch。char tmp80。int len=strlen(s。int k,kk。int i=len-strlen(p。int j=i+strlen(sch。int
12、count=0。for(k=0 。k tmpcount+=sk。for(kk=j。kk tmpcount+=skk。tmpcount=0。strcpy(s,tmp。 void Del_String(LINE * &head,char *sch/删除指定的字符串 LINE *p=head。do while(strstr(p-data,sch!=NULL del_string_word(p-data,sch。while(p=p-next!=NULL。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 15 页个人资料整理仅限学习使用 /* 打印
13、输入的文本 */ void OutPutTxt(LINE * &head/向屏幕输出文章 LINE *p=head。printf(文本文件输出如下: 。do printf(%sn,p-data。while(p=p-next!=NULL。 void Count(LINE * &head printf(文章统计信息结果如下:n 。printf(英文字母数: %dn,Count_Letter(head。printf(空格数 : %d n,Count_Space(head。printf(文章中共出现数字: %dn,Count_Num(head。printf(文 章出 现 的 汉 字和 标 点 -Cou
14、nt_Num(head-Count_Space(head-Count_Letter(head/2。printf(统计文章的总字数 : %dn,(Count_All_Word(head+Count_Num(head+Count_Space(head+Count_Letter(head/2 。printf(n。 void main( LINE *head 。char sch20。char ID10。char ch 。char tmp_sch20。printf( 文章编辑系统 n 。printf( 主菜单如下: n 。while(1 printf( *n。printf( 1.新建文本 n 。prin
15、tf( 2.浏览输入文本n 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 15 页个人资料整理仅限学习使用printf( 3.文本字符统计n 。printf( 4.特定字符串的统计n 。printf( 5.特定字符串的删除n 。printf( 6.退出n 。printf( *n。printf(注:请您按关键字代号选择菜单操作! 如是第一次操作,务必先选第一步 !n 。printf(请输入序号: 。scanf(%s,ID。while(1 if(strcmp(ID,1=0 printf(新建文本要覆盖已有文本,是否继续输入? 。getc
16、har( 。scanf(%c,&ch 。system(cls。if(ch=n|ch=N break。else if(ch=y|ch=Y Create(head 。break。 else if(strcmp(ID,2=0 system(cls。OutPutTxt(head 。break。 else if(strcmp(ID,3=0 system(cls。OutPutTxt(head 。printf(n。Count(head。break。 else if(strcmp(ID,4=0 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 15 页
17、个人资料整理仅限学习使用 system(cls。printf(请输入要统计的字符串:。scanf(%s,sch。printf(n。OutPutTxt(head 。printf(n。printf(出现的次数为: %dn,Find_Word(head,sch。break。 else if(strcmp(ID,5=0 system(cls。printf(请输入要删除的某一字符串:。scanf(%s,tmp_sch 。printf(n。OutPutTxt(head 。Del_String(head,tmp_sch。printf(删除后 。OutPutTxt(head 。break。 else if(s
18、trcmp(ID,6=0 printf(你 确 定 要 退 出 系 统 吗 ? 。getchar( 。scanf(%c,&ch 。system(cls。if(ch=n|ch=N break。else if(ch=y|ch=Y exit(0。 else system(cls。printf(您 输 入 字 母 有 错 , 请 重 新 输入!nn。break。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 15 页个人资料整理仅限学习使用运行结果:1、主界面2、新建文本界面精选学习资料 - - - - - - - - - 名师归纳总结 -
19、 - - - - - -第 12 页,共 15 页个人资料整理仅限学习使用3、浏览文本精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 15 页个人资料整理仅限学习使用4、文本字符统计5、特定字符串统计6、特定字符串删除精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 15 页个人资料整理仅限学习使用七、实验总结本次课程设计历时一周,所用知识基本上包括了课本所学的知识以及很多有关 C+的基础知识,课程设计的过程中自己更更进一步了解了链表,掌握了数据结构的思想与方法,也使我认识到自
20、己在学习编程方面还有很多的不足。自己在编写程序的过程中,不是所有知识一下就想起来的,而是出现了不少错误,通过调试,在查阅一些资料后,才整理出来的。今后我要多读一些编程方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。我相信,随着时间的积累系统中很多内容都将得到充实。其实,系统中也有不少亮点,比如:统计出汉字个数,strstr)函数的应用,链表的运用,清屏函数等。八、参考文献数据结构 c+版)第二版李根强中国水利水电出版社C语言程序设计第二版 谭浩强清华大学出版社精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 15 页