文本文件单词的检索与计数(流程图)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程设计报告
一、设计时间
2015年01月5日-----2015年01月11日
二、设计地点
实验楼计算机511机房
三、设计目的
1.巩固和加深对数据结构课程所学知识的理解,了解并掌握数据结构与算法的设计方法;
2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;
3.提高综合运用所学的理论知识和方法,独立分析和解决问题的能力;
4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
5.培养查阅资料,独立思考问题的能力。
四.设计小组成员
五.指导老师
六.设计课题
文本文件单词的检索与计数
七.基本思路及关键问题的解决方法(需求分析和概要设计)
(一)需求分析:
1.建立文本文件
建立文本文件的实现思路:
(1)定义一个串变量
(2)定义文本文件
(3)输入文件名,打开该文件
(4)循环读入文本行,写入文本文件,其过程如下:
While(不是文件输入结束){
读入一文本行至串变量;
串变量写入文件;
输入是否结束输入标志; }
(5)关闭文件
2.给定单词的计数
该功能需要用到前一节中设计的模式匹配算法,逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。
3 .检索单词出现在文本文件中的行号、次数及其位置
4.主控菜单程序的结构
(1)头文件包含
(2)菜单选择包括:
1、建立文件
2、单词计数
3、单词定位
4、退出程序
(3)选择1~4执行相应的操作,其他字符为非法
(二)概要设计:
1.建立文本文件:定义一个串变量,定义文本文件,输入文件名,打开该文件,循环读入文本行,写入文本文件,关闭文件。
2.给定单词的计数:逐行扫描文本文件。匹配一个,计数器加1,直到整个文件扫描结束;然后输出单词的次数。
3.检索单词出现在文本文件中的行号、次数及其位置:逐行扫描文本文件。扫描一个单词,单词数加1,匹配一个,计数器加1,输出该单词数,行数到底为止,行数加1,单词数清零,直到整个文件扫描结束;然后输出单词的次数,行号,第几个单词。
八.算法及流程图(详细设计)
(2)单词计数(1)建立文件
(3)单词定位
九.调试过程中出现的问题及相应解决办法(调试分析)
十.课程设计心得体会(课程总结)
经过一周的努力,这次数据结构的课程设计终于做完了。通过这次设计我也着实又感受了一次编程的乐趣,从中也学到了不少知识。感受最深的一点是:以前用编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。现在编程感觉完全不同了。在编写一个程序之前,先对这个课程设计进行了一下分析,将每个要求都花了一下算法流程图,使得自己的思路更加的清晰了。然后进行编程,不断的在电脑上调试程序,终于完成了此次的课程设计。通过这次课程设计逐渐提高了自己的程序设计和调试能力,我以前对算法一直很害怕,总是看不明白究竟这程序中间的过程是怎么进行的。这次试验也让我看到了自己的不足,还是不太用模板类。还有许多关于C语言的一些比较具体的东西还不太懂,需要进一步了解。这次试验还让我意识到只有不断的在电脑上调试程序,自己的水平才能得到提高。
十一.源程序(核心代码部分加上清晰的程序注释);
#include
#include
#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 { if(s1.ch[i]==s2.ch[j]) { i++; j++; //继续使下标移向下一个字符位置 } else { i=i-j+1; j=0; } } if(j>=s2.length) return i-s2.length; else return -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() {