基于C++实现(控制台)图书管理系统【100010144】
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 | 书号 | 书名 | 著者 | 现存量 | 总库存量 |
---|---|---|---|---|---|
1 | 35 | *** | *** | 5 | 10 |
2 | 16 | *** | *** | 10 | 15 |
3 | 18 | *** | *** | 0 | 5 |
… |
(2).系统功能
- 新书购入,将书号,书名,作者,册数,出版时间以及价格添加入图书管理系统中。
- 查找书籍,查看指定某一本书的全部信息。
- 显示库存,输出所有图书的信息。
- 借阅图书,如果库存量大于零时则执行出借。
- 归还书籍,增加该书的现存量。
- 删除书籍,删除指定 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
相关文章
- C++-教程2-VS2010C++相关文件说明
- Sublime Text 3配置Windows下C/C++编译环境
- C/C++每日一练(20230419)
- C/C++基础讲解(九十七)之综合实例篇(进销存管理系统)
- C/C++基础讲解(九十四)之综合实例篇(综合CAD系统)
- 【华为OD机试 2023最新 】 总最快检测效率(C++)
- 解答私信@被c++折磨头秃的花季美少女 //C++ 利用指针数组输入10个单词,编写函数对10个单词进行排序并输出,要求判断是否有相同的单词,如果有相同的单词在输出时该单词只输出一次。
- 解答私信@被c++折磨头秃的花季美少女 //C++ 编写一个进阶版的进制转换程序,运行功能如下:请选择要输入的数字的进制(2、8、10、16):请输入该数字:请选择要转换成的进制(2、8。。。
- C++之技巧篇事件注册与发布
- c++排列组合,不考虑颠倒
- 关于C++ const 的全面总结
- C++中的sort函数
- Ubuntu20.04下,qt交叉编译报错::15: warning: identifier ‘nullptr‘ is a keyword in C++11 [-Wc++0x-compat]
- C++ back_inserter(插入迭代器)用法(九)
- C++高精度运算类bign (重载操作符)
- C++ thread 基本用法
- 高精度四则运算的C++代码实现
- C++快速排序
- 图书管理系统(C++)
- c++封装继承多态实例
- C++算法之指针三剑客一
- 黑马C++笔记——职工管理系统(C++实现)
- C/C++学习笔记一