为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

航空订票系统

2017-10-07 50页 doc 198KB 14阅读

用户头像

is_589748

暂无简介

举报
航空订票系统航空订票系统 public InsertPanel() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(Exception ex) { } week=new JComboBox(); for(int i=0;i
航空订票系统
航空订票系统 public InsertPanel() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(Exception ex) { } week=new JComboBox(); for(int i=0;imaxremark) 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) - 5 - { 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); - 6 - 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); - 7 - 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+"'"); while(rs.next()) { w=rs.getString(1).trim(); } for(int i=0;i<=w.length();i++) { char c=w.charAt(i); String s=""+c; week.addItem(s); } - 8 - } catch(Exception ex) { } } }); ok.addActionListener(this); } public static void updateCityComboBox(String newCity,int flag) { if(flag==1) { if (modelCity.getIndexOf(newCity) == -1) { modelCity.addElement(newCity); city1.addItem(newCity); city2.addItem(newCity); } } if(flag==2) { if (modelCity.getIndexOf(newCity) != -1) { modelCity.removeElement(newCity); city1.removeItem(newCity); city1.removeItem(newCity); } } } public static void updateFlightComboBox(String newFlight,int flag) { if(flag==1) - 9 - { if (modelFlight.getIndexOf(newFlight) == -1) { modelFlight.addElement(newFlight); flight1.addItem(newFlight); flight2.addItem(newFlight); } } if(flag==2) { if (modelFlight.getIndexOf(newFlight) != -1) { modelFlight.removeElement(newFlight); flight1.removeItem(newFlight); flight2.removeItem(newFlight); } } } //继承ActionListener接口 public void actionPerformed(ActionEvent e) { try { con = DriverManager.getConnection("jdbc:odbc:dsStudent","sa",""); stmt = con.createStatement(); if(e.getSource() instanceof JButton) { if(radio1.isSelected()) { String flight=(String)flight1.getSelectedItem(); String sql="delete from flight where flight='"+flight+"'"; stmt.executeUpdate(sql); } else if(radio3.isSelected()) { - 10 - String start=(String)city1.getSelectedItem(); String destination=(String)city2.getSelectedItem(); String sql="delete from flight where start='"+start+"' and destination='"+destination+"'"; stmt.executeUpdate(sql); } else if(radio2.isSelected()) { String flight=(String)flight2.getSelectedItem(); rs=stmt.executeQuery("select week from flight where flight='"+flight+"'"); while(rs.next()) { w=rs.getString(1).trim(); } for(int i=0;i<=w.length();i++) { char c=w.charAt(i); String s=""+c; if(week.getSelectedItem().equals(s)) { k=i;break; } } String week=w.substring(0,k)+w.substring(k+1,w.length()); System.out.println(week.length()); if(week.length()==0) stmt.executeUpdate("delete from flight where flight='"+flight+"'"); else stmt.executeUpdate("update flight set week='"+week+"' where flight='"+flight+"'"); } else JOptionPane.showMessageDialog(this,"你没有选择三种情况之一","选择 ",JOptionPane.ERROR_MESSAGE); } } catch(Exception ex) { } } - 11 - public UpdatePanel() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(Exception ex) { } JPanel p1=new JPanel(); p1.setBorder(new TitledBorder("基本信息")); p1.setLayout(new GridLayout(6,4,5,5)); p1.add(radio[0]=new JCheckBox("航班号 ")); p1.add(jtf[0]=new JTextField(10)); p1.add(radio[1]=new JCheckBox("星期 ")); p1.add(jtf[1]=new JTextField(10)); p1.add(radio[2]=new JCheckBox("公司 ")); p1.add(jtf[2]=new JTextField(10)); p1.add(radio[3]=new JCheckBox("座位 ")); p1.add(jtf[3]=new JTextField(10)); p1.add(radio[4]=new JCheckBox("起飞地 ")); p1.add(jtf[4]=new JTextField(10)); p1.add(radio[5]=new JCheckBox("抵达地 ")); p1.add(jtf[5]=new JTextField(10)); p1.add(radio[6]=new JCheckBox("起飞时间 ")); p1.add(jtf[6]=new JTextField(10)); p1.add(radio[7]=new JCheckBox("抵达时间 ")); p1.add(jtf[7]=new JTextField(10)); p1.add(radio[8]=new JCheckBox("儿童票价 ")); p1.add(jtf[8]=new JTextField(10)); p1.add(radio[9]=new JCheckBox("成人票价 ")); p1.add(jtf[9]=new JTextField(10)); p1.add(radio[10]=new JCheckBox("提前折扣")); p1.add(jtf[10]=new JTextField(10)); p1.add(radio[11]=new JCheckBox("退票率")); p1.add(jtf[11]=new JTextField(10)); JPanel p2=new JPanel(); p2.setBorder(new TitledBorder("操作")); - 12 - p2.add(button); this.setLayout(new BorderLayout()); this.add(p1,BorderLayout.CENTER); this.add(p2,BorderLayout.SOUTH); for(int i=0;i<=11;i++) jtf[i].setEditable(false); for(int i=0;i<=11;i++) radio[i].addItemListener(this); button.addActionListener(this); } public void itemStateChanged(ItemEvent e) { if(e.getSource() instanceof JCheckBox) { if(radio[1].isSelected()&&flag==1) {JOptionPane.showMessageDialog(null,"输入格式如135","暗示 ",JOptionPane.WARNING_MESSAGE);flag=0;} for(int i=0;i<=11;i++) if(radio[i].isSelected()) jtf[i].setEditable(true); for(int i=0;i<=11;i++) if(!radio[i].isSelected()) jtf[i].setEditable(false); } } public void actionPerformed(ActionEvent e) { try { String sql=""; con = DriverManager.getConnection("jdbc:odbc:dsStudent","sa",""); stmt = con.createStatement(); if(e.getSource() instanceof JButton) { - 13 - if(!radio[0].isSelected()||(radio[0].isSelected()&&jtf[0].getText().length()==0)) JOptionPane.showMessageDialog(null,"关键字不能为空","错误",JOptionPane.ERROR_MESSAGE); else { for(int i=2;i<=11;i++) if(radio[i].isSelected()&&jtf[i].getText().length()==0) { tag=true;break; } if(tag) { JOptionPane.showMessageDialog(null,"信息不能为空","错误",JOptionPane.ERROR_MESSAGE); tag = false; } else { String sqlString = "select flight from flight where flight='" + jtf[0].getText().trim() + "'"; ResultSet rs = stmt.executeQuery(sqlString); int flag1 = 0; while(rs.next()) { flag1 = 1; } if (flag1 == 0) { JOptionPane.showMessageDialog(null,"对不起!航班号不存在!", "错误信息",JOptionPane.ERROR_MESSAGE); return; } System.out.println(flag1); - 14 - if(radio[2].isSelected()) { sql="update flight set airFirm='"+jtf[2].getText()+"' where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[3].isSelected()) { sql="update flight set seat="+Integer.parseInt(jtf[3].getText().trim())+" where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[4].isSelected()) { sql="update flight set start='"+jtf[4].getText()+"' where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[5].isSelected()) { sql="update flight set destination='"+jtf[5].getText()+"' where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[6].isSelected()) { sql="update flight set leaveTime='"+jtf[6].getText()+"' where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[7].isSelected()) { sql="update flight set arriveTime='"+jtf[7].getText()+"' where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[8].isSelected()) { sql="update flight set childFare="+Float.parseFloat(jtf[8].getText().trim())+" where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); - 15 - } if(radio[9].isSelected()) { sql="update flight set adultFare="+Float.parseFloat(jtf[9].getText().trim())+" where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[10].isSelected()) { sql="update flight set discount1="+Float.parseFloat(jtf[10].getText().trim())+" where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } if(radio[11].isSelected()) { sql="update flight set discount2="+Float.parseFloat(jtf[11].getText().trim())+" where flight='"+jtf[0].getText()+"'"; stmt.executeUpdate(sql); } JOptionPane.showMessageDialog(null,"航班信息已经更新成功!", "成功信息",JOptionPane.INFORMATION_MESSAGE); } } } } catch(Exception ex) { } } public Show() { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } - 16 - catch(Exception ex) { } pan=new JScrollPane(area); JPanel p1=new JPanel(); p1.setBorder(new TitledBorder("输入有效认证")); p1.add(label1); p1.add(jtf); p1.add(label2); p1.add(password); JPanel p2=new JPanel(); p2.setBorder(new TitledBorder("操作")); p2.add(button); this.setLayout(new BorderLayout()); this.add(p1,BorderLayout.NORTH); this.add(pan,BorderLayout.CENTER); this.add(p2,BorderLayout.SOUTH); button.addActionListener(this); } public void actionPerformed(ActionEvent e) { try { area.setText(""); if(!(jtf.getText().equals("0302")&&password.getText().equals("0302"))) JOptionPane.showMessageDialog(null,"账好或密码不对","错误 ",JOptionPane.ERROR_MESSAGE); else {con = DriverManager.getConnection("jdbc:odbc:dsStudent","sa",""); stmt = con.createStatement(); rs=stmt.executeQuery("select * from flight"); while(rs.next()) { area.append(rs.getString(1)); area.append(rs.getString(2)); area.append(rs.getString(3)); - 17 - area.append(rs.getString(4)); area.append(rs.getString(5)); area.append(rs.getString(6)); area.append(""+rs.getFloat(7)+" "); area.append(""+rs.getFloat(8)+" "); area.append(""+rs.getFloat(9)+" "); area.append(""+rs.getFloat(10)+" "); area.append(""+rs.getInt(11)+" "); area.append(rs.getString(12)); area.append(rs.getString(13)+"\n"); }}} catch(Exception ex) { } } 查询航班功能实现 public static void updateAirFirmComboBox(String newAirFirm,int insertOrDelete) { if (insertOrDelete == 1) { if (modelAirFirm.getIndexOf(newAirFirm) == -1) jcbAirFirm.addItem(newAirFirm); } else if (insertOrDelete == 2) { if (modelAirFirm.getIndexOf(newAirFirm) != -1) jcbAirFirm.removeItem(newAirFirm); } } public void setDisplayPresentTime() { Calendar cal = Calendar.getInstance(); //获得年月日 String year = String.valueOf(cal.get(Calendar.YEAR)); String month = String.valueOf(cal.get(Calendar.MONTH) + 1); - 18 - String day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH)); //显示时间 jcbYear1.setSelectedItem(year); jcbYear2.setSelectedItem(year); jcbMonth1.setSelectedItem(month); jcbMonth2.setSelectedItem(month); //更新年月 updateDay(year,month,jcbDay1); updateDay(year,month,jcbDay2); jcbDay1.setSelectedItem(day); jcbDay2.setSelectedItem(day); } private void updateDay(String year,String month,JComboBox jcb) { if (month.equals("4") || month.equals("6") || month.equals("9") || month.equals("11")) { //jcb.getItemCount() == 31 means that there are 31 days in the day combobox, //but exactly it is 30 days,so we should remove the 31st day from the day combobox if (jcb.getItemCount() == 31) jcb.removeItem("31"); else if(jcb.getItemCount() == 29) jcb.addItem("30"); else if (jcb.getItemCount() == 28) { jcb.addItem("29"); jcb.addItem("30"); } } else if (month.equals("2")) { int years = Integer.parseInt(year); //闰年 if ( (years % 400 == 0) || (years %4 == 0 && years % 100 != 0)) { if (jcb.getItemCount() == 31) { jcb.removeItem("30"); jcb.removeItem("31"); } else if (jcb.getItemCount() == 30) { jcb.removeItem("30"); } - 19 - else if (jcb.getItemCount() == 28) { jcb.addItem("29"); } } else { if (jcb.getItemCount() == 29) { jcb.removeItem("29"); } else if (jcb.getItemCount() == 30) { jcb.removeItem("29"); jcb.removeItem("30"); } else if (jcb.getItemCount() == 31) { jcb.removeItem("29"); jcb.removeItem("30"); jcb.removeItem("31"); } } } else { if (jcb.getItemCount() == 28) { jcb.addItem("29"); jcb.addItem("30"); jcb.addItem("31"); } else if (jcb.getItemCount() == 29) { jcb.addItem("30"); jcb.addItem("31"); } else if (jcb.getItemCount() == 30) { jcb.addItem("31"); - 20 - } } } public void itemStateChanged(ItemEvent e) { if (e.getSource() == jcbYear1 || e.getSource() == jcbMonth1) { String year = (String)jcbYear1.getSelectedItem(); String month = (String)jcbMonth1.getSelectedItem(); updateDay(year,month,jcbDay1); } if (e.getSource() == jcbYear2 || e.getSource() == jcbMonth2) { String year = (String)jcbYear2.getSelectedItem(); String month = (String)jcbMonth2.getSelectedItem(); updateDay(year,month,jcbDay2); } } class RadioListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (jrbSingle.isSelected()) { jlFirstArrive.setText(" "); jpFirstArriveBox.removeAll(); jpFirstArriveBox.add(jpReplaceArrive); jpFirstArriveBox.repaint(); jlArrive.setText(" 到达城市:"); jlTime1.setText(" 出发日期:"); jlTime2.setText(" "); jpTime2Box.removeAll(); jpTime2Box.add(jpReplaceTime); jpTime2Box.repaint(); } else if(jrbDouble.isSelected()) { jlFirstArrive.setText(" "); jpFirstArriveBox.removeAll(); jpFirstArriveBox.add(jpReplaceArrive); - 21 - jpFirstArriveBox.repaint(); jlArrive.setText(" 到达城市:"); jlTime1.setText(" 出发日期:"); jlTime2.setText(" 返程日期:"); jpTime2Box.removeAll(); jpTime2Box.add(jpTime2); jpTime2Box.repaint(); } else if (jrbMutiple.isSelected()) { jlFirstArrive.setText("第一到达城市:"); jpFirstArriveBox.removeAll(); jpFirstArriveBox.add(jpArrive1); jpFirstArriveBox.repaint(); jlArrive.setText("第二到达城市:"); jlTime1.setText("第一出发日期:"); jlTime2.setText("第二出发日期:"); jpTime2Box.removeAll(); jpTime2Box.add(jpTime2); jpTime2Box.repaint(); } } } public void actionPerformed(ActionEvent e) { if (jrbSingle.isSelected()) { start = (String)jcbStart.getSelectedItem(); start = start.trim(); arrive = (String)jcbArrive.getSelectedItem(); arrive = arrive.trim(); leaveYear = (String)jcbYear1.getSelectedItem(); leaveMonth = (String)jcbMonth1.getSelectedItem(); leaveDay = (String)jcbDay1.getSelectedItem(); if (!isTimeValid(leaveYear,leaveMonth,leaveDay)) { JOptionPane.showMessageDialog(null,"已经过了出发时间,请重新设定并查询", "错误信息",JOptionPane.ERROR_MESSAGE); return; } - 22 - leaveWeek = timeToWeek(leaveYear,leaveMonth,leaveDay); airFirm = (String)jcbAirFirm.getSelectedItem(); airFirm = airFirm.trim(); executeSingleQuery(); } else if(jrbDouble.isSelected()) { start = (String)jcbStart.getSelectedItem(); start = start.trim(); arrive = (String)jcbArrive.getSelectedItem(); arrive = arrive.trim(); leaveYear = (String)jcbYear1.getSelectedItem(); leaveMonth = (String)jcbMonth1.getSelectedItem(); leaveDay = (String)jcbDay1.getSelectedItem(); backYear = (String)jcbYear2.getSelectedItem(); backMonth = (String)jcbMonth2.getSelectedItem(); backDay = (String)jcbDay2.getSelectedItem(); if (!isTimeValid(leaveYear,leaveMonth,leaveDay)) { JOptionPane.showMessageDialog(null,"已经过了出发时间,请重新设定并查询", "错误信息",JOptionPane.ERROR_MESSAGE); return; } if (!isTimeValid(leaveYear,leaveMonth,leaveDay,backYear,backMonth,backDay)) { JOptionPane.showMessageDialog(null,"返程日期不能比出发日期早,请重新设定并查询", "错误信息",JOptionPane.ERROR_MESSAGE); return; } leaveWeek = timeToWeek(leaveYear,leaveMonth,leaveDay); backWeek = timeToWeek(backYear,backMonth,backDay); airFirm = (String)jcbAirFirm.getSelectedItem(); airFirm = airFirm.trim(); executeDoubleQuery(); } else if (jrbMutiple.isSelected()) { start = (String)jcbStart.getSelectedItem(); start = start.trim(); - 23 - firstArrive = (String)jcbFirstArrive.getSelectedItem(); firstArrive = firstArrive.trim(); arrive = (String)jcbArrive.getSelectedItem(); arrive = arrive.trim(); leaveYear = (String)jcbYear1.getSelectedItem(); leaveMonth = (String)jcbMonth1.getSelectedItem(); leaveDay = (String)jcbDay1.getSelectedItem(); leaveYear2 = (String)jcbYear2.getSelectedItem(); leaveMonth2 = (String)jcbMonth2.getSelectedItem(); leaveDay2 = (String)jcbDay2.getSelectedItem(); if (!isTimeValid(leaveYear,leaveMonth,leaveDay)) { JOptionPane.showMessageDialog(null,"已经过了出发时间,请重新设定并查询", "错误信息",JOptionPane.ERROR_MESSAGE); return; } if (!isTimeValid(leaveYear,leaveMonth,leaveDay,leaveYear2,leaveMonth2,leaveDay2)) { JOptionPane.showMessageDialog(null,"返程日期不能比出发日期早,请重新设定并查询", "错误信息",JOptionPane.ERROR_MESSAGE); return; } leaveWeek = timeToWeek(leaveYear,leaveMonth,leaveDay); leaveWeek2 = timeToWeek(leaveYear2,leaveMonth2,leaveDay2); airFirm = (String)jcbAirFirm.getSelectedItem(); airFirm = airFirm.trim(); executeMutipleQuery(); } } private boolean isTimeValid(String year,String month,String day) { int y = Integer.parseInt(year); int m = Integer.parseInt(month); int d = Integer.parseInt(day); Calendar cal = Calendar.getInstance(); cal.setTime(new java.util.Date()); int py = cal.get(Calendar.YEAR); - 24 - int pm = cal.get(Calendar.MONTH) + 1; int pd = cal.get(Calendar.DAY_OF_MONTH); if (y == py) { if (m < pm) return false; else if(d < pd) return false; } return true; } private boolean isTimeValid(String year1,String month1,String day1, String year2,String month2,String day2) { int y1 = Integer.parseInt(year1); int m1 = Integer.parseInt(month1); int d1 = Integer.parseInt(day1); int y2 = Integer.parseInt(year2); int m2 = Integer.parseInt(month2); int d2 = Integer.parseInt(day2); if (y1 < y2) return true; else if (y1 == y2) { if (m1 < m2) return true; else if (m1 == m2) { if (d1 < d2) return true; else if (d1 == d2) return true; else return false; } else return false; } else return false; - 25 - } private String timeToWeek(String year,String month,String day) { int sum=0; int y = Integer.parseInt(year); int m = Integer.parseInt(month); int d = Integer.parseInt(day); int[] dayOfMonth = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int firstDayOfYear = firstDay(y); for(int i = 1;i < m;i++) { sum=sum+dayOfMonth[i]; } sum = sum+(d-1)+firstDayOfYear; //sum+1 if( (m >= 2) && ((y%4 == 0 && y%100 != 0) || (y%400 == 0))) sum ++; int week = 0; int x = sum % 7; switch(x) { case 1: week = 1; break; case 2: week = 2; break; case 3: week = 3; break; case 4: week = 4; break; case 5: week = 5; break; case 6: week = 6; break; case 0: - 26 - week = 7; break; } return String.valueOf(week); } //算一年的第一天是星期几 private int firstDay(int year) { int a,b; if(year <= 2000) { a=2000-year; b=6-(a+a/4-a/100+a/400)%7; return b; } else { a=year-2000; b=(a+1+(a-1)/4-(a-1)/100+(a-1)/400)%7+6; return b%7; } } //单程 public void executeSingleQuery() { String sqlString = formSQLString(start,arrive); ResultSet rs = sqlBean.executeQuery(sqlString); if (rs != null) { String result = " " + "综合查询"; //结果连接 result += formResult(rs,leaveYear,leaveMonth,leaveDay,leaveWeek,start,arrive); //显示结果 showResult(result); } else - 27 - JOptionPane.showMessageDialog(null,"没有连接上数据库!", "错误信息",JOptionPane.ERROR_MESSAGE); } //往返 public void executeDoubleQuery() { //晚饭得从数据库中找两回,从开始城市到目的城市和从目的城市到开始城市 String sqlString1 = formSQLString(start,arrive); ResultSet rs1 = sqlBean.executeQuery(sqlString1); String sqlString2 = formSQLString(arrive,start); ResultSet rs2 = sqlBean.executeQuery(sqlString2); if ( (rs1 != null) || (rs2 != null)) { String result = " " + "综合查询 "; //将往返的结果连接 result += formDoubleResult(rs1,rs2); showResult(result); } else JOptionPane.showMessageDialog(null,"没有连接上数据库!", "错误信息",JOptionPane.ERROR_MESSAGE); } //联程 public void executeMutipleQuery() { //联程的方法必须从数据库中找两次 //从开始城市到中途城市和从中途城市到最后城市 String sqlString1 = formSQLString(start,firstArrive); ResultSet rs1 = sqlBean.executeQuery(sqlString1); String sqlString2 = formSQLString(firstArrive,arrive); ResultSet rs2 = sqlBean.executeQuery(sqlString2); if ((rs1 != null) || (rs2 != null)) { String result = " " + "综合查询 "; //将联程结果连接 - 28 - result += formMutipleResult(rs1,rs2); showResult(result); } else JOptionPane.showMessageDialog(null,"没有连接上数据库!", "错误信息",JOptionPane.ERROR_MESSAGE); } public String formSQLString(String begin,String end) { String sqlString = "SELECT DISTINCT * FROM " + "flight " + "WHERE start=" + "\'" + begin + "\'" + " AND " + "destination=" + "\'" + end + "\'"; if (!airFirm.equals("所有")) sqlString += " AND " + "airFirm=" + "\'" + airFirm + "\'"; return sqlString; } //从 result 中获得结果 public String formResult(ResultSet rs,String year,String month,String day, String week,String begin,String end) { String result = ""; //将英国的周换成中国的周 String weekDay = dayOfWeek(week); result += "\n" + "航程:" + year + "年" + month + "月" + day + "日" + "(星期" + weekDay + ") " + begin + "----" + end + "\n"; result += "航班号 航空公司 起飞地点 抵达地点 起飞时间 抵达时 间 " + "儿童票价 成人票价 折扣 班期 " + "\n"; //没查到过记录 int originLength = result.length(); String time1,time2; - 29 - String childFare,adultFare,discount1,discount2,seat; try { String tempResult = ""; String tempWeek; while(rs.next()) { tempResult = rs.getString("flight") + rs.getString("airfirm") + rs.getString("start") + rs.getString("destination"); //当你从 resultset 得到时间的时候,它是 "1200".将它换成 "12:00"的形式 time1 = rs.getString("leaveTime"); time2 = rs.getString("arriveTime"); //用 getTime(String time)方法来转换时间 time1 = getTime(time1); time2 = getTime(time2); tempResult += time1 + " " + time2 + " "; //格式 childFare = String.valueOf(rs.getFloat("childFare")); adultFare = String.valueOf(rs.getFloat("adultFare")); discount1 = String.valueOf(rs.getFloat("discount1")); discount2 = String.valueOf(rs.getFloat("discount2")); seat = String.valueOf(rs.getInt("seat")); while(childFare.length() != 11) childFare += " "; while(adultFare.length() != 11) adultFare += " "; while(discount1.length() != 8) discount1 += " "; tempWeek = rs.getString("week"); tempResult += childFare + adultFare + discount1 + tempWeek; tempResult += "\n"; if (tempWeek.indexOf(week) != -1) result += tempResult; } } catch(SQLException e) { e.printStackTrace(); - 30 - } //如果没有找到记录,就打印提示信息 if (result.length() == originLength) { result += " " + "对不起,找不到你想要的航班信息!" + "\n"; } return result; } private String getTime(String time) { String time1,time2; time1 = time.substring(0,2); time2 = time.substring(2,4); time1 = time1.concat(":"); time1 = time1.concat(time2); return time1; } private String dayOfWeek(String weekNum) { String week = ""; int num = Integer.parseInt(weekNum); switch(num) { case 1: week = "一"; break; case 2: week = "二"; break; case 3: week = "三"; break; case 4: - 31 - week = "四"; break; case 5: week = "五"; break; case 6: week = "六"; break; case 7: week = "日"; break; } return week; } public String formDoubleResult(ResultSet rs1,ResultSet rs2) { String result1 = formResult(rs1,leaveYear,leaveMonth,leaveDay,leaveWeek,start,arrive); String result2 = formResult(rs2,backYear,backMonth,backDay,backWeek,arrive,start); String result = result1 + result2; return result; } public String formMutipleResult(ResultSet rs1,ResultSet rs2) { String result1 = formResult(rs1,leaveYear,leaveMonth,leaveDay,leaveWeek,start,firstArrive); String result2 = formResult(rs2,leaveYear2,leaveMonth2,leaveDay2,leaveWeek2,firstArrive,arrive); String result = result1 + result2; return result; } public void showResult(String result) { JOptionPane.showMessageDialog(null,result,"查询结果",JOptionPane.PLAIN_MESSAGE); } } 订票办理功能实现 - 32 - public Hangkong() { frame = this; string[5]="单程"; // string[12]="single"; for(int i=0;i Integer.parseInt(childNum)) { JOptionPane.showMessageDialog(null,"退票数大于已定票数,请按\"查询\"按钮查看信息", "错误信息",JOptionPane.ERROR_MESSAGE); return; } if (aTuiPiaoShu != 0 && aTuiPiaoShu > Integer.parseInt(adultNum)) { JOptionPane.showMessageDialog(null,"退票数大于已定票数,请按\"查询\"按钮查看信息", "错误信息",JOptionPane.ERROR_MESSAGE); return; } operationForTuiPiao(cTuiPiaoShu,aTuiPiaoShu); } } private void operationForTuiPiao(int childTuiPiaoShu,int adultTuiPiaoShu) { int newChildNum = Integer.parseInt(childNum) - childTuiPiaoShu; int newAdultNum = Integer.parseInt(adultNum) - adultTuiPiaoShu; float tuiPiaoCost = caculateTuiPiaoCost(childTuiPiaoShu,adultTuiPiaoShu); float newCost = Float.parseFloat(cost) - tuiPiaoCost; try { RandomAccessFile raf = new RandomAccessFile(file,"rw"); raf.seek(this.locationOfRecord); raf.writeUTF(dingdanNum); raf.writeUTF(name); raf.writeUTF(idNum); raf.writeUTF(flight1); raf.writeUTF(flight2); raf.writeUTF(ticketType); - 58 - leaveTime1 = leaveTime1.substring(0,4) + leaveTime1.substring(5,7) + leaveTime1.substring(8,10); if (leaveTime2.length() != 0) leaveTime2 = leaveTime2.substring(0,4) + leaveTime2.substring(5,7) + leaveTime2.substring(8,10); raf.writeUTF(leaveTime1); raf.writeUTF(leaveTime2); raf.writeUTF(String.valueOf(newChildNum)); raf.writeUTF(String.valueOf(newAdultNum)); raf.writeUTF(String.valueOf(newCost)); int totalTuiPiaoShu = childTuiPiaoShu + adultTuiPiaoShu; seatInfo.tuiPiao(flight1,leaveTime1,totalTuiPiaoShu); if (flight2.length() != 0) seatInfo.tuiPiao(flight2,leaveTime2,totalTuiPiaoShu); if (newChildNum == 0 && newAdultNum == 0) JOptionPane.showMessageDialog(null,"恭喜你退票成功!"+"\n"+"该订单号已作废!"+"\n"+"你将获得"+tuiPiaoCost + "的退票钱"+"\n"+"欢迎你再次选择我们!", "退票成功",JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(null,"恭喜你退票成功!"+"\n"+"你现在剩余 "+newChildNum+ "张儿童票和"+newAdultNum+"张成人票"+"\n"+"你将获得"+tuiPiaoCost + "的退票钱"+"\n"+"欢迎你再次选择我们!","退票成功 ",JOptionPane.INFORMATION_MESSAGE); } catch(Exception e) { e.printStackTrace(); } } private float caculateTuiPiaoCost(int childTuiPiaoShu,int adultTuiPiaoShu) { float tuiPiaoCost = 0; - 59 - try { String sqlString = "select childFare,adultFare from flight where flight='"+flight1+"'"; ResultSet rs = sqlBean.executeQuery(sqlString); float childFare1 = 0; float adultFare1 = 0; while(rs.next()) { childFare1 = rs.getFloat(1); adultFare1 = rs.getFloat(2); } float childFare2 = 0; float adultFare2 = 0; if (flight2.length() != 0) { String sqlString2 = "select childFare,adultFare from flight where flight='"+flight2+"'"; ResultSet rs2 = sqlBean.executeQuery(sqlString2); while(rs2.next()) { childFare2 = rs2.getFloat(1); adultFare2 = rs2.getFloat(2); } } if (flight2.length() == 0) { tuiPiaoCost = (childFare1*childTuiPiaoShu + adultFare1*adultTuiPiaoShu) * (float)0.7; } else { tuiPiaoCost = ( (childFare1 + childFare2)*childTuiPiaoShu + (adultFare1 + adultFare2)*adultTuiPiaoShu ) * (float)0.7; } } catch(Exception e) { - 60 - e.printStackTrace(); } return tuiPiaoCost; } private boolean getClientInfo(String dingdan,String id) { RandomAccessFile raf = null; try { raf = new RandomAccessFile(file,"rw"); boolean isDingDanExist = false; boolean isIDRight = false; long tempLocation = 0; try { while (raf.getFilePointer() < raf.length()) { tempLocation = raf.getFilePointer(); dingdanNum = raf.readUTF(); name = raf.readUTF(); idNum = raf.readUTF(); flight1 = raf.readUTF(); flight2 = raf.readUTF(); ticketType = raf.readUTF(); leaveTime1 = raf.readUTF(); leaveTime2 = raf.readUTF(); childNum = raf.readUTF(); adultNum = raf.readUTF(); cost = raf.readUTF(); if (dingdanNum.equals(dingdan)) { - 61 - isDingDanExist = true; if (idNum.equals(id)) { isIDRight = true; this.locationOfRecord = tempLocation; break; } else { isIDRight = false; break; } } } } catch(EOFException e) { } boolean isValid = canReturn(leaveTime1); if (!isValid) { JOptionPane.showMessageDialog(null,"该票已经过期!不能再退!", "错误信息",JOptionPane.ERROR_MESSAGE); return false; } if (isDingDanExist == true && isIDRight == true) { String year = ""; String month = ""; String day = ""; if (leaveTime1.length() != 0) { year = leaveTime1.substring(0,4); - 62 - month = leaveTime1.substring(4,6); day = leaveTime1.substring(6,8); leaveTime1 = year.concat("-").concat(month).concat("-").concat(day); } if (leaveTime2.length() != 0) { year = leaveTime2.substring(0,4); month = leaveTime2.substring(4,6); day = leaveTime2.substring(6,8); leaveTime2 = year.concat("-").concat(month).concat("-").concat(day); } if (Integer.parseInt(childNum) == 0 && Integer.parseInt(adultNum) == 0) { JOptionPane.showMessageDialog(null,"该订单号已经无效!", "错误信息",JOptionPane.ERROR_MESSAGE); return false; } return true; } if (isDingDanExist == true && isIDRight == false) { JOptionPane.showMessageDialog(null,"身份证号不正确","错误信息 ",JOptionPane.ERROR_MESSAGE); return false; } if (isDingDanExist == false) { JOptionPane.showMessageDialog(null,"订单号不存在","错误信息 ",JOptionPane.ERROR_MESSAGE); return false; } - 63 - } catch(Exception e) { e.printStackTrace(); } finally { try { raf.close(); } catch(Exception e) { e.printStackTrace(); } } return false; } private boolean canReturn(String time) { String year = time.substring(0,4); String month = time.substring(4,6); String day = time.substring(6,8); int y = Integer.parseInt(year); int m = Integer.parseInt(month); int d = Integer.parseInt(day); //获得票的时间 Calendar cal = Calendar.getInstance(); cal.setTime(new java.util.Date()); int py = cal.get(Calendar.YEAR); int pm = cal.get(Calendar.MONTH) + 1; int pd = cal.get(Calendar.DAY_OF_MONTH); if (y == py) - 64 - { if (m < pm) return false; else if(d < pd) return false; } return true; } } 连接数据库实现 public class SqlBean { private Connection conn=null; private ResultSet rs=null; //数据驱动 private String DatabaseDriver="sun.jdbc.odbc.JdbcOdbcDriver"; //数据源 private String DatabaseConnStr="jdbc:odbc:dsStudent"; //登录ID private String LogId="sa"; //登录密码 private String LogPass=""; //构造器方法 public SqlBean() { try { Class.forName(DatabaseDriver); } catch(ClassNotFoundException e) { } } //查询 - 65 - public ResultSet executeQuery(String sql) { rs=null; try { conn = DriverManager.getConnection(DatabaseConnStr,LogId,LogPass); Statement stmt=conn.createStatement(); rs=stmt.executeQuery(sql); } catch(SQLException ex) { } return rs; } //插入 public int executeInsert(String sql) { int num=0; try { conn = DriverManager.getConnection(DatabaseConnStr,LogId,LogPass); Statement stmt=conn.createStatement(); num=stmt.executeUpdate(sql); } catch(SQLException ex) { } return num; } //删除 public int executeDelete(String sql) { int num=0; try { conn = DriverManager.getConnection(DatabaseConnStr,LogId,LogPass); - 66 - Statement stmt=conn.createStatement(); num=stmt.executeUpdate(sql); } catch(SQLException e) { } return num; } //更新 public int executeUpdate(String sql) { int num=0; try { conn = DriverManager.getConnection(DatabaseConnStr,LogId,LogPass); Statement stmt=conn.createStatement(); num=stmt.executeUpdate(sql); } catch(SQLException e) { } return num; } //关闭 public void CloseDataBase() { try { conn.close(); } catch(Exception e) { } } } public class UpdateComboBox extends Thread - 67 - { private SqlBean sqlBean = new SqlBean(); private HashSet flight = new HashSet(); private HashSet airFirm = new HashSet(); private HashSet place = new HashSet(); public final static int INSERT_INFO = 1; public final static int DELETE_INFO = 2; public UpdateComboBox() { this.start(); } public void run() { try { while (true) { updateInsert(); updateDelete(); this.sleep(2000); } } catch(Exception e) { e.printStackTrace(); } } public void updateInsert() { String sqlString = "select flight,airfirm,start from flight"; String newFlightNum = ""; String newAirFirm = ""; String newPlace = ""; try - 68 - { ResultSet rs = sqlBean.executeQuery(sqlString); while (rs.next()) { newFlightNum = rs.getString("flight"); newAirFirm = rs.getString("airfirm"); newPlace = rs.getString("start"); if ( !flight.contains(newFlightNum)) { flight.add(newFlightNum); updateFlightComboBox(newFlightNum,this.INSERT_INFO); } if ( !airFirm.contains(newAirFirm)) { airFirm.add(newAirFirm); updateAirFirmComboBox(newAirFirm,this.INSERT_INFO); } if ( !place.contains(newPlace)) { place.add(newPlace); updatePlaceComboBox(newPlace,this.INSERT_INFO); } } } catch(Exception e) { e.printStackTrace(); } } public void updateDelete() { try { - 69 - String sqlString = "select flight,airfirm,start from flight"; ResultSet rs = sqlBean.executeQuery(sqlString); HashSet fli = new HashSet(); HashSet firm = new HashSet(); HashSet pla = new HashSet(); while (rs.next()) { fli.add(rs.getString("flight")); firm.add(rs.getString("airfirm")); pla.add(rs.getString("start")); } Iterator flightIt = flight.iterator(); Iterator airFirmIt = airFirm.iterator(); Iterator placeIt = place.iterator(); String flightNum = ""; while (flightIt.hasNext()) { flightNum = (String)flightIt.next(); if ( !fli.contains(flightNum)) { updateFlightComboBox(flightNum,this.DELETE_INFO); } } flight = (HashSet)fli.clone(); String air = ""; while (airFirmIt.hasNext()) { air = (String)airFirmIt.next(); if ( !firm.contains(air)) { updateAirFirmComboBox(air,this.DELETE_INFO); } - 70 - } airFirm = (HashSet)firm.clone(); String location = ""; while (placeIt.hasNext()) { location = (String)placeIt.next(); if ( !pla.contains(location)) { updatePlaceComboBox(location,this.DELETE_INFO); } } place = (HashSet)pla.clone(); } catch(Exception e) { e.printStackTrace(); } } private void updateFlightComboBox(String newFlightNum,int insertOrDelete ) { CommonQuery.updateFlightComboBox(newFlightNum,insertOrDelete); // FlightQuery.updateFlightList(newFlightNum,insertOrDelete); DeletePanel.updateFlightComboBox(newFlightNum,insertOrDelete); } private void updateAirFirmComboBox(String newAirFirm,int insertOrDelete) { CommonQuery.updateAirFirmComboBox(newAirFirm,insertOrDelete); // AirFirmQuery.updateAirFirmComboBox(newAirFirm,insertOrDelete); ComprehenQuery.updateAirFirmComboBox(newAirFirm,insertOrDelete); } private void updatePlaceComboBox(String newPlace,int insertOrDelete) { - 71 - CommonQuery.updatePlaceComboBox(newPlace,insertOrDelete); // DestinQuery.updatePlaceComboBox(newPlace,insertOrDelete); ComprehenQuery.updatePlaceComboBox(newPlace,insertOrDelete); DeletePanel.updateCityComboBox(newPlace,insertOrDelete); } } - 72 -
/
本文档为【航空订票系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索