航空订票系统
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 -