commit 53c8d1b339dd55450caa291deea2bce88d227741 Author: ridethepig Date: Wed Nov 9 11:30:08 2022 +0800 data flow diagram diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59beec4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.bkp +*.swap +*.o diff --git a/DBBigWorkDesign.drawio b/DBBigWorkDesign.drawio new file mode 100644 index 0000000..53fa997 --- /dev/null +++ b/DBBigWorkDesign.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/设计文档.md b/设计文档.md new file mode 100644 index 0000000..cf7be1d --- /dev/null +++ b/设计文档.md @@ -0,0 +1,255 @@ +# 电子书管理系统 + +## 用户需求分析 + +主要面向对象:我自己 + +数据需求: + +- 图书信息 +- 统计信息 +- 图书附加信息 +- 主机和存储设备信息 + +功能需求: + +- 上传并存储电子书,具有不同副本管理的功能,同时需要有历史记录功能 +- 搜索并下载电子书 +- 对电子书的进行分类管理,基本的有按照类别、作者、年份等 +- 书单功能 +- 笔记注释功能 +- 多用户功能和管理员功能 + +## 数据字典分析 + +### 数据处理 + +- 用户管理 + - 处理过程名:用户管理 + - 说明:管理员对用户信息进行基本的CRUD操作 + - 输入:CRUD请求、用户基本信息 + - 输出:D1中的用户信息记录 +- 图书管理 + - 处理过程名:图书管理 + - 说明:用户新建、修改、查询、删除图书数据 + - 输入:请求、用户身份、图书数据 + - 输出:D2图书信息 +- 存储管理 + - 处理过程名:存储管理 + - 说明:从其他处理过程中接收数据和请求,实际操作电子书在服务器上的存放 + - 输入:D2的图书编号、D1的用户身份、存取操作 + - 输出:D3存储信息 +- 上传下载管理 + - 处理过程名:上传下载管理 + - 说明:用户对指定的文档进行上传和下载 + - 输入:电子文档的文件属性数据、用户的操作请求 + - 输出:D5存取记录、存取操作 +- 笔记管理 + - 处理过程名:笔记管理 + - 说明:用户在特定的书籍上添加和查看笔记 + - 输入:用户请求、D1用户身份、D2图书编号 + - 输出:D4中的笔记记录 +- 分类信息维护 + - 处理过程名:分类信息维护 + - 说明:在添加书籍时,维护分类和作者信息,方便统计查询 + - 输入:电子文档的图书数据 + - 输出:D6、D7 + +上传一本书:首先检查用户信息和配额,增加上传记录,如果存在图书,则直接修改存储信息;如果不存在图书,则需要先新建图书,然后再写入存储,同时更新关联表信息。 + +下载一本书:检查用户权限,查询存储信息,更新下载记录 + +删除一本书:检查用户权限;如果是删除副本,直接修改存储信息;如果是删除图书,首先需要删除全部的副本,然后删除图书条目,最后删除关联表信息。 + +新建用户:直接修改用户表 + +删除用户:检查用户名下的图书和存储、书单信息,先执行删除数目的操作,然后再修改用户表 + +添加笔记:先找图书表,然后结合用户,单独写入笔记表 + +删除笔记:先找图书表,然后结合用户,单独修改笔记表 + +### 数据流 + +- 数据流名:管理数据 + + 说明:管理员验证身份,建立用户档案 + + 来源去向:管理员 -> P1 + + 数据结构: 密码+用户信息表 + +- 数据流名:用户身份 + + 说明:不同的用户身份进入的处理过程不同。 + + 来源去向:P1->P2.1 P1->P2.2 + + 数据结构: 用户信息表 + +- 数据流名:查询请求 + + 说明:通过书名和类别查询库中的图书 + + 来源去向:用户 -> P2.1 + + 数据结构: 类别/书名,图书信息表 + +- 数据流名:图书数据 + + 说明:根据电子文档对应的图书情况新建图书记录 + + 来源去向:图书 -> P2.1,图书 -> P2.3 + + 数据结构: 图书信息表 + +- 数据流名:文件数据 + + 说明:上传文件时,需要提供文件的属性 + + 来源去向:电子文档 -> P3 + + 数据结构: 文件属性表 + +- 数据流名:存取情况 + + 说明:提供存取操作的数据封装,完成实际的数据存取 + + 来源去向:P3 -> P2.2 + + 数据结构: 存取操作结构 + +- 数据流名:图书编号 + + 说明:通过图书编号来识别和每种图书相关的数据 + + 来源去向:P2.1->P4, P2.1->P2.2 + + 数据结构: 类别/书名,图书信息表 + +- 数据流名:笔记请求 + + 说明:通过图书编号发起添加或者查看笔记的请求。 + + 来源去向:用户 -> P4 + + 数据结构: 图书编号,笔记信息 + +### 数据存储 + +- 数据存储名:用户信息 + + 说明:存放注册用户的相关信息,邮箱需要唯一 + + 编号:D1 + + 组成:用户编号,用户名,用户邮箱,用户密码,用户空间占用,用户配额,注册日期 + + 数据量:不多于10条 + + 存取频度:每天100次 + + 存取方式:随机检索为主 + +- 数据存储名:图书信息 + + 说明:电子书的出版相关的信息,ISBN唯一,不包括实际的电子书文档信息 + + 编号:D2 + + 组成:编号,ISBN,出版社,类型,作者,日期,语言 + + 数据量:500条左右 + + 存取频度:每天200次 + + 存取方式:随机检索和更新 + +- 数据存储名:存储信息 + + 说明:电子书文档的相关数据,和图书信息密切相关 + + 编号:D3 + + 组成:对应图书的编号,副本编号,资源URL,大小,日期 + + 数据量:800条左右 + + 存取频度:每天300次 + + 存取方式:随机检索为主 + +- 数据存储名:笔记信息 + + 说明:读者对图书发表的笔记和注解 + + 编号:D4 + + 组成:图书编号,用户编号,日期,内容 + + 数据量:1600条左右 + + 存取频度:每天300次 + + 存取方式:随机检索和插入 + +- 数据存储名:存取记录 + + 说明:记录电子书文档的上传、下载和删除,方便统计和故障查询 + + 编号:D5 + + 组成:图书副本编号,用户编号,操作类型,日期 + + 数据量:2000条左右 + + 存取频度:每天300次 + + 存取方式:主要是按照时间顺序插入,有时会有全表统计查询 + +- 数据存储名:类型信息 + + 说明:记录图书的类型,方便统计和查询 + + 编号:D6 + + 组成:类型编号,类型名称 + + 数据量:200条左右 + + 存取频度:每天100次 + + 存取方式:随机CRUD + +- 数据存储名:作者信息 + + 说明:记录图书的作者,方便统计和查询 + + 编号:D7 + + 组成:作者编号,作者姓名 + + 数据量:200条左右 + + 存取频度:每天100次 + + 存取方式:随机CRUS + +## 概念结构设计 + +### 实体分析 + +实体:管理员、用户、图书、文件、笔记、类型、作者 + +语义描述: + +1. 一个系统里面有多个相互独立的用户,用户拥有多个图书,图书可以对应多个版本的文件,图书可以有多个笔记。一个文件只能对应一本图书。 +2. 系统只有一个管理员,管理员不是用户,只有操作用户账户的权限,不具有对其他信息进行操作的权限。 +3. 一个用户只能管理自己所拥有的图书、文件和笔记 +4. 用户有存储空间配额的限制,上传的文件不能超过配额。 +5. 一本图书可以被分到多个类别里面,一个类里面有多本书;一本书可以有多个作者,一个作者可以写多本书 + +### E-R图 + +### 转换关系 +