版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计(数据结构)课程设计(数据结构)院、系院、系计算机与软件学院专业专业网络工程姓名姓名顾容宇徐鹏学号学号20091346087、20091346088指导教师指导教师郑玉二一年二一年 十二月二十五日十二月二十五日- 1 -文本文件的检索与计数顾容宇徐鹏南京信息工程大学计算机与软件学院,南京 210044摘要:本程序主要围绕的是文本文件单词的检索与计数,正文包括:对文本文件单词的检索与计数程序的详细要求,对程序的分析,勾画程序思路及内容的流程图,主程序代码,程序运行后相关对应要求的所有截图,还有我们做完程序后的总结讨论,以及我们在本次程序中的详细分工。关键字:文本文件;单词;计数;菜单。1
2、课程设计题目要求编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。该设计要求可分为三个部分实现:其一,建立文本文件,文件名由用户用键盘输入;其二,给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。(1)建立文本文件(2)给定单词的计数(3)检索单词出现在文本文件中的行号、次数及其位置(4)主控菜单程序的结构 头文件包含 菜单选项包含:建立
3、文件、单词定位、单词计数、退出程序 选择 1-4 执行相应的操作,其他字符为非法。2分析21 建立文本文件建立文本文件的实现思路(1) 定义一个串变量(2) 定义文本文件(3) 输入文件名,打开该文件(4) 循环读入文本行,写入文本文件,其过程如下:While(不是文件输入结束)读入一文本行至串变量;串变量写入文件;输入是否结束输入标志;- 2 -(5) 关闭文件2.2 给定单词的计数该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加 1,直到整个文件扫描结束;然后输出单词的次数。2.3 检索单词出现在文本文件中的行号、次数及其位置2.4 主控菜单程序的结构(1)
4、头文件包含(2) 菜单选择包括:1、 建立文件2、 单词计数3、 单词定位4、 退出程序(3)选择 14 执行相应的操作,其他字符为非法3步骤3.1 流程图311 建立文本文件定义一个串变量 ,定义文本文件, 输入文件名,打开该文件 , 循环读入文本行,写入文本文件,关闭文件 。- 3 - 4 -建立文本文件的思路过程312 给定单词的计数逐行扫描文本文件。匹配一个,计数器加 1,直到整个文件扫描结束;然后输出单词的次数。- 5 - 6 -给定单词计数的过程313 检索单词出现在文本文件中的行号、次数及其位置逐行扫描文本文件。扫描一个单词,单词数加 1,匹配一个,计数器加 1,输出该单词数,行
5、数到底以此,行数加 1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。- 7 - 8 -检索单词的出现在文本文件中的行号,次数以及位置3.2 主代码#include#include#include#define MaxStrSize 256 /根据用户需要自己定义大小using namespace std;typedef struct char chMaxStrSize; /ch 是一个可容纳 256 个字符的字符数组int length; SString;/定义顺序串类型int PartPosition (SString s1,SString s2,int k)in
6、t i,j;i=k-1;/扫描 s1 的下标,因为 c 中数组下标是从 0 开始,串中序号相差 1j=0;/扫描 s2 的开始下标while(is1.length & j=s2.length)return i-s2.length;elsereturn -1;/表示 s1 中不存在 s2,返回-1/表示 s1 中存在 s2,返回其起始位置 /函数结束void CreatTextFile()SString S;char fname10,yn;FILE *fp;printf(输入要建立的文件名:);scanf(%s,fname);fp=fopen(fname,w);yn=n;/输入结束标志初
7、值while(yn=n|yn=N)printf( 请 输 入 一 行 文 本 :);gets(S.ch);gets(S.ch);S.length=strlen(S.ch);- 9 -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 fname10;int i=0,j,k;printf(输入文本文件名:)
8、;scanf(%s,fname);fp=fopen(fname,r);printf(输入要统计计数的单词:);cinT.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(kS.length-1) /检索整个主串 Sj=PartPosition(S,T,k);/调用串匹配函数if(j0 ) break;els
9、e i+;/单词计数器加 1k=j+T.length;/继续下一字串的检索printf(n 单词%s 在文本文件%s 中共出现%d 次n,T.ch,fname,i);/统计单词出现的个数void SubStrInd()FILE *fp;SString S,T; /定义两个串变量char fname10;int i,j,k,l,m;- 10 -int wz20; /存放一行中字串匹配的多个位置printf(输入文本文件名:);scanf(%s,fname);fp=fopen(fname,r);printf(输入要检索的单词:);scanf(%s,T.ch);T.length=strlen(T.c
10、h);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(kS.length-1) /检索整个主串 Sj=PartPosition(S,T,k); /调用串匹配函数if(j0)printf(行号:%d,次数:%d,位置分别为:,l,i);for(m=1;m=i;m+) printf(%4
11、d,wzm+1);printf(n);/检索单词出现在文本文件中的行号、次数及其位置int main()void CreatTextFile(),SubStrCount(),SubStrInd();int xz;do printf(* * * * * * * * * * * * * * * * * * * * * * * * *n);printf(* 文 本 文 件 的 检 索 、 字 串 的 统 计 及 定位*n);printf(* * * * * * * * * * * * * * * * * * * * * * * * *n);printf(*1.建 立文 本 文- 11 -件*n);p
12、rintf(*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(选择错
13、误,重新选 n);while(1);3.3 实现截图331 未输入文件前的页面- 12 -332 输入文本文件,计数单词出现的次数- 13 -333 检索某单词的行号,出现次数,以及位置- 14 -4总结讨论经过一周的奋斗,这次数据结构的课程设计终于做完了。通过这次设计我们也着实又感受了一次编程的乐趣,从中也学到了不少知识。感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。现在编程感觉完全不同了。在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了
14、。 然后进行编程,不断的在电脑上调试程序,终- 15 -于完成了此次的课程设计。另外,我还体会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。通过这次课程设计逐渐提高了自己的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。在这次实验中我终于克服了这一障碍,一遍遍在心中自己默默的走,终于弄明白了,真的是功夫不负有心人啊!这次试验也让我看到了自己的不足,还是不太用模板类。还有许多关于 C+的一些比较具体的东西还不太懂,比方说指针。这次试验还让我们意识到只有不断的在电脑上调试程序,自己的水平才能得到提高。我会继续我们的兴趣编写程序的,相信在越来越多的尝试之后,自己会不断进步和提高。在此我要感谢郑玉老师在数据结构
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵港中环生物科技扩建项目环境影响报告表
- 八年级下册《北冥有鱼》过关训练-2024年中考语文课内文言文要点梳理与练习解析版
- 年产40万套新能源汽车电池盒组件项目可行性研究报告模板-申批备案
- 中级微观期末试题及答案
- 2025年高州初一政治试卷及答案
- 2025年大学植物地衣试题及答案
- 资产交接应急预案(3篇)
- 2025年上海舞蹈留学真题及答案
- 2025年星球地理七上题库及答案
- 基于区块链的跨境支付-第2篇-洞察与解读
- 国家电投集团国际能源有限公司招聘笔试题库2025
- 认知域作战基础知识课件
- 大学生职业规划大赛《智能焊接技术专业》生涯发展展示
- 养老社区课件
- 学校流感宣传教学课件
- 车辆管理档案及相关表格
- 矿区钻探安全管理制度
- 德云社空降人员管理制度
- 2022浙DT9 民用建筑常用水泵和风机控制电路图
- 2024年江苏公务员考试申论试题(B卷)
- 工艺报警分级管理制度
评论
0/150
提交评论