软件工程导论-机票预订系统

这篇文章是一个关于机票预定系统的实验。废话不多说直接开始!!!

这里是机票预订系统的业务流程

航空公司操作员录入航班信息并对其维护,可以查询和统计旅客信息、订单信息及航班信息。旅客首次进入系统需要注册,在此系统中订票、取票和退票,系统对订票、取票和退票信息进行审核,旅客接收订票成功通知、取票和退票成功通知。系统时钟在旅客行程当日发送行程通知,提醒旅客预订航班的起飞时间,以免旅客忘记行程。旅客还可以查询航班信息,查询和修改个人基本信息,查询个人订单。

另外,航空公司操作员在旅客已取票情况下,可以在期限范围内为旅客完成退票,操作流程和旅客退票流程基本相同。

直接实验结果上图

一、功能建模

大致的业务流程图

顶层数据流图,这个图的有点急,数据流文字有点没有对上,不过大致方向是对的。

一层数据流图:

二层数据流图

E-R图,这个可能有点出入

状态转换图

二、概要设计

航班信息维护模块分解

旅客信息维护模块分解

订票模块分解

取票模块分解

退票模块分解

旅客信息查询模块分解

操作员信息查询模块分解

输入数据模块的分解

输出数据模块的分解

体系结构图

暂时就写这么多吧!后面本来应该加上一些流程图之类的,但是感觉没有什么必要就打算偷个懒。关于流程图里面的环形复杂度计算,环形复杂度V(G)=E-N+2P,E是流图中边的条数,N是结点数,P是图中的连通分量的数量,通常P是等于1。

未经本人允许不可转载

