(完整word版)文本文件单词的检索与计数课程设计实验报告

合集下载

文本文件单词的检索与计数

文本文件单词的检索与计数

软件综合课程设计文本文件单词的检索与计数实时监控报警系统二〇一四年六月文本文件单词的检索与计数1.问题陈述要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。

该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

(1).建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构①头文件包含②菜单选项包含建立文件、单词定位、单词计数、退出程序③选择1-4执行相应的操作,其他字符为非法。

2.程序代码#include<stdio.h>#include<string.h>#include<iostream>#define MaxStrSize 256 //根据用户需要自己定义大小using namespace std;typedef struct {char ch[MaxStrSize]; //ch是一个可容纳256个字符的字符数组int length;} SString;//定义顺序串类型int PartPosition (SString s1,SString s2,int k){ int i,j;i=k-1;//扫描s1的下标,因为c中数组下标是从0开始,串中序号相差1 j=0;//扫描s2的开始下标while(i<s1.length && j<s2.length){if(s1.ch[i]==s2.ch[j]){ i++;j++; //继续使下标移向下一个字符位置}else{i=i-j+1; j=0;} }if (j>=s2.length)return i-s2.length;elsereturn -1;//表示s1中不存在s2,返回-1//表示s1中存在s2,返回其起始位置} //函数结束void CreatTextFile(){SString S;char fname[10],yn;FILE *fp;printf("输入要建立的文件名:");scanf("%s",fname);fp=fopen(fname,"w");yn='n';//输入结束标志初值while(yn=='n'||yn=='N'){printf("请输入一行文本:");gets(S.ch);gets(S.ch);S.length=strlen(S.ch);fwrite(&S,S.length,1,fp);fprintf(fp,"%c",10);//是输入换行printf("结束输入吗?y or n :");yn=getchar();}fclose(fp);//关闭文件printf("建立文件结束!");}void SubStrCount(){FILE *fp;SString S,T;//定义两个串变量char fname[10];int i=0,j,k;printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要统计计数的单词:");cin>>T.ch;T.length=strlen(T.ch);while(!feof(fp)){ //扫描整个文本文件// fread(&S.ch,1,sizeof(S),fp);//读入一行文本 memset(S.ch,'\0',256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; //初始化开始检索位置while(k<S.length-1) //检索整个主串S{j=PartPosition(S,T,k);//调用串匹配函数if(j<0 ) break;else {i++;//单词计数器加1k=j+T.length;//继续下一字串的检索 }}}printf("\n单词%s在文本文件%s中共出现%d次\n",T.ch,fname,i);}//统计单词出现的个数void SubStrInd(){ FILE *fp;SString S,T; //定义两个串变量char fname[10];int i,j,k,l,m;int wz[20]; //存放一行中字串匹配的多个位置printf("输入文本文件名:");scanf("%s",fname);fp=fopen(fname,"r");printf("输入要检索的单词:");scanf("%s",T.ch);T.length=strlen(T.ch);l=0; //行计数器置0while(!feof(fp)) { //扫描整个文本文件//fread(&S,sizeof(S),1,fp); //读入一行文本memset(S.ch,'\0',256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l++; //行计数器自增1k=0;//初始化开始检索位置i=0; //初始化单词计数器while(k<S.length-1) //检索整个主串S{ j=PartPosition(S,T,k); //调用串匹配函数if(j<0) break;else {i++;//单词计数器加1wz[i]=j;//记录匹配单词位置k=j+T.length;//继续下一字串检索}}if(i>0){ printf("行号:%d,次数:%d,位置分别为:",l,i);for(m=1;m<=i;m++) printf("%4d",wz[m]+1);printf("\n");}}}//检索单词出现在文本文件中的行号、次数及其位置int main(){ void CreatTextFile(),SubStrCount(),SubStrInd();int xz;do {printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf("*文本文件的检索、字串的统计及定位*\n");printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf("* 1. 建立文本文件*\n");printf("* 2. 单词字串的计数*\n");printf("* 3. 单词字串的定位*\n");printf("* 4. 退出整个程序*\n");printf("* * * * * * * * * * * * * * * * * * * ** * * * *\n");printf(" 请选择(1--4) ");scanf("%d",&xz);switch(xz) {case 1 : CreatTextFile();break;case 2 : SubStrCount();break;case 3 : SubStrInd();break;case 4 : return 0;default:printf("选择错误,重新选\n");}}while(1);}3.运行结果4.设计体会与总结我的课程设计题目是文本文件单词的检索与计数。

英汉小词典课程设计报告

英汉小词典课程设计报告

2012-2013学年第二学期《高级语言程序设计》课程设计报告题目:英汉小词典专业:计算机科学与技术班级:计科2班姓名:XXXX指导教师:XXX成绩:计算机与信息工程系2013年06月28日目录1设计内容及要求 (3)1.1设计内容 (3)1.2设计任务及具体要求 (3)2概要设计 (4)2.1系统功能简介 (4)2.2总体设计框图 (4)3设计过程或程序代码 (5)3.1对关键代码加以分析说明 (5)3.2程序运行界面 (10)4 程序设计结果与分析 (12)5 心得 (13)致谢 (13)参考文献 (13)附录:源程序 (14)英汉小词典1 设计内容及要求1.1设计内容(1)、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查询、增词、删除、修改和维护工作。

(2)、词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。

(3)、对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。

(4)、采用菜单工作方式。

在一个操作执行之后,程序询问是否继续执行该操作。

如输入A或a,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。

仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。

1.2设计任务及具体要求主要利用c语言的文件操作能力设计开发一个英汉小词典,至少具有如下功能:查询、删除、增词、修改单词。

操作界面要符合用户的一般习惯,图形或文本界面都可以。

要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

单词的检索与计数教材

单词的检索与计数教材

