组别:第六组 周次:第二周(2022.9.19-2022.9.25)
实验名称 | 图书管理系统 |
---|---|
仓库地址 | 图书管理系统: 由用户系统和图书系统构成;基于哈希密码技术和splay自平衡多关键值查找树等算法实现的图书管理系统. |
2022秋《软件系统设计与分析》周报告
本周进展:
一、化基本需求为具体框架(几个文件、几个类、几个结构体、几个数据结构):
二、目前人员分工安排:小组人员(有改动):人员分工(有改动):
三、本周小组成员完成任务情况(有改动):
四、本周遇到的问题以及如何解决:
1.如何针对B+树特点实现快速查找?
2.使用的是哪种哈希表?
参考文献:
本周进展:
一、化基本需求为具体框架(几个文件、几个类、几个结构体、几个数据结构):
-
三个二进制文件(用户信息文件、管理员信息文件、图书信息文件)
-
三个类(用户类、图书管理员类、图书仓库管理员类)
-
四个结构体(书(script_item)、借书信息条款(brorrow_item)、还书信息条款(return_item))
-
三个数据结构有关原理(平衡搜索树(用于管理用户信息和图书信息)B+树、MD5 字符串仿射+hash-table 用于两类管理员的登入登出、哈希表:通过名称查询用书ID+通过姓名查询用户ID)
一些具体实现:
结构体:
书:类型编号、用书ID、用书名称、作者、出版社、出版日期、库存数量、单价、版号、借 书记录、还书记录、已借书数量
借书条款:借书人、借书人ID、图书ID、图书名称、借书时间
还书条款:还书人、还书人ID、图书ID、图书名称、还书时间、是否违规
日期:年、月、日、时
数据结构有关原理:
B+树:1.检索指定ID的图书、用户;2.删除指定ID的图书、用户;3.插入新图书、用户
hash-table:检索指定名称的图书/用户ID
密码判定:录入密码——>(经过MD5)16字节大端序地址——>(经过哈希)value
检索密码:哈希表实现
实现函数:录入密码至库(哈希表)
二、本周小组成员完成任务情况(有改动):
小组成员 | 本周完成任务情况 | 下周准备做些什么 |
---|---|---|
1 | 实现了基于splay树的用户管理系统和md5算法 | 实现基于用户管理的splay树 |
2 | 实现了对定长信息的存取与维护 | 实现对变长vector的读取,基本完成信息管理模块 |
3 | 实现登录界面的简单复刻,研究了一下如何对接。 | 将登录界面与主界面串联开发 |
4 | 研究如何把密码系统及登录认证/登录 注册 密码修改 与前端对接上 | 基本实现功能界面的设计以及解决与后端的交互问题 |
5 | 实现三类人员登录认证,注册,密码修改 | 建hash表 |
6 | 进行用户类、图书管理员类的初步开发,学习并将B+树和哈希表等数据结构连接到各个类成员函数的接口上 | 进行图书仓库管理员类的初步开发,完善功能函数代码 |
详细代码完成情况请见git仓库(图书管理系统: 由用户系统和图书系统构成;基于哈希密码技术和splay自平衡多关键值查找树等算法实现的图书管理系统.)
目前仓库主要组成(包括一些数据结构与算法、存储加载、密码登录、类实现等信息):
四、本周遇到的问题以及如何解决:
1.如何针对B+树特点实现快速查找?
B+树一些相关的特点:
B+树内部有两种结点,一种是索引结点,一种是叶子结点。
B+树的索引结点并不会保存记录,只用于索引,所有的数据都保存在B+树的叶子结点中。而B树则是所有结点都会保存数据。
B+树的叶子结点都会被连成一条链表。叶子本身按索引值的大小从小到大进行排序。即这条链表是 从小到大的。多了条链表方便范围查找数据。
B树的所有索引值是不会重复的,而B+树 非叶子结点的索引值 最终一定会全部出现在 叶子结点中。
通过索引结点来快速对应到相应的叶子结点,并且由于索引结点不像普通B树那样也存储数据,B+树的数据查找等功能很快。
2.使用的是哪种哈希表?
链地址法(拉链法),参考下图。
......
参考文献: