Software Requirements Specification
For
  EXAM REGISTRATION SYSTEM
                 BY
     AKSHIMA S (963622104017)
     ARTHIHA S (963622104021)
GEETHU KRISHNA G R (963622104025)
                                            CONTENTS
1 Introduction
      1.1Purpose
      1.2 Scope
2 General Description
      2.1System Overview
      2.2 System Objectives
      2.3 System Features
      2.4 System Benefits
3 Functional Requirement
      3.1User Management
      3.2 Exam Management
      3.3 Exam Registration
      3.4 Payment Gateway Integration
      3.5 Reporting
4. Interface Requirement
      4.1 User Interface
      4.2 Hardware Interface
      4.3 Software Interface
      4.4 Communication Interface
5. Design Constraints
6. Code Implementation
      6.1Sample output
7. Other Non Functional Requirements
      7.1 Performance Requirement
      7.2 Security and Safety Requirement
      7.3 Business Rules
8. Appendices
      i) Definitions, Acronyms, Abbrevations
      ii) Reference
1. Introduction
        Examination used to test the understand ability of the student and his ability to recollect it, using
it in apt situation, reasoning and analytics. Now a days , instead of conducting examination in papers,
mostly everything is done in on line. Starting from question paper setting and till the report of statistical
score is submitted in online. Hence, we have developed an automatic exam registration system.
1.1 Purpose
       The purpose of this document is to outline the requirements for the exam registration system.
1.2 Scope
       The Exam registration system will allow students to register for exam online, and administrators
to manage exam registrations, student information and exam schedules.
2 General Description
2.1 System Overview
        The exam registration system is web – based application design to facilitate the registration
process for exam.The system aims to provide a user-friendly and efficient way for students to register
for exams, while also enabling administrators to manage exam schedule, student information, and
registration data.
2.2 System Objectives
       The Primary objectives of the exam registration are:
                    To provide a secure and reliable platform for students to register for exams
                     online.
                    To enable asdministrators to manage exam schedules, student information and
                     registration data efficienctly.
                    To automate the registration process, reducing manual errors and increasing
                     productivity.
                    To provide real-time updates and notifications to students and the administrators.
2.3 System Features:
       The exam registration system will offer the following key features:
                    Student Register and login functionality.
                    Exam Registration, Management, including registration status ana payment
                     tracking.
                    Automated email notifications for registration conformations, payment receipts
                     and exam remainders.
                    Reporting and analytics for administration data and exam performance.
2.4 System Benefits:
         The Exam registration system will provide numerous benefits to students, administrators and
institutions, including:
                  Improved efficiency and productivity in the productivity in the registration
                   process.
                  Enchanced user Experience through a user-friendly and intutitive interface.
                  Increased accurancy and reduced manual errors.Real-time updates and
                   notifications for students and administrators.
                  Better decision-making through data-driven insights and analytics.
3.Functional Requirements
3.1 User Management
                  The System shall allow admins to create ,update,and delete student accounts.
                  The System shall allow students to register for an account using their name,email
                   and password.
                  The System shall send a confirmation email to students upon registration.
3.2 Exam Management
                   The System shall admins to create,update, and delete exam schedules.
                   The System shall allow admins to assignexams to specific students or student
                    groups.
                   The System shall display exam schedules and details to students.
3.3 Exam Registration
                   The System shall allow students to view available exam and register for exams.
                   The System shall prevent students from registering for the same exam multiple
                    times.
                   The System shall display registration confirmation to students.
3.4 Payment Gateway Integration
                   The System shall integrate with a payment gateway to allow students to pay
                    exam fees online.
                   System shall handle payment processing and update student records accordingly.
3.5 Reporting
                   The System shall generate reports on exam registrations ,student information and
                    exam schedules.
                   The System shall allow admins to customize report filters and parameters.
4.Interface Requirement
4.1 User Interface
            The system have a web-based interface.
            The System shall be compatible with major web browsers(Google Chrome,Mozilla
             Firefox,Safari).
            The System shall be optimized for desktop and laptop devices.
4.2 Hardware Interface
             The System shall be compatible with standard computer hardware.
             The shall not require any specialized hardware.
4.3 Software Interface
       Software interface design for the Exam Registration system includes:
             Student Interface:Login Page,Dashboard,Exam Registration Page,Exam Schedule
              Page,Account Settings Page.
             Adminstration Interface:Login page,Dashboard,Exam Schedule Management
              Page,Student Management Page and System configuration Page.
             Payment Gateway Interface: It includes Payment Processing page.
             Reporting and Analytics Interface:Registration report page and exam performance.