内江师范学院计算机科学学院数据结构课程设计报告课题名称:文本文件单词的检索与计数姓名:学号:专业班级:软件工程系(院):计算机科学学院设计时间:20XX 年X 月X日设计地点:成绩:1.课程设计目的(1).训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

(2).初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(3).提高综合运用所学的理论知识和方法独立分析和解决问题的能力;(4).训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。

2.课程设计任务与要求:文本文件单词的检索与计数软件任务:编写一个文本文件单词的检索与计数软件, 程序设计要求:1)建立文本文件,文件名由用户键盘输入2)给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数要求:(1)、在处理每个题目时,要求从分析题目的需求入手,按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。

前期准备工作完备与否直接影响到后序上机调试工作的效率。

在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。

(2)、设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。

(3)、程序设计语言推荐使用C/C++,程序书写规范,源程序需加必要的注释;(4)、每位同学需提交可独立运行的程序;(5)、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于8页(代码不算);(6)、课程设计实践作为培养学生动手能力的一种手段,单独考核。

3.课程设计说明书一需求分析3.1 串模式匹配算法的设计要求在串的基本操作中,在主串中查找模式串的模式匹配算法——即求子串位置的函数Index(S,T),是文本处理中最常用、最重要的操作之一。

课程设计单词簿实验报告

课程设计单词簿实验报告

课程设计单词簿实验报告一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握单词簿的基本概念和实验原理,了解实验步骤和数据分析方法。

技能目标要求学生能够独立进行单词簿实验,掌握实验操作技能,并能够分析实验结果。

情感态度价值观目标要求学生培养对科学的兴趣和好奇心,提高实验操作的规范性和准确性,培养团队合作和交流表达能力。

通过分析课程性质、学生特点和教学要求,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容根据课程目标,选择和教学内容,确保内容的科学性和系统性。

制定详细的教学大纲,明确教学内容的安排和进度。

本课程的教学内容主要包括单词簿的基本概念、实验原理、实验步骤和数据分析方法。

教学大纲如下:1.单词簿的基本概念和实验原理2.实验步骤和实验操作技能3.实验结果的数据分析方法三、教学方法选择合适的教学方法,如讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。

结合课本内容,采用多种教学方法,丰富学生的学习体验。

1.讲授法:通过教师的讲解,介绍单词簿的基本概念和实验原理,为学生提供理论知识的基础。

2.讨论法:学生进行小组讨论,引导学生思考和探索实验原理和数据分析方法,培养学生的思维能力和团队合作精神。

3.案例分析法:通过分析典型实验案例,让学生理解和应用实验原理和数据分析方法,提高学生的分析和解决问题的能力。

4.实验法:学生进行单词簿实验,培养学生的实验操作技能和实验观察能力,提高学生的实践能力。

四、教学资源选择和准备适当的教学资源,包括教材、参考书、多媒体资料、实验设备等。

教学资源应该能够支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:选择一本适合学生年级的单词簿实验教材,提供实验原理、实验步骤和数据分析方法的学习内容。

2.参考书:提供相关的参考书籍,供学生深入学习和拓展知识。

3.多媒体资料:制作多媒体课件和教学视频,帮助学生形象地理解实验原理和数据分析方法。

文件检索实验报告

文件检索实验报告

《文献检索》实验报告姓名:王贇贇学号:S1405007流水号:20140461专业:信息与通信工程成绩:____________实验目的:通过检索实验,加深对课堂所学检索知识的巩固,对图书馆订购的重要中外文数据库有形象而直观的认识,并熟练掌握有关中外文数据库的检索方法;练习百度、谷歌等搜索引擎的搜索语法规则,通过实验掌握各种搜索语法的使用;学会专利文献、标准文献等的网络检索,提高针对专业课题进行检索的实际操作能力,特别是计算机信息检索的能力。

实验要求:1、实验前要认真复习课堂所学知识,重点复习计算机检索技术、各种中外文数据库的使用方法、网络学术信息资源查询等内容;2、检索实验中应按照检索实验步骤,逐步进行实验,认真做好检索记录,完成各项检索实验,将老师在课堂上讲的内容在上机实验过程中深化。

实验后须整理检索实验记录,按要求写出实验报告;3、实验报告要求:所写报告步骤合理、内容正确、项目完整、格式规范,并按规定的时间和方式上交。

