chestnutlzj / plane

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

附件:实验报告样本

目录 一、需求规格说明书 4 1.概述(Summary) 4 1.1项目的目的与目标(Purpose and Aim of Project) 4 1.2 术语定义(Terms Glossary) 4 1.3 相关文档(Related Documents) 4 2.问题初始分析(Early Analysis) 4 2.1 用户需求描述(User Requirement Description) 4 2.2 初始功能提取(Early Function Distill) 7 3.系统用例分析(System Use Case Analysis) 9 3.1 角色分析(Actor Analysis) 9 3.2 用例分析(Actor Analysis) 9 3.3 用例建模(Use Case Modeling) 11 3.4 数据建模(Data Modeling) 26 4.非功能需求(No-Functional Requirement) 27 4.1 系统性能目标(Performance of Target System) 27 4.2 安全性(Security) 27 4.3 可靠性(Dependability) 28 4.4 灵活性(Agility) 28 4.5 特殊需求(Special Requirements) 28 4.6 目标系统假设与约束条件(Suppose and Restriction of Target System) 28 二、设计规格说明书 29 1.引言(Introduction) 29 1.1 目的(Purpose) 29 1.2 命名规则(Naming Rule) 29 1.3 术语定义(Terms Glossary) 29 1.4 参考资料(References) 30 1.5 相关文档(Related Documents) 30 2.总体设计(Design of Collective) 30 2.1 体系结构设计(Design of Architecture) 30 2.2 子系统清单(Subsystem List) 31 2.3 模块设计(Module Design) 31 2.3.2 实现类清单 39 2.3.3 关键程序逻辑设计 40 3.数据结构设计(Design of Data Structure) 43 3.1 数据库表名清单(DB Table List) 43 3.2 数据库表之间关系说明(Relation of DB Table) 43 三、源程序清单 45 1订票模块 45 1.1 描述(Description) 45 1.2 代码(Program) 45 2航班查询模块 47 2.1 描述(Description) 47 2.2 代码(Program) 47 四、测试报告 49 1.概述(Summary) 49 1.1 项目简介(Project Synopsis) 49 1.2 术语定义(Terms Glossary) 49 1.3 参考资料(References) 49 3.功能测试(Function Test) 57 3.1 系统功能需求(Function Request of Target System) 57 3.2. 功能测试报告(Report for Function Test) 58 4.测试结论(Test Verdict) 59 五、实验总结 61

一、需求规格说明书 1.概述(Summary) 1.1项目的目的与目标(Purpose and Aim of Project) 项目的目的是对开发本系统意图的总概括。项目的目标是将目的细化后的具体描述。项目目标应是明确的、可度量的、可以达到的, 项目的范围应能确保项目的目标可以达到。 对于项目的目标可以逐步细化,以便与系统的需求建立对应关系,检查系统的功能是否覆盖了系统目标。 1.2 术语定义(Terms Glossary) 将该用户需求报告中的术语、缩写进行定义, 包括用户应用领域与计算机领域的术语与缩写等。 1.3 相关文档(Related Documents) 说明用户需求报告的变更,以及可能受变更影响的其他相关文档,如:设计说明书。 2.问题初始分析(Early Analysis) 2.1 用户需求描述(User Requirement Description) 本系统面向三类用户授权,共有三种登陆模式,包括管理员登陆模式、用户登陆模式,旅行社登录模式,且三类用户登陆后的使用权限与功能有所差异。 设有如下场景: 1) 用户: //注册场景 彬彬初次使用机票预订系统,需要先进行个人信息注册。注册界面显示,填写用户名,邮箱或手机号,密码,需要在填写的邮箱中点击激活链接。激活成功后彬彬可以登录用户界面。 //订票场景 彬彬想买一张从天津到上海的机票,彬彬先在登陆界面输入账号的密码登录用户界面,然后在首页的“筛选条件”填写出发地和目的地,出行日期等内容,点击“确定”。跳转到查询结果页面,在页面中显示机票的各项信息,点击信息最右边的“预定”按钮进行预定。 //退票场景 彬彬想退机票,点击用户首页的“订单管理”按钮,跳转到“订单管理界面”在所显示的机票信息的右面点击“退票”,点击“确认”按钮,缴纳手续费之后显示退票成功。 2)旅行社: //旅行社预定机票 天天是旅行社的管理员,接收旅客的订票需求,记录旅客信息,并将收集到的身份信息录入系统(姓名,性别,工作单位,身份证号码,旅行时间、旅行目的等)。根据旅客的航班需求进行检索,查看航班信息(出发地、目的地、往返时间、是否直飞、经济舱等类型、乘客类型、所属航空公司),最后选择合适的航班信息并向旅客发出确认,得到允许后,根据旅客提交的信息批量进行航班预定。 3)管理员: //管理“航班信息”和“乘客信息” 管理员君君通过账号密码登录管理员界面,点击“航班信息”,输入航班编号,出发地,目的地等信息点击“查询”可以在页面中显示出符合条件的航班信息。 管理员君君点击“乘客信息”,输入航班编号,乘机人姓名等信息点击“查询”之后,在页面中显示符合条件的乘客信息,可以根据乘客的申请,对乘客的信息进行修改。 2.1.1旅客 (1)注册 若无账号需要先进行注册,在注册页面必须输入必填信息(用户名,手机号,密码,邮箱等)。系统判断格式是否正确,内容是否一致,若符合则注册成功。若失败,提示错误信息。 (2)登录 旅客注册之后可以登录,登录之后可以进行机票的预定,同时可以保持用户登录状态一段时间,不需要每次都重新登陆。如果登陆失败,提示错误信息。 (3)找回密码 若用户忘记密码,可以根据用户注册时预留的信息进行找回。例如向用户预留的邮箱发送验证码或者向预留的手机号发送验证码。且验证码60秒后可以重新发送。验证成功则可以重新设置密码,但密码不能和上一次的一致。 (4)修改密码 若旅客想修改密码,需要输入用户名、现在的密码和想要修改的密码。后台认证用户名和密码对应之后可以进行修改,若失败,提示失败信息。 (5)实名认证 购买机票需要旅客的实名信息(真实姓名,性别,身份证号等)与户籍系统进行比对,认证成功则可以购买机票,失败提示错误信息。 (6)注销登录 在登录状态下可以注销登录。 (7)切换用户 登录状态下可以切换用户,需要输入要切换用户的信息,比对成功后可以切换。失败提示错误信息 (8)旅客按照条件搜索航班信息 旅客在系统搜索栏输入条件(出发地、目的地、往返时间、是否直飞、经济舱等类型选择、乘客类型、所属航班公司)进行航班检索,检索成功显示符合条件的航班信息。 (9)在线选座 旅客在已经购票的状态下可以进行所购航班的座位选择,通过可视化座位位置,让用户方便选择理想的位置。若旅客没有进行选座,起飞前12小时系统将自动为旅客分配位置。 (10)通过带有航线的地图可视化选择中转方案 通过系统中的百度地图,可视化的选择中转方案,让用户对中转地区、时间有清晰的了解,能够直观的选择方案 (11)查看帮助、联系在线客服 旅客遇到问题可以点击系统的帮助按钮查看相应的解决方案,若无法解决可以联系系统的在线客服进行解答。 (12)确认订购,付款 若旅客为个人用户则在确定所选航班的各项信息之后可以提交机票订单进行付款,可以选择不同的付款方式(微信,支付宝,信用卡等)。付款成功后将所定机票的信息加入到旅客的电子票夹中。付款失败提示失败信息。若旅客通过旅行社进行订票,旅行社收集旅客的信息,由旅行社向航空公司提出申请,创建订单成功后由旅客直接向航空公司付款。 (13)查看已订航班信息 旅客在登录状态下可以在系统的个人电子票夹中查看已经预订的航班信息。(包括以往的订票信息) (14)改签退票 若旅客为个人用户,则在登录状态下,点击电子票夹中的航班信息,可以进行改签和退票,操作成功后根据相关航班的政策扣除手续费。若旅客通过旅行社进行订票可以联系旅行社提交退票订票请求。旅行社根据收集的信息向航班公司批量提交改签退票请求。 (15)打印取票通知的账单 旅客在登录状态下,可以查看已经预定的订单信息进行打印订单的详细信息和账单。 2.1.2旅行社 (1)注册 若无账号需要先进行注册,在注册页面必须输入必填信息(用户名,手机号,密码,邮箱,旅行社名称、地址、资质等)。系统判断格式是否正确,内容是否一致,若符合则注册成功。若失败,提示错误信息。 (2)登录 旅客注册之后可以登录,登录之后可以进行机票的预定,同时可以保持用户登录状态一段时间,不需要每次都重新登陆。如果登陆失败,提示错误信息。 (3)修改密码 若旅行社用户想修改密码,需要输入用户名、现在的密码和想要修改的密码。后台认证用户名和密码对应之后可以进行修改,若失败,提示失败信息。 (4)找回密码 若用户忘记密码,可以根据用户注册时预留的信息进行找回。例如向用户预留的邮箱发送验证码或者向预留的手机号发送验证码。且验证码60秒后可以重新发送。验证成功则可以重新设置密码,但密码不能和上一次的一致。 (5)机构认证 申请作为旅行社用户,需要提交相应的机构认证,须向系统相关证件验明身份,并提交相应的保障证明。审核通过后在系统中得到旅行社身份。 (6)接收旅客信息,并提交申请 接收旅客的订票需求,记录旅客信息,并将收集到的身份信息录入系统(姓名,性别,工作单位,身份证号码,旅行时间、旅行目的等)。根据旅客的航班需求进行检索,查看航班信息(出发地、目的地、往返时间、是否直飞、经济舱等类型、乘客类型、所属航空公司),最后选择合适的航班信息并向旅客发出确认,得到允许后,根据旅客提交的信息批量进行航班预定。 (7)接收旅客的改签退票请求 接受旅客的改签退票请求,由旅行社代向航空公司提交改签退票请求,并根据航空公司相关政策扣除手续费,缴纳或退回费用直接由旅客和航空公司进行,旅行社不进行金钱中转。 (8)打印取票通知的账单 旅行社在登录状态下,可以查看已经预定的订单信息批量进行打印订单的详细信息和账单。并将文件发送给各个旅客。 (9)向旅客公布由旅行社推荐的航班信息 向旅客公布由旅行社推荐的航班信息(出发地、目的地、往返时间、是否直飞、经济舱等类型、乘客类型、所属航空公司),需要得到旅客的确认,确认成功和生成订单,并提醒旅客及时缴费、题型旅客打印取票通知等。 2.1.3预订系统管理员 (1)注册 若无账号需要先进行注册,在注册页面必须输入必填信息(用户名,手机号,密码,邮箱,旅行社名称、地址、资质等)。系统判断格式是否正确,内容是否一致,若符合则注册成功。若失败,提示错误信息。 (2)登录 旅客注册之后可以登录,登录之后可以进行机票的预定,同时可以保持用户登录状态一段时间,不需要每次都重新登陆。如果登陆失败,提示错误信息。 (3)找回密码 若用户忘记密码,可以根据用户注册时预留的信息进行找回。例如向用户预留的邮箱发送验证码或者向预留的手机号发送验证码。且验证码60秒后可以重新发送。验证成功则可以重新设置密码,但密码不能和上一次的一致。 (4)修改密码 若管理员想修改密码,需要输入用户名、现在的密码和想要修改的密码。后台认证用户名和密码对应之后可以进行修改,若失败,提示失败信息。 (5)实名认证 预订系统管理员要进行实名认证提供相应的个人信息(真实姓名,性别,身份证号码等),审核通过后可以注册账户。 (6)修改航班信息 管理员根据旅客或者旅行社提交的请求,进行改签或者退票,并根据航空公司相关政策扣除手续费。 (7)录入航班信息 管理员根据旅客或者旅行社提交的航班信息,进行信息的录入。 (8)发布延误,取票等通知 管理员根据航空公司的相关通知,向旅客或者旅行社传达延误,取票等通知。 (9)查看各个航班预定情况 管理员可以查看已经录入到系统的订单详情,能够全面了解每个航班的具体信息(上座率,是否延误等),并进行信息管理 (10)查看和查询乘客信息 管理员可以查看已经录入到系统的用户信息(用户名、密码,预留手机号、预留邮箱等),方便旅客进行信息修改操作。 2.2 初始功能提取(Early Function Distill) 用如表2-1所列,逐项叙述对软件所提出的功能要求,说明输入什么量、经怎样的处理、得到什么输出。 表2-1 功能需求点列表 编 号 功 能 名 称 使 用 人 功 能 描 述 输 入 内 容 输 出 内 容 1 登录 所有人 系统首页输入用户名密码,点击登录,进入系统。旅客、旅行社、管理员会进入不同的界面 用户名 密码 系统首页 2 注销 所有人 登出系统 3 用户信息管理 所有人 编辑当前登录用户的个人信息 要修改的用户信息 修改后的用户信息 4. 管理用户 管理员 管理员对乘客用户进行增删改查管理 用户账号 该用户账号对应信息 5 录入旅客信息 旅行社 记录旅客个人信息,并将对应信息输入系统 姓名、性别、工作单位、身份证 号码、 该旅客信息 6 接收旅客需求 旅行社 记录旅客需求,比如往返时间,目的地,是否直飞 旅客需求 该旅客的需求 7 筛选适合的机票 旅行社 根据旅客需求选择在指定往返时间内的出发地以及目的地的并且符合旅客对于舱位要求的机票 旅客需求 符合条件的机票 8 导出 旅行社 筛选出符合旅客需求的航班信息 取票通知和账单 9 通知旅客 旅行社 向顾客发布实时票务订购消息 以及账单,取票通 知,提醒旅客及时交费 旅客信息 账单,取票通知

