这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/1082 |
团队名称 | 旺宝的家 |
这个作业的目标 | 项目系统设计与数据库设计 |
作业正文 | 如下 |
其他参考文献 | www.baidu.com |
一、团队项目的预期开发计划时间安排
此表仅为设计计划,具体进度以最终完成效果为准
日期 | 目标 |
---|---|
6.14 | 分配工作开始行动 |
6.14-6.21 | 完成商城前台前端 |
6.21-6.25 | 完成商城前台后端 |
6.26-7.1 | 完成商城后台前端 |
7.2-7.4 | 完成商城后台后端 |
7.5 | 软件测试 |
二、团队项目的预期开发计划分工安排
序号 | 组员姓名 | 在整个项目中的职责 |
---|---|---|
1 | 陈勇 | 项目经理 |
2 | 何明波 | 前端 |
3 | 郑康 | 前端 |
4 | 常林 | 项目经理 |
5 | 阳晨 | 后端 |
6 | 张顺 | 后端 |
7 | 黄涛 | 后端 |
三、图设
(一)体系结构设计+功能模块层次图
(二)设计类图
(三)ER分析+表结构设计
系统管理员表(wb_Admin):管理系统管理员账号和密码的表,主要属性有:用户名和密码。系统管理员根据用户名密码登陆后台系统。
系统管理员表
表名:wb_Admin | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
AdminID | varchar | 32 | 主键 | 管理员ID | 非空 |
Password | varchar | 32 | 无 | 管理员密码 | 非空 |
会员区域表(wb_Area):网站会员购物地点,主要属性有:AreaID,AreaKM。
系统可以根据会员区域表收取会员需要运输商品的运输费。
会员区域表
表名:wb_Area | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
AreaID | varchar | 50 | 主键 | 区域ID | 非空 |
AreaKM | varchar | 50 | 无 | 送货距离 | 无 |
会员购物信息表(wb_BuyInfor):会员购物信息统计表,主要属性有:BuyID,
GoodsID,Num,SumPrice,MemberID。
会员购物信息表
表名:wb_BuyInfor | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
BuyID | varchar | 50 | 主键 | 购物单号 | 非空 |
GoodsID | varchar | 50 | 无 | 商品ID | 无 |
Num | int | 32 | 无 | 商品数量 | 无 |
OrderID | varchar | 50 | 无 | 订单号 | 无 |
SumPrice | varchar | 50 | 无 | 总价格 | 无 |
MemberID | varchar | 50 | 外键 | 会员ID | 无 |
商品类别表(tb_Class):商品类别显示表,主要属性有:ClassID,CategoryUrl。
主要管理所有商品种类及其简易图标。
商品类别表
表名:wb_Class | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
ClassID | varchar | 50 | 主键 | 商品种类ID | 非空 |
CategoryUrl | varchar | 50 | 无 | 商品标识图标 | 无 |
商品信息表(wb_GoodsInfo):商品信息表主要负责存储商品名称,商品类别,商品图标,商品图片,商品价格,商品重量等信息。主要属性有:GoodsID,ClassID,GoodsIntroduce,GoodsBrand,GoodsUnit,GoodsWeight,GoodsUrl,MarketPrice,MemberPrice,Isrefinement,IsHot,AddDate,IsDiscount。
商品信息表
表名:wb_GoodsInfo | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
GoodsID | varchar | 50 | 主键 | 商品名称 | 非空 |
ClassID | varchar | 50 | 外键 | 商品类别 | 非空 |
GoodsIntroduce | Text | 250 | 无 | 商品介绍 | 无 |
GoodsBrand | varchar | 50 | 无 | 商品品牌 | 无 |
GoodsUnit | varchar | 50 | 无 | 商品计数单位 | 无 |
GoodsWeight | float | 16 | 无 | 商品重量 | 无 |
GoodsUrl | varchar | 50 | 无 | 商品图片地址 | 无 |
MarketPrice | float | 16 | 无 | 商品市场价格 | 无 |
MemberPrice | float | 16 | 无 | 商品会员价格 | 无 |
Isrefinement | bool | 1 | 无 | 是否精品 | 无 |
IsHot | bool | 1 | 无 | 是否热销 | 无 |
AddDate | datatime | 32 | 无 | 上传日期 | 无 |
IsDiscount | bool | 1 | 无 | 是否特价 | 无 |
商品图片表(wb_Image):商品图片表,主要用来存储商品的图片,主要属性有:ImageID,ImageName,ImageUrl。
商品图片表
表名:wb_Image | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
ImageID | varchar | 50 | 主键 | 商品图片ID | 非空 |
ImageName | varchar | 50 | 无 | 商品图片名称 | 无 |
ImageUrl | varchar | 50 | 无 | 商品图片地址 | 无 |
会员信息表(wb_Member):会员信息表,主要用来存储会员的一些基本信息,如会员ID,会员性别,会员密码,会员真实名字,会员联系方式(电话号码。E_mail,所在城市,家庭住址,邮政编码等),现有RMB,上一次登陆时间。主要属性有:MemberID,Sex,Password,TrueName,Phonecode,Emails,City,Address,PostCode,AdvancePayment,LoadDate。
会员信息表
表名:wb_Members | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
MemberID | varchar | 50 | 主键 | 会员ID | 非空 |
Sex | bit | 1 | 无 | 会员性别 | 无 |
Password | varchar | 50 | 无 | 会员密码 | 无 |
TrueName | varchar | 50 | 无 | 会员真实名字 | 无 |
Phonecode | varchar | 50 | 无 | 电话号码 | 无 |
Emails | varchar | 50 | 无 | 无 | |
City | varchar | 50 | 无 | 所在城市 | 无 |
Address | varchar | 200 | 无 | 地址 | 无 |
PostCode | varchar | 10 | 无 | 邮编号码 | 无 |
AdvancePayment | varchar | 50 | 无 | 现有存款 | 无 |
LoadDate | datetime | 32 | 无 | 上次登录时间 | 无 |
订单信息表(tb_OrderInfo):订单信息表主要用来存储会员每次订单信息,主要属性有:OrderID,OrderDate,GoodsFee,TotalPrice,ShipFee,ShipType,PayType,MemberID,ReceiverName,ReceiverPhone,IsConfirm,IsPayment,IsConsignment,IsPigeonhole,ReceiverPostCode,ReceiverAddress,ReceiverEmails。
订单信息表
表名:wb_OrderInfo | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
OrderID | varchar | 50 | 主键 | 订单ID | 非空 |
OrderDate | Datetime | 32 | 无 | 订单提交日期 | 无 |
GoodsFee | varchar | 50 | 无 | 商品价格 | 无 |
TotalPrice | varchar | 50 | 无 | 商品总费用 | 无 |
ShipFee | varchar | 50 | 无 | 运输费 | 无 |
ShipType | varchar | 50 | 无 | 运输方式 | 无 |
PayType | varchar | 50 | 无 | 付款方式 | 无 |
MemberID | varchar | 200 | 无 | 会员ID | 无 |
ReceiverName | varchar | 50 | 无 | 接收人名字 | 无 |
ReceiverPhone | varchar | 50 | 无 | 接收人电话 | 无 |
IsConfirm | bit | 1 | 无 | 是否确认 | 无 |
IsPayment | bit | 1 | 无 | 是否付款 | 无 |
IsConsignment | bit | 1 | 无 | 是否托付商品 | 无 |
IsPigeonhole | bit | 1 | 无 | 是否托运 | 无 |
ReceiverPostCode | Char | 10 | 无 | 接收人邮编 | 无 |
ReceiverAddress | Varchar | 200 | 无 | 接收人名地址 | 无 |
ReceiverEmails | Varchar | 50 | 无 | 接收人邮件 | 无 |
付款方式表(wb_PayType):付款方式表主要存储会员的付款方式,主要属性有:PayID,PayWay。
付款方式表
表名:wb_PayType | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
PayID | varchar | 50 | 主键 | 付款ID | 非空 |
PayWay | varchar | 50 | 无 | 付款方式 | 无 |
邮寄方式表(wb_ShipType):邮寄方式表,主要负责存储商品发送的方式。比如:邮寄,快递。主要属性有:ShipID,ShipWay,ShipFee,ClassID。
邮寄方式表
表名:wb_ShipType | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
ShipID | varchar | 50 | 主键 | 邮寄ID | 非空 |
ShipWay | varchar | 50 | 无 | 邮寄方式 | 无 |
ShipFee | varchar | 50 | 无 | 邮寄费用 | 非空 |
ClassID | varchar | 50 | 外键 | 商品类别 | 非空 |
购物车信息表(wb_ShopCart):购物车信息表,主要负责存储会员临时性添加的一些商品,主要属性有:CartID,GoodsID,Num,MemberPrice,MarketPrice,MemberID,GoodsWeight。
购物车信息表
表名:wb_ ShopCart | |||||
---|---|---|---|---|---|
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
CartID | varchar | 50 | 主键 | 邮寄ID | 非空 |
GoodsID | varchar | 50 | 外键 | 邮寄方式 | 非空 |
Num | int | 50 | 无 | 购买数量 | 非空 |
MemberPrice | float | 50 | 无 | 会员价格 | 非空 |
MarketPrice | float | 16 | 无 | 市场价格 | 非空 |
MemberID | varchar | 50 | 外键 | 会员ID | 非空 |
GoodsWeight | float | 16 | 无 | 商品重量 | 非空 |
(四)系统安全和权限设计
迄今为止最为普及的权限设计模型是RBAC模型,基于角色的访问控制(Role-Based Access Control)
这是权限最基础也是最核心的模型,它包括用户/角色/权限,其中用户和角色是多对多的关系,角色和权限也是多对多的关系。
用户是发起操作的主体,按类型分可分为2B和2C用户,可以是后台管理系统的用户,可以是OA系统的内部员工,也可以是面向C端的用户,比如阿里云的用户。
角色起到了桥梁的作用,连接了用户和权限的关系,每个角色可以关联多个权限,同时一个用户关联多个角色,那么这个用户就有了多个角色的多个权限。有人会问了为什么用户不直接关联权限呢?在用户基数小的系统,比如20个人的小系统,管理员可以直接把用户和权限关联,工作量并不大,选择一个用户勾选下需要的权限就完事了。但是在实际企业系统中,用户基数比较大,其中很多人的权限都是一样的,就是个普通访问权限,如果管理员给100人甚至更多授权,工作量巨大。这就引入了"角色(Role)"概念,一个角色可以与多个用户关联,管理员只需要把该角色赋予用户,那么用户就有了该角色下的所有权限,这样设计既提升了效率,也有很大的拓展性。
权限是用户可以访问的资源,包括页面权限,操作权限,数据权限:
页面权限: 即用户登录系统可以看到的页面,由菜单来控制,菜单包括一级菜单和二级菜单,只要用户有一级和二级菜单的权限,那么用户就可以访问页面
操作权限: 即页面的功能按钮,包括查看,新增,修改,删除,审核等,用户点击删除按钮时,后台会校验用户角色下的所有权限是否包含该删除权限,如果是,就可以进行下一步操作,反之提示无权限。有的系统要求"可见即可操作",意思是如果页面上能够看到操作按钮,那么用户就可以操作,要实现此需求,这里就需要前端来配合,前端开发把用户的权限信息缓存,在页面判断用户是否包含此权限,如果有,就显示该按钮,如果没有,就隐藏该按钮。某种程度上提升了用户体验,但是在实际场景可自行选择是否需要这样做
数据权限: 数据权限就是用户在同一页面看到的数据是不同的,比如财务部只能看到其部门下的用户数据,采购部只看采购部的数据,在一些大型的公司,全国有很多城市和分公司,比如杭州用户登录系统只能看到杭州的数据,上海用户只能看到上海的数据,解决方案一般是把数据和具体的组织架构关联起来,举个例子,再给用户授权的时候,用户选择某个角色同时绑定组织如财务部或者合肥分公司,那么该用户就有了该角色下财务部或合肥分公司下的的数据权限。
四、工作流程、组员分工、组员贡献度比例
序号 | 组员姓名 | 在整个项目中的职责 | 在本次任务中的职责 | 本次任务的贡献度 | |
---|---|---|---|---|---|
1 | 陈勇 | 项目经理 | 分配工作 | 10% | |
2 | 何明波 | 前端 | 完成博客、github | 25% | |
3 | 郑康 | 前端 | 画类图 | 12% | |
4 | 常林 | 项目经理 | 查找资料 | 10% | |
5 | 阳晨 | 后端 | 系统说明书 | 13% | |
6 | 张顺 | 后端 | 完成e-r图和表 | 20% | |
7 | 黄涛 | 后端 | 查找资料 | 10% |
五、GitHub链接
https://github.com/hmbbbbbb/txjg