Introduction of the Project
In this article, you will find the source code and explanation of the Airline Reservation System in Java. For this java project, we have also used the Swing module to implement some GUI along with the SQL database to store information on flights available. This project has a method to book tickets on a selected flight & get a boarding pass too.
Objectives
The two major objectives of this java project are:
- To create a user interface for the user to look for available flights and then book his tickets accordingly.
- To implement the tables that contain flight information and attach the functionality of booking tickets on the selected flight & get a boarding pass.
Requirements
- Swing (for creating the Graphical User Interface (GUI) of the project)
Source Code
package com.company; public class Main { public static void main(String[] args) { new Airplane(); } } package com.company; import com.toedter.calendar.JDateChooser; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.sql.*; import java.text.DateFormat; import java.util.Vector; public class Airplane { private JTextField nameData; private JTextField sourceData; private JTable table1; private JButton SEARCHButton; private JButton BOOKButton; private JPanel airPanel; private JTextField fee; private JTextField exp; private JTextField destination; private JPanel doj; private JSpinner spinner1; private JTextArea boarding; private JLabel fare; private JButton RESETButton; JFrame planeF = new JFrame(); JDateChooser dateChooser = new JDateChooser(); public Airplane(){ planeF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); planeF.setContentPane(airPanel); planeF.pack(); planeF.setLocationRelativeTo(null); doj.add(dateChooser); planeF.setVisible(true); fare.setText("0"); SEARCHButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(destination.getText().equals("")|| sourceData.getText().equals("")){ JOptionPane.showMessageDialog(null,"Please Fill SOURCE & DESTINATION TO SEARCH."); }else{ try { String sql = "select * from airplane WHERE SOURCE= '"+sourceData.getText()+"' AND DESTINATION= '"+destination.getText()+"'"; Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/intern","root","root"); Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql); if(!rs.next()) JOptionPane.showMessageDialog(null,"NO FLIGHTS AVAILABLE"); else{ ResultSet rs1 = statement.executeQuery(sql); table1.setModel(buildTableModel(rs1)); } }catch (Exception ex){ JOptionPane.showMessageDialog(null,ex.getMessage()); } } } }); BOOKButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null,"FIND YOUR BOARDING PASS ATTACHED"); printPass(); } }); table1.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { DefaultTableModel dm = (DefaultTableModel)table1.getModel(); int selectedRow = table1.getSelectedRow(); int a =(int)dm.getValueAt(selectedRow,4); String total = String.valueOf(a*(int)spinner1.getValue()); fare.setText(total); } }); RESETButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { planeF.dispose(); new Airplane(); } }); } public void printPass(){ DefaultTableModel dms = (DefaultTableModel)table1.getModel(); int selectedRow1 = table1.getSelectedRow(); String date = DateFormat.getDateInstance().format(dateChooser.getDate()); boarding.setText(boarding.getText() + " BOARDING PASS"+"\n"); boarding.setText(boarding.getText() + " ------***------"+"\n"); boarding.setText(boarding.getText() + "\n"); boarding.setText(boarding.getText() +"NAME: "+nameData.getText()+"\n"); boarding.setText(boarding.getText() +"FLIGHT NO: "+dms.getValueAt(selectedRow1,0).toString()+"\n"); boarding.setText(boarding.getText() +"SOURCE: "+sourceData.getText()+"\n"); boarding.setText(boarding.getText() +"DESTINATION: "+destination.getText()+"\n"); boarding.setText(boarding.getText() +"DATE OF JOURNEY: "+date+"\n"); boarding.setText(boarding.getText() +"TIME: "+ dms.getValueAt(selectedRow1,3).toString()+"\n"); boarding.setText(boarding.getText() +"TOTAL AMOUNT: "+"₹"+fare.getText()); } public void tableData() { try{ String a= "Select* from doctor"; Class.forName("com.mysql.cj.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/intern","root","root"); Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(a); table1.setModel(buildTableModel(rs)); }catch (Exception ex1){ JOptionPane.showMessageDialog(null,ex1.getMessage()); } } public static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException { ResultSetMetaData metaData = rs.getMetaData(); // names of columns Vector<String> columnNames = new Vector<String>(); int columnCount = metaData.getColumnCount(); for (int column = 1; column <= columnCount; column++) { columnNames.add(metaData.getColumnName(column)); } // data of the table Vector<Vector<Object>> data = new Vector<Vector<Object>>(); while (rs.next()) { Vector<Object> vector = new Vector<Object>(); for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { vector.add(rs.getObject(columnIndex)); } data.add(vector); } return new DefaultTableModel(data, columnNames); } }
Explanation of the Code
The code consists of two parts, the first one involves creating the GUI for flight availability and booking, and the other is the retrieval of information from the SQL database so a user can book tickets on the selected flight and get a boarding pass.
Let us look at the GUI first:
1. The main screen consists of 3 buttons for searching for flights, booking tickets & resetting the screen, respectively.
2. It has five text fields & a JLabel that requires information on customer booking tickets.
3. It consists of a Jtable that displays the stored information in the database.
Moving to the retrieval, we have applied:
1. Build a connection first with the database using the Connection object.
2. Inject the query that stores table data in ResultSet.
3. Finally, send data to Jtable.
4. The Search button is for retrieving flights available from source to destination & displays in jtable & if not, then pops an error message.
5. The Book Tickets button is to book tickets for a selected flight from the table & then print details of the customer, flight & total amount in JtextArea beneath the table.
Output
Main Interface
Conclusion
We have implemented a Java project that helps to manage customer information & help to book a flight with Swing (used for GUI). This Airline Reservation System in Java program is a very efficient & easy way to reserve tickets & have all the details of the customer & flight in the boarding pass attached to it.

Cisco Ramon is an American software engineer who has experience in several popular and commercially successful programming languages and development tools. He has been writing content since last 5 years. He is a Senior Manager at Rude Labs Pvt. Ltd.
0 Comments