Download as pdf or txt
Download as pdf or txt
You are on page 1of 65

!

!
!
Cambridge International AS and A Level Computing
Advanced Level
Unit 9691/04: Computing Project

!
!
Examination Series: June 2014
Project Name:

BBS Grading System

Candidate Name:

Evan Putra Limanto

Candidate Number:

2402

Centre Name:

Bina Bangsa School

Centre Number:

ID047

!
!
!
!
!
Page 1 of 65

Table of Contents

(a) De'inition, investigation and analysis . 3



(i) De'inition nature of the problem ... 3

(ii) Investigation and Analysis . 5


(b) Design

(i) Nature of the solution .. 9

(ii) Intended bene'its ... 37

(iii) Limit of the scope of the solution . 37

(c) Software development, programming, testing and installation



(i) Development . 39

(ii) Programming ... 43

(iii) Testing .. 55

(iv) Installation . 57

(d) Documentation

(i) Systems maintenance documentation ... 59

(ii) User documentation . 61

(e) Evaluation

(i) Discussion of the degree of success in meeting the original objectives .. 64

(ii) Evaluate the clients and users response to the system .. 65

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

Page 2 of 65

Definition, Investigation and Analysis


!
i. Definition Nature of the problem solved

Description of the Organisation


The organization is Bina Bangsa School(BBS) Kebun Jeruk Campus, a
growing and vibrant secondary school located in West Jakarta, Indonesia.
Established in 2001, BBS has quickly distinguished itself for its academic
excellence.

Bina Bangsa School is an international school based in Jakarta, which uses the
Cambridge O-Levels and A-Levels curriculum as its basis for teaching.

The typical academic year consists of 4 terms. For all terms, the grades will
consist of tests, quizzes, and homework. In addition to these, term 2 includes
grades from the Mid Year Exam, and term 4 includes grades from the Final
Year Exam.

The teachers of the school will be the end users for this project. It aims to
improve the system used for inputting and managing student grades, and the
generation of student progress reports (Term 1 and Term 3) and report cards
(Term 2 and Term 4).

Methods currently in use


The teachers in BBS currently use Spreadsheet Software to manage student
grades. Every teacher creates his/her own grading system in Excel from
ground up. Individual student data and marks are keyed in manually into the
tables. The final average grades for each student are then calculated using
predefined formulas, and these are sent to the administration ocers for
printing. Finally, mail merge is used by the ocers to manually insert the
student names, classes and grades into a pre-designed form to be printed for
each student.

Origin of the data


The data come from all the student assignments, quizzes and tests that they
submit. These paperwork are then graded by teachers, and their grades
inputted into the spreadsheets. The lists of students, teachers, and classes will
Page 3 of 65

be provided by the administration ocers for the teachers to make use of. This
data is created at the beginning of each academic year, when enrolment
commences.

!
!

Form the data takes


After each assignment and assessment has been graded, the teacher records
the grades in a book which each teacher owns. At the end of each week, these
marks will be input into spreadsheets. Each of them already contains the list of
students for each subject class the teacher is teaching, and the formulas
required to compute the final grade.

Page 4 of 65

ii. Investigation and Analysis

Investigation
The purpose of the investigation is to collect detailed information regarding the

current system in use, and the improvements that need to be made to the
system. An interview will be conducted to obtain this information. The
interviewee is Ms Ine Medyawati, a chemistry teacher and the head of the
Exam Committee. She manages the whole process of reviewing, mail merging
and printing the grade reports for each student.

Letter requesting for interview to be conducted

!
Dear Ms Ine,
!

I would like to schedule an interview with you this Thursday, 25th of April. The
interview will consist of questions regarding the current grading system in use by
the teachers, and the planned new system that I am going to build. Thank you.

Regards,
Evan Putra Limanto

Interview conducted on 25 April 2013


Participants : Evan(Interviewer), Ms Ine(Teacher/Interviewee)

Evan: Can you give an outline of how the current system works?
Ms Ine: At the beginning of every academic year, we create a standard
spreadsheet template which already contains formulas that will allow us to
easily calculate the final grades that are required. Student grades that will be
input consist of homework, quizzes, tests, and practical exams (for laboratory
sciences). We update our spreadsheet files everyday. At the end of each term,
every teacher will need to submit his/her spreadsheet files to the
administration ocer. Mail merge is used to generate the grade reports for
students in each class. I will then supervise the printing process for the grade
reports. Finally, these will be distributed to the students through the form
teachers of each class.
Evan: Can you explain more about the mail merge process?
Ms Ine: Yes. I am in charge of the entire process. First, we will generate grade
report templates for each class, which contain predefined fields for us to merge
Page 5 of 65

data from spreadsheets. Every subject that each class takes will be included in
these templates. Then, mail merge software will be used to insert the student
name, class name, student ID, final grades, remarks and conduct into the grade
reports. This process is repeated for every class, so it is extremely tedious and
repetitive.
Evan: What methods of validation and verification are used to ensure that the
data input are entirely correct?
Ms Ine: Every time we input student grades, we double check with the paper
records to ensure that the values in the spreadsheet match with those in our
grade books. Once all the marks for each student has been collected over a
term, each of us look through all the individual records to ensure that there is
no missing information or spelling error. Also, the spreadsheet software helps
us to validate the marks, classes and student data by ensuring that they are in
the correct format.
Evan: What methods of security are used to ensure that other people are not
able to manipulate or view the grades?
Ms Ine: Every spreadsheet that contains student grades is protected by a
password. This ensures that no one but teachers is able to access these files to
modify or read the grades.
Evan: Are the spreadsheets backed up in case of a data corruption or loss?
Ms Ine:
Evan: What do you think are the major problems in using the current system?
Ms Ine: In my opinion, the whole process is too exhaustive. The processes of
data input, creating formulas, generating templates and printing the report
cards are too exhaustive and repetitive. If these were automated, it would save
us a lot of time.
Evan: What do you think are the necessary improvements that need to be
made to the current system?
Ms Ine: In my opinion, we need a new system which automates the input of
grades and generation of grade reports. Mail merging and the generation of
templates should be the primary features of this system.

!
!
!
!
!
!
!

Page 6 of 65

Flowchart showing the topological order of the system processes

TEACHER
GENERATES GRADE
REPORTS FROM
TEMPLATES

START

STUDENTS SUBMIT
QUIZ/ASSIGNMENT/
TEST

TEACHER SUBMIT
REPORTS TO
ADMINISTRATION
OFFICER FOR PRINTING

TEACHER INPUTS
GRADE INTO
SPREADSHEET

IS TODAY
REPORT PRINTING
DAY?

GRADE REPORTS ARE


PRINTED AND
DISTRIBUTED TO
STUDENTS

No

END

Yes

Page 7 of 65

Data Capture Method


There exist many methods used to capture and obtain the data required for the
current system. When new students enrol in Bina Bangsa School at the
beginning of every academic year, they fill their personal information in a
paper-based form. Their data is then input into a master spreadsheet file by the
school administration. Every time student data is needed, it is retrieved from
this file. For every assignment, test or quiz the student completes, a grade will
be recorded on the subject teachers grade book. He/She will then manually
input each of these marks into the spreadsheet file on her computer.

What works well ?


Currently, the process of generating grade reports is done in an orderly and
systematic manner. The use of spreadsheets to input and compute the final
grades ensures no errors in calculation albeit the arduous process involved.
Also, with visual checks done for the data, input errors are minimised.

What doesnt work well ?


Many parts of the current system need improving in terms of time eciency.
These include the creation of spreadsheets and grade report templates at the
beginning of each academic year. Also, having to use mail merge software to
insert data into the grade report templates for each class is a repetitive action
which can be reduced.

Hardware Requirements
Currently, all teachers have their own personal notebooks. Input methods
involve solely the keyboard and mouse, which are sucient.
As there are grade reports to be printed every academic term, the system will
be using the laser printer in the teachers room.

Software Requirements
The new system will have to be browser-based, to avoid operating system
compatibility issues. This will allow any browser-enabled device to use the new
system.

