航空售票系统毕业论文Word文档格式.docx
《航空售票系统毕业论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《航空售票系统毕业论文Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
(3)当旅客进行机票预定时,输入旅客基本信息,系统为旅客安排航班,打印取票通知和帐单;
(4)旅客在飞机起飞前一天凭取票通知交款取票;
(5)旅客能够退订机票;
(6)能够查询每个航班的预定情况、计算航班的满座率。
数据库要求:
在数据库中至少应该包含下列数据表:
(7)航班信息表;
(8)航班坐位情况表;
(9)旅客订票信息表;
(10)取票通知表;
(11)帐单。
2.设计阶段:
针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。
(1)根据分析,导出系统的数据流程图和功能模块图。
(2)设计数据库。
使用MicrosoftAccess创建数据库。
确定数据库中数据表的组成。
确定数据表中字段的构成、主键字段和有关字段的约束条件等。
依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。
(3)根据功能确定软件模块组成及调用关系。
3.编码阶段
建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。
4.运行维护
在软件运行时,检查软件的不足或错误,并进行维护。
5.编写课程设计报告
(1)设计题目
(2)任务要求
(3)系统总体方案
(4)各功能模块和流程图
(5)心得体会和参考资料
注:
学生完成课程设计后,提交课程设计报告及相关电子文档,要求将前述全部内容依先后顺序写成设计报告一份,要求文字通畅、字迹工整,文字不少于5000字,装订成册。
四、进度安排
序号
设计内容
天数
1
分析设计内容,给出解决方案
3
2
创建数据库及建表
可视化界面设计
4
对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告
5
指导老师检查设计结果并做成绩评定
总计
14
五、参考资料
[1]张海藩.软件工程导论,清华大学出版社,2004
[2]陈明.实用软件工程基础,清华大学出版社,2003
[3]殷人昆.实用软件工程,清华大学出版社,2003
[4]宋波.UML面向对象技术与实践,科学出版社,2004
指导教师签名日期年月日
系主任审核日期年月日
摘要
随着社会的不断发展,计算机的应用已经深入到了生活的各个方面,现代社会的各行各业都离不开计算机的信息处理,作为一个航空公司更是如此。
一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。
面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。
本系统的用户角色分为游客、用户和管理员。
游客可以查看新闻和查询航班,当游客有感兴趣的航班时需要登录以后才可以预定。
用户可以阅读新闻、查询航班、预定航班,除此之外每一个用户还有自己的空间,只能查看和操作自己的预定和个人资料,用户具有退票的权限,这在现实中得联系服务台才行。
管理员可以修改和提交新闻,能够删除航班和增加航班。
航班并不能修改不然用户得担心到底等那班飞机了。
关键词:
J2EE大型数据库hibernatestruts
1、引言
1.1问题的提出
网络时代已经来临了,熟悉安全系数高的系统打交道比如说航空售票系统这将对我们出去找到一份好的工作打下坚实的基础。
选择这样的一个系统,主要还是想练习一下自己的所学,不过还是没有达到我自己的预期。
尽管使用了Hibernate不过管理数据库还是一团糟。
1.2任务分析
本课题主要的目的是完成一个航空售票系统,系统包括的角色有游客、用户和管理员。
2、需求分析
2.1航空售票系统的功能性需求
航空售票系统主要分为三个角色游客、用户和管理员,以下分别详细阐述。
本系统采用前台登录的方式,所以不需登录也可以使用一些操作,而这些操作正是游客的权限,游客可以阅读新闻可以查询往返航班,可以申请注册用户。
用户登录以后可以查看和修改自己的个人资料,还能查看自己的预定情况,并随时对自己的预定可以取消。
当用户想退出系统时可以选择注销安全退出。
管理员具有两大功能管理新闻和管理航班,管理员可以随时对新闻做出修改、删除和新增操作。
而航班管理员可以添加航班。
对于飞机和城市的管理没有来得及写。
2.2.航空售票系统的方案分析
本系统采用Hibernate来做数据库的管理工作,首先要建立数据库,然后在遵循hibernate来连接数据库和用户的界面。
3、分析模型
航空售票系统的游客的用列有查看新闻、注册、查询航班。
用户用列:
登录、注册、查看新闻、管理个人空间其中包括管理个人资料和已经预定了的航班、查询航班、预定航班。
管理员用列有管理新闻和管理航班。
管理新闻包括修改、删除、新增新闻。
管理航班包括删除、新增航班功能。
3.1.系统登录
登录界面:
边界类,用于输入用户名和密码。
登录控制:
控制类,用于验证输入的用户名和密码的正确性。
用户表:
实体类,用于保存用户名和密码。
3.2.航空信息管理登录
用户登录界面:
边界类,用于用户登录登陆信息管理.用户登录控制:
控制类,用于控制用户身份的识别.航班信息表:
实体类,用于对航班信息进行存储.用户信息表:
实体类,用于验证用户登录的合法性
3.3.概念类字典
(1)用户信息表
类名:
用户
类的类型:
实体类
功能:
存放用户的基本信息
属性:
id、昵称、密码、真实名字、性别、年龄、电话号码、电子邮件、地址、帐户金额。
操作:
该概念类存放所有用户信息,使用昵称和用户名登录系统。
(2)管理员信息表
管理员
存放管理员的基本信息
id、昵称、密码。
使用昵称和密码登录后台对新闻和航班进行管理
(3)飞机信息表
类名:
飞机
类的类型:
功能:
存放飞机的相关信息
属性:
id、头等舱座位数、商务舱座位数、经济舱座位数、飞机型号、飞机图片
(4)航班表
航班
存放航班信息
id、出发时间、到达时间、候机楼、航班号、头等舱可用座位数、经济舱可用座位数、商务舱可用座位数、单价、出发地id、目的地id、飞机id
(5)新闻表
新闻
存放新闻信息
id、标题、作者、日期、正文。
(6)地点表
地点
存放地点信息
id、地名
(7)订票表
订票
存放票务信息
id、票的人数、舱位类型、总价格、用户id、航班id
(8)会话提供类
类名:
SessionProvider
类的类型:
该类为临时类
功能:
读取hibernate.cfg.xml,处理session
属性:
会话工厂(SessionFactory)、线程(ThreadLocal)
操作:
建立session、关闭和清理session
(9)实体管理工厂
EntityManagerFactroy
用来创建实体类
无
操作:
创建抽象类BaseEntity
(10)实体管理
EntityManager
临时类
用来管理所以的javabean
class对象
按照不同的条件查询学生和教师,并对实体的更新、保存和删除。
采用class对象访问数据库真的很简单了哈。
(11)建立实体接口
接口类名:
BaseEntity
接口类型:
抽象类
为EntityManager提供建立其他实体类的操作。
抽象操作:
对Oid的读取和写入
(4)分析用例图如下3-1所示:
图3-1系统主要用例图
以上类之间有组合聚集、继承、关联关系等关系。
可以根据类之间的这些关系绘制类图
1)组合聚集:
在图3-2中EntityManager和BaseEntity之间是共享聚集
图3-2
2)继承关系:
航班类、订票类、飞机类、地点类和用户类都有一个Oid所以可以将公共部分提出了组成一个BaseEntity抽象类,使他们形成继承关系。
因为空间有限所以新闻类没有给出如图3-3
图3-3
3)关联关系:
航班和订票之间存在一对多的关联关系如图3-4,用户和订票之间存在一对多的关联关系。
航班和地点存在一对二的关联关系,航班和飞机存在一对一的关联关系如图3-4
图3-4
3.4分析动态模型
1)、登录系统
系统管理员通过登录界面输入用户名和密码,登录信息控制对象获得密码和用户名后验证其正确性如果正确则显示系统主功能界面,如错误则重新返回登录界面.
用户表中存放用户的登录名和密码。
验证输入信息,就是验证用户表中是否有该输入的用户名存在,如果用户名存在,则验证其密码是否正确,如果正确则返回登录成功消息,否则重新返回登录界面。
2)、游客的功能操作
游客所具有的功能管理员和用户都具有游客进入主页以后可以查看新闻、申请注册、查询航班。
注册时用户名不能相同,如果对预定的航班感兴趣,系统将会将游客转到登录和注册页面。
3)、用户的功能操作
用户登录以后可以查看个人的主页、航班信息以及注销,在点击订票连接以后系统将会给出订票窗口,输入一定的参数后系统将给出查询结果,当用户点击查询价格时系统将会计算价格并打印出航班信息请求用户确认。
用户点击购买即可预定当前航班。
4)、管理员功能操作
管理员登录以后点击新闻管理,系统将会转到新闻管理页面,打印出当前系统的所有新闻,管理员可以修改、删除和新增新闻。
完成后单击后台主页系统将会返回到管理主页面单击航班管理,系统将会显示当前所有航班的出发地、目的地、出发时间、目的时间。
管理员可以对航班进行删除和新增。
3.5程序流程图
如图3-3所示
图3-3系统流程图
4、设计模型
4.1软件平台设计
课程设计题目自动选课系统的开发和运行环境如下:
1.硬件平台:
内存建议为1G,CPU为PII以上,硬盘1G以上
2.操作系统和版本:
Windowsxpsp2
3.支撑环境(例如:
数据库等)和版本:
jre1.5以上,服务器:
tomcat5.0,数据库:
SQLServer2000,IDE:
Netbeans5.5.1,IE:
建议为MicrosoftInternetExplorer,
4.其它与该软件有关的软件组件;
架构:
Hibernate+struts,标签库:
JSTL1.0,布局框架:
Tiles
4.2结构设计
功能模型分析包:
包含分析阶段主要的类(航班类、订票类、用户类)。
在此设计阶段将结合具体实现环境对其进行细化,规约,完善。
数据库包:
为业务模型包中的类提供数据存取服务。
实体包:
包含在需求阶段分析出的实体类的设计
功能实现包:
实现对航空售票系统的管理。
4.3详细设计与界面设计
(1)、jsp页面设计
本列中的jsp页面都是使用jstl+el写的这样没有学过java的程序员也是看得懂代码的,所有的转发规则在struts-config.xml文件中定义,这样就增加了易维护性
、设计数据库
本列用SQLServer2000建立数据库表,各个表之间的关系请参考静态建模的类图。
本数据库的sql语句是采用Ant运行build.xml自动生成,而相应的类也是同一个xml文件生成的。
三个主要类xml文件分别Flight.hbm.xml、Book.hbm.xml、User.hbm.xml。
其中hbm2java和hbm2dll工具由build.xml调用。
Sql语句这里就不再说明只是将数据库的初始数据展示出来以供测试使用。
Flight.hbm.xml将会新建Flight表如图4-1,Book.hbm.xml将会新建Book表如图4-2,User.hbm.xml将会新建User表如图4-3
图4-1
图4-2
图4-3
(3)用户界面
本软件采用Tiles布局,分为header、body、base三大部分,其中body为子类实现
将要使用在每一个屏幕(图形用户界面)上的软件组件,可能包括:
Menu菜单:
主页、查询航班、预定航班、客户服务、关于我们和退出
标准按钮:
注册、登录、搜索
导航链接:
阅读新闻
错误信息显示标准:
无,仅为简单的提示
Tiles布局详细为下表图4-4
Header
body
Base
图4-4
5、测试用例
5.1.测试用例
测试用例可以是白盒测试或者黑盒测试,在白盒测试中我们要根据系统的每一个逻辑语句来进行测试,黑盒测试则是只针对系统要实现的功能进行测试,由于本次设计的逻辑教为简单所以采用白盒测试的方法,分别采用三个角色测试,游客、学生和教师:
用列一:
使用游客阅读新闻、查询航班、预定航班(当需要付钱时系统将会提示登录)、注册用户。
用列二:
用户操作自己的资料和查看自己的预定
用例三:
管理员修改新闻,新增航班,删除航班。
5.2.测试结果
Ø
用例一
第一步:
阅读新闻,登录主页如图5-1-1,点击任意新闻后如图5-1-2
图5-1-1
图5-1-2
第二步:
查询航班,本列为查询成都到上海出发为26日返回为29号的航班,查询方式如图5-1-3,查询结果为如图5-1-4:
图5-1-2
图5-1-3
第三步:
预定航班,因为是游客所以只能使用预定的查询功能查询方式如图5-1-4,查询结果如图5-1-5,核算结果如图5-1-6,当点击购买是系统将会导航到登录和注册窗口如图5-1-7:
图5-1-4
图5-1-5
图5-1-6
图5-1-7
第四步:
注册用户,点击图5-1-7的注册按钮将会转到如图5-1-8,点击申请转到如图5-1-9,注:
所以输入验证采用客户端,用户名可以先检测
图5-1-8
图5-1-9
第五步:
购买,注册成功后系统将会将用户导航到图5-1-7登录后将会返回到图5-1-6。
点击购买将会返回主页
用例二
登录后点击我的空间后如图5-2-1显示个人资料,预定情况如图5-2-2:
图5-2-1
图5-2-2
用例三
修改新闻,管理新闻主界面如图5-3-1,点击第一个新闻的修改后如图5-3-2
图5-3-1
图5-3-2
新增航班,该页面没有来的及些输入验证如图5-3-3,提交后转到管理航班的主界面如图5-3-4
图5-3-3
图5-3-4
第三步删除航班,删除从成都到乌鲁木齐的航班如图。
图5-3-5
5.3、测试过程中出现的问题
从测试用例结果可以看出所设计的系统基本上都能实现所要求的功能,不过在程序测试过程中也出现了一些问题。
如注销以后虽然session里面的user等对象都值为null,但是返回键我还没有办法禁用,所以当你点击后推是将还会有部分私人数据显示,如用户的帐户。
不过还好无法查看用户的私人数据。
5.4.性能分析
通过上面的测试用例和测试用例的结果我们可以清楚的看到系统基本可以完成对航班的预定管理,对需求分析阶段提出的要求也都实现了。
本系统为学生作品所以并没有要求并发要求数和响应时间的要求。
我对本网的测试是在内网进行的,所以速度还是比较快的。
不过数据库的操作方法我一直存在怀疑,因为有时要把整个表的大部分放到前台来处理
6、用户手册
6.1系统安装
对于客户端:
要使用这个系统你只需要在电脑上装上浏览器就可以了,建议使用internetExplorer。
对于服务器端:
需要先装上Netbeans5.5.1,然后在装上tomcat5.0让后下载hibernate2.1.7,数据库SQLServer2000,java虚拟机jdk1.5以上,至于环境变量的配置就请自己解决了。
6.2登录
、如图5-1-1中的登录框为用户登录,页面底部为后台登录连接将会导航到后台登录。
6.3进入系统界面
、系统中的游客和用户所具有的主要功能操作如图5-1-1所示
.后台进入系统的登录界面如图6-1-1,功能主界面如图6-1-2:
图6-1-1
图6-1-2
结论
本课程设计刚开始操作数据库我全部用hibernate操作,hibernate的xml是不能写约束条件的,它的约束条件全部有java编程完成后然后在发往数据库,可但是这样就会产生一个坏处,运行速度慢。
服务器太累了,但不得不说它的可移植性就很好了。
因为毕竟是学的SQLServer2000所以我还是写了一个储存过程来删除预定,和一个job来删除过期了航班,飞机的冲突检测我也是一定会写的,大话就先说在这里。
比起其写C#的同学我的储存过程少了很多,但是我至少验证了用java一样可以调用存储过程,这样就破坏了可移植性。
到底是追求速度还是可移植性真是一个伤脑筋的问题,本课程设计倒是两个通吃,却成了四不像。
通过这次实验,如果说获得了对hibernate的更深一层次的了解,那是鬼话。
学完了MSSQL如果我一个月不碰电脑写一个delete语句都有问题,不过幸好翻着书还能写出来。
Hibernate我还是仅仅懂一些表面的知识我想内部的原理还需要我去仔细深入的了解。
谢谢教我MSSQL的谭三老师,他教会了很多知识,而这正是这次课程设计必不可少的。
致谢
谢谢我的课程设计老师柳荣其,当然还得谢谢软件工程老师范永权了,不然我的类图和时序图我就画不出来了。
谢谢我的c启蒙老师吴勇我会一直记住他的那句话:
IdoandIunderstand。
谢谢帮助过我的同学当遇到环境问题时多一个人考虑就会花更少一点时间解决。
参考文献
∙《实用软件文档写作》(第一版)肖刚等著
∙《精通Hibernate:
Java对象持久化技术详解》孙卫琴著
∙《Java编程思想》(第三版)BruceEckel著
∙《BenginningjavaServerpages》VivekChopra等著
∙《JavaEE5开发指南》KevinMukhar等著
∙《JavaPersistencewithHibernate》ChristianBauer等著