实验内容1、检索课题,利用指定数据库查找近10年文献要求:(1)写出自拟课题的中、英文名称(课题至少含有2个主题概念,;课题:无线网络安全与网络技术Wireless network security and Network technology(2)写出中、英文检索词并编制中、英文检索式;检索词:无线网络安全 Wireless Network Security网络技术Network technology(3)利用中国知网的专业检索方式在文摘字段检索期刊论文,用截图方式记录检索过程,并截取被引频次最高的2篇文献的文摘记录片段。

步骤一:打开中国知网首页,选择文献,如下图步骤二:点击高级检索进入如下界面步骤三:点击专业检索进入如下界面步骤四:输入检索表达式点击检索进入如下界面,然后点击被引即所查结果按引频数从高到低排列步骤五:由步骤四得到引频最高的两篇文献,分别点击文献名称进入,分别记录片段(4)利用万方数据知识服务平台数据库的一框式检索方式在关键词字段进行检索,用截图方式记录检索过程,并截取最新发表的2篇文献的文摘记录片段。

c文章中单词查找课程设计

c文章中单词查找课程设计

c 文章中单词查找课程设计一、教学目标本课程旨在通过文章中单词查找的学习,让学生掌握单词查找的基本方法和技巧,提高阅读理解能力。

具体目标如下:知识目标:使学生了解单词查找的重要性,理解单词查找的基本方法,掌握字典的使用技巧。

技能目标:培养学生快速准确查找文章中单词的能力,提高学生的阅读理解速度和准确度。

情感态度价值观目标:培养学生对英语阅读的兴趣,增强学生通过单词查找提高阅读理解能力的自信心。

二、教学内容本课程的教学内容主要包括单词查找的方法和技巧,以及如何通过单词查找提高阅读理解能力。

具体包括以下几个方面:1.单词查找的方法:根据文章的上下文推测单词的意思,使用字典查找单词的准确含义,通过同义词和反义词查找单词的用法。

2.单词查找的技巧:快速定位单词的位置,根据单词的前缀和后缀判断单词的意思,通过词根词缀记忆单词的含义。

3.文章阅读理解:通过单词查找提高文章阅读的速度和准确度,理解文章的主旨和细节,分析文章的结构和逻辑。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

1.讲授法:教师通过讲解单词查找的方法和技巧,使学生掌握基本的单词查找知识。

2.讨论法:学生分组讨论单词查找的案例,分享彼此的查找方法和经验,提高查找技巧。

3.案例分析法:分析文章中的单词查找实例,引导学生运用所学知识和技巧解决问题。

4.实验法:学生自主进行单词查找实验,验证所学方法和技巧的有效性,提高阅读理解能力。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选用权威的英语阅读教材,提供丰富的单词查找实例和练习题。

2.参考书:推荐学生阅读英语阅读参考书籍,拓展学生的阅读视野。

3.多媒体资料:利用多媒体课件和视频资料,生动形象地展示单词查找的方法和技巧。

4.实验设备:为学生提供电脑、字典等实验设备,方便学生进行单词查找实验。

课设报告统计英文单词数

课设报告统计英文单词数

“程序设计基础”课程设计报告(一)需求和规格说明该系统的功能是给定一个英文段落(单词个数<100),利用哈希表(表长最大为20)统计单词出现的频度,并能根据要求显示出给定单词在段落中出现的位置。

执行程序时由用户在键盘上输入程序中规定的运算命令;相应的输入数据和运算结果显示在其后。

该系统的实现是通过哈希函数的建立和查找分析,用线性探测再散列来处理冲突,从而得到哈希表并实现哈希表的查找。

该文章对哈希函数的应用方法是使用除留余数法构造,使用链地址法进行冲突处理。

2.1技术可行性哈希查找是通过计算数据元素的存储地址进行查找的一种方法。

哈希查找的操作步骤:用给定的哈希函数构造哈希表;根据选择的冲突处理方法解决地址冲突;在哈希表的基础上执行哈希查找。

2.2需求可行性世界上的事物都是有发展的,企图跨越阶段或者停滞,一切生命就都没有存在的理由了。

频率就是一个既动态又静态的东西,我们能肯定的是很多古词和今词是不一样的,今日被淘汰了,也就是说,今天的频率的统计是一定有确定的结论的。

也有一些古词仍在今日用着,或者在淘汰之中,所以频率难以确定。

我们知道黑天和白天是有区别的,但它们的交界点,却不是那么容易分辨了,恐怕需要经过科学家的精密研究。

交界点不容易确定,并不意味着事物之间没有区别。

世界上的事物都是有区别又有联系的。

有些人读书读傻了,钻了牛角尖,他弄不清两个事物之间的区别应该划在哪里,后来就连两个事物之间有区别也不敢认定了。

频率的统计是为了区别常用词和非常用词,方法可能不准确,但不至于否定常用词和非常用词之间的区别吧。

我们应该使统计精密起来。

火车今天不用火了,但如果当初也不用,就没有今天的“火车”了。

事物的变化是不可能停止的,但总还有个静态的定位,否则人们就无法认识任何事物了。

频率虽然是个复杂的问题,但科学的研究是必要的。

3 需求分析给定一个英文段落(单词个数<100),利用哈希表(表长最大为20)统计单词出现的频度,并能根据要求显示出给定单词在段落中出现的位置。

文献检索实验报告(一)中文数据库信息检索实验

文献检索实验报告(一)中文数据库信息检索实验

文献检索实验报告(一)实验名称中文数据库信息检索实验姓名实验日期学号专业班级实验地点指导老师评分一.实验目的:1.熟悉与专业有关的中文数据库信息检索系统的基本情况;2.熟悉相应中文数据库信息检索系统的浏览器使用;3.掌握常用中文数据库信息检索系统的检索方法以及检索结果的处理;4.掌握提高查全率和查准率的方法。

二.实验环境:连接到因特网的实验室局域网环境,并能通过学院图书馆入口访问以下数据库系统:1.万方数据资源系统2.维普信息资源系统3.中国知网数据库4.人大《复印报刊资料全文数据库》5.超星数字图书馆6.试用数据库三.实验要求:先选检索课题:1.分析课题主题,写出课题所属领域、背景、拟解决的技术问题、采用的技术方案等相关技术内容。

(限200字左右)2.给出中外文检索词(包括主题词、关键词、同义词、缩写及全称等,限15个以上)及检索式,按要求检索数据库,写出检索过程,并按题录形式选择给出相关文献2-3篇。

3.中文数据库4种类型8个库:任选两个馆藏目录、联合目录、中文期刊数据库、事实与数值数据库进行检索。

4.外文数据库2个:5.学位论文库2个:万方学位论文库、中国知网。

6.会议论文库2个:万方学术会议库、中国知网。

7.标准、专利、注:结果页面截图:(用键盘Pr Scrn SysRq键截图,要求显示检索条件窗口)四.实验内容:1.从图书馆网站上安装CNKI阅览器和PDF格式全文阅览器。

从CNKI(即中国期刊网)的“进入总库平台”中的“中国学术期刊网络出版总库”检索2005年出版、EI来源期刊、篇名中包含“信息管理”的文献,任意下载一篇检索出的论文,分别下载CAJ格式和PDF格式,体验两种阅览器的各自功能。

2.利用中国知网的“中国博士学位论文全文数据库”检索,文献题名中包含“机群”的华中科技大学的博士学位论文。

记录结果数,并记录其中一篇的论文题名、作者、导师姓名及学科专业名称。

3.利用读秀的“报纸全文数据库”检索今年内关于“亚太经合组织”的新闻报道,共有记录多少条,记录时间最新一篇的新闻标题、刊登报纸、报纸日期、版号、分类号。

数据结构课程设计-文本文件单词检索和计数

数据结构课程设计-文本文件单词检索和计数

合肥学院计算机科学与技术系课程设计报告2017~2018学年第二学期课程数据结构与算法课程设计名称文本文件单词的检索与计数学生姓名陈映而学号**********专业班级16软件工程(1)班指导教师孙斐文本文件单词的检索与计数一、问题分析和任务定义要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。

(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构二、数据结构的选择和概要设计数据结构:1.所有存储形式都用顺序存储2.用矩阵检索单词出现的位置和次数概要设计:该设计要求可分为三个部分实现:1.对文件的操作,其中包括文本文档的建立,文件名由用户用键盘输入;以及读取文本文档内容并显示在屏幕上;2.给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;3.检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

图2-1 课题目录图2-2 流程图图2-3 函数关系开始输入number 显示主菜单 n=1? Y Nn=2? Y Nn=3? Y Nn=4?Y结束 文件操作单词定位输入numbern=1? 单词计数Y 创建文件内容显示N主菜单n=2? Y Nn=3? Y 写入文本N返回主菜单三、详细设计和编码1.头文件包含:#include<stdio.h>#include<stdlib.h>#include<string.h>2.功能细分(1)创建自定义名字文档①用字符数组filename存放特定的文件路径(D:\\Dev-Cpp\\课程设计数据\\)②从键盘输入自定义的文档名字name,把name和“.txt”用strcat连接③再用strcat把路径filename与文档名name连接起来④打开文件时用变量(filename)表示文件名,若无该文件则创建图3-1 创建自定义名字文档编码(2)打开文件读取内容并输出①输入文档名字,根据名字打开文件②打开文件后,用fgets读取文档内容③fgets读取一行输出一行,并用i记录行数④fgets返回EOF(END OF FILE)表示文件结尾(3)写入文本①输入文档名字,根据名字打开文档,若无该文档,则重新建立一个。

课程设计文本文件检索

课程设计文本文件检索

课程设计文本文件检索一、教学目标本课程旨在通过文本文件检索的教学,使学生掌握文件检索的基本知识和技能,培养学生独立进行文件检索和信息获取的能力。

具体目标如下:1.知识目标:使学生了解文本文件检索的概念、原理和主要方法,理解文件检索的流程和技巧。

2.技能目标:培养学生使用常用文本文件检索工具进行有效检索的能力,能独立分析和解决文件检索过程中遇到的问题。

3.情感态度价值观目标:培养学生对信息获取和处理的兴趣,提高学生自主学习、独立思考的能力,增强学生的信息素养。

二、教学内容本课程的教学内容主要包括以下几个部分:1.文本文件检索基本概念:介绍文本文件检索的定义、原理和作用。

2.常用文本文件检索工具:介绍常用的文本文件检索工具,如Windows系统自带的搜索功能、百度、谷歌等,并讲解如何使用这些工具进行有效检索。

3.文件检索技巧:讲解文件检索的策略和技巧,如关键词选择、布尔逻辑检索等。

4.文件检索实践:通过实际操作,让学生学会使用文本文件检索工具进行有效检索。

5.文件检索应用:探讨文本文件检索在实际生活中的应用,如学术研究、工作办公等。

三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:讲解文本文件检索的基本概念、原理和方法。

2.案例分析法:通过分析实际案例,使学生更好地理解文件检索的技巧和应用。

3.实验法:让学生亲自动手进行文件检索实践,提高实际操作能力。

4.讨论法:学生进行分组讨论,分享彼此的检索经验和心得,培养学生独立思考和团队协作的能力。

四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的学习资料。

2.参考书:推荐一些与文本文件检索相关的参考书,拓展学生的知识视野。

3.多媒体资料:制作精美的PPT,直观地展示文本文件检索的原理和操作过程。

4.实验设备:准备计算机、网络等实验设备,确保学生能顺利进行文件检索实践。

5.在线资源:为学生提供一些实用的在线检索工具和教程,方便学生课后自主学习和复习。

文章字符统计实验报告(3篇)

文章字符统计实验报告(3篇)

第1篇一、实验目的本次实验旨在通过编写程序,实现对一段给定文本的字符统计功能。

通过对文本中各种字符的出现频率进行分析,了解字符在文本中的分布情况,为后续的自然语言处理、文本挖掘等工作提供数据支持。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验原理字符统计实验的核心原理是遍历给定文本,对每个字符进行计数,并记录其在文本中出现的次数。

为了提高统计效率,可以采用字典(哈希表)数据结构来存储字符及其对应的计数。

四、实验步骤1. 导入所需模块```pythonimport string```2. 定义一个函数,用于统计文本中各个字符的出现次数```pythondef count_chars(text):创建一个空字典,用于存储字符及其计数char_count = {}遍历文本中的每个字符for char in text:如果字符是字母或数字,则进行统计if char.isalnum():如果字符已经存在于字典中,则增加计数if char in char_count:char_count[char] += 1如果字符不存在于字典中,则将其添加到字典中,并设置计数为1 else:char_count[char] = 1return char_count```3. 读取待统计文本```python读取文本文件with open('test.txt', 'r', encoding='utf-8') as f:text = f.read()```4. 调用函数,统计文本中各个字符的出现次数```pythonchar_count = count_chars(text)```5. 打印统计结果```pythonfor char, count in sorted(char_count.items(), key=lambda x: x[1], reverse=True):print(f"{char}: {count}")```五、实验结果与分析1. 实验结果通过运行程序,可以得到以下字符统计结果:```t: 5o: 4s: 4e: 3r: 3n: 3i: 3c: 3a: 3d: 2f: 2g: 2h: 2m: 2p: 2u: 2b: 1c: 1 d: 1 e: 1 f: 1 g: 1 h: 1 i: 1 k: 1 l: 1 m: 1 n: 1 o: 1 p: 1 r: 1 s: 1 t: 1 u: 1 v: 1 w: 1 x: 1 y: 1 z: 1 ```2. 结果分析从实验结果可以看出,文本中字符t、o、s、e、r、n、i、c、a等出现的频率较高,说明这些字符在文本中具有较高的权重。

莎士比亚文集WordCount——实验报告

莎士比亚文集WordCount——实验报告

job1.setOutputKeyClass(Text.class); job1.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job1, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job1, new Path("middleOutput")); job1.waitForCompletion(true);
if (otherArgs.length != 3) {
System.err.println("Please input: <inputPath> <outputPath> <k>");
System.exit(2);
}
Job job1 = new Job(conf, "word count"); job1.setJarByClass(Lab2.class); job1.setMapperClass(TokenizerMapper.class); job1.setCombinerClass(IntSumReducer.class); job1.setReducerClass(IntSumReducer.class);
public int compare(byte[] b1, int s1, int l1, byte[] b2, int s2, int l2) { return pare(b1, s1, l1, b2, s2, l2);
} } //主函数中 job2.setSortComparatorClass(IntWritableDecreasingComparator.class);

