多层架构下航空票务系统的设计
【摘要】航空票务系统是指应用电子计算机和网络通信设备对机票和航班进行管理的系统。为了进一步提高航空票务管理的自动化程度,本文基于Struts、Hibernate、Spring三层架构的设计思想提出了航空票务系统架构设计方案,详细阐述了表现层、业务层、持久层设计方法,及系统数据库、各功能模块设计思路。
【关键词】航空票务系统;Struts;Hibernate;Spring
1.系统分析
在航空票务系统中,用户可以查询机票发售情况,并预订自己中意的机票,订票完后可查看个人购物车,不满意可进行退票操作。很显然用户是系统中主要角色。同样,在系统的后台,也需要人员制定航班、安排航班日程,管理注册用户,该角色为系统管理员。综上所述,本系统实际只包含了两个角色:前端用户和系统管理员。前端用户进行客户信息修改、航班查询、预订机票、退票服务等操作;系统管理员进行帐户基本信息管理、制定航班、安排航班日程服务。航空票务系统具有以下功能:
1.1用户功能:注册用户帐户、用户登录、修改用户信息、查询机票发售、预订机票、退票。
1.2管理员功能:管理员帐户登录、制定航班、安排航班日程。
2.系统总体设计
航空票务系统是基于Struts框架、Spring和Hibernate多层分布式架构设计的。为了集成三种框架,必须明确架构的层次结构,同时明确每一个层次的职责。航空票务系统按照逻辑划分为三层:表现层、持久层、业务层。
2.1表现层设计
表现层用Struts。Struts是MVC设计模式的一种实现。本系统中MVC模式的处理流程:首先票务业务控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型调用票务业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图返回数据,并通过表示层呈现给用户。
2.2业务层设计
业务层实现的是现实中具体的业务逻辑,如查询机票、预订机票、制定航班、用户注册等。代码变更不可避免,为方便代码变更,在该层借助Spring,通过依赖注入、AOP应用、面向接口编程来降低业务组件之间的耦合度,增强系统扩展性。票务系统中,Spring通过一个请求代理接口DelegatingActionProxy来实现
请求代理的,在struts-config.xml配置如下:
这个接口就是Spring提供的用户的请求代理,这个代理把接收到的请求转发给应该接受请求的Struts控制器,为了达到这个转换效果,Spring在配置文件applicationContext.xml中再进行一次配置,配置如下:
2.3持久层设计
持久层定义应用程序通过具体的类与数据库交互,主要是加载Hibernate的配置文件和创建SessionFactory实例。由于我们设计的框架集成Spring和Hibernate,因此我们将数据源的配置放在Spring的配置文件ApplicationContxt.xml中,相关DomainObject的声明也放在该配置文件中。
3.数据库设计
本系统的所有信息均保存在数据库orderticket中。由于采用了Spring为系统提供基础服务,所以当更换数据库管理系统时,只需修改Spring配置文件即可,无需修改代码和设计,实现了良好的可移植性。另外采用了对象/关系映射,所以数据库中的数据表和持久化类是对应的。表与表之间相互关联,共同存储着系统所需要的数据。
针对系统功能模块的分析以及数据库设计原则,将航空票务系统的数据库关系设计为5张表,即航班信息表(flights)、用户信息表(users)、管理员信息表(admin)、航班安排表(orderitems)、订单表(orders)。数据库名称为orderticket。
4.功能模块设计
4.1管理员制定航班功能设计
管理员通过管理员功能视图进入制定航班视图,输入新航班信息,并把请求提交到制定航班控制器。该控制器调用CreateFlightDao添加新的航班,把添加的结果返回到制定航班视图。
4.2安排航班日程功能设计
4.2.1管理员通过管理员功能视图进入制定航班日程安排视图。
4.2.2读取航班信息控制器调用ReadFlightDao,读取所有航班信息,并把信息提供给航班日程安排视图。
4.2.3在航班日程安排视图中,管理员为每个航班安排航班日程,把请求提交给航班日程安排控制器。
4.2.4航班日程安排控制器调用CreateOrderItemDao,制定新的航班安排,并把制定的结果返回到航班日程安排视图。
4.3用户查询航班和订票功能设计
4.3.1用户通过用户功能视图进入查询航班日程安排视图。
4.3.2 purchase.jsp调用PurchaseDao,读取所有航班日程安排信息,为查询提供信息。
4.3.3用户在查询视图中执行订票操作。
4.3.4订票请求被提交到订票控制器,控制器调用PurchaseDao执行订票功能,并把订票结果返回到查询视图。如图4.9所示。
4.4查询购物车和退票功能设计
4.4.1用户通过用户功能视图进入查询航购物车视图。
4.4.2 shoppingcar.jsp调用ShoppingCarDao,读取用户所有的信息,为查询购物车视图提供信息。
4.4.3用户在查询视图中执行退票操作。
4.4.4退票请求被提交到退票控制器,控制器调用RetrieveTicketsD
ao执行退票功能,并把退票结果返回到查询视图。查询购物车和退票流程图。■
【参考文献】
[1]刘晓华,陈亚强著.J2EE应用开发详解.电子工业出版社,2004.
[2](美)ArtTaylor著.李东升,等译.JDBC数据库编程与J2EE.电子工业出版社,2004.
因篇幅问题不能全部显示,请点此查看更多更全内容