数据结构实验
第一章 个人图书信息管理系统
第二章 停车场管理
第三章 哈夫曼编码
第一章 个人图书信息管理系统
前言
线性表的顺序表示又称为顺序存储结构或顺序映像。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上仙林的存储单元中的存储结构。简而言之,逻辑上相邻,物理上也相邻。
顺序存储方法:用一组地址连续的存储单元依次存储线性表的元素,可通过数组V[n]。
一、需求分析
1.利用顺序表建立一个存储并管理个人图书信息的系统,每一本图书至少包括书名、版本、作者、出版社、ISBN编号、出版日期等数据。系统具备表的建立和初始化,图书信息录入,修改,增加,删除的操作。
2.在本演示程序中,图书信息数据可以从键盘录入,已录入的图书信息存储到一个文本文件中。
根据初始输入的操作码,可分别执行一下操作:0-初始化图书信息管理系统,1-录入图书信息,2-修改图书数据,3-增加图书数据,4-删除图书数据,5-统计图书总数,6-根据书名查找图书,7-根据版本查找图书,8-根据作者查找图书,9-根据出版社查找图书,10-根据ISBN编码查找图书,11-根据出版日期查找图书。
3.测试数据:
不少于15本书的信息。
二、概要设计
根据题目要求,该问题的实现可以分为五个模块:
初始化模块——建立和初始化系统具备表
信息录入模块——录入图书信息,并存储到文件
信息处理模块——修改、增加或删除图书信息
信息统计模块——统计图书的总数
查找模块——按照图书的某项数据查找图书
有序表的抽象数据类型定义为:
ADT SqList{
数据对象:D={Book[i]|Book[i]∈CharSet,i=1,2,3…,n, n≥0}
数据关系:R1={<Book[i-1],Book[i]> | Book[i-1],Book[i]∈D,i=2,…,n}
基本操作:
在主函数里
control(SqList *L);
初始条件:有序表L已存在。
操作结果:函数控制器,负责根据输入的操作码不同进行不同的操作。
initLibrary(SqList *L);
初始条件:有序表L已存在。
操作结果:初始化,录入信息,并存储到文件
modifMessage(SqList *L, i); //
初始条件:有序表L已存在。
操作结果:修改指定的第i本书的图书信息,输入“1 ”后开始操作。
addMessage(SqList *L,i);
初始条件:有序表L已存在。
操作结果:增加指定的第i本书的图书信息,输入“2 ”后开始操作。
deleteMessage(SqList *L,i);
初始条件:有序表L已存在。
操作结果:删除指定的第i本书的图书信息,输入“3 ”后开始操作。
outputSum(SqList L);
初始条件:有序表L已存在。
操作结果:统计图书总数,输入“4 ”后开始操作,返回图书的总数。
findBook(SqList L);
初始条件:有序表L已存在。
操作结果:查找图书,返回查找的图书下标。
compareName_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的书名是否相同,如果相同返回OK,否则返回ERROR。
compareVersion_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的版本是否相同,如果相同返回OK,否则返回ERROR。
compareAuthor_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的作者是否相同,如果相同返回OK,否则返回ERROR。
comparePublish_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的出版社是否相同,如果相同返回OK,否则返回ERROR。
compareISBN_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的ISBN码是否相同,如果相同返回OK,否则返回ERROR。
comparedate_book(Book a,Book b);
初始条件:有序表L已存在。
操作结果:比较目标图书a和源图书b的出版日期是否相同,如果相同返回OK,否则返回ERROR。
void output(Book *e,FILE *fp);
初始条件:有序表L已存在。
操作结果:全部操作完成后,将所有图书信息存入文件中。