建立文本的检索与计数.doc

建立文本的检索与计数.doc

建立文本的检索与计数.. 1 引言本程序主要实现文本文件单词的检索与计数,正文包括:对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,程序代码,程序运行相关的截图,以及我们在本次程序中的详细分工和收获。

1.1 课程设计目的在本程序设计中,主要通过给定位置的串匹配算法,实现文本文件单词的查找,计数和记录单词的位置和行号。

在C程序设计中我们对于算法的具体实现过程有一个深刻的理解,除了算法本身外,须借助一些辅助数据结构,在本程序中借用字符串对数据进行存储和输出操作。

通过循环比较的方法,查找出单词的个数和位置。

同时培养自己的算法设计和算法分析能力,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的工作方法、作风和相互合作的精神。

1.2 课程设计内容及要求要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。

该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。

(1)建立文本文件。

(2)给定单词的计数。

(3)检索单词出现在文本文件中的行号、次数及其位置。

(4)主控菜单程序的结构。

①头文件包含。

②菜单选项包含:建立文件、单词定位、单词计数、退出程序。

③选择1-对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,程序代码,程序运行相关的截图,以及我们在本次程序中的详细分工和收获。

1.1 课程设计目的在本程序设计中,主要通过给定位置的串匹配算法,实现文本文件单词的查找,计数和记录单词的位置和行号。

