免费预览已结束,剩余18页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学数据结构课程设计说明书简易文本编辑器摘要:此次课程设计设计了一个简易的文本编辑器,该程序主要用于文本编辑的几个操作,主要由C语言实现。基于对文本编辑的需求该程序的功能在于:输入一页文字,程序可以统计出文字、数字、空格的个数统计某一字符串在文章中出现的次数,并输出该次数;删除某一子串,并将后面的字符前移。程序算法立足于书本并适当改良,能够实现文本的一些特定操作。关键词:文本编辑 C语言 程序算法Abstract: The curriculum designed a simple text editor, which is mainly used for text editing of several operations, mainly by the C programming language. Based on the needs of the program text editing ,the program can input a text, count the number of words numbers and spaces in the file, statistics the number of a string of in the article, and output the number of times; to remove a substring, and the characters behind the forward. Program algorithm based on the book also have some improvement. Able to achieve some specific text operations.Key words: Text editing C programming language Program algorithm1 引言目前社会上文字编辑系统发展飞快,文本编辑软件在人们的日常生活和学习、科研、生产等各个方面有着重要的应用。因此开发一款使用的编辑器是很必要的。此次设计拟开发一个简易文本编辑器,以提高对所学知识的掌握程度。在实际应用中往往需要在编辑不同的文本信息时可完成文字信息录入、统计出文字、数字、空格的个数等使用功能。因此,需要一个有类似功能的简易文字编辑器,以便实现对文本信息录入、统计文本中文字、数字、空格数,字符串出现次数、子串删除的功能。而随着计算机科学的日渐成熟,对于复杂的文字编辑,计算机已经能充分发挥其优越性。作为计算机应用的一部分,使用计算机对这些功能的实现可以大大提高工作的效率。因此,开发此类软件是一件很有必要的事情。通过根据现有的知识对软件所需的功能进行评估分析,编写算法最终编写出此程序,本系统实现在编辑不同的文本信息时可完成文字信息录入、统计出文字、数字、空格的个数等使用功能,以方便使用。2需求分析2.1基本需求现需要一个简易文本编辑器以实现以下功能:(1)输入一页文字,程序可以统计出文字、数字、空格的个数。(2)统计某一字符串在文章中出现的次数,并输出该次数。(3)删除某一子串,并将后面的字符前移。2.2功能分析 输入:对文本信息进行录入,同时完成字符数目的统计工作,将文章储存到指定文件夹。 统计:在已生成的文章中查找指定的字符串,应用串的匹配。计算该字符串的出现次数,并输出。 删除:在已生成的文章中匹配到相应的字符串,并删除,然后保存剩余的字符。3 数据结构设计考虑到此次实现的是文件的输入与存储,采用线性表方式存储,按照线性表的存储结构定义将其封装在结构体中,由此,定义如下数据结构:#define Max_Num 100typedef struct articlechar *s;/文章指针int space_num;/空格数int word_num;/文字数int number_num;/数字数int lenth;/字符串长度与文本长度无关 Article,*art;4 算法设计4.1输入函数考虑到文章长度的不确定性,为了防止空间浪费和溢出错误为其分配动态内存。该算法主要实现:对文章进行录入,并判断所录入的字符类型同时存储到文件中,并统计出各种字符的数目。算法采用字符单个录入并一次存储到动态数组中。void Input()int z=0;art Art;FILE *p;char c;int i=0,n=0;Art=(art)malloc(sizeof(Article);/分配内存空间Art-number_num=Art-space_num=Art-word_num=Art-lenth=0;/初始化Art-s=(char *)malloc(Max_Num);/分配内存空间Art-s0=0;/初始化printf(请输入文章,以连续两次回车结束(注:标点统一为英文标点)n);c=getchar();/录入文章while(1)if(c=n)/判断首次回车标识符n=1;else n=0;Art-si+1=Art-si;/文章终止符后移Art-si+=c;/录入信息Art-lenth+;/长度+1if(c=a)|(cA)/判断C类型(字、数字、空格)Art-word_num+;else if(c=0)Art-number_num+;else if(c= )Art-space_num+;else if(csi-1=Art-si;Art-lenth-;break;if(strlen(Art-s)%Max_Num=Max_Num-1)/空间不足时分配内存空间Art-s=(char *)realloc(Art-s,Art-lenth+Max_Num);z=z/2;/汉字数Art-word_num+=z;/总字数printf(文字数:%dn数字数:%dn空格数:%dn,Art-word_num,Art-number_num,Art-space_num);p=fopen(a.txt,w);/建立文件fprintf(p,%d %d %d %d %s,Art-lenth,Art-number_num,Art-space_num,Art-word_num,Art-s);/将信息写入文件printf(文章储存在当前文件下的a.txtn);fclose(p);/关闭文件free(Art-s);/释放内存空间free(Art);/释放内存空间4.2查找函数该算法通过串的匹配实现对指定的字符串的查找工作,每当匹配成功出现次数+1,最终将查找到的字符串在文章中出现的次数进行输出。void search()art Art;FILE *p;char cMax_Num;int i=0,j=0,count=0,k;Art=(art)malloc(sizeof(Article);p=fopen(a.txt,r);fscanf(p,%d %d %d %d ,&Art-lenth,&Art-number_num,&Art-space_num,&Art-word_num);/从文件中读取数据Art-s=(char*)malloc(Art-lenth+1)*sizeof(char);/根据Art-lenth分配内存空间Art-sArt-lenth=0;/输入文章终止符fread(Art-s,sizeof(char),Art-lenth,p);/读取文章printf(请输入要查询的字符串n);scanf(%s,c);k=j;while(js)/进行串的匹配if(ci=Art-sj)j+;i+;else i=0;j=+k;if(i=strlen(c)/当匹配成功时count+1count+;k=j;i=0;printf(该字符串出现过%d次n,count);fclose(p);free(Art-s);free(Art);4.3删除函数该算法实现将用户指定的字符串删除。首先将删除后的文章重新存储,然后将原文件动态内存释放实现删除操作。void del()art Art;FILE *p;char cMax_Num;int k=0,j=0,i=0,z=0;Art=(art)malloc(sizeof(Article);p=fopen(a.txt,r);fscanf(p,%d %d %d %d ,&Art-lenth,&Art-number_num,&Art-space_num,&Art-word_num);Art-s=(char*)malloc(Art-lenth+1)*sizeof(char);Art-sArt-lenth=0;fread(Art-s,sizeof(char),Art-lenth,p);printf(请输入要删除的字符串n);scanf(%s,c);for(i=0;istrlen(c);i+)/删除后文章的字、数字、空格数目if(ci=a)|(ciA)Art-word_num-;else if(ci=0)Art-number_num-;else if(ci= )Art-space_num-;else if(ciword_num-=z/2;k=j;i=0;while(js)/字符串匹配if(ci=Art-sj)j+;i+;else i=0;j=+k;if(i=strlen(c)/匹配成功,删除for(int n=k;js);j+,n+)Art-sn=Art-sj;i=0;j=k;fclose(p);Art-lenth=strlen(Art-s);/删除后的Art-s的长度p=fopen(a.txt,w);fprintf(p,%d %d %d %d %s,Art-lenth,Art-number_num,Art-space_num,Art-word_num,Art-s);printf(修改后的文章储存在当前文件下的a.txtn);fclose(p);free(Art-s);free(Art);5 程序实现运行结果:6 有关技术的讨论由于文章需要保存,鉴于此,考虑采用文件将其保存。不过如果采用文件,那么大多数操作都必须从文件中读取数据,会导致运行时间变长。但是,采用文件可确保信息长期保存,在需要时便可取来使用。由此,认为采用文件利大于弊,故采用之。在输入操作中因为录入是以单字录入,由于不会自动生成终止符,故插入终止符。因为能力有限中文标点和汉字难以区分故限定标点为英文输入。7 设计体会通过这次课程设计,我学到了很多东西。体验到了细心对一个编程者的重要性,和程序的规范对于程序的重要性。课程设计综合考察了我们的学习成果,使我们可以综合运用所学知识,发现、提出、分析和解决问题,锻炼了我们的实践能力,是对我们的实际编程能力的一次训练和考察。通过课程设计,也使我们发现了自身编程知识的欠缺,例如在此次课程设计中,我用到了很多以前几乎从未使用的关于文件的操作,在这个过程中,我将关于文件的操作又重温了一遍,加深了印象。而在遇到问题后不能快速的找到行之有效的办法将其解决,暴露了我们的自身编程能力的不足。总之,这次课程设计让我知道了,我们的编程能力还存在很大的不足,也明白了,课堂知识是远远不够的,我们要在不断的实践中去弥补去创新去挖掘。结束语通过这一周的课程设计,我对数据结构这门课程所学内容的的理解与掌握得以加深。同时,通过对算法的设计,使得我将课程所学理论与实际操作很好地相联接在了一起。在这次课程设计中,培养了我开发一个小型程序的能力。在这次对程序的设计中,我能够立足于课本而不依赖于课本,以发散思维做出设计。作为一名软件工程的学生,这样的思维方式尤为重要。感谢老师一直以来细致的授课。是您在日常教学中让我了解到了算法的重要性,让我的编程基础得到了进一步的提升。正是因此,在此次课程设计上遇到的种种问题才得以解决,我才能顺利的完成此次课程设计。在此,我仅以文字的形式表示衷心感谢,感谢您对我的帮助。参考文献1严蔚敏,吴伟民编著.数据结构(C语言版).北京:清华大学出版社,20072谭浩强 著.C程序设计(第三版).北京:清华大学出版社.2005(2007重印)3李春葆等.数据结构教程 清华大学出版社 2009年3月4徐士良,马尔妮.实用数据结构 清华大学出版社 2011年7月5徐士良.计算机软件技术基础.北京:清华大学出版社,20026徐士良.计算机常用算法(第二版).北京.:清华大学出版社,19957谭浩强,张基温,唐永炎编著.C语言程序设计教程.北京:高等教育出版社,19928C编写组编.常用C语言用法速查手册.北京:龙门书局,19959Herbert Schildt著.戴健鹏译.C语言大全(第二版).北京:高等教育出版社,199810H M Peitel,P J Deitel.C How to program,second Edition.蒋才鹏等译.C程序设计教程.北京:机械工业出版社,2000附录:源代码:#include#include#include#include#define Max_Num 100typedef struct articlechar *s;int space_num;int word_num;int number_num;int lenth; Article,*art;void Input()int z=0;art Art;FILE *p;char c;int i=0,n=0;Art=(art)malloc(sizeof(Article);Art-number_num=Art-space_num=Art-word_num=Art-lenth=0;Art-s=(char *)malloc(Max_Num);Art-s0=0;printf(请输入文章,以连续两次回车结束(注:标点统一为英文标点)n);c=getchar();while(1)if(c=n)n=1;else n=0;Art-si+1=Art-si;Art-si+=c;Art-lenth+;if(c=a)|(cA)Art-word_num+;else if(c=0)Art-number_num+;else if(c= )Art-space_num+;else if(csi-1=Art-si;Art-lenth-;break;if(strlen(Art-s)%Max_Num=Max_Num-1)Art-s=(char *)realloc(Art-s,Art-lenth+Max_Num);z=z/2;Art-word_num+=z;printf(文字数:%dn数字数:%dn空格数:%dn,Art-word_num,Art-number_num,Art-space_num);p=fopen(a.txt,w);fprintf(p,%d %d %d %d %s,Art-lenth,Art-number_num,Art-space_num,Art-word_num,Art-s);printf(文章储存在当前文件下的a.txtn);fclose(p);free(Art-s);free(Art);void search()art Art;FILE *p;char cMax_Num;int i=0,j=0,count=0,k;Art=(art)malloc(sizeof(Article);p=fopen(a.txt,r);fscanf(p,%d %d %d %d ,&Art-lenth,&Art-number_num,&Art-space_num,&Art-word_num);Art-s=(char*)malloc(Art-lenth+1)*sizeof(char);Art-sArt-lenth=0;fread(Art-s,sizeof(char),Art-lenth,p);printf(请输入要查询的字符串n);scanf(%s,c);k=j;while(js)if(ci=Art-sj)j+;i+;else i=0;j=+k;if(i=strlen(c)count+;k=j;i=0;printf(该字符串出现过%d次n,count);fclose(p);free(Art-s);free(Art);void del()art Art;FILE *p;char cMax_Num;int k=0,j=0,i=0,z=0;Art=(art)malloc(sizeof(Article);p=fopen(a.txt,r);fscanf(p,%d %d %d %d ,&Art-lenth,&Art-number_num,&Art-space_num,&Art-word_num);Art-s=(char*)malloc(Art-lenth+1)*sizeof(char);Art-sA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 石料场设备出售合同
- 外包转正协议书范本
- 品牌酒店合作协议书
- 外聘电工合同协议书
- 咖啡店合并合同范本
- 基金会协议合同范本
- 吸尘器维修合同范本
- 培训学院运营协议书
- 品牌开店拓展协议书
- 墙纸施工合同协议书
- 人教版高中英语选择性必修一词汇表默写
- 初中生普法知识竞赛试题及答案
- 联通生态伙伴管理办法
- 云南红河州第一中学2025-2026学年数学高三上期末学业质量监测试题
- 体育场馆物业服务协议
- 7.1 水果店(教案)北师大版数学三年级上册
- 手术部(室)医院感染控制标准WST855-2025解读课件
- 知道智慧树环境保护与生态文明建设(海南联盟)满分测试答案
- 丁苯酞指南讲解
- 医学数据标注培训课件
- 水利施工竣工验收汇报
评论
0/150
提交评论