网上购物系统的开发需求分析和概念模型
前言
由于我工程实践项目是安全工具sqlmap或AFL FUZZ 的源码分析与复现,所以本次作业以本科时软工课程做的项目为例进行分析。
参考文献: https://gitee.com/mengning997/se/tree/master/ppt,从需求分析到软件设计
项目分析
一、项目基本要求
电商系统致力于提供产品展示及订购为核心的网上购物服务宣传自己商店的产品并将自己的产品展现给客户,让客户通过网站便能对自由的选择地购买产品。该网站是通过用户登录浏览商品、查看公告、购买、确定购买、实现用户模块功能。其中订单的生成,网站后台系统,通过系统管理员管理商品、订单、用户来实现。
二、功能需求分析
1 面向用户部分功能:
(1) 注册功能。顾客首先要注册为网上商城的用户。注册时只要填写登录用户名、密码、联系电子信箱3项信息即可。注册后,用户可继续如实填写详细个人信息及收货人信息,同时可修改密码、查询及修改订单。
(2) 选择产品功能。顾客浏览网上商城,将自己需求的产品放入到购物车中(可在网上商城首页、专柜首页、产品小类、专卖店首页、搜索结果页面、产品详细信息页面进行该操作),可连续添加商品。
(3) 管理购物车。顾客选择完商品后可进入购物车页面,查看自己要购买的商品,可修改某一商品数量、取消购买某商品和清空整个购物车。
(4) 订单功能。顾客确定购物车中的商品后提交订单,如顾客已填写收货人信息,则页面显示该信息并由顾客确认。如尚未填写则显示相应表单请其填写,系统记录顾客提交的收货人信息以便其下次购物时使用。顾客提交订单后可在网上商城查询该订单,并可对尚未处理的订单进行取消、修改等操作。
(5) 付款功能。顾客在订单被销售方确认后,要选择付款方式,并付款给销售方,然后才可以收到货。
2.2.2 后台管理部分功能:
(1) 管理人员部分。该部分的用户有一个超级管理员以及若干个普通管理员,超级管理员拥有最高权限,可访问所有订单,可浏览、查询订单,可浏览、修改普通管理员和会员的资料,普通管理员分两种,一种是订单管理员:主要负责订单管理,可浏览、修改订单状态,可浏览会员信息;另一种是界面管理员:主要负责界面管理,可增、删商品和广告等操作。
(2) 管理订单功能。顾客可通过Web方式取消、修改自己提交的订单(在管理员确认前),查询自己提交的订单(随时)。如订单的状态在一定时限(如12个小时)后仍没有发生变化(“订单关闭”状态除外),系统自动提醒管理员(如该订单变色,弹出提醒窗口等方式。订单状态发生变化,系统自动发E-mail给顾客,“无效订单”、“订单关闭”状态除外)。
(3) 管理商品功能。管理员可以添加、修改、删除商品
三、性能需求
3.1 数据精确度
价格单位保留到分。
3.2 适应性
购物流程要简单明了,产品图片要清楚,产品信息描述准确。
四、业务建模
4.1 系统的功能架构
图1 网上购物系统功能架构图
4.2 系统的业务流程
图2 网上购物系统业务流程
4.3UML类图
图3 类图
五、数据建模
管理员表(Admin):管理系统管理员账号和密码的表,主要属性有:用户名和密码。系统管理员根据用户名密码登陆后台系统。
表1 管理员表
表名:Admin | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
AdminID | varchar | 32 | 主键 | 管理员ID | 非空 |
Name | varchar | 32 | 无 | 管理员名称 | 非空 |
Password | varchar | 32 | 无 | 管理员密码 | 非空 |
用户购买信息表(BuyInfo):会员购物信息统计表,主要属性有:BuyID, GoodsID,Num,SumPrice,MemberID。
表2 用户购买信息表
表名:BuyInfo | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
BuyID | varchar | 50 | 主键 | 购物单号 | 非空 |
GoodsID | varchar | 50 | 无 | 商品ID | 无 |
Num | int | 32 | 无 | 商品数量 | 无 |
OrderID | varchar | 50 | 无 | 订单号 | 无 |
SumPrice | varchar | 50 | 无 | 总价格 | 无 |
MemberID | varchar | 50 | 外键 | 用户ID | 无 |
商品信息表(GoodsInfo):商品信息表主要负责存储商品名称,商品类别,商品图标,商品图片,商品价格,商品重量等信息。主要属性有:GoodsID,ClassID,GoodsIntroduce,GoodsBrand,GoodsUnit,GoodsWeight,MarketPrice。
表3 商品信息表
表名:GoodInfo | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
GoodID | varchar | 50 | 主键 | 商品名称 | 非空 |
ClassID | varchar | 50 | 外键 | 商品类别 | 非空 |
GoodsIntroduce | Text | 250 | 无 | 商品介绍 | 无 |
GoodsBrand | varchar | 50 | 无 | 商品品牌 | 无 |
GoodsUnit | varchar | 50 | 无 | 商品计数单位 | 无 |
GoodsWeight | float | 16 | 无 | 商品重量 | 无 |
MarketPrice | float | 16 | 无 | 商品市场价格 | 无 |
用户收货付款信息表(MemberBuyInfo):用户收货付款信息表主要负责存储用户ID,接收人姓名,接收人电话,是否确认,是否付款,接收人邮编,接收人地址,接收人邮件等信息。主要属性有MemberID,RecevierName,RecevierPhone,IsConfirm,IsPayment,ReceiverPostCode,ReceiverAddress,ReceiverEmails。
表4 用户收货付款信息表
表名:MemberBuyInfo | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
MemberID | varchar | 50 | 外键 | 用户ID | 无 |
RecevierName | varchar | 50 | 无 | 接收人名字 | 无 |
RecevierPhone | varchar | 50 | 无 | 接收人电话 | 无 |
IsConfirm | bit | 1 | 无 | 是否确认 | 无 |
IsPayment | bit | 1 | 无 | 是否付款 | 无 |
ReceiverPostCode | char | 10 | 无 | 接收人邮编 | 无 |
ReceiverAddress | varchar | 200 | 无 | 接收人地址 | 无 |
ReceiverEmails | varchar | 50 | 无 | 接收人邮件 | 无 |
已注册用户信息表(Member):已注册用户信息表,主要用来存储已注册用户的一些基本信息,如用户ID,用户性别,用户密码,用户真实名字,用户联系方式(电话号码。E_mail,所在城市,家庭住址,邮政编码等),现有RMB,上一次登陆时间。主要属性有:MemberID,Sex,Password,TrueName,Phonecode,Emails,City,Address,PostCode。
表5 已注册用户信息表
表名:Member | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
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 | 无 | 邮编号码 | 无 |
订单信息表(OrderInfo):订单信息表主要用来存储会员每次订单信息,主要属性有:OrderID,OrderDate,GoodsFee,TotalPrice,ShipFee,ShipType,PayType,MemberID,ReceiverName,ReceiverPhone,IsConfirm,IsPayment,IsConsignment,IsPigeonhole,ReceiverPostCode,ReceiverAddress,ReceiverEmails。
表6 订单信息表
表名:OrderInfo | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
OrderID | varchar | 50 | 主键 | 订单ID | 非空 |
OrderDate | Datetime | 32 | 无 | 订单提交日期 | 无 |
GoodsFee | varchar | 50 | 无 | 商品价格 | 无 |
TotalPrice | varchar | 50 | 无 | 商品总费用 | 无 |
ShipFee | varchar | 50 | 无 | 运输费 | 无 |
PayType | varchar | 50 | 无 | 付款方式 | 无 |
购物车信息表(ShopCart):购物车信息表,主要负责存储会员临时性添加的一些商品,主要属性有:CartID,GoodsID,Num,MemberPrice,MarketPrice,MemberID,GoodsWeight。
表7 购物车信息表
表名:ShopCart | |||||
字段名 | 数据类型 | 长度 | 主外键 | 字段说明 | 备注 |
CartID | varchar | 50 | 主键 | 购物车ID | 非空 |
GoodsID | varchar | 50 | 外键 | 商品ID | 非空 |
Num | int | 50 | 无 | 购买数量 | 非空 |
MarketPrice | float | 16 | 无 | 市场价格 | 非空 |
MemberID | varchar | 50 | 外键 | 用户ID | 非空 |
GoodsWeight | float | 16 | 无 | 商品重量 | 非空 |
Part 2 面向对象分析与建模
六、用例图
根据以上分析用例图如下:
图4网上购物系统(顾客服务)用例图
图5网上购物系统管理员用例图
七、具体用例说明
(1)搜索商品
用例名:搜索商品(Search for Items)
简要说明:这个用例描述顾客根据关键词搜索商品的过程。
前置条件:顾客已进人Main Page页面。
(1)顾客输人关键词,点击“搜索”按钮;
(2)系统根据所输人关键词,查询数据库;
(3)系统显示查询结果。
(2)把商品加人购物车
用例名:把商品加人购物车(Add Items to Shopping Cart)
简要说明:这个用例描述把物品加人购物车的过程。
前置条件:顾客已登录,并进人ItemUI页面。
(1)顾客点击所选商品旁的“加进购物车”按钮,用例开始;
(2)系统根据所选商品的PID查询数据库,看是否有所选商品;
(3)系统根据顾客的C1D查询数据库,获取顾客信息;
(4)系统把所选商品信息及顾客信息加人顾客的购物车中;
(5)系统更新显示购物车的信息;
(6)用例结束。
(3)查着购物车
用例名:查看购物车(View the Shopping Cart)
简要说明:这个用例描述顾客查看购物车信息的过程。
前置条件:顾客已登录并且拥有一个购物车。
(1)顾客点击“查看购物车”按钮,用例开始;
(2)系统根据当前顾客CID查询相关的购物车;
(3)系统显示该购物车信息;
(4)用例结束。
(4)从购物车删除某商品
用例名:从购物车删除某商品(Delete ltcms in Shopping Cart)
简要说明:这个用例描述顾客删除购物车中某商品的过程。
前置条件:顾客已登录,并且已在购物车界面。
(1)顾客点击’‘从购物车删除某商品”按钮,用例开始;
(2)系统显示“是否删除该商品?”警告;
(3)顾客选择确定;
(4)系统根据购物车IID和顾客CID访问数据库;
(5)删除购物一车中的该商品;
(6)系统更新购物车显示界面;
(7)用例结束
(5)修改购物车
用例名:修改购物车(Update the Shopping Cart)
简要说明:这个用例描述顾客更新购物车中商品数量的过程。
前置条件:顾客已登录,并且已在购物车界面。
(1)顾客修改购物车中商品数量(可以不修改),点击“修改商品信息”按钮,用例开始;
(2)系统根据购物车IID和顾客CID访问数据库;
(3)系统将新的购物车信息保存到购物车数据库(数量为0则删掉商品信息);
(4)系统根据数据库中购物车信息更新购物车界面;
(5)用例结束。
(6)购买购物车中的商品
用例名:购买购物车中的商品(Purchase Items in Cart)
简要说明:这个用例描述顾客选择好所要商品后,确定购买的过程。
前置条件:顾客已登录,并且已在购物车界面。
(1)顾客点击“结算”按钮,用例开始;
(2)系统根据登录顾客CID查询顾客数据库;
(3)系统根据顾客信息显示送货信息;
(4)顾客修改送货信息(可以不改),并选择提交;
(5)系统查询商品数据库.检查该商品库存是否满足购物数量;
(6)系统对于购物车中的每种商品。在商品数据库的商品信息中减去相应的数量;
(7)顾客通过支付系统进行结算;
(8)根据送货信息、创建一个新的订单,订单号根据订单数据库数据由系统自动生成;
(9)系统将该顾客的商品信息加人新建的订单中;
(10)系统设置订单状态;
(11)系统把订单信自、保存到订单数据库;
(12)系统显示订单信息和“购物成功”信息;
(13)用例结束。
八、概念原型总结
概念是人对能代表某种事物或者发展过程的特点及其意义所形成的思维结论,而概念原型是一种虚拟化的、理想化的软件产品形式。我们可以得到这样的公式:概念原型=用例+数据模型。
在本项目中涉及顾客(用户)用例与管理员两个用例。顾客登录后可以浏览商品,搜索商品,进行添加到购物车等对购物车操作以及支付操作。管理员登陆后可以进行用户管理,商品管理,交易订单管理等操作。
其操作大部分为增删改查等基本操作。
九、总结
经过这次作业,对软件工程有了进一步的认识,使得需求分析与概念原型的概念在脑中逐渐清晰。同时在对以往项目进行阅读的过程中,发现了自己曾经的不足,收获颇丰。