4.4 Communications Interfaces
       The communication between the different parts of the system is important since they depend on
each other. However, in what way the communication is achieved is not important for the system and is
therefore handled by the underlying operating systems for both the application and the web portal.
Required protocols - HTTPS, FTP etc.
5.Design Constraints
USECASE DIAGRAM:
        It defines scenarios what are the functions used in the project and mention the participant or
actors involved in project and it should be a verb. Use case is represented as an eclipse with a name
inside it. It may contain additional responsibilities.
                                  Fig: Usecase Diagram
ACTIVITY DIAGRAM:
      An Activity diagram shows sequential and parallel activities in a process they are useful for
modeling business process
Authenticate
                                                                                              Fig :
                                                                                              Activity
                                                                                              Diagram
                                                                                              to
Authenticate
Take Test
Fig: Activity Diagram to take result
View Result
              Fig : Activity Diagram to View result
UML CLASS DIAGRAM:
         It includes class diagrams to illustrate classes, interfaces and their associations .They are used
for static object modeling.
                            Fig : UML Class Diagram
UML INTERACTION DIAGRAM:
Sequence Diagram:
       Sequence diagrams are used as a notation that can illustrate actor interactions and the
operations initiated by them.
Interaction Diagram
                                                                                               Fig :
                                                                                               Sequence
                                                                                               Diagram
COMMUNICATION DIAGRAM
       Communication diagram is another form of interaction diagram. It represents the structural
organization of a system and the messages sent/received. Structural organization consists of objects and
links.
        The purpose of communication diagram is similar to sequence diagram. But the specific purpose
of collaboration diagram is to visualize the organization of objects and their interaction.
                      Fig: Communication Diagram
UML STATE MACHINE DIAGRAM:
       Any real time system is expected to be reacted by some kind of internal/external events. These
events are responsible for state change of the system.
       State machine diagram is used to represent the event driven state change of a system. It basically
describes the state change of a class, interface etc.
Login
                                                                                                            Fig :
                      Fig: State Machine Diagram For Login
       Fig : State Machine Diagram to take test
UML COMPONENT DIAGRAM:
       Component diagrams are used to describe the physical artifacts of a system. This artifact
includes files, executables, libraries etc.
                             Fig : Component Diagram
DEPLOYMENT DIAGRAM:
       Deployment diagrams are used to visualize the topology of the physical components of a system
where the software components are deployed. So deployment diagrams are used to describe the static
deployment view of a system. Deployment diagrams consist of nodes and their relationships.
                                  Fig : Deployment Diagram
