GUI Application for the Student Management System - GeeksforGeeks

15 Nov, 2021
Prerequisites: Java SwingWrite a program to build a GUI application which provides the details of the college student, about his course and the fees that need to be paid. The fee is calculated and saved in a text file. The program must also be able to print the receipt.  
Approach: The concept is based on the GUI(graphical user interface). The idea is to use Java Swing and AWT. Therefore, we need to define all the methods based on functionality. The methods in the program are as follows: 
Receipt: The prime functionality of this method is to display all the data that is entered in the text fields, the course to be taken and the final amount that needs to be paid. These operations can be done by adding ActionListeners to the button named as receipt.Reset: The functionality of this method is to clear the information that is already visible to in the text areas and in the text fields and to add new student’s details and print the fees of that particular student. It can be done by adding ActionListeners to the button.Print: The functionality of this method is to print the fee receipt if the printer is available. We can do this by adding ActionListener to the button. The entire information in the text area is named as area2 and is saved in a file in the computer under the name of java.txt. It will also show a dialog box as Data saved successfully.
Receipt: The prime functionality of this method is to display all the data that is entered in the text fields, the course to be taken and the final amount that needs to be paid. These operations can be done by adding ActionListeners to the button named as receipt.
Reset: The functionality of this method is to clear the information that is already visible to in the text areas and in the text fields and to add new student’s details and print the fees of that particular student. It can be done by adding ActionListeners to the button.
Print: The functionality of this method is to print the fee receipt if the printer is available. We can do this by adding ActionListener to the button. The entire information in the text area is named as area2 and is saved in a file in the computer under the name of java.txt. It will also show a dialog box as Data saved successfully.
Below is the implementation of the above approach: 
Java
// Java program to implement a GUI// application for the student// management system  import javax.swing.*;import java.awt.*;import java.awt.Image;import java.awt.event.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.print.*;import javafx.print.Printer;import java.io.*;import java.io.IOException;  // Creating the fee classpublic class fee extends Frame {      JLabel l1, l2, l3, l4,        l5, l6, l7, l8,        l9, l10, l12, l13,        l14, l11, l15;      JTextField tf1, tf2, tf3,        tf4, tf5, tf6,        tf7, tf8, tf9,        tf10;      JTextArea area2, area1;      JRadioButton rb1, rb2, rb3,        rb4, rb5, rb6,        rb7;      JFileChooser f1;      // Default constructor to    // initialize the parameters    fee()    {          l1 = new JLabel("Fee Report");        l1.setBounds(550, 100, 250, 20);          l2 = new JLabel(            "Name of the Student:");        l2.setBounds(50, 150, 250, 20);          tf1 = new JTextField();        tf1.setBounds(250, 150, 250, 20);          l3 = new JLabel(            "Name of the Father:");        l3.setBounds(50, 200, 250, 20);          tf2 = new JTextField();        tf2.setBounds(250, 200, 250, 20);          l4 = new JLabel("Roll Number:");        l4.setBounds(50, 250, 250, 20);          tf3 = new JTextField();        tf3.setBounds(250, 250, 250, 20);          l5 = new JLabel("Email ID:");        l5.setBounds(50, 300, 250, 20);          tf4 = new JTextField();        tf4.setBounds(250, 300, 250, 20);          l6 = new JLabel("Contact Number:");        l6.setBounds(50, 350, 250, 20);          tf5 = new JTextField();        tf5.setBounds(250, 350, 250, 20);          l7 = new JLabel("Address:");        l7.setBounds(50, 400, 250, 20);          area1 = new JTextArea();        area1.setBounds(250, 400, 250, 90);          l9 = new JLabel("Gender:");        l9.setBounds(50, 500, 250, 20);          JRadioButton r5            = new JRadioButton(" Male");        JRadioButton r6            = new JRadioButton(" Female");          r5.setBounds(250, 500, 100, 30);        r6.setBounds(350, 500, 100, 30);          ButtonGroup bg = new ButtonGroup();        bg.add(r5);        bg.add(r6);          l10 = new JLabel("Nationality:");        l10.setBounds(50, 550, 250, 20);          tf6 = new JTextField();        tf6.setBounds(250, 550, 250, 20);          l11 = new JLabel(            "Year of passing 10th");        l11.setBounds(50, 600, 250, 20);          String language[]            = { "2016", "2015", "2014" };          final JComboBox cb1            = new JComboBox(language);          cb1.setBounds(250, 600, 90, 20);          l12 = new JLabel(            "Year of passing 12th");        l12.setBounds(50, 650, 250, 20);          String languagess[]            = { "2019", "2018", "2017" };          l13 = new JLabel(            "Points Secured in 10th:");        l13.setBounds(50, 700, 250, 20);          tf7 = new JTextField();        tf7.setBounds(250, 700, 250, 20);          l14 = new JLabel("Percentage in 12th:");        l14.setBounds(50, 750, 250, 20);          tf8 = new JTextField();        tf8.setBounds(250, 750, 250, 20);          ImageIcon i2 = new ImageIcon("2.png");        JLabel l15            = new JLabel("", i2, JLabel.CENTER);          l15.setBounds(900, 50, 600, 200);          final JComboBox cb2            = new JComboBox(languagess);          cb2.setBounds(250, 650, 90, 20);        l8 = new JLabel(            "Groups Offered here are:");        l8.setBounds(800, 150, 250, 20);          rb1 = new JRadioButton("SEAS");        rb1.setBounds(550, 150, 100, 30);          rb2 = new JRadioButton("SLABS");        rb2.setBounds(650, 150, 100, 30);          ButtonGroup bg1 = new ButtonGroup();          bg1.add(rb1);        bg1.add(rb2);          rb3 = new JRadioButton("HOSTELLER");        rb3.setBounds(550, 200, 100, 30);          rb4 = new JRadioButton("DAY SCHOLAR");        rb4.setBounds(650, 200, 120, 30);          ButtonGroup bg2 = new ButtonGroup();        bg2.add(rb3);        bg2.add(rb4);          String languages[]            = { "CSE", "ECE", "EEE",                "CIVIL", "MECH" };        final JComboBox cb            = new JComboBox(languages);        cb.setBounds(800, 200, 90, 20);          final JLabel label            = new JLabel();        label.setBounds(600, 430, 500, 30);        JButton b = new JButton("Show");        b.setBounds(1000, 300, 80, 30);          final DefaultListModel<String> li1            = new DefaultListModel<>();          li1.addElement("CSE(2, 50, 000)");        li1.addElement("ECE(2, 50, 000)");        li1.addElement("EEE(2, 50, 000)");        li1.addElement("MECH(2, 50, 000)");        li1.addElement("CIVIL(2, 50, 000)");          final JList<String> list1            = new JList<>(li1);          list1.setBounds(600, 300, 125, 125);          DefaultListModel<String> li2            = new DefaultListModel<>();          li2.addElement(            "2 SHARE(1, 50, 000)");        li2.addElement(            "3 SHARE(1, 40, 000)");        li2.addElement(            "5 SHARE(1, 20, 000)");        li2.addElement(            "8 SHARE(1, 10, 000)");        li2.addElement(            "bus(40, 000)");          final JList<String> list2            = new JList<>(li2);        list2.setBounds(            800, 300, 125, 125);          JButton Receipt            = new JButton("Generate Receipt");        Receipt.setBounds(600, 490, 150, 30);        JButton b2 = new JButton("Reset");        b2.setBounds(750, 490, 150, 30);        JButton Print = new JButton("Print");        Print.setBounds(900, 490, 150, 30);          area2 = new JTextArea();        area2.setBounds(600, 540, 450, 240);          add(l1);        add(l2);        add(l3);        add(l4);        add(l5);        add(l6);        add(l7);        add(l8);        add(l9);        add(l10);        add(l11);        add(l12);        add(l13);        add(l14);        add(tf1);        add(tf2);        add(tf3);        add(tf4);        add(tf5);        add(tf6);        add(tf7);        add(tf8);        add(area1);        add(area2);        add(l15);        add(rb1);        add(rb2);        add(rb3);        add(rb4);        add(r5);        add(r6);        add(cb);        add(cb1);        add(cb2);        add(list1);        add(list2);        add(b);        add(label);        add(Receipt);        add(b2);        add(Print);          b.addActionListener(new ActionListener() {              // Method to display the data            // entered in the text fields            public void actionPerformed(ActionEvent e)            {                String data = "";                if (list1.getSelectedIndex() != -1) {                    data = "You had selected the Group:"                           + list1.getSelectedValue();                    label.setText(data);                }                if (list2.getSelectedIndex() != -1) {                    data += " and Hostel with the "                            + "facility of: ";                      for (Object frame :                         list2.getSelectedValues()) {                        data += frame + " ";                    }                }                label.setText(data);            }        });          // Reset the text fields        b2.addActionListener(            new ActionListener() {                public void actionPerformed(                    ActionEvent e)                {                    area2.setText("");                    area1.setText(" ");                    tf1.setText("");                    tf2.setText("");                    tf3.setText("");                    tf4.setText("");                    tf5.setText("");                    tf6.setText(" ");                }            });          // Implementing the Print action        Print.addActionListener(            new ActionListener() {                public void actionPerformed(                    ActionEvent e)                {                    try {                        area2.print();                    }                    catch (java.awt.print                               .PrinterException a) {                        System.err.format(                            "NoPrinter Found",                            a.getMessage());                    }                }            });          // Generating the receipt        Receipt.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e)            {                  area2.setText(                    "--------------------------------"                    + "-----------FEE RECEIPT----"                    + "--------------------------"                    + "--------------------------"                    + "-------------------\n");                  area2.setText(area2.getText()                              + "Student Name: "                              + tf1.getText()                              + "\n");                area2.setText(area2.getText()                              + "Father's Name: "                              + tf2.getText()                              + "\n");                area2.setText(area2.getText()                              + "RollNumber: "                              + tf3.getText()                              + "\n");                area2.setText(area2.getText()                              + "Email ID: "                              + tf4.getText()                              + "\n");                area2.setText(area2.getText()                              + "Contact Number: "                              + tf5.getText()                              + "\n");                area2.setText(area2.getText()                              + "Wants to take: "                              + cb.getSelectedItem()                                    .toString()                              + "\n");                  if (rb1.isSelected()) {                    area2.setText(area2.getText()                                  + "Wants to Join in "                                  + "School of Engineering "                                  + "and Applied Sciences\n");                }                if (rb2.isSelected()) {                    area2.setText(area2.getText()                                  + "Wants to Join in "                                  + "School of Liberal "                                  + "Arts and Sciences\n");                }                if (rb3.isSelected()) {                    area2.setText(area2.getText()                                  + "Wants to be a "                                  + "Hosteller \n");                }                if (rb4.isSelected()) {                    area2.setText(area2.getText()                                  + "Wants to be a "                                  + "Day Scholar \n");                }                area2.setText(area2.getText()                              + "Had chosen: "                              + list1.getSelectedValue()                                    .toString()                              + "\n");                area2.setText(area2.getText()                              + "Had chosen: "                              + list2.getSelectedValue()                                    .toString()                              + "\n");                  int index2 = list2.getSelectedIndex();                if (index2 == 0) {                    area2.setText(area2.getText()                                  + "                    "                                  + "Total amount to be "                                  + "paid is 4 Lakhs   \n");                }                  if (index2 == 1) {                    area2.setText(area2.getText()                                  + "                    "                                  + "Total amount to be paid "                                  + "is 3.9 Lakhs   \n");                }                  if (index2 == 2) {                    area2.setText(area2.getText()                                  + "                    "                                  + "Total amount to be paid "                                  + "is 3.8 Lakhs   \n");                }                  if (index2 == 3) {                    area2.setText(area2.getText()                                  + "                    "                                  + "Total amount to be paid "                                  + "is 3.7 Lakhs   \n");                }                  if (index2 == 4) {                    area2.setText(area2.getText()                                  + "                    "                                  + "Total amount to be paid "                                  + "is 2.9 Lakhs   \n");                }                  if (e.getSource() == Receipt) {                    try {                        FileWriter fw                            = new FileWriter(                                "java.txt", true);                        fw.write(area2.getText());                        fw.close();                    }                    catch (Exception ae) {                        System.out.println(ae);                    }                }                  JOptionPane.showMessageDialog(                    area2, "DATA SAVED SUCCESSFULLY");            };        });        addWindowListener(            new WindowAdapter() {                public void windowClosing(                    WindowEvent we)                {                    System.exit(0);                }            });        setSize(800, 800);        setLayout(null);        setVisible(true);        setBackground(Color.cyan);    }    public static void main(String[] args)    {        new fee();    }}
Output:  
When the above program is run: 
 
When all the details are added in the respective fields: 
 
When the receipt button is pressed: 
 
When the data is stored in a text file: 
 
When print button is clicked, the following options are shown. If the printer is available, then it can be directly printed.  
 
Preview of the document if the printer is available: 
 
puvvadasampath2000
ruhelaa48
singghakshay
java-applet
java-swing
Java
Java Programs
Project
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Object Oriented Programming (OOPs) Concept in Java
HashMap in Java with Examples
Interfaces in Java
How to iterate any Map in Java
Initializing a List in Java
Convert a String to Character Array in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class