10 接收旅客退票需求 旅行社 接收旅客退票需求,根据旅客信息将退票信息输入系统,进行退票 旅客姓名、身份证号码 退票成功 11 修改航班信息 管理员 根据航班实时情况,对航班信息就行实时更新 航班号 最新状态的航班信息 12 录入航班信息 管理员 对航班进行线路规划,录入航班信息 航班号 添加成功 13 对机票进行增删改查 管理员 管理员进入自己的管理 界面后,可进行车票新的 添加删除和修改 点击添加、删除、或修改机票按钮 添加机票成功或修改成功或删除成功 14 查询预定情况 管理员 根据订票情况,查询本次航班的余量 航班号 已定数目,剩余数目 15 查询乘客信息 管理员 查询乘客具体信息 乘客姓名,身份证号码 乘客信息 16 检索航班 旅客 查询出发地,目的地,往返时间,选择是否直飞,舱位类型,乘客类型,航空公司等 航班具体要求 符合要求的航班以及航班余票 17 在线选座 旅客 根据用户不同需求选取不同的座位 选择座位要求选项 选座结果提示信息 18 航线地图 旅客 通过查看带有航线标记的地图,可视化不同航线 周转方案,直观 19 提示帮助 旅客 解决用户提出的问题以及人工客服 描述用户问题 显示解决方案 20 支付 旅客 用户在提交订单的规定时间之内支付机票费用 选择付款方式 显示支付结果 21 查看订单 旅客 用户在提交订单之后查看订单信息 订单编号 显示查询结果 22 改签退票 旅客 用户可以根据需求改签或者退票 航班具体要求 符合要求的航班 23 通知信息 旅客 提示用户打印取票通知和帐单 具体提示信息 24 向旅行社提交改签退票订票请求 旅客 用户根据需求向旅行社提交申请 申请变更内容 符合要求的航班 25 根据旅行社提供的账单交费 旅客 用户在规定时间内交费 账单信息 交费结果 3.系统用例分析(System Use Case Analysis) 3.1 角色分析(Actor Analysis) 采用列表的方式说明系统的每一个角色,包括角色名称、所属部门并简要描述该角色需要应用系统完成的工作。 表2-2 角色列表 编 号 角色名 所属部门 简要描述 1 旅客 个人 实名认证注册并登录后应用系统查询航班信息,选择适合自己的航班并选座后提交身份信息并完成支付,打印机票或完成改签退票。通过旅行社代理购票,待旅行社完成订票后完成支付可打印取票通知和账单。 2 旅行社 团体 接受旅客的订票需求,机构认证注册后登录应用系统查询所需航班,选择合适的航班并提交旅行社每个成员信息,向旅客发送支付通知和航班信息。接受旅客的退票需求,并通过应用系统完成旅客的退票流程。 3 预订系统管理员 系统 内部认证注册并登录到应用系统,录入和修改航班的信息,发布航班的登机、取票、延误、取消等信息。查看各个航班的预定和剩余座位等情况,以及查询订购机票的乘客信息。 3.2 用例分析(Actor Analysis) 采用列表的方式列出系统的每一个用例(基本用例,不包括精化后的扩展用例),包括用例名、角色、优先级、描述,如表2-3。 表2-3 用例列表 编号 用例名称 角色 优先级 描述 1 注册 旅客,旅行社,预订系统管理员 高 旅客、旅行社和预订系统管理员通过该用例完成实名认证注册,获得进入系统的权限。 2 登录 旅客,旅行社,预订系统管理员 高 旅客、旅行社和预订系统管理员通过该用例进入系统。 3 找回密码 旅客,旅行社,预订系统管理员 高 旅客、旅行社和预订系统管理员通过该用例向系统发送请求,系统通过身份认证后向用户的邮箱发送密码。 4 注销 旅客,旅行社,预订系统管理员 高 旅客、旅行社和预订系统管理员通过该用例注销系统中的个人信息 5 查看航班信息 旅客,旅行社,预订系统管理员 中 旅客、旅行社和预订系统管理员通过该用例按照搜索条件查看航班的具体信息以及中转信息等。 6 在线选座 旅客,旅行社 中 旅客、旅行社通过该用例选取所选航班上的剩余空座位 7 支付订单 旅客 中 旅客通过该用例完成个人或旅行社团体订购机票的费用 8 改签 旅客,旅行社 中 旅客、旅行社通过该用例根据航空公司的手续费等规定完成机票的改签,参加旅行社的旅客可通过旅行社代理改签。 9 退票 旅客,旅行社 中 旅客、旅行社通过该用例根据航空公司的手续费等规定完成机票的退票,参加旅行社的旅客可通过旅行社代理退票。 10 打印取票通知和帐单 旅客,旅行社 中 旅客、旅行社通过该用例打印所订购的机票的航班信息,包括转机信息 11 修改航班信息 预订系统管理员 高 预订系统管理员通过该用例可以修改航班的延误取消等信息 12 录入航班信息 预订系统管理员 高 预订系统管理员通过该用例录入新增的航班信息 13 发布通知 预订系统管理员 高 预订系统管理员通过该用例向旅客及旅行社发送航班的最新通知 14 查看航班预订情况 预订系统管理员 高 预订系统管理员通过该用例查看各个航班的预定以及空座情况 15 查看用户信息 预订系统管理员 高 预订系统管理员通过该用例查看注册的旅客以及旅行社的用户详细信息,订购机票情况等 16 查看订购历史 旅客,旅行社 高 旅客、旅行社通过该用例查看自己订购过的所有机票历史信息

