实验四 图书管理系统 姓名:任子龙 学号:1120140167 班级:05111451 一.需求分析 (1)问题描述 有一个小型书库保管了大量图书,关于图书有大量信息需要处理,这些信息包括图书的分类、书名、作者名、购买日期、价格等。现要求编写一个程序以便于对图书的管理。 (2)基本要求: a.建立图书信息。 b.提供查找功能,按照多种关键字查找需要的书籍。例如按书名查找,输入书名后,将显示出该图书的所有信息,或显示指定信息。 c.提供排序功能,按照多种关键字对所有的书籍进行排序,例如按出版日期进行排序。 d.提供维护功能,可以对图书信息进行添加、修改、删除等功能。 (3)数据结构与算法分析 将每一本书看作是一个基本单元。由于涉及添加、修改操作,这里使用了链表作为数据存储结构;同时,考虑到排序功能,尝试使用双向链表。其中,每本书作为一个结点,数据域包含 char型变量,指针域含有左右指针 left 和 right。 二.概要设计 1.抽象数据类型的定义 为实现上述功能,程序中使用了双向链表,只需要定义一种数据类型: typedef struct book { char number[10]; char title[20]; char author[10]; char date[15]; char price[10]; struct book *right; struct book *left; }BK; 注意结点的指针域有left 和right 两个。 2.本程序包含两个模块 (1)主程序模块 主函数只包含了 Menu_select()函数。目的是进入主菜单界面,进行功能选择;直到输入操作码0,退出系统; (2)双向链表单元模块——实现书籍信息的链式存储的抽象数据类型。 各函数之间的调用关系: 三. 详细设计 1.结点类型 typedef struct book { char number[10]; char title[20]; char author[10]; char date[15]; char price[10]; struct book *right; struct book *left; }BK; 2.子函数 (1)功能菜单调用函数 Menu_select() 使用户进入主菜单界面,进行功能选择;先进入无限循环,输入操作码进行系统管理工作,直到输入操作码0,退出系统; (2)各种功能函数 Initialize()//初始化图书系统信息; Insert()//添加新的图书信息; Sort()//对图书进行排序,本程序可以实现按“图书编号”、“出版日期”、 “图书价格”多种关键字进行排序; Search()//实现对图书的查找功能,本程序可以实现按“图书编号”、“出版日期”、“图书价格”多种关键字进行查找; deletebook()//删除无效...