数据结构课程设计

上传人:pu****.1 文档编号:489138371 上传时间:2022-09-07 格式:DOC 页数:25 大小:414.50KB
返回 下载 相关 举报
数据结构课程设计_第1页
第1页 / 共25页
数据结构课程设计_第2页
第2页 / 共25页
数据结构课程设计_第3页
第3页 / 共25页
数据结构课程设计_第4页
第4页 / 共25页
数据结构课程设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数据结构课程设计》由会员分享,可在线阅读,更多相关《数据结构课程设计(25页珍藏版)》请在金锄头文库上搜索。

1、数据结构课 程 设 计 报 告 书题 目: 文本文件单词的检索与计数 专 业: 网络工程 学 号: 131007137 学生姓名: 张钦昆 指导教师: 王初阳 完成日期: 2014/6/7 目 录1 设计任务书21.1 题目与要求21.2 知识点21.3 输入输出分析21.4 测试数据分析22 概要设计32.1 结构体类型及函数声明32.2 主程序流程32.3 模块流程说明43 详细设计83.1 数据类型实现83.2 程序代码84 调试分析174.1 问题分析与回顾174.2 算法时空分析174.3 算法改进174.4 经验和体会175 测试结果18参考文献23评分标准.241 设计任务书1.

2、1 题目与要求题目:文本文件单词的检索与计数。要求:编程建立一个文本文件,每个单词不包含空格且不跨行,单词由字符序列构成且区分大小写;统计给定单词在文本文件中出现的总次数;检索输出某个单词出现在文本中的行号、在该行中出现的次数以及位置。建立文本文件,文件名由用户用键盘输入;给定单词的计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数;检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。1.2 知识点 串的应用、文件、结构体、指针、数组、函数、函数的调用、循环语句、选择语句、输入输出控制、自定义类型等。1.3 输入输出分析(1)普通输入在文

3、本文件的建立中,需要先定义串变量和文本文件,从而建立文本文件;根据实际情况,将单词的长度定义为20,规定每行最多输入110个字符。(2)对话式输入为便于转换及比较,对话式输入采用字符数组进行存储.为保障程序的健壮性,同时限制对话式输入的格式,对于非法的会话式输入则提示用户操作失败的原因。(3)程序输出为了能让程序输出时更加美观,程序输出主要以整齐为主,使得输出的程序结果均整齐输出。1.4 测试数据分析在建立文本文件名时,要求键盘输入所建立的文本文件的名称,如果所输入的文本文件名称超过所给定的字符,将提示输入错误,请重新输入。在第二次输入文本文件名称以供在此文本文件中查找所给定的单词,如果用户输

4、入的文本文件名称与第一次不符或输入为空,系统将提示输入错误,请重新输入。在主控程序中,要求输入执行指令14,如果输入非14字符,系统将提示输入错误,请重新选择2 概要设计2.1 结构体类型及函数声明(1)结构体1. typedef struct /* 定义顺序串类型 */ char chMaxStrSize; int length; string;2. typedef struct /*统计单词出现的次数*/ char wordWORD_LEN; int count; elem_type; 3. typedef structelem_type *elem; /*存储空间基址*/int leng

5、th; /*当前长度*/int listsize; /*当前分配的存储容量*/ sqlist; 函数:1.建立文件:void creat_text_file()2.单词统计:void sqlist_add(sqlist *sq, elem_type *et, char *word)3.文本文件中单词的总汇:void substrsum()4.单词的定位:void substrcount()5.主函数:int main()2.2 主程序流程(1)主程序调用模块图主程序利用switch()语句实现各个模块的调用,主函数调用如图1所示。主程序根据不同数值调用函数1建立文本文件2给定单词计数3检索单词

6、在文本中的位置图1 主程序调用模块图2.3 模块流程说明主函数对各主要模块进行调用,各个主要模块又分别调用其他子模块。下面用简要流程图对各主要模块进行说明。(1)建立文本文件主模块如图2所示,建立文本文件模块。首先定义一个串变量,然后调用void creat_text_file()函数,定义文本文件,键盘输入文件名,打开该文件,循环读入文本行,写入文本文件,最后关闭文件。开始定义一个串变量调用void creat_text_file()函数,定义文本文件键盘输入文件名打开文件,循环读入文本行,写入文本文件关闭文件、图2 建立文本文件模块 (2)给定单词的计数主模块如图3所示为给定单词计数程图。

7、 其实现过程如下;首先输入要检索的文本文件名,打开相应的文件,然后输入要检索统计的单词,循环读文本文件,读入一行,将其送入定义好的串中,并求该串的实际长度,调用串匹配函数进行计数。数最后关闭文件,输出统计结果开始输入要检索的文本文件名,打开相应文件输入要检索统计的单词使用while循环语句,调用sqlist_add(&sq, et, word)函数,循环读文本文件,送入定义好的串中关闭文件求该串的实际长度,调用串匹配函数partposition(s,t,k)进行计数,输出统计结果 图3单词计数模块 (3)主控程序模块如图4为中控程序流程图。过程如下:输入头文件使用循环语句输出一下4个执行指令:

8、1. 建立文本文档2. 文本单词汇总 3. 给定单词定位4. 退出 如输入非14的指令,系统将提示,输入错误请重新输入。结束。开始输入头文件输入四个执行指令输入的是否为14的执行指令? 否 是提示:输入错误,请重新输入执行相应指令结束图4 主控程序模块3 详细设计3.1 数据类型实现 结构体:1. typedef struct /* 定义顺序串类型 */ char chMaxStrSize; int length; string;2. typedef struct /*统计单词出现的次数*/ char wordWORD_LEN; int count; elem_type; 3. typedef

9、 structelem_type *elem; /*存储空间基址*/int length; /*当前长度*/int listsize; /*当前分配的存储容量*/ sqlist; 函数:1. 建立文件:void creat_text_file()2. 单词统计:void sqlist_add(sqlist *sq, elem_type *et, char *word)3. 文本文件中单词的总汇:void substrsum()4. 单词的定位:void substrcount()5. 主函数:int main()3.2 程序代码 #include #include #include #defi

10、ne LIST_INIT_SIZE 500 /*线性表存储空间的初始分配量*/ #define LISTINCREMENT 10 /*线性表存储空间的分配增量*/ #define FILE_NAME_LEN 20 /*文件名长度*/ #define WORD_LEN 20 /*单词长度*/ #define MaxStrSize 256 #define llength 110 /*规定一行有110个字节*/ typedef struct char chMaxStrSize; /* ch是一个可容纳256个字符的字符数组 */ int length; string;/* 定义顺序串类型 */ ty

11、pedef struct char wordWORD_LEN; /*存储单词,不超过20个字符*/int count; /*单词出现的次数*/ elem_type; typedef structelem_type *elem; /*存储空间基址*/int length; /*当前长度*/int listsize; /*当前分配的存储容量*/ sqlist; void sqlist_init(sqlist *sq, elem_type *et) sq-elem = et; sq-length = 0; void sqlist_add(sqlist *sq, elem_type *et, char *word) int i; int j; for (i = 0; i length; i+) /*当前单词与加入的单词相同,直接统计,不做插入 */ if (strcmp(eti.word, word) = 0) eti.count+; return; if (strcmp(eti.word, word) 0)break;if (sq-length = LIST_INIT_SIZE)printf(空间不足,单词%s插入失败n, word)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号