Requirement Specification
During the interview, Ms Ine specified certain aspects of the new system that
are to be present.

Page 8 of 65

Input Requirements
- Teachers will only be able to view and edit data for the subject classes they
are teaching.
- The administration ocers and the school principal will have full privileges
to modify and view any data excluding grades.
Processing Requirements
- System checks that all data are unique and are not repeated.
- Full validation checks on all inputs.
Output Requirements
- Grade reports generated every end of academic term, in the form of PDF
files.
- A summary page showing the final grades for each student in every class.
Miscellaneous Requirements
- A user-friendly interface, compatible with most browsers.

!
Design

i. Nature of the solution

Design Specification
The requirement specification has been agreed to by the end user. The following
design specification is how the requirements will be implemented into the new
system.
Input Requirement

Details

Teachers will only be able to view and edit


data for the subject classes they are
teaching.

Teachers will be assigned their own personal


accounts, which have pre-assigned privileges. This
is done by the administration officers who assign a
teacher to a specific subject class.

The administration ocers and the school


principal will have full privileges to modify
and view any data excluding grades.

They will have their own personal accounts that


will allow editing and viewing of all data, in addition
to the generation of grade reports.

Processing Requirements

Details

System checks that all data are unique and


are not repeated.

This will be implemented in the database system


using primary keys to ensure a unique ID for each
data record.

!
!

Page 9 of 65

Output Requirements

Details

Grade reports generated every end of


academic term, in the form of PDF files.

The administration officers and principals account


will be facilitated with a feature for the automatic
generation of all grade reports.

A summary page showing the final grades


for each student in every class.

The administration officers' and principal's account


have their home pages as the summary of average
final grades for each student.

!
Miscellaneous Requirements

Details

A user-friendly interface, compatible with


most browsers.

The Bootstrap framework will be used as a basis


for the new system, to ensure mobile-friendliness
and a clean, user-friendly design.

!
Data Flow Diagrams

!
!

1.1 Receive

Submit coursework

Teachers receive
assignments, tests and
quizzes from students

Student

Informa7on is stored in
spreadsheets

D1 Grades

Coursework

1.2 Input

Grade data

Teachers input grades


into spreadsheet files

1.3 Output
Student data

Teachers print out


grade reports

!
!
!
!
!
!
!
!
!
!

D2 Students

!
!

Page 10 of 65

!
Table Designs
!
CCA Table
Field Name

Field Type

Validation

Example

Origin

CCAID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

CCAName

Text

Required value.

Basketball

Entering it in the
CCA

Name of a class

Field Name

Field Type

Validation

Example

Origin

Use

ClassID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

ClassName

Text

Required value.

10 Automatic
following
creation of a
new CCA

Use
Automatically
generated
identification

Class Table

10 Automatic
following
creation of a
new class

Sec 2 Spurgeon

Entering it in the
Class form

Example

Origin

Automatically
generated
identification

Name of a class

Components Table
Field Name

Field Type Validation

ID

Number

Serial Number on
creation. Increments
from 1. Required
value. Unique, numeric
values only.

SubjectID

Number

Required value.
Numeric values only.

ComponentID

Number

Required value.
Numeric values only.

10 SubjectComponen ID of a subject
ts Table
component

ClassID

Number

Required value.
Numeric values only.

10 Class Table

ID of a class

TeacherID

Number

Required value.
Numeric values only.

10 Teacher Table

ID of a teacher

Name

Text

Required value.
Numeric values only.

10 Entering it in the
Components form

Name of a
component for a
specific subject
class
Page 11 of 65

10 Automatic
following creation
of a new class

Sec 2 Spurgeon Subject Table

Use
Automatically
generated
identification

ID of a subject

Form Teacher Table


Field Name

Field Type

Validation

Example

Origin

Use

TeacherID

Number

Required value.
Numeric values
only.

10 Teacher Table

ID of a teacher

ClassID

Number

Required value.
Numeric values
only.

10 Class Table

ID of a class

FYE (Final Year Exam) / MYE (Mid Year Exam) Table


Field Name

Field Type

Validation

Example

Origin

Use

ID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

10 Automatic
following
creation of a
new MYE / FYE

ID of a FYE /
MYE

StudentID

Number

Required value.
Numeric values
only.

10 Class Table

ID of a class

SubjectID

Number

Required value.
Numeric values
only.

10 Subject Table

ID of a subject

Grade

Number

Numeric values
only. Less than
or equal to 100.

58 Entering it in the
FYE form

Grade of a FYE /
MYE

NonAcademic Table
Field Name

Field Type

Validation

Example

ID

Number

Required value.
Numeric values
only.

10 Automatic
following
creation of a
new non
academic
subject

ID of a FYE /
MYE

StudentID

Number

Required value.
Numeric values
only.

10 Class Table

ID of a class

SubjectID

Number

Required value.
Numeric values
only.

10 Subject Table

ID of a subject

Grade

Character

Either A, B,
C, D, or E.

Origin

Entering it in the
Subject form

Use

Grade of a non
academic
subject

Page 12 of 65

Student Table
Field Name

Field Type

Validation

StudentID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

StudentName

Text

Required value.
Alphabetic
characters only.

Status

Text

Required value.
Either Active or
Inactive only.

Example

Origin
10 Automatic
following
creation of a
new student

John Doe

Use
ID of a FYE /
MYE

Entering it in the
Student form

Name of a
student

10 Entering it in the
Student form

Status of a
student

StudentCCA Table
Field Name

Field Type

Validation

Example

Origin

ID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

StudentID

Text

Required value.
Alphanumeric
characters only.

CCAID

Text

Required value.
Either Active or
Inactive only.

Grade1

Character

Either A, B,
C, D, or E.

Entering it in the
CCA form

CCA Grade of a
student in the
first semester

Grade2

Character

Either A, B,
C, D, or E.

Entering it in the
CCA form

CCA Grade of a
student in the
second
semester

10 Automatic
following
creation of a
new student

John Doe

Use
ID of a FYE /
MYE

Entering it in the
Student form

Name of a
student

10 Entering it in the
Student form

Status of a
student

!
!
!
!
!
!
!
Page 13 of 65

StudentClass Table
Field Name

Field Type

Validation

Example

Origin

Use

StudentID

Number

Required value.
Numeric values
only.

10 Student Table

ID of a student

ClassID

Number

Required value.
Numeric values
only.

10 Class Table

ID of a class

StudentFormClass Table
Field Name

Field Type

Validation

Example

Origin

Use

StudentID

Number

Required value.
Numeric values
only.

10 Student Table

ID of a teacher

Attendance1

Number

Numeric values
only.

10 Entering it in the
Form Class form

Attendance of
the student in
Semester 1

Attendance2

Number

Numeric values
only.

10 Entering it in the
Form Class form

Attendance of
the student in
Semester 2

Conduct1

Character

Either A, B,
C, D, or E.

Entering it in the
Form Class form

Conduct of the
student in
Semester 1

Conduct2

Character

Either A, B,
C, D, or E.

Entering it in the
Form Class form

Conduct of the
student in
Semester 2

MYERemark

Text

Alphanumeric
characters only.

John did a great


job this term!

Entering it in the
Form Class form

Remarks by the
form teacher for
the student in
Semester 1

FYERemark

Text

Alphanumeric
characters only.

John did a great


job this term!

Entering it in the
Form Class form

Remarks by the
form teacher for
the student in
Semester 2

!
!
!
!
!
!
!
!
!
Page 14 of 65

StudentGrades Table
Field Name

Field Type

Validation

Example

Origin

Use

ID

Number

Required value.
Numeric values
only.

10 Student Table

ID of a subject
component
grade of a
student

ComponentID

Number

Required value.
Numeric values
only.

10 Components
Table

ID of a
component

StudentID

Number

Required value.
Numeric values
only.

10 Student Table

ID of a student

Grade

Number

Numeric values
only. Less than
or equal to 100.

