当前位置:文档之家› 航空订票系统详细设计

航空订票系统详细设计

详细设计报告一、引言1.1 编写目的:本阶段在系统的需求分析的基础上,对航空订票系统做详细设计。

主要解决了实现该系统程序模块具体设计问题。

包括确定算法,数据结构,模块接口的使用,数据库的动态操作以及界面设计等。

在以下的概要设计报告中将对在本阶段中对系统所做的所有详细设计进行详细的说明。

在下一阶段的编码过程中,程序设计员可参考此详细设计报告,在详细设计对机票预定系统所做的算法设计,数据结构以及数据库动态操作的基础上,对系统进行编码。

1.2 项目背景:开发软件名称:航空订票系统。

用户:航空公司运行环境:宿舍电脑。

开发平台:MyEclipse 7.0 PostgreSql数据库。

系统架构:该系统采用java+jsp框架1.3 定义:查询:对数据库的操作的一种,用于搜索数据信息。

插入:对数据库的操作的一种,用于将数据存入数据库中。

更新:对数据库的操作的一种,用于更改数据库中的数据信息。

PostgreSql: 系统服务器所使用的数据库管理系统(DBMS)。

SQL: 一种用于访问查询数据库的语言事务流:数据进入模块后可能有多种路径进行处理。

主键:数据库表中的关键域。

值互不相同。

外部主键:数据库表中与其他表主键关联的域。

1.4 参考资料:需求分析说明书软件开发小组软件工程齐治昌谭庆平宁洪等高等教育出版社实用软件工程郑人杰等,清华大学出版社。

二、总体设计2.1 需求概述航空订票系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机票预定系统,实现航空公司的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。

具体功能为用户把预定机票的旅客信息(姓名、性别、身份证号码(护照号码)、乘坐时间、出行始发地和目的地等)输入到系统中,系统为旅客安排航班。

当旅客交付了预订金后,系统打印出取票通知和帐单给旅客,旅客在飞机起飞前一天凭取票通知和帐单交款取票,系统核对无误即打印出机票给旅客。

此外航空公司为随时掌握各个航班飞机的乘载情况,需要定期进行查询统计,以便适当调整。

同时还需完成旅客延误了取票时间的处理,航班取消后的处理,旅客临时更改航班的处理等。

根据可行性研究的结果和客户的要求,分析现有情况及问题,采用B/S结构,将机票预定系统划主要就是服务器端子系统。

2.2 软件结构:图1软件结构图三、程序描述3.1 各功能详细描述:本系统主要用于机票预订,所以提供了以下几个子功能:机票预订,取票通知,查询航班,查询机票,退票,打印机票,各航班的营运统计,以及后台方面的航班的添加,取消航班,机票的生成,以及航班的查询等后台功能。

1、机票预订功能:用户和机场管理员有权力进行该项功能。

首先通过查询得到旅客所需的航班,确定该航班还有没有被预订的座位,然后选择座位的等级,填写旅客的详细信息之后就可进行网上预订机票。

2、取票通知:该项功能只有用户和机场管理员有权力进行操作,在机票预订功能成功完成之后,系统会自动给浏览器端发送一条取票信息以及所需缴纳的费用。

旅行社可以利用特定设备将该取票信息打印出来,这就是取票通知。

3、查询航班:可以通过输入出发地,目的地,日期和时间选定自己航班。

4、查询机票:该项功能用户、游客、管理员都可以操作,可以通过自己的身份证号以及取票通知上的机票号查询自己的机票信息。

5、退订机票:该功能只有用户和机场管理员有权力操作,利用身份证号和对应的机票号就可以查询到机票信息,然后就可以退订机票。

6、打印机票:该功能只有机场管理员有权力操作,只有当管理员确认旅客已经付款后才予以打印机票,可以通过身份证号和对应的取票信息上的机票号查询机票信息,然后服务器返回机票信息,管理员就可以打印该机票信息,交给旅客。

7、各航班的营运统计:该项功能只有机场管理员才能操作,他可以通过输入年份和月份查询当月个航班的营运情况,以便机场能够及时掌握航班动态。

8、后台的航班添加:该项功能只有机场管理员才能操作,他通过提供航班的具体信息添加航班信息。

9、后台的取消航班:该项功能只有机场管理员才能操作,先通过航班号和航班日期查询到航班信息后,取消航班就可以将该航班从数据库中删除。

10、后台的航班查询:该项功能只有机场管理员才能操作,通过航班号和航班日期查询到航班信息。

11、后台的机票生成:该项功能只有机场管理员才能操作,可以通过该项功能给刚添加的航班生成对应的飞机票号纪录。

