> # ♻️ 资源
> **大小:** 24.8MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010289**](https://www.yuque.com/sxbn/ks/100010289)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87354522**](https://download.csdn.net/download/s1t16/87354522)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 数据管理系统作业——Bookstore 实验报告
## 一. 实验要求
实现一个提供网上购书功能的网站后端。
网站支持书商在上面开商店,购买者可能通过网站购买。
买家和卖家都可以注册自己的账号。
一个卖家可以开一个或多个网上商店, 买家可以为自已的账户充值,在任意商店购买图书。
支持下单-> 付款-> 发货-> 收货,流程。
1.实现对应接口的功能,见 doc 下面的.md 文件描述 (60% 分数)
其中包括:
1)用户权限接口,如注册、登录、登出、注销
2)买家用户接口,如充值、下单、付款
3)卖家用户接口,如创建店铺、填加书籍信息及描述、增加库存
通过对应的功能测试,所有 test case 都 pass
测试下单及付款两个接口的性能(最好分离负载生成和后端),测出支持的每分钟交易数,延迟等
2.为项目添加其它功能 :(40% 分数)
1)实现后续的流程
发货 -> 收货
2)搜索图书
用户可以通过关键字搜索,参数化的搜索方式; 如搜索范围包括,题目,标签,目录,内容;全站搜索或是当前店铺搜索。 如果显示结果较大,需要分页 (使用全文索引优化查找)
3)订单状态,订单查询和取消定单
用户可以查自已的历史订单,用户也可以取消订单。
取消定单(可选项,加分 +5~10),买家主动地取消定单,如果买家下单经过一段时间超时后,如果买家未付款,定单也会自动取消。
## 二 .项目运行
项目运行前需要先对数据库进行初始化。
在 MongoDB 中建立名为 bookstore 的数据库。然后在其中建立两个文档集,文档集名称分别为 book 和 history_order,并按照下述 3.5.4 中 MongoDB 的部分建立索引。
PostgreSQL 数据库的初始化已在 store.py 中建立好,无需手动建立。
然后输入以下语句运行项目。
```python
python app.py
```
或根据七.项目上云中的步骤使用云端数据库运行项目。
## 三.数据库设计
### 3.1 总体设计理念
下述设计基于以下合理假设,
1. 用户会频繁下单和付款及取消
2. 用户会经常犯错但一般不会故意犯错
3. 相对于卖家来说,买家的数量更多且权益应受到保护
4. 用户在搜索时对书籍并不了解
为了保证系统功能,并且尽量提高系统的性能,本项目 ER 图及数据库设计如下所示。
数据库的优化设计在 3.5 小节。
### 3.2 ER 图
![c7afe69549b90d42536db68a39f2ad0c.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739077753-42532a61-917c-45d5-9e40-d0929f5ece87.png#averageHue=%23fefefe&clientId=u88528b80-31db-4&from=paste&height=957&id=u8a781bfa&originHeight=1196&originWidth=1802&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=371455&status=done&style=none&taskId=u46a1a43c-91b7-43d6-8486-0ee56a1158a&title=&width=1441.6)
### 3.3 关系数据库
项目中大部分内容存储在 Postsql 关系数据库中。下面将先对关系数据库进行介绍。
经过多次测试,添加了外键、唯一、非空等约束之后的数据库性能大幅降低。所以在程序运行过程中,用代码及错误处理来保证数据库中数据的正确性及合理性。而对于数据库本身不显式添加约束。这样做可以保证数据库的高性能。
![068595cdc3eccf66c5edd910d7715404.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739097917-04d66134-a811-4f22-9ed3-4f8dc824c0d0.png#averageHue=%23f3f3f2&clientId=u88528b80-31db-4&from=paste&height=277&id=u02d1cf15&originHeight=346&originWidth=842&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=154029&status=done&style=none&taskId=u0b097d2a-725c-442a-9d03-13cbbe42c06&title=&width=673.6)
#### 3.3.1 users table
- **设计思路**
users 表用于存储用户实体类及其属性。表中每一行对应一个用户,记录了其基本属性。
- **表格结构**
![54a349070e48bafa26ad8fe9479d46f4.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739124054-4abfe9b2-539c-4a84-8039-0b6e4c3ab005.png#averageHue=%23faf8f6&clientId=u88528b80-31db-4&from=paste&height=117&id=u75aacea2&originHeight=146&originWidth=513&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=20063&status=done&style=none&taskId=u891c1403-219b-4002-a5e0-1fa2be03dc7&title=&width=410.4)![82d55bd7f193b8b9fd2a76e1e417d0f2.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739124124-437be151-f215-4d29-9464-1a208004506c.png#averageHue=%23f4f4f3&clientId=u88528b80-31db-4&from=paste&height=258&id=u99aa7b49&originHeight=322&originWidth=770&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=122832&status=done&style=none&taskId=ue0f9925a-af50-4f6f-9810-a091cea7192&title=&width=616)
**user_id**:string 类型,是本表唯一的主键。用于记录用户名。
**password**:string 类型。用于记录用户密码的暗文。为了安全性考虑,数据库不存储明文密码。
**balance**:integer 类型,初始值为 0。用于记录用户账户内的金额。
**token**:string 类型。用于记录登录时用户名、时间和终端号生成的标记。在进行重要操作时,需要检查本属性以确定消息来自同一终端。
**terminal**:string 类型。用于记录登录时终端号。
#### 3.3.2 user_store table
- **设计思路**
user_store 表用于存储商店实体类以及开店联系类。表中每一行为一家店。
- **表格结构**
![5f82028c23b65058bd1627671393bd52.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739159505-3a6445dd-fa8a-4277-9c9e-71ba22fe82c0.png#averageHue=%23f2f2f1&clientId=u88528b80-31db-4&from=paste&height=190&id=ue89114df&originHeight=238&originWidth=736&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=89539&status=done&style=none&taskId=u9a254bbf-ec58-4e60-8ec7-95c6b052f6b&title=&width=588.8)![5c02ed45409294f1fcf28de6617c7082.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739159528-8f1ab657-fa14-4aa9-97fc-69e538e29e93.png#averageHue=%23faf8f6&clientId=u88528b80-31db-4&from=paste&height=117&id=u90079f8b&originHeight=146&originWidth=246&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=7659&status=done&style=none&taskId=u484d6d46-1062-4753-be33-59d8cda2a79&title=&width=196.8)
**user_id**:string 类型。用于记录商店的店主的用户名。
**store_id**:string 类型,是本表的主键。用于记录商店名。
#### 3.3.3 store table
- **设计思路**
本表用于存储书店的库存信息,表中每行代表一本书在一家商店的库存信息。
- **表格结构**
![f7a5c4856f6ede24fc24a39748783e90.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1708739192199-6303be53-a37a-436e-98c2-163239de417e.png#averageHue=%23f2f2f1&clientId=u88528b80-31db-4&from=paste&height=234&id=u524cb7da&originHeight=292&originWidth=806&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=115019&status=done&style=none&taskId=u10bebabc-a1aa-4114-96ed-aba46bae9e1&title=&width=644.8)![6a56ffc66d1e654da1da69fad1ff5e73.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/170
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010289 实现一个提供网上购书功能的网站后端。 网站支持书商在上面开商店,购买者可能通过网站购买。 买家和卖家都可以注册自己的账号。 一个卖家可以开一个或多个网上商店, 买家可以为自已的账户充值,在任意商店购买图书。 支持下单-> 付款-> 发货-> 收货,流程。 其中包括: 1)用户权限接口,如注册、登录、登出、注销 2)买家用户接口,如充值、下单、付款 3)卖家用户接口,如创建店铺、填加书籍信息及描述、增加库存 通过对应的功能测试,所有 test case 都 pass 测试下单及付款两个接口的性能,测出支持的每分钟交易数,延迟等 4)实现后续的流程 发货 -> 收货 5)搜索图书 用户可以通过关键字搜索,参数化的搜索方式; 如搜索范围包括,题目,标签,目录,内容;全站搜索或是当前店铺搜索。 如果显示结果较大,需要分页 (使用全文索引优化查找) 6)订单状态,订单查询和取消定单 用户可以查自已的历史订单,用户也可以取消订单。
资源推荐
资源详情
资源评论
收起资源包目录
基于Python+MongoDB 实现(Web)当代数据管理系统(网上书城)【100010289】 (113个子文件)
book.db 3.18MB
.DS_Store 6KB
.DS_Store 6KB
.DS_Store 6KB
LICENSE 1KB
README.md 58KB
LICENSE.md 34KB
report.md 11KB
auth.md 4KB
seller.md 3KB
report_3.md 3KB
dbmodify.md 2KB
buyer.md 2KB
explain.md 2KB
advanced-design.md 517B
progress.md 470B
order.md 371B
test.md 28B
bench.md 26B
Bookstore.pdf 8MB
bookstore实验报告.pdf 5.98MB
math.png 1.52MB
stats-cover.png 1.52MB
auto-cancel-3.png 582KB
aliyun-rds.png 555KB
book-index.png 409KB
history-order-index.png 378KB
BookstoreER.png 363KB
test- result.png 354KB
test-result-final.png 320KB
aliyunRDS-status.png 302KB
bench.png 272KB
test-result-part.png 256KB
git-status-improve.png 247KB
circle.png 240KB
git-status-modification.png 219KB
aliyun-mongoDB.png 192KB
auto-cancel-1.png 185KB
UHost-1.png 184KB
7.png 167KB
1.png 150KB
5.png 133KB
auto-cancel-2.png 125KB
2.png 120KB
6.png 117KB
4.png 112KB
UHost-2.png 105KB
3.png 87KB
ocr-result2.png 67KB
return.png 67KB
mongodb.png 49KB
mongodb_preview.png 46KB
ocr-procedure.png 45KB
textrank.png 45KB
ssocr.png 32KB
new-order-table.png 22KB
inverted-index-table-structure.png 21KB
user-table.png 20KB
coverage-test1.png 19KB
store-table.png 17KB
ocr-res-stats.png 15KB
coverage-test2.png 15KB
new-order-detail.png 13KB
user-store-table.png 7KB
scraper.py 16KB
test_order.py 14KB
buyer.py 13KB
user.py 10KB
seller.py 9KB
workload.py 7KB
ocr.py 5KB
buyer.py 4KB
buyer.py 4KB
store.py 3KB
seller.py 3KB
book.py 3KB
auth.py 3KB
auth.py 2KB
test_payment.py 2KB
seller.py 2KB
order.py 2KB
gen_book_data.py 2KB
session.py 2KB
nlp.py 2KB
test_new_order.py 2KB
error.py 2KB
test_add_stock_level.py 2KB
test_add_book.py 2KB
test_password.py 2KB
serve.py 2KB
test_register.py 1KB
db_conn.py 1KB
times.py 1KB
test_login.py 1KB
test_add_funds.py 841B
test_create_store.py 839B
setup.py 637B
conftest.py 587B
new_buyer.py 499B
run.py 377B
共 113 条
- 1
- 2
神仙别闹
- 粉丝: 2671
- 资源: 7640
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页