From 2541ab21ca9c788544dfaf9eb8db240832420331 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=A4=8F=E6=84=8F=E6=99=A8?= <51275903027@stu.ecnu.edu.cn>
Date: Thu, 21 Nov 2024 12:34:04 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=96=87=E4=BB=B6=E8=87=B3?=
=?UTF-8?q?=20'AllStuRead/project2=5F1'?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
AllStuRead/project2_1/第二次大作业说明.md | 146 ++++++++++++++++++++++
1 file changed, 146 insertions(+)
create mode 100644 AllStuRead/project2_1/第二次大作业说明.md
diff --git a/AllStuRead/project2_1/第二次大作业说明.md b/AllStuRead/project2_1/第二次大作业说明.md
new file mode 100644
index 0000000..6b3b4c6
--- /dev/null
+++ b/AllStuRead/project2_1/第二次大作业说明.md
@@ -0,0 +1,146 @@
+# bookstore II
+
+## 功能
+
+要求完成功能同第一个大作业,还是40%和60%的功能要求。
+
+
+## bookstore目录结构
+```
+bookstore
+ |-- be 后端
+ |-- model 后端逻辑代码
+ |-- view 访问后端接口
+ |-- ....
+ |-- doc JSON API规范说明
+ |-- fe 前端访问与测试代码
+ |-- access
+ |-- bench 效率测试
+ |-- data
+ |-- book.db sqlite 数据库(book.db,较少量的测试数据)
+ |-- book_lx.db sqlite 数据库(book_lx.db, 较大量的测试数据,要从网盘下载)
+ |-- scraper.py 从豆瓣爬取的图书信息数据的代码
+ |-- test 功能性测试(包含对前60%功能的测试,不要修改已有的文件,可以提pull request或bug)
+ |-- conf.py 测试参数,修改这个文件以适应自己的需要
+ |-- conftest.py pytest初始化配置,修改这个文件以适应自己的需要
+ |-- ....
+ |-- ....
+```
+
+## 安装配置
+TODO 从 https://gitea.shuishan.net.cn/51275903093/CDMS.Xuan_ZHOU.2024Fall.DaSE/src/branch/master/project1 获取代码,并以 bookstore 文件夹为根目录打开
+
+
+
+**强调一下,尽量新建干净的环境并且使用3.6或者3.7的 Python!**
+
+安装 Python (需要 Python3.6 以上)
+
+
+进入 bookstore 文件夹下:
+
+安装依赖
+
+```powershell
+pip install -r requirements.txt
+```
+
+Linux 和 MacOS 执行测试
+```bash
+bash script/test.sh
+```
+
+Windows 执行测试参考视频:https://www.bilibili.com/video/BV1Lu4y1h7Pn/
+
+(注意:如果提示`"RuntimeError: Not running with the Werkzeug Server"`,请输入下述命令,将 flask 和 Werkzeug 的版本均降低为2.0.0。)
+
+```powershell
+ pip install flask==2.0.0
+
+ pip install Werkzeug==2.0.0
+```
+
+ bookstore/fe/data/book.db中包含测试的数据,从豆瓣网抓取的图书信息,
+ 其DDL为:
+
+ create table book
+ (
+ id TEXT primary key,
+ title TEXT,
+ author TEXT,
+ publisher TEXT,
+ original_title TEXT,
+ translator TEXT,
+ pub_year TEXT,
+ pages INTEGER,
+ price INTEGER,
+ currency_unit TEXT,
+ binding TEXT,
+ isbn TEXT,
+ author_intro TEXT,
+ book_intro text,
+ content TEXT,
+ tags TEXT,
+ picture BLOB
+ );
+
+更多的数据可以从网盘下载,下载地址为,链接:
+
+ https://pan.baidu.com/s/1bjCOW8Z5N_ClcqU54Pdt8g
+
+提取码:
+
+ hj6q
+
+这份数据同bookstore/fe/data/book.db的schema相同,但是有更多的数据(约3.5GB, 40000+行)
+
+## 要求
+
+**1人**完成下述内容:
+
+1. 允许向接口中增加或修改参数,允许修改 HTTP 方法,允许增加新的测试接口,请尽量不要修改现有接口的 url 或删除现有接口,请根据设计合理的拓展接口(加分项+2~5分)。
+ 测试程序如果有问题可以提bug (加分项,每提1个 bug +2, 提1个 pull request +5)。
+
+2. 核心数据使用关系型数据库(PostgreSQL 或 MySQL 数据库)。
+ blob 数据(如图片和大段的文字描述)可以分离出来存其它 NoSQL 数据库或文件系统。
+
+3. 对所有的接口都要写 test case,通过测试并计算代码覆盖率(有较高的覆盖率是加分项 +2~5)。
+
+4. 尽量使用正确的软件工程方法及工具,如,版本控制,测试驱动开发 (利用版本控制是加分项 +2~5)
+
+5. 后端使用技术,实现语言不限;**不要复制**这个项目上的后端代码(不是正确的实践, 减分项 -2~5)
+
+6. 不需要实现页面
+
+7. 最后评估分数时考虑以下要素:
+ 1)实现完整度,全部测试通过,效率合理
+ 2)正确地使用数据库和设计分析工具,ER图,从ER图导出关系模式,规范化,事务处理,索引等
+ 3)其它...
+
+## 报告内容
+
+1. 简述从文档型数据库到关系型数据库的改动,以及改动的理由(如提高访问速度,便于编写业务逻辑代码等)
+2. 要求中提到的点,可以适当在报告中展示
+
+3. 关系数据库设计:关系型 schema
+
+4. 对60%基础功能和40%附加功能的接口、后端逻辑、数据库操作、测试用例进行介绍,展示测试结果与测试覆盖率。
+
+5. 如果完成,可以展示本次大作业的亮点,比如要求中的“3 4”两点。
+
+注:验收依据为报告,本次大作业所作的工作要完整展示在报告中。
+
+
+## 验收与考核准测
+
+- 提交 **代码+报告** 压缩包到 **作业提交入口**
+- 命名规则:2024_ECNU_PJ2\_学号\_姓名(.zip)
+- 提交截止日期:**2024.12.12 23:59:59 **
+
+考核标准:
+
+1. 没有提交或没有实质的工作,得D
+2. 完成"要求"中的第1点,可得C
+3. 完成前3点,通过全部测试用例且有较高的测试覆盖率,可得B
+4. 完成前2点的基础上,体现出第3 4点,可得A
+5. 以上均为参考,最后等级会根据最终的工作质量有所调整
\ No newline at end of file