词法分析设计实验报告(附代码)

词法分析设计实验报告(附代码)

实验一词法分析设计实验学时:4实验类型:综合实验要求:必修一、实验目的通过本实验的编程实践,使学生了解词法分析的任务,掌握词法分析程序设计的原理和构造方法,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。

二、实验内容用VC++/VB/JAVA语言实现对C语言子集的源程序进行词法分析。

通过输入源程序从左到右对字符串进行扫描和分解,依次输出各个单词的内部编码及单词符号自身值;若遇到错误则显示“Error”,然后跳过错误部分继续显示;同时进行标识符登记符号表的管理。

以下是实现词法分析设计的主要工作:(1)从源程序文件中读入字符。

(2)统计行数和列数用于错误单词的定位。

(3)删除空格类字符,包括回车、制表符空格。

(4)按拼写单词,并用(内码,属性)二元式表示。

(属性值——token的机内表示)(5)如果发现错误则报告出错(6)根据需要是否填写标识符表供以后各阶段使用。

单词的基本分类:◆关键字:由程序语言定义的具有固定意义的标识符。

也称为保留字例如if、 for、while、printf ;单词种别码为1。

◆标识符:用以表示各种名字,如变量名、数组名、函数名;◆常数:任何数值常数。

如 125, 1,0.5,3.1416;◆运算符:+、-、*、/;◆关系运算符: <、<=、= 、>、>=、<>;◆分界符:;、,、(、)、[、];三、实验要求1、编程时注意编程风格:空行的使用、注释的使用、缩进的使用等。

2、将标识符填写的相应符号表须提供给编译程序的以后各阶段使用。

3、根据测试数据进行测试。

测试实例应包括以下三个部分:◆全部合法的输入。

◆各种组合的非法输入。

◆由记号组成的句子。

4、词法分析程序设计要求输出形式:例:输入VC++语言的实例程序:If i=0 then n++;a﹤= 3b %);输出形式为:单词二元序列类型位置(行,列)(单词种别,单词属性)for (1,for ) 关键字(1,1)i ( 6,i ) 标识符(1,2)= ( 4,= ) 关系运算符(1,3)0 ( 5,0 ) 常数(1,4)then ( 1,then) 关键字(1,5)n (6,n ) 标识符(1,6)++ Error Error (1,7); ( 2, ; ) 分界符(1,8)a (6,a ) 标识符(2,1)﹤= (4,<= ) 关系运算符(2,2)3b Error Error (2,4)% Error Error (2,4)) ( 2, ) ) 分界符(2,5); ( 2, ; ) 分界符(2,6)实验报告正文:◆功能描述:该程序具有词法分析功能,即面对一段程序源代码,通过该程序,能检查出源代码是否由词法错误。

单词出现次数统计 课程设计报告

单词出现次数统计 课程设计报告

单词出现次数统计一目的通过课程设计,加深对《C语言程序设计》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等,学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备利用计算机编程分析解决综合性实际问题的初步能力。

二需求分析1、输入数据输入2个字符串数据。

第一个为文字所保存在的文件名,第二个为要统计的单词。

2、输出数据输出进行查找的文章以及搜索的单词。

并输出搜索结果:单词在文章出现的次数及第一次出现位置。