Entering it in the
Subject Teacher
form

Grade of the
student for a
specific subject
component

Field Name

Field Type

Validation

Example

Origin

Use

SubjectID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

SubjectName

Text

Required value.
Numeric values
only.

Mathematics

Entering it in the
Subject form

Name of a
subject

AddInfo

Text

Alphanumeric
characters only.

Level 2 (for
Chinese subject
only)

Entering it in the
Subject form

Miscellaneous
information
regarding a
subject

Subject Table

10 Automatic
following
creation of a
new subject

ID of a subject

!
!
!
!
!
!
!
!
!
!
!
Page 15 of 65

Subject Components Table


Field Name

Field Type Validation

ComponentID

Number

Required value.
Numeric values
only.

10 SubjectCompon
ents Table

ID of a subject
component

SubjectID

Number

Required value.
Numeric values
only.

10 Subject Table

ID of a subject

ComponentName

Text

Alphanumeric
characters only.

ComponentPercentage Number

Example

Tests

Required value.
Numeric values
only.

Origin

Use

Entering it in the Name of a


Component form component
30 Entering it in the Percentage of a
Component form component over
the entire
subject grade

Subject Teacher Table


Field Name

Field Type Validation

Example

Origin

Use

ID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

10 Automatic
following
creation of a
subject teacher

ID of a subject
teacher

TeacherID

Number

Required value.
Numeric values
only.

10 Teacher Table

ID of a teacher

SubjectID

Number

Required value.
Numeric values
only.

10 Subject Table

ID of a subject

ClassID

Number

Required value.
Numeric values
only.

10 Class Table

ID of a class

!
!
!
!
!
!
!
!
!
!
Page 16 of 65

Teacher Table
Field Name

Field Type Validation

Example

Origin

TeacherID

Number

Serial Number
on creation.
Increments from
1. Required
value. Unique,
numeric values
only.

TeacherName

Text

Required value.
Alphabetic
characters only.

John Doe

Entering it in the
Teacher Form

Name of a user
(Username of an
account)

Password

Text

Required value.
Alphanumeric
values only.

johndoe123

Entering it in the
Teacher Form

Password of an
account

Status

Text

Required value.
admin or
teacher only.

admin

Entering it in the
Teacher Form

Whether the
user is a teacher
or an
administration
officer

10 Automatic
following
creation of a
teacher

Use
ID of a teacher

Software
The new grading system will be run on web browsers; hence, it should be
compatible with almost any device and operating system.

Hardware
The minimum hardware requirements to run a web browser is minimal. 128 MB of
RAM and at least 100 MB of internal memory are sucient for the usage of the
new grading system.

Printer
The grade reports will be printed using the network laser printer in the teachers
room, the HP Deskjet P1003.

!
!
!
!
!
!
!
!
!
!

Page 17 of 65

Form Designs

Login Page
This form will be the login page for the new system. The user will enter his / her
username and password into the form, and click the Login button to log into the
system.

User Interactions
No

!
!
!
!
!
!
!
!
!
!
!
!

Interactions Details
1 Username

A text box where the user can input his / her username.

2 Password

A text box where the user can input his / her password.

3 Sign In

On clicking this button, the system validates the username and password, and
redirects the user the the appropriate page.

4 Reset

Clears the text in both the Username and Password fields.

Page 18 of 65

Teacher Home Page


This form will be the home page which is accessible to all subject teachers once they
log into the system. It will allow them to add any component available to the
subject class they are teaching.

User Interactions
Index

Interactions Details
1 Form Class A hyperlink to the Form Class page, which is only available for form
teachers.

!
!
!
!
!
!
!
!
!
!

2 MYE

A hyperlink to the Mid Year Exam page, where subject teachers can input
and edit grades specifically for the Mid Year Exam.

3 FYE

A hyperlink to the Final Year Exam page, where subject teachers can input
and edit grades specifically for the Final Year Exam.

4 Edit

A hyperlink which brings the user a page where data for the specified
component item can be edited.

5 Delete

Deletes the specified component item.

6 Add

Adds a component item to the specified subject class.

Page 19 of 65

Editing a Component Item


When an edit button in the Teacher Home Page is clicked, the user is taken to
this page. The grades of students in that class and the item name can be modified
here.

User Interactions
Index

Interactions Details
1 Name

A text box where the name of the component item can be modified.

2 Grade

Each field contains the grade of the specified student, and is editable
by the user.

3 Update

On clicking this button, the all the grades for this component item will
updated in the database.

4 Back

This button will take the user to the previous page he / she visited.

Adding a Component Item


This form appears when a component item is to be added from the Teacher Home
Page. The name of the item can be input, and a new item will appear on the home
page.

Page 20 of 65

User Interactions
Index

Interactions Details
1 Name

A text box to input the name of the new component item.

2 Submit

On clicking this button, the new component item will be created.

Form Class
This form is where a form teacher can modify the non-academic data for each
student in his / her class. Clicking on an Edit button will allow the editing of data
for the specified student. Clicking on a CCA button will allow the adding,
removing, and editing of Co-Curricular Activities for that specific student.

User Interactions
Index

Interactions

Details

6 Edit

On clicking this button, the user will be redirected to a page where the students
non-academic data can be modified.

7 CCA

On clicking this button, the user will be redirected to a page where the student's
Co-Curricular Activities can be modified.

Modifying Students Non-Academic Data


This form is where the user is directed on clicking the Edit button in the Form
Class form. Here, the form teacher is able to edit the Student Name, Status,
Attendance, Conduct and Remarks.
User Interactions
Index

!
!
!
!

Interactions

Details

1 Fields

These fields contain all the requisite student non-academic data.

2 Submit

On clicking this button, the new student data will be updated.

Page 21 of 65

!
Mid Year Exams / Final Year Exams
This form is where the MYE / FYE grades can be viewed and modified, for every
subject class the teacher is teaching.

User Interactions
Index

!
!
!

Interactions Details
1 Name

This field contains the name of the student.

2 Grade

This field contains the grade of the student for his / her MYE or FYE.

3 Edt

On clicking this button, the user is able to edit the a specific grade.

Page 22 of 65

Edit Mid Year Exams / Final Year Exams Grade


This form is where the grade for the MYE or FYE can be edited after clicking on
the Edit button.

User Interactions
Index

!
!
!

Interactions

Details

1 Grade

This field is where the MYE / FYE grade of the student can
be changed and updated.

2 Submit

On clicking this button, the user is able to update the grade.

Administration Ocer / Principal Home Page


This form will be the home page which is accessible to all administration ocers
and the principal once they log into the system.

Page 23 of 65

User Interactions
Index

Interactions

Details

1 Generate Report Card

On clicking this button, the report card (Term 2 and Term 4)


will be generated for the specific class.

2 Generate Progress Report

On clicking this button, the progress report (Term 1 and


Term 3) will be generated for the specific class.

3 Grades

This field displays the current final grade of the student for
the specific subject, excluding the MYE and FYE.

4 Links

These are navigation links to the other pages where data


can be input by the administration officer.

!
!

Modify Co-Curricular Activities


This form is where the administration ocer can view, add, edit or remove data for
all the available CCAs.

User Interactions
Index

!
!

Interactions

Details

1 Add CCA

On clicking this button, the user will be able to add a new


CCA to the list.

2 Home

On clicking this button, the user will be returned to the home


page.

3 Edit

On clicking this button, the user is able to edit the name of a


CCA.

4 Remove

On clicking this button, the specific CCA will be removed


from the list.

Page 24 of 65

Modify Co-Curricular Activity


This form is where the administration ocer can change the name of a specific
CCA.

User Interactions
Index

Interactions Details
1 Field

This field is where the name of the specified CCA can be modified.

2 Submit

On clicking this button, the name of the CCA will be updated.

Add Co-Curricular Activity


This form is where the administration ocer can add a new CCA to the list.

User Interactions
Index

!
!
!
!
!
!
!
!
!

Interactions Details
1 Field

This field is where the name of the new CCA can be input.