3.3 用例建模(Use Case Modeling) 以子系统(模块)为单位画出各部分用例图、用例表、部分活动图(对于事件流复杂的用例画活动图)和用户界面原型。 3.3.1信息管理子系统用例模型 (1)用例图

图3-1 信息管理子系统用例图 (2)用例表与活动图 表2-3登陆用例表 用例名称 登录 参与者 用户 描述 用户通过登录获得系统的相关使用权。 前置条件和假设 用户进入登录界面并输入正确账号和密码。 主事件流 1.用户通过浏览器进入系统登录界面。 2.登录界面提示输入账号和密码。 3.输入个人账号和密码。 4.点击“登录”,若输入的账号和密码正确,则成功进入系统。 5.用户忘记密码,点击找回密码,输入个人信息验证是否本人,若验证通过,则可重新设置密码。 可选事件流 1.在第4步中点击“登录”时,若输入的账号不存在,则系统提示账号不存在,重新输入账号。 2.若输入的密码不正确,则系统提示密码不正确,重新输入密码。 3.若输入的个人信息不正确,则系统提示无法找回密码。 后置条件 用户进入系统主界面,执行相关操作。 表2-4注册用例表 用例名称 注册 参与者 用户 描述 用户通过注册获得登录系统的权利。 前置条件和假设 用户进入注册界面设置账号和密码。 主事件流 1.用户通过浏览器进入系统登录界面。 2.登录界面提示没有账号进行注册。 3.用户在注册界面设置个人账号和密码。 4.进行实名认证,绑定个人姓名,居民身份证信息。 5.点击“确认”,若输入的确认密码和密码正确,则用户成功注册。 可选事件流 1.在第3步中设置账号密码时,若输入的账号已存在,则系统提示账号已存在,重新设置账号。 2.若输入的确认密码不正确,则系统提示密码不正确,重新输入密码。 后置条件 用户完成注册,执行相关操作。 表2-5注销用例表 用例名称 注销 参与者 用户 描述 用户通过注销退出系统。 前置条件和假设 用户已经登录。 主事件流 1.用户登录进入系统界面。 2.系统界面提示注销账号。 3.用户在系统界面点击注销。 可选事件流 无 后置条件 用户完成注销,退出系统。 表2-6查看旅客信息用例表 用例名称 查看旅客信息 参与者 旅行社 描述 旅行社查看旅客的订票信息。 前置条件和假设 旅行社已经录入旅客的信息。 主事件流 1.旅行社登录进入系统界面。 2.输入旅客的姓名和居民身份证号。 3.点击查询进行查询旅客订票信息。 可选事件流 1.输入姓名和居民身份证号有误时提示信息错误 后置条件 旅行社查询旅客订票信息,执行相关操作。 表2-7查看订单信息用例表 用例名称 查看订单信息 参与者 旅客 描述 旅客查看订票信息。 前置条件和假设 旅客已经登录进入系统。 主事件流 1.旅客登录进入系统界面。 2.输入个人姓名和居民身份证号。 3.在订单界面点击已支付选项。 4.点击查询“未出行订单”进行查询预定订票信息。 5.点击“历史订单”显示该旅客过往的订票信息。 6.旅客有操作问题或订单问题点击“帮助提示”进行查看。 可选事件流 1.输入姓名和居民身份证号有误时提示个人信息错误。 后置条件 旅客查询订票信息,执行相关操作。 表2-8管理航班信息用例表 用例名称 管理航班信息 参与者 管理员 描述 管理员对航班信息进行管理。 前置条件和假设 管理员通过登录成功进入系统。 主事件流 1. 管理员登录进入系统界面。 2. 若要录入航班信息点击“新增航班”,输入航班号、起飞落地时间、目的地录入航班信息。 3.若要修改航班信息则点击“修改航班”输入航班号,对该航班信息比如起飞时间、落地时间、目的地、是否延误进行管理。

可选事件流 1.输入航班号有误时提示信息错误。 后置条件 管理员管理航班信息,执行相关操作。 表2-9查看信息用例表 用例名称 查看信息 参与者 管理员 描述 管理员对航班预定情况以及乘客信息进行查询。 前置条件和假设 管理员通过登录成功进入系统。 主事件流 1.管理员登录进入系统界面。 2.若要查询航班预定情况点击“查询航班”,输入航班号查询该航班预定情况。 3.若要查询旅客信息则点击“查询乘客”输入乘客姓名、居民身份证号或者输入航班号对查询该航班的乘客。

可选事件流 1. 输入航班号有误时提示信息错误。 2.输入乘客个人信息有误时提示信息错误。 后置条件 管理员查看信息,执行相关操作。

图3-2注册活动图

图3-3登陆活动图

图3-4登陆活动图

图3-5旅客查询活动图 (3)界面原型 (只画出和这部分功能有关的界面原型,注意各部分界面原型的风格要保持一致) 3.3.2 订票管理子系统用例模型 (1)用例图

图3-6订票管理子系统用例图 (2)用例表与活动图 订购机票用例表 用例名称 订购机票 参与者 旅客 描述 旅客可通过系统订购机票 前置条件和假设 旅客已登录,进入机票订购界面 主事件流 1.旅客输入筛选信息检索航班 2.系统加载出符合旅客要求的机票信息 3.旅客选择想要的机票类型 4.系统显示支付页面 可选事件流 1.在第1步中,如果系统没有符合要求的机票,则提示旅客没有符合的机票,并返回第1步 后置条件 筛选机票成功,系统跳转支付页面 旅行社协助订购机票用例表 用例名称 旅行社协助订购机票 参与者 旅行社 旅客 描述 旅行社根据旅客要求订购机票 前置条件和假设 旅客,旅行社已登录,进入团体购票界面 主事件流 1.旅行社负责人点击团体票订购按钮 2.旅行社接收旅客需求 3.旅行社筛选符合要求机票 4.系统显示相应航班的余票 5.旅行社负责人输入票数和机舱类型 6.系统产生一个订单 7.旅行社负责人将订单发给对应旅客等待支付 可选事件流 在第4步,如果系统没有符合要求的机票或余票不足,则提示旅行社没有符合的机票 后置条件 系统提示等待旅客支付 旅客支付用例表 用例名称 旅客支付 参与者 旅客 描述 旅客根据自己的筛选支付顶单 前置条件和假设 旅客筛选完航班确认订单进入支付界面 主事件流 1.旅客进入支付界面 2.旅客选择支付方式 可选事件流 1. 在第2步,如果余额不足或者网络错误,则提示支付失败 2. 在第2步,如果超过3分钟未完成支付,则取消订单 后置条件 系统显示支付成功跳转打印账单和取票信息

图3-7旅客订票活动图

图3-8旅行社订票活动图

(3)界面原型 总体界面风格: 我们设计的机票在线预定系统界面布局顺序符合人的观看习惯——自左而右、自上而下。各个界面风格统一,配有卡通小助手,可以很好地吸引用户的注意力。可以给系统用户和好的视觉体验。 1、 用户主界面 界面的上部分可以输入用户想要的条件,点击“确定” 跳转到对应条件的订单查询页面,如图3-9所示

图3-9 用户主页面 界面的下半部分(如图3-9所示)接入百度地图API能够让用户在地图上直观的看到始点到重点的距离和附近的城市等,能够帮助用户做出选择。

图3-9 用户主页面接入百度地图API

2.订单管理界面展示

图3-10 订单管理界面 4. 改签跳转界面

图3-11 改签跳转界面 5. 支付成功后订单操作显示

图3-12 支付成功后订单操作显示 6.退票提示显示

图3-13 退票提示显示 7. 取消订单显示

图3-14 取消订单显示 8. 支付显示

图3-15 支付显示 9. 预定但未支付订单状态显示

图3-16 预定但未支付订单状态显示 10. 预定但未支付订单操作显示

图3-17 预定但未支付订单操作显示 11. 支付成功后订单状态显示