3、程序功能按照输入的文件名打开文件并获取文章内容,搜索统计单词出现次数以及第一次出现位置并输出结果。

三概要设计1、全局变量或类型说明2、模块功能void printlogo()清屏并输出logo。

void msg(char *str) 清屏并输出logo后输出参数str的内容。

char LoadFile(char *FileName)打开文章文件FileName并读取内容到内存该函数会自动为文章分配内存如果内存已经分配过会先释放原来申请的内存成功返回1 失败返回0 char lowcase(char c)把c转化成小写返回如果c不是字母直接返回c本身。

void GetText()让用户输入文件名并读入文章将会一直循环直到成功打开文件或用户输入”\”终止程序。

char ckeckletter(char c)检查c是否为一个英文字母是返回1否返回0char ComstrProc(char str[],int pos,int len)比较字符串str与文章从pos开始长度为len的部分 len即str的长度。

注意str在传入前必需先转化成全小写。

void AnalysisText(char key[])在已经读入内存的文章利用ComstrProc进行统计并输出结果(个数第一次出现位置或者未找到)void wuhansen()程序主要模块不断执行并根据要求重复程序功能(1重复2退出程序)。

中英文搜索引擎应用实验报告

中英文搜索引擎应用实验报告

实验报告课程名称计算机信息检索实验项目名称中英文搜索引擎应用班级与班级代码实验室名称(或课室)专业任课教师学号:姓名:实验日期:姓名实验报告成绩评语:指导教师(签名)年月日说明:指导教师评分后,学年论文交院(系)办公室保存。

实验三中英文搜索引擎应用一、实验目的1.认识和了解中英文搜索引擎的基本知识和种类;2.认识和了解中英文搜索引擎的基本知识和种类;3.了解和掌握中英文搜索引擎的多种检索方法;4.深入了解和掌握几种中英文搜索引擎的使用方法;5.分析和对比各种中英文搜索引擎的共性与区别。

二、实验内容:1.找网上的中英文搜索引擎,并列出50个搜索引擎的名称;2.学会使用中英文搜索引擎的初级检索与高级检索两种方式;3. 用5个中文、5个英文搜索引擎对同一主题\同一检索词(关键词)进行检索,从检索效果分析得到的检索结果,并比较分析你所选择的搜索引擎的共性与区别。