2 Submit

On clicking this button, the new CCA will be added to the list.

Page 25 of 65

Modify Classes
This form is where the administration ocer can view, add, edit or remove data for
all the classes.

User Interactions
Index

Interactions Details
1 Add Class

On clicking this button, the user will be able to add a new class to the list.

2 Edit

On clicking this button, the user will be able to edit the specified class name.

3 Remove

On clicking this button, the specified class will be removed from the list.

Modify Class
This form is where the administration ocer can change the name of a specific
class.

User Interactions
Index

!
!

Interactions

Details

1 Class Name

This field is where the specified class name can be modified.

2 Submit

On clicking this button, the new class name will be updated.

Page 26 of 65

Add Class
This form is where the administration ocer can add a new class to the list.

User Interactions
Index

Interactions

Details

1 Class Name

This field is where the name of the new class can be input.

2 Submit

On clicking this button, the new class will be added to the list.

Modify Teachers
This form is where the administration ocer can view, add, edit or remove data for
all the teachers.

User Interactions
Index

Interactions

Details

1 Add Teacher

On clicking this button, the user will be able to add a new teacher or
administration officer to the list. This new record acts as an account for the
teacher to access the system.

2 Edit

On clicking this button, the user will be able to modify the data for the
specified person.

3 Remove

On clicking this button, the specified person will be removed from the list.

Page 27 of 65

!
Modify Teacher
This form is where the administration ocer can change data for a specific teacher.

User Interactions
Index

Interactions Details
1 Fields

These fields contain the requisite data for every teacher, and can be modified.

2 Submit

On clicking this button, all the data in the fields will be updated.

Add Teacher
This form is where the administration ocer can add a new teacher to the list.

User Interactions
Index

Interactions Details
1 Fields

These fields are requisite data to be filled in for every new teacher.

2 Submit

On clicking this button, the new teacher will be added to the list.

Modify Subject Teachers


This form is where the administration ocer can assign subject teachers to specific
subject classes.
Page 28 of 65

User Interactions
Index

Interactions

Details

1 Add Subject Teacher On clicking this button, the user will be able to assign a teacher to a specific
subject class.
2 Edit

On clicking this button, the user will be able to modify the subject teacher
data.

3 Remove

On clicking this button, the specified subject teacher assignment will be


removed from the list.

Modify Subject Teacher / Add Subject Teacher


This form will allow the administration ocer to change the assignment of a
teacher to another subject class. The form for adding a subject teacher assignment is
the same.

User Interactions
Index

!
!

Interactions Details
1 Fields

These drop down boxes allow the data of the subject teacher to be changed.

2 Submit

On clicking this button, the subject teacher data will be updated.

Modify Form Teachers


This form will allow the administration ocer to assign a form teacher to each
available class.

Page 29 of 65

User Interactions
Index

Interactions

Details

1 Add Form Teacher This button will allow the user to create a new form teacher assignment.

2 Edit

On clicking this button, the user will be able to modify an assignment.

3 Remove

On clicking this button, the specified assignment will be removed from the list.

Modify Form Teacher / Add Form Teacher


This form will allow the administration ocer to change the assignment of a
teacher to another form class. The form for adding a form teacher assignment is the
same.

User Interactions
Index

Interactions

Details

1 Fields

These drop down boxes will allow the data of the form teacher to be changed.

2 Submit

On clicking this button, the form teacher data will be updated.

Modify Subjects

Page 30 of 65

This form will allow the administration ocer to view, add, edit or remove data for
all the available subjects.
User Interactions
Index

Interactions

Details

1 Add Subject On clicking this button, the user is able to add a new subject to the list.

2 Edit

On clicking this button, the user is able to modify the data for a specific subject.

3 Remove

On clicking this button, the specified subject will be removed.

Modify Subject / Add Subject


This form will allow the administration ocer to modify the details of a specific
subject. The form for adding a new subject is the same.

User Interactions
Index

Interactions Details
1 Fields

These fields will contain the subject details.

2 Submit

On clicking this button, the new subject will be added to the list.

Modify Students
This form will allow the administration ocer to view, add, edit or remove data for
all the students in the school.

Page 31 of 65

User Interactions
Index

Interactions

Details

1 Add Student On clicking this button, the user will be able to add a new student to the list.

2 Edit

On clicking this button, the user will be able to modify the data of the specified
student.

3 Remove

On clicking this button, the specified student will be removed from the list.

Modify Student
This form will allow the administration ocer to modify all the data of a student.

User Interactions
Index

!
!
!
!
!
!
!
!
!

Interactions

Details

1 Fields

These fields will allow the user to modify all the students data.

2 Submit

On clicking this button, the students data will all be updated.

Page 32 of 65

Add Student
This form will allow the administration ocer to add a new student to the list.

!
User Interactions
Index

Interactions

Details

1 Fields

These fields will allow the user to input the student data.

2 Submit

On clicking this button, the new student will be added to the list.

Modify Components
This form will allow the administration ocer to view, add, edit or remove data for
all the components for each subject.

User Interactions
Index

Interactions

Details

1 Add Component On clicking this button, the user will be able to add a new subject
component.
2 Edit

On clicking this button, the user will be able to modify the data for a
subject component.

3 Remove

On clicking this button, the specified component will be removed.

Page 33 of 65

!
Modify Component / Add Component
This form will allow the user to modify data for a specific subject component.
The form for adding a new component is the same.

User Interactions
Index

!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!

Interactions

Details

1 Fields

These fields will allow the user to modify the data for the specific
component.

2 Submit

On clicking this button, the component data will be updated.

Page 34 of 65

Reports(Output Form Designs)

Progress Report

!
Page 35 of 65

!
Report Card

Page 36 of 65

ii. Intended Benefits


The main benefit that the end users will receive following the implementation
of this system is the increased eciency at which the grades will be input.
Since all the calculation and formulas are handled by the system, the user only
has the inputting of data to worry about. Also, with the click of a button, all
the grade reports will be automatically generated. This will save the end users a
lot of time as a lot of unnecessary manual work is removed from the process.

Furthermore, the system will allow the administration ocers to have


organised tables of all the data in the system. This allows for the easier backing
up and organisation of the data.

Also, the clean and sleek user interface is very user-friendly. It can be accessed
from any device which is browser-enabled, making it very accessible. Therefore,
this system can potentially be accessed outside the school, allowing teachers to
work at home.

iii. Limits of the scope of the solution


Project
To back up all the data of the new system, all the database tables will have to
dumped. Therefore, to view this old data that has been backed up, the user
would have to restore this data before he is able to use it. This can be time
consuming if the size of the database is huge.

Also, the database file could get very large quickly with each passing day. This
will potentially slow down the speed of the system. Therefore, it would be
good to change the database used from MySQL to a better database solution.

Currently, the system can only be accessed from within the school, when the
device is connected to the local network. A potential improvement would
therefore be to link the system to a website so that teachers can access it from
anywhere.

!
!
!
!
!
!

Page 37 of 65

File Size
Integer : 4 bytes
Text : 20 bytes (estimated)
Character : 1 byte
Table

Size Per Record (Bytes)

Records

Table Size (Bytes)

CCA

24

10

240

Class

24

20

480

Components

44

450

19800

FormTeacher

20

160

FYE

16

3000

48000

MYE

16

3000

48000

NonAcademic

13

2500

32500

Student

30

5500

165000

StudentCCA

52

2000

104000

StudentClass

500

4000

142

500

71000

StudentGrades

16

16000

256000

Subject

44

10

440

SubjectComponents

32

40

1280

SubjectTeacher

16

150

2400

Teacher

54

50

2700

StudentFormClass

Total (Bytes)

!
!
!
!
!
!
!
!
!
!
!

Total (KiloBytes)

756000
738

Page 38 of 65

Software Development, Testing & Implementation


!
i. Development

Software Development

