这个作业属于哪个课程 | 班级链接 |
---|---|
这个作业要求在哪里 | 团队作业第四次—项目系统设计与数据库设计 |
团队名称 | 铁华组 |
这个作业的目标 | <完成项目系统设计及数据库设计> |
作业正文 | 就是这里 |
其他参考文献 | ... |
一、团队项目的预期开发计划时间安排
时间 | 具体安排 |
---|---|
第8周(4.4-4.10) | 系统设计与数据库设计 |
第9周(4.11-4.17) | 编写数据库与实体类,初步分析所需要的接口类并且攥写相应代码 |
第10周(4.18-4.24) | 完善类操作,按照原型设计界面逐步完成前端界面 |
第11周(4.25-5.1) | 完成项目1.0版本,用户商家买卖评论等相关功能的基本实现 |
第12周(5.2-5.8) | 管理员相关的审核等功能的实现 |
第13周(5.9-5.15) | 增加模糊搜索等功能,问卷调查意见反馈 |
第14周(5.16-5.22) | 实现首页等区域推广 |
第15周(5.23-5.29) | 前端美化 |
第16周(5.30-6.5) | 测试,纠错 |
二、团队项目的预期开发计划分工安排
学号 | 具体安排 |
---|---|
081700308 | 用户端首页、搜索页、菜品评论页、商家评价页、登录页(用户、商家、管理员) |
221701140 | 用户端商家页(商家端预览页)、菜品详细信息页、店铺介绍页面、菜品信息编辑/新增页面 |
221701130 | 订单详情以及购物车相关页面、用户个人主页、商家个人主页、管理员管理页(评论、用户、商家) |
221701111 | 商家信息接口、菜品信息接口;搜索页、首页内功能模块的逻辑代码编写、过滤器 |
041701602 | 用户信息、管理员信息、评论信息接口;评论页、登录页、管理页功能模块的逻辑代码编写 |
021700915 | 代金券、订单、购物车接口、数据库建立;购物车、订单页功能模块的逻辑代码编写 |
三、各种设计相关图
结构层次图
基于原型很快就完成了功能模块层次图
类图
我们根据日常的点餐app点餐的流程提取出其中的类。并且根据了老师和助教们的建议新增和修改了部分类和关联。
首先从使用者中我们建立了用户类、商家类、管理员类,然后根据各自的用例建立其他相关的类,比如从最核心的用户点餐用例,建立了订单、订单项目、购物车三个类。
从商家使用者的角度建立了菜品,菜品预览图、菜单类。根据不同的权限我们也从管理员父类派生出了四个管理员子类。
根据评论功能建立了评论类,根据优惠券功能建立了优惠券类。
然后我们根据实际使用情况和上次答辩的建议改进了各个类之间的关联。
修改如下:
新增了购物车类、菜品类、菜品预览图类,调整了订单类、订单项目的属性以及订单类、订单项目类和用户类的关联。
现在商家对应若干菜品,一个商家的所有菜品组成该商家的菜单。
购物车类对应若干不同商家的订单,也对应若干不同的菜品。
因为一个菜品可能有多于一张图片所以新增了菜品预览图类存储菜品图片。
删除了预约类。
ER图
ER图做了相应调整。
数据流图
泳道图
表结构设计
设计了十张表,具体如下:
用户表(customer)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
学号 | studentid | varchar(8) | 否 | 否 | |
账号名 | name | varchar(20) | 否 | 否 | |
密码 | password | varchar(20) | 否 | 否 | |
积分 | point | Int | 否 | 否 | |
状态 | State | bit | 否 | 否 | 1:可用,0禁封 |
商家表(merchant)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
账号名 | name | varchar(20) | 否 | 否 | |
密码 | password | varchar(20) | 否 | 否 | |
电话 | phonenumber | varchar(11) | 否 | 否 | |
状态 | State | bit | 否 | 否 | 1:可用,0:禁封 |
管理员表(administrator)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
账号名 | name | varchar(20) | 否 | 否 | |
密码 | password | varchar(20) | 否 | 否 | |
评论管理 | commentmanage | bit | 否 | 否 | 1:可用,0:无权 |
用户管理 | usermanage | bit | 否 | 否 | 1:可用,0:无权 |
商家管理 | merchantmanage | bit | 否 | 否 | 1:可用,0:无权 |
权限管理 | privilegemanage | bit | 否 | 否 | 1:可用,0:无权 |
食物表(food)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
食物名 | name | varchar(20) | 否 | 否 | |
商家编号 | merchantid | int | 否 | 否 | 关联merchant表主键 |
简单描述 | description | varchar(255) | 否 | 是 | |
价格 | price | double | 否 | 否 | |
剩余数量 | quantity | Int | 否 | 否 |
食物图片表(foodimage)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
食物编号 | foodid | int | 否 | 否 | 关联food表主键 |
图片地址 | url | varchar(255) | 否 | 否 |
评论表(comment)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
用户编号 | customerid | int | 否 | 否 | 关联customer表主键 |
商家编号 | merchantid | int | 否 | 否 | 关联merchant表主键 |
食物编号 | foodid int | 否 | 否 | 关联food表主键 | |
评价内容 | content | varchat(255) | 否 | 否 | |
发送时间 | sendtime | varchat(12) | 否 | 是 | |
总体评价 | overallscore | bit | 否 | 否 | |
态度评价 | attitudescore | bit | 否 | 否 | |
美味评价 | tastescore | bit | 否 | 否 | |
价格评价 | pricescore | bit | 否 | 否 | |
等待时间 | waitingtime | int | 否 | 否 | |
可见状态 | State | bit | 否 | 否 | 1:可见,0:不可见 |
代金券表(coupon)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
商家编号 | merchantid | int | 否 | 否 | 关联merchant表主键 |
用户编号 | customerid | int | 否 | 否 | 关联customer表主键 |
使用门槛 | threshold | double | 否 | 否 | |
价值 | voucher | double | 否 | 否 | |
使用期限 | servicelife | varchar(12) | 否 | 否 |
订单表(order)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id int | 是 | 否 | 自增ID | |
用户编号 | customerid | int | 否 | 否 | 关联customer表主键 |
商家编号 | merchantid | int | 否 | 否 | 关联merchant表主键 |
下单时间 | ordertime | varchar(12) | 否 | 否 | |
预约时间 | appointment | varchar(12) | 否 | 是 | |
取消订单 | cancel | bit | 否 | 否 | 1:未取消,0:取消 |
关闭时间 | closetime | varchar(12) | 否 | 否 |
订单项表(orderitem)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
订单编号 | orderid | int | 否 | 否 | 关联order表主键 |
食物编号 | foodid | int | 否 | 否 | 关联food表主键 |
数量 | number | int | 否 | 否 |
购物车表(shoppingcart)
项目 | 字段名 | 类型宽度 | 主键 | 允许空值 | 备注 |
---|---|---|---|---|---|
编号 | id | int | 是 | 否 | 自增ID |
用户编号 | customerid | int | 否 | 否 | 关联customer表主键 |
商家编号 | merchantid | int | 否 | 否 | 关联merchant表主键 |
食物编号 | foodid | int | 否 | 否 | 关联food表主键 |
数量 | number | int | 否 | 否 |
除了菜单类其他有独自的属性的类都建立了对应的表。菜单由查询食物表中商家编号对应的记录得到所以不建立表。
系统安全和权限设计
1.网络安全设计
1.1网络设备与访问控制
在网络边界部署访问控制设备,采用分级管理,可能会启用访问控制功能对登录网络设备的用户进行身份鉴别,对网络设备的管理员登录地址进行限制。对口令设置必须在8位以上且为字母和数字组合,限制非法登录次数为3次,必要时采取加密措施防止鉴别信息在网络传输过程中被窃听。
1.2安全审计
对网络系统采用网络安全审计系统,对网络设备运行状况、网络流量、用户行为等进行日志记录。记录包括:事件的日期和时间、用户、事件类型、事件是否成功等审计相关的信息。可以根据记录数据进行分析,并生成审计报表,系统对审计记录进行保护,避免受到未预期的删除、修改或覆盖等
情况。
1.3结构安全
保证网络设备的性能具有一定的冗余以应对突发情况,采用高速宽带并设计合理的网络拓扑结构。
1.4入侵防范
如果有可能将使用一些入侵检测及防火墙的产品来保证网络安全。
1.5漏洞扫描
如果技术上允许将采用漏洞扫描系统对系统漏洞进行扫描
2.主机安全设计
2.1身份鉴别
对登录后台的管理员和前台登录用户、商家进行身份识别和鉴别。未经过鉴别的用户不能对数据库进行对部分数据查,不能对所有数据增删改。多次输错用户名或者密码、登录异常的用户身份鉴别也将失败。系统会采取必要的措施防止用户账户信息泄露,如对用户密码加密等。
2.2访问控制
根据管理用户的角色分配权限,实现管理用户的权限分离,仅授予管理用户所需的最小权限,如用户和商家无法删除评价。及时删除多余的、过期的帐户,避免共享帐户的存在,安全策略设置登录终端的操作超时锁定;设定终端接入方式、网络地址范围等条件限制终端登录。
2.3安全审计
审计用户行为、系统资源的异常使用和重要系统命令的使用等系统内重要的安全相关事件。
2.4入侵防范和反病毒
采用防毒软件进行病毒防范
3.应用安全设计
3.1应用安全措施
强制要求用户密码满足相应的用户密码复杂度策略密码,登陆时强制用户修改密码,并不能和上次密码一样密码连续三次输入错误就冻结帐户十分钟。
3.2通信完整性和保密性
采用加密技术和校验技术保障通信完整性和保密性
4.数据安全设计
4.1数据完整性和保密性
釆用数据传输加密技术,对传输中的数据流加密,以防止通信线路上的窃听、泄漏、篡改和破坏。数据传输的完整性通过数字签名的方式来实现,数据的发送方在发送数据的同时利用单向的不可逆加密算法Hash函数或者其它信息文摘算法计算出所传输数据的消息文摘,并把该消息文摘作为数字签名随数据一同发送。接收方在收到数据的同时也收到该数据的数字签名,接收方使用相同的算法计算出接收到的数据的数字签名,并把该数字签名和接收到的数字签名进行比较,若二者相同,则说明数据在传输过程中未被修改,数据完整性得到了保证。
4.2数据库安全
数据库系统是整个系统的核心,是所有业务管理数据以及清算数据等数据存放的中心。数据库的安全直接关系到整个系统的安全。控制对数据库中每个对象的读写权限利用数据库的审计功能,以对用户的某些操作进行记录。使用视图以及存储过程,保护基础数据表。对于不同的应用系统应建立不同的数据库用户,分配不同的权限。
4.3备份恢复
会定期备份数据库中的数据到其他地方,防止数据丢失、损坏等意外
四、上次作业中老师助教和其他队伍在评审中给项目提出的问题
问:类图中有错误的类操作
答:我们将预约订单、取消订单放到了订单类中,新增了评论类来存放发表评价、修改评价、删除操作,新增了优惠券类来存放兑换优惠券、使用优惠券操作。
问:一个订单只能订购一种菜品吗?如果一个学生在一个摊位买两种菜品,目前的类图能支持吗?
答:经老师提醒,我们添加了一个订单项类关联订单类来解决这个问题。
问:预约就餐功能有哪些类支持?不需要增加预约类吗?
答:小组讨论后目前还是认为可以将预约操作放到订单类中,不额外增加预约预约类。可能这个讨论结果有一些错误的地方还希望老师能指点迷津
五、作业的工作流程、组员分工、组员贡献度比
首先是改进上次作业的类图,再由类图衍生制作其他图,完成数据库部分的相关设计,这些工作基本完成后开始系统设计的相关工作,最后花一些时间整合一下两个部分的工作
学号 | 工作内容 | 贡献度 |
---|---|---|
221701111 | 改进类图、制作ER图、制作泳道图、制作数据流图 | 16.5 |
041701602 | 小组汇报与答辩、制作《数据库使用说明书》、校对类图、部分博客编辑 | 17.5 |
081700308 | 制作数据库设计部分答辩PPT 、部分博客编辑、校对类图 | 16.5 |
021700915 | 制作系统设计部分答辩PPT、系统安全和权限设计、校对功能模块层次图 | 16 |
221701130 | 编辑博客及完成《系统设计说明书》、校对功能模块层次图 | 17 |
221701140 | 制作功能模块层次图 、部分博客内容编辑、《系统设计说明书》部分编辑 | 16.5 |
六、附件列表
附件 | 下载地址 |
---|---|
github团队仓库链接 | github团队仓库 |
系统设计说明书 | 铁华组_系统设计说明书.pdf |
数据库设计说明书 | 铁华组_数据库设计说明书.pdf |
系统设计和数据库设计答辩PPT | 铁华组_系统设计和数据库设计答辩PPT.pdf |