图书馆管理系统设计:数据结构应用

版权申诉
5星 · 超过95%的资源 2 下载量 106 浏览量 更新于2024-06-25 5 收藏 219KB DOC 举报
"数据结构课程设计图书管理系统是一个模拟图书馆管理的程序,涵盖了图书的入库、借阅、归还和查询等功能。管理员可以录入图书信息,包括书号、书名、作者、现存量和库存量,以及借阅记录。用户则能通过书号、书名或作者查询图书。系统使用了两种抽象数据类型,ADT LinearList和ADT String,分别用于管理和操作线性列表和字符串。此外,系统包含多个子程序,如初始化图书和借阅者信息、二分法查找、图书采编入库、清除图书信息、借阅处理、归还处理、按书号、书名和作者的查询等。" 在这个数据结构课程设计中,图书管理系统的核心功能是基于数据结构实现的。ADT LinearList代表了一个线性列表,支持一系列基本操作,如初始化、销毁、清空、检查是否为空、获取列表长度、查找元素、获取指定位置的数据、插入元素以及删除元素。这些操作在图书管理中用于存储和管理图书信息,例如,管理员可以通过插入和删除操作来添加和移除图书。 另一方面,ADT String表示字符串数据类型,提供了丰富的操作,包括赋值、插入、删除、复制、比较、检查是否为空、计算长度、清除内容、连接字符串、提取子字符串、查找子串以及替换子串。这些操作在处理图书的书名、作者等文本信息时非常有用。 系统中的关键子程序包括: 1. `InitBo(Book &boo)`:初始化图书信息,可能涉及创建新的图书条目。 2. `InitRe(lend &Lin)`:初始化借阅者信息,建立借阅者数据库。 3. `BinarySearch(Book boo, char SearchNum[])`:使用二分法查找特定书号的图书,提高查询效率。 4. `Buy(Book &boo, char BuyNum[])`:新书采编入库,更新库存信息。 5. `Delete(Book &boo, char DeleteNum[])`:清除图书信息,处理图书销毁或已借出无法删除的情况。 6. `Borrow(Book &boo, lend &Lin, char BorrowNum[], char CaNum[])`:借阅图书,记录借阅者和归还日期。 7. `Return(Book &boo, lend &Lin, char ReturnNum[], char BorrowerNum[])`:归还图书,更新现存量和借阅记录。 8. `SearchByNum(Book &boo, char SeaNum[])`、`SearchByName(Book &boo)`和`SearchByAuth(Book &boo)`:分别按书号、书名和作者进行查询。 通过这些子程序,系统能够实现完整的图书管理流程,满足管理员和用户的需求。主函数`main()`负责整个程序的运行流程控制,`Menu()`和`Search()`用于显示和处理用户界面,提供交互式的操作选择。 这个设计项目旨在让学生在实践中理解数据结构的应用,同时掌握图书管理系统的实际运作逻辑。通过这个项目,学生不仅可以提升编程能力,还能深入学习和应用数据结构如线性列表和字符串在实际问题中的解决方法。
2023-05-31 上传
用C++语言实现图书管理系统 摘 要 图书管理系统主要是对图书的录入、读者借阅、读者归还等功能进行实现。本课程设计 的系统开发平台为Windows XP,程序设计语言为C++,程序运行平台为Windws98/2000/XP/Seven。在程序设计中采用 了B-树方法提高书籍的查找速度。 关键词 程序设计;图书管理系统; C++;数据结构;B-树 1 索引 1.1课程设计目的 设计一个小型的图书管理系统,可以实现新增图书,读者借阅,读者归还等功能。 1.2.系统性能要求 能较快的查到所要查找的图书;能准确统计当前每种书的库存,以确定此书是否可以外 借;并且对外借的图书进行管理,记录借出时间、应还时间等。 1.3.功能的实现 1) 新书入库:确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加; 2) 借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变 现存量; 3)归还:注销对借阅者的登记,改变该书的现存量。 2 系统详细设计及实现 1.所用的知识体系 在整个程序的设计过程当中,用到了C++的一些基础知识,面向对象的思想和结构化 的程序设计思想。数据结构的B-树建立索引,用索引提高查找的效率等。 2.系统功能组成框图 3 . 系统功能模块划分 " " 摸块保称 "功能说明 " "1 "系统管理 "显示库存,借阅,归还 " "2 "图书管理 "图书的添加,查询等操作 " "3 "借还书管理 "对每次借书信息的添加,删除等操作 " 4.流程图 4.1录入图书信息 4.2借阅图书 4.3归还图书 5 功能实现 5.1 运行程序的主界面 图5—1 操作界面 5.2 新书入库功能的操作界面 图5-2新书入库 5.3 查询数据的界面 图5-3查询书籍 5.4 查询所有书籍的界面 图 5-4显示库存 5.5 图书借阅的界面 图5-5借阅书籍 5.6 还书的界面 图5-6还书 3 参考文献 [1] 谭浩强 C语言设计(第三版)清华大学出版社 [2] 严蔚敏 吴伟民 数据结构(C语言版) 清华大学出版社 [3] 谭浩强 C++ 程序设计清华大学出版社 [4]参考网址http://www.php.net/manual/zh/function.fopen.php [5]参考网址http://hi.baidu.com/%B3%D5%B3%D5%B5%C4145/blog/item/48f2b1ed1d99d 1d2b21cb15c.html 附录 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<time.h> //定义局变量 #define N 10000 //表示状态的字段 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef char *string ; #define m 3 //B-树的阶,设为 // 借阅者的结构体 typedef struct User{ unsigned int number; //借书证号码 int year; int month; int day; //借书时间 int dyear; //截至日期的年 int dmonth; //截至日期的月 int dday; //截至日期的日 struct User *next; //下一个借阅者 }User; //定义用户的的信息 //书的结构体 struct Book{ unsigned int key; //图书的书号 char bname[20]; // 书名 char writter[20]; // 著者 unsigned int left; // 现存量 unsigned int total; // 总存量 User *user; //借阅该书的人 }b[N]; //定义书的信息 //B- 树的存储结构 typedef Book KeyType; typedef struct BTNode{ int keynum; //结点中关键字个数,即结点的大小 struct BTNode *parent; //指向双亲结点 KeyType key[m + 1]; //关键字向量,号单元未用 struct BTNode *ptr[m + 1]; //子树指针向量 }BTNode,*BTree; //查找结果的存储结构体 typedef struct{ BTNode *pt; //指向找到的结点 int i; //1……m,在结