文档详情

数据结构--图书管理系统..doc

发布:2017-01-24约8.98千字共16页下载文档
文本预览下载声明
图书管理系统 问题描述及基本要求 图书管理系统 基本要求: 每种书的登记内容包括书号、书名、著作者、现存量和库存量。 对书号建立索引表以提高查找效率。 要求系统具有以下功能: A.采编入库:新购一种书,确定书号后,登记到图书账目表中,若表中已有,则只增加库存量。 B.借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的书证号和归还期限,改变现存量。 C.归还:注销对借阅者的登记,改变该书的现存量 模块划分 1.采编入库模块 实现功能:新购一种书,根据书的类别、书名和作者,登记到图书索引表中,如果表中已有,则只增加库存量。 借阅书籍模块 实现功能:如果一本书的存量大于0,则借出一本,登记借阅者的ID号,改变现存量。 归还书籍模块 实现功能:输入借阅者ID号,可查询到所有借阅记录,选择要归还的书,改变该书的现存量。程序流程图如图3所示。 测试数据 采编入库书名为dd,作者为dk的书籍,ID号为10的读者借阅后归还。 四.数据结构 书本信息存储结构 (1)存储结构框图 menutable size - size - size - size - size - menu name - name - name - name - name - 书本信息 - - 书本信息 - - (2)结构体定义 a.哈希表项 typedef struct { void *p; int size; }hashitem; b.哈希表 typedef struct { hashitem *h; int maxsize; int nowsize; }hashtable; c.索引表项 typedef struct { hashtable *a; char *name; }menu; d.索引表 typedef struct { menu *b; int size; }menutable; e.书籍结构体 typedef struct bnode { char *name; //书名 char *writer; //作者 int total; //总量 int num; //现量 int code; //书号 struct bnode *next; //哈希链 struct rnode1 *r; //读者链 }book; f.书本结构体中的读者链 typedef struct rnode1 { struct rnode *r; struct rnode1 *next; }rnode1; 读者信息存储结构 menutable size - menu name - name - name - name - name - 读者信息 - - 读者信息 - - 索引表及哈希表:结构体同书本 b.读者结构体 typedef struct rnode { int card; //卡号 int number; //借书的数量:借书有默认的最大数量 struct rnode *next; //哈希链 struct bnode1 *b; //书本链 }reader; c.读者结构体中的书本链 typedef struct bnode1 { struct bnode *b; struct bnode1 *next; }booknode1; 五.算法思想及源程序 采编入库模块 图1 采编入库程序流程图 实现功能:新购一种书,根据书的类别、书名和作者,登记到图书索引表中,如果表中已有,则只增加库存量。程序流程图如图1所示。 主函数部分 case 1: for(i=0;ib-size;i++) { printf(\t%d.%s\n,i+1,b-b[i].name); } printf(\tplease choose the num:); scanf(%d,i); getchar(); printf(\tplease input the bookname:); name=(char*)malloc(sizeof(char)*10); gets
显示全部
相似文档