School Management System

import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;

public class ProjectX extends JFrame implements ChangeListener,
ActionListener
{
                static int choice = 0;
                static String line = "--------------------------------
";
                DataInputStream inputData = new DataInputStream(System.in);
                private Registration studentDetails = new Registration();
                int topScore = studentDetails.getTopScore();
                int passMarks = studentDetails.getPassMarks();
                int firstClass = studentDetails.getFirstClass();
                int secondClass = studentDetails.getSecondClass();

                JTabbedPane tabbedPane = new JTabbedPane();
                JLabel statusLabel = new JLabel();
                JLabel titleLabel = new JLabel("Student Software Beta Edition");
                JPanel addStudentPanel = new JPanel();
                                 JTextField studentName = new JTextField();
                                 JTextField physicsMarks = new JTextField();
                                 JTextField biologyMarks = new JTextField();
                                 JTextField mathsMarks = new JTextField();
                                 JButton submitDetails = new JButton("Submit Details");
                JPanel studentDetailsPanel = new JPanel();
                                 JTextField studentID1 = new JTextField();
                                 JTextArea studentInfo = new JTextArea();
                                 JButton submitID1 = new JButton("Submit ID");
                JPanel studentGradePanel = new JPanel();
                                 JTextField studentID2 = new JTextField();
                                 JTextArea studentGrade = new JTextArea();
                                 JButton submitID2 = new JButton("Submit ID");
                JPanel numberPassedPanel = new JPanel();
                                 JTextArea studentPassed = new JTextArea();
                JPanel classTopperPanel = new JPanel();
                                 JTextArea studentTopper = new JTextArea();

                public ProjectX(String frameTitle)
                {
                                 super(frameTitle);
                                 setResizable(true);
                                 setSize(400,400);
                                 submitDetails.addActionListener(this);
                                 submitID1.addActionListener(this);
                                 submitID2.addActionListener(this);

                                 getContentPane().setLayout(new BorderLayout());

                                 getContentPane().add(titleLabel,"North");

                                 tabbedPane.addTab("Add Student",addStudentPanel);
                                 addStudentPanel.setLayout(new GridLayout(8,2,5,5));
                                 addStudentPanel.add(new JLabel("Student Name: "));
                                 addStudentPanel.add(studentName);
                                 addStudentPanel.add(new JLabel("Physics Marks: "));
                                 addStudentPanel.add(physicsMarks);
                                 addStudentPanel.add(new JLabel("Biology Marks: "));
                                 addStudentPanel.add(biologyMarks);
                                 addStudentPanel.add(new JLabel("Maths Marks: "));
                                 addStudentPanel.add(mathsMarks);
                                 addStudentPanel.add(submitDetails);

                                 tabbedPane.addTab("Student Details",studentDetailsPanel);
                                 studentDetailsPanel.add(new JLabel("Enter Student ID: "));
                                 studentDetailsPanel.add(studentID1);
                                 studentDetailsPanel.add(submitID1);
                                 studentDetailsPanel.add(new JLabel("Student Details:"));
                                 studentDetailsPanel.add(studentInfo);

                                 tabbedPane.addTab("Student Grade",studentGradePanel);
                                 studentGradePanel.setLayout(new GridLayout(5,2,5,5));
                                 studentGradePanel.add(new JLabel("Enter Student ID: "));
                                 studentGradePanel.add(studentID2);
                                 studentGradePanel.add(submitID2);
                                 studentGradePanel.add(new JLabel("Student Grade:"));
                                 studentGradePanel.add(studentGrade);

                                 tabbedPane.addTab("Passed Student",numberPassedPanel);
                                 numberPassedPanel.setLayout(new GridLayout(2,2,5,5));
                                 numberPassedPanel.add(new JLabel("Number of Student Passed: "));
                                 numberPassedPanel.add(studentPassed);

                                 tabbedPane.addTab("Class Topper",classTopperPanel);
                                 classTopperPanel.setLayout(new GridLayout(2,2,5,5));
                                 classTopperPanel.add(new JLabel("Here are the class Toppers: "));
                                 classTopperPanel.add(studentTopper);

                                 tabbedPane.addChangeListener(this);
                                 getContentPane().add(tabbedPane,"Center");

                                 statusLabel.setText("Status: Normal");
                                 getContentPane().add(statusLabel,"South");

                                 setVisible(true);

                }

                public static void main(String args[])
                {
     ProjectX outputScreen = new ProjectX("Case Study");
                }

                public String setStudentInfo()
                {
                                 int id = studentDetails.addStudent(studentName.getText(),
Integer.parseInt(physicsMarks.getText()),
Integer.parseInt(biologyMarks.getText()),
Integer.parseInt(mathsMarks.getText()));
                                 return                                                                    ("
"                                                                                                                                                                              +
                                                                                                                                        line                                                                                                                                                                            +
                                                                                                                                        "Record Created For " + studentName +
                                                                                                                                        "
"                                                                                                                                                                            +
                                                                                                              "Student ID: " + id                                                                                       +
                                                                                                                                        "
"                                                                                                                                                                                            +
                                                                                                                                        line                                                                                                                                                                                            );
                }

                public String getStudentInfo()
                {
                                 int id = Integer.parseInt(studentID1.getText());
                                 if(studentDetails.getStudentDetails(id))
                                 return                                                                    ("
"                                                                                                                                                                            +
                                                                                                                                        line                                                                                                                                                            +
                                                                                                                                        "Student Details
"                                                                                                                                 +
                                                                                                              line                                                                                                                                                               +
                                                                                                                                        "Student ID:" + "	" + id + "
"                                                                                      +
                                                                                                                                        "Student Name:" + "	" + studentDetails.studentName + "
"   +
                                                                                                                                        "Physics Marks:" + "	" + studentDetails.physicsMarks + "
" +
                                                                                                                                        "Biology Marks:" + "	" + studentDetails.biologyMarks + "
" +
                                                                                                                                        "Maths Marks:" + "	" + studentDetails.mathsMarks + "
"                    +
                                                                                                                                        line                                                                                                                                                                                                                                                                                                          );
                                 else
                                 return("
 Records Not Found for ID " + id);
                }

                public String getStudentGrade()
                {
                                 int id = Integer.parseInt(studentID2.getText());
                                 studentDetails.getStudentDetails(id);
                                 String grade;
                                 if(studentDetails.studentName == null)
                                 {
                                                  System.out.println("
 Records Not Found for ID " + id);
                                                  return null;
                                 }
                                 if(studentDetails.physicsMarks < passMarks ||
studentDetails.biologyMarks < passMarks || studentDetails.mathsMarks <
passMarks)
                                 {
                                                  grade = "Failed";
                                 }
                                 else
                                 {
                                                  int avgMarks = (studentDetails.physicsMarks +
studentDetails.biologyMarks + studentDetails.mathsMarks)/3;
                                                  if(avgMarks >= passMarks && avgMarks < secondClass) grade = "Pass
Class";
                                                  else if(avgMarks >= secondClass && avgMarks < firstClass) grade =
"Second Class";
                                                  else if(avgMarks >= firstClass && avgMarks < topScore) grade = "First
Class";
                                                  else grade = "Distinction";
                                 }
                                 return(line + "Grade For " + studentDetails.studentName + " is " + grade
+ "
" + line);
                }

                public String getNumberPasses()
                {
                                 int lastID = Registration.getNextID() -1;
                                 boolean passed = true;
                                 int numberPassed = 0;
                                 for(int id = 1; id <= lastID; id++)
                                 {
                                                  studentDetails.getStudentDetails(id);
                                                  if(studentDetails.physicsMarks >= passMarks &&
studentDetails.biologyMarks >= passMarks && studentDetails.mathsMarks >=
passMarks) numberPassed++;
                                 }
                                 return(line + "Number of Student Passed: " + numberPassed + "
" +
line);
                }

                public String getClassTopper()
                {
                                 int lastID = Registration.getNextID() -1;
                                 String classTopper;
                                 StringBuffer buffer = new StringBuffer(500);
                                 int topMarks = 0;
                                 for(int id = 1; id <= lastID; id++)
                                 {
                                                  studentDetails.getStudentDetails(id);
                                                  int studentMarks = studentDetails.physicsMarks +
studentDetails.biologyMarks + studentDetails.mathsMarks;
                                                  if(studentMarks > topMarks) topMarks = studentMarks;
                                 }
                                 buffer.append(line + "Student Having Top Marks: 
");
                                 for(int id = 1; id <= lastID; id++)
                                 {
                                                  studentDetails.getStudentDetails(id);
                                                  int studentMarks = studentDetails.physicsMarks +
studentDetails.biologyMarks + studentDetails.mathsMarks;
                                                  if(studentMarks == topMarks)
                                                  {
                                                                   buffer.append(studentDetails.studentName + " Having Total Marks: " +
topMarks + "
");
                                                  }
                                 }
                                 buffer.append(line);
                                 return(buffer.toString());
                }

                public void stateChanged(ChangeEvent e)
                {
                                 switch(tabbedPane.getSelectedIndex())
                                 {
                                                  case 3: studentPassed.setText(getNumberPasses());
                                                                                      break;
                                                  case 4: studentTopper.setText(getClassTopper());
                                                                                      break;
                                 }
                }

                public void actionPerformed(ActionEvent e)
                {
                                 if(e.getSource() == submitID1)
                                 {
                                                  studentInfo.setText(getStudentInfo());
                                 }
                                 else if(e.getSource() == submitID2)
                                 {
                                                  studentGrade.setText(getStudentGrade());
                                 }
                                 if(e.getSource() == submitDetails)
                                 {
                                                  setStudentInfo();
                                 }
                }

}


//Registration Class
class Registration
{
                private int topScore = 90;
                private int passMarks = 35;
                private int firstClass = 65;
                private int secondClass = 45;
                private static String idFile = "id.dat";
                private static String studentFile = "studentfile.dat";

                public int id;
                public String studentName;
                public int physicsMarks;
                public int biologyMarks;
                public int mathsMarks;

                public int addStudent(String studentName, int physicsMarks, int
biologyMarks, int mathsMarks)
                {
                                 int id = 0;
                                 try
                                 {
                                                  FileWriter fileOutput = new FileWriter(Registration.studentFile,true);
                                                  id = Registration.getNextID();
                                                  String buffer = id + "|" + studentName + "|" + physicsMarks + "|" +
biologyMarks + "|" + mathsMarks + "
";
                                                  fileOutput.write(buffer);
                                                  fileOutput.close();
                                                  Registration.setID(id);
                                 }
                                 catch(IOException e)
                                 {
                                                  System.err.println(e.toString());
                                                  System.exit(1);
                                 }
                                 return id;

                }

//Function to get the details of a student given the ID
                public boolean getStudentDetails(int id)
                {
                                 try
                                 {
                                                  FileReader fileInput = new FileReader(Registration.studentFile);
                                                  BufferedReader br = new BufferedReader(fileInput);
                                                  {

                                                                   String str;
                                                                   while((str = br.readLine()) != null)
                                                                   {
                                                                                    StringTokenizer fields = new StringTokenizer(str,"|");
                                                                                    if(Integer.parseInt(fields.nextToken()) == id)
                                                                                    {
                                                                                                     this.id = id;
                                                                                                     this.studentName = fields.nextToken();
                                                                                                     this.physicsMarks = Integer.parseInt(fields.nextToken());
                                                                                                     this.biologyMarks = Integer.parseInt(fields.nextToken());
                                                                                                     this.mathsMarks = Integer.parseInt(fields.nextToken());
                                                                                                     return true;
                                                                                    }
                                                                   }
                                                  }

                                 }

                                 catch(IOException e)
                                 {
                                                  System.err.println(e.toString());
                                                  System.exit(1);
                                 }

                                 return false;
                }

                public int getTopScore()
                {
                                 return topScore;
                }

                public int getPassMarks()
                {
                                 return passMarks;
                }

                public int getFirstClass()
                {
                                 return firstClass;
                }

                public int getSecondClass()
                {
                                 return secondClass;
                }

//Function to get the next ID available
                public static int getNextID()
                {
                                 int id = 0;
                                 try
                                 {
                                                  RandomAccessFile studentIDFile = new
RandomAccessFile(Registration.idFile,"rw");
                                                  if(studentIDFile.length() == 0)
                                                  {
                                                                   id = 0;
                                                  }
                                                  else id = studentIDFile.readInt();
                                                  id++;
                                                  studentIDFile.close();
                                 }

                                 catch(IOException e)
                                 {
                                                  System.err.println(e.toString());
                                                  System.exit(1);
                                 }
                                 return id;
                }

//Function to Store current ID in a file
                public static void setID(int id)
                {
                                 try
                                 {
                                                  RandomAccessFile studentIDFile = new
RandomAccessFile(Registration.idFile,"rw");
                                                  studentIDFile.seek(0);
                                                  studentIDFile.writeInt(id);
                                                  studentIDFile.close();
                                 }

                                 catch(IOException e)
                                 {
                                                  System.err.println(e.toString());
                                                  System.exit(1);
                                 }
                }
}
