一、实验目的
1.熟悉UML各图的基本功能和使用方法。
2.掌握如何使用建模工具绘制UML各图方法。
3.学习面向对象的系统分析与设计方法。
二、实验器材
1.PC一台。
2.Rational Rose 2003工具软件。
三、实验内容
利用Ration Rose统一建模工具,以华龙百货销售有限公司的网上购物系统为实验案例,进行基于UML的系统分析与设计,完成需求获取、系统分析、系统设计各阶段的基本任务。
四、实验步骤
1.分析网上购物系统的需求,绘制用例图,建立用例模型。识别用例之间的关系。
用例图如图:
网上购物用例图
顾客服务用例图
订单管理用例图
顾客管理用例图
商品管理用例图
2.分析主要用例的用例描述(包括主事件流、可选事件流和例外事件流)。
答:搜索商品
用例名:搜索商品(Search for Items)
简要说明:这个用例描述顾客根据关键词搜索商品的过程。
前置条件:顾客已进人Main Page页面。
事件流:(无)。
基本事件流:
(1)顾客输人关键词,点击“搜索”按钮;
(2)系统根据所输人关键词,查询数据库;
(3)系统显示查询结果。
替代事件流:数据库中无符合关键词的商品(缺货或者没有该商品)。
(1)在基本事件流第2步,系统查询数据库时,查到数据库商品无符合关键
词的商品,用例开始;
(2)系统显示“查无符合关键词的商品!”信息;
(3)用例结束。
后置条件:(无)。
把商品加人购物车
用例名:把商品加人购物车(Add Items to Shopping Cart)
简要说明:这个用例描述把物品加人购物车的过程。
前置条件:顾客已登录,并进人ItemUI页面。
事件流:(无)。
基本事件流:
(1)顾客点击所选商品旁的“加进购物车”按钮,用例开始;
(2)系统根据所选商品的PID查询数据库,看是否有所选商品;
(3)系统根据顾客的C1D查询数据库,获取顾客信息;
(4)系统把所选商品信息及顾客信息加人顾客的购物车中;
(5)系统更新显示购物车的信息;
(6)用例结束。
替代事件流一:所查商品不符合要求(缺货或者没有该商品)。
(1)在基本事件流第2步,系统查询数据库时,查到数据库里该商品已不存在,或者数量为0,用例开始;
(2)系统显示“商品已无,加人购物车失败”信息;
(3)用例结束。
替代事件流二:顾客没有购物车。
(1)在基本事件流的第3步,系统查出顾客没有购物车,用例开始;
(2)系统提示顾客创建一个新的购物车;
(3)用例结束。
后置条件:(无)。
查着购物车
用例名:查看购物车(View the Shopping Cart) o
简要说明:这个用例描述顾客查看购物车信息的过程。
前置条件:顾客已登录并且拥有一个购物车。
事件流:(无)。
基本事件流:
(1)顾客点击“查看购物车”按钮,用例开始;
(2)系统根据当前顾客CID查询相关的购物车;
(3)系统显示该购物车信息;
(4)用例结束。
替代事件流:顾客购物车已不存在。
(1)系统根据顾客名查不到相关的购物车(可能是未访问时间太长,系统已取消该购物车);
(2)系统显示“购物车不存在”信息;
(3)用例结束。
后置条件:(无)。
从购物车删除某商品
用例名:从购物车删除某商品(Delete ltcms in Shopping Cart)
简要说明:这个用例描述顾客删除购物车中某商品的过程。
前置条件:顾客已登录,并且已在购物车界面。
事件流:(无)。
基本事件流:
(1)顾客点击’‘从购物车删除某商品”按钮,用例开始;
(2)系统显示“是否删除该商品?”警告;
(3)顾客选择确定;
(4)系统根据购物车IID和顾客CID访问数据库;
(5)删除购物一车中的该商品;
(6)系统更新购物车显示界面;
(7)用例结束
替代事件流:顾客取消删除。
(1)在基本事件流第3步中,顾客取消,用例开始;
(2)系统返回购物车界面;
(3)用例结束。
后置条件:(无)。
修改购物车
用例名:修改购物车(Update the Shopping Cart) o
简要说明:这个用例描述顾客更新购物车中商品数量的过程。
前置条件:顾客已登录,并且已在购物车界面。
事件流:(无)。
基本事件流:
(1)顾客修改购物车中商品数量(可以不修改),点击“修改商品信息”按钮,用例开始;
(2)系统根据购物车IID和顾客CID访问数据库;
(3)系统将新的购物车信息保存到购物车数据库(数量为0则删掉商品信息);
(4)系统根据数据库中购物车信息更新购物车界面;
(5)用例结束。
替代事件流:库存商品数量不足。
(1)系统检查到顾客欲购商品数量大于库存中商品数量,用例开始;
(2)系统显示该商品数量不足的信息:
(3)用例结束
后置条件:(无)。
购买购物车中的商品
用例名:购买购物车中的商品(Purchase Items in Cart) o
简要说明:这个用例描述顾客选择好所要商品后,确定购买的过程。
前置条件:顾客已登录,并且已在购物车界而。
事件流:(无)。
基本事件流:
(1)顾客点击‘“结算”按钮,用例开始;
(2)系统根据登录顾客CID查询顾客数据库;
(3)系统根据顾客信息显示送货信息;
(4)顾客修改送货信息(可以不改),并选择提交;
(5)系统查询商品数据库.检查该商品库存是否满足购物数量;
(6)系统对于购物车中的每种商品。在商品数据库的商品信息中减去相应的数量;
(7)顾客通过支付系统进行结算;
(8)根据送货信息、创建一个新的订单,订单号根据订单数据库数据由系统
自动生成;
(9)系统将该顾客的商品信息加人新建的订单中;
(10)系统设置订单状态;
(11)系统把订单信自、保存到订单数据库;
(12)系统显示订单信息和“购物成功”信息;
(13)用例结束。
替代事件流:商品数量不足。
(1)在基本事件流第5步中.系统检查出商品数量不足,用例开始;
(2)系统显示数量不足信息并返回购物车界而,并提示顾客修改购物车中的相关商品数量或者删除该商品;
(3)用例结束。
后置条件;(无)。
3.绘制抽象类图,建立网上购物系统的领域模型,给出关键业务概念的术语表。
网上购物部分的分析类图
4.进行系统分析,根据用例描述,绘制顺序图,完成用例实现。在用例实现过程中,需考虑新增加的责任如何分配。
答:顺序图如下:
搜索商品用例的顺序图
把商品加入购物车用例顺序图
查看购物车用例的顺序图
修改购物车用例的顺序图
从购物车删除某商品用例的顺序图
购买购物车中的商品用例的顺序图
5.根据顺序图,绘制协作图。
答:对应协作图如下:
搜索商品用例的协作图
把商品加入购物车用例协作图
查看购物车用例的协作图
修改购物车用例的协作图
从购物车删除某商品用例的协作图
购买购物车中的商品用例的协作图
6.绘制网上购物过程的活动图。
7.绘制订单对象的状态图。
8.绘制分析类图,建立分析模型。
网上购物部分的分析类图
9.绘制包图,完成系统总体结构设计。
10.分析系统的设计模式,绘制设计类图。
11.进行系统的数据库设计。
答:数据库设计如下表所示:
顾客(Customer()信息表
| 字段名称 | 字段类型 | 说明 | 备注 |
| CID | Int | 顾客编号 | Primary Key |
| LoginName | Varchar(20) | 登录名称 | Not Null |
| CustomerPassword | Varchar(20) | 顾客密码 | Not Null |
| CustomerEmail | Varchar(40) | 顾客电子邮箱 | Not Null |
| CustomerName | Varchar(20) | 顾客姓名 | |
| CustomerSex | Varchar(2) | 顾客性别 | |
| CustomerTel | Varchar(16) | 顾客电话 | |
| CustomerHandphone | Varchar(13) | 顾客手机 | |
| CustomerAddress | Varchar(100) | 顾客地址 | |
| CustomerZip | Varchar(10) | 顾客邮编 | |
| CustomerLevel | Int | 顾客级别 | |
| CustomerCreatDate | Datetime | 建立日期 |
| 字段名称 | 字段类型 | 说明 | 备注 |
| PID | Int | 商品编号 | Primary Key |
| CaID | Int | 类别编号 | Not Null |
| ProductName | Varchar(100) | 商品名称 | |
| ProductContent | Varchar(5000) | 商品内容 | |
| ProductDescription | Varchar(2000) | 商品简介 | |
| Price | Decimal(9,2) | 会员价格 | |
| MemberPrice | Decimal(9,2) | 会员价格 | |
| ProductPicture | Varchar(200) | 商品图片 | |
| Productstocks | Int | 商品库存 | |
| RegisterDate | Datetime | 商品上架日期 |
| 字段名称 | 字段类型 | 说明 | 备注 |
| CaID | Int | 类别编号 | Primary Key |
| CategoryName | Varchar(100) | 类别名称 |
| 字段名称 | 字段类型 | 说明 | 备注 |
| OID | Int | 订单编号 | Primary Key |
| CID | Int | 顾客编号 | Foreign key ,Not Null |
| OrderDate | Datetime | 订单提交日期 | Not Null |
| OrderRecName | Varchar | 收货人姓名 | |
| OrderRecAddress | Varchar | 收货人地址 | |
| OrderEmail | Varchar | 收货人电子信箱 | |
| OrderTel | Varchar | 收货人电话 | |
| OrderRecZip | Varchar | 收货人邮编 | |
| OrderTotalAmount | Decimal(9,2) | 商品总金额 | |
| OrderStatus | Int | 订单状态 | 订单状态:1为核查,2为发货,3为等待货物,4为交付,5为取消,默认为1 |
| 字段名称 | 字段类型 | 说明 | 备注 |
| LID | Int | 订单项编号 | Primary Key |
| OID | Int | 订单编号 | Foreign key ,Not Null |
| IID | Int | 购物项目编号 | Foreign key ,Not Null |
| PID | Int | 商品编号 | Foreign key ,Not Null |
| Quantity | Int | 订单项数量 | Not Null |
| LineItemAmount | Decimal(9,2) | 订单项金额 | Not Null |
| 字段名称 | 字段类型 | 说明 | 备注 |
| IID | Int | 购物项目编号 | Primary Key |
| CID | Int | 顾客编号 | Foreign key ,Not Null |
| PID | Int | 商品编号 | Foreign key ,Not Null |
| Quantity | Int | 购物项数量 | Not Null |
| Price | Decimal(9,2) | 价格 | |
| MemberPrice | Decimal(9,2) | 会员价格 |
五、实验结果
最终类图:
六、实验小结
答:在实验中遇到的主要问题是创建各种模型图的时候,不知道如何使用UML去创建模型,不知道创建菜单和创建工具在哪里,经过询问同学后和上网搜索之后知道了位置,才顺利进行了实验。
实验中做的过程不是很难,实验还是比较简单的。这次实验给了我很大的启发和锻炼,很大程度上考验了我对基础知识的掌握和具体动手画图的能力,在做实验的过程中我也发现了自己很多基础知识并不牢固,通过复习使我更深刻的理解的UML以及数据结构的具体知识,而且还使我提高了具体解决问题的能力。
通过本次实验课的学习,我基本学会使用了UML的使用方法,学会使用UML绘制各种模型图,初步了解了软件工程的基本思想和前期设计,应该说,这次实验的收获还是巨大的。下载本文