图3-18 支付成功后订单状态显示 12. 支付成功后订单操作显示

图3-19 支付成功后订单操作显示 13.注册界面展示

图3-20 注册界面展示 14.登陆注册界面翻转展示

图3-21 登陆注册界面翻转展示 15.登陆界面展示

图3-22 登陆界面展示 16.航班检索总界面展示

图3-23 航班检索总界面展示 17.检索航班公司界面展示

图3-24 检索航班公司界面展示 18.检索日期界面展示

图3-25检索日期界面展示 19.舱位检索界面展示

图3-26舱位检索界面展示 20.预定界面展示

图3-27预定界面展示 21.在线选座界面展示上半部分

图3-28在线选座界面展示上半部分 22.在线选座界面展示下半部分

图3-29在线选座界面展示下半部分 3.4 数据建模(Data Modeling) 采用名词短语法结合CRC分析建立系统的分析类模型(域模型),要求按步骤画出关键抽象表、CRC卡和类图。 关键抽象表 候选的关键抽象 排除原因 选定的名字 用户 用户 用户邮箱 用户子类 手机 用户子类 身份类型 用户子类 航班 航班 起飞时间 航班子类 起飞地点 航班子类 落地地点 航班子类 票价 航班子类 选座 选座 舱位类型 选座子类 票价 选座子类 座位号 选座子类 管理员 管理员 CRC卡 用户 职责 协作者 用户名 密码 姓名 证件号 手机号 邮箱 旅客类型 乘客 航班 机票 登录() 注册() 修改个人信息()

管理员 职责 协作者 账号 密码 证件号 航班 机票 登录() 修改航班信息() 查询用户信息()

航班 职责 协作者 航班号 始发地 目的地 日期 准载客数 管理员 用户 旅行社 增加航班() 删除航班() 修改航班() 查看航班()

订单 职责 协作者 订单号 乘客号 乘客姓名 航班号 管理员 航班 用户 旅行社 选座() 订票() 查询()

选座 职责 协作者 订单号 航班号 出发站 终点站 起飞时间 落地时间 舱位类型 价格 用户 购票() 退票() 改签() 查询()

图3-30类图 4.非功能需求(No-Functional Requirement) 4.1 系统性能目标(Performance of Target System) 时间要求: 登录界面响应时间应在2秒内; 查询航班信息,用户信息等应在3秒内刷新; 在网络畅通时,带有航班标注信息的电子地图的刷新时间应在10秒; 管理员对航班信息的的修改,与数据传输应该在0.5秒之内; 数据的转换的传输时间应该在3秒之内, 机票管理系统在日常处理中的响应速度应当为秒级,达到实时要求,以及时回馈有效信息。 空间要求: 在同一时间内,每个账户最多使用一个终端进行登入; 支持的并行操作的使用者数:3000人; 对输入和输出数据的精度要求:对于人数需要精确到个位,对于机票费用精确到小数点后1位; 估计用户数为100,000人,日活跃用户人数为3,000左右,网络的带宽为100M带宽。 系统可以同时处理 1000个用户请求,并为3,000个并发用户提供浏览功能。 系统资源占用要求 :对CPU占用率控制在10%之内,内存占用率控制在5%之内。 数据库总容量控制在1T之内。 4.2 安全性(Security) 系统不应对系统管理员操作⼈员公开客户除名字与索引代码等必要信息之外的任何个⼈信息,做好隐私保护; 将各个用户权限划分明确,避免出现越级非法操作的情况 能经受一定强度的恶意攻击:如病毒(包括木马)攻击、口令猜测攻击、黑客入侵等,避免重要商业数据,隐私信息被人恶意盗取。 应该对用户的某些异常行为进行监测。如监测到用户的异地登入,立即要求用户完成手机号验证,否则无法继续系统的任何操作,并强制下线 4.3 可靠性(Dependability) 可靠性: 系统中的所有数据都需要及时做好备份,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。 系统运行应该保持流畅,且能够持续运行较长时间而不崩溃,在高并发的环境下保证数据能够被有效处理。 具有完善的测试。数据准备,测试用例较为完备,进行充分的测试 4.4 灵活性(Agility) 4.5 特殊需求(Special Requirements) 特殊需求 (1)进度需求:完成需求分析、系统架构、编写代码、测试、推广 (2)运行环境需求:标准谷歌浏览器 (3)培训需求:制作教学视频与常见问题文档 (4)操作系统平台:Windows 10 以上 (5)数据库系统平台:Mysql (6)开发语言:Java,Vue (7)开发工具:IDEA,vscode 4.6 目标系统假设与约束条件(Suppose and Restriction of Target System) 假设与约定条件是对预计的系统风险的描述, 如: (1)法律、政策、环境和文化等方面的限制。 (2)硬件、软件、运行环境和开发环境方面的条件和限制。 (3)可利用的信息和资源。 (4)系统投入使用的最晚日期。

二、设计规格说明书 1.引言(Introduction) 本章对该文档的目的、功能范围、术语、相关文档、参考资料、版本更新进行说明。 1.1 目的(Purpose) 本文档的目旨在推动软件工程的规范化,使设计人员遵循统一的概要设计书写规范,节省制作文档的时间,降低系统实现的风险,做到系统设计资料的规范性与全面性,以利于系统的实现、测试、维护、版本升级等。 1.2 命名规则(Naming Rule) 变量对象命名规则: 全局变量:按实际意义命名,如用户ID使用cust_id。 局部变量:按实际意义命名。 类名:首字母大写,例如:AdminView。 成员方法:按实际意义命名,例如注册为:regist。 数据库对象命名规则: 表名均按实际意义命名,例如:customer。 各表中属性名按实际意义命名,例如:cust_name 1.3 术语定义(Terms Glossary) 术语定义或解释一般用表格形式给出,如表3-1所示。 表3-1 术语定义或解释表 序 号 术 语 名 称 术 语 定 义 1 总体结构 软件系统的总体逻辑结构。按照不同的设计方法,有不同的总体逻辑结构。若采用面向功能或面向数据的设计方法,则总体逻辑结构为一树形的功能模块结构图。若采用面向对象或面向部件(构件)的设计方法,则总体逻辑结构为部件(构件)的组装图 2 外部接口 本软件系统与其他软件系统之间的接口,接口设施可以是中间件。接口描述包括:传输方式、带宽、数据结构、传输频率、传输量、传输协议 3 数据结构 数据结构包括:数据库表的结构、其他数据结构等 4 概念数据 模型CDM 关系数据库的逻辑设计模型,叫做概念数据模型。主要内容包括一张逻辑E-R图及其相应的数据字典 5 物理数据 模型PDM 关系数据库的物理设计模型,叫做物理数据模型。主要内容包括一张物理表关系图及其相应的数据字典 6 视图 在基表或其他视图之上建立的一张虚表,叫做视图,它具有物理表的许多性质,在数据处理和授权上很有用 7 角色 数据库中享有某些特权操作的用户,叫做角色。角色的权利通过授权来实现 8 子系统 具有相对独立功能的小系统叫做子系统。一个大的软件系统可以划分为多个子系统,每个子系统可由多个模块或多个部件组成 9 模块 具有功能独立、能被调用的信息单元叫做模块。模块是结构化设计中的概念 10 内部接口 软件系统内部各子系统之间、各部件之间、各模板之间的接口,叫做内部接口。接口描述包括:调用方式、入口信息、出口信息等 11 相关文件 相关文件是指当本文件内容变更后,可能引起变更的其他文件。如需求分析报告、详细设计说明书、测试计划、用户手册 12 参考资料 参考资料是指本文件书写时用到的其他资料。如各种有关规范、模板、标准、准则

1.4 参考资料(References) [1] 用户需求报告 [2] 数据库设计规范 [3] 命名规范 1.5 相关文档(Related Documents) [1] 源程序清单 [2] 测试计划及报告

2.总体设计(Design of Collective) 2.1 体系结构设计(Design of Architecture) 对软件体系结构方案的设计依据进行分析说明,要求至少分析两种以上的软件架构方案,分析不同方案对软件开发约束条件的支持程度,并进行方案的选择。 2.1.1 系统逻辑架构 采用包图画出系统的逻辑架构模型。

图2-1系统逻辑架构包图 2.1.2 系统物理架构 采用部署画出系统的物理架构模型。

图2-2系统物理架构部署图 2.2 子系统清单(Subsystem List) 子系统清单,如表3-2所示。 表3-2 子系统清单 子系统编号 子系统英文名 子系统功能简述 子系统之间的关系 SS1 Management information System 用户提交必要个人信息注册登陆,旅客旅行团可以查看订单等信息。 用户注册登陆后进行订票。 SS2 Booking management System 旅客可以自行检索购买机票,旅行社可以帮助旅客筛选机票并通知旅客支付 旅客登陆成功购买机票。旅行社登陆成功进行购买操作。根据管理员发布的信息进行必要准备。 SS3 Flight information management system 管理员可以查看航班相关信息以及录入修改发布航班信息 管理员变更航班信息发布给旅客旅行社,提示航班变更。