<think>好的,用户想用PowerDesigner绘制机票预订系统数据流图(DFD)。首先,我需要回忆一下DFD的基本概念和PowerDesigner的操作步骤。根据用户提供的引用内容,引用[1]提到数据流图的元素含义,引用[2]和[3]讨论了使用PowerDesigner绘制DFD的方法,引用[4]则涉及导出图片的步骤。 首先,用户可能需要了解DFD的基本元素,比如外部实体、处理过程、数据存储和数据流。这些元素在DFD中分别用不同的图形表示,例如矩形代表外部实体,圆形或椭圆代表处理过程,平行线或矩形代表数据存储,箭头表示数据流。这些都是需要明确的基础知识,用户可能已经了解,但作为指导步骤的一部分,应该简要提及。 接下来,具体到PowerDesigner的操作步骤。根据引用[3]中的步骤,可能需要先创建新的DFD模型。用户需要打开PowerDesigner,选择File > New Model,然后选择Data Flow Diagram模型类型。这里可能需要确认版本是否支持,比如是否在16.5版本中有该选项。如果找不到,可能需要检查是否正确选择了模型类型或者软件版本是否支持。 然后,绘制顶层DFD。顶层DFD通常展示系统与外部实体的交互。用户需要确定机票预订系统的外部实体,比如乘客、航空公司、支付系统等。这些外部实体需要用矩形图标表示。处理过程可能包括“预订机票”、“支付处理”、“发送确认信息”等,每个处理过程用圆形或椭圆表示。数据流连接这些元素,比如乘客提交预订请求,系统确认后发送给航空公司,这些流程需要用箭头表示。 接下来是分层细化。引用[3]提到分层数据流图的画法,可能需要将顶层处理过程分解为更详细的子图。例如,“预订机票”可能分解为选择航班、输入乘客信息、验证信息等子处理过程。这时候需要创建子DFD,每个子处理过程对应一个子图,并确保数据流连贯,避免层级之间的数据流断裂。 数据存储的添加也是关键步骤。例如,乘客信息、订单记录、航班数据库等需要存储的数据,用平行线图标表示。需要检查数据存储是否正确连接到处理过程,比如“预订机票”处理过程会读取航班数据库,并写入订单记录。 调整布局和连接是确保DFD清晰易读的重要步骤。可能需要使用对齐工具、调整箭头走向,避免交叉混乱。引用[4]提到导出图片的方法,用户完成绘制后可能需要导出为PNG或彩色图片,这部分可以在最后步骤中说明。 验证和优化方面,用户需要检查每个层级的数据流是否闭合,处理过程是否有输入输出,外部实体是否只与系统交互而不参与内部处理。此外,是否需要添加数据字典或说明文档来辅助理解,这也是优化的一部分。 可能的疑问点:用户可能在分层细化时遇到如何处理层级间数据流的问题,比如父过程的输入输出如何对应到子过程的输入输出。需要确保子图的边界与父过程的数据流匹配,使用相同的接口。此外,数据存储的位置是否正确,是否在需要的地方被正确引用。 最后,用户可能需要相关问题的建议,比如如何优化DFD的结构,或者如何与其他图表结合使用。根据引用中的示例,可以生成相关问题,比如DFD的分层注意事项,或如何验证数据流图的正确性。</think>### 使用PowerDesigner绘制机票预订系统数据流图(DFD)的步骤 #### 1. **理解DFD核心元素** - **外部实体**:矩形表示(如乘客、航空公司、支付系统)[^1] - **处理过程**:圆形/椭圆表示(如“预订机票”“生成订单”) - **数据存储**:平行线表示(如“航班数据库”“订单记录”) - **数据流**:箭头表示(如“预订请求”“支付信息”) #### 2. **创建DFD模型** 1. 打开PowerDesigner,选择 `File > New Model > Model types > Data Flow Diagram`[^3]。 2. 设置模型名称(如“机票预订系统”),选择DFD版本(建议默认)。 #### 3. **绘制顶层DFD(上下文图)** - **步骤**: 1. 拖拽 **外部实体**:添加乘客、航空公司、支付系统。 2. 添加 **主处理过程**:命名为“机票预订系统”(中心圆角矩形)。 3. 连接 **数据流**: - 乘客 → 系统:提交预订请求、个人信息。 - 系统 → 航空公司:查询航班、发送订单。 - 系统 → 支付系统:发起支付请求。 - 系统 → 乘客:返回确认信息、电子机票[^2]。 - **示例图**: ``` [乘客] --提交预订请求--> (机票预订系统) --查询航班--> [航空公司] (机票预订系统) --生成订单--> [订单记录] ``` #### 4. **分层细化(一级DFD)** - **分解主处理过程**: 1. 右键点击“机票预订系统”处理过程,选择 `Decompose Process`[^3]。 2. 绘制子流程: - **处理过程**: - 查询可用航班 - 验证乘客信息 - 生成订单 - 处理支付 - 发送电子机票 - **数据存储**: - 航班数据库(存储航班时刻、座位) - 订单记录(存储订单状态) - 支付日志(记录交易信息) 3. **连接数据流**: - 乘客信息 → 验证乘客信息 → 订单记录 - 支付请求 → 处理支付 → 支付日志 #### 5. **添加数据存储与细节** - **关键数据存储设计**: - `航班数据库`:需关联“查询可用航班”和“生成订单”过程。 - `支付日志`:需接收“处理支付”的输出,并向外部实体(如银行)发送确认信号[^4]。 - **示例代码结构**(非必需,辅助说明逻辑): ```python class 航班查询: def 获取航班(日期, 目的地): 连接航班数据库() return 可用航班列表 ``` #### 6. **验证与优化** - **检查项**: - 所有外部实体仅与系统交互,不直接参与内部处理。 - 每个处理过程至少有一个输入流和一个输出流。 - 分层后子图的数据流需与父图严格对应(如“生成订单”子流程需包含父图中的全部输入/输出)。 #### 7. **导出与文档** - 使用 `Edit > Export Image` 导出PNG或彩色图片。 - 添加数据字典说明(如“订单记录”包含字段:订单ID、乘客ID、航班号、状态)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值