1、1本科实验报告课程名称: 系统分析与设计 实验项目: 网上订餐系统实验 实验地点: 行逸楼 A 103 专业班级:软件 1320 班 学号:2013006073学生姓名: 张 舒 指导教师: 南 志 红 2015 年 11 月 4 日2一、实验目的通过系统分析与设计实验,使学生在实际的案例中完成系统分析与系统设计中的主要步骤,并熟悉信息系统开发的有关应用软件,加深对信息系统分析与设计课程基础理论、基本知识的理解,提高分析和解决实际问题的能力,使学生在实践中熟悉信息系统分析与设计的规范,为后继的学习打下良好的基础。二、实验要求学生以个人为单位完成,自选题目,班内题目不重复,使用UML进行系统分析
2、与设计,并完成实验报告。实验报告以纸质版(A4)在课程结束后二周上内提交(12周)。三、实验主要设备:笔记本计算机四、实验内容1 选题及项目背景选题:网上订餐系统背景:随着互联网的发展,越来越多的人选择上网进行活动,网上订餐就是一个非常流行的方式,使人们足不出户就可以吃到心满意足的饭菜。2 定义此网上订餐实现的是网上订餐服务,为某一家餐馆所有,主要实现在线订餐,送餐上门服务。顾客通过登录某餐馆的官方网站进行订餐,普通游客只有浏览权限,注册为会员之后,可以与在线客服交流,订餐,订餐时需要填写订单,选择购买的菜品及数量,系统验证会员信息(如发货地址等)及订单商品的可用性后,返回订单总金额等相关信息
3、。会员选择付款方式,如货到付款(现金)或立即支付(信用卡,支票,借记卡等) ,付款成功之后,订单生成,如果没有正常支付,则生成一个退单或该订单被挂起,餐馆服务员处理订单,安排送餐,并与客户在线交流。送餐员通过打印出来的订单进行送货。会员可以管理自己的信息,包括查看,修改,添加,删除,并支持修改密码,找回密码,重置密码。3 参考资料系统分析与设计主编:李爱萍 人民邮电出版社4 系统分析与设计4.1 需求分析4.1.1 识别参与者1.普通游客 2.会员 3.餐馆服务人员 4.送餐人员 4.1.2 对需求进行捕获与描述3用例名称用例名称 执行者执行者 目目 的的浏览菜单浏览菜单 普通游客普通游客 浏
4、览菜单,查看是否有注册成为会员的必要浏览菜单,查看是否有注册成为会员的必要浏览菜单浏览菜单 会员会员 浏览菜单,挑选菜品浏览菜单,挑选菜品注册会员注册会员 普通游客普通游客 通过填写注册信息成为会员通过填写注册信息成为会员下订单下订单 会员会员 填写订单填写订单修改订单修改订单 会员会员 对自己所填订单进行修改处理对自己所填订单进行修改处理退单退单 会员会员 在送餐之前在送餐之前 取消订单取消订单修改会员资料修改会员资料 会员会员 对自己的会员资料进行修改对自己的会员资料进行修改查看会员记录查看会员记录 会员会员 对自己的会员记录进行查看动作对自己的会员记录进行查看动作处理订单处理订单 餐馆服
5、务人员餐馆服务人员 对顾客提供的菜单进行处理,确认对方提交并完对顾客提供的菜单进行处理,确认对方提交并完成付款,对顾客的疑问提出解答成付款,对顾客的疑问提出解答修改菜单修改菜单 餐馆服务人员餐馆服务人员 对发布的菜单进行增加,删除,价格操作对发布的菜单进行增加,删除,价格操作确认送餐确认送餐 送餐员送餐员 送餐完毕后进入进入系统确认送餐完毕送餐完毕后进入进入系统确认送餐完毕支付支付 会员会员 提交订单后进行支付提交订单后进行支付100.1 用例 ID 号及用例名 Uc_100 注册会员100.2 用例概述 该用例描述一个在线订餐系统中,普通游客通过填写各项信息,注册成为会员。100.3 参与者
6、: 普通游客101.4 前置条件(Pre-Conditions) 进入网站页面100.5 后置条件(Post-Conditions)给予会员身份100.6 事件流100.6.1基本事件流(Basic Flow)1) 普通游客请求注册成会员。 2) 填写基本信息(电话,地址,姓名等) 。E-13) 邮箱验证。E-24) 选择支付方式,可以绑定银行卡。E-3100.6.2扩展事件流(Alternative Flows)(替代第 2 步):如果需要修改,会员修改送货地址、电话号码。(替代第 3 步):如果邮箱验证信息没有在 7 天内处理完成,验证信息失效。:(替代第步):会员变更绑定的银行卡,系统保
7、存修改。44.1.3 用例图通过已掌握的需求,初步了解系统所要完成的功能。下面给出用例图。System下 下 下 下下 下 下 下下 下 下下 下下 下下 下 下 下下 下 下 下 下 下下 下 下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下 下 下 下 下下 下 下4.1.4 分析与讨论1) 建模用例图的步骤、方法?识别主要参与者发现用例用例描述建模用例图 2) 如何识别系统的参与者?应该如何划分用例,应注意哪些问题?参与者是与系统交互的实体,包括需要和系统交换信息的一切实体,参与者不是系统的一部分,它们处于系统的外部。参与者可能是人,计算机硬件或设备或
8、外部系统。用例是从用户的角度,站在系统外部观察系统的功能,考虑系统做什么,而不考虑系统内部怎么做。用例是对系统行为的描述。用例可大可小,但对应一个具体的用户目标。一个用例包含了系统所执行的一组动作的序列。每个用例都有其对应的参与者。3) 心得通过做实验,完整的对所选系统做了需求分析,也完整的画了用例图,掌握了用例图的画法,对用例模型有了更深入的了解。54.2 建立对象模型 4.2.1 候选类的数据字典类 名 定 义会员 在在线订餐系统中提供的 web 页面上注册的个人或企业,这个类有姓名,电话号码,地址等属性地址 会员联系方式(电话号,Email)及收款或送货地址会员订单 会员订的菜品的相关细
9、节信息,包括购买时间,付款方式,订单状态等会员订单菜品 是会员已订购的菜品,一个订单包含一个或多个订单菜品业务事件 在线订餐系统必须响应的一个业务事件支付记录 维护会员使用网上银行等方式对订单的付款的信息4.2.2 定义类1. “会员”类属性 姓名电话号码送货地址邮箱操作修改电话号码()修改送货地址()浏览菜单()下订单()修改订单()查询会员记录()2.“订单”类属性订单编号订单总金额订单税款送餐地址签收人6支付方式操作更改送餐地址()增加备注()确认送到()3.“地址”类属性街道名称小区名称楼座号单元号门牌号操作填写地址()修改地址()4.“菜品”类属性价格口味特点图片介绍操作修改价格()
10、5.“支付记录”类属性支付记录号支付方式支付日期支付金额操作更改支付方式()确认支付()74.2.3 绘制类图下 下+下 下+下 下 下 下+下 下 下 下+下 下+下 下 下 下 下 下 ()+下 下 下 下 下 下 ()+下 下 下 下 ()+下 下 下 ()+下 下 下 下 ()+下 下 下 下 下 下 ()下 下+下 下 下 下+下 下 下 下 下+下 下 下 下+下 下 下 下+下 下 下+下 下 下 下+下 下 下 下 下 下 ()+下 下 下 下 ()+下 下 下 下 ()下 下+下 下 下 下+下 下 下 下+下 下 下+下 下 下+下 下 下+下 下 下 下 ()+下 下 下
11、 下 ()下 下+下 下+下 下+下 下 下 下+下 下 下 下+下 下+下 下 下 下 ()下 下 下 下+下 下 下 下 下+下 下 下 下+下 下 下 下+下 下 下 下+下 下 下 下 下 下 ()+下 下 下 下 ()下 下 下 下 下 下 下 下 下 下 下 下10*10*1 1*11*类图描述:这个类图中共有 5 个类,一个会员会有多个支付记录,所以是一对多的关系。地址相对重要,所以独立出来作为一类,送餐地址,电话号码,及邮箱地址继承了地址类。一个会员可能生成多个订单,是一对多的关系,一个订单与菜品是组合关系,一个订单是由 1 个到多个菜品组合起来的。4.2.4 包图对于大型复杂
12、系统,常需要把大量的模型元素用包组织起来,以方便处理。对所选系统的类进行分组,以便更清晰地了解系统的结构。 (画出包图 并说相应解释说明)8下 下 下 下下 下 下下 下 下 下下 下 下 下 下 下下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下 下 下下 下 下 下 下 下下 下 下 下下 下 下 下下 下下 下 下 下下 下 下 下下 下 下 下对组成元素建模是包图最常见的用途,它将建模元素进行分组,然后对组(包)进行命名,在对组成元素建模时,每个包都应该是由在概念上,语义上相互接近的元素组成。在此网上订餐系统中,可将用例分为“订单处理” , “
13、菜单处理” , “会员管理” , “快递管理”4个包,它们构成了该系统的四大业务逻辑功能。4.2.5 分析与讨论1)建模类图的步骤、方法? 确定类识别类的属性,操作。识别类之间的关联定义类的结构和层次2)识别类有哪些方法,你是如何识别类的 ?先找出候选类,一般在一个系统中,把名词最为候选类,列出候选类后,再审查与筛选类,删除冗余类, “普通游客”和“会员”在一定程度上有相同的属性和操作,所以保留“会员”类而删除“普通游客类” 。虽然“地址”可以作为“会员类”的属性,但是,对于网上订餐系统来讲,“地址”比较重要,所以单独拿出来作为一个类。3)解释关联的多重性?如何确定类的属性、操作、类之间的关联
14、关系、组织类之间的继承?关联的多重性:关联表示了对象间的结构关系,在建模过程中,通常需要说明一个关联实例中有多少个相互连接的对象,这就是关联的多重性。比如,如果类 A 和类 B 之间有关联关系,则多重性定义了类 A 有多少个实例可以和类 B 的一个实例关联。初步确定类后,就需要组织这些类,在分析阶段着重考虑本类之间的关联,继承关系。9第一步,确定类之间的关联关系并标识其多重性,个别也需要给出关联名称,通常两个类之间的关联关系是一个类“需要知道”另一个类的信息。第二步,使用继承关系组织类,可以通过自顶向下或自底向上两个方向识别继承。第三步,确定整体,部分的关系。第四步,绘制类图。4.3 建立动态
15、模型系统的动态行为模型由交互图(顺序图和协同图) 、状态机图和活动图表达。在系统的分析和设计中应当对主要的 Use Case 和对象类绘制这些图形,以便分析系统的行为,印证和修改系统的静态结构,满足用户的需求,达到系统的目标。4.3.1 顺序图/下 下 下 下 /下 下 下 下 /下 下 下 下 /下 下 下 下 /下 下 下 下/下 下1 : 下 下 下 下 () 2 : 下 下 下 下 下 下 ()3 : 下 下 下 下 ()4 : 下 下 下 下 下 下 ()5 : 下 下 下 下 下 下 () 6 : 下 下 ()7 : 下 下 下 下 下 下 ()会员下订单用例顺序图104.3.2
16、通信图Frame2sdFrame3sdFrame5sd/下 下 /下 下 下 下 /下 下 下 下 /下 下 下 下 /下 下 下 下 /下 下 下 下1 : 下 下 下 下 () 2 : 下 下 下 下 下 下 ()3 : 下 下 下 下 ()4 : 下 下 下 下 下 下 ()5 : 下 下 下 下 下 下 () 6 : 下 下 ()7 : 下 下 下 下 下 下 ()4.3.3 活动图活动图的主要作用是表示系统的业务工作流和并发处理过程。针对自选系统主要的业务工作流绘制活动图。绘制活动图需要确定参与活动的对象、动作状态、动作流,以及对象流。11下 下 下 下 下 下 下 下 下 下 下
17、下 下 下 下 下 下 下 下 下下 下 下 下下 下 下 下下 下 下 下 下 下 下 下 下 下下 下 下 下 下 下 下 下 下下 下 下 下 下下 下 下 下 下 下 下 下 下 下 下下 下 下 下 下 下下 下 下 下下 下 下 下下 下 下下 下下 下 下 下4.3.4 状态图状态机图表现一个对象(类)的生命史。对于一些实现重要行为动作的对象应当绘制状态机图。绘制状态机图需要确定一个对象的生命期可能出现的全部状态,哪些事件将引起状态的转移,将会发生哪些动作。(绘制所选系统的一个对象的状态图并解释说明)解释说明:会员订餐之前首先创建订单,此时订单处于“待处理”状态,随着交易形式的不
18、同,订单产生不同状态的变化,最后成为“已完成”的最佳状态。12订单状态图: 下 下 下下 下 下下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下下 下 下 下 下 下 下4.3.5 分析与讨论比较顺序图与通信图:顺序图描述对详见消息传递的时间顺序,用于分析交互的顺序,是按时间顺序对控制流建模,可以有效地帮助人们观察系统的顺序行为。通信图描述对象间的联系和传递的消息,用于描述一个操作的实现,是按对象组织关系对控制流建模,可以帮助开发者进行过程设计。比较活动图与状态图:活动图和状态图是用来描述系统的动态行为特征的,主要用于描述事物的状态变化和处理过程。状态图是附加到
19、类和用例的状态机图,描述对象响应外部激励时所经历的各种状态。通过展示事件和转化,状态图显示了对象在其生存周期中依次经历的各种状态。活动图是一种描述系统行为的图,它用于展现参与行为的类所进行的各种活动的顺序关系。4.4 物理模型4.4.1 建立构件图系统实现的源代码、二进制码、执行码可以按照模块化的思想,用构件分别组织起来,明确系统各部分的功能职责和软件结构。(学生补充自选系统的运行软件织成的构件图并解释说明,如果需要,可以绘制系统的源代码、二进制码和执行码的构件的跟踪关系图。 )解释说明:构件“订餐系统管理”包含 JXGL 系统的执行程序 “订餐系统管理.exe” ,构件“人事信息”包含实现人
20、事信息管理的动态链接库,构件“送餐管理”包含实现送餐管理的动态链接库,构件“菜单管理”包含实现菜单管理的动态链接库,构件“订单管理”包含实现订单管理的动态链接库。13下 下 下 下 下 下 .exe下 下 下 下 .dll 下 下 下 下 .dll 下 下 下 下 .dll 下 下 下 下 .dll下 下 下 下 下 下 下 下 下 下 下 下 下 下 下 下 下 下 下4.4.2 建立部署图下 下 下 下 下 下下 下 下 下 下web下 下 下web下 下 下下 下 下 下 下web下 下 下web下 下 下 下 下 下 下 下该系统的浏览器端与 web 服务器端通过 http 进行通信;web 浏览器层由位于 Web 服务器层的控制器生成,但实际运行与客户机端的 Web 浏览器之上。Web 服务层的所有设计元素安装并运行与web 服务器之上。应用服务层中的所有设计元素安装并运行于应用服务器上。应用服务器与数据库服务器通过 JDBC 协议进行通信。