SAD—系统分析和设计 “机票预订系统”_软件工程导论大作业

求打赏求收藏求转发!

提供PDF资源

https://download.csdn.net/download/weixin_43781565/12428947

(待审核后可供下载)

Peace and love

摘要

随着社会水平的提高和国家经济的发展,人们对美好生活的定义正在日益提高,而旅游正成为人们享受美好的生活的第一大方式。随着航空业的不断进步,飞机票价日益“亲民化”,也使得越来越的人们选择乘坐飞机作为自己的出游方式,节约时间成了飞机的主要优势。

但面对越来越庞大的乘客数量,订飞机票的方式也早已不再像过去的人工窗口了。随着互联网的发展,智能手机,移动支付等技术的出现,使得在线订票成为可能。所以,作为任何一个有前瞻性的航空公司,开发自己公司的机票预定系统都是一件非常有必要的事。通过系统将旅行社,乘客与航空公司联结起来,实验机票订购一体化的流水线操作,不仅能降低售卖机票的人工成本,还能节约乘客与旅行社的订票时间,改善乘客的旅行体验,并提升航空公司的知名度。

为了使航空公司适应目前的需求,促进机票预订管理信息化,不断满足乘客预订机票的要求,争取更好的经济效益,开发一个适用于航空公司的机票预定系统,是一件事半功倍的策略。

因此,我们就“机票预定系统”进行系统分析和设计,分析出系统的需求,对系统的基本功能进行设计,得出系统使用等方面的问题,并在最后对本系统做出客观评价,指明了系统的现实意义、缺点以及系统的升级方向。

 

关键词:SAD 机票预订 系统分析 需求分析 功能设计

 

 

 一. 概述

1.1 引言

本次课程设计实验,主要是通过设计一个“机票预订系统”,训练我们在软件工程导论课程中学习的有关面向对象设计部分,以及软件系统设计部分的相关知识的应用能力。通过需求分析,系统设计,结论等部分,运用学习的知识以及相关的图表,实现“机票预订系统”的原型设计与系统分析文档的编写。

1.2 编写目的

完成“机票预订系统”的需求分析与系统设计,利用面向对象的思想拆分细化相关的功能,进行类(class)的设计,完成编码前的主要工作。

1.3 问题描述

为方便乘客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的乘客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为乘客安排航班,印出取票通知和账单,乘客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给乘客。

1.4 参考文献

《软件工程导论》(第六版),张海藩 牟永敏编著,清华大学出版社

  • 需求分析

2.1 项目概述

2.1.1 系统目标

设计机票预订系统,让旅行社通过该系统为乘客预定制定航空公司的机票,并打印相关凭证,以达到流水线操作。

2.1.2 用户及数据

系统中的用户分为三个,分别是:

  1. 航空公司
  2. 乘客
  3. 旅行社

其中主要的对象是航空公司,旅行社和用户为航空公司提供必要的信息,如姓名、性别、工作单位、身份证号码等,然后由航空公司对相关的信息进行处理,乘客为主要的信息提供者,而旅行社作为信息交换的中间桥梁,将乘客提供的相关字段提交给航空公司。

 

 
  

图2.1 基本数据流图

2.1.3 系统约束与假设

我们规定在使用系统的过程中,乘客所提供的数据真实有效切符合相关法律,旅行社在输入信息时能按照系统要求做到准确无误,且在数据传输的过程中不会出现相关的异常,与此同时,航空公司在处理信息时不会出现异常。

2.2 数据流程图 (DFD)

2.2.1 定义

数据流图或数据流程图(Data Flow Diagram)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果,它从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。

2.2.2 数据流图的细化

基于2.1.2中的图2.1基本数据流图,我们得到了系统中大致的数据流向,我们可以基于此继续细化其中的数据。

由于订票系统是设立在航空公司之中,那么我们首先可以将“航空公司”更改为我们的“订票系统”,用于表示处理我们传递的数据。

 

 
  

图2.2 DFD第一次优化

其次,我们可以将整个订票系统的功能划分为三个阶段,分别是由旅行社“记录乘客信息”并“传递乘客信息”给系统,由系统“安排机票”并“打印取票凭证”,交给乘客。

由此我们可以得到第二次优化过的DFD,如下:

 

 
  

图2.3(a) DFD第二次优化

与此同时,在乘客进行取票时,系统还需“核对乘客信息”并“打印机票”给乘客:

图2.3(b)

 
  

 DFD第二次优化

最终,我们得到了系统的数据流图如图2.3所示。

2.3 用例视图(User Case)

2.3.1 定义

用例图(User Case)是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图,是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模

我们可以根据在2.2中得到的数据流程图,分析得到系统的三个用户的用例图。

 

 

 

 
  

图2.4 机票预订系统用例图

 

2.3.2 用例分析与详述

2.3.2.1 参与者(Actor)

  1.  Passager 乘客
  2.  Agency 旅行社
  3.  System(Airline Company)预订系统(航空公司)

2.3.2.2 用例(Use Case):

  1.  Booking(预订机票)

用例参与者:系统,旅行社

用例说明:旅行社向系统输入信息并预订机票

  1.  ManageBill(管理账单)

用例参与者:系统,旅行社

用例说明:系统与旅行社进行账单的查询,添加等管理操作

  1.  ManagePassanger(管理乘客)

用例参与者:系统,旅行社

用例说明:系统与旅行社进行预定机票的乘客的查询,添加等管理操作

  1.  Searching(查询机票信息)

用例参与者:系统,旅行社,乘客

