You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

171 lines
5.8 KiB

1 week ago
1 week ago
1 week ago
2 weeks ago
1 week ago
1 week ago
1 week ago
1 week ago
1 week ago
2 weeks ago
  1. # bookstore
  2. > 作业内容说明和要求文档为 Project_1/README.md<br>
  3. > 作业源码目录为 Project_1/bookstore<br>
  4. ## 功能
  5. - 实现一个提供网上购书功能的网站后端。<br>
  6. - 网站支持书商在上面开商店,购买者可以通过网站购买。<br>
  7. - 买家和卖家都可以注册自己的账号。<br>
  8. - 一个卖家可以开一个或多个网上商店。
  9. - 买家可以为自已的账户充值,在任意商店购买图书。<br>
  10. - 支持 下单->付款->发货->收货 流程。<br>
  11. **1.实现对应接口的功能,见项目的 doc 文件夹下面的 .md 文件描述 (60%)<br>**
  12. 其中包括:
  13. 1)用户权限接口,如注册、登录、登出、注销<br>
  14. 2)买家用户接口,如充值、下单、付款<br>
  15. 3)卖家用户接口,如创建店铺、填加书籍信息及描述、增加库存<br>
  16. 通过对应的功能测试,所有 test case 都 pass <br>
  17. **2.为项目添加其它功能 :(40%)<br>**
  18. 1)实现后续的流程 :发货 -> 收货
  19. 2)搜索图书 <br>
  20. - 用户可以通过关键字搜索,参数化的搜索方式;
  21. - 如搜索范围包括,题目,标签,目录,内容;全站搜索或是当前店铺搜索。
  22. - 如果显示结果较大,需要分页
  23. - (使用全文索引优化查找)
  24. 3)订单状态,订单查询和取消订单<br>
  25. - 用户可以查自已的历史订单,用户也可以取消订单。<br>
  26. - 取消订单可由买家主动地取消,或者买家下单后,经过一段时间超时仍未付款,订单也会自动取消。 <br>
  27. ## bookstore目录结构
  28. ```
  29. bookstore
  30. |-- be 后端
  31. |-- model 后端逻辑代码
  32. |-- view 访问后端接口
  33. |-- ....
  34. |-- doc JSON API规范说明
  35. |-- fe 前端访问与测试代码
  36. |-- access
  37. |-- bench 效率测试
  38. |-- data
  39. |-- book.db
  40. |-- scraper.py 从豆瓣爬取的图书信息数据的代码
  41. |-- test 功能性测试(包含对前60%功能的测试,不要修改已有的文件,可以提pull request或bug)
  42. |-- conf.py 测试参数,修改这个文件以适应自己的需要
  43. |-- conftest.py pytest初始化配置,修改这个文件以适应自己的需要
  44. |-- ....
  45. |-- ....
  46. ```
  47. ## 代码仓库
  48. 从 [CDMS.Xuan_ZHOU.2024Fall.DaSE - CDMS.Xuan_ZHOU.2024Fall.DaSE - 水杉码园 (shuishan.net.cn)](https://gitea.shuishan.net.cn/51275903093/CDMS.Xuan_ZHOU.2024Fall.DaSE/src/branch/master/project1) 获取代码,并以 bookstore 文件夹为根目录打开
  49. 代码。 请大家从公共仓库 clone 到自己仓库下,然后继续作业。
  50. ## 安装配置
  51. 安装 python (需要 python3.6 以上)
  52. 进入 bookstore 文件夹下:
  53. 安装依赖
  54. ```powershell
  55. pip install -r requirements.txt
  56. ```
  57. 执行测试
  58. ```bash
  59. bash script/test.sh
  60. ```
  61. (注意:如果提示`"RuntimeError: Not running with the Werkzeug Server"`,请输入下述命令,将 flask 和 Werkzeug 的版本均降低为2.0.0。)
  62. ```powershell
  63. pip install flask==2.0.0
  64. pip install Werkzeug==2.0.0
  65. ```
  66. ## 要求
  67. 2~3人一组,做好分工,完成下述内容:
  68. 1.bookstore 文件夹是该项目的 demo,采用 Flask 后端框架与 SQLite 数据库,实现了前60%功能以及对应的测试用例代码。
  69. **要求大家创建本地 MongoDB 数据库,将`bookstore/fe/data/book.db`中的内容以合适的形式存入本地数据库,后续所有数据读写都在本地的 MongoDB 数据库中进行**
  70. bookstore/fe/data/book.db中包含测试的数据,从豆瓣网抓取的图书信息,
  71. 其DDL为:
  72. create table book
  73. (
  74. id TEXT primary key,
  75. title TEXT,
  76. author TEXT,
  77. publisher TEXT,
  78. original_title TEXT,
  79. translator TEXT,
  80. pub_year TEXT,
  81. pages INTEGER,
  82. price INTEGER,
  83. currency_unit TEXT,
  84. binding TEXT,
  85. isbn TEXT,
  86. author_intro TEXT,
  87. book_intro text,
  88. content TEXT,
  89. tags TEXT,
  90. picture BLOB
  91. );
  92. 更多的数据可以从网盘下载,下载地址为,链接:
  93. https://pan.baidu.com/s/1bjCOW8Z5N_ClcqU54Pdt8g
  94. 提取码:
  95. hj6q
  96. 这份数据同bookstore/fe/data/book.db的schema相同,但是有更多的数据(约3.5GB, 40000+行)
  97. 2.在完成前60%功能的基础上,继续实现后40%功能,要有接口、后端逻辑实现、数据库操作、代码测试。对所有接口都要写 test case,通过测试并计算测试覆盖率(尽量提高测试覆盖率)。
  98. 3.尽量使用索引,对程序与数据库执行的性能有考量
  99. 4.尽量使用 git 等版本管理工具
  100. 5.不需要实现界面,只需通过代码测试体现功能与正确性
  101. ## 报告内容
  102. 1.每位组员的学号、姓名,以及分工
  103. 2.文档数据库设计:文档 schema
  104. 3.对60%基础功能和40%附加功能的接口、后端逻辑、数据库操作、测试用例进行介绍,展示测试结果与测试覆盖率。
  105. 4.如果完成,可以展示本次大作业的亮点,比如要求中的“3 4”两点。
  106. 注:验收依据为报告,本次大作业所作的工作要完整展示在报告中。
  107. ## 验收与考核准测
  108. - 提交 **代码+报告** 压缩包到 **作业提交入口**
  109. - 命名规则:**2024_ECNU_PJ1_第几组**,如:2024_ECNU_PJ1_第1组.zip
  110. - 提交截止日期:**2024.10.31 23:59**
  111. **考核标准:**
  112. 1. 没有提交或没有实质的工作,得D
  113. 2. 完成"要求"中的第1点,可得C
  114. 3. 完成前2点,通过全部测试用例且有较高的测试覆盖率,可得B
  115. 4. 完成前2点的基础上,体现出第3 4点,可得A
  116. 5. 以上均为参考,最后等级会根据最终的工作质量有所调整