6. Code Implementation
Java Implementation :
import java.lang.*;
import java.util.Set;
import javax.swing.*;
/**
* @author ita1143
 * @generated "UML to Java V5.0
(com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
*/
public class System {
       /**
       * @generated "UML to Java V5.0
(com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)”
*/
private static Student student;
/**
* @uml.annotations for <code>examiner</code>
*     collection_type="Examiner"
 * @generated "UML to Java V5.0
(com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)” */
private static Set<Examiner> examine
private static LoginForm loginForm;
public static boolean Authenticate(int type, String id, String password) {
if(type == 2) {
if(id.equals("Kirupakaran") && password.equals("qwerty")) {
student = new Student()
StudentMainForm.init(student);
loginForm.setVisible(false);
}
}
else if(type == 1) {
                         if(id.equals("Kirupakaran") && password.equals("12345")) {
                                  Examiner e1 = new Examiner();
                                 ExaminerMainForm.init(e1);
        loginForm.setVisible(false);
                         }
                  }
                  return false;
        }
        public static void main(String[] args) {             SwingUtilities.invokeLater(new Runnable()
{
                         public void run() {
                              loginForm = new LoginForm();
        loginForm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        loginForm.setVisible(true);
                  }
        }
        }
}
LoginForm.Java:
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.Insets;
import java.awt.Rectangle;
import javax.swing.JRadioButton;
import javax.swing.JButton;
import javax.swing.JPasswordField;
public class LoginForm extends JFrame {
       private static final long serialVersionUID = 1L;
       private JPanel jContentPane = null;
       private JPanel panel = null;
       private JLabel login = null;
       private JTextField loginField = null;
       private JLabel pwd = null;
       private JRadioButton studentRadiobtn = null;
       private JLabel jLabel = null;
       private JRadioButton examinerRadiobtn = null;
       private JLabel jLabel1 = null
       ;private ButtonGroup bg1
       ;private JButton submit = null
       ;private JPasswordField pwdField;/**
        * This method initializes panel
        *
        * @return javax.swing.JPanel
        */
       private JPanel getPanel() {
       if (panel == null) {
                      panel = new JPanel();
                      panel.setLayout(new GridBagLayout());
                      panel.setBounds(new Rectangle(292, 16, 0, 150));
              }
              return panel;
       }
       /**
        * This method initializes loginField
        *
        * @return javax.swing.JTextField
        */
       private JTextField getLoginField() {
               if (loginField == null) {
                        loginField = new JTextField(50);
                        loginField.setBounds(new Rectangle(134, 58, 133, 22));
               }
               return loginField;
       }
        /**
         * This method initializes submit
         *
         * @return javax.swing.JButton
         */
        private JButton getSubmit() {
                if (submit == null) {
                        submit = new JButton("Login");
                        submit.setBounds(new Rectangle(169, 195, 66, 28));
                        submit.addMouseListener(new java.awt.event.MouseAdapter() {
                               public void mouseClicked(java.awt.event.MouseEvent e) {
                                       if(studentRadiobtn.isSelected())
                                                System.Authenticate(2, loginField.getText(),
String.valueOf(pwdField.getPassword()));
                                       else if(examinerRadiobtn.isSelected())
                                                System.Authenticate(1, loginField.getText(),
String.valueOf(pwdField.getPassword()));
                                       //System.out.println("mouseClicked()"); // TODO Auto-generated
Event stub mouseClicked()
                               }
                        });
                }
                return submit;
        }
       /**
        * This is the default constructor
        */
public LoginForm() {
       super();
       initialize();
}
/**
 * This method initializes this
 *
 * @return void
 */
private void initialize() {
        this.setSize(448, 321);
        this.setContentPane(getJContentPane());
        this.setTitle("Login");
}
/**
 * This method initializes jContentPane
 *
 * @return javax.swing.JPanel
 */
private JPanel getJContentPane() {
        if (jContentPane == null) {
                jLabel1 = new JLabel();
                jLabel1.setBounds(new Rectangle(261, 157, 74, 26));
                jLabel1.setText("Examiner");
                jLabel = new JLabel();
                jLabel.setBounds(new Rectangle(134, 157, 61, 27));
                jLabel.setText("Student");
                pwd = new JLabel();
                pwd.setBounds(new Rectangle(55, 107, 70, 16));
                pwd.setText("Password");
                login = new JLabel();
                login.setText("Login ID");
                login.setBounds(new Rectangle(55, 61, 59, 16));
                jContentPane = new JPanel();
              studentRadiobtn = new JRadioButton();
              studentRadiobtn.setBounds(new Rectangle(104, 157, 21, 21));
              studentRadiobtn.setSelected(true);
              examinerRadiobtn = new JRadioButton();
              examinerRadiobtn.setBounds(new Rectangle(226, 154, 17, 24));
              bg1 = new ButtonGroup();
              bg1.add(studentRadiobtn);
              bg1.add(examinerRadiobtn);
              jContentPane.setLayout(null);
              jContentPane.add(login, null);
              jContentPane.add(getPanel(), null);
                    jContentPane.add(getLoginField(), null);
                    jContentPane.add(pwd, null);
                    jContentPane.add(studentRadiobtn, null);
                    jContentPane.add(jLabel, null);
                    jContentPane.add(examinerRadiobtn, null);
                    jContentPane.add(jLabel1, null);
                    jContentPane.add(getSubmit(), null);
                    pwdField = new JPasswordField();
                    pwdField.setBounds(134, 105, 133, 21);
                    jContentPane.add(pwdField);
             }
             return jContentPane;
      }
StudentMainForm.java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class StudentMainForm extends JFrame {
      private JPanel contentPane;
      /**
       * Launch the application.
       */
      public static void init(final Student student) {
              EventQueue.invokeLater(new Runnable() {
                      public void run() {
                               try {
                                       StudentMainForm frame = new StudentMainForm(student);
                                       frame.setVisible(true);
                               } catch (Exception e) {
                                       e.printStackTrace();
                               }
                      }
              });
      }
      /**
       * Create the frame.
       */
      public StudentMainForm(Student s) {
             setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
             setBounds(300, 300, 500, 309);
             contentPane = new JPanel();
             contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
             setContentPane(contentPane);
             contentPane.setLayout(null);
             JLabel lblWelcome = new JLabel("Welcome " + s);
             lblWelcome.setBounds(20, 11, 159, 14);
             contentPane.add(lblWelcome);
             JLabel lblSelectAnOption = new JLabel("Select an Option");
             lblSelectAnOption.setBounds(30, 44, 115, 14);
             contentPane.add(lblSelectAnOption);
             JButton btnWriteExam = new JButton("Write Exam");
             btnWriteExam.setBounds(56, 95, 123, 23);
             contentPane.add(btnWriteExam);
             JButton btnSeeMarks = new JButton("See Marks");
             btnSeeMarks.setBounds(56, 152, 123, 23);
             contentPane.add(btnSeeMarks);
             btnWriteExam.addMouseListener(new java.awt.event.MouseAdapter() {
                    public void mouseClicked(java.awt.event.MouseEvent e) {
                            WriteExamForm f = new WriteExamForm();
                            f.setVisible(true);
                    }
             });
             JButton btnEnrollInAnother = new JButton("Enroll in another course");
             btnEnrollInAnother.setBounds(254, 95, 171, 23);
             contentPane.add(btnEnrollInAnother);
             JButton btnNewButton = new JButton("Check Study Materials");
             btnNewButton.setBounds(254, 152, 171, 23);
             contentPane.add(btnNewButton);
      }
}
WriteExamForm.java:
import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Rectangle;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import java.awt.Dimension;
import javax.swing.JButton;
public class WriteExamForm extends JFrame {
      private static final long serialVersionUID = 1L;
      private JPanel jContentPane = null; // @jve:decl-index=0:visual-constraint="197,61"
      private JLabel jLabel = null;
      private JLabel jLabel1 = null;
      private JRadioButton ans11 = null;
      private JRadioButton ans12 = null;
      private JRadioButton ans13 = null;
      private JRadioButton ans14 = null;
      private JLabel jLabel2 = null;
      private JLabel jLabel3 = null;
      private JLabel jLabel4 = null;
      private JLabel jLabel5 = null;
      private JButton Submit = null;
       /**
        * This is the default constructor
        */
       public WriteExamForm() {
               super();
               initialize();
       }
       /**
        * This method initializes this
        *
        * @return void
        */
       private void initialize() {
               this.setSize(500, 500);
               this.setContentPane(getJContentPane());
               this.setTitle("JFrame");
       }
       /**
        * This method initializes jContentPane
        *
        * @return javax.swing.JPanel
        */
       private JPanel getJContentPane() {
               if (jContentPane == null) {
                       jLabel5 = new JLabel();
              jLabel5.setBounds(new Rectangle(242, 229, 105, 16));
              jLabel5.setText("Bjarne Stroustrup");
              jLabel4 = new JLabel();
              jLabel4.setBounds(new Rectangle(102, 229, 87, 16));
              jLabel4.setText("Bill Gates");
              jLabel3 = new JLabel();
              jLabel3.setBounds(new Rectangle(242, 170, 106, 16));
              jLabel3.setText("
              jLabel2 = new JLabel();
              jLabel2.setBounds(new Rectangle(102, 170, 89, 16));
              jLabel2.setText("Dennis Ritchie");
              jLabel1 = new JLabel();
              jLabel1.setBounds(new Rectangle(52, 70, 280, 55));
              jLabel1.setText("Who developed C?");
              jLabel = new JLabel();
              jLabel.setBounds(new Rectangle(36, 31, 87, 16));
              jLabel.setText("Questions");
              ButtonGroup bg1 = new ButtonGroup();
              bg1.add(ans11);
              bg1.add(ans12);
              bg1.add(ans13);
              bg1.add(ans14);
              jContentPane = new JPanel();
              jContentPane.setLayout(null);
              jContentPane.setSize(new Dimension(490, 464));
              jContentPane.add(jLabel, null);
              jContentPane.add(jLabel1, null);
              jContentPane.add(getAns11(), null);
              jContentPane.add(getAns12(), null);
              jContentPane.add(getAns13(), null);
              jContentPane.add(getAns14(), null);
              jContentPane.add(jLabel2, null);
              jContentPane.add(jLabel3, null);
              jContentPane.add(jLabel4, null);
              jContentPane.add(jLabel5, null);
              jContentPane.add(getSubmit(), null);
       }
       return jContentPane;
}
/**
 * This method initializes ans1
 *
 * @return javax.swing.JRadioButton
 */
private JRadioButton getAns11() {
        if (ans11 == null) {
                ans11 = new JRadioButton();
               ans11.setBounds(new Rectangle(72, 170, 21, 21));
       }
       return ans11;
}
/**
 * This method initializes ans12
 *
 * @return javax.swing.JRadioButton
 */
private JRadioButton getAns12() {
        if (ans12 == null) {
                ans12 = new JRadioButton();
                ans12.setBounds(new Rectangle(214, 170, 21, 21));
        }
        return ans12;
}
/**
 * This method initializes ans13
 *
 * @return javax.swing.JRadioButton
 */
private JRadioButton getAns13() {
        if (ans13 == null) {
                ans13 = new JRadioButton();
                ans13.setBounds(new Rectangle(72, 229, 21, 21));
        }
        return ans13;
}
/**
 * This method initializes ans14
 *
 * @return javax.swing.JRadioButton
 */
private JRadioButton getAns14() {
        if (ans14 == null) {
                ans14 = new JRadioButton();
                ans14.setBounds(new Rectangle(214, 229, 21, 21));
        }
        return ans14;
}
/**
 * This method initializes Submit
 *
 * @return javax.swing.JButton
 */
private JButton getSubmit() {
             if (Submit == null) {
                     Submit = new JButton();
                     Submit.setBounds(new Rectangle(177, 299, 105, 44));
                     Submit.setText("Submit");
                     Submit.addMouseListener(new java.awt.event.MouseAdapter() {
                            public void mouseClicked(java.awt.event.MouseEvent e) {
                                    int x;
                                    if(ans11.isSelected())
                                           x = 1;
                                    else
                                           x = 0;
                                    System.EvaluateResult(x);
                            }
                     });
             }
             return Submit;
      }
ExaminerMainForm.java:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;
public class ExaminerMainForm extends JFrame {
      private JPanel contentPane;
      /**
       * Launch the application.
       */
      public static void init(final Examiner e) {
              EventQueue.invokeLater(new Runnable() {
                      public void run() {
                               try {
                                       ExaminerMainForm frame = new ExaminerMainForm(e);
                                       frame.setVisible(true);
                               } catch (Exception e) {
                                       e.printStackTrace();
                               }
                      }
              });
      }
    /**
     * Create the frame.
     */
    public ExaminerMainForm(Examiner examiner) {
           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           setBounds(100, 100, 450, 300);
           contentPane = new JPanel();
           contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
           setContentPane(contentPane);
           contentPane.setLayout(null);
          JLabel lbl = new JLabel("Welcome " + examiner);
          lbl.setBounds(21, 11, 201, 14);
          contentPane.add(lbl);
          JButton feedbtn = new JButton("Feed Questions");
          feedbtn.setBounds(66, 36, 177, 30);
          contentPane.add(feedbtn);
          JButton checkStatusbtn = new JButton("Check Result Status");
          checkStatusbtn.setBounds(66, 107, 177, 30);
          contentPane.add(checkStatusbtn);
    }
}
6.1 Sample Output:
            Fig : Output Screenshot for Login
            Fig : Output screenshot to select option
Fig : Output screenshot to write test
Fig : Output Screenshot to view scores
                       Fig : output screenshot to check result
7.Other Nonfunctional Requirements
7.1Performance Requirements
         Performance requirements define acceptable response times for system functionality.
                            The load time for user interface screens shall take no longer than two
                             seconds.
                            The log in information shall be verified within two seconds.
                            Queries shall return results within five seconds.
7.2Security and Safety Requirements
       Security: The files in which the information regarding securities and portfolios should be
secured against malicious deformations.
       Safety: Data should not become corrupted in case of system crash or power failure.
7.3 Business Rules
        Server Administrator: under extreme circumstances the administrator has the privileges to back
up the data’s but can’t modify the contents.
        User: has the rights to claim the payment made if the ticket is under waiting list on the date of
the journey but 10% will be deducted. The user will be able to book for just 6 persons at a time.
.8.Appendices
i)Definitions, Acronyms, Abbrevations
       Admin:Administrator
       Exam:Examination
       Student:User registering for Exams
ii)Reference
       From website “Scribd, SRS On Online Exam Registration System ”.