571
社区成员
发帖
与我相关
我的任务
分享项目背景调研
随着信息科技及互联网产业的迅速发展, 现代化社会中各行各业产生激烈的竞争, 如何提高工作效率, 降低成本, 提高生产及交易过程的现代化和自动化程度, 充分满足生产者和消费者的需求, 提供更优质的服务成为各行各业追逐的目标, 对于传统书店来说, 整个交易流程自动化程度很低, 难以满足日益增长的物质文化需求, 因此开发一套方便快捷, 高效实用且安全稳定的书店管理系统成为了传统书店的当务之急, 书店店主需要开发一套满足相关需求的书店管理系统.
书店管理系统需要满足如下需求:
店长
书籍管理: 店长可以管理书籍相关的信息.
书籍的管理操作包括书籍信息的添、删、查、改.
书籍信息包括书名、作者、存货量、销售量、进价、销售价格等.
订单管理:店长可以管理书籍订单.
订单的管理操作包括订单的添加与删除.
订单信息包括书名、需求数量等.
店长发布订单时即可以固定进货价格,也可以选择由供货商竞价.
当店长发布订单后,所有供货商将收到通知.
对于固定进货价格的订单,当订单被供货商接受后,店长会收到通知,且书籍信息中相应书籍的存货量会相应增加。若订单被所有供货商拒绝,该订单将被撤销且店长会收到通知.
对于供货商竞价的订单,店长还将设置订单有效时间。当到达订单有效时间后,出价最低的供货商将获得该订单。若无供货商出价,该订单将被撤销且店长会收到通知.
用户管理:店长可以管理顾客与供货商的账户.
账户类型包括店长、顾客和供货商三类.
顾客与供货商可以注册账户,需要通过店长的审核。店长也可以在后台手动添加账户.
顾客与供货商可以注销账户,店长也可以在后台封禁账户.
销售管理:店长可以在线销售书籍.
店长可以选择在线销售的书籍以及销售价格.
店长可以根据书店销售情况调整销售策略,如限时折扣、捆绑销售等.
顾客
书籍查询:顾客可以查询自己需要的书籍.
支持按名字、书号、类别、关键字、销量等方式查询.
能查询到的信息包括书籍的基本信息、价格、是否有货、评论等.
对查询到的书籍,顾客能够收藏自己感兴趣的书籍.
系统能自动记录顾客的浏览历史.
书籍购买:顾客可以购买所需要的书籍, 并自动创建订单.
支持填写收货信息,包括地址、姓名、电话等.
支持在线支付,包括银行卡、微信、支付宝等多种支付方式;支持货到付款.
用户提供发票抬头等信息后,就能在线开具发票.
订单管理:顾客可以查看订单的状态, 可以自主取消订单.
包括订单的支付状态,已支付、未支付等.
支持查询书籍的到货情况,支持查询书籍的预计达到时间、当前书籍位置等.
在未发货时顾客可以选择取消订单,系统自动退款;若已经发货,则顾客只能选择退货.
退货: 当顾客对到手的书籍不满意时, 可以申请退货.
顾客可以在线申请退货,需填写退款原因;待店长批准之后,顾客可以将要退的书按指定地址寄出.
店长收到顾客的退货之后,系统自动给顾客退款.
书籍评价: 顾客收到书籍后, 可以对书籍做出评价, 反馈自己的意见或建议.
评价具体包括对书籍、购买过程、快递等的按星级评价.
支持文字性的评论;支持附加图片.
支持追加评价.
供货商
订单管理: 供货商可以对店长发布的订单进行处理.
当书店发布订单时供货商会接到通知.
对于固定进货价格的订单,供货商可以选择接受或拒绝.
对于竞价的订单,供货商可以看到其他供货商所出的最低价,并可以选择出更低的价格.当订单有效时间到达后,所有参与出价的供货商均会收到竞价是否成功的通知.
业务功能需求如下:
店主业务功能需求模块划分:
顾客业务功能需求模块划分:
供货商业务功能需求模块划分:
店长用例图

顾客用例图

供货商用例图

可靠性需求
系统应当具有必要的可靠性使得系统能够较长时间无故障运行, 平均应当满足不低于7*24小时即一周的无故障运行.
可扩展性需求
系统应当具有必要的灵活性, 以适应未来功能扩展的需求.
性能需求
界面需求
系统应当提供操作友好的界面, 使用者通过一定的培训和学习可以熟练使用该系统.
开发技术
前端:HTML,JavaScript
后端:C++
其他:MySQL
账户数据表
| 字段 | 类型 | 含义 |
|---|---|---|
| ID | string | 主键, 用户唯一标识 |
| userName | string | 用户名 |
| password | string | 密码 |
| string | 邮箱 |
书籍数据表
| 字段 | 类型 | 含义 |
|---|---|---|
| ID | string | 主键, 书籍唯一标识 |
| bookName | string | 书籍名 |
| author | string | 书籍作者 |
| inventory | int | 存货量 |
| saleNum | int | 销售量 |
| bid | double | 进价 |
| price | double | 销售价格 |
店长订单数据表
| 字段 | 类型 | 含义 |
|---|---|---|
| ID | string | 主键, 订单唯一标识 |
| bookName | string | 书籍名称 |
| needNum | int | 书籍进货数量 |
| bid | double | 进货价格 |
| time | int | 订单有效时间 |
顾客订单数据表
| 字段 | 类型 | 含义 |
|---|---|---|
| ID | string | 主键, 订单唯一标识 |
| bookName | string | 书籍名称 |
| address | string | 住址 |
| name | string | 姓名 |
| phoneNumber | string | 电话号码 |
| needNum | int | 购买书籍数量 |
| status | int | 订单状态 |
| date | int | 预计到达时间 |
| position | string | 书籍当前位置 |
软件架构设计
我们选择三层机构来实现书店管理系统
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想,复杂项目不能把SQL语句直接写到程序里,不模块话,难以维护。应该采取三层架构。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得,使用js实现。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理,使用c++实现。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等,使用mysql实现。
用户层只能调用业务层,业务层只能调用数据层对数据库进行操作。公用函数供各层调用。

作者:102