2.3 模块设计(Module Design) 2.3.1 用例实现  依据用例模型,设计实现各用例的模块及其关联,要求用鲁邦图和序列图表示; (注意:设计模型要标明和哪个用例相对应) 1)信息管理子系统模块: 与信息管理子系统用例相对应:

图2-3注册序列图

图2-4登陆序列图

图2-5查看订单序列图

图2-6查看旅客信息序列图

图2-7航班管理序列图

图2-8注册鲁棒图

图2-9登陆鲁棒图

图2-10查询订单鲁棒图

图2-11航班管理鲁棒图

图2-12查看旅客信息鲁棒图 2)订票管理子系统 与订票管理子系统用例相对应:

图2-13航班检索序列图

图2-14旅客订票序列图

图2-15旅客选座序列图

图2-16旅客支付序列图

图2-17旅客退改签序列图

图2-18旅客向旅行社申请序列图

图2-19旅行社处理请求序列图

图2-20旅行社处理请求序列图

图2-21旅客订票鲁棒图

图2-22旅行社订票鲁棒图 2.3.2 实现类清单 表3-3 实体类清单 编 号 类名(英文名) 功能简述 接口简述 E-1 旅客(customer) 保存旅客信息,以便进行购票和增删改查 将旅客信息保存在乘客信息表格中 E-2 旅行社(agency) 保存旅行社信息,以便进行购票和增删改查 将旅行社信息保存在旅行社信息表格中 E-3 预订系统管理员(admin) 保存管理员信息,以便管理和增删改查 将管理员信息保存在管理员信息表格中 E-4 订单(inovice) 保存顾客历史订单实体类信息,以便进行管理和增删改查 将订单信息保存在订单信息表格中 E-5 航班信息(FlightInfo) 保存具体航班信息,用于选择购票 将航班信息保存在航班信息表格中 E-6 选座信息(SeatSelect) 保存具体航班信息,用于退定座 将选座信息保存在选座信息表格中 E-7 乘客信息(AdminView) 保存乘客和航班间的信息,以便管理员查看和操作 将乘客和航班间的信息保存在乘客信息表格中 E-8 管理员航班信息(AdminFlight) 保存航班的信息,以便管理员查看和操作 将航班的信息保存在航班的信息表格中 表3-4 控制类清单 编 号 类名(英文名) 功能简述 接口简述 C-1 注册(registController) 用户通过该功能完成用户的注册和激活 将注册的用户信息存入数据库实体。 C-2 登录(loginController) 系统首页输入用户名密码,点击登录,进入系统。旅客、旅行社、管理员会进入不同的界面 将数据库的登录实体数据传到发出请求的页面。 C-3 查询航班信息(SearchController) 查询出发地,目的地,往返时间,选择是否直飞,舱位类型,乘客类型,航空公司等 将数据库符合要求的航班数据传到发出请求的页面。 C-4 订票(reserveController) 用户根据选择的航班的录入的乘客信息进行选座预定机票 将数据库的订单数据传到发出请求的页面。 C-5 管理员界面控制(AdminController) 管理员进入自己的管理 界面后,可进行机票新的添加删除和修改 将数据库的用户和航班间关系的数据传到发出请求的页面。 C-6 订票支付(payController) 用户在提交订单的规定时间之内支付机票费用 将数据录入数据库并修改订单状态表的数据。 表3-5 边界类清单 编 号 类名(英文名) 功能简述 接口简述 B-1 主界面 显示所有功能按钮与提醒界面。 可以进入各个功能页面,也可以从各个界面跳回主界面 B-2 注册界面 新用户注册。 发送注册信息到数据库,提示用户注册成功。 B-3 登录界面 用户登录。 验证账号和密码,返回成功失败信息。 B-4 个人信息界面 显示用户个人信息详情。 根据账户提取个人信息,返回至此界面。 B-5 航班查询 查询详细航班信息 在界面搜索航班信息,数据库返回查询结果。 B-6 航班管理界面 管理员对车次信息进行增删改查。 显示航班信息以及输入修改、增加的车次信息。 B-7 支付界面 让用户选择不同结算方式并显示结果。 验证用户返回结果,成功失败信息返回到此界面。 B-8 预定详情界面 让管理员统计机票预定数据并显示结果。 验证个人信息,成功失败信息返回到此界面。 B-9 机票详情 显示机票信息并提供预定选项。 显示数据库传来的车票信息以及购买按钮。 2.3.3 关键程序逻辑设计 详细描述关键类的关键操作的程序逻辑,要求采用流程图描述。 (注意:选择3-5个程序模块即可,设计的程序逻辑后面测试部分要进行模块测试)

图2-23登录模块流程图

图2-24注册模块流程图

图2-25航班查询流程图

图2-26订购机票流程图

图2-27管理员查看乘客信息流程图 3.数据结构设计(Design of Data Structure) 3.1 数据库表名清单(DB Table List) 表3-6 数据库表名清单 序号 中文表名 英文表名 表功能说明 1 旅客表 customer_table 存储在本系统注册的用户身份信息 2 管理员表 admin_table 存储本系统管理员的身份信息 3 旅行社表 agency_table 存储本系统认证的旅行社机构信息 4 航空公司表 aircompany_table 存储各家航空公司的编号和名称 5 飞机航班表 flight_table 存储航班信息,如航班号、飞机编号、始发地、目的地、登机日期、具体登机地点、飞机载客量、起飞时间、降落时间等 6 选座表 seat_select 存储每次选座的订单信息

3.2 数据库表之间关系说明(Relation of DB Table)

图2-28数据库ER图 3.3 数据库表的详细清单(Particular List of DB Table) 表3-7表名:customer_table 序号 字段中文名 字段英文名 类型 取值约束 空否 默认值 主键/外键 索引否 1 用户编号 cust_id char(10) 非空 主键 2 手机号 cust_tel varchar(11) 非空 3 邮箱 cust_email Varchar(20) 非空 4 姓名 Cust_name varchar(25) 非空 5 性别 Cust_sex int 0 or 1 1 6 身份证号 Cust_bid Varchar(20) 非空 7 密码 Cust_passwd Varchar(20) 非空 表3-8 表名: agency_table 序号 字段中文名 字段英文名 类型 取值约束 空否 默认值 主键/外键 索引否 1 旅行社编号 agency_id char(10) 非空 主键 2 旅行社名称 agency_name varchar(25) 非空 3 旅行社电话 agency_tel varchar(25) 非空 4 旅行社邮箱 agency_email Varchar(20) 非空 5 旅行社密码 Agency_passwd Varchar(20) 非空 表3-9 表名:aircompany_table 序号 字段中文名 字段英文名 类型 取值约束 空否 默认值 主键/外键 索引否 1 航空公司编号 aircom_id char(10) 非空 主键 2 航空公司名称 aircom_name varchar(25) 非空 表3-10 表名:admin_table 序号 字段中文名 字段英文名 类型 取值约束 空否 默认值 主键/外键 索引否 1 管理员编号 admin_id char(10) 非空 主键 2 手机号 admin_tel varchar(11) 非空 3 邮箱 admin_email Varchar(20) 非空 4 姓名 admin_name varchar(25) 非空 5 性别 admin_sex int 0 or 1 1 6 身份证号 admin_bid Varchar(20) 非空 7 密码 admin_passwd Varchar(20) 非空 表3-11 表名:flight_table 序号 字段中文名 字段英文名 类型 取值约束 空否 默认值 主键/外键 索引否 1 航班编号 f_id char(10) 非空 联合主键 2 飞机编号 airp_id char(10) 非空 3 航空公司号 aircom_id char(10) 非空 外键,来自于aircompany_table 4 出发地 Start_pos Varchar(25) 非空 5 目的地 Dest_pos varchar(25) 非空 6 起飞时间 Start_time DATETIME 7 落地时间 Dest_time DATETIME 8 载客人数 Cust_cnt int 非空 9 准点状态 fstate int 非空 0 or 1 10 具体登机地点 board_location varchar(30) 非空

