zl程序教程

您现在的位置是:首页 >  后端

当前栏目

基于C++实现(控制台)图书管理系统【100010144】

C++管理系统 实现 基于 控制台 图书
2023-09-11 14:17:50 时间

图书管理系统

一、引言

为什么要进行课程设计?

1.训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;

4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。

立题的理论或实践依据是什么?拟创新点何在?理论与(或)实践意义是什么?

1.现实中,图书馆大量的书籍不便于管理,查找及其繁琐,变诞生了图书管理系统。将实际位置和虚拟数据结合,通过计算机高速的计算,能更快的找到目标书籍,既节约时间,有节约成本。

2.理论与实践相结合,促进学习,提高学习热情,使繁琐的文字通俗易懂。

二、系统功能和原始数据

(1).原始数据

入库书号:35,16,18,70,5,50,22,60,13,17,12,45,25,42,15,90,30,7

则库存表如下:

AddID书号书名著者现存量总库存量
135******510
216******1015
318******05

(2).系统功能

  1. 新书购入,将书号,书名,作者,册数,出版时间以及价格添加入图书管理系统中。
  2. 查找书籍,查看指定某一本书的全部信息。
  3. 显示库存,输出所有图书的信息。
  4. 借阅图书,如果库存量大于零时则执行出借。
  5. 归还书籍,增加该书的现存量。
  6. 删除书籍,删除指定 id 书籍。

三、程序总体设计

1.数据结构

所用数据结构:B 树。

2.模块划分和层次结构

图一:图书管理系统示意图

3.函数原型清单

int read(book b[]);//读取文件 存入数组
void createBTree(book b[], int n);//初始化B树
Result SearchBTree(BTree t, book k);//查找k在t中的位置
int SearchBTNode(BTNode *p, book k);
//在结点p中查找关键字k的插入位置i 
void InsertBTree(BTree &t, int i, book k, BTNode *p);
//在树t上结点q的key[i]与key[i+1]之间插入关键字k。
void InsertBTNode(BTNode *&p, int i, book k, BTNode *q);
//将关键字k和结点q分别插入到p->key[i+1]和p->ptr[i+1]中
void NewRoot(BTNode *&t, book k, BTNode *p, BTNode *q);
//生成新的根结点t,原p和q为子树指针
void SplitBTNode(BTNode *&p, BTNode *&q);//分裂节点
//void PrintBTree(BTree t,int n);
bool PrintBTree(BTree t);//输出B树
bool Traverse(BTree t, queue<BTree> L, int newline, int sum);
//递归 遍历B树
int menu();//菜单
void save(book b[], int sum);//保存文件
void display(book b[], int n);//显示库存
int BTNodeDelete(BTNode *p, book k);//在结点p中查找并删除关键字k
int FindBTNode(BTNode *p, book k, int &i);
//反映是否在结点p中是否查找到关键字k 
void Substitution(BTNode *p, int i);
//查找被删关键字p->key[i]的替代叶子结点
void Remove(BTNode *p, int i);//从p结点删除key[i]和ptr[i]
void AdjustBTree(BTNode *p, int i);
//删除结点p中的第i个关键字后,调整B树
void MoveLeft(BTNode *p, int i);
//将双亲结点p中的第一个关键字移入左结点aq中,
//将右结点q中的第一个关键字移入双亲结点p中
void Combine(BTNode *p, int i);
//将双亲结点p、右结点q合并入左结点aq,
//并调整双亲结点p中的剩余关键字的位置
void MoveRight(BTNode *p, int i);
//将双亲结点p中的最后一个关键字移入右结点q中
//将左结点aq中的最后一个关键字移入双亲结点p中
void dele(book b[], book k, int  *n);
//删除book里的k
int BorrowBook(BTNode *T, book k);//借书
int ReturnBook(BTNode *T, book k);//还书

4.程序总体框架

图二

5.程序组织

图三

四、功能模块函数设计和调试

图三 插入

图四 分裂

功能测试

系统主界面

新书入库

查找书籍

显示库存

借阅书籍

归还书籍

删除书籍

显示树

♻️ 资源

在这里插入图片描述

大小: 594KB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87300936