# Books-Management-System
C语言期末大作业——图书信息管理系统(C语言,单链表)
1.题目内容
==========
1.1.系统名称
--------
六、图书信息管理程序
1.2.基本要求
--------
1. 使用链表保存图书信息,每个节点要求包含图书的编号、书名、作者、购买日期和价格信息;
2. 可以对当前图书数据库进行增加、删除操作,并实现按图书编号进行查询;
3. 系统完成后应实现类似下图所示界面;
![](./media/fa95ae9353168c40ff7cfb64d2e0982d.png)
2.完成内容
==========
2.1.基本任务
------------
1. 使用链表保存图书信息:
1. 图书编号;
2. 图书名;
3. 图书作者;
4. 图书库存数量;
5. 图书价格;
2. 可对链表进行CRUD操作:
3. 有Shell界面
2.2.拓展任务
------------
1. 使用Git管理代码;
2. 推送到GitHub上开源:
> <https://github.com/yuebanquan/Books-Management-System>
1. 将代码分模块开发;
2. 查询功能扩展根据书名和作者查询
3. 有一定的异常管理机制;
3.设计内容
==========
3.1.代码结构设计
----------------
![](media/12234f4cedfe0a12de7b16fca50319c0.png)
3.2.系统模块设计
----------------
![](./media/6926bea1772f88cbf30130a3c608df85.png)
3.3.数据结构设计
-----------------
### 3.3.1.链表:
结构体标志:Node
结构体声明变量:Book
结构体成员列表:
| 数据名 | 数据类型 | 备注 |
| ---------- | -------- | ---------- |
| id | int | 图书编号 |
| name | char | 图书名 |
| author[20] | char | 图书作者 |
| inventory | int | 图书库存量 |
| price | float | 价格 |
| next | Node\* | 指针域 |
结构体代码:
![](./media/90d35a415a114cc320b01d9f9a5bf5d6.png)
3.4.算法设计
-------------
### 3.4.1.冒泡排序法:
1. 时间复杂度:$$O\left( n^{2} \right)$$;
2. 算法原理:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个;
2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数;
3. 针对所有的元素重复以上的步骤,除了最后一个;
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
### 3.4.2.顺序查找法:
1. 时间复杂度:$$O\left( n \right)$$;
2. 算法原理:对于任意一个序列以及一个给定的元素,将给定元素与序列中元素依次比较,直到找出与给定关键字相同的元素,或者将序列中的元素与其都比较完为止。
4.程序结果
==========
4.1.编译后程序
--------------
![](./media/82b2fce84b441f68359f7f2ae628a2b5.png)
4.2.主界面
----------
![](./media/f00b74893ab9fa6081a499bc55a8aefa.png)
4.3.图书信息查询界面
--------------------
![](./media/f584f81a8e200bb5713ddc31d5a570c0.png)
4.4.图书链表创建
----------------
### 4.4.1.链表未创建:
![](./media/4ebd1db63d9bcda38d9dc2c3e51755ff.png)
### 4.4.2.链表已创建
![](./media/1a1ead0a33e74ed131bac3c6ca732388.png)
4.5.图书信息插入
----------------
### 4.5.1.链表未创建
![](./media/3df183fdd73c24f819eb489455979db1.png)
### 4.5.2.插入成功
![](./media/e0e8d289b2f7fd8821219c341acbc7b7.png)
4.6.查询所有图书信息
--------------------
### 4.6.1.链表未创建
![](./media/4c3356afeb040dcf1e62909d78cf57db.png)
### 4.6.2.查询成功
![](./media/99f02973c88e3e75a87da5422ef8e8e5.png)
4.7.根据编号查询
----------------
### 4.7.1.链表未创建
![](./media/4c3356afeb040dcf1e62909d78cf57db.png)
### 4.7.2.查询成功
![](./media/e1a3078732fcdcb8fbf56a453d5222e0.png)
### 4.7.3.查询失败
![](./media/d349ca699f54e47e0a1b2fb2546899f3.png)
4.8.根据书名查询
----------------
### 4.8.1.链表未创建
![](./media/4c3356afeb040dcf1e62909d78cf57db.png)
### 4.8.2.查询成功
![](./media/7eb260915a32c3654dd7a541b1a9e03b.png)
### 4.8.3.查询失败
![](./media/1c8ca3a7dd4983ab27898672e3f0f9f7.png)
4.9.根据作者查询
----------------
### 4.9.1.链表未创建
![](./media/4c3356afeb040dcf1e62909d78cf57db.png)
### 4.9.2.查询成功
![](./media/d5d18b6c552448478c44266c92b9167e.png)
### 4.9.3.查询失败
![](./media/146dedb1acf16c1637db0664f3d0114f.png)
4.10.图书信息删除
-----------------
### 4.10.1.链表未创建
![](./media/2d4f65382029ec817f10f29a22cde812.png)
### 4.10.2.删除成功
![](./media/8fa023c36bc7ed607dbd5b50e1060093.png)
![](./media/65f6c606b372508e338c1b2cb75cdf5e.png)
4.11.图书信息修改
-----------------
### 4.11.1.链表未创建
![](./media/b40ab27999e6c2e50f5fd7aa9c1fb74c.png)
### 4.11.2.修改成功
![](./media/0245d2b065280c15c9f1f76cf7db73b5.png)
![](./media/5211b6db92bee643134df6ee4cd8b4e0.png)
### 4.11.3.未查询到编号
![](./media/695a2a223e3b91c1713b1f2c7eb6c0d0.png)