资源描述
课程设计报告 摘要
摘 要
航空定票系统是使用JAVA编程技术在MYEclipse6.0集成开发环境下开发的订票系统。该系统实现了航班管理、订票管理、退票管理以及查询航班等功能。
在航班管理中航空公司内部管理员能在系统中完成添加航班或删除航班、更新航班信息、查看数据库等功能。乘客能够在系统中完成查询航班、订票办理和退票办理等功能。乘客可以用多种方式来查询航班信息,也可以根据实际需要来订票(单程、往返、联程)。系统还能将这些信息保存在数据库中,并供航空公司内部管理员随时查询。
关键词: 航空定票系统,JAVA,MYEclipse6.0,定票,退票
Abstract
The aviation settles a ticket system is use a JAVA plait distance's technique integrated in the MYEclipse6.0 develop under the environment develop of book a system.That system carries out a service a management and books a management, dishonor bill management and searches a service etc. function.
The airline internal managing person can complete to add a service or delete a service, renew a service information and look into a database in the system in the service the management etc. function.The passenger can complete a search service and book a ticket to carry out to carry out with dishonor bill in the system etc. function.The passenger can search a service information with various ways, can also book a ticket according to the effective demand.(one way, go back and forth, allied distance)The system returns an ability will these the information keep in the database, and provide an airline the internal managing person searches at any time.
Keywords: The aviation settles a system,JAVA, MYEclipse6.0, settle a ticket, dishonor bill
I
课程设计报告 第1章 绪论
目 录
摘 要 I
Abstract II
第1章 绪 论 1
第2章 系统功能介绍 2
2.1系统功能总框图 2
2.2 本人模块功能介绍 2
2.2.1 航班管理功能介绍 2
2.2.2 查询航班功能介绍 2
2.2.3 订票办理功能介绍 3
2.2.4 退票办理功能介绍 3
2.2.5 连接数据库介绍 3
2.3 组内任务分工 4
第3章 数据库设计 5
第4章 系统功能实现 7
4.1 航班管理功能实现 7
4.2 查询航班功能实现 27
4.3 订票办理功能实现 45
4.4 退票办理功能实现 65
4.5 连接数据库实现 82
结 论 90
致 谢 91
参考文献 92
II
第1章 绪 论
航空定票系统的总目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的航空定票系统,实现旅行社的机票销售的自动化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息。具体功能为各个旅行社把预定机票的旅客信息(姓名、身份证号码(护照号码)、旅行时间、旅行始发地和目的地)输入到系统中,系统为旅客安排航班。当旅客交付了预订金后,系统打印出订单和订金给旅客,旅客在飞机起飞前凭订单交款取票,系统核对无误即打印出机票给旅客。此外旅行社为随时掌握各个航班飞机的乘载情况,需要定期进行统计,以便适当调整。同时还需完成旅客延误了时间而没登上飞机要求退票的处理。
- 0 -
课程设计报告 第2章 系统功能介绍
第2章 系统功能介绍
2.1系统功能总框图
查询航班
订票办理
退票办理
普
通
查
询
航空订票系统
航班管理
联系我们
综合
查
询
单
程订票
往
返订票
联
程
订票
添加航班
删除航班
看数据库
更新航班
2.2 本人模块功能介绍
2.2.1 航班管理功能介绍
此模块是航班管理模块,主要负责对航班的管理,可以对航班添加、删除航班、对航班更新修改、还可以查看数据库。
输入管理员账号(0302)和密码(0302)登录到航班管理中,管理员可以输入航班的基本信息来插入航班,如:航班号、班期等;管理系统支持三种删除模式,可以按航班号、航线和按星期来删除航班;如果航班有变动,可以按相应的信息来更新修改航班信息;管理员可以输入管理员账号(0302)和密码(0302)进入数据库来查看操作是否成功。
2.2.2 查询航班功能介绍
本模块的主要功能是对航班的具体信息进行查询,使乘客对每趟航班的情况有所了解,以达到让旅客对自己的出行进行更好的安排。
查询分为普通查询与综合查询,普通查询分三种:按航班号查询、按航空公司查询和按到达目的地查询。按航班号查询可以让乘客输入指定的航班号,查询得到该航班号的具体起飞地点、起飞时间等信息;按航空公司查询可得到属于该航空公司的所有航班的信息;按到达目的地查询分两种情况,第一种直接选择抵达的目的地,查询得到的是所有到达该地点的航班信息;第二种在抵达目的地的基础上多了个出发地点,查询得到的是所有从该出发地点起飞,到目的地的航班的信息。综合查询可以按乘客的需求进行单程、往返、联程的综合查询。单程查询即让乘客给出出发地点、到达地点和出发时间,查询得到的是与出发时间最接近的航班的信息;往返查询在单程查询的基础上多加个返程时间,查询得到出发时间与返程时间最近的航班信息,使乘客对自己出发及返程时间有个了解;联程查询即在单程查询的基础上增加第二到达城市与第二到达城市的出发时间,使乘客在去两个不同城市旅行时对第二旅行目的地的乘坐班次有所了解,以免影响乘客的旅行计划。
2.2.3 订票办理功能介绍
此模块为订票办理模块,程序运行时会弹出一个主窗口包含“订票办理”,“退票办理”,“航班查询”,“航班管理”和“联系我们”。
当你想订票时,点击“订票办理”就会弹出“国内机票实时速定”窗口,其中包含“第一出发日期”,“第一航班号”,“机票类型”等菜单,还有两个按钮系统:“机票预订”和“返回主界面”。而且订票时需要填写时间在“第一出发日期”中填写,填写时一定要填写当前日期之后的要不然会提示错误。填写“航班号”时也不能出错。“机票类型”主要包括:“单程”,“往返”和“联票”每一项都有需要填写的不同的项。其中“往返”中多了“返回日期”和“返回航班”,“联票”有“第二出发日期”和“第二航班号”需要填写。
当你填写号确定没问题时就可以点击“机票预订”按钮,当点击后会弹出“客户资料”在此窗口中需要填写“真实姓名”,“身份证号”,“联系电话”等一系列项还可以留下“简短的附言”然后点进“完成并提交”就可以定到你想要的机票了。如果填写错了还可以“重新输入”或返回“实时订票”系统重新预订!
2.2.4 退票办理功能介绍
此模块为退票办理模块(主界面中单机航空订票系统的“退票办理”),程序运行时会弹出航班退票系统窗口,此时需要客户输入正确的相应的订单号与身份证号码,当你填写号码确定没问题时就可以单击“查询”,即可查出此订单的基本信息栏与退票栏。基本信息其中包含“客户姓名”,“航班信息”,“儿童票数”,“成人票数”,“原票价”,“退票价”“出发时间”。当您检查无误后,即可在退票栏中输入想要退的儿童票数与成人票数的数量,当确定无误后,点击“退票”就会弹出“退票成功”窗口,窗体中提示您已退票成功,还剩下多少张票和获得多少元的退票钱。
2.2.5 连接数据库介绍
此模块为连接数据库模块,对以上的操作对数据库中的存储各信息的表进行操作具体的实施,如查询功能中可按航班号查询、按航空公司查询和按到达目的地查询对数据库中航班查询。查询得到该航班号的具体起飞地点、起飞时间等信息,及所有航班的信息,地点的航班信息,到目的地的航班的等多个信息。连接数据库进行表查询。
订票时,可通过订票办理、国内机票实时速定、机票类型等多种信息,向数据库表中添加订票信息。
退票办理模块,首先查找用户数据库中表信息,然后为用户退还机票及退票钱删除表中用户信息。
航班管理中,管理员可通过各种信息来插入、删除、更改航班信息,进入数据库来查看操作是否成功。
2.3 组内任务分工
姓名
主要工作
组长
总体构思、航班管理模块、报告撰写
组员
订票办理模块、报告撰写
航班查询模块、报告撰写
连接数据库模块、报告撰写
界面设计、退票办理模块、报告撰写
- 3 -
课程设计报告 第3章 数据库设计
第3章 数据库设计
数据库的设计就是数据库及其应用系统的设计,换句话说就是设计整个的数据库应用系统。从狭义的角度来讲,就是设计数据本身,也就是设计数据库的各级模式并建立数据库,这是数据库应用系统设计的一部分。设计一个好的数据库与设计一个好的数据库应用系统是密不可分的。一个好的数据库结构是应用系统的基础。特别在实际的系统开发项目中两者更是密切相关、并行进行的。
数据库设计的目标是为用户和各种应用系统提供一个信息基础设施和高效率的运行环境。高效率的运行环境包括:数据库数据的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。
3.1 数据库需求分析
通过到旅行社进行实地考察,我们小组了解了航空订票系统的具体功能。由于航空订票系统是各个旅行社必不可少的工具,所以我们小组认为开发本系统是有一定价值的。通过考察后,我们小组对航空订票系统进行分析并做出了如下的功能:查询航班功能、订票办理功能、退票办理功能、航班管理功能。其中航班管理中主要实现添加航班、删除航班、更新航班和查看数据库功能。
3.2 数据库概念结构设计
leaveTime
start
airfirm
arriveTime arriveTime
flight
flight
childFare
adultFare
remark
discount1
week
discount2
seat
destination
3.3 数据库表的设计
数据库设计其实就是表的设计,该系统中主要涉及到了一个表,其主要结构及内容如下:
表31 flight信息表
字段名称
数据类型
长 度
备 注
flight
文 本
10
航班号
airfirm
文 本
20
航空公司
start
文 本
10
起始城市
destination
文 本
10
降落城市
leaveTime
文 本
10
离开时间
arriveTime
文 本
10
到达时间
childFare
数 字
单精度型
儿童票价
adultFare
数 字
单精度型
成人票价
discount1
数 字
单精度型
提前折扣
discount2
数 字
单精度型
退票率
seat
数 字
整型
坐位
week
文 本
10
星期
remark
数 字
整型
插入号
- 5 -
课程设计报告 第4章 系统功能实现
第4章 系统功能实现
4.1 航班管理功能实现
先输入管理员账号(0302)和密码(0302)进入到航班管理中,登陆如图4.1.1和如图4.1.2所示。
图4.1.1 账号验证界面 图4.1.2 密码验证界面
管理员可以输入航班的基本信息来插入航班,如:航班号、班期等。插入班期时形式如1357;插入界面如图4.1.3所示。
图4.1.3 插入界面
航班删除支持三种删除模式,可以按航班号、航线和按星期来删除航班,在删除航班时,首先得选择一种模式,才可以进行删除,在删除时,得从下拉列表中选择要删除的航班,才可以删除;删除界面如图4.1.4所示
图4.1.4 插入界面
在更新航班时,可以选中要更新项前面的方框,即可激活更新区域,输入新值,点击确定即可更新航班信息;更新界面如图4.1.5所示
图4.1.5 更新界面
管理员可以输入管理员账号(0302)和密码(0302)进入数据库来查看操作是否成功。查看数据库界面如图4.1.6所示。
图4.1.6 查看数据库界面
程序代码如下:
//插入功能
public InsertPanel()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception ex)
{
}
week=new JComboBox();
for(int i=0;i<s.length;i++)
week.addItem(s[i]);
hour1=new JComboBox();
hour2=new JComboBox();
min1=new JComboBox();
min2=new JComboBox();
for(int i=1;i<=24;i++)
{
if(i<10)
{
hour1.addItem(""+0+i);
hour2.addItem(""+0+i);
}
else
{
hour1.addItem(""+i);
hour2.addItem(""+i);
}
}
for(int i=0;i<=59;i++)
{
if(i<10)
{
min1.addItem(""+0+i);
min2.addItem(""+0+i);
}
else
{
min1.addItem(""+i);
min2.addItem(""+i);
}
}
JPanel p3=new JPanel();
p3.add(hour1);
p3.add(new JLabel("时"));
p3.add(min1);
p3.add(new JLabel("分"));
JPanel p4=new JPanel();
p4.add(hour2);
p4.add(new JLabel("时"));
p4.add(min2);
p4.add(new JLabel("分"));
JPanel p1=new JPanel();
p1.setBorder(new TitledBorder("基本信息"));
p1.setLayout(new GridLayout(6,4,5,5));
p1.add(label[0]=new JLabel("航班号"));
p1.add(jtf[0]=new JTextField(10));
p1.add(label[1]=new JLabel("班期"));
p1.add(jtf[1]=new JTextField(10));
p1.add(label[0]=new JLabel("公司"));
p1.add(jtf[2]=new JTextField(10));
p1.add(label[0]=new JLabel("座位"));
p1.add(jtf[3]=new JTextField(10));
p1.add(label[0]=new JLabel("起飞地"));
p1.add(jtf[4]=new JTextField(10));
p1.add(label[0]=new JLabel("抵达地"));
p1.add(jtf[5]=new JTextField(10));
p1.add(label[0]=new JLabel("起飞时间"));
p1.add(p3);
// p1.add(jtf[6]=new JTextField(10));
p1.add(label[0]=new JLabel("抵达时间"));
p1.add(p4);
// p1.add(jtf[7]=new JTextField(10));
p1.add(label[0]=new JLabel("儿童票价"));
p1.add(jtf[8]=new JTextField(10));
p1.add(label[0]=new JLabel("成人票价"));
p1.add(jtf[9]=new JTextField(10));
p1.add(label[0]=new JLabel("提前折扣"));
p1.add(jtf[10]=new JTextField(10));
p1.add(label[0]=new JLabel("退票率"));
p1.add(jtf[11]=new JTextField(10));
JPanel p2=new JPanel();
p2.setBorder(new TitledBorder("操作"));
p2.add(button[0]=new JButton("插入"));
// p2.add(button[1]=new JButton("删除"));
// p2.add(button[2]=new JButton("更新"));
this.setLayout(new BorderLayout());
this.add(p1,BorderLayout.CENTER);
this.add(p2,BorderLayout.SOUTH);
button[0].addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
con = DriverManager.getConnection("jdbc:odbc:dsStudent","sa","");
stmt = con.createStatement();
if(jtf[0].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"关键字不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[2].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"公司为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[3].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"作为书惟恐","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[4].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"城市为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[5].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"城市为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[8].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"信息不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[9].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"信息不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[10].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"信息不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
if(jtf[11].getText().length()==0)
{
JOptionPane.showMessageDialog(null,"信息不能为空","错误",JOptionPane.ERROR_MESSAGE);
return;
}
else
{
int maxremark=1;
System.out.print("hello2");
rs=stmt.executeQuery("select remark from flight");System.out.print("hello1");
int remark=0;
while(rs.next())
{
System.out.print(maxremark);
remark=rs.getInt(1);
if(remark>maxremark) maxremark=remark;
}
System.out.print(maxremark);
String time1=(String)hour1.getSelectedItem()+(String)min1.getSelectedItem();
String time2=(String)hour2.getSelectedItem()+(String)min2.getSelectedItem();
maxremark=maxremark+1;
String sql="insert into flight values('"+jtf[0].getText()+"','"+jtf[2].getText()+"','"+
jtf[4].getText()+"','"+jtf[5].getText()+"','"+time1+"','"+
time2+"',"+Float.parseFloat(jtf[8].getText().trim())+","+Float.parseFloat(jtf[9].getText().trim())+","
+Float.parseFloat(jtf[10].getText().trim())+","+Float.parseFloat(jtf[11].getText().trim())+","+Integer.parseInt(jtf[3].getText().trim())
+",'"+jtf[1].getText()+"',"+maxremark+")";
stmt.executeUpdate(sql);
System.out.print("he");
stmt.close();
con.close();
}}
catch(Exception ex)
{
ex.printStackTrace();
}
}
});
}
//删除功能
public DeletePanel()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(Exception ex)
{
}
radio1=new JRadioButton("按航班号进行");
radio2=new JRadioButton("按星期进行 ");
radio3=new JRadioButton("按起止城市 ");
group.add(radio1);
group.add(radio2);
group.add(radio3);
JPanel p9=new JPanel(new FlowLayout(FlowLayout.LEFT));
p9.add(flight1);
JPanel jp1= new JPanel(new BorderLayout());
jp1.add(new JLabel(" "),BorderLayout.WEST);
jp1.add(radio1,BorderLayout.CENTER);
jp1.add(new JLabel(" "),BorderLayout.EAST);
JPanel p1=new JPanel();
p1.setBorder(new TitledBorder("航班号"));
p1.setLayout(new BorderLayout());
p1.add(jp1,BorderLayout.WEST);
p1.add(p9,BorderLayout.CENTER);
JPanel p6=new JPanel(new FlowLayout(FlowLayout.LEFT));
p6.add(flight2);
p6.add(new JLabel(" "));
p6.add(week);
JPanel jp2 = new JPanel(new BorderLayout());
jp2.add(new JLabel(" "),BorderLayout.WEST);
jp2.add(radio2,BorderLayout.CENTER);
jp2.add(new JLabel(" "),BorderLayout.EAST);
JPanel p2=new JPanel();
p2.setBorder(new TitledBorder("星期"));
p2.setLayout(new BorderLayout());
p2.add(jp2,BorderLayout.WEST);
p2.add(p6,BorderLayout.CENTER);
JPanel p11=new JPanel(new FlowLayout(FlowLayout.LEFT));
p11.add(start);
p11.add(new JLabel(" "));
p11.add(city1);
JPanel p12=new JPanel(new FlowLayout(FlowLayout.LEFT));
p12.add(end);
p12.add(new JLabel(" "));
p12.add(city2);
JPanel p3=new JPanel();
p3.setLayout(new GridLayout(2,1));
p3.add(p11);
p3.add(p12);
JPanel jp3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
jp3.add(new JLabel(" "),BorderLayout.WEST);
jp3.add(radio3,BorderLayout.CENTER);
jp3.add(new JLabel(" "),BorderLayout.EAST);
JPanel p4=new JPanel();
p4.setBorder(new TitledBorder("航线"));
p4.setLayout(new BorderLayout());
p4.add(jp3,BorderLayout.WEST);
p4.add(p3,BorderLayout.CENTER);
JPanel p5=new JPanel();
p5.setLayout(new BorderLayout());
p5.add(p1,BorderLayout.NORTH);
p5.add(p4,BorderLayout.CENTER);
p5.add(p2,BorderLayout.SOUTH);
JPanel p7=new JPanel();
p7.setBorder(new TitledBorder("操作"));
p7.add(ok);
this.setLayout(new BorderLayout());
this.add(label,BorderLayout.NORTH);
this.add(p5,BorderLayout.CENTER);
this.add(p7,BorderLayout.SOUTH);
flight2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
con = DriverManager.getConnection("jdbc:odbc:dsStudent","sa","");
stmt = con.createStatement();
String flight=(String)flight2.getSelectedItem();
rs=stmt.executeQuery("select week from flight where flight='"+flight+"'")
展开阅读全文