3.2 主要的系统功能模块如下:1、用户模块:用户用例图如图2所示(1)用户登陆模块ConsumerDAO.getConsumer() (2)用户注册模块ConsumerDAO.register()(3)查询航班模块ConsumerDAO.getFlightByInformation() (4)订票模块ConsumerDAO.orderTicket() (5)修改密码模块ConsumerDAO.modifyPassword() (6)付款模块ConsumerDAO.paying() (7)退票模块ConsumerDAO.returnTicket()图22、管理员模块:管理员用例图如图3所示 (1)管理员登陆模块ManagerDAO.getManager() (2)管理员修改密码模块ManagerDAO.modifyPassword() (3)删除用户ManagerDAO.deleteConsumer() (4)添加新管理员ManagerDAO.addManager() (5)删除管理员模块ManagerDAO.deleteManager() (6)发布新航班模块ManagerDAO.addNewFlight() (7)删除航班模块ManagerDAO.deleteFlight()(8)根据信息查看航班信息模块ConsumerDAO.getFlightByInformation()用户注册或登录 搜索飞机票预订飞机票删除已定机票付款普通用户生成交易信息并请用户确认图33、创新点——通过关键字从其他网站找到一些信息推荐给用户模块:用例如图4所示。

推荐信息模块InformationDAO.getInformationByKeyWord()3.3数据库设计:普通用户(Consumer) 字段名 字段类型 是否为空 默认值 字段含义注释consumerId VARCHAR2(10) N 用户编号 用以标示不同用户。

consumerName VARCHAR2(20) N 用户名称 用户自己取的名字有利于用户记忆,可以用来登录等。

consumerPasswor dVARCHAR2(20) N 用户密码 用于确定用户身份。

consumerGender VARCHAR2(1) N 用户性别consumerBooking FligtVARCHAR2(20) Y 用户已订票航班用于储存用户已订票的航班。

consumerBooking SeatVARCHAR2(20) Y 用户已定机票的座位号 用于储存用户已订票航班的座位号。

consumerIDCardO rPassportNoVARCHAR2(20)N用户的身份证号或护照号用户取票的凭证(身份证号或护照号)信息采集器 附近旅馆信息附近餐馆信息交通状况管理员登录 发布新航班 删除用户 管理员修改密码删除航班查看航班信息管理员 增加新管理员 删除管理员管理员(Manager)航班表(FLIGHT)3.4、流程图:图5流程图3.5 DAO 接口设计设计了通用的DAO接口,而不是直接写访问数据库的实现类,这样可以创建不同的实现类来实现接口,使标准制定和标准实现分离。

当换了数据库,或者换了数据库访问技术,就可以写新的实现类,不用改变原来的代码。

如定义FlightDAO接口,若从文件中读取数据可以定义FlightDaoFromFile实现类,若利用JDBC访问数据可以定义FlightDaoFromJDBC实现类,若利用hibernate访问数据可以定义FlightDaoFromHibernate实现类等。

3.5.1 FlightDAOflightDAO用来航班计划,航班的数据访问。

package com.tarena.abs.dao;import com.tarena.abs.model.*;import java.util.*;//对航班和航班计划数据访问的接口。

public interface FlightDAO{// 根据指定出发地,目的地和出发日期在底层数据源中查找//得到所有的航班对象的集合。

public Set getAllFlights(String fromAddr,String toAddr,Calendar date);//执行出票的操作。

public boolean order(Order ord);//添加指定的航班计划对象。

public boolean addFlightSchedular(FlightSchedular fs);//根据给定的航班编号在底层数据源中删除该航班计划,//以及该计划下的所有航班。

public boolean removeFlightSchedular(String flightNumber);// 得到所有航班计划对象public Set getAllFlightSchedulars();//添加航班public boolean addFlight(Flight fl);}3.5.2 TicketOrderDAOTicketOrderDAO用来访问票单数据。

package com.tarena.abs.dao;import java.util.Set;import java.util.Calendar;import com.tarena.abs.model.*;// 机票出票记录访问接口public interface TicketOrderDAO {// 执行出票的操作。

public boolean order(Order ord);// 执行退票操作。

public boolean cancelOrder(int TicketNumber);// 查询指定营业网点在指定时间段内的出票记录public Set<TicketOrder> getAllTicketOrder(Branch branch,Calendar startDate,Calendar endDate);// 得到指定营业网点指定日期内的营业额。

public double getAllTicketMoney(Branch branch,Calendar startDate,Calendar endDate);//得到所有营业网点指定日期内的营业额public double getAllTicketMoney(Calendar startDate,Calendar endDate);//查询所有出票信息public Set<TicketOrder> getAllTicketOrder();}4 关健代码分析4.1流程代码分析服务器启动时读取配置文件,读取数据,并且服务器端ServerSocket 等待客户端线程访问,当收到客户端相应后,则创建一个新的服务线程执行服务。

相关主题