day05
一 购物商城
1.1 软件工程
以工程学的方式管理软件产生的过程,保证高质量的软件。
软件工程的生命周期
软件:无-》工作-》死
1)定义:明确要做什么
2)需求分析:需要实现哪些功能,市场调研,可行性分析(技术,经济,市场
3)系统设计:概要设计,详细设计
4)编码实现:
5)软件测试:
6)运营和维护
1.2 定义
apple商城
目的:实现产品的在线购买
1.3 分析
功能
前台:
主页:上部菜单,中间产品列表,底部网站信息
分类页:上部菜单(当前分类的产品),中间产品列表,底部网站信息
购买页:上部菜单,中间产品信息(产品的详情和购买功能),底部网站信息
购物袋:上部菜单,中间购物列表,底部网站信息
用户:登录,注册,退出
后台:
产品管理
技术
语言:Java,HTML,CSS,JS
开发环境:JDK1.8,HTML5,CSS3
数据库:MySQL
开发工具:STS,Navicat,SpringBoot
主要计数:Mybatis,Spring,SpringMVC,FreeMarker,jQuery
经济
市场
1.4 设计
概要设计
数据库设计:E-R图,数据库逻辑模型,数据库物理模型
E-R图:
1)产品类型:编号、名字
2)机型:编号、名字、描述、价格
3)图片:地址
4)商品:
手机:屏幕大小,颜色,内存
电脑:内存,硬盘,描述
手表:颜色,尺寸
5)购物袋:编号
6)用户:编号,账号,密码
7)订单
逻辑模型
根据E-R图设计
1)每一个实体,都做成一张表,每个属性作为表中的一个字段
2)一对一:在从表中添加一个外键与主表的主键进行关联
3)一对多:在从表中添加一个外键与主表的主键进行关联
多的一方作为从表,一的一方作为主表
4)多对多:
需要一个单独的关系表,来保存两个表之间的关系
表的逻辑结构
1)产品类别
表名 | type | ||||||||
---|---|---|---|---|---|---|---|---|---|
属性 | 字段名 | 类型 | 长度 | 小数点 | 为空 | 主键 | 默认值 | 约束 | 描述信息 |
编号 | id | int | no | PK | 自增 | 产品类别的编号 | |||
名字 | name | varchar | 16 | no | 产品类别名字 |
2)机型
表名 | model | ||||||||
---|---|---|---|---|---|---|---|---|---|
属性 | 字段名 | 类型 | 长度 | 小数点 | 为空 | 主键 | 默认值 | 约束 | 描述信息 |
编号 | id | int | No | PK | 自增 | ||||
名字 | name | varchar | 32 | No | |||||
描述 | description | text | No | ||||||
价格 | price | int | No | ||||||
类别 | type | int | No | FK | 当前机型所属类别 |
3)图片
表名 | image | ||||||||
---|---|---|---|---|---|---|---|---|---|
属性 | 字段名 | 类型 | 长度 | 小数点 | 为空 | 主键 | 默认值 | 约束 | 描述信息 |
编号 | id | int | no | PK | 自增 | ||||
地址 | url | varchar | 128 | no | |||||
机型 | model | int | no | FK |
4)商品
表名 | type | ||||||||
---|---|---|---|---|---|---|---|---|---|
属性 | 字段名 | 类型 | 长度 | 小数点 | 为空 | 主键 | 默认值 | 约束 | 描述信息 |
编号 | id | int | no | PK | 自增 | ||||
名字 | name | varchar | 16 | no | |||||
颜色 | color | varchar | 16 | no | |||||
尺寸 | size | ||||||||
价格 | price | ||||||||
图片 | image | ||||||||
内存 | ram | ||||||||
机型 | type | int | no |
物理模型
到MySQL中,按照逻辑模型创建物理表
需要注意:一般来说,外键的字段在创建后不要进行外键关联,更多的是在程序上处理关联
详细设计
MCV三层架构
M:模型
数据模型:数据的呈现方式,实体类/集合List/Map
com.st.apple.pojo
功能模型:
持久层:数据库的访问操作
com.st.apple.mapper
业务层:对系统中的业务逻辑进行处理
com.st.apple.service
V:视图
网页:模板(代替JSP)、CSS、JS、静态资源
动态页面,数据的渲染
FreeMarker
JSON/XML
[外链图片转存中…(img-oDX34l89-1578042981981)]
C:控制
SpringMVC,Handler作为控制层
controller中的方法
com.st.apple.controller
功能的详细设计
主页的功能
功能名 | 主页 |
---|---|
角色 | 游客,登录的用户 |
启动 | 输入网址 |
页面 | FreeMarker模板 |
输入 | 无 |
输出 | 显示分类菜单,产品信息 |
数据库 | 查询type表,查询model表 |
MVC三层设计
View层 | Controller层 | Model层 | ||
---|---|---|---|---|
Service层 | Mapper层 | 实体类 | ||
index.html | IndexController.java | ITypeService.java TypeServiceImpl.java | TypeMapper.java TypeMapper.xml | Type.java |
View层
url | 请求方式 | 响应方式 | 功能描述 |
---|---|---|---|
/index | Get | index.html | 当请求url时,把查询到的数据显示到index.html中 |
Controller层
类 | url | 方法 | 描述 |
---|---|---|---|
IndexController.java | /index | public ModelAndView index() | 响应主页请求 |
Model层
模型 | 类 | 方法 | 描述信息 |
---|---|---|---|
Service | ITypeService.java TypeServiceImpl.java | List< Type >getAll() | 获取所有的产品分类 |
Mapper | TypeMapper.java TypeMapper.xml | List< Type >selectAll() | 查询数据库所有产品分类 |
实体类 | Type.java | 属性以及Get和Set方法 | 对应数据表中的type表 |