三、源程序清单 1订票模块 1.1 描述(Description) 用户先通过检索自己需要的航班,并完成在线选座后系统执行订票模块,自动生成订单改写数据库信息,真正意义上完成订票。 1.2 代码(Program) ReserveController

  1. package com.atguigu.demo05.controller;
  2. import com.atguigu.demo05.Bean.SeatSelect;
  3. import com.atguigu.demo05.service.impl.ReserveServiceImpl;
  4. import com.fasterxml.jackson.annotation.JsonFormat;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.stereotype.Service;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import javax.servlet.http.HttpSession;
  12. import java.util.Date;
  13. import java.util.Random;
  14. @Controller
  15. public class ReserveController {
  16. @Autowired  
    
  17. ReserveServiceImpl reserveService;  
    
  18. //    air_id=111&type=经济舱&nation=1&name=1&id=1&tel=1  
    
  19. @GetMapping("/reserve")  
    
  20. public String bookTicket(@RequestParam("air_id") String air_id,  
    
  21.                          @RequestParam("type") String typre,  
    
  22.                          @RequestParam("nation") String nation,  
    
  23.                          @RequestParam("name") String name,  
    
  24.                          @RequestParam("tel") String tel,  
    
  25.                          HttpSession session) {  
    
  26.     //生成随机订单号  
    
  27.     int length = 10;  
    
  28.     String base = "abcdefghijklmnopqrstuvwxyz0123456789";  
    
  29.     Random random = new Random();  
    
  30.     StringBuffer orderID = new StringBuffer();  
    
  31.     for (int i = 0; i < length; i++) {  
    
  32.         int number = random.nextInt(base.length());  
    
  33.         orderID.append(base.charAt(number));  
    
  34.     }  
    
  35.     String id = orderID.toString();  
    
  36.     String userId = (String) session.getAttribute("userId");  
    
  37.     SeatSelect seatSelect = new SeatSelect(id, new Date(), userId, " ", air_id, "B2-03", typre, 500, 500, 0);  
    
  38.     reserveService.insertReserveInfoS(seatSelect);  
    
  39.     return "支付成功";  
    
  40. }  
    
  41. }
    ReserveServiceImpl
  42. package com.atguigu.demo05.service.impl;
  43. import com.atguigu.demo05.Bean.SeatSelect;
  44. import com.atguigu.demo05.mapper.ReserveInfoMapper;
  45. import com.atguigu.demo05.service.ReserveService;
  46. import org.springframework.beans.factory.annotation.Autowired;
  47. import org.springframework.stereotype.Service;
  48. @Service
  49. public class ReserveServiceImpl implements com.atguigu.demo05.service.ReserveService
  50. {
  51. @Autowired  
    
  52. ReserveInfoMapper reserveInfoMapper;  
    
  53. @Override  
    
  54. public void insertReserveInfoS(SeatSelect seatSelect) {  
    
  55.     reserveInfoMapper.insertReserveInfo(seatSelect);  
    
  56. }  
    
  57. }
    ReserveMapper
  58. package com.atguigu.demo05.mapper;
  59. import com.atguigu.demo05.Bean.SeatSelect;
  60. import org.apache.ibatis.annotations.Mapper;
  61. @Mapper
  62. public interface ReserveInfoMapper {
  63.  public void insertReserveInfo( SeatSelect seatSelect);  
    
  64. }
    2 航班查询模块 2.1 描述(Description) 用户通过输入目的地、出发地、舱型、出发日期等信息后系统从数据库中查询出符合要求的航班信息并显示到查询页面上。 2.2 代码(Program) SearchController
  65. package com.atguigu.demo05.controller;
  66. import com.atguigu.demo05.Bean.FlightInfo;
  67. import com.atguigu.demo05.service.FlightInfoService;
  68. import org.springframework.beans.factory.annotation.Autowired;
  69. import org.springframework.stereotype.Controller;
  70. import org.springframework.stereotype.Service;
  71. import org.springframework.ui.Model;
  72. import org.springframework.web.bind.annotation.GetMapping;
  73. import org.springframework.web.bind.annotation.RequestParam;
  74. import javax.servlet.http.HttpSession;
  75. import java.util.Collection;
  76. import java.util.Date;
  77. @Controller
  78. public class SearchController {
  79. @Autowired  
    
  80. FlightInfoService flightInfoService;  
    
  81. @GetMapping("/searchticket")  
    
  82. public String queryFlightInfo(@RequestParam("beginplace") String beginplace,  
    
  83.                         @RequestParam("endplace") String endplace,  
    
  84.                         @RequestParam("begindate") String begindate,  
    
  85.                               @RequestParam("backdate") String backdatedate,  
    
  86.                         @RequestParam("adultnum") int adultnum,  
    
  87.                         @RequestParam("childnum") int childnum,  
    
  88.                               @RequestParam("type") String type,  
    
  89.                               HttpSession session,  
    
  90.                               Model model) {  
    
  91.     Collection<FlightInfo> flightInfos  =  flightInfoService.FlightInfoQueryS(beginplace,endplace);  
    
  92.     model.addAttribute("flightInfos",flightInfos);  
    
  93.     return  "航班查询";  
    
  94. }  
    
  95. }
    FlightInfoServiceImpl
  96. package com.atguigu.demo05.service.impl;
  97. import com.atguigu.demo05.Bean.FlightInfo;
  98. import com.atguigu.demo05.mapper.FlightInfoMapper;
  99. import com.atguigu.demo05.service.FlightInfoService;
  100. import org.springframework.beans.factory.annotation.Autowired;
  101. import org.springframework.stereotype.Service;
  102. import java.util.ArrayList;
  103. @Service
  104. public class FlightInfoServiceImpl implements com.atguigu.demo05.service.FlightInfoService {
  105. @Autowired  
    
  106. FlightInfoMapper flightInfoMapper;  
    
  107. @Override  
    
  108. public ArrayList<FlightInfo> FlightInfoQueryS(String startPos, String endPos) {  
    
  109.     return flightInfoMapper.FlightInfoQuery(startPos, endPos);  
    
  110. }  
    
  111. }
    FlightInfoMapper
  112. package com.atguigu.demo05.mapper;
  113. import com.atguigu.demo05.Bean.FlightInfo;
  114. import org.apache.ibatis.annotations.Mapper;
  115. import java.util.ArrayList;
  116. @Mapper
  117. public interface FlightInfoMapper
  118. {
  119. public ArrayList FlightInfoQuery(String startPos, String endPos );
  120. }
    四、测试报告
  121. 概述(Summary) 1.1 项目简介(Project Synopsis) 在本章节中简介项目的基本情况。 1.2 术语定义(Terms Glossary) 将该测试报告中的术语、缩写进行定义, 包括用户应用领域与计算机领域的术语与缩写等。 1.3 参考资料(References) 说明该测试报告使用的参考资料,如: [1] 《需求规格说明书》 [2] 《设计规格说明书》
  122. 组件测试(Module Test) 选择《设计规格说明书》中经过程序逻辑设计的模块,应用基本路径法设计测试用例,进行测试。要求按照程序的程序流程图,标识每条基本路径,记录测试数据,评定测试结果。测试活动的记录格式,如表5-2所示。

登录模块流程图 表5-2 登录模块测试记录 编号 路径标识 输入 期 望 输出 输 出 内容 发 现 问题 测 试 结果 测 试 时间 测试人 1 1 2 3 4 5 6 7 用户名、密码 用户成功登录 成功登录并进入用户主页面 无 √ 2021/12/12 姚腾棋 2 1 2 3 4 5 8 9 用户名、密码 管理员成功登录 成功登录并进入管理员主页面 无 √ 2021/12/12 姚腾棋 3 1 2 3 4 10 11 3 4 5 6 7 用户名、密码 用户账号或密码错误 提示账号或密码错误并返回登录页面,输入正确后进入用户主页面 无 √ 2021/12/12 姚腾棋 4 1 2 3 4 10 11 3 4 5 8 9 用户名、密码 管理员账号或密码错误 提示账号或密码错误并返回登录页面,输入正确后进入管理员主页面 无 √ 2021/12/12 姚腾棋 5 1 2 12 用户名、密码 该用户不存在 提示该用户不存在并跳转至注册页面 无 √ 2021/12/12 姚腾棋

注册模块流程图 表5-3 注册模块测试记录 编号 路径标识 输入 期望输出 输出内容 发现问题 测试结果 测试时间 测试人 1 1 2 3 4 5 用户名、姓名、密码、邮箱 成功注册 成功注册并跳转到登录页面 无 √ 2021/12/12 姚腾棋 2 1 2 3 4 6 7 3 4 5 用户名、姓名、密码、邮箱 邮箱激活失败 提示邮箱激活失败并,请重新输入并返回注册页面,再次输入正确信息注册后跳转至登录页面 无 √ 2021/12/12 姚腾棋 3 1 2 8 用户名、姓名、密码、邮箱 账号已经注册并激活 提示账号已经注册并激活,跳转至登录页面 无 √ 2021/12/12 姚腾棋

航班查询流程图 表5-4 用户航班查询模块测试记录 编号 路径标识 输入 期望输出 输出内容 发现问题 测试结果 测试时间 测试人 1 1 2 3 4 5 出发地、目的地、出发日期、返回日期、乘客类型、舱位类型 查询到的航班信息 成功查询并跳转到详细航班信息页面 无 √ 2021/12/12 姚腾棋 2 1 2 3 6 7 4 5 出发地、目的地、出发日期、返回日期、乘客类型、舱位类型 输入出发地或目的地有误 提示输入出发地或目的地有误,请重新输入并返回航班查询页面,再次输入正确信息查询航班后跳转至航班信息页面 无 √ 2021/12/12 姚腾棋 3 1 2 3 4 8 9 3 4 5 出发地、目的地、出发日期、返回日期、乘客类型、舱位类型 输入乘客信息为空 提示输入乘客信息为空,请重新输入并返回航班查询页面,再次输入正确信息查询航班后跳转至航班信息页面 无 √ 2021/12/12 姚腾棋 4 1 2 3 6 7 3 4 8 9 3 4 5 出发地、目的地、出发日期、返回日期、乘客类型、舱位类型 输入出发地或目的地有误且输入乘客信息为空 提示输入出发地或目的地有误且乘客信息为空,请重新输入并返回航班查询页面,再次输入正确信息查询航班后跳转至航班信息页面 无 √ 2021/12/12 姚腾棋

