# 本 科 生 课 程 设 计
| 题 目 | 某书店书刊出租和零售管理系统 |
| -------- | ---------------------------- |
| 课 程 名 | 数据库系统与信息管理 |
| 任课教师 | 吴成恩 |
| 学 院 | 软件学院 |
| 专 业 | 软件工程 |
| 学生姓名 | 陈枕熙 |
| 学 号 | 2018141463009 |
# 一、系统介绍
## 1.1 系统简介
本次课程设计我所选的题目是《某书店书刊出租和零售管理系统》,该系统实现了对客户信息、书刊信息的管理,以及借阅、归还、零售等行为的记录与管理。本系统采用了 B/S 架构,采取前后端分离的开发方式,前端主要采用 Vue.js 作为开发框架,而后端则采用 Django 作为 Web 框架,数据库方面,本项目采用了 MySQL 作用数据库管理系统。
## 1.2 功能性需求
### 1.2.1 存储书刊信息
该系统需要提供存储书刊信息的功能,应该存储的书刊信息主要有,书刊的
ISBN、书名、作者、售价、类别。
### 1.2.2 查询商品库存
该系统需要提供商品库存查询功能,显示每种书籍与刊物的库存情况。
### 1.2.3 顾客信息登记
该系统需要为新顾客登记信息,诸如其 ID、姓名、住址等。
### 1.2.4 零售信息记录
该系统需要记录书店的零售信息,主要包括每个订单的订单号、交易时间、工作人员、顾客、金额以及所购买的图书。
### 1.2.5 库存管理功能
该系统需要提供对库存进行管理的功能,主要为商品进货,需要为现有商品添加库存。
### 1.2.6 零售信息查询
该系统需要提供零售信息记录的查询功能,并支持根据客户姓名来搜索交易记录。
### 1.2.7 借阅信息记录
该系统需要提供客户借阅图书的相关记录,包括借阅图书的客户信息、借阅的时间、应还的时间以及登记的工作人员信息。
### 1.2.8 归还信息记录
当客户归还所借阅的图书或期刊后,该系统应该支持工作人员标记用户归还了这本图书,并记录用户归还书刊的时间。
### 1.2.9 借阅信息查询
该系统需要提供给工作人员查询图书借阅信息的能力,应支持按照顾客姓名进行搜索。
### 1.2.10 图书销售情况查询
该系统需要提供图书在一段时间内的销售情况以及借阅情况,以便管理人员判断是否需要增加进货量。应支持按照指定时间进行统计。
# 二、数据库相关
## 2.1 数据需求
该项目的 E-R 图如下图所示:

图 2-1 E-R 图
## 2.2 关系模型
### 2.2.1 book 表
本项目通过 book 表来记录书刊的基本信息以及库存、售价等信息。
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | ------ | ------- | ---- | ----------- | ---- | ---- |
| 1 | ISBN | varchar | 20 | 书籍的 ISBN | | √ |
| 2 | title | varchar | 30 | 书名 | | |
| 3 | author | varchar | 30 | 作者 | | |
| 4 | type | tinyint | 1 | 类别 | | |
| 5 | number | int | 11 | 库存 | | |
| 6 | price | float | | 价格 | | |
### 2.2.2 customer 表
本项目通过 customer 表来记录各个注册客户的基本信息。
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | ------- | ------- | ---- | -------- | ---- | ---- |
| 1 | cid | int | 11 | 客户 ID | | √ |
| 2 | name | varchar | 12 | 客户姓名 | | |
| 3 | address | varchar | 50 | 客户地址 | √ | |
### 2.2.3 operator 表
本项目通过 operator 表来记录工作人员账号的相关信息。
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | -------- | ------- | ---- | ---------- | ---- | ---- |
| 1 | username | varchar | 12 | 操作员 ID | | √ |
| 2 | password | varchar | 30 | 密码 | | |
| 3 | name | varchar | 10 | 操作员姓名 | | |
### 2.2.4 order 表
本项目通过 order 表来记录书刊零售订单,该表格仅记录订单基本信息,每个订单具体交易了哪些书将通过 sell 表来记录
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | ---------- | -------- | ---- | --------- | ---- | ---- |
| 1 | OrderID | varchar | 20 | 订单号 | | √ |
| 2 | OperatorID | varchar | 12 | 操作员 ID | | |
| 3 | amount | float | | 订单金额 | | |
| 4 | cid | int | 11 | 顾客 ID | | |
| 5 | time | datetime | | 交易时间 | | |
### 2.2.5 rent 表
本项目通过 rent 表来记录书刊借阅的相关情况。
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | ----------- | -------- | ---- | --------- | ---- | ---- |
| 1 | OrderID | varchar | 20 | 订单号 | | √ |
| 2 | OperatorID | varchar | 12 | 操作员 ID | | |
| 3 | ISBN | varchar | 20 | 书本 ISBN | | |
| 4 | cid | int | 11 | 顾客 ID | | |
| 5 | rent_time | datetime | | 借出时间 | | |
| 6 | due_date | date | | 应还时间 | | |
| 7 | Return_date | date | | 归还时间 | √ | |
### 2.2.6 sell 表
本项目通过 sell 表来记录不同零售订单具体销售了哪些书刊。一个订单号可以对应多个不同的 ISBN,因此,我们需要另外新建一个自增列来作为主键。
| | 列名 | 类型 | 长度 | 备注 | 可空 | 主键 |
| - | ------- | ------- | ---- | -------------- | ---- | ---- |
| 1 | key | int | 255 | 自增以充当主键 | | √ |
| 2 | OrderID | varchar | 20 | 订单号 | | |
| 3 | ISBN | varchar | 20 | 书本 ISBN | | |
## 2.3 函数依赖
在上一节中,列出了本项目的数据库表结构。而这一节中,我将对这些表结构的函数依赖进行分析,并分析这些表结构的设计是否符合 3NF 的要求。
### 2.3.1 book 表
首先,我们给出 book 表的函数依赖如下:
ISBN→author, title, type, number, price
由于 ISBN 是 book 表的主键,由此我们不难看出,book 表显然符合 3NF 的要求。
### 2.3.2 customer 表
接下来我们对 customer 表进行分析,customer 表的函数依赖如下:
cid→name, address
由于 cid 是 customer 表的主键,因此,customer 表也符合 3NF 的要求。
### 2.3.3 operator 表
接下来我们对 operator 表进行分析,operator 表的函数依赖如下:
username→password, name
username 是 operator 表的主键,因此 operator 表也符合 3NF 的要求。
### 2.3.4 order 表
接下来我们对 order 表进行分析,order 表的函数依赖如下:
OrderID→OperatorID, amount, cid, time
OrderID 是 order 表的主键,故 order 表也符合 3NF 的要求。
### 2.3.5 rent 表
我们给出 rent 表的函数依赖如下:
OrderID→OperatorID, ISBN, rent_time, due_date, return_date
OrderID 是 rent 表的主键,因此 rent 表也符合 3NF 的要求。
### 2.3.6 sell 表
我们给出 sell 表的函数依赖如下:
key→OrderID, ISBN
由于 key 是 sell 表的主键,因此 sell 表也符合 3NF 的要求。
# 三、系统开发
## 3.1 系统结构介绍
该系统采用的是 B/S 架构,即浏览器/服务器架构,其中,前端部分通过 Vue.js 框架进行开发,而后端部分通过 Django 框架进行开发,服务器的搭建方面则选用了 Nginx 和 UWSGI 进行配合。
虽然本项目所采用的后端 Web 框架 Django 是 MVC �

神仙别闹
- 粉丝: 4946
- 资源: 7621
最新资源
- Unity 从零开始的框架搭建1-6 读Excel配置表自动生成json和数据结构类
- SIM900A开发工具包
- 三菱PLC FX5U轴FB块:高效ST语言编程,实现原点复归、点动与定位运动的多轴重复控制,三菱PLC FX5U轴FB块:高效ST语言编程,实现原点复归、点动与定位运动的多轴重复控制,基于plc的小区
- 三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程模板,多轴重复使用,高效省时编程解决方
- 虚拟串口开发工具包软件包
- 三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,小型三相光伏
- 三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程模板,多轴重复使用,高效省时编程解决方
- 三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,基于深度强化
- 主成分分析算法函数,用于对输入信号强度进行排序
- kuroshiro.js
- 三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,三菱PLC FX5U轴FB块:原点复归、点动与定位运动的ST语言编程,多轴重复使用高效省时 ,MATLAB
- 简易线谱提取matlab程序
- anaconda安装配置教程
- 虚拟时反近场聚焦波束形成matlab仿真程序
- DeepSeek+DeepResearch 让科研像聊天一样简单
- 继电器术语解释及使用指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


