民航订票系统一、设计目的与内容1.设计目的熟练掌握数据的存储表示和基本操作的实现,能够利用存储设计算法解决简单的航空订票问题。
2.设计内容:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;•订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;输出:可以按照航班号为顺序输出订票信息。
二、算法的基本思想算法的主要思路是:1.首先对界面的设计,可以对操作的人员来说简单上手。
对系统的应用都能进行相应的操作。
(1)设置管理员的功能。
(2)设置客户的功能(3)管理员的主要操作界面(4)客户的主要操作界面(5)结束2.类dingpiao用来显示客户订票的事件;基本思路如下:(1)客户提交自己的详细信息。
(2)管理员处理相应的内容并给票给客户。
(3)订票结束3.类tuipiao将处客户的退票的信息,释放存储空间,基本思路如下:(1)客户提交自己的详细信息。
(2)管理员把客户的票取出,(3)结束三、E-R图系统流程图该系统的数据流程图如图3-3:客户端启登陆No有效数据?yes四、测试数据程序运行实例如下: 1 主界面的进入:将response 对象写往客户解析request 对象将结果显示在客出票航班查询 修改密码输入查询条件验证有效?Noyes已查航班? No输入乘客信息验证有效?Noyes输入新密码验证有 效Noyes封装requset 对象将request 对象写向服务分拣请求调用调用调用调用出票请求 查询航班请求 修改密码请求 登陆请求 封装response 对象2 管理员的相应功能3 用户的相应功能4管理员录入订票信息5客户注册模块6 客户添加信息模块10 客户订票界面11 客户退票界面五、源程序及系统文件使用说明1用java写的飞机订票系统的主界面可以直观的观察操作的界面,所应用的代码如下所示:package FlightManagementSystem;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Welcome extends JFrame implements ActionListener{/****/private static final long serialVersionUID = 1L;public static final String Flight = null;//声明JButton组件对象JButton jbutton1,jbutton2,jbutton3,jbutton4;public Welcome(){super("欢迎进入民航订票系统!");//设置内容面板的布局模式为:流动布局getContentPane().setLayout(new FlowLayout());jbutton1=new JButton("管理系统");jbutton2=new JButton("客户系统");jbutton4=new JButton(" 退出系统 ");getContentPane().add(jbutton1);getContentPane().add(jbutton2);getContentPane().add(jbutton4);this.setBounds(300,200,240,120);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);//注册监听器jbutton1.addActionListener(this);jbutton2.addActionListener(this);jbutton4.addActionListener(this);}public void actionPerformed(ActionEvent e){if(e.getSource()==jbutton1){@SuppressWarnings("unused")LoginOfManager s=new LoginOfManager();this.dispose();}if(e.getSource()==jbutton2){try {new Login();} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}this.dispose();}if(e.getSource()==jbutton4){System.exit(0);}}public void airportInformation(){System.out.println("谢谢光临!");}public static void main(String[] args){@SuppressWarnings("unused")Welcome welcome=new Welcome();}}2 管理员的操作界面也是简单易懂,利于上手。
实现的代码如下所示:package FlightManagementSystem;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import javax.swing.*;public class ManagementFrame extends JFrame implements ActionListener{ //声明JButton组件对象JButton jbutton1,jbutton2,jbutton3,jbutton4,jbutton5;public ManagementFrame(){super("欢迎进入管理系统!");//设置内容面板的布局模式为:流动布局getContentPane().setLayout(new FlowLayout());jbutton1=new JButton("录入航班信息");jbutton2=new JButton("查看航班信息");jbutton3=new JButton("修改航班信息");jbutton4=new JButton("查看客户信息");jbutton5=new JButton(" 返回 ");getContentPane().add(jbutton1);getContentPane().add(jbutton2);getContentPane().add(jbutton3);getContentPane().add(jbutton4);getContentPane().add(jbutton5);this.setBounds(300,200,360,130);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//注册监听器jbutton1.addActionListener(this);jbutton2.addActionListener(this);jbutton3.addActionListener(this);jbutton4.addActionListener(this);jbutton5.addActionListener(this);}public void actionPerformed(ActionEvent e){if(e.getSource()==jbutton1){new InsertInfomation();this.dispose();}if(e.getSource()==jbutton2){new Queryflight();this.dispose();}if(e.getSource()==jbutton3){new ReviseInformation();this.dispose();}if(e.getSource()==jbutton4){new Queryclient();this.dispose();}if(e.getSource()==jbutton5){new Welcome();this.dispose();}}public static void main(String[] args){new ManagementFrame();}}3 客户进入后的操作界面,可是实现用户的各种操作,例如订票,退票,查询信息等。
package FlightManagementSystem;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;public class Book extends JFrame implements ActionListener{/****/int dingdannum=10000000; //设置初始订单号;private static final long serialVersionUID = 1L;JLabel l4 = new JLabel("订票数量:");JLabel l2 = new JLabel(" 航班号 : ");JLabel l3 = new JLabel("请输入您要订票的航班号和机票数量!一次不能超过5张票!");JLabel l1 = new JLabel(" 姓名 : ");JTextField t1 = new JTextField("", 12);JTextField t2 = new JTextField("", 12);JTextField t3 = new JTextField("", 12);JButton b1 = new JButton("确认订票");JButton b2 = new JButton(" 返回 ");JPanel p1 = new JPanel();JPanel p2 = new JPanel();JPanel p3 = new JPanel();JPanel p4 = new JPanel();JPanel p5 = new JPanel();String flight;Connection con;Statement stmt=null;ResultSet rs;String url = "jdbc:odbc:ylb";Book()throws Exception{super("欢迎进入订票界面!");p1.add(l3);p2.add(l1); p2.add(t1);p3.add(l2); p3.add(t2);p4.add(l4); p4.add(t3);p5.add(b1); p5.add(b2);b1.addActionListener(this);b2.addActionListener(this);setLayout(new GridLayout(5,1));this.add(p1);this.add(p2);this.add(p3);this.add(p4);this.add(p5);setBounds(300, 200, 320, 240);setResizable(false);setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@SuppressWarnings("null")public void actionPerformed(ActionEvent e) {if(e.getSource() == b2){new Enterance();this.dispose();}if(e.getSource() == b1){//获取用户输入的信息String jt1=t1.getText();String jt2=t2.getText();String jt3=t3.getText();int tt=Integer.parseInt(jt3);if(tt>5){l3.setText("请减少购票数量!");}else{if(jt1.equals("")|| jt2.equals("")||jt3.equals("")){ l3.setText("所填信息不能为空!");}else{try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con = DriverManager.getConnection(url, "", "");stmt = con.createStatement();int count=stmt.executeUpdate("insert into book values('"+jt1+"','"+jt2+"',"+tt+")");rs = stmt.executeQuery("select * from flight where 航班号='"+jt2+"'");if(rs.next()){System.out.println("查询航班信息成功!");//获取该航班信息String fl1=null;String fl2=null;String fl3=null;fl1=rs.getString(2); //起飞时间fl2=rs.getString(3); //起飞地点fl3=rs.getString(4);String fl5=null;fl5=rs.getString(5); //票价int fl6=rs.getInt(6); //最大人数int fl4=rs.getInt(7); //当前人数int shengyu=fl6-fl4; //计算该航班剩余票数if(shengyu<0){l3.setText("该航班已剩"+shengyu+"张票!");}else{for(int i=0;i<tt;i++){fl4=fl4+1;dingdannum=dingdannum+1;dingdannum=dingdannum+fl4+fl6*i;String sql="insert into ORDER1 values ("+dingdannum+",'"+jt1+"','"+jt2+"',"+fl4+",'"+fl5+"','"+fl1+"','"+fl2+"','"+fl3+"')";stmt.executeUpdate(sql);}if(shengyu>0)stmt.executeUpdate("update flight set 目前人数="+fl4+"where 航班号='"+jt2+"'");if(shengyu==0)stmt.executeUpdate("update flight set 目前人数="+fl4+"是否满仓='是'"+"where 航班号='"+jt2+"'");}} }catch(Exception e2){e2.printStackTrace();}} }}}/* public void treat(int i,String a,String b){String hangbanhao=a; //获得航班号System.out.println("航班号为:"+hangbanhao);String name=b;int zuoweihao=0; //座位号int ticketnum=i; //获得订票数int max=0; //航班最大人数System.out.println("订票数为:"+ticketnum);try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection cc=DriverManager.getConnection(url, "", "");if(cc!=null){System.out.println("查询连接成功!");}Statement sta=cc.createStatement();//查询预定航班的人数,以便获得座位号ResultSet res=sta.executeQuery("select * from flight where " +"航班号='"+hangbanhao+"'");while(res.next()){System.out.println("rs存在!");String shijian=res.getString(2);System.out.println("时间="+shijian);String qifeididian=res.getString(3);System.out.println("起飞地点="+qifeididian);String daodadidian=res.getString(4);System.out.println("到达地点="+daodadidian);int piaojia =res.getInt(5);System.out.println("票价="+piaojia);max=res.getInt(6);System.out.println("最大人数="+max);zuoweihao=res.getInt(7);System.out.println("座位号="+zuoweihao);try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectionccc=DriverManager.getConnection(url, "", "");Statement stat=ccc.createStatement();for(int j=0;j<ticketnum;j++){String sqll="insert into ORDER1 values('"+name+"','"+hangbanhao+"',"+(zuoweihao+1)+","+piaojia+",'"+shijian+"','"+qifeididian+"','"+daodadidian+"'";}while(max!=0){ if(max!=zuoweihao)stat.executeUpdate("update flight set 目前人数="+zuoweihao+"where 航班号='"+hangbanhao+"'");else{{stat.executeUpdate("update flight set 目前人数="+zuoweihao+",是否满仓='是'"+"where 航班号='"+hangbanhao+"'");}}}zuoweihao=zuoweihao+i;if((zuoweihao+i)>max){this.dispose();new Book();l3.setText("该航班:"+hangbanhao+"票数已超出!");} }catch(Exception e){}//更新座位号System.out.println("更改后的人数="+zuoweihao);}}catch(Exception e){}}*/public static void main(String[] args) throws Exception {new Book();}}4 录入修改航班的代码,对订票信息的确定,并且对相应的信息进行修改。