数据结构课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东理工大学计算机学院课程设计
(数据结构)
班级计升1002
姓名王蕊
学号1022051061
指导教师肖爱梅
二○一一年一月二十日
课程设计任务书及成绩评定
课题名称建立词索引表
Ⅰ、题目的目的和要求:
1、设计目的
巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2、设计题目要求:
信息检索是计算机应用的重要领域之一,为提高查询效率,建立好的索引系统是必要的,如在图书馆书目检索系统中可以按书名、作者名和分类号检索,但在实际系统中,最好的检索方法是按书名关键词检索。
基本要求:依据书目基本信息文件建立关键词索引表
Ⅱ、设计进度及完成情况
Ⅲ、主要参考文献及资料
[1] 严蔚敏数据结构(C语言版)清华大学出版社 1999
[2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999
[3] 谭浩强 C语言程序设计清华大学出版社
[4] 与所用编程环境相配套的C语言或C++相关的资料
Ⅳ、成绩评定:
设计成绩:(教师填写)
指导老师:(签字)
二○一一年一月二十一日
目录
第一章概述 (1)
第二章系统分析 (2)
第三章概要设计………………………………………………………第四章详细设计………………………………………………………第五章运行与测试……………………………………………………第六章总结与心得……………………………………………………参考文献………………………………………………………………
第一章概述
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是建立词索引表。信息检索是计算机应用的重要领域之一,为提高查询效率,建立好的索引系统是必要的,但在实际系统中最好的检索方法是按书名关键词检索。读者可以很容易从关键词索引表中查询到他所感兴趣的书目。
第二章系统分析
1.依据书目信息建立关键词索引,应具有三大结构:一个书目文件,一个词表,一个关
键词索引表。功能:首先从书目文件中读入一个书目串,然后从书目串中提取所有关键词插入词表,对词表中的每一个关键词,在索引表中进行查找并做相应的插入操作。2.建立一个以.txt为扩展名的文件作为书目文件。
3.设定词表,词表中存放一本书的书名中若干关键词。其中每个词是一个字符串。
4.动态生成索引表。索引表的功能:查找。索引表中每个索引项包含两部分:关键词和书号索引。
5.要实现关键词索引程序中涉及的函数及函数实现的功能如下:
IdxListType *InitIdxList(IdxListType *idxlist)
初始化操作,置索引表idxlist为空表,且在idxlist.item[0]设一空串。
void GetLine(FILE *f)
从文件f读入一个书目信息到书目缓冲区buf
int ExtractKeyWord(int bno[])
从buf中提取书目关键词到词表wdlist,书号存入bno
int InsIdxList(IdxListType *idxlist, int bno[])
将书号bno的书名关键词按词典顺序插入索引表idxlist
void PutText(FILE *g, IdxListType *idxlist)
将生成的索引表idxlist输入到输出文件g
void Idxlist_free(IdxListType *idxlist)
释放空间
第三章概要设计
本章主要介绍
1、数据结构的设计
在这次课程设计中,词表中只存放一本书的书名中若干关键词,其数量有限,则采用顺序存储结构的线性表,索引表为有序表,索引表中每个索引项包含两部分。一、关键词,因索引表为常驻结构,考虑到节省存储空间,采用堆分配存储表示的串类型。二、书号索引,由于书号索引是在索引表的生成过程中逐个插入,且不同关键词的书号索引个数不等,甚至会相差很多,所以这里采用链表结构的线性表。
2、算法的设计
本设计从总体上划分为三个模块。
模块一、完成从书目文件中读取书目串并从书目串中提取所有关键词插入词表。功能函数: GetLine(FILE *f),ExtractKeyWord(int bno[])算法:
void GetLine(FILE *f){
int j = 0;
static char a[100][100];
char c;
c = fgetc(f);
while(((a[v][j++] = tolower(c) ) != '\n') && (c != EOF))
c = fgetc(f);
a[v][j-1] = '\0';
buf = a[v++];
printf("%s",buf);}
int ExtractKeyWord(int bno[]){
int k,s,t = 0,j = 0;
extern int b = i;
char *p = buf,*q,*c[10];
while(!isalnum(*p)) p++;
while( isdigit(*p) || !isalpha(*p)){
bno[j] = *p - '0';
p++;j++;}
j--;
while(!isalpha(*p)) p++;
q = p;
while(*q)
{
while((*q != ' ') && *q && (*q != EOF)) q++;
q++;