订购机票流程图 表5-5 用户机票订购模块测试记录 编号 路径标识 输入 期望输出 输出内容 发现问题 测试结果 测试时间 测试人 1 1 2 3 4 5 6 7 8 点击预定按钮,输入乘客身份信息,进行支付 成功支付 提示订票成功并跳转至成功支付页面 无 √ 2021/12/12 姚腾棋 2 1 2 9 10 2 3 4 5 6 7 8 点击预定按钮 航班已无空座,重新选择后完成订票 提示航班已无空座请重新选择并跳转至订购机票页面 无 √ 2021/12/12 姚腾棋 3 1 2 3 4 5 11 12 5 6 7 8 点击预定按钮,输入乘客身份信息 输入乘客信息为有误 提示航班输入乘客信息为有误请重新输入并跳转至身份验证页面 无 √ 2021/12/12 姚腾棋 4 1 2 3 4 5 6 7 13 14 7 8 点击预定按钮,输入乘客身份信息,进行支付 支付过程出错,未支付成功 提示支付过程出错,未支付成功并跳转至支付页面 无 √ 2021/12/12 姚腾棋 5 1 2 9 10 2 3 4 5 11 12 5 6 7 8 点击预定按钮,输入乘客身份信息,进行支付 航班已无空座,重新选择后输入乘客信息为有误 先提示航班已无空座请重新选择并跳转至订购机票页面,再提示航班输入乘客信息为有误请重新输入并跳转至身份验证页面 无 √ 2021/12/12 姚腾棋 6 1 2 9 10 2 3 4 5 6 7 13 14 7 8 点击预定按钮,输入乘客身份信息,进行支付 航班已无空座,重新选择后支付失败 先提示航班已无空座请重新选择并跳转至订购机票页面,再提示航班支付失败请重新支付并跳转支付页面 无 √ 2021/12/12 姚腾棋 7 1 2 3 4 5 11 12 5 6 7 13 14 7 8 点击预定按钮,输入乘客身份信息 输入乘客信息为有误后又支付失败 先提示乘客信息有误请重新输入并跳转至身份验证页面,再提示航班支付失败请重新支付并跳转支付页面 无 √ 2021/12/12 姚腾棋 8 1 2 9 10 3 4 5 11 12 5 6 7 13 14 7 8 点击预定按钮,输入乘客身份信息,进行支付 航班已无空座,重新选择后输入乘客信息为有误,重新认证后支付过程出错,未支付成功 提示支付过先提示航班先提示航班已无空座请重新选择并跳转至订购机票页面,再提示航班输入乘客信息为有误请重新输入并跳转至身份验证页面,最后提示航班支付失败请重新支付并跳转支付页面 无 √ 2021/12/12 姚腾棋

管理员查看乘客信息流程图 表5-6 管理员查看乘客信息模块测试记录 编号 路径标识 输入 期望输出 输出内容 发现问题 测试结果 测试时间 测试人 1 1 2 3 4 5 6 航班编号、乘机人姓名、航空公司 查询到的航班信息 成功查询并跳转到详细航班信息页面 无 √ 2021/12/12 姚腾棋 2 1 2 3 7 8 3 4 5 6 航班编号、乘机人姓名、航空公司 航班信息有误 提示输入航班编号有误,请重新输入并返回乘客信息查询页面,再次输入正确信息查询航班后跳转至乘客信息页面 无 √ 2021/12/12 姚腾棋 3 1 2 3 4 9 10 3 4 5 6 航班编号、乘机人姓名、航空公司 输入乘客信息不存在 提示输入乘客信息不存在,请重新输入并返回航班查询页面,再次输入正确信息查询航班后跳转至乘客信息页面 无 √ 2021/12/12 姚腾棋 4 1 2 3 7 8 3 4 9 10 3 4 5 6 航班编号、乘机人姓名、航空公司 航班信息有误且输入乘客信息不存在 先提示输入航班编号有误,请重新输入并返回乘客信息查询页面,再提示输入乘客信息不存在,请重新输入并返回航班查询页面,再次输入正确信息查询航班后跳转至乘客信息页面 无 √ 2021/12/12 姚腾棋

3.功能测试(Function Test) 3.1 系统功能需求(Function Request of Target System) 由《需求规格说明书》拷贝到的功能需求点列表,如表5-3所示。 表5-3 功能需求点列表 编 号 功 能 名 称 使 用 人 功 能 描 述 输 入 内 容 输 出 内 容 1 登录 所有人 系统首页输入用户名密码,点击登录,进入系统。旅客、旅行社、管理员会进入不同的界面 用户名 密码 系统首页 2 注销 所有人 登出系统 3 用户信息管理 所有人 编辑当前登录用户的个人信息 要修改的用户信息 修改后的用户信息 4. 管理用户 管理员 管理员对乘客用户进行增删改查管理 用户账号 该用户账号对应信息 5 录入旅客信息 旅行社 记录旅客个人信息,并将对应信息输入系统 姓名、性别、工作单位、身份证 号码、 该旅客信息 6 接收旅客需求 旅行社 记录旅客需求,比如往返时间,目的地,是否直飞 旅客需求 该旅客的需求 7 筛选适合的机票 旅行社 根据旅客需求选择在指定往返时间内的出发地以及目的地的并且符合旅客对于舱位要求的机票 旅客需求 符合条件的机票 8 导出 旅行社 筛选出符合旅客需求的航班信息 取票通知和账单 9 通知旅客 旅行社 向顾客发布实时票务订购消息 以及账单,取票通 知,提醒旅客及时交费 旅客信息 账单,取票通知

10 接收旅客退票需求 旅行社 接收旅客退票需求,根据旅客信息将退票信息输入系统,进行退票 旅客姓名、身份证号码 退票成功 11 修改航班信息 管理员 根据航班实时情况,对航班信息就行实时更新 航班号 最新状态的航班信息 12 录入航班信息 管理员 对航班进行线路规划,录入航班信息 航班号 添加成功 13 对机票进行增删改查 管理员 管理员进入自己的管理 界面后,可进行车票新的 添加删除和修改 点击添加、删除、或修改机票按钮 添加机票成功或修改成功或删除成功 14 查询预定情况 管理员 根据订票情况,查询本次航班的余量 航班号 已定数目,剩余数目 15 查询乘客信息 管理员 查询乘客具体信息 乘客姓名,身份证号码 乘客信息 16 检索航班 旅客 查询出发地,目的地,往返时间,选择是否直飞,舱位类型,乘客类型,航空公司等 航班具体要求 符合要求的航班以及航班余票 17 在线选座 旅客 根据用户不同需求选取不同的座位 选择座位要求选项 选座结果提示信息 18 航线地图 旅客 通过查看带有航线标记的地图,可视化不同航线 周转方案,直观 19 提示帮助 旅客 解决用户提出的问题以及人工客服 描述用户问题 显示解决方案 20 支付 旅客 用户在提交订单的规定时间之内支付机票费用 选择付款方式 显示支付结果 21 查看订单 旅客 用户在提交订单之后查看订单信息 订单编号 显示查询结果 22 改签退票 旅客 用户可以根据需求改签或者退票 航班具体要求 符合要求的航班 23 通知信息 旅客 提示用户打印取票通知和账单 具体提示信息 24 向旅行社提交改签退票订票请求 旅客 用户根据需求向旅行社提交申请 申请变更内容 符合要求的航班 25 根据旅行社提供的账单交费 旅客 用户在规定时间内交费 账单信息 交费结果 3.2. 功能测试报告(Report for Function Test) 按照功能点列表内容,结合等价类划分法设计测试用例(输入/输出内容),进行现场测试,记录测试数据,评定测试结果。测试活动的记录格式,如表5-4所示。 表5-4 功能测试记录 编号 功能名称 输入内容 期望输出 输出内容 发现问题 测试结果 测试时间 测试人 1 登录 用户名 密码 系统首页 系统首页 无 √ 2021/12/13 姚腾棋 2 注销 无 √ 2021/12/13 姚腾棋 3 用户信息管理 要修改的用户信息 修改后的用户信息 修改后的用户信息 无 √ 2021/12/13 姚腾棋 4. 管理用户 用户账号 该用户账号对应信息 该用户账号对应信息 无 √ 2021/12/13 姚腾棋 5 录入旅客信息 姓名、性别、工作单位、身份证 号码、 该旅客信息 该旅客信息 无 √ 2021/12/13 姚腾棋 6 接收旅客需求 旅客需求 该旅客的需求 该旅客的需求 无 √ 2021/12/13 姚腾棋 7 筛选适合的机票 旅客需求 符合条件的机票 符合条件的机票 无 √ 2021/12/13 姚腾棋 8 导出 取票通知和账单 取票通知和账单 无 √ 2021/12/13 姚腾棋 9 通知旅客 旅客信息 账单,取票通知 账单,取票通知 无 √ 2021/12/13 姚腾棋 10 接收旅客退票需求 旅客姓名、身份证号码 退票成功 退票成功 无 √ 2021/12/13 姚腾棋 11 修改航班信息 航班号 最新状态的航班信息 最新状态的航班信息 无 √ 2021/12/13 姚腾棋 12 录入航班信息 航班号 添加成功 添加成功 无 √ 2021/12/13 姚腾棋 13 对机票进行增删改查 点击添加、删除、或修改机票按钮 添加机票成功或修改成功或删除成功 添加机票成功或修改成功或删除成功 无 √ 2021/12/13 姚腾棋 14 查询预定情况 航班号 已定数目,剩余数目 已定数目,剩余数目 无 √ 2021/12/13 姚腾棋 15 查询乘客信息 乘客姓名,身份证号码 乘客信息 乘客信息 无 √ 2021/12/13 姚腾棋 16 检索航班 航班具体要求 符合要求的航班以及航班余票 符合要求的航班以及航班余票 无 √ 2021/12/13 姚腾棋 17 在线选座 选择座位要求选项 选座结果提示信息 选座结果提示信息 无 √ 2021/12/13 姚腾棋 18 航线地图 无 √ 2021/12/13 姚腾棋 19 提示帮助 描述用户问题 显示解决方案 显示解决方案 无 √ 2021/12/13 姚腾棋 20 支付 选择付款方式 显示支付结果 显示支付结果 无 √ 2021/12/13 姚腾棋 21 查看订单 订单编号 显示查询结果 显示查询结果 无 √ 2021/12/13 姚腾棋 22 改签退票 航班具体要求 符合要求的航班 符合要求的航班 无 √ 2021/12/13 姚腾棋 23 通知信息 具体提示信息 具体提示信息 无 √ 2021/12/13 姚腾棋 24 向旅行社提交改签退票订票请求 申请变更内容 符合要求的航班 符合要求的航班 无 √ 2021/12/13 姚腾棋 25 根据旅行社提供的账单交费 账单信息 交费结果 交费结果 无 √ 2021/12/13 姚腾棋 4. 测试结论(Test Verdict) 当测试完成之后,测试人员应对本次测试做出结论。格式如下: 测试日期:2021/12/12 测试地点:河北工业大学实验楼机房 测试环境:IDEA,Chrome,VSCode 列出系统的强项:列出系统的强项:界面简约,美观、功能较为齐全、使用方便、通俗易懂,界面符合一般的界面形式;具有用户和管理员两种模式,使车票系统更加完善,符合实际,管理员功能丰富,方便操作。 列出系统的弱项:列出系统的弱项:系统反应时间较长,账号,密码,个人信息等输入信息规范性一般,没有做出错误判断处理。没有考虑到出现中转时打印出多张机票的情况。 测试人员签字:姚腾棋