三、实验环境CPU:Intel(R) core™2 CPU内存:1G软件:搜索引擎:百度、谷歌、搜狗、雅虎、中国搜索Ask Jeeves、AltaVista、Gigablast、lycos、HotBot 资源:互联网四、实验步骤*以“雷曼兄弟破产案”为主题在以下搜索引擎进行搜索:关键词:雷曼兄弟破产回购1051.百度(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在百度首页中点击,并在检索框内输入如下内容并查看结果2.谷歌(1)在IE浏览器中输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击,查看结果(3)在谷歌首页中点击,在检索框内输入如下内容并查看结果3.搜狗(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在搜狗首页中点击,并在检索框内输入如下内容查看结果4.雅虎(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果5.中国搜索(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“雷曼兄弟破产回购105”点击查看结果(3)在中搜首页中点击,并在检索框内输入如下内容查看结果6.Ask Jeeves(1)打开IE浏览器,输入网址:/,打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在ASK首页中点击,并在检索框内输入如下内容查看结果7.AltaVista(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在AltaVista首页中点击,并在检索框内输入如下内容查看结果8.Gigablast(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在Gigablast首页中点击,并在检索框内输入如下内容查看结果9.Lycos(1)打开IE浏览器,输入网址:/打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在Lycos首页中点击,并在检索框内输入关键字,图略10.HotBot(1)打开IE浏览器,输入网址:打开网页(2)在检索框内输入文字“Lehman Brothers bankrupt Repo105”点击查看结果(3)在HotBot首页中点击,并在检索框内输入关键字五、试验结果(一)找网上的中英文搜索引擎,并列出50个搜索引擎的名称:1.中文搜索引擎:百度、Google谷歌、搜狗、Bing(必应) 、雅虎全能搜索、SOSO搜搜有道、爱问搜索引擎、中国搜索、搜网全能搜索引擎、新华网搜索、网易搜索引擎、中华网搜索引擎、搜索客、搜豹、中文司南搜索、中国导航、搜罗、多来米搜索引擎、Biboo、天虎网、网典、找到啦、常青藤、熊猫搜索引擎、21世纪搜索引擎、网上居、国邦在线、酷必搜索、广州视窗、上海在线、北极星、搜友、中经搜索、263搜索、搜易、2. 英文搜索引擎: Google、Yahoo、Windows Live Search、AskJeeves、、AOL Search、HotBot、MSN Search、Teoma、AltaVista、Gigablast、LookSmart、Lycos、Open Directory、Netscape Search(二)使用关键字“雷曼兄弟破产回购105”在中文搜索引擎进行搜索,使用相应的关键字“Lehman Brothers bankrupt Repo105”在英文搜索引擎进行搜索,搜索结果如下:略六、实验分析1.根据上述检索,易看出,在对“雷曼兄弟破产案”的主题检索中,百度中文搜索引擎和Ask Jeeves英文搜索引擎通过初级检索查到的网页数目是分别是中英搜索引擎中最多的,它们分别检索到170,000和4290条记录。

文件检索实习报告

文件检索实习报告

文献检索课实习报告学生姓名:系部名称:专业班级:学号:黑龙江工程学院图书馆制检索日期:年月实习报告(一)一、自选课题(可选择多个课题),利用本馆检索终端,从不同途径查找馆藏书刊,记录检索结果(每次检索填写检索结果中的第一条记录)。

序号检索途径检索词命中数题名作者出版项索取号1 按书名会计学127 新编会计学董清泉气象出版社,1994F230∕102 按书名财务管理94 财务管理刘兴云,郭旭东主编;王廷山等编写北京:科学技术文献,1995F275/53 按责任周三多4 管理学周三多主编北京:高等教育出版社C93/254 按书名中级会计11 中级会计K. Fred Skousen等[著] 北京:中国财政经济出版社,2002F23/635 索取号F23/87 1 中级会计实务学习指南全国会计专业技术资格考试参考用书编审委员会编北京:中国财政经济出版社,2005F23/876 主题词审计175 新编审计手册刘俊彦等主编北京:科学技术文献,1994F239-62/17 按书名财务会计74 财务会计张荟等编著北京:清华大学出版社,1997F234/238 索取号F23-44/11 1 注册会计师、审计师、会计师财务会计考试指南肖明,高立法主编北京:中国审计出版社,1995F23-44/119 主题词内部审计14 内部审计实务与查账技巧余志宗主编上海:文汇出版社,2000.10F239.4/110 索取号F239.4/12 1 如何做好内部审计许天祥, 范国右,韦华宁著北京:中国财政经济出版社,2006F239.4/12二、将检出的十本书刊按索取号顺序排列:序号索取号书名1 C93/25管理学2 F23-44/11注册会计师、审计师、会计师财务会计考试指南3 F23/63中级会计4 F23/87中级会计实务学习指南5 F230∕10新编会计学6 F234/23 财务会计7 F239.4/1内部审计实务与查账技巧8 F239.4/12如何做好内部审计9 F239-62/1新编审计手册10 F275/5财务管理实习报告(二)课题名称:一、利用中文期刊数据库(CNKI期刊全文数据库、维普期刊数据库选一)检索与课题相关期刊论文:数据库名称CNKI期刊全文数据库查询范围(专辑)经济管理时间范围2000-2011期刊范围匹配方式模糊检索途径(检索项)检索词检出文献篇数检出第一篇文献篇名著者刊名年、期篇名经济学47,557 公允价值的经济学解释——基于信息经济学、契约经济学和金融经济孙永兴; 彭财会通讯2010/30学视角珏关键词会计学2,362医院实施人力资源会计初探华蕾菲人力资源管理2011/11摘要经济管理学 3,971 文科博士点系列介绍之七南开大学区域经济学博士点介绍南开学报2005/05二、检索与课题相关的学位论文(CNKI、万方、读秀选一),记录第一条记录详细信息:数据库万方博硕士论文全文数据库检索途径高级检索检索词经济管理学科检出论文篇数401学位论文题目工科高校创新人才培养及评价研究学位论文作者王秀梅导师姓名牛东晓学位类型博士学位授予单位华北电力大学(保定)华北电力大学该文细览页科学技术是当今世界经济社会发展的决定性力量。

实习报告

实习报告

实习报告● 题目:文学研究助手☞【问题描述】文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。

试写一个实现这一目标的文字统计系统,称为“文学研究助手”。

☞【基本要求】英文小说存放于一个文本文件中。

待统计的词汇集合要依次输入完毕,即统计工作必须在程序的一次运行之后就全部完成。

程序的输出结果是每个词的出现次数和出现位置所在行的行号,格式自行设计。

☞【选作内容】(1)模式匹配要基于KMP算法(2)整个统计过程中只对小说文字扫描一遍以提高效率、● 设计者信息班级:信管1002班姓名:王泽慧学号:2010015260●实验目的:A、熟悉串的模式匹配方法,重要是熟练掌握KMP算法和Next算法中j的求值方法。

B、对自我程序设计的技术进一步提高。

C、完成此实验所要求的功能。

● 实验完成情况:①选作内容与基本要求都已完成。

②附加了二个功能:算出了所查询的关键词在其出现行的具体位置和在此行出现的次数③程序共达392行。

● 此程序特色之处:A、用了KMP算法,大大提高了运算速率B、熟练且灵活地运用了链表知识C、熟练且灵活地运用了结构体知识D、运用了链表的头结点和尾结点使操作更加简单E、用户操作简单易行● 概要设计:☞【抽象数据类型定义】ADT数据对象:英文字母、空格和标点符号的集合数据关系:其集合构成一篇可读性的文章基本操作:{InitList(&L)操作结果:构造一个空链表;InitList_node(&L)操作结果:构造一个总链表里的分链表;copy( &T, chars) (&L)初始条件:已知chars操作结果:chars数组中的字符付给T.ch;并计算出chars的长度赋给T.lengthCreateNode(&sl, str) //这个函数建立的是总链表里面的结点初始条件:已知str操作结果:建立sl结构体中某要素的节点,并将str相应值赋值给slCreateNode_node (&sl, str) //这个函数建立的是总链表里面分链表的结点初始条件:已知str操作结果:建立sl结构体中某要素的节点,并将str相应值赋值给sladdnode(&ls, link) //这个函数建立的是总链表初始条件:已知ls和link操作结果:将link附加到ls后面add_node(&ls, link) //这个函数建立的是总链表里分链表初始条件:已知ls和link操作结果:将link附加到ls后面Index_KMP (s, t, pos)初始条件:已知字符串s,t操作结果:找出s中与t相同的开始位置IsNotCharactor(ch)初始条件:已知字符ch操作结果:判断ch是否为英文字母PrintList_node(L)初始条件:已知一个链表的头结点操作结果:将链表的中信息打印出来,并将链表的某些信息再传递下去PrintList(L)初始条件:已知L的相关信息操作结果:打印出L的相关信息find(&stringLinkList, hstrLine, row)初始条件:已知stringLinkList, hstrLine, row操作结果:在串数据链表stringLinkList,读出查找的串strkey,与传入的串hstrLine 匹配如果成功将匹配的次数与行数row,写入相对应的行行数据链表Next(s, j)初始条件:已知s,j操作结果:KMP模式匹配的next函数,即找出自身匹配Count_KMP(s, t, pos)初始条件:已知字符串s和t,pos操作结果:求串t在s中出现的次数}☞【数据结构与核心算法的设计描述】核心算法有两个,算法设计描述分别如下:Index_KMP算法:将主串S的第pos个字符和子串T的第1个字符比较,若相等,继续逐个比较后续字符;若不等,则调用Next算法算出下一次子串开始与主串匹配的位置j,然后开始与主串前一次不匹配的字符的起,重新与T第j 个字符比较。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文件检索1需求分析1.1 建立文本文件建立文本文件的实现思路(1)定义一个串变量(2)定义文本文件(3)输入文件名,打开该文件(4)循环读入文本行,写入文本文件,其过程如下:While(不是文件输入结束){读入一文本行至串变量;串变量写入文件;输入是否结束输入标志;}(5)关闭文件1.2给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。

匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。

1.3 检索单词出现在文本文件中的行号、次数及其位置1.4 主控菜单程序的结构(1)头文件包含(2)菜单选择包括:1、建立文件2、单词计数3、单词定位4、退出程序(3)选择1~4执行相应的操作,其他字符为非法2.概要设计2.流程图2.1建立文本文件定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。

建立文本文件的思路过程2.2给定单词的计数逐行扫描文本文件。

匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。

给定单词计数的过程2.3检索单词出现在文本文件中的行号、次数及其位置逐行扫描文本文件。

扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底以此,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。

检索单词的出现在文本文件中的行号,次数以及位置3详细设计主代码#include<stdio.h>#include<string.h>#define MaxStrSize 256 //根据用户需要自己定义大小typedef struct{char ch[MaxStrSize]; //ch是一个可容纳256个字符的字符数组int length;}SString; //定义顺序串类型int PartPosition(SString s1, SString s2, int k){int i, j;i=k-1; //扫描s1的下标,因为c中数组下标是从0开始,串中序号相差1 j=0; //扫描s2的开始下标while (i<s1.length&&j<s2.length){if(s1.ch[i]==s2.ch[j]){i++;j++; //继续使下标移向下一个字符位置}else{i=i-j+1;j=0;}}if(j>=s2.length)return i-s2.length;elsereturn -1; //表示s1中不存在s2,返回-1//表示s1中不存在s2,返回其起始位置} //函数结束void CreatTextFile(){SString S;char fname[10], yn;FILE *fp;printf("输入要建立的文件名:");scanf("%s", fname);fp=fopen(fname,"w");yn='n'; //输入结束标志初值while(yn=='n'||yn=='N'){printf("请输入一行文本:");gets(S.ch);gets(S.ch);S.length=strlen(S.ch);fwrite(&S, S.length, 1, fp);fprintf(fp,"%c", 10); //是输入换行printf("结束输入吗?y or n: ");yn=getchar();}fclose(fp); //关闭文件printf("建立文件结束!");}void SubStrCount(){FILE *fp;SString S,T; //定义两个串变量char fname[10];int i=0,j,k;printf("输入文本文件名:");scanf("%s", fname);fp=fopen(fname ,"r");printf("输入要统计技术的单词:");scanf("%s", T.ch);T.length=strlen(T.ch);while(!feof(fp)){ //扫描整个文件文本//fread(&S.ch,1,sizeof(S),fp); //读入一行文本memset(S.ch,'\0', 256);fgets(S.ch,100,fp);S.length=strlen(S.ch);k=0; //初始化开始检索位置while(k<S.length-1) //检索整个主串S{j=PartPosition(S,T,k);if(j<0)break;else{i++; //单词计数器加1k=j+T.length; //继续下一字串的检索}}}printf("\n单词%s在文本文件%s中共出现%d次\n", T.ch, fname,i);} //统计单词出现个数void SubStrInd(){FILE *fp;SString S,T; //定义两个串变量char fname[10];int i,j,k,l,m;int wz[20];printf("输入文本文件名:");scanf("%s", fname);fp=fopen(fname,"r");printf("输入要检索的单词:");scanf("%s", T.ch);T.length=strlen(T.ch);l=0;while(!feof(fp)){//fread(&S, sizeof(S), 1, fp);//读入一行文本memset(S.ch,'\0', 256);fgets(S.ch,256,fp);S.length=strlen(S.ch);l++;k=0;i=0;while(k<S.length-1){j=PartPosition(S,T,k);if(j<0)break;else{i++;wz[i]=j;k=j+T.length;}}if(i>0){printf("行号:%d , 次数:%d, 位置分别为:",l, i);for(m=1;m<=i;m++)printf("%4d", wz[m]+1);printf("\n");}}}int main(){void CreatTextFlie(), SubStrInd();int xz;do{printf("****************************************\n");printf("*文本文件的检索、字符串的统计及定位*****\n");printf("****************************************\n");printf("* 1.建立文本文件*\n");printf("* 2.单词字符串的计数*\n");printf("* 3.单词字符串的定位*\n");printf("* 4.退出程序*\n");printf("****************************************\n");printf(" 请选择(1——4)\n");scanf("%d", &xz);switch(xz){case 1:CreatTextFile(); break;case 2:SubStrCount(); break;case 3:SubStrInd(); break;case 4:return 0;default: printf("选择错误,重新选\n");}}while(1);}4调试分析4.1未输入文件前的页面4.2输入文本文件,计数单词出现的次数4.3检索某单词的行号,出现次数,以及位置5课程总结经过一周的奋斗,这次数据结构的课程设计终于做完了。

通过这次设计我们也着实又感受了一次编程的乐趣,从中也学到了不少知识。

感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。

现在编程感觉完全不同了。

在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了。

然后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。

另外,我还体会到深刻理解数据结构的重要性。

只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。

了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

通过这次课程设计逐渐提高了自己的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。

在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默的走,终于弄明白了,真的是功夫不负有心人啊!这次试验也让我看到了自己的不足,还是不太用模板类。

还有许多关于C语言的一些比较具体的东西还不太懂,需要进一步了解。

这次试验还让我意识到只。

相关文档
最新文档