The solution to the problem was to develop a web-based PHP (PHP :


Hypertext Preprocessor) application, which runs on an Apache server on the
schools server computer. Since the application can be accessed from any web
browser on a device connected to the local area network, it is perfect for the
teachers to use. The application uses a local MySQL database server to store
all the data for the system, and can be accessed from the phpMyAdmin web
interface. The design of the system uses the Bootstrap (http://getbootstrap.com)
front-end development framework. The generation of PDF grade reports uses
the MPDF PHP class(http://www.mpdf1.com/mpdf)

Program Listing

!
!
!
!
Page 39 of 65

Page 40 of 65

!
!
!
Page 41 of 65

!
!
!
Page 42 of 65

ii. Programming

Since most of the code are repetitive, only main program code will be shown
here. Most of the PHP code is quite self-explanatory.

1. home.php
<?php
require("include.php");
$bbs = new bbs("");
//if the user removes an item, this "if " will be executed
if(isset($_GET["remove"])){
$componentid = $_GET["remove"];
$bbs->conn->query("DELETE FROM `Components` WHERE `ID` = '$componentid'");
$bbs->conn->query("DELETE FROM `StudentGrades` WHERE `ComponentID` =
'$componentid'");
}

//getting all required data from the database


$teachers = array(); $classes = array(); $subjects = array();
$rs = $bbs->conn->query("SELECT * FROM `Teacher`");
while($row = $rs->fetch_assoc()){
$teachers[$row["TeacherName"]] = $row["TeacherID"];
}
$rs = $bbs->conn->query("SELECT * FROM `Class`");
while($row = $rs->fetch_assoc()){
$classes[$row["ClassID"]] = $row["ClassName"];
}
$rs = $bbs->conn->query("SELECT * FROM `Subject`");
while($row = $rs->fetch_assoc()){
$subjects[$row["SubjectID"]] = $row["SubjectName"];
}
$bbs->header("home");
?>

<body>
<div class="container">
<?=$bbs->navbar($_COOKIE["name"],"main")?>
<div class="row clearfix">
<div class="col-md-12 column">
<h3>Today is <?php date_default_timezone_set($userTimezone); echo date("l");?>. Below is
the list of classes you currently teach.</h3><br/><br/>
</div>
<div class="col-md-12 column">
<?php
//get teacher id from cookie
$tid = $teachers[$_COOKIE["name"]];

//fetch subject teacher data


Page 43 of 65

$rs = $bbs->conn->query("SELECT * FROM `SubjectTeacher` WHERE `TeacherID` =


'$tid'");

while($row = $rs->fetch_assoc()){
$sid = $row["SubjectID"]; $cid = $row["ClassID"];
$rs1 = $bbs->conn->query("SELECT * FROM `Subject` WHERE `SubjectID` = '$sid'");
$row1 = $rs1->fetch_assoc();

//output all components to the page


if($row1["AddInfo"] === "Non Academic"){
echo "<h4><div class='col-md-6'>Subject : " . $subjects[$sid];
echo
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class : " .
$classes[$cid] . "</div>";
echo "<a href='editNonAcademic.php?subject=".$sid."&class=".$cid."'><span
class='glyphicon glyphicon-edit col-md-oset-1'></span></a></h4>";
}
else{
$rs1 = $bbs->conn->query("SELECT * FROM `SubjectComponents` WHERE
`SubjectID` = '$sid'");
$components = array(); $componentsrev = array();
while($row1 = $rs1->fetch_assoc()){
$components[$row1["ComponentName"]] = $row1["ComponentID"];
$componentsrev[$row1["ComponentID"]] = $row1["ComponentName"];
}

echo "<h4>Subject : " . $subjects[$sid] .


"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
echo "Class : " . $classes[$cid];
foreach($components as $component=>$componentid) echo "<a href='add.php?
component=" . $componentid . "&subject=" . $sid . "&class=" . $cid . "' class='pull-right' style='marginleft:20px;font-size:16px;'>+ " . $component . "</a>";
echo "</h4>";

echo "<table class='table table-bordered table-condensed tableresponsive'><thead><tr><th>Name</th><th>Component</th><th>Edit</th><th>Delete</th></tr></


thead><tbody>";
$rs1 = $bbs->conn->query("SELECT * FROM `Components` WHERE `SubjectID` =
'$sid' AND `ClassID` = '$cid' AND `TeacherID` = '$tid'");
while($row1 = $rs1->fetch_assoc()){
echo "<tr><td>".$row1["Name"]."</td><td>".
$componentsrev[$row1["ComponentID"]]."</td><td><a href='modifyComponent.php?id=".
$row1["ID"]."'><span class='glyphicon glyphicon-edit'></span></a></td><td><a href='home.php?
remove=".$row1["ID"]."'><span class='glyphicon glyphicon-remove'></span></a></td></tr>";
}
echo "</tbody></table><br/><br/><br/>";
}
}
?>
</div>
</div>
</div>
Page 44 of 65

</body>
</html>

2. include.php
<?php
class bbs{
public $conn;
function __construct(){
//connecting to the database
$mysql_host = "localhost";
$mysql_database = "bbs2";
$mysql_user = "root";
$mysql_password = "root";

$this->conn = new mysqli($mysql_host, $mysql_user, $mysql_password, $mysql_database);


if ($this->conn->connect_error){
trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR);
}
}
//contains all required header files
function header($css = ""){
$str = "";
$str .= "<!DOCTYPE html><html lang='en'><head>";
$str .= "<link href='bootstrap/css/bootstrap.min.css' rel='stylesheet'>";
$str .= "<script src='js/jquery.js'></script>";
$str .= "<script src='bootstrap/js/bootstrap.min.js'></script>";
$str .= "<script src='datepicker/js/bootstrap-datepicker.js'></script>";
$str .= "<script src='js/functions.js'></script>";
$str .= "<link href='datepicker/css/datepicker.css' rel='stylesheet'>";
if($css !== "") $str .= "<link href='css/{$css}.css' rel='stylesheet'>";
$str .= "</head>";
echo $str;
}

function formclass($class){
$q = mysql_query("SELECT * FROM `studentList` WHERE `class` = '{$class}'") or
die(mysql_error());
$str = "<table class='table table-bordered table-striped'>";
$str .= "<thead><tr><th>Name</th></tr></thead><tbody>";
while($row = mysql_fetch_array($q)){
$str .= "<tr><td>" . $row["name"] . "</td></tr>";
}
$str .= "</tbody></table>";

!
!

echo $str;
}
//contains code for the navbar
function navbar($name, $main = "admin1"){
Page 45 of 65

$rs = $this->conn->query("SELECT * FROM `Teacher` WHERE `TeacherName` =


'$name'");
$row = $rs->fetch_assoc(); $teacherid = $row["TeacherID"];
$rs = $this->conn->query("SELECT * FROM `FormTeacher` WHERE `TeacherID` =
'$teacherid'");
$rows = $rs->num_rows; $home;
if($main === "admin1") $home = "admin1";
else $home = "home";
$str = "<nav class='navbar navbar-default' role='navigation'>
<div class='navbar-header'>
<button type='button' class='navbar-toggle' data-toggle='collapse' data-target='#bsexample-navbar-collapse-1'>
<span class='sr-only'>Toggle navigation</span> <span class='icon-bar'></span><span
class='icon-bar'></span><span class='icon-bar'></span>
</button>
<a style='position:relative; top:2px; left:8px;' class='navbar-brand' href='" .
$_SERVER["HTTP_REFERER"] . "' ><span class='glyphicon glyphicon-arrow-left'></span></a>
<a class='navbar-brand' href='{$home}.php'>Grading System</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class='collapse navbar-collapse' id='bs-example-navbar-collapse-1'>";
if($main === "admin1") $str .= "<ul class='nav navbar-nav'>
<li><a href='editCCAs.php'>CCAs</a></li>
<li><a href='editClasses.php'>Classes</a></li>
<li><a href='editTeachers.php'>Teachers</a></li>
<li><a href='editSubjectTeachers.php'>Subject Teachers</a></li>
<li><a href='editFormTeachers.php'>Form Teachers</a></li>
<li><a href='editSubjects.php'>Subjects</a></li>
<li><a href='editStudents.php'>Students</a></li>
<li><a href='editComponents.php'>Components</a></li>
</ul>";
else if($rows === 1) $str .= "<ul class='nav navbar-nav'><li><a href='formClass.php'>Form
Class</a></li><li><a href='yearExams.php?exam=mye'>MYE</a></li><li><a href='yearExams.php?
exam=fye'>FYE</a></li></ul>";
$str .= "<ul class='nav navbar-nav navbar-right'>
<li><a href='logout.php'>Logout</a>
</ul>
</div>
</nav>"; echo $str;
}

//function to round to nearest number


function roundToNearest($number,$nearest=1){
$number = round($number);
if($nearest>$number || $nearest <= 0)
return $number;
$x = ($number%$nearest);
return ($x<($nearest/2))?$number-$x:$number+($nearest-$x);
Page 46 of 65

}
}
?>

3. login.php
<?php
require("include.php");
$bbs = new bbs(""); session_start();

//if the user is trying to log in, this "if " block will be executed
if(isset($_POST["user"]) && isset($_POST["pass"])){
//get username and password
$username = $_POST["user"];
$password = $_POST["pass"];

$rs = $bbs->conn->query("SELECT * FROM `Teacher` WHERE `TeacherName` = '$username'");


$row = $rs->fetch_assoc();
//if password in database is the same as input password, log the user in
if($row["password"] === $password){
setcookie('name',$username,time() + 100000);
setcookie('status',$row["status"],time() + 100000);
if($row["status"] === "teacher") header("location: home.php");
else if($row["status"] === "admin") header("location: admin1.php");
}
}

$bbs->header("login");
?>
<body>
<div class="container">
<div class="row">
<h1 align="center">BBS Grading System</h1>
<div class="col-md-6 col-md-oset-3">
<div class="panel panel-default">
<div class="panel-heading">
<span class="glyphicon glyphicon-lock"></span> Login</div>
<div class="panel-body">
<form class="form-horizontal" role="form" action="login.php" method="POST">
<div class="form-group">
<label for="user" class="col-sm-3 control-label">
Username</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="user" name="user"
placeholder="Username" required>
</div>
</div>
<div class="form-group">
<label for="pass" class="col-sm-3 control-label">
Page 47 of 65

Password</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="pass" name="pass"
placeholder="Password" required>
</div>
</div>
<div class="form-group last">
<div class="col-sm-oset-3 col-sm-9">
<button type="submit" class="btn btn-success btn-sm">
Sign in</button>
<button type="reset" class="btn btn-default btn-sm">
Reset</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>

</body>
</html>

3. generateReport.php
<?php
//function for generating report card
function generateAssess($name, $class, $teacher, $studentID, $ca, $sa, $attendance, $conduct,
$nonacademic, $remarks, $semester = 1){
$bbs = new bbs("");
$classes = array(); $subjects = array();
$rs = $bbs->conn->query("SELECT * FROM `Class`");
while($row = $rs->fetch_assoc()){
$classes[$row["ClassID"]] = $row["ClassName"];
}
$rs = $bbs->conn->query("SELECT * FROM `Subject`");
while($row = $rs->fetch_assoc()){
$subjects[$row["SubjectID"]] = $row["SubjectName"];
}
//the prewritten html code for the PDF
$html = "
<style>
@page { sheet-size: 210mm 325mm; }
hr{
background-color:black;
height:1px;
}
td{
text-align: center;
}
Page 48 of 65

table{
width:100%;
}
</style>
<div id='header' style='width:100%; height:auto; font-family:\"Times New Roman\", Times,
serif; margin:0; padding:0;'>
<img src='img/logo.png' width='125' height='100' style='margin:0; padding:0;margin-left:
280px;'><br/>
<p align='center' style='margin-top:0; padding-top:0; margin-bottom:0; padding-bottom:
0;'><b>
Kebon Jeruk<br/>
{$class}<br/>
<i>
Academic Transcript<br/>
Semester {$semeseter}
</i></b></p>
</div>
<div id='body' style='width:100%; font-family:\"Times New Roman\", Times, serif;'>
<p align='right' style='font-size:14px;'><b><i>December 2013</i></b></p>
<div style='float:left; display:inline; padding:0; margin:0; width:
450px;'><b><i>Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;{$name}</i></b></
div>
<div style='float:right; display:inline; padding:0; margin:0; width:210px;'><b><i>Student's
ID:&nbsp;" . $studentID . "</i></b></div>
<div style='display:inline; padding:0; margin:
0;'><b><i>Class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;" . $class . "</i></
b></div>
<hr>
<table>
<tbody>
<tr><td></td><td><b><i>CA1</i></b></td><td><b><i>SA1</i></b></
td><td><b><i>Semester 1</i></b></td></tr>
<tr><td width='300' style='text-align:left;'><b><i>Subject</i></b></td><td></
td><td><b><i>Mid-Year Exam</i></b></td><td><b><i>Marks</i></b></td></tr>
<tr><td></td><td><b><i>(20%)</i></b></td><td><b><i>(25%)</i></b></
td><td><b><i>(45%)</i></b></td></tr>
</tbody>
</table>
<hr>
<table id='grades'>
<tbody>";
$sum = 0; $cnt = 0;
foreach($ca as $key=>$value){
$avg = roundToNearest($value * 20 / 45 + $sa[$key] * 25 / 45,1);
$cnt++; $sum += $avg;

if($value == -1) $value = "NIL";

$html .= "<tr><td width='300' height='30' style='text-align:left; font:italic bold'><b><i>" .


$subjects[$key] . "</i></b></td><td width='95'>{$value}%</td><td width='158'>{$sa[$key]}%</
td><td>{$avg}%</td></tr>";
Page 49 of 65

}
$html .= "</tbody>
</table>
<hr>
<b><i><div style='display:inline;float:left;width:300px;padding:0;margin:0;'>Non Academic
Subjects</div>
<div style='display:inline;float:right;width:95px;margin-right:50px;padding:0;margin:
0;'>Grades</div></i></b>
<br/><hr>
<table>";
foreach($nonacademic as $key=>$val){
$html .= "<tr><td style='text-align:left;'><b><i>{$subjects[$key]}</i></b></td><td
style='float:right;' width='140'><b><i>{$val}</i></b></td></tr>";
}

$html .= "</table>
<br/><hr>
<div style='display:inline;float:left;width:250px;'><b><i>Weighted Average: " .
roundToNearest($sum / $cnt, 1) . "%</i></b></div>
<div style='display:inline;float:left;width:220px;'><b><i>Attendance: " . $attendance . "/95</
i></b></div>
<div style='display:inline;float:left;width:200px;'><b><i>Conduct: " . $conduct . "</i></b></
div>
<p><b><i>Remarks:</i></b> " . $remarks . "</p><br/><br/><br/><br/><br/><br/>
</div>
";
$foot = "<table style='position:absolute; bottom:0; margin-bottom:0; padding-bottom:0;'>
<tr><td width='20'></td><td width='165' style='border-bottom:1px solid black;'></td><td></
td><td width='165' style='border-bottom:1px solid black;'></td><td></td><td width='165'
style='border-bottom:1px solid black;'></td><td></td></tr>
<tr><td></td><td>Form Teacher</td><td></td><td>Ms. Martha Hapsari</td><td></
td><td>Parent</td></tr>
<tr><td></td><td></td><td></td><td>Principal</td><td></td><td></td><td></td></tr>
</table>";
$name = str_replace(' ', '', $name);
if(!file_exists('./pdf_dir/' . $class)){
mkdir('./pdf_dir/' . $class, 0777, true);
}
$filename = "./pdf_dir/{$class}/Report Card - {$name}.pdf ";
//output the PDF which contains the HTML code in the form of real items
$sz = array(210,297);
$pdf = new mPDF('c',$sz);
$pdf->WriteHTML($html);
Page 50 of 65

$pdf->SetHTMLFooter($foot);
$pdf->Output($filename,'F');
}
?>

3. addCCA.php
<?php
require("include.php");
$bbs = new bbs("");
//if the user has inserted an item
if(isset($_POST["CCAID"])){
$ccaid = $_POST["CCAID"]; $studentid = $_POST["StudentID"];
$rs = $bbs->conn->query("INSERT INTO `StudentCCA`
(`StudentID`,`CCAID`,`Grade1`,`Grade2`) VALUES('$studentid','$ccaid',' ',' ')");
header("location: editCCA.php?id=".$studentid);
}
$id = $_GET["id"];
$bbs->header("home");
$class = array(); $cca = array();
$rs = $bbs->conn->query("SELECT * FROM `Class`");
while($row = $rs->fetch_assoc()){
$classes[$row["ClassName"]] = $row["ClassID"];
}
$rs = $bbs->conn->query("SELECT * FROM `CCA`");
while($row = $rs->fetch_assoc()){
$cca[$row["CCAID"]] = $row["CCAName"];
}
?>

<body>
<div class="container">
<?=$bbs->navbar($_COOKIE["name"],"admin1")?>
<div class="row clearfix">
<div class="col-md-12 column">
<h3>Today is <?php date_default_timezone_set($userTimezone); echo date("l");?>.</h3><br/
><br/>
</div>
<div class="col-md-12 column">
<form class="form-horizontal" role="form" action="addCCA.php" method="post">
<div class="form-group">
<label class="col-sm-2 control-label">CCA</label>
<div class="col-sm-10">
<select class="form-control" name="CCAID"><?php foreach($cca as $k=>$v) echo "<option
value='{$k}'>{$cca[$k]}</option>";?></select>
</div>
</div>
<div class="form-group">
<div class="col-sm-oset-2 col-sm-10">
<button type="submit" class="btn btn-md btn-primary">Add</button>
Page 51 of 65

<?php if(isset($msg)) echo "<font color='red' style='margin-left:20px;'>".$msg."</font>";?>


</div>
</div>
<?php echo "<input type='hidden' style='width:0px; height:0px;' name='StudentID' value='" .
$id . "'>";?>
</form>
</div>
</div>
</div>
</body>
</html>

3. editCCA.php
<?php
require("include.php");
$bbs = new bbs("");
$bbs->header("home");
//if the user has removed an item
if(isset($_GET["remove"])){
$studentid = $_GET["sid"]; $ccaid = $_GET["remove"];
$rs = $bbs->conn->query("DELETE FROM `StudentCCA` WHERE `StudentID` =
'$studentid' AND `CCAID` = '$ccaid'");
}

//retrieve all the required data


$id = $_GET["id"];
$studentclass = array(); $cca = array(); $classes = array();
$rs = $bbs->conn->query("SELECT * FROM `StudentClass`");
while($row = $rs->fetch_assoc()){
$studentclass[$row["StudentID"]] = $row["ClassID"];
}
$rs = $bbs->conn->query("SELECT * FROM `Class`");
while($row = $rs->fetch_assoc()){
$classes[$row["ClassID"]] = $row["ClassName"];
}
$rs = $bbs->conn->query("SELECT * FROM `CCA`");
while($row = $rs->fetch_assoc()){
$cca[$row["CCAID"]] = $row["CCAName"];
}
?>

<body>
<div class="container">
<?=$bbs->navbar($_COOKIE["name"],"main")?>
<div class="row clearfix">
<div class="col-md-12 column">
<h3>Today is <?php date_default_timezone_set($userTimezone); echo date("l");?>.</h3><br/
><br/>
</div>
<div class="col-md-12 column">
Page 52 of 65

<table class="table table-bordered table-hover table-striped">


<thead><tr><th>CCA</th><th>Grade 1</th><th>Grade 2</th><th>Edit</
th><th>Remove</th></thead>
<tbody>
<?php
//output all the items in the database to the page, in a table
$rs = $bbs->conn->query("SELECT * FROM `StudentCCA` WHERE `StudentID` =
'$id'");
while($row = $rs->fetch_assoc()){
$ccaid = $row["ID"];
echo "<tr><td>".$cca[$row["CCAID"]]."</td><td>".$row["Grade1"]."</td><td>".
$row["Grade2"]."</td><td><a href='modifyCCA.php?id=".$ccaid."&sid=".$id."'><span
class='glyphicon glyphicon-edit'></td><td><a href='editCCA.php?sid=".$id."&remove=".
$row["CCAID"]."&id=".$id."'><span class='glyphicon glyphicon-remove'></span></a></td></tr>";
}
?>
</tbody>
</table>
</div>
<div class="col-md-4">
<?php echo '<a href="addCCA.php?id='.$id.'"><button class="btn btn-md btn-success"><span
class="glyphicon glyphicon-plus"></span> Add</button></a>';?>
<a href="formClass.php"><button class="btn btn-md btn-primary">Home</button></a>
</div>
</div>
</div>
</body>
</html>

3. editCCA.php
<?php

require("include.php");
$bbs = new bbs("");
if(!$bbs->redirect()) $bbs->movePage("login.php");

//if the user has updated the data


if(isset($_POST["CCAName"])){
if(empty($_POST["CCAName"])){
//validation: the field must not be empty
$msg = "Please enter a CCA Name.";
}
else{
//updating the database
$ccaname = $_POST["CCAName"];
$id = $_POST["CCAID"];
$rs = $bbs->conn->query("UPDATE `CCA` SET `CCAName` = '$ccaname' WHERE
`CCAID` = '$id'");
if(!rs) $msg = "Error updating CCA.";
else header("location: editCCAs.php");
}
Page 53 of 65

}
else{
//retrieve the data required to display the current CCA
$id = $_GET["id"];
$rs = $bbs->conn->query("SELECT * FROM `CCA` WHERE `CCAID` = '$id'");
$row = $rs->fetch_assoc();
$ccaname = $row["CCAName"];
}
$bbs->header("home");
?>

<body>
<div class="container">
<?=$bbs->navbar($_COOKIE["name"],"admin1")?>
<div class="row clearfix">
<div class="col-md-12 column">
<h3>Today is <?php date_default_timezone_set($userTimezone); echo date("l");?>.</h3><br/
><br/>
</div>
<div class="col-md-12 column">
<form class="form-horizontal" role="form" action="modifyCCAs.php" method="post">
<div class="form-group">
<label class="col-sm-2 control-label">CCA Name</label>
<div class="col-sm-10">
<?php echo '<input type="text" value="'.$ccaname.'" class="form-control"
name="CCAName" placeholder="CCA Name">'; ?>
</div>
</div>
<div class="form-group">
<div class="col-sm-oset-2 col-sm-10">
<button type="submit" class="btn btn-md btn-primary">Submit</button>
<?php if(isset($msg)) echo "<font color='red' style='margin-left:20px;'>".$msg."</font>";?>
</div>
<?php echo "<input type='hidden' name='CCAID' style='width:0px;height:0px;' value='".
$id."'>";?>
</div>
</form>
</div>
</div>
</div>
</body>
</html>

!
!
!
!
!
!
!

Page 54 of 65

iii. Testing
The testing is done with mostly abnormal data and extreme data.

Test Plan
No

Objective

Test Data

Expected Outcome

Actual Outcome

1 Test if the user will log johndoe


in with a non existing
username

Error : Username does


not exist.

Error : Username does not exist.

2 Test if the user will log ine, test


in with an incorrect
password

Error : Invalid username/


password.

Error : Invalid username/


password.

3 Test if a grade
exceeding 100 can be
input into the system.

505 Error : Grade can only be


from 0 to 100.

Error : Grade can only be from 0


to 100.

4 Test if a grade less


than 0 can be input
into the system.

-10 Error : Grade can only be


from 0 to 100.

Error : Grade can only be from 0


to 100.

5 Test if a conduct
grade can be a
number

100 Error : Conduct can only


be the characters A, B,
C, D, E

Error : Conduct can only be the


characters A, B, C, D, E

6 Test if a name can


contain numbers

John123

Error : A name can only


contain alphabetic
characters.

Error : A name can only contain


alphabetic characters.

Test 1:

Test 2:

Page 55 of 65

!
Test 3:

!
!
Test 4:

Test 5:

Page 56 of 65

Test 6:

!
!
iv. Installation

Alternatives Methods

Solution

Advantages

Disadvantages

Parallel Running

Issues with the new system can be


resolved.!
The old system is still in place in
case of failure of the new system.

The two systems would have to be


run for a certain time period.!
A solution is needed for the two
systems to interoperate.

Phased Implementation

There is time to make adjustments


to the new system.!
Teachers have more time to adapt
to the new system.

The process is extremely slow.!


A solution is needed for the two
systems to interoperate.

Pilot Running

Suitable for large organisations in


many locations.!
If problems occur, only parts of the
organisation is affected.

The teachers all work in one


location.!
The number of teachers is
insufficient for this solution to be
effective.!
A solution is needed for the two
systems to interoperate.

Direct Changeover

Only one day to changeover.!


There is no need to create solution
in which both systems run at the
same time.

There is not much time for changes.!


If things go wrong, it would be hard
to resolve the situation.

The chosen implementation for this system will be parallel running. The other
methods were considered, but they are unsuitable, considering the size of the
Page 57 of 65

organisation. Parallel running allows for the evaluation of the eectiveness and
accuracy of the new system, while having the old system in place in case of a
failure.

Gantt Chart

Tasks

Duration (Days)

Installation

1/2

Add data files

1/2

Make
adjustments
Show teacher

Day 1

Day 2

Day 3

Day 4

Day 5

1
1/2

User training

Solve issues

Changeover

1/2

Installation
- Install the completed solution on the schools server.

Add data files


- Backup the data files.
- Migrate the data from the old system onto the new solution.

Make adjustments
- Alter system settings if required.
Show teacher
- Introduce and demonstrate the system to the teachers.

User training
- Done after introduction to teachers.
- Every teacher learns to use the system.
- Has guidance from the training documentation and the user guide.

Solve issues
- Answer any questions the teachers have.
- Solve all their issues.

!
!
!

Page 58 of 65

Changeover
- Teacher in charge signs o the solution, stating that they are satisfied with the end
result.

!
!
Documentation

i. Systems maintenance documentation

Section References
Most of the sections required for the system maintenance documentation already
occur previously in this document :
Section

Page reference

Record, File and Data structures

39 - 42

Data Flow Diagram

10

Form Designs

18 - 34

Annotated Program Listings (code)

43 - 54

Hardware / Software Requirements

17

Possible Adaptive Maintenance


To further improve the system, future work and updates could include:
- Connecting the system to the internet so that it can be accessed from outside the
school.
- Ability to sort data by each column
- Ability to backup data automatically, and retrieve data from previous years
whenever needed.
- Ability to import data from CSV or spreadsheet files, without having to
manually input every single record into the system.

!
!
!
!
!
!
!
!
!
!

Page 59 of 65

Back-Up Procedure
To back-up the system, a database dump can be done from the phpMyAdmin web
interface, in the Export tab.

To restore the system, the SQL dump can be uploaded to phpMyAdmin, and it will
completely restore all data tables.

!
Page 60 of 65

The MySQL database dump can be saved to a flash drive. To back-up the system,
use 2 USB flash drives with at least 2 GB of free space. One drive will be used to
make daily back-ups, and the other one will be used to make weekly backups.

!
ii. User documentation
!
A. Logging into the system
!

1. Open a web browser.


2. To access the website of the system, type in http://localhost/BBS2 into the
address bar.

3. Enter the username and password given by the administration ocer, and click
on the Sign in button.

A. Home Page (Teacher)

(1)
(2)

(3)

1. This is the home page you will be taken to once you log in. It shows all the
classes you teach and all the component items that have been created for each
subject class. Here, you can perform a few actions.
Page 61 of 65

2. Clicking on (1) will allow you to add one item of that component to this
subject class.
3. Clicking on (2) will allow you to edit all the grades of the students in the
subject class, for the specified component item.
4. Clicking on (3) will delete that specific component item.
5. Clicking on Form Class will allow you to view and edit form class data.
6. Clicking on MYE or FYE will allow you to view and edit the MYE and
FYE grades for all your students.

B. Home Page (Administration ocer)

1. This is the home page you will be taken to once you log in. It shows you all the
students in each class, and their current final grades for each subject.
2. To generated a report card or progress report, click on their respective buttons.
3. The navigation bar at the top of the page contains many links to other pages in
the system.

C. Modifying a component item

Page 62 of 65

1. Each field in the Grade column corresponds to each student. The name of the
component item and the grades can all be modified.
2. On clicking the Update button, all the data will be updated.

D. Form Class

1. This page displays all students of your form class, and the respective attendances
and conducts.
2. On clicking the Edit button, you will be able to edit the attendance, conduct
and remarks for the student in semester 1 and semester 2.
3. On clicking the CCA button, you will be able to add / remove CCAs for that
student, and change his CCA grades.

E. Editing / Adding

1. Change the value of the grade in the text field.


2. Click the Submit button to updated the data.

!
!

Page 63 of 65

F. Administration ocer pages

1. This is a page where you can view all the available CCAs. Also, you can add,
edit or remove a CCA here.
2. The other pages where you can add, remove or modify data are similar in their
operations.
3. To edit data for a specific CCA, click the Edit button.
4. To remove a CCA, click the Remove button.
5. To add a CCA, click the Add CCA button.

!
!
Evaluation

i. Discussion of the degree of success in meeting the original objectives


Processing Requirements

Details

Evidence

System checks that all data


are unique and are not
repeated.

This will be implemented in the


database system using primary
keys to ensure a unique ID for
each data record.

Database table structures, Pg 40


- 43. Each table has a primary
key, which is unique.

Miscellaneous Requirements

Details

Evidence

A user-friendly interface,
compatible with most
browsers.

The Bootstrap framework will be


used as a basis for the new
system, to ensure mobilefriendliness and a clean, userfriendly design.

Form designs, Pg 18 - 35. The


Bootstrap framework has been
used as a basis for the front end
of the system for a nice user
interface.

Page 64 of 65

Output Requirements

Details

Evidence

Grade reports generated


every end of academic term,
in the form of PDF files.

The administration officers and


principals account will be
facilitated with a feature for the
automatic generation of all grade
reports.

Form designs, Pg 23. The


accounts have the buttons to
generate the grade reports

A summary page showing


the final grades for each
student in every class.

The administration officers' and


principal's account have their
home pages as the summary of
average final grades for each
student.

Form designs, Pg 23. The


accounts have home pages
containing summaries of average
final grades for each student.

Input Requirement

Details

Evidence

Teachers will only be able to


view and edit data for the
subject classes they are
teaching.

Teachers will be assigned their


own personal accounts, which
have pre-assigned privileges.
This is done by the
administration officers who
assign a teacher to a specific
subject class.

Database table structures, Pg


40. Each teacher has his / her
own account with a username
and a password.

The administration ocers


and the school principal will
have full privileges to
modify and view any data
excluding grades.

They will have their own


personal accounts that will allow
editing and viewing of all data, in
addition to the generation of
grade reports.

Form designs, Pg 23 - 35. The


administration officer is able to
modify and view all data.
However, he / she is not able to
modify student grades.

From the evaluation and evidence presented, it can be concluded that all
requirements are fully met.

ii. Evaluate the clients and users response to the system


The client has been given the system to try out on a web browser in her laptop, as a
beta test. She tried out every functionality available in both the administration
ocer pages and the teacher pages.

According to her:
- The design is very clean and user friendly. The system is very easy to work with,
even without a user manual.
- The system can be used for a few years ahead. However, along the way, some
adaptive maintenance has to be done.
- The system has fulfilled all of her requirements, and will certainly ease the jobs of
teachers and save a lot of their time.

Page 65 of 65

You might also like