航空订票系统设计报告.docx
- 文档编号:30594433
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:29
- 大小:911.07KB
航空订票系统设计报告.docx
《航空订票系统设计报告.docx》由会员分享,可在线阅读,更多相关《航空订票系统设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
航空订票系统设计报告
(一)航空售票系统的数据需求
(二)数据字典
(三)主要数据流图
(一)基本查询语句
(二)程序流图中某些加工实现采用IPO图的方式描述
(三)数据库的逻辑结构设计
一绪论
1.1课题背景及现状
随着旅游业的逐渐的成熟发达,航空客运量大幅度的提高,国内国际的旅游航班的增加,这些都对航空的信息管理系统提出了更高的要求,所以要不断的完善更新航空售票系统,提高航空售票系统的工作效率。
航空公司为方便旅客,需开发一个订票系统。
系统的操作者是有登录密码和用户名的售票员。
系统要实现的基本功能是航班的调整,售票,订票,取票,退票,乘客信息的管理,乘客购票的统计;而系统在以后扩展时还可以实现的功能有:
对机组工作人员的管理,预定机票的送票情况管理等。
此系统的开发由我们分模块完成,而我所负责的模块是实现系统的航班调整,售票,订票,退票,取票,航班查询功能。
举一个旅客订票的例子:
预定机票的旅客信息,包括姓名、性别、地址、证件号、目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。
旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。
要求系统能有效、快速、安全、可靠和无误的完成上述操作。
并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。
航空售票系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点
1.2开发工具介绍
本次课程设计应用的开发工具主要是用java语言和SQLServer2005。
java版本jdk1.6.0.4版本,JavaIDE使用的是eclipse3.2版本。
本次数据库课程设计是以SQLServer数据库作为后台以java作为前台的应用型设计课程,综合了数据库与java两大课程创建应用型的数据库系统,大大提高了我们学生的动手能力,做到了理论与实践相结合,完成系统的分析,设计和开发。
二.需求分析
(一)航空售票系统的数据需求包括如下几点:
数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。
数据的输入来源是手工输入。
手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。
在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
数据的一致性与完整性
由于系统的数据是共享的,在不同的旅行社中中,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。
要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。
对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。
数据的共享与独立性
整个机票预定系统的数据是共享的。
然而,从系统开发的角度上看,共享会给设计和调试带来困难。
因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。
这样,也能提供系统的强壮性。
系统能实现的操作和功能如下:
①查询航线:
根据旅客提出的终点站名输出下列信息:
航班号、飞机号、星期几飞行,价格和剩余票额等业务。
②承办订票业务:
根据客户提出的要求(航班号或者终点站)查询该航班票额情况,若尚有余票,则为客户办理订票手续.输出座位号;若已满员,则需重新询问客户要求。
若需要,可购买下一次航班或者等待看有没有人退票;
③承办退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所剩票额能满足他的要求.则为他办理订票手续,否则依次询问其它排队候补的客户。
两个客户名单可分别由线性表和队列实现。
为查找方便.已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。
由于预约人数无法预计,队列也应以链表作存储结构。
整个系统需汇总各条航线约情况登录在一张线性表上,由于航线基本不变采用顺序存储结构,并按航班有序或按终点站名有序。
每条航线是这张表上的—个记录,包含上述8个域,其中乘员名单域为指向乘员名单链表的头指针,等侯替补的客户名单域为分别指向队头和队尾的指针
(二)数据字典
数据条目:
系统管理要求=[乘客资料表|机组人员资料表|购买信息表|航班信息表|飞行信息表|订单信息表]
乘客资料表=证件号+姓名+性别+年龄+家庭地址+电话+旅客类型+目的地
机组人员资料表=编号+职称+姓名+年龄+性别
购买信息表=旅客证件号+航班+票价
航班信息表=航班号+出发地+目的地+起飞时间+抵达时间+航班类型+剩余票数+价格
飞行信息表=航班号+飞机号+航程+中转站
订单信息表=姓名+证件号+航班号+机型+舱位+座位+订票日期
(三)主要数据流图如下:
(1)功能模块设计
(2)主要层次结构图:
三概要设计
航空订票系统E-R图如下:
四逻辑设计
根据E-R图和相关要求,把ER模型图转换为关系表,进行数据模型转换,系统用到五个基本表:
旅客(passenger)表;购买(buy)表;航班(flight)表;飞行(fly)表;飞机(plane)表
将E-R图转换成关系模型,关系的主码用横线标识:
旅客(passenger)(姓名,证件号,电话,旅客类型,性别,年龄,地址)
购买(buy)(旅客证件号,航班,票价)
航班(flight)(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期)
飞行(fly)(航班,型号,航程,中转站)
飞机(plane)(型号,舱位,座位,航班)
五.详细设计
(一)基本查询语句
订票业务:
每次当有旅客需要订票时,首先需要对机场的航班情况进行查询,当有符合旅客的航班的机票剩余时旅客可以订票,并记录下旅客的相关信息,用到的SQL语句为:
insertintopassenger(姓名,证件号,年龄,性别,旅客类型,地址,电话);然后旅客的订票信息存入数据库,并分配相应的航班和取票信息;
退票业务:
当有旅客退票时,需要根据录入旅客相关的信息将数据库peopleorder表中相应的记录删除,所用SQL语句为:
deletefrompeopleorderwhere姓名=’旅客姓名’,证件号=’旅客证件号码’,状态=‘买票’;
航班增加/删除/修改业务(需要管理员权限):
当航空公司需要对机场航班情况进行调整时,如增加/删除/修改操作,通过以下SQL语句实现:
增加:
insertintoflightvalues(‘航班号’,’出发地’,’目的地’,’起飞时间’,’抵达时间’,’航班类型’,’剩余票数’,’票价’,’起飞日期’)
删除:
deletefromflightwhere航班号=’航班号码’;
修改:
updateflightset[任意属性列]=[修改值]where航班号=’航班号码’;
(二)程序流图中某些加工实现采用IPO图的方式描述:
(三)数据库的逻辑结构设计(航空订票系统使用的数据表)
旅客(passenger)(姓名,证件号,电话,旅客类型,性别,年龄,地址)
购买(buy)(旅客证件号,航班,票价)
航班(flight)(航班,出发地,目的地,起飞时间,抵达时间,航班类型,剩余票数,票价,起飞日期)
飞行(fly)(航班,型号,航程,中转站)
飞机(plane)(型号,舱位,座位,航班)
七测试结果
在航空售票系统的开发过程中,我完成的模块是需要系统实现如下功能:
航班的调整(增加/删除/修改),订票/售票,退票,取票,航班查询
测试过程中有如下主要代表性功能界面
(1)主要功能界面如下:
(2)订票客户资料界面
(3)订单号创立成功
(4)航班退票系统主界面
(5)点击退票当订单号不存在时
(6)点击查询可知道该订单号的详细信息
(7)管理主界面(需要输入帐号密码)
(8)航班管理系统
管理员可以更新数据库(包括插入,删除,更新,和查看数据库)
八小结
数据库课程设计任务渐渐远去,通过这次课程设计积累的信心与斗志,我开始写这篇文章,为自己的足迹留下哪怕是微不足道但是对自己弥足珍贵的痕迹。
我很高兴的一点是尽管我们的成果离完善还很远,但我真的有了很大的进步:
知识方面,,知道数据库是如何与开发工具连接的……所有这些都让我们对专业的兴趣又浓厚了很多
这次课设分为两个阶段——管理系统的前台和后台。
首先,要开发一个系统,就先得进行需求分析,这个部分是必不可少。
需求分析是整个设计过程的基础,是最困难,最耗费时间的一步。
这一步做得不好,甚至会导致整个数据库反工重做。
其次,该注意的是,数据字典是在需求分析阶段建立,在数据库设计过程中不断修改,充实,完善的。
系统一旦建立,各个功能就不易轻易修改和变动,所谓牵一发而动其身,所以要做好准备。
再次,E-R图的设计,清晰确定,消除不必要的冗余,优化设计,节省系统开发时间。
最后,就是整个系统的维护和优化改进方面,由于时间和能力的有限,不能很好的完善系统,这是这次设计的缺陷。
经过这次课设,我总结如下
1、注重理论知识和动手能力的相辅相成。
平时要多动脑和多动手,多上机操作实践。
2、平时多浏览资料。
我们所学的专业知识更新很快,这就要求我们能与时俱进,图书馆里有大量的参考书,另外网上有着更多、更新的知识宝库。
如果能很好的利用这两点,对自己的进步会有很大的帮助
3、虚心请教,当遇到不懂的问题自己想了很多办法却无法解决时,可以请教一些其他的同学或老师,这可以很快的解决问题。
在这次课设中,提高和完善所学知识的同时也体会到了团队精神的力量,收获丰富,受益良多;从中学到的知识和吸取的经验教训将会使我的知识很好的加深。
没有课设,我们就不可能真正的学好、掌握知识。
语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。
古语说的好:
学无止境啊!
以后我将更加努力争取取得更好的成绩。
我很庆幸在老师和同学的帮助下我顺利地完成了这次数据库课程设计。
在这里,我向给予我许多帮助的老师、同学真诚的说声:
“谢谢你们!
”。
参考文献
[1]王珊,萨师煊.《数据库系统概论》(第四版)高等教育出版社,2006
[2](美)RogerS.Pressman郑人杰马素霞等译《软件工程实践者的研究方法》2007年1月
[3](美)CayS.Horstmann陈昊鹏王浩等译《java2核心技术》第七版
[4](美)BruceEckel陈浩鹏译《Java编程思想》第四版
附录(航空订票系统主要java源程序)
主函数:
//importflight.assist.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassMainextendsJFrame
{
privateUpdateComboBoxupdate;
privateInterfacejiemian;
publicMain()
{
update=newUpdateComboBox();//开始线程
jiemian=newInterface();
this.getContentPane().add(jiemian);
}
publicstaticvoidmain(Stringargs[])
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exceptione)
{
Mainframe=newMain();
frame.setSize(568,436);
frame.setResizable(false);
frame.setTitle("航班订票系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
主界面函数;
/*importflight.query.*;
importflight.manage.*;
importflight.dingpiao.*;
//importflight.tuipiao.TuiPiao;
importflight.assist.*;*/
mportjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjavax.swing.border.*;
import.URL;
classInterfaceextendsJPanelimplementsActionListener//主界面
{
//privateMyQueryquery;
staticTestDBmanager;
privateTuiPiaotuiPiao;
privateHangkongdingPiao;
privateJButtonjbManager=newJButton("管理");
privateJButtonjbDingPiao=newJButton("订票");
privateJButtonjbTuiPiao=newJButton("退票");
privateJButtonjbAbout=newJButton("关于");
publicInterface()
{
this.setLayout(null);
this.add(jbDingPiao);
this.add(jbTuiPiao);
this.add(jbManager);
this.add(jbAbout);
jbDingPiao.setFont(newFont("Times",Font.PLAIN,12));
jbTuiPiao.setFont(newFont("Times",Font.PLAIN,12));
jbManager.setFont(newFont("Times",Font.PLAIN,12));
jbAbout.setFont(newFont("Times",Font.PLAIN,12));
jbDingPiao.setBounds(190,280,80,30);
jbTuiPiao.setBounds(290,280,80,30);
jbManager.setBounds(390,280,80,30);
jbAbout.setBounds(430,350,80,30);
jbManager.addActionListener(this);
jbDingPiao.addActionListener(this);
jbTuiPiao.addActionListener(this);
jbAbout.addActionListener(this);
}
publicvoidpaintComponent(Graphicsg)
{
ImageIconimageIcon=newImageIcon("jiemian.gif");
Imageimage=imageIcon.getImage();
g.drawImage(image,0,0,this);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==jbManager)
{
CheckIDcheck=newCheckID();
}
elseif(e.getSource()==jbDingPiao)
{
dingPiao=newHangkong();
dingPiao.setSize(430,300);
dingPiao.setResizable(false);
dingPiao.setTitle("国内机票实时速定");
dingPiao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
dingPiao.setVisible(true);
}
elseif(e.getSource()==jbTuiPiao)
{
tuiPiao=newTuiPiao();
tuiPiao.setSize(470,370);
tuiPiao.setResizable(false);
tuiPiao.setTitle("航班退票系统");
tuiPiao.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
tuiPiao.setVisible(true);
}
elseif(e.getSource()==jbAbout)
{
Stringinformation="制作人:
"+"孙启欢杨帅"+"\n"+
"版本:
"+"0.00"+"\n"+
"时间:
"+"2008-6-21"+"\n"+
"地址:
"+"华东交通大学软件学院06软件测试3班";
JOptionPane.showMessageDialog(null,information,"关于",JOptionPane.INFORMATION_MESSAGE);
}
}
订票系统主要源代码(部分):
//importflight.assist.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
importjava.util.*;
importjavax.swing.border.*;
publicclassHangkongextendsJFrameimplementsActionListener
{
privateString[]string=newString[23];
privateJComboBoxboxyear=newJComboBox();
…………….
privateJComboBoxboxadult=newJComboBox();
privateString[]year={"2007","2008"};
privateString[]adult={"成人","儿童","学生"};
privateString[]month={"01","02","03","04","05","06","07","08","09","10","11","12"};
privateString[]day={"01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"};
privateJTextFieldjbtflight=newJTextField(10);
……………..);
privateJButtonjbtbutton=newJButton("机票预定");
privateJButtonjbtreturn=newJButton("返回主页面");
Colorcolor=newColor(230,230,255);
{if(jbrsingle.isSelected())
{
if(sflight==1)
{
JOptionPane.showMessageDialog(this,"航班号不能为空!
",
"错误信息",JOptionPane.ERROR_MESSAGE);
jbtflight.setText("");
}
elseif(sflight==4)
{
JOptionPane.showMessageDialog(this,"没有此次航班,请您重新查阅!
",
"错误信息",JOptionPane.ERROR_MESSAGE);
jbtflight.setText("");
}
else
{
clientFrame.getContentPane().add(client.panel(string));
clientFrame.setTitle("客户资料");
……………….
client.jbtchildticketnumber.setText("1");
}
}
elseif(jbrdouble.isSelected())
{
isFull=seatinformation.isFull(string[11],string[10]);
dflight=doubleflight();
if(sflight==1)
{
JOptionPane.showMessageDialog(this,"第一航班号不能为空!
","错误信息",JOptionPane.ERROR_MESSAGE);
}
elseif(dflight==5)
{
JOptionPane.showMessageDialog(this,"返回航班号与第一航班号不匹配\n请重新输入返回航班号!
","错误信息",JOptionPane.ERROR_MESSAGE);
jbtflight1.setText("");
}
else
{
clientFrame.getContentPane().add(client.panel(string));
clientFrame.setSize(450,460);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空 订票 系统 设计 报告