new飞机票网上预订系统详细设计文档.docx
《new飞机票网上预订系统详细设计文档.docx》由会员分享,可在线阅读,更多相关《new飞机票网上预订系统详细设计文档.docx(16页珍藏版)》请在冰豆网上搜索。
new飞机票网上预订系统详细设计文档
(new)飞机票网上预订系统详细设计文档
飞机票网上预订系统
详细设计说明书
1引言
1.1概述
本文描述了一个基于Web的飞机票网上预订系统的详细设计。
系统采用MVC的三层架构模型。
将应用系统划分为表示层、控制层、业务处理层和数据访问层4个层次。
文中详细描述了各个模块的功能,并利用统一建模语言UML对软件进行建模,构建各个模块的类图、时序图、状态图等,从细节上进行具体分析。
1.2背景
系统名称:
网上电子银行交易系统;
用户:
希望通过网络订飞机票的互联网用户。
1.3定义
B/S(Browser/Server)——浏览器/服务模式(网络体系结构)。
1.4参考资料
《数据要求说明书》
《需求分析说明书》
《概要设计说明书》
《数据库设计说明书》
2系统结构
2.1系统类图
2.1.1表示层类图:
表示层类图为JSP页面:
Login类:
用户登录界面,username属性和password属性保存用户的账号和密码。
QueryTransaction类:
查询并输出用户交易记录,其中UserID为用户的账户ID,StartTime为查询的起始时间,EndTime为查询的截至时间,QueryResult为返回的订单类集合。
updateUserInfo类:
修改用户信息界面。
其中可修改的项目有地址,联系方式等。
uadatePassword类:
修改用户密码界面。
oldePassword表示原始密码,newPassword存储新密码。
Query类:
查询相关票务信息的类,用户可选择输入StartTime(出发时间)、RangeType(单程、往返、联程等)、Departure(出发城市)、Destination(目的地)、Number(人数)、Airline(航空公司)、CAB(舱位)等信息来查询符合条件的票务信息。
FlightInfo类:
存储机票的信息类,其中有Airline(航空公司)、StartTime(起飞时间)、RangeType(票务类型)、Departure(出发城市)、Destination(到达城市)、CABInfo(舱位相关信息)。
Cabin类:
表示对应FligthInfo(航线)的舱位情况。
其中CAB为表示舱位名称的String[],Surplus为表示对应舱位剩余票数的Int[],Price为表示对应舱位座位价格的Double[]。
Booking类:
用户订票操作行为的类。
FlightInfo表示用户选定的需要订票的航班编号;RangeType表示用户需订的机票类型;CABInfo表示用户所定的舱位、张数等信息。
Reissue类:
表示用户改签行为的类;其中OrderNumber表示用户希望改签的订单;UserID表示用户ID。
Refund类:
表示用户退票行为的类:
其中OrderNumber表示用户希望退订的订单;UserID表示用户的ID。
Defray:
表示用户付款行为的类。
UserID表示用户的ID,Order表示用户需要付款的订单类,Payment为用户的付款方式。
2.1.2控制层类图:
控制层类图说明:
NetWorkActionServlet是Action的基类,UserAction、OrderAction、DealAction、BookAction、ReissueAction和RefundAction都是接受对应页面的请求,并向相应的Service层发送请求,接受来自Service的数据并向页面传递这些数据。
UserService、OrderService、DealService、BookService、ReissueService和RefundService接受来自Action的数据请求并做一些相应的处理然后把他们交给DAO层,DAO层相对通过Hibernate对数据库进行操作,并给Action返回相应的结果。
2.1.3业务层类图:
业务层类图说明:
Client类:
客户类。
客户类主要拥有一些基本的注册时的信息属性,能够实现登录(login)、注销(cancellation)、订票(Booking)、改迁(reissue)等多种类型的操作。
Ticket类:
机票类。
主要拥有一些关于机票的基本信息。
包括票的ID号(ticket_id)、机票所属的航班(flightInfo)、机票所属的仓位类型(cabin)等属性。
Cabin类:
仓位类。
用户表示各种不同类型的仓位。
其中包括仓位的类型(cabin)仓位所属航空公司(airline),票价相对比率(rate),以及其他一些服务明细信息(other)。
FlightInfo类:
航班类。
主要描述了一个航班的基本信息。
其中主要包括:
航空公司名(airline)、起始时间(start_time、end_time)、目的地(destination)、起飞地(departure)等等。
Cabin类和FlightInfo类聚集到Ticket类,是Ticket类的组成部分。
BookAction类:
。
主要包含了订票的一些操作。
订票类中包含某个用户的信息,以及订的某张票的信息。
操作包含执行和确认订购。
RefundAction类:
退订票类。
主要包含了用户退订票的一些操作。
属性和订票类一样。
ChangeAction类:
改迁类。
主要包含了改迁的一些操作和属性。
2.1.4数据库详细
数据库详细:
这个图反映了系统所有对于数据库的操作。
系统的所有操作都是通过DealAction操作类进行实现的。
而这个类只是负责在本地的一些准备活动,需要通过UserDao、OrderDao、DealLogDao等几个类进行实际操作。
然而UserDao等这些类操作的只是本地数据库,而该系统必须实时的与航空公司交互,获取航空公司的最新数据。
因此最终需要通过一个OperateDB类与外界航空公司进行数据交互。
实现最终的数据库操作。
提交数据和获取处理结果。
2.2模块汇总
系统包括用户注册及登录模块,查询模块,订票模块,改签模块,退票模块,注销模块,其中用户登录模块和注销模块用以保证用户使用系统的交互信息的安全;电子支付模块为外部接口,用户在进行网上交易时,可选择本银行链接到系统的支付界面。
查询,用户可通过时间,航班号,城市等方式查询航班。
订票,与电子银行进行交互,并进行支付的操作。
改签,按一定规则为用户进行改签处理,改签过程中修改订单,如有需要还需要进行相关的付款操作。
退票,根据用户选择订单及公司制定相关规则进行判断,判断订单是否可退订,与电子银行进行交互,进行退票之后相应的转账到用户账户操作。
3功能模块设计说明
3.1用户登录及注册模块
3.1.1模块时序图
登录:
注册:
3.1.2模块描述
登录:
1.用户在Login页面中输入账号和登录密码,通过方法doLogin()提交到Web服务器的TicketOnlineActionservlet类。
2.类TicketOnlineActionservlet使用方法process()处理提交信息,调用UserAction进一步处理;
3.UserAction使用方法execute()根据提交信息,调用与账号密码有关的User类处理;
4.类User使用方法Login()验证账号状态和密码正确性,这里需要连接数据库;
5.Web服务器向后台系统和数据库发送账号和密码,后台系统和数据库验证提交信息后,向Web服务器发送回应;
6.Web服务器收到回应后返回给用户;
7.若验证成功,类User调用方法upDataUserInfo()保存操作记录到数据库.
注册:
1.用户在Register页面中输入注册信息,通过方法register()提交到Web服务器的TicketOnlineActionservlet类。
2.类TicketOnlineActionservlet使用方法insertUser()处理提交信息,调用UserAction进一步处理;
3.UserAction使用方法execute()提交信息。
4.类User使用方法register()验证注册信息正确性,这里需要连接数据库;
5.Web服务器向后台系统和数据库发注册信息,后台系统和数据库验证提交信息后,向Web服务器发送回应;
6.Web服务器收到回应后返回给用户;
7.若验证成功,类User调用方法upDataUserInfo()保存操作记录到数据库.
3.1.3模块协作图
登录:
注册:
3.2查询模块
3.2.1模块时序图
3.2.2模块描述
1.用户在queryPage页面中输入查询信息,通过方法doSubmit()提交到Web服务器的TicketOnlineActionservlet类。
2.类TicketOnlineActionservlet使用方法process()处理提交信息,调用OrderAction进一步处理;
3.OrderAction使用方法execute()根据提交信息。
4.orderService使用方法getFlightInfo()提交请求
4.OrderDao通过queryFlight函数查询航班信息,这里需要连接数据库;
5.后台系统获取数据库连接并从数据库中查询信息
6.后台将信息返回web;
7.若成功则返回用户查询的信息否则返回备选信息
8.视图层显示查询结果
3.2.3模块协作图
3.3订票模块
3.3.1模块时序图
3.3.2模块描述
模块描述:
1.用户确认登录状态和所订的飞机票到达订票页面,若用户在普通页面,处于未登录状态就点击订票则要先登录,doLogin(),登陆成功后,进入订票页面。
2.用户处于订票页面,确认订票信息使用doSubmit(),提交给控制类DealAction(抽象)。
3.DealAction返回银行支付接口,用户进入银行支付界面。
4.用户使用doDfray()函数,进行银行支付,支付后将结果返回到DealAction
5.DealAction,使用execute()函数提交给BookAction,使之进行订票操作。
6.BookAction将订票请求传给BookService控制类。
7.BookServive将订票信息使用book()函数传给模型类BookDao。
8.BookDao使用updateDBOperate()函数从operateDB()获得数据库信息。
9.OperateDB使用getCon等函数连接数据库,并进行相关查询,更新操作。
10.ConnectDB将查询连接和查询结果返回给operateDB.
11.OperateDB将查询信息返回给BookDao,若成功包含所查询到的结果。
12.BookDao将结果返回到BookService控制类。
13.BookService控制类根据查询结果,返回到用户的订票页面。
3.3.3模块协作图
3.4改签模块
3.4.1模块时序图
3.4.2模块描述
1,用户确认登录状态和所订的飞机票到达机票改签页面,若用户在普通页面,处于未登录状态就点击订票则要先登录,doLogin(),登陆成功后,进入订票页面。
2,用户处于改签页面,确认确认改签信息使用doSubmit(),提交给控制类DealAction(抽象)。
3.DealAction返回银行支付接口,用户进入银行支付界面。
4.用户使用doDfray()函数,进行银行支付,支付后将结果返回到DealAction。
5.DealAction,使用execute()函数提交给BookAction,使之进行用户订单查询操作。
6.DealDao,使用getLogByUser()提交给数据库控制类OperateDB。
7.OperateDB使用getCon()函数连接数据库,并进行相关查询更新操作。
8.ConnectDB将查询结果返回给OperateDB。
9.OperateDB将订单查询结果返回给DealDao,若成功,包含所查询到的结果。
10.DealDao将订单查询结果返回给DealerAction控制类。
显示给用户。
11.用户处于改签页面,使用doSubmit(),将选择订单信息提交给控制类DealAction(抽象)。
11.DealerAction控制类使用execute()函数提交给ReissueAction,使之进行订票操作。
12.ReissueAction将改签请求转发给ReissueService控制类
13.ReissueService控制类将改签信息使用change()函数传给模型类ReissueDao。
14.ReissueDao使用updateDBOperate()函数操作operateDB()数据库类获得数据库信息。
15.OperateDB使用getCon()等函数连接数据库,并进行相关查询,更新操作。
16.ConnectDB将查询和更新结果返回给operateDB.
17.OperateDB将查询信息返回给ReissueDao模型类,若成功包含所查询到的结果
18.ReissueDao将改签的结果返回到ReissueServive控制类。
19.ReissueService控制类生成改签明细返回给用户改签页面。
3.4.3模块协作图
3.5退票模块
3.5.1模块时序图
3.5.2模块描述
1.用户选择需要退订的订单并点击相应超链接;
2.UserAction类中的Refund类(模块)收集退票相关信息并通过doSubmit()方法提交到ActionServlet()类;
3.ActionServlet()类对信息做相应处理之后使用doSubmit()方法将其转发到Control类;
4.Control调用Verification()方法检验对应用户提交的订单是否符合退订要求,如不符合退订要求,则返回false至Refund类;如验证可退订,则doConfirm()并把相协议文件返回给用户;
5.用户阅读协议并选择是否退订此订单;如退订则点击“确认”;
6.Refund()类使用Confirm()方法提交用户的确认请求至Control类;
7.Control类接收用户的更改请求并调用doUpdateDB()方法来更新数据库相关信息;
8.Control类doTransfer()向发出转账请求,并等待银行的返回确认信息;
9.返回给用户操作结果信息。
3.5.3模块协作图
3.6注销
3.6.3模块协作图
1.用户点击【注销】按钮,系统调用CancellationControl,处理用户的注销请求。
2.Cancellation模块向SessionControl提交申请,请求删除该用户登录后建立的session属性。
3.sessionControl类返回处理结果,删除session之后返回应答。
4.用户获取注销结果,退出系统,跳转至登录首页