一、实验目的
(1)掌握链式存储的概念,学会对链式存储数据结构进行操作。
(2)加深对链式存储数据结构的理解,培养解决实际问题的编程能力。
二、实验内容
(一) 基于链式存储实现图书管理系统。
- 实现图书的查找、插入、删除3个基本功能的算法。
- 修改功能。通过调用查找算法,找到满足条件的图书进行修改。
- 排序功能。将图书按ISBN排序。(选做)
- [设计实验选做]求集合(用单链表表示)的并和交运算。
内容:编写一个程序,采用单链表表示集合(假设集合中不存在重复的元素),将其按递增方式排序,构成有序单链表,并求这样的两个集合的并集和交集。
三、实验环境(仪器设备、软件等)
win10系统电脑 Visual Studio 2022
四、实验步骤
- 设计图书节点结构: 定义图书节点,包括图书信息(书名、作者、出版社等)、图书编号、指向下一本书的指针等。确保节点能够充分存储图书信息。
- 初始化链表: 创建一个空链表,用于存储图书信息。初始化链表头指针为空,表示链表中还没有图书。
- 添加图书: 编写函数实现向链表中添加图书的功能。用户输入图书信息后,创建新的图书节点,将其插入链表的头部或尾部,更新链表头指针。
- 删除图书: 编写函数实现从链表中删除指定图书的功能。用户输入要删除的图书编号或其他关键信息,找到对应节点,进行删除操作,同时更新链表头指针。
- 查询图书: 实现查询图书信息的功能。用户输入关键信息,遍历链表查找匹配的图书节点,并输出相应信息。
- 显示所有图书: 编写函数遍历链表,输出所有图书的信息。确保能够清晰展示整个图书馆的藏书情况。
- 保存与读取数据: 添加函数实现将链表中的图书信息保存到文件中,以及从文件中读取数据还原链表。确保数据的长期保存和可持续使用。
- 界面设计(可选): 如果需要,可以考虑设计简单的用户界面,提高系统的用户友好性。这可以包括菜单选择、输入提示等。
- 测试与调试: 编写测试用例,验证系统的各项功能。确保链表的增删改查等操作都能够正确执行,并进行必要的调试。
- 实验报告: 撰写实验报告,详细记录链式存储结构在图书管理系统中的设计思路、实现过程、遇到的问题以及解决方案。提供相关代码和测试结果,总结实验体会。
五、记录与处理(实验数据、误差分析、结果分析)
- 记录实验数据: 在执行实验过程中,需要记录各种操作的输入数据和输出结果,包括添加、删除、查询和显示图书等操作的输入和输出数据。这些数据可以帮助评估系统的性能和鲁棒性,并以后进行进一步的分析。
- 误差分析: 在实际操作中,可能会出现一些误差和错误,例如输入信息不完整、图书编号输入错误等等。需要进行详细的误差分析,找出误差产生的原因,并进行相应的处理和纠正。这可以提高系统的可靠性和稳定性。
- 结果分析: 基于记录的实验数据和误差分析,需要进行结果分析,以评估系统的性能和表现。例如,通过分析查询和显示图书操作的平均耗时和内存占用情况,可以得出系统的性能评估。进一步,可以比较不同的插入和删除算法实现的性能和复杂度,以确定最佳的算法实现。
- 结果优化: 分析结果后,需要进行一些改进和优化,例如增加缓存机制、减少复杂度、增加并发处理等方法,以提高系统的性能和可扩展性。同时,还需要考虑系统的高可用性和安全性,确保数据的安全和可持续使用。
源代码:#include <iostream>
#include <cstring>
using namespace std;
// 图书信息结构体
struct Book {
char ISBN[14]; // ISBN号
char title[50]; // 书名
int price; // 定价
Book* next; // 指向下一本书的指针
};
// 图书管理系统类
class BookManagementSystem {
private:
Book* head; // 链表头指针
public:
// 构造函数
BookManagementSystem() {
head = nullptr; // 初始时链表为空
}
// 析构函数
~BookManagementSystem() {
// 释放链表中的所有节点
Book* current = head;
while (current != nullptr) {
<