五、实验总结 (各小组成员由组长开始依次总结自己在本次实验中完成的任务、完成情况、收获及不足,每个人总结字数300-400字,字体仿宋小四号。) 姚腾棋:在本次实验中我主要负责系统管理员的后端代码实现,例如管理员查看乘客与航班间关系的信息,对航班信息进行增删改查等工作,以及用户注册模块和数据库的参与设计以及最后对系统进行的路径测试。整体上完成效果良好,后端实现都进行了多次测试有较好的鲁棒性,其中用户的注册模块复用了邮件验证系统。此次实验我进一步深入了解到软件工程的工作流程以及其作用,充分体会到了文档的重要性以及软件工程**开发软件带来的便利性,利用软件工程**大大提高了开发效率,不会再像以前的开发过程一样一边实现一边发现错误再反过来修改的低效率开发。利用软件工程**先进行需求分析再进行设计分析,其中需求分析中的类图和活动图都让开发实现变得十分简便,根据画好的类图以及活动图配合增量式开发快速且有序,让优先级高的模块早交付得到更多的测试继而有良好的鲁棒性。在实验过程中没有完全适应软件工程开发**而出现小部分实验顺序出错问题,导致进度变慢。

章祺:代码部分:负责前端用户注册和登陆,在线选座,查看和修改航班信息,管理员查看航班信息,在线选座页面的代码实现;查找相关bootstrap框架以及引入右下角动态小人插件。 文档方面:负责信息管理系统用例图及订票管理用例相应用例表的书写绘制;运用rational rose软件将其他组员绘制的用例图,活动图,序列图,类图,包图,部署图,鲁棒图转为电子版;书写设计工程2.2的子系统清单。 收获方面:整体前端用户界面较为友好,管理员和普通用户设置了不同界面,不同角色具有不同限权。在主界面具有实现了软件工程中体现的用户熟悉,一致性,意外最小化,可恢复性和用户差异性的基本要求。整体采用淡紫色天蓝色色调,贴近天空航班主题,符合大众审美,在登陆注册主页面的调色方面,我尽可能选择了偏冷色调,让整体界面具有大气恢弘感。各界面的表格颜色也采取了淡紫色,符合界面一致性,整体观感让用户舒服。此次实验让我对颜色的选择深有体会,不同的颜色带来完全不一样的用户体验,整体风格也相差甚远。我还需要对大量的优秀页面进行欣赏学习。我体会到了将理论运用到实践的重要性,将软件工程的**运用到软件的开发,使开发进行的有条不紊,人员分工合理,开发效率非常高。在UML建模中,运用rational rose让绘制UML图具有逻辑性,它类似文件夹的存放方式,让我对类,角色,对象等有了更深的理解。最大的收获是和小组成员一起并肩作战,第一次体会到团队合作的重要性,缺少任何一位成员的付出,都无法得到我们今天的系统。 不足:前端bootstrap是h5+css3的框架会产生大量代码冗余,这个可能是我本人的技术问题,我对系统的部分页面就是自己写一些css把以前的样式覆盖掉,这样修改的地方多了被覆盖的代码就成了无用代码。对于一个小项目等页面来说很臃肿,框架中有大部分用不到的代码。 刘洲君:本次实验中主要负责前端页面的设计和编写,利用JavaScript和后端配合。主要设计实现主页面的前端代码,接入百度地图API等。负责文档场景描述,需求分析,活动图,鲁棒图、时序图的书写。在开发系统的过程中体会到软件工程**的作用。采用增量式开发,能够提高开发效率,先写文档,有了总体设计再进行开发,根据效率更高,能做到有据可循,不会像以前一样随意开发想到哪写到哪。而且通过本次系统开发也体会到团队配合的重要性。通过后端提出的具体的要求来修改前端的页面,将前端收集到的数据提交到后端进行处理。通过前端和后端的交流,和队友共同完成一个模块,效率很高。体会到根据文档进行代码编写的方便,可以做到有条不紊,不会像之前一样开发到一半就一团乱麻。通过接入百度地图API,查阅了百度地图API的文档,体会到了读文档的重要性。在本次实验中和队友配合增进了感情,也体会到了运用软件工程**开发出完整系统的成就感。 赵昊天:本次实验主要负责前端界面的设计和部分文档,利用bootstrap架构来写订单管理模块和订单详情模块等,文档部分负责部分初始功能提取,用例图,用例表序列图,鲁棒图的书写,通过本次实验,利用到了软件工程设计**,先根据分析问题,确定需求,然后提取功能进行用力分析,采用增量式开发,整个过程思路清晰,目标明确,不像以前毫无头绪,乱执行。通过这次实验,学习了前端html css JavaScript,虽然学习时间不长,但是学到了很多东西。前端设计也和队友不断交流,不断调整界面以及功能,体会到了交互的重要性,根据后端的需求以及实现来调整前端界面的参数传递,让系统功能实现的更完备,了解到了文档的重要性,一个完善的文档也会提升效率,模块会更加清晰,我们前期因为文档,导致设计过程出现点小插曲,好在及时修改调整。经过这几次实验我知道了团队合作的重要性,提高了默契。 张木鑫:在本次实验中我主要负责用户从登录系统到查看航班信息再到机票预订成功系列功能模块编码实现以及数据库的部分设计,前期我参与并整理了我们组对于机票预订系统的需求导出。从我这些模块的业务逻辑来看,主要是对航班信息表、订单信息等表的增删改查操作,编码过程整体上比较顺利,前后端交互效果符合预期,系统能对用户操作做出正确迅速的信息反馈。在开发过程中即便是出现了问题也能很快的解决,我想这得益于组长姚腾棋同学的分工明确和组内其他同学的通力合作,在此一并表示感谢。这也许就是团队协作的魅力所在。由于我们使用了增量式的软件开发模型,大大提高了我们的开发效率。本次实验增强了我对软件工程**的理解与掌握,由于有相关文档的支撑,一切开发过程都有规可循,与我之前写代码做系统的随意开发编码方式有了质的改变。由于第一次应用软件工程的**来进行实际开发,起初很多地方不太适应,走了些弯路,少数需求没有做好明确细化,导致在开发过半后我们对数据库进行了变动,对整体开发节奏带来了一些影响。不过我相信今后我一定可以吸取这次的经验教训,更加熟练的应用软件工程**到实际项目中。

About


Languages

Language:HTML 64.4%Language:CSS 35.6%