Java 航空系统设计

1.设计要求
(1)设计每条航线所涉及的信息,如终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)等;
(2)结合基本操作的单链表、队列、二叉树等数据结构以及排序算法,设计机票系统的查询、订票、退票等功能;
(3)设计并实现人机交互友好的界面或菜单。

2.总体设计流程

基于java的机票预订系统 java机票信息系统_java

(1)订票板块

基于java的机票预订系统 java机票信息系统_Java_02


(2)查询板块

基于java的机票预订系统 java机票信息系统_Java_03


(3)退票板块

基于java的机票预订系统 java机票信息系统_java_04


3.代码实现

  1. 订票界面
    (1)该界面只有一个book类继承了JFrame,同时实现了ActionListener接口与MouseListener接口,实现用户信息的录入,购买航班的选择以及最终的操作确定。
    (2)该部分涉及了Java中输入输出流的使用,通过定义两个文件写入与文件读取函数,实现用户信息的显示与存储。
    (3)对于相关航班余票量的动态变化同样采取文件写入的方式,当选择具体航班后,按行读取原文件中的对应余票量存入数组中,随后对相应下标的数组元素进行自减操作,实现余票量的减少。
    主要函数:
public void addcustomer() {
		 String filefolderString="D:\\filepath";
			File aFile = new File(filefolderString);
			File[] fileList = aFile.listFiles();	       
	    		   try {
	    		   writemessage(fileList[key]);    		
	    		   }catch(Exception e1) {}
	    	   
	 }
	 public void writeFile(String filename) {
		 try {
	            FileOutputStream fos = new FileOutputStream(filename,true);
	          for(int i=0;i<resttickets.length;i++) {
	        	  String str=String.valueOf(resttickets[i]);
	        	  byte[] b = str.getBytes();
	        	  fos.write(b);
		            fos.write('\n');
		      
	          }
	          fos.close(); 
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	 }
	 public void clear()   {
		        try {
		           
		            FileWriter fileWriter =new FileWriter(restfile);
		            fileWriter.write("");
		            fileWriter.flush();
		            fileWriter.close();
		        } catch (IOException e) {
		            e.printStackTrace();
		        }
		    
	 }
	 public void writemessage(File file){
	        try {
	            FileOutputStream fos = new FileOutputStream(file,true);
	            OutputStreamWriter write=new OutputStreamWriter(fos,"gbk");
	        	  String s1=tfname.getText();
	        	  String s3=tfid.getText();
	        	  String s2=String.valueOf(lever.getSelectedItem());
	        	  String str=s1+"	"+s3+"       "+"1"+"    "+s2;	        	 // System.out.println(str);
	        	  BufferedWriter writer=new BufferedWriter(write);
	        	  writer.write("\n"+str);
	        	  writer.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	        
	    }

public static void main(String[] args)throws Exception{
	new bookjf();
	
}

public void mouseClicked(MouseEvent e) {
	if(e.getSource()==jb1) {
		resttickets[key]--;
       this.clear();
       this.writeFile("D:\\余票列表.txt");
       this.addcustomer();
       JOptionPane.showMessageDialog(this,"尊敬的乘客您好!恭喜您购票成功!");
	}
	else {
		javax.swing.JOptionPane.showMessageDialog(this,"本次购票已取消");
	}
	
}

2.退票界面
(1)该界面只有一个cancel类继承了JFrame,同时实现了ActionListener接口与MouseListener接口,实现用户信息的录入,欲退票买航班的选择以及最终的操作确定。
(2)该部分涉及了Java中输入输出流的使用,通过定义两个文件写入与文件读取函数,按行读取原文件中的对应乘客信息存入链表中,再将现有文本框中的信息与之进行比对,实现用户信息的正确删除。
(3)对于相关航班余票量的动态变化同样采取文件写入的方式,当选择具体航班且比对无误后,按行读取原文件中的对应余票量存入数组中,随后对相应下标的数组元素进行自增操作,实现余票量的增加。

public void customerdisplay(File file)throws Exception {

	BufferedReader cus=null;
	String s3;
	JFrame jf1=new JFrame("*乘客信息单*");
	JTextArea jta1=new JTextArea();
	ArrayList<String>customerlist =new ArrayList<String>();
	FileInputStream fi = new FileInputStream(file);
	InputStreamReader isr = new InputStreamReader(fi,"gbk");
	cus=new BufferedReader(isr);	
	while(true) {
		
		s3= cus.readLine();
		System.out.println(s3);
		if(s3!=null)
		{
			customerlist.add(s3);
	}
		else
		break;
	}
	String title="姓名"+"	"+"身份证号"+"   "+"购票数"+	"   "+"舱位"+"\n";
	jta1.append(title);
	for(int i=0;i<customerlist.size();i++) {
		jta1.append(customerlist.get(i)+"\n");

	}
	
	
	jf1.add(jta1);
	jta1.setFont(new Font("黑体",Font.BOLD,16));
	jta1.setForeground(Color.BLACK);
	jta1.setBounds(0,0,jf1.getWidth(),jf1.getHeight());
	jta1.setBackground(Color.BLACK);
	jta1.setEnabled(false);
	jf1.setResizable(false);
	jf1.setVisible(true);
	jf1.setSize(300, 600);
	
}
  
	public static void main(String[] args)throws Exception{
		new queryjf();
	}

3.查询界面
(1)该界面只有一个query类继承了JFrame,同时实现了ActionListener接口,实现所有航班信息的显示以及具体航班乘客列表的查询显示。
(2)该部分涉及了Java中输入输出流的使用,通过定义文件读取函数,按行读取原文件中的对应乘客信息存入链表中 ,再通过遍历打印将其显示在主界面的查询文本框中。
(3)对于相关航班乘客列表的查询,由下拉框控制,当选择下拉框中的具体班次时,该类将作出反应,自动弹出新的界面,将乘客信息按行读取到链表中,再遍历打印至新的界面文本框中。

public void deletcustomer(String id) {
		 String filefolderString="D:\\filepath";
			File aFile = new File(filefolderString);
			File[] fileList = aFile.listFiles();	       
	    		   try {
	    		   deletmessage(id,fileList[key]);    		
	    		   }catch(Exception e1) {}
	    	   
	 }

	 public void deletmessage(String str,File file)throws Exception {
		 String s2=null;
		 boolean have=false;
		 BufferedReader deletinf=null;
		 ArrayList<String> newmessage=new ArrayList<String>();
		 FileInputStream deletfi= new FileInputStream(file);
		InputStreamReader isr = new InputStreamReader(deletfi,"gbk");
			deletinf=new BufferedReader(isr);	
				while(true) {
				s2= deletinf.readLine();
				if(s2==null)break;
				if(s2.contains(str)) {
					System.out.println(str);
					System.out.println(s2);
					have=true;}				
				else if(!s2.contains(str))
				{newmessage.add(s2);	
				}}	
				if(!have) {
					JOptionPane.showMessageDialog(this,"对不起,查不到您的订单信息!请检查您的账号与身份证号是否正确!");}				
				else {
					resttickets[key]++;
					 this.clear();
				     this.writeFile("D:\\余票列表.txt");
			try {		           
	            FileWriter fileWriter =new FileWriter(file);
	            fileWriter.write("");
	            fileWriter.flush();
	            fileWriter.close();
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
			PrintStream ps = new PrintStream(file);
            for(int i=0;i<newmessage.size();i++){ 
                            ps.print(newmessage.get(i)+"\n");   }
	            JOptionPane.showMessageDialog(this,"尊敬的乘客您好!提醒您退票成功!");
				}
	 }
	 public static void main(String[] args)throws Exception{
			new canceljf();

		}
	 public void writeFile(String filename) {
		 try {
	            FileOutputStream fos = new FileOutputStream(filename,true);
	          for(int i=0;i<resttickets.length;i++) {
	        	  String str=String.valueOf(resttickets[i]);
	        	  byte[] b = str.getBytes();
	        	  fos.write(b);
		            fos.write('\n');		      
	          }
	          fos.close(); 
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	 }
	 public void clear()   {
		        try {
		           
		            FileWriter fileWriter =new FileWriter(restfile);
		            fileWriter.write("");
		            fileWriter.flush();
		            fileWriter.close();
		        } catch (IOException e) {
		            e.printStackTrace();
		        }
		    
	 }
	public void actionPerformed(ActionEvent e) {
		JComboBox jcmbType = (JComboBox) e.getSource();
		
	       for(int i=0;i<bancilist.size();i++) {
	    	  
	    	   if(jcmbType.getSelectedItem()==bancilist.get(i)) {
	    		   key=i;
	    	   }
	    	   
		}
		
	}
	public void mouseClicked(MouseEvent e) {
		if(e.getSource()==jb1) {
			//
		     this.deletcustomer(tfid.getText());    
	     
		}
		else {
			javax.swing.JOptionPane.showMessageDialog(this,"本次退票已取消");
		}
		
	}

4.主页面界面
主界面继承了JFrame,同时实现了ActionListerner接口,在主界面上放置所有功能按钮,通过使用Java中的相关封装包,实现每次按下不同按钮,生成不同功能界面。

public void actionPerformed(ActionEvent e) {
		if(e.getSource()==queryjb){
			queryjf qjf = null;
			try {
				qjf = new queryjf();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			}
		else if(e.getSource()==bookjb){
			bookjf bjf = null;
			try {
				bjf = new bookjf();
			} catch (Exception e1) {
				
				e1.printStackTrace();
			}
			}
		else {
			canceljf cjf = null;
			try {
				cjf = new canceljf();
			} catch (Exception e1) {
				
				e1.printStackTrace();
			}
		}
		}
	
	//主函数入口:
	public static void main(String[] args)throws Exception{
	new TicketsFrame();
	}

4.实验结果

基于java的机票预订系统 java机票信息系统_基于java的机票预订系统_05


基于java的机票预订系统 java机票信息系统_java_06


基于java的机票预订系统 java机票信息系统_i++_07


基于java的机票预订系统 java机票信息系统_Java_08


基于java的机票预订系统 java机票信息系统_java_09


基于java的机票预订系统 java机票信息系统_基于java的机票预订系统_10

基于java的机票预订系统 java机票信息系统_i++_11


基于java的机票预订系统 java机票信息系统_用户信息_12