用例说明:系统,旅行社与乘客对相关的机票信息进行查询

  1.  SubmitRequest(提交订票申请)

用例参与者:旅行社,乘客

用例说明:乘客向旅行社提交订票申请

  1.  PickUpTickets(取票)

用例参与者:系统,乘客

用例说明:系统向乘客提供取票凭证

  1.  ManagePick-up(管理取票信息)

用例参与者:系统

用例说明:系统对所有的取票信息进行的查询,添加等管理操作

三. 系统分析

3.1 类图(Class diagram)设计

3.1.1 定义与分析

类图(Class diagram)是显示模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系类图不显示暂时性的信息。类图是面向对象建模的主要组成部分,是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解。

我们可以根据之前2.3中的用例图,结合具体问题并稍作修改,通过面向对象的相关知识,我们可以得到程序中包含的类有:

  1. System (系统)
  2. Passanger (乘客)
  3. Agency (旅行社)
  4. Manage (管理)
  5. Searching (查找)

并通过分析类之前的关系,我们可以得到本系统的类图如下:

 

 

 
  

图3.1 类图设计及类的泛化

 

3.1.2 类分析与详述

  1. Searching(查找)

Searching类是Passanger类,Agency类与System类的基类。

其中包含的方法有:

+ Searching(String cityFrom,String cityTo):  bool

public修饰,返回值为bool,参数为String cityFrom,String cityTo,函数名为Searching,用于查询机票的相关信息,参数需输入出发地与目的地,将会显示具体的信息并返回true,如果无条目则返回false。

  1. Manage(管理)

Manage类是Agency类与System类的基类。

其中包含的属性有:

+ passangerList: String []

public修饰,String类型的字符串数组,用于存放对应乘客的个人信息。

+ billList:String[]

public修饰,String类型的字符串数组,用于存放对应乘客的账单信息。

其中包含的方法有:

+ ManageBill():bool

public修饰,返回值为bool,参数为void,函数名为ManageBill,用于管理乘客的账单,对账单信息进行增删改查等相关操作。操作成功将会返回true,否则返回false。

+ ManagePassanger():bool

public修饰,返回值为bool,参数为void,函数名为Manage- Passanger,用于管理乘客的个人信息,对个人信息进行增删改查等相关操作。操作成功将会返回true,否则返回false。

  1. System(系统)

继承自Manage类与Searching类。

其中包含的方法有:

+ ManagePick-up(String idNum):void

public修饰,返回值为void,参数为String idNum,函数名为ManagePick-up,用于利用乘客的身份证号码(idNum),查找并打印乘客的取票凭证。

  1. Passanger(乘客)

继承自Searching类。

其中包含的属性有:

+ name: String

public修饰,String类型,用于存放对应乘客的姓名。

+ sex: Char

public修饰,Char类型,用于存放对应乘客的性别,用M与F表示。

+ callNum: unsign long

public修饰,unsign long类型,用于存放对应乘客的电话号码。

+ idNum: String

public修饰,String类型,用于存放对应乘客的身份证号码。

+ workUnit:String

public修饰,String类型,用于存放对应乘客的工作单位。

其中包含的方法有:

+ SubmitRequest(String cityFrom,String cityTo): bool

public修饰,返回值为bool,参数为String cityFrom,String cityTo,函数名为SubmitRequest,用于乘客在输入自己的出发地与目的地后,向旅行社提交订票申请,成功提交返回true,否则返回false。

+ PickUpTickets(String idNum): bool

public修饰,返回值为bool,参数为String idNum,函数名为PickUpTickets,用于乘客输入自己的身份证号码后,获取取票凭证,成功提交返回true,否则返回false。

  1. Agency(旅行社)

继承自Manage类与Searching类。

其中包含的属性有:

+ name: String

public修饰,String类型,用于存放旅行社的名称。

其中包含的方法有:

+ Booking(String planeNum, int time): bool

public修饰,返回值为bool,参数为String planeNum, int time,函数名为Booking,用于旅行社输入对应的航班号与时间后,进行订票操作,成功返回true,否则返回false。

3.2 时序图(Sequence Diagram)分析

3.2.1 定义

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

我们可以根据3.1中的类图获得相关用例参与者的程序动作,然后经过分析,可以获得具体的用例时序图。

  1.  Passanger(乘客)

乘客首先需要从系统中查询自己所需要的机票,记录下相关的信息,之后将相关的机票信息提交给旅行社,由旅行社安排机票,并获得印出取票通知和账单,在出发前用身份证号码利用取票通知在系统取出机票。

 

 

 
  

图3.2.1 Passanger时序图

 

  1.  Agency(旅行社)

旅行社首先接收到乘客方面传输的订票申请,其次进行对应机票的查询,并向系统提交订票申请,由系统返回对应乘客的取票信息与账单,并下发给乘客。

 

 

 

 

 

 

 

 

 

 

 

图3.2.2 Agency时序图

 

  1.  System(系统)

系统收到乘客的查询请求返回对应的机票信息,之后接收旅行舍发出的预定申请,安排机票,并返回相关的取票信息和账单,最后乘客提出取票请求,系统打印机票。

 

 
  

图3.2.3 System时序图

本次课程设计实验,通过设计“机票预订系统”,并利用软件工程导论中面向对象方法学的知识,从系统的需求分析开始,利用数据流图理清预订系统的整个数据流向和整体流程,然后利用用例图,进行系统相关功能的设计。系统分析中我们基于需求分析中的相关内容,进行类图的绘制与类之间关系的设计,最后利用时序图明晰系统中各个角色的操作流程,完成了对整个机票预订系统的前期系统分析。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值