Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

Student-Report-System

This is a report system to be used for schools. It autogenerates the teacher comment on student.

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

Student-Report-System

This is a report system to be used for schools. It autogenerates the teacher comment on student. Its a complete school project of 1-2 years ago, written in Pascal (Delphi IDE). There is a report showing each part of creating this, and why it was created. Feel free to read below (or download PDF Version, Much easier to read and navigate):

Download PDF Report: https://docdro.id/U86VbGU

Contents

  • Section 1: Analysis
    • 1.1 Features that make the problem solvable by computational methods
      • Problem Identification
      • Solving the Problem
      • System needs
    • 1.2 Suitable stakeholders
    • Information Gathering.......................................................................................................................
      • Planning
      • Interview – what the system needs (Mr Patel) [18/09/2022]
      • Survey
      • Email – Design of the system [Mr Wino]
      • Information on how student classes work in Graveney
      • Interview – Problem with the Existing System (Mr Wino) [1 to 1 on zoom at 16:30]
      • Graveney School Classes Format
    • 1.3 Existing solutions
      • Solution A
      • Solution B
    • 1.4 Features of the proposed computational solution
    • 1.5 Limitations of the proposed solution.........................................................................................
    • 1.6 Requirements for the solution including hardware and software requirements
      • Hardware Requirements for the System
      • Software Requirements for the System
      • Features for the system
    • 1.7 Success criteria
  • Section 2: Design
    • 2.1 Decomposing the Problem
      • Illustration of the solution
    • 2.2 Structure of the solution
      • Setting up the Entity Relationship Diagrams
      • Interface Design
      • Data dictionary
    • 2.3 Algorithms
      • Query to get user details:
      • Query’s to write user details
      • Query’s to Update User details
      • Query to Create a Class:
      • Query to display users classes:
      • Query to Update a Class:
      • Query to Create Student:
      • Query to Update Student:
      • Query to Create Report:
      • Query to Get Report:
      • Login Form (Login Algorithm):
      • Signup Form (Create Account Algorithm):
      • Email Verification:
      • Create Class Form:
      • Delete Class Algorithm:
      • Create Student Form:
      • Delete Student Algorithm:
      • Create Report Form (Creation):..................................................................................................
      • Create Report Form (Validation):
      • Report Comment Form:
    • 2.4 Usability features.......................................................................................................................
    • 2.5 Key variables / data structures
      • Login form: TUserData Record
      • Login form
      • Signup form
      • Create Report form: Tquestion Record
      • Create Report form: Tquiz Class
      • Store Student (TStudentInfo):
      • Report Comment form
    • 2.6 Test data during the iterative development
    • 2.7 Further data to be used in the post development phase
      • System Testing
      • End User Testing
  • Section 3: Developing the coded solution
    • Stage 1: Database
      • Prototype
      • Prototype
      • Prototype
    • Stage 2: Implementing the “Login page”
      • Prototype
      • Prototype
    • Stage 3: Implementing the “Signup page” and “Main Menu”
      • Prototype
      • Prototype
    • Stage 4: Implementing the “Create Class Form”
      • Prototype
      • Prototype
    • Stage 5: Implementing the “Create Student Form”
      • Prototype
      • Prototype
      • Prototype
    • Stage 6: Implementing the “Update User Form”
      • Prototype
      • Prototype
    • Stage 7: Implementing the “Select Class Form”
      • Prototype
      • Prototype
    • Stage 8: Implementing the “Create Report Form”
      • Prototype
      • Prototype
    • Stage 9: Implementing the “Select Student Form”
      • Prototype
    • Stage 10: Hashing and Positioning.................................................................................................
      • Prototype
      • Prototype
  • Section 4: Evaluation
    • 4.1 System and End-user testing
      • Usability Testing
      • System testing
      • End-user testing
    • 4.2 Evaluate the solution
      • Evaluating the solution to the success criteria...
      • Effectiveness of usability features
      • Further Development
      • Limitations and potential improvements
  • Maintenance Issues..................................................................................................................

Section 1: Analysis

1.1 Features that make the problem solvable by computational methods

Problem Identification

pascal
Teachers in Graveney School are required to write reports. It is reported that it takes around 10 to 15 minutes per
teacher, on a single student???s report. This means a teacher spends an average of 5 hours, to write reports on a
single class. Creating a system to write reports would reduce the time taken for a teacher to write reports. Having
this problem solved means a reduction in stress for teachers. It will also save a lot of time, where they can be
doing something else, such as creating test for students.

Solving the Problem

pascal
The system will take data of a student through generic multiple-choice questions, and automatically create reports
and generate teacher???s comments. Each multiple-choice question will have around four to five possible selections,
with each being a phrase (two to four words), to make it as effortless as possible for the user. There will be a
minimal amount of data needed to be input by the user to reduce time taken for a report. The aim is to create a
report of an individual, using the selected phrases, for example:
pascal
This would then be used to create the report

System needs

pascal
The features of a computer system that would be required for this solution would be a computer with hardware
being able to run a suitable operating System for the software to run on.
pascal
The problem is suitable for a computational approach as reports comments are needed to be automatically
generated through multiple choice questions. This can be done using an algorithm, which can me coded. Also the
reports are electronically sent to the student???s parents.

1.2 Suitable stakeholders

The stakeholders for this solution will be Alex Wino and Deepak Patel, both teachers of Graveney School. They will be a good representative of for the solution as they are required to write reports about their students, and the solutions main purpose is to reduce the time it takes them to write reports.

The system will be created for Graveney School. Mr Wino is a teacher of age, within Graveney School, who finds it hard learning how to use computer applications. He will fit the role of making sure the system is user friendly and the user interface is understandable.

Mr Patel is a computer science teacher and he will be one of the stakeholders. He will be managing what the program should do. He will also be discussing what data should be stored. Mr Patel also be the admin of the system, and have access to view the database. When a user forgets their password, Mr Patel will send the password to the email.

My stakeholders are going to represent the users of this system. They are going to show me what the user’s needs are. All teachers of Graveney School will be able to use this solution, to create reports.

pascal
E.g. how is {student name} effort in class?
1) Excellent
2) Good
3) Unsatisfactory
4) Very Poor

Information Gathering.......................................................................................................................

Planning

pascal
I will be carrying out one to one interview, with my stakeholders, to see why my system is needed for teachers???
problems. I will be asking one of the problems of the existing system, and the other what is needed from my
system. Later on, I will be setting up a second interview with Mr Wino to analyse the current system in hand, and
conclude the major problems with it.
pascal
Finally, I will be collecting the problems of the current system my stakeholders, Mr Wino, uses.

Interview – what the system needs (Mr Patel) [18/09/2022]

pascal
Why do you want this system?
It???s hard to write reports. Sometimes I don???t know what to write. I???m not great with English either. On top of that
it???s really time consuming to write reports, takes up a lot of time at home in which I could be relaxing or could be
marking test on time for my students.
pascal
What is the main thing the system needs to be able to do?
Reduce the time for us to right reports which are actually good and aren???t tedious to read. It should be able to
process a well-written comment along with clearly stating the effort and behaviour in lessons for the student.
pascal
Is a questionnaire system good idea to write reports?
It is a good idea, however as I said before, it should be able to write student comments in detail. On top of that,
there should be a minimum number of questions and they should be short questions so that they could be
answered quickly by teachers.
pascal
Is the student???s reports comments and grades required to be saved on the database (This would allow users to
review the report of the student whenever they want.)
Without it being able to save data, it would be really hard to use the program, as it would require users to
manually save it, therefore the system has to be able to store data somehow. It will also give teachers access to
view the progress in a student???s grade over time.
pascal
How do you think student data should be stored?
Teachers don???t just use one classroom, therefore there has to be a database system that can save data so that it
could be accessed on any computer, as if it was to be saved locally, most of the time we wouldn???t be able to
access the data of students that we have put into the system, and then the system would be useless.
pascal
Do you think it is useful for the system being able to create a finalised student report as a pdf?
As much as it would be great to have a system that would allow users to export the reports, the school already
has a system which is able to create reports using comments and grades, and the same system is used for other
purposes, for example it is used to register for attendance. The system is called Sims. It already has all the
students and their parents??? details stored in it and has no issues.
pascal
A problem that may occur would be that a minority of teachers may not like the system. If the school relied on
the program to create the report that is sent straight to the parents, all teachers would be required to use the
system so that their evaluation of the students could be included in the reports.
pascal
However, an option which is able to export the student???s data, which has been inputted by teachers using the
system, into a pdf file, could be a good idea as it could save time by having all the students report data needed
to be put into sims in one single file. On top of that it could be safely stored elsewhere as a backup.
pascal
Should teachers be able to view students??? progress in other classes, written by other teachers?
Yes, it will show teachers what subjects the student is strong at and if there is a change in behaviour and effort
in other classes or not.
pascal
Summary: Program should be easy to use, should be able to generate report using questions and take grades.
Users should be able to save data and export reports. Graveney School uses a system called Sims where the report
comment will be copied from the system by the user.

Survey

pascal
Planning
I will create a small survey in google form, for 10 teachers to complete, to find out if the needed features stated
by Mr Patel, is also a solution for other teachers.
pascal
Survey Illustration

Survey results

pascal
Summary
The results show that most teachers do switch rooms a lot during the day, meaning the feature of a database to
store data, so that it can be accessed on any computer, is going to be necessary. They also show that it takes
most people 15 ??? 20 min to write a teacher???s assessed comment for a student. Moreover, at least one teacher,
who already has a system, said that this system is still required, and overall, most people said it is required.

Email – Design of the system [Mr Wino]

pascal
Summary
I and Mr Wino communicated via emails on how the system should look like. He requires that the system has a
light colour and easy to read font sizes. He also stated that the system should show that it???s made for Graveney
School.

Information on how student classes work in Graveney

pascal
Each student is put into a single form class throughout year 7 to year 11, and year 12 to year 13. The student
remains in the same form. Till year 11(if in secondary) or year 13(if in sixth-form). The form classes name???s is a/ are
alphabetical letter(s). Year 12 and 13???s consists of three letters, whereas year 7 to 11???s consists of only one letter.
Form classes pupils are mixed up for lessons.

Interview – Problem with the Existing System (Mr Wino) [1 to 1 on zoom at 16:30]

pascal
These are some problems stated by Mr Wino about the current system. It shows some examples of what I should
prevent when creating the system. One problem that I noticed using the system was you have to restart the
system every time you save your data.

Graveney School Classes Format

pascal
The data of Class Name format was collected so that the system can validate it.

Graveney School finishes at year 11 and year 13 for students. A form class of a student’s stays the same throughout secondary year 7 – 11 and throughout 6th form year 12 – 13. The name of the class also stays the same throughout those years. In some

occasions, the student may find themselves switching class between years 7 – 11.

pascal
Year 7 to 11 Class Name consists of only one character
pascal
Year 12 and 13 (6th Form) Class Name consists of three characters

1.3 Existing solutions

Solution A

pascal
Summary
Solution A is a system made in excel. It is a system that is currently used by Mr Wino. Mr Wino also stated the
problems with this system in the interview.
pascal
How the system works?
The system displays multiple sentences, for teachers to select and add to the student???s comment. It is made to
solve the same probem. Its purpose is to make it easier for teachers to write report comments and reduce time
taken.
pascal
Parts I can apply to my solution
One of the features is that it substitutes the name and pronoun in the sentences as shown in Figure A_1. This is
a feature that is required for my system, for the flow of the comment and to direct it to the student its written
for.
pascal
Another feature is that it allows users to edit the students report comment. This is a good feature that is
required for the solution, as there are some specif things that maybe needed to be added into the report
comment, by the teacher, which the program may not be able to generate.
pascal
Another feature is that it allows the user to save the students name and comment, allowing them to access and
alter it whenever they want to. This is required for the solution as the stakeholder, Mr Patel, stated the system
should be implemented in such way that data should be able to be accessed from anywhere.
pascal
Parts I cannot apply to my solution
One feature is that it sorts the comments using a scroll bar and through colour coordination. This is good
feature for this system, however my system will not give an option to choose. Instead, my system in going to
focus on generate the whole comment using the answers from each multiple choice question, since the issue is
the amount of time it takes teachers to create reports, and this feature opposes the solution.
pascal
Another feature is that it has instructions for the users on how to use the system. This is a good feature
however my system should be simple enough to understand how to use after one to two uses, since the main
pascal
F i g u r e A _ 2
pascal
Order of Comment Selection
Opening, Behaviour, Progress, Strength, Weakness, Closing comment
pascal
F i g u r e A _ 1
pascal
goal is to allow users to create reports with ease and in time restrictions, therefore a help section will not be
implemented.
pascal
Another feature is that it allows users to change the listed comments permenantly, to make the system more
fitted for them. This is a good feature for this system, however as my system will be picking the comments for
the user, depending on how they answer, the user cannot modify the comments in the comment bank as it may
mean that the algorithm wont work. The user may answer something and the program may generate
something totally different due to the user altering the comment. This is not a feature needed as my program
will be speciallised for Graveney School, therefore will have all the comments needed for that school.

Solution B

pascal
Summary
Solution B is a web application. It allows users to login/ create an account for free and write/ generate reports.
It shows a few sentences (less than solution A) to select, but has a lot of drop-down lists to modify the
comment. The web application offers you technical support in a variety of ways: video tutorials, written
instructions, and a feedback and support option. It doesn???t save any of your data.
pascal
Parts I can apply to my solution
One feature is that it allows users to replace the name for the pronoun, Vis versa. This is for the user to adjust
the flow of the comment, making it easier or nicer to read. My system will aim to try have the generated
comment not to have the name or pronoun repeated multiple times simultaneously. I will make use of the
pronoun choices given by this solution, in my system.
pascal
Another feature is that the user can create an account and login to use the system. This is for the user???s data for
any personal settings they have chosen to be saved on their account. In this solution, an example of data being
saved is personal comments written by the user. My solution will take a similar approach where it will allow
users to create accounts and signing to the system, to save the users data and protect it from others accessing
it.
pascal
Another feature is that the user???s login details can be saved. This is a great feature, which makes the system
much easier and user friendly, as well as reducing the time it will take a user to create a report, which is the
purpose of the solution. My solution will require this feature for this reason.

Parts I cannot apply to my solution One of the features that it offers a drop-down list, in the report comment, to input things like the academic year the student is in. As solution B doesn’t save students data, it is a good way to select key information about the student. My solution will not require this feature as users will be required to create students before writing their reports, meaning my system will know the information required, for the student, beforehand.

pascal
Another feature is that the user is required to write half of the comment. The system only gives the beginning
and the end of a sentence, and allows the user to write anything about the student in the middle. This does not
justify the solution as it then requires more time for the user to right the report. My system should auto
generate the whole comment, and give an option to edit the comment.

Another feature is that it provides the user technical support by contacting them. My system will be made for one school, therefore technical support will be available by an IT technician working at the school, who will know on how to use the system, therefore a contact us section within the system will not be needed.

Another feature is that it provides the user a thesaurus on the web application. As my system will generate the comment, I will not require a thesaurus for the user.

Another feature is that it provides the user technical support by contacting them. My system will be made for

one school, therefore technical support will be available by an IT technician working at the school, who will know on how to use the system, therefore a contact us section within the system will not be needed.

1.4 Features of the proposed computational solution

The user will be able to register using their details and login to use the system (meeting the requirements 4.1 and 5.1). The system will have a simple design for the program unique to the school (requirement 6). The system has to

allow users to register so they can use the system. Having an account is required. This is a feature adapted from solution B from the existing solutions.

The login form will make sure that the user has an account (requirement 4.2). When a user will create an account, their inputted data will be checked that it follows the standard form (requirement 5.2), and checked if the account doesn’t already exist (requirement 5.3).

The user will be able to update its name, email and password (requirement 9)

The user will be able to create, delete or edit a student (requirement 11) on their account, once signed in. The user will have an option to read previous reports of the user and delete them if they want too (requirements 15.1 and 15.2). The user should also be able to export reports as PDF (requirement 15.3)

The user will be able to create, delete or edit a class (requirement 13) on their account, once signed in. The user should be able to view all students in an existing class.

The user will be able to create reports by completing a multiple choice quiz (requirement 14).

The user will be able to view a report after it is created (requirement 15.1). This is a feature seen in solution A which will be used in my system as well. The system must also display reports with correct pronouns as seen in solution A and B in existing solutions.

The user will be able to export the report as a pdf to share it to anyone through email, etc. (requirement 15.3). As seen in both Solution A and B from existing solutions, the user must be able to edit the report (requirement 14.3).

The user will be able to share students and its data to other users through the system efficiently (requirement 16).

1.5 Limitations of the proposed solution.........................................................................................

One of the limitations is that the email system cannot be implemented as the Graveney School SMTP server could not be set up with the system. An email system would be recommended to verify a user, and make sure all data stored

within the system is accurate, following the GDPR.

Another limitation is that users won’t be able to have a pdf containing multiple reports, as it will increase the complexity of the program which would increase the time needed for the solution. Due to the time restraint, it will not be possible to implement this in my solution.

Another limitation is that there cannot be a student with the same first and last name in a class. This is because it will require teachers to enter more details about students, to prevent them from getting mixed up, which defeats the purpose of this solution (purpose: to generate reports in a shot given time and save them). Moreover, it is rarely seen, where two students have identical first and last names as each other, therefore it won’t have an effect on the users experience of the system.

Another limitation is that the user’s login details will not be able to be saved. This was a feature that was seen in

solution B, however due to the complexity of the computational solution of this problem, along with the limited development time to meet, it will not be possible to meet this requirement for the proposed solution within the limited time. It is not a significantly important requirement for the solution of the problem, hence to complete the solution within the development time, it will not be met.

1.6 Requirements for the solution including hardware and software requirements

Hardware Requirements for the System

Number Feature Explanation and Justification

(^0) The system database must take as little storage as possible for the solution. The school does not want the system database to take a lot of storage on the school server. 5GB is given as an average consumption on storage the system should take after a term worth of use. 1 A computer with i5 processor with basic I/O peripherals. The school already has computers setup which use a keyboard and mouse. The school is going to using its current systems. Each computer has an Intel core i5 2nd generation with 8 GB ram. The system must be compiled for an x86-64 processor. (^2) The system must work efficiently with a 720p and 1080p resolution monitor The school consists of only 720p and 1080p monitors, therefore to make it easier for users, the system forms must be smaller than 720p as then users won’t need to repeatedly scroll to use the system.

Software Requirements for the System

pascal
Number Feature Explanation and Justification
3 .1 The solution must
be able to run on
Windows OS
pascal
The schools??? computers run on windows operating system and all
teachers know how to use it.

3.2 (^) Microsoft access 2016 software and licence The system must have Microsoft access to access the database, needed for the administration team. The school already has a license and all office applications installed on the server, available to be used by each computer system connected. 3.3 (^) Delphi 2007 The school administrators understand Pascal programming language and the school has the license and software of Delphi 2007 installed.

Features for the system

pascal
Number Feature Explanation and Justification

4 .1 (^) Clients Should be able to login using an email and password Login used to store client’s data within database so that their data can be accessed from anywhere within the school as stated in the interview on 18th September. An email is used to identifying an individual, and password to verify. 4.2 (^) System should inform the client if the entered email or password is incorrect, or if there are missing values. This validation is to make sure that a user, without an account, cannot just enter random values and break into the program. This is to make it easier for user to identify what they have entered incorrectly. 5.1 (^) Clients should be able to Create an account on the system. User should be able to create an account to login and use the system. Their data should be stored within the database within the correct fields. The system only requires their first name and last name. 5.2 (^) The system must check if the account already exists. The system should be able to validate if the account already exists to stop data redundancy, and allow the system to function properly. The Client should be informed, so that they don’t assume there is an issue with the system. 5.3 (^) The system must tell the client if the account has been created. A message to client will confirm to them that they are able to login and use the system.

5.4 (^) The system must tell the client if the account has not been created with the reason. This is to make sure the client is aware their account has not been created, so they don’t assume it has been created and attempt to login. Giving the reason of why their account has not been created makes it easier for the client to correct any invalid data entered. 5.5 The system must make sure the password entered, when creating a new account, is valid. The password must include at least one digit and have a length greater than 8 for security reasons. This reduces the chance of an account getting hacked. 5.6 (^) The system must make sure the name entered, when creating a new account, is valid. A name must include only characters of A-Z. This is to make sure the data stored in the database, of system users, is accurate. (^6) The program must have a standard appearance with a font large enough to read. The form should be a light formal color and will have a font, which is big enough for users with weak eyesight to read. The program should also show that it belongs and is created for Graveney School. (^7) The system must verify the users email When a user signs up, the system should be able to verify that the email is valid. This is to make sure valid data is stored within the database, so space is not wasted. 8.1 (^) Once logged in, program must display the main menu. Main menu will be a form linking multiple other forms with different purposes to solve the problem. The user has to be logged in to use the system. 8.2 (^) Main Menu should display Client’s name This is to indicate that they have been logged into their account. Conformation to user that it’s their account they are currently logged into. 8.3 (^) Client should be able to open forms from main menu. Forms will be linked to the main menu. Each form will meet requirements of the solution (requirements 9... 16 ). 9.1 (^) Clients should be able to edit their account details According to GDRP, users have a right to update any incorrect data, and data must be accurate. They may need to update email. User’s need to have access to their email’s, as if they forget their password, the admin will send the password to only that email address, for security reasons. 9.2 (^) All signup requirements are to be applied to Update account When updating account, the same validations need to be carried so that when the user does not update their account to an invalid email, name or password. 9.3 (^) Clients should be able to delete their account Legally the user has rights of what data is stored of them within the system. If the user does not require the system anymore, they should be offered an option to delete their data. 10.1 Clients should be able to create a student There should be a form allowing users to enter student details and creating a student. This will allow them to create and save reports of students. It will also prevent them to enter the student details every time creating a report. 10.2 (^) The system should inform the client when the student has been created A response ensures to the user that the student has successfully been created and they can close the form, without losing any data. 10.3 (^) The system should store the Name, Gender and Class of the student. One of the details needed will be the gender of the student. This is so that the system can generate the report with the correct pronouns of the student.

pascal
Other details needed will be what class the student belongs to, and the
name of the student. Identifying a student to a class allows the user to
find the student in the system much faster when creating the students
report, by giving the user a filter option.

10.4.1 (^) The system should check if the student already exists The system should be able to check if the student already exists to stop data redundancy, and allow the system to function properly. 10.4.2 (^) Clients should be informed if the student already exists The Client should be informed, so they know why the student isn’t being create, otherwise they may assume it’s a problem within the system. It also makes them aware that the student already exists, so they can stop attempting to create it. 10.5.1 The system should validate the student’s name. A name must include only characters of A-Z. This is to make sure the data stored in the database, of system users, is accurate. 10.5.2 Clients should be informed if the name entered is invalid Clients should be informed to make sure they are aware the name entered is invalid, and is preventing them creating the student, so they can correct the name entered. 10.6 (^) The system should display existing classes, when creating a student. The system should have a drop-down box, showing all of the existing classes of the user, when creating a student. This makes it easier for the user to create a student, as they can confirm if they have created the class that the student belongs in, rather than typing it in and receiving error relating to the class entered not being found. 10.7 (^) When creating a student, Client should be able to filter class by year. Allowing the user to filer the classes displayed by year will make it easier for the user to find the class. 11.1 (^) Clients should be able to update student details The system should have a form where clients can edit students’ details. A reason this feature is required is to make sure the data stored is accurate. Students can change classes between year 7 – 11, and users will have to update the changes. 11.2 (^) Clients should be able to delete students Deleting students will also delete any reports related to the student, wiping all of the student’s data within the database. This is to make sure there is no useless data stored, and users have control on their data. 12.1 (^) Clients should be able to create a class. The system allows users to sort their students in the student’s correct class, making it easier for them to view the student, when creating or viewing a report, or updating the student. 12.2 (^) Clients should be informed if the Class already exists. The system should be able to check if the class already exists to stop data redundancy, and allow the system to function properly (will make it impossible for user to differ between the classes, and won’t know which class has the student within it). The Client should be informed, so they know why the class isn’t being create, otherwise they may assume it’s a problem within the system. 12.3.1 (^) The system should be able to validate Class Name. Graveney School uses letters as names of class. For year 7-11, it consists of only one letter. For year 12 and 13s, it consists of 3 letters. The system must make sure a valid name is entered. 12.3.2 Clients should be informed if the name entered is invalid Informing them the name is invalid in the form, will make them know what needs to be corrected. It saves time for the user, as it means they don’t have to find the reason of why the class is not being created. It also indicates to them that the class has not been created. 12.4.1 (^) System should make sure a year is selected The class will not be viewable by the user if a year is not selected. Not having a year for a class will create errors within the system. Useless data should not be kept within the database which will have no use for the system.

12.4.2 (^) Clients should be informed if form is not completed Informing them will inform them that the class has not been created, and that they need to fill in the form fully to create the class. 13.1 (^) The system should allow clients to update classes details If they have entered the class details incorrectly, the system should allow them to edit the details rather than deleting the class, as when the class is deleted, so are all the students and reports of the students within the class. Reasons of them needing to update the details could be if the entered name was incorrect, or if a new academic year has been started. 13.2 (^) The system should allow clients to delete classes The system should delete the class, along with all students and their reports. 13.3 (^) Clients should be given an option to increment the year of all classes by pressing a single button The system should allow users to increment all class years by one, by pressing a single button, saving them time to update it individually at the beginning of every new academic year. All classes with year = 11 or 13 will be deleted as that’s when they finish Graveney school. 14.1 (^) The system should allow clients to create reports on students The main purpose of the system is to be able to create a student report. It is required for the system to include the students comment, grade, attendance, punctuality, and grade, from the data collected by the teacher/ user, in the report. 14.2 The system should generate a teacher comment The comment will be generated using the comments in the comment bank table within the database. The system will ask a series of multiple-choice questions to the user, about the student allowing it to generate the comment. 14.3 (^) The system should allow clients to edit the comment after it is generated. If the comment generated is too generic, and the user wants to write something specific about the student, they should be able to edit the comment. 14.4 (^) The system should make sure all data entered is valid before creating the report The system should be able to validate the data entered by the user. The attendance and punctuality values must be a valid percentage, and the grade must be a single character, either a digit or alphabet. No data should be null. The system should display a suitable error message if there is a null or invalid value, informing the user on how to correct it. 15.1 The system should allow clients to view the reports The system should display the report to the user once created. It should also allow users to view any other reports created in the past. 15.2 The system should allow clients to delete reports The system should make sure that any unused data should be removed from the database. Moreover, the system will not give an option to edit a report, as it will require users to do the questionnaire again. Instead, the system will allow users to delete the report and create a new one. 15.3 (^) The system should allow clients to export students’ data as a PDF file One of the requirements stated in the interview was to allow users to export student’s reports, into one PDF file, making it easier submitting the reports of a student into sims. (^16) The system should allow users to share students This will allow users to write reports, which can then be viewable by other users, that the user has shared the student too. This will also prevent the same student being created by separate users which will save data. (^17) The system should hash the password The system should store the hashed password in the database. One reason for this is to prevent data of users being stolen and accounts being hacked.

1.7 Success criteria

pascal
Number Criteria Justification
1 User is able to login with their email and password
to access their account
pascal
Shows a login form for user to enter their details
and open main menu. Requirements 4 and 8.1.
2 User must be able to create an account with
name, email and password
pascal
Shows a Signup form for the user to enter their
details for their account. Requirement 5.
3 User must be able to edit or delete their account
details
pascal
Shows an update account form for the user to edit/
delete their details. Requirement 9. User can open
form from main menu, requirement 8.3.
4 User must be able to create a school class with
form name and year
pascal
User opens create class form, from main menu,
where the user can create a class. Requirements 8.3
and 12.
5 User must be able to edit or delete any school
class
pascal
User opens select class form, from main menu,
where the user can edit/ delete a class???s detail.
Requirements 8.3, 13.1, 13.2.
6 User must be able to increment the year of all
school class by pressing a button
pascal
User opens select class form, from main menu,
where the user can increase all years by one,
deleting current year 13 and year 11 classes.
Requirement 13.3.
7 User must be able to create a student with
student name and class.
pascal
User opens create student form, from main menu,
where the user can create a student. Requirements
8.3 and 10.
8 User must be able to edit, share or delete any
student
pascal
User opens select student form, from main menu,
where the user can edit, share or delete a student.
Requirements 8.3, 16 and 1 1.
9 User must be able to create a report of a student
by completing a multiple choice quiz
pascal
User opens create report form from the main
menu. The user selects a student and answers the
multiple-choice questions. The user is able to create
a report. Requirement 14.
10 User must get an option to export the report as a
PDF or copy the comment
pascal
Users screen displays view report form. The user
can either read, copy or export report. Requirement
15.3
11 User must be able to view, edit and delete reports
after they have been created
pascal
User opens select student form and selects a
student. The user clicks on a report and the report
is displayed in view report form. The user can also
delete that report in select student form.
Requirement 15.1 and 15.2

Section 2: Design

2.1 Decomposing the Problem

Illustration of the solution

This is a hierarchy diagram illustrating the solution of the problem. It gives a draft of the key parts needed to solve the problem further broken down. Each rectangle is broken

down to a sub problem.

In the account stage of the system, the user must be able to login or signup. The system will open on Login and will allow the user to switch to sign up. At login the user will be

able to login to the system allowing the user to use the systems features, such as class, students and create report. At create, the user will be able to create an account to login and use the system.

In the class stage, the user will be able to create a class. Classes will be used to group students into different categories. In the select stage, the system should allow the user to edit the classes or view any statistics of a class required, like the students in a class.

In the student stage of the system, the user will be able to create a student. This will be used to save the reports to an individual student, for the solution. The select section, the

user will be able to view reports created of the user in the past and export them as a pdf.

In the create report stage of the system, the user will be able to create reports. The system must auto generate the report and its comments when the user enters the data and completes the multiple choice quiz. There will be 6 multiple choice questions, each of the following topic: behaviour, effort, homework standards, understating the content, work at target, and contribution, generate the students report comment. These topics have been chosen by researching and evaluating solution A seen in section 1.3.

2.2 Structure of the solution

Setting up the Entity Relationship Diagrams

pascal
Staff (StfID, FirstName, LastName, LgnID)
pascal
Login (LgnID, Email, Password)
pascal
Student (SdtID, FirstName, LastName, classID)
pascal
Report Info (RptInfoID, attendance, punctuality, grade, subject)
pascal
Class (ClassID, Name, year, StfID) //form class, a student only has one form class
pascal
Comment Bank (CmbID, type, comment, level)
pascal
Report Comments (RptID, CmbID) //stop other foreign keys from repeating over and over again
pascal
Report (RptID, attendance, punctuality, grade, subject,dateCreated, SdtID)
pascal
Here there is an illustration of the Relationship between each entity in the database. A user can only have one
account hence a one-to-one relationship between Login and Staff. A user can create multiple classes, hence a one-
to-many relationship between staff and class. A student can only be in one form class, and a class can have
multiple students, hence a one-to-many relationship between class and student. A report is created on a single
student, and a user will be able to create multiple reports on a student hence a one-to-many relationship between
student and report. A report will consist of a comment. That comment will be made up of parts from the comment
bank table. There is a many-to-many relationship between comment bank and report. Report comment table is a
linking table.
pascal
To conclude
pascal
This section sets the structure of the database. It shows the entities of the database and its attributes. It also
illustrates and explains the relationships between each entity in the database. This is an initial idea of the database
I will be using to solve the problem. Changes may occur later on in implementation, however this sets a main idea
of what my system should store and what it should do.

Login Staff

Student

Class

Comment

Bank

Report

pascal
Report
Comment

Interface Design

pascal
The aesthetics of the Graphical Interface is important as it will be what the user will be interacting with to use the
system, therefore should be appealing.
pascal
Visualising the designs shows me how the application should look like, and give me a change to make any changes,
before the development stage.
pascal
Login Form
pascal
The login form is needed to complete requirement 4.1. All components are labelled correctly to its function in
the program, making it easier to use the system. It has a light colour and a big enough font to meet
requirement 6.
pascal
Error in here
pascal
The error will be displayed
here, e.g., incorrect
password. This is to
complete requirement 4.2.

Email

Password

pascal
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.
pascal
Text boxes font Tahoma size 15.
Both indicate what to input in
each box.
pascal
The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by
  1. This meets requirement 2.
pascal
Button to login. Font Tahoma
size 20.
pascal
Go to sign up page link. Font
Tahoma size 8.
pascal
Sign up
pascal
Signup Form

The signup form is needed to complete requirement 5 .1. All components are labelled correctly to its function in the program, making it easier to use the system. It has a light colour and a big enough font to meet requirement 6.

Email

Password

pascal
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.
pascal
Text boxes font Tahoma size 15.
Both indicate what to input in
each box.
pascal
Button to Sign up. Font
Tahoma size 20.
pascal
The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by
  1. This meets requirement 2.

First name Last Name

pascal
Main Menu

The main menu form is needed to complete multiple requirements, as it links multiple forms the user will need for the solution. It has a light colour and a big enough font to meet requirement 6.

pascal
Create Class Form

The create Class Form is needed to meet the requirement 12. It has a light colour and a big enough font to meet requirement 6. Resolution is 240 by 150, forms should at least fit a 720p monitor, hence meets requirement 2.

pascal
Button to open different
forms. Each button is telling
what form it will open, and
the function of it. These
Forms are created to meet
requirements 10, 11 and 12.
Font Tahoma size 16
pascal
Opens User account settings,
where the user can update
or delete account, to
complete requirement 9.
This is where the users name
will go. Font Tahoma size 14.

Form Name:

Year:

Create

pascal
Font Sans Serif with size 14.
Label indicates what needs to go
inside the textbox
pascal
Font Sans Serif with size 14. Label
indicates what the values of the
combo box are.
pascal
Font Sans Serif with size 12. Button
to create class.
pascal
Create Student Form

The create student Form is needed to meet the requirement 10. It has a light colour and a big enough font to meet requirement 6. Resolution is 245 by 220, forms should at least fit a 720p monitor, hence meets requirement 2.

pascal
Select Class Form

Resolution is 400 by 400, forms should at least fit a 720p monitor, hence meets requirement 2. All font styles are Tahoma. The titles are font 18. It has a light colour and a big enough font to meet requirement 6. The select class form is needed to meet requirements 13.1 and 13.2.

pascal
Font Tahoma with size 12. Label
indicates what needs to go
inside the textbox
pascal
Font Tahoma with size 12. Label
indicates what the values of the
combo box are.
pascal
Font Tahoma with size 8. Button to
create student.
pascal
Displays
students inside
here, font 8
pascal
Combo box and text box, font
size 12
pascal
Button font size 12
pascal
The header colour is #778f8f.
pascal
Table font size
12
pascal
Select Student Form

Resolution is 480 by 250, forms should at least fit a 720p monitor, hence meets requirement 2. The header colour is #778f8f. All font styles are Tahoma. The titles are font 18. It has a light colour and a big enough font to meet requirement 6. The select student form is needed to meet requirements 11 and 15.

pascal
Update Form
pascal
Buttons with font size 8
pascal
Text boxes along with
labels of font 12
pascal
Table with font size 12
pascal
Combo Boxes with font 12.

Email

Password

pascal
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.
pascal
Text boxes font Tahoma size 15.
Both indicate what to input in
each box.
pascal
Button, Font Tahoma size 20.
pascal
The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by
  1. This meets requirement 2.

First name Last Name

Gender Class^

The update form is needed to complete requirement 9. All components are labelled correctly to its function in the program, making it easier to use the system. It has a light colour and a big enough font to meet requirement 6.

pascal
Create Report Form

Resolution is 785 by 565, forms should at least fit a 720p monitor, hence meets requirement 2. The header colour is #778f8f. All font styles are Tahoma. The title is font 36. It has a light colour and a big enough font to meet requirement

  1. The create report form is needed to meet requirements 14.
pascal
Report Comment Form
pascal
Displays report comment in
here in font 8
pascal
Text boxes with font 18
pascal
Button font 8
pascal
Label with font 8
pascal
Label to display question with
font size 14
pascal
Text boxes with font 12
pascal
Radio buttons to select answer
with font size 18
pascal
Combo Boxes with font 12
pascal
Buttons with font size 8, general
size is around 40 by 15
pascal
Resolution is 500 by 250, forms should at least fit a 720p monitor, hence meets requirement 2. The header colour is
#778f8f. All font styles are Tahoma. It has a light colour and a big enough font to meet requirement 6. The report
comment form is needed to meet requirements 15.1 and 15.3.

Conclusion

pascal
After creating my initial designs for the system, I showed it to my stakeholder, Mr Wino. He was pleased
with the design and thought it is suitable for the systems purpose. He did want the report comment
form to display the student???s name. Here is an updated version of the Report Comment form...
pascal
Student Name is put here. Font
size 14.

Data dictionary

pascal
I am creating a data dictionary to outline the requirements of values in each of the fields, needed in the tables, in
the database. This and the entity relationship diagrams set out in 2.2 will make it much easier for me to create the
database.

Table name: login

pascal
Purpose: This will be used to store the user???s login details so they are able to access the program.
pascal
Field
Name
pascal
Required? Data Type Sample Data Validation
Rule
pascal
Validation
Type
pascal
Description and
key field
LgnID Yes AutoNumber ??? 1 ??? Must be
unique.
Must be an
integer.
pascal
Type
check.
Presence
check.
pascal
Primary key
pascal
Email Yes VarChar ???rayaanuddin@gmail.com??? Must be
unique.
pascal
Presence
check.
-
pascal
Password Yes VarChar ???Rayaan10??? Must be
less or
equal to 32
characters.
pascal
Length
check.
Presence
check.
-

Table name: Staff Purpose: This will be used to store the user’s name.

pascal
Field
Name
pascal
Required? Data Type Sample
Data
pascal
Validation Rule Validation Type Description and
key field
StfID Yes AutoNumber ???12??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Primary key
pascal
FirstName Yes VarChar ???Rayaan??? Must be unique. Presence check.

-

pascal
LastName Yes VarChar ???Uddin??? Must be greater
than 8 characters
pascal
Length check.
Presence check.
-
pascal
LgnID Yes Integer ???1??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Foreign Key

Table name: Class

pascal
Purpose: This will be used to store the classes created by the user.
pascal
Field
Name
pascal
Required? Data Type Sample
Data
pascal
Validation Rule Validation
Type
pascal
Description and
key field
classID Yes AutoNumber ??? 3 ??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Primary key
pascal
Name Yes VarChar ???B??? Length must be less
than or equal to 3
Must only be
alphabetical.
pascal
Presence check.
Length check.
Type check.
-
pascal
Year Yes Integer ??? 7 ??? Must be a single
integer.
pascal
Length check.
Presence check.
Type check.
-
pascal
StfID Yes Integer ???12??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Foreign Key

Table name: Student Purpose: This will be used to store the classes created by the user.

pascal
Field
Name
pascal
Required? Data Type Sample
Data
pascal
Validation Rule Validation
Type
pascal
Description and
key field
SdtID Yes AutoNumber ??? 6 ??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Primary key
pascal
FirstName Yes VarChar ???Elena??? Must only be
alphabetical.
pascal
Presence check.
Length check.
Type check.
-
pascal
LastName Yes VarChar ???Yale??? Must be a single
integer.
pascal
Length check.
Presence check.
Type check.
-
pascal
Gender Yes VarChar ???Female??? Must only be
alphabetical.
pascal
Type check.
Presence check.
classID Yes Integer ???3??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Foreign Key

Table name: Report

pascal
Purpose: This will be used to store the details of a report once created by the user.
pascal
Field Name Required? Data Type Sample
Data
pascal
Validation Rule Validation
Type
pascal
Description and
key field
RptID Yes AutoNumber ??? 6 ??? Must be unique.
Must be an
integer.
pascal
Type check.
Presence
check.
pascal
Primary key
pascal
Attendance Yes Integer ??? 100 ??? Value must be
less than or equal
to 100.
pascal
Value check.
Presence
check.
Length check.
Type check.
-
pascal
Punctuality Yes Integer ??? 95 ??? Value must be
less than or equal
to 100.
pascal
Value check.
Presence
check.
Type check.
-
pascal
Grade Yes VarChar ??? 8 ??? Length must be
One.
pascal
Presence
check.
Length check.
Type check.
Gender Yes VarChar ???Female??? Must only be
alphabetical.
pascal
Type check.
Presence
check.
DateCreated Yes Date/Time ???08/06/2005??? Must be format
DD/MM/YYYY
pascal
Type check.
Presence
check.
Format Check
SdtID Yes Integer ???6??? Must be unique.
Must be an
integer.
pascal
Type check.
Presence
check.
pascal
Foreign Key

Table name: Comment Bank

pascal
Purpose: This will be used to store the comments which the algorithm will select when generating the report.
pascal
Field
Name
pascal
Required? Data Type Sample Data Validation
Rule
pascal
Validation
Type
pascal
Description and
key field
cmbID Yes AutoNumber ??? 1 ??? Must be
unique.
Must be an
integer.
pascal
Type check.
Presence
check.
pascal
Primary key
pascal
type Yes VarChar ???Opening??? - Type check.
Presence
check.
-
pascal
level Yes VarChar ???Green??? - Presence
check.
Type check.
-
pascal
comment Yes VarChar ???{name} has made
very good progress
this year, consistently
producing work of a
high standard and
displaying a
conscientious attitude
throughout each
lesson.???
  • Type check. Presence check.
-

Table name: Report Comments Purpose: This will be used to link the comments to the reports, linking table.

pascal
Field
Name
pascal
Required? Data Type Sample
Data
pascal
Validation Rule Validation
Type
pascal
Description and
key field
RptID Yes Integer ??? 6 ??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.
pascal
Composite key
pascal
CmbID Yes Integer ??? 1 ??? Must be unique.
Must be an integer.
pascal
Type check.
Presence check.

2.3 Algorithms

This section portrays the key procedures and SQL query’s, required for the solution, will make it much easier when developing the coded solution, giving me a foundation to build off.

Query to get user details:

pascal
SQL Query Justification
SELECT StfID, Email, Password,
firstname, lastname FROM Login INNER
JOIN staff ON (login.LgnID =
staff.LgnID) WHERE email = :userEmail
pascal
This will be used by the system to validate a user.
When the user attempts to login, the email will be
used to find the corresponding account in the
database. This will allow users to login to their
accounts.
Requirements met: 4.1

Query’s to write user details

pascal
SQL Query Justification
INSERT INTO Login(Email, Password)
VALUES (:userEmail,:userPassword)
pascal
This stores the users email and password to the table
login in the database. It is executed in the signup
phase.
INSERT INTO
staff(LgnID,Firstname,Lastname)
VALUES (:loginID,:fname,:lname)
pascal
This stores the users name into the staff table and
references the record of the users email and
password from table login. It is executed in the signup
phase.
This allows the user to create an account.
Requirements met: 5.1

Query’s to Update User details

pascal
SQL Query Justification
UPDATE Staff SET FirstName=:fName,
LastName=:lName WHERE StfID=:staffID
pascal
This updates the users first and last name in staff
table. It is executed in update user detail phase.
pascal
UPDATE Login SET Email= :userEmail,
password=:userPassword WHERE
LgnID=:loginID
pascal
This updates the users email and password in table
login. It is executed in update user detail phase.
pascal
This allows the user to update their account details.
Requirements met: 9.1

Query to Create a Class:

pascal
SQL Query Justification
INSERT INTO class(name, year, StfID
VALUES (:cName, :cYear, :staffID)
pascal
This will be used by the system to store the class
details into the table class and reference the StfID of
the user who created the class. This will allow users to
create a class in the system
Requirements met: 12.1

Query to display users classes:

pascal
SQL Query Justification
pascal
SELECT name FROM class WHERE
year=:cYear and stfID=:staffID
pascal
This will be used by the system to display users
existing classes. This will be used in many forms in the
system such as, select class, create report, create
student form. It is shown in Interface Design most
forms have a section where the user selects the class
and student on the top. This will allow the system to
assign data stored by the user to the correct student.

Query to Update a Class:

pascal
SQL Query Justification
UPDATE Class SET name = :cName, year
= :cYear WHERE classID = :classID
pascal
This will be used by the system to update the selected
class???s record in the table class. This will allow users to
update a class???s details in the system
Requirements met: 13.1

Query to Create Student:

pascal
SQL Query Justification
INSERT INTO student(FirstName,
LastName,Gender, ClassID) VALUES
(:fName,:lName,:gender,:classID)
pascal
This will be used by the system to add a student to
the table student in the database. The class is
referenced. This will allow users to create students on
their accounts.
Requirements met: 10.1

Query to Update Student:

pascal
SQL Query Justification
UPDATE Student SET FirstName =
:FirstName, LastName = :LastName
, Gender = :Gender, classID =
:classID WHERE SdtID = :studentID
pascal
This will be used by the system to update the selected
student record in student table. This will allow users
to update their student???s details.
Requirements met: 11.1

Query to Create Report:

pascal
SQL Query Justification
INSERT INTO Report(SdtID, Attendance,
Grade, Punctuality, Subject,
dateCreated) VALUES (:StudentID,
:Attendance, :Grade, :Punctuality,
:Subject, :dateCreated)
pascal
This will be used by the system to store the report???s
details in the table report in the database.
pascal
INSERT INTO [Report Comments](RptID,
CmbID) values (:reportID,
:reportNumber)
pascal
This will be used by the system to assign the report
comments to the report. This is done in the Report
Comments table in the database.
pascal
This allows the user to create and save a report in the system
Requirements met: 14.1

Query to Get Report:

pascal
SQL Query Justification
pascal
SELECT FirstName, LastName, Gender,
Attendance, Grade, Punctuality,
Subject, DateCreated, Name, Year FROM
Class INNER JOIN (Student INNER JOIN
Report ON Student.SdtID =
Report.SdtID) ON Class.classID =
Student.classID WHERE report.RptID =
:reportID
pascal
This will be used by the system to get the report
details by having the report id.
pascal
SELECT comment FROM [Comment Bank]
INNER JOIN [Report Comments] ON
[Comment Bank].cmbID = [Report
Comments].CmbID WHERE rptID =
:reportID ORDER BY [Report
Comments].CmbID
pascal
This will be used by the system to get the report
comments.
pascal
This will be needed in the report comment form, when displaying the report. This will allow users to view the
student???s reports; needed for the solution.
Requirements met: 15.1

Login Form (Login Algorithm):

pascal
PROCEDURE DatabaseLogin
pascal
IF FormEmpty THEN
ADD SQL SELECT StfID, Email, Password, firstname, lastname FROM Login INNER
JOIN staff ON (login.LgnID = staff.LgnID) WHERE email = :userEmail
pascal
IF No Records Found THEN
PRINT(???EMAIL NOT FOUND???)
ELSEIF Password_entered == Password THEN
Open MainMenuForm
ELSE
PRINT(???INCORRECT PASSWORD!???)
ENDIF
ELSE
PRINT(???COMPLETE THE FORM...???)
ENDIF
pascal
ENDPROCEDURE
pascal
This procedure will be used to validate the user, when logging in on login form. This will contribute to the overall
solution since system uses accounts as a way to assign and store data individually to each user. Having this procedure
allows the user to use the system and have its data secured.
Requirement met: 4

Signup Form (Create Account Algorithm):

pascal
PROCEDURE WriteAccount
pascal
IF isValidEmail AND isValidName AND isValidPassword THEN
pascal
ADD SQL SELECT LgnID from login where email = :userEmail
pascal
IF No Records Found THEN
ADD SQL INSERT INTO Login(Email, Password) VALUES (:userEmail,
:userPassword)
SQL EXECUTE
pascal
ADD SQL INSERT INTO staff(LgnID,Firstname,Lastname) VALUES
(:loginID,:fname,:lname)
SQL EXECUTE
pascal
PRINT(???ACCOUNT CREATED!???)
pascal
CLOSE frmSignup
OPEN frmLogin
ELSE
PRINT(???ACCOUNT ALREADY EXISTS!???)
ENDIF
pascal
ENDPROCEDURE
pascal
This procedure will be used to store a user when account is created in signup form. This will contribute to the overall
solution since to use the system the user has to have an account to login and store data on.
Requirement met: 5

Email Verification:

pascal
FUNTION isValidEmail(email)
pascal
charslist = ['_', '-', '.', '0'..'9', 'a'..'z'];
emailLen = email.LENGTH
FoundAt = FALSE
LastPoint = FALSE
Valid = TRUE
pascal
FOR i=1 TO emailLen
c=email[i]
IF c = ???@??? THEN
IF FoundAt THEN
Valid = FALSE
ELSE
FoundAt = TRUE
ENDIF
ELSEIF c = ???.??? AND FoundAt THEN
LastPoint = TRUE
ELSEIF NOT(c in charslist) THEN
Valid = FALSE
ENDIF
NEXT i
pascal
RETURN Valid
pascal
ENDFUNCTION
pascal
This procedure will be used to validate the users email when creating account in signup form. This contributes to the
overall solution since one of the requirement was data stored must be accurate.
Requirements met: 7 (updated)

Create Class Form:

pascal
PROCEDURE CreateClass
pascal
IF FormEmpty THEN
PRINT(???FILL IN THE VALUES TO CREATE CLASS???)
ELSEIF isValidClassName THEN
ADD SQL SELECT classID FROM class WHERE name = :Name AND stfID = :StaffID
AND year = :Year
IF No Records Found THEN
ADD SQL INSERT INTO class(name, year, StfID VALUES (:cName, :cYear,
:staffID)
SQL EXECUTE
PRINT(???STUDENT CREATED???)
ELSE
PRINT(???CLASS EXISTS...???)
ENDIF
ELSE
PRINT(???INVALID NAME...???)
ENDIF
pascal
ENDPROCEDURE
pascal
This procedure will be used by the system to create a class. The solution requires classes to store students in. It???s a
computational feature for the system, which organises students, making it easier for the user to search a student when
needed to.
Requirement met: 12

Delete Class Algorithm:

pascal
PROCEDURE DeleteClass(ClassID)
pascal
ADD SQL SELECT SdtID FROM student WHERE classID = :ClassID
pascal
for i= 1 to RecordCount
DeleteStudentReports(SdtID)
NEXT SQL
NEXT i
pascal
ADD SQL DELETE * FROM student WHERE classID = :ClassID
SQL EXECUTE
pascal
ADD SQL DELETE * FROM Class WHERE classID = :ClassID
SQL EXECUTE
ENDPROCEDURE
pascal
This procedure will be used by the system to delete a class. The user must be able to delete its data.
Requirement met: 13.2

Create Student Form:

pascal
PROCEDURE CreateStudent
pascal
IF FormEmpty THEN
PRINT(???FILL IN THE VALUES TO CREATE STUDENT???)
ELSEIF isValidName THEN
pascal
ADD SQL SELECT FirstName, LastName FROM student WHERE classID = :ClassID AND
FirstName = :FName AND LastName = :LName AND Gender = :Gender
IF No Records Found THEN
ADD SQL INSERT INTO student(FirstName, LastName,Gender, ClassID) VALUES
(:fName,:lName,:gender,:classID)
SQL EXECUTE
PRINT(???STUDENT CREATED???)
ELSE
PRINT(???STUDENT EXISTS...???)
ENDIF
ELSE
PRINT(???INVALID NAME...???)
ENDIF
pascal
ENDPROCEDURE
pascal
This procedure will be used by the system to create a student. This contributes to the overall solution of the problem,
since it then allows the user to create a report and on a student which is the purpose of the program.
Requirement met: 10

Delete Student Algorithm:

pascal
PROCEDURE DeleteStudent(StudentID)
pascal
DeleteStudentReports(SdtID)
pascal
ADD SQL DELETE * FROM Student WHERE sdtid = :StudentID
SQL EXECUTE
pascal
ENDPROCEDURE
pascal
This procedure will be used by the system to delete a student. The user must be able to delete its data.
Requirement met: 11.2

Create Report Form (Creation):..................................................................................................

pascal
PROCEDURE GenerateReport
pascal
IF isReportFormValid THEN
GenerateReportComment
pascal
ADD SQL INSERT INTO Report(SdtID, Attendance, Grade, Punctuality, Subject,
dateCreated) VALUES (:StudentID, :Attendance, :Grade, :Punctuality, :Subject,
:dateCreated)
SQL EXECUTE
pascal
ADD SQL SELECT RptID FROM Report WHERE sdtID = :StudentID ORDER BY RptID
DESC
pascal
FOR i=1 TO 6
ADD SQL INSERT INTO [Report Comments](RptID, CmbID) values (:reportID,
:reportNumber)
SQL EXECUTE
NEXT i
pascal
PRINT(???REPORT CREATED???)
ENDIF
ENDPROCEDURE
pascal
This procedure will be used by the system to create a report. This contributes to the overall solution as it allows users to
successfully create valid reports and have them saved in the database, so they can access it whenever they want.
Requirement met: 14

Create Report Form (Validation):

pascal
FUNCTION isReportFormValid
pascal
IF isFormEmpty THEN
isInvalid = TRUE
PRINT(???COMPLETE THE FORM...???)
ELSE
IF Grade.LENGTH = 1 THEN
IF NOT(isAlpha(Grade)) THEN
IF NOT(isInteger(Grade)) THEN
PRINT(???GRADE MUST BE ALPHABETICAL OR NUMERICAL???)
IsInvalid = TRUE
ENDIF
ENDIF
ELSE
PRINT(???GRADE IS A SINGLE CHARACTER???)
IsInvalid = TRUE
ENDIF
pascal
IF NOT(isAlpha(Subject)) THEN
PRINT(???SUBJECT NAME MUST BE ALPHABETICAL WITH NO SPACES???)
IsInvalid = TRUE
ELSE
IF isInteger(Attendance) AND isInteger(Punctuality) THEN
IF Attendance > 100 OR Attendance < 0 OR Punctuality > 100 OR
Punctuality < 0 THEN
PRINT(???PUNTUALITY OR ATTENDANCE IS INVALID???)
IsInvalid = TRUE
ENDIF
ELSE
PRINT(???PUNTUALITY OR ATTENDANCE IS INVALID???)
IsInvalid = TRUE
ENDIF
ENDIF
ENDIF
pascal
IsReportFormValid = NOT(IsInvalid)
pascal
ENDFUNCTION
pascal
This procedure will be used by the system to verify the report being created is valid. This is required for the overall
solution of the system, making sure data stored is accurate.
Requirement met: 14.4

Report Comment Form:

pascal
PROCEDURE displayReport(reportID)
pascal
ADD SQL SELECT FirstName, LastName, Gender, Attendance, Grade, Punctuality,
Subject, DateCreated, Name, Year FROM Class INNER JOIN (Student INNER JOIN

Report ON Student.SdtID = Report.SdtID) ON Class.classID = Student.classID WHERE report.RptID = :reportID

ADD SQL SELECT comment FROM [Comment Bank] INNER JOIN [Report Comments] ON [Comment Bank].cmbID = [Report Comments].CmbID WHERE rptID = :reportID ORDER BY [Report Comments].CmbID for i = 1 to Record Count displaycomment = displaycomment + comment end; ReplacePronoun(comment)

ENDPROCEDURE This procedure will be used to display the report comment. This is required so the user can view the report once created or any existing stored ones in the database. Requirement met: 15.1

2.4 Usability features.......................................................................................................................

There are many features, which help the user’s experience using the system. The system, when open, displays the login form. There will be a label on the login form, informing users to click and open the sign up form, if they are new

to the program. This is an easy way for the user to get started straight away and use the system.

In many cases, the program will close a window when it’s known the user does not need it anymore. An example of this will be when the user creates an account, the account window is closed and the login window is opened. This makes the application much more user friendly, as it guides them what to do next to use the system.

Whenever the user will create something, e.g. a student, the system will state it has been created, insuring to the user that the system is working as expected.

When the user goes about to delete an item, e.g. a class, the program will display a confirmation box, just in case of any accidental click. Furthermore, when deleting an item with multiple data stored within it, e.g. a class, which also will delete any students and their data, in the class, the program will inform the user that they are about to delete a x amount of ... , e.g. Students.

All forms needed for the solution will be linked onto the main menu, which opens when the user logs in. All buttons in the system will be named after its functionality, making it easier for the user to use the system. All buttons will also be

highly intractable, making sure the user knows that it is a button. They either become bigger when hovering on top, or will change colour, emphasising that it is clickable. This makes the system to user friendly and is a great feature for the user interface.

The system will have labels next to each text box informing the user what data is required. When the data entered is invalid, the system will inform the user know what is invalid and why in certain cases. The error message displayed

will be written by me when implementing the solution and will be user friendly.

The system will have a consistent font style and theme. It will have the font style of mostly Tahoma, and a size ranging in between 10 and 20, depending on how much data is needed to be fit on the form, since the forms must be able to fit on a 720p screen, requirement 2. The font colour for inputting data will either be white or black, depending on the background colour. Any errors displayed on a form will be red. Each button which opens a form will be a colour changing intractable button, which will change to a dark teal colour from white. All the major forms will have a

background colour of teal. Any other form will have a background colour of white. All forms will have a dark teal heading. This will make the system theme link together.

On login and signup, when the user inputs data, the hints of what should be entered inside the text box will disappear. This allows the user to see what they are entering in clearly instead of their view being partially blocked by default text. When the user inputs an invalid email or password on login, the one which is incorrect will go back to its default

value, letting the user know again what needs to be inputted.

2.5 Key variables / data structures

pascal
Outlining the key variables needed for the program will make it much easier in development stage to know what
each variable is used for and what it holds. It will also let me know what data structures need to be implemented
into the coded solution.
pascal
Having variables and data structures written beforehand will also avoid any repeated code of creation of any
classes, etc.
pascal
This selection will highlight all the key variables and data structures used by the system and its data types. It will
also state if it???s a local or global variable.

Login form: TUserData Record

pascal
Name Data Structure/
properties
pascal
Global/
Local
pascal
Description & Justification
pascal
TUserData Record Global This record is assigned to hold the users data.
This is required as the system will need to
consistently use the user???s details in different
forms.
TUserData.FirstName String Global This will hold the users first name.
pascal
TUserData.LastName String Global This will hold the users last name.
pascal
TUserData.Email String Global This will hold the users email.
pascal
TUserData.Password String Global This will hold the users password.
pascal
TUserData.StaffID Integer Global This will hold the users staff ID, which is used
to assign data to a specific user.

Login form

pascal
Name Data Type Global/ Local Description & Justification
info TUserData Global This object will hold the users details needed
thought the program, once the user logs in. It
is a global variable since it will be needed to
be used by other units.

Signup form

pascal
Name Data Type Global/ Local Description & Justification
Charslist Char Array Local This array will hold all the characters a valid
email can contain. This is required to check if
email entered by user on signup phase is
valid, to meet requirement 7.
FoundAt, LastPoint,
Valid
pascal
Boolean Local These will be used to check for each
requirement of an email when validating it.
Required to meet requirement 7.

Create Report form: Tquestion Record

pascal
Name Data Type Global/ Local Description & Justification
Tquestion Record Global This record holds a question. This is required
to be used to efficiently store the question
and its number separately as different
attributes in an object.
Tquestion.number Integer Global This will hold the question number
pascal
Tquestion.text String Global This will hold the question itself
pascal
Name Data Structure Global/
Local
pascal
Description & Justification
pascal
Tquestion Record Global This record holds a question. This is required
to be used to efficiently store the question
and its number separately as different
attributes in an object.

Create Report form: Tquiz Class

pascal
Name Data
Structure/
properties
pascal
Global/ Local Description & Justification
pascal
Tquiz Class Global This class will store the questions data. This is
required as it will be the main data structure
of a single question in the questionnaire.
Tquiz.question Tquestion Global This will hold the question number and the
actual question. The constructor will add it to
the object. The constructor will set its default
value to...
Number is 0,
Text is ??????.
Tquiz.answerNumber Integer Global This will hold the number of the selected
answer i.e. number between 1 and 4. The
constructor will add it to the object. The
constructor will set its default value to 0.

Store Student (TStudentInfo):

pascal
Name Data
structure/
properties
pascal
Global/ Local Description & Justification
pascal
TStudentInfo Class Global This class will store the details of a selected
student by the user. This will be when the
user selects a student to edit, delete, view or
create reports on.
TStudentInfo.fName String Global This will hold the first name of the student
selected. Will be needed when editing
student or when outputting report.
pascal
TStudentInfo.lName String Global This will hold the last name of the student
selected. Saves time rather than reading it
from database multiple time. Will be needed
when editing student or when outputting
report.
TStudentInfo.year String Global
This will hold the year of the student selected.
Saves time rather than reading it from
database multiple time. Will be needed when
editing student.
TStudentInfo.gender
String Global This will hold the gender of the student
selected. Will be needed when the system
displays a report, need to be outputted in the
right pronouns.
TStudentInfo.cName
String Global This will hold the class name of which the
student is in. Saves time rather than reading it
from database multiple time. Will be needed
when editing student or when outputting
report.
TStudentInfo.id String Global This will hold the stdID from the table student
in the database which matches to the student
selected. This is required for the system to
know which student to allocate/ read data to/
from.

Report Comment form

pascal
Name Data Type Global/ Local Description & Justification
punctuality,
attendance, grade,
subject, studentName,
dateCreated,
classNameYr
pascal
string Global These variables will be set to hold the reports
data which will be fetched in the report
comment form. The reason these are global
variables are since if the user decides to
export the report as a PDF, these variables
will be needed in the export report unit.
pascal
Name Data
Structure
pascal
Global/ Local Description & Justification
pascal
pronoun Array
string
pascal
Local This array will hold the pronouns for the
student that the comment will be displayed
for. The pronouns replace the place holders of
the comments in the database, hence it is
required for the solution.
If gender is male then [he, his, him]
If gender is female then [she, her, her]

2.6 Test data during the iterative development

pascal
Test
Num
ber
pascal
Test Purpose Test Data Expected Result Test
Type
pascal
Justification
pascal
1.1.1 Checking if
database can store
account details.
pascal
Login Table
LgnID: 1
Email: adam@gmail.com
Password: Adam10
pascal
Staff Table
StfID: 1
FirstName: Adam
LastName: Sandler
LgnID: 1
pascal
It accepts the
values and stores it
within the database
pascal
Valid This test is to make
sure data can be add
to the Table, and Staff
Table can reference
the Login table.
pascal
1.1.2 Checking if
referential integrity
is enforced
between Login and
Staff
pascal
Changing LgnID from 1 to 2
within staff table where StfID is
1.
Note: Record with LgnID 2
doesn???t exist
pascal
It displays error and
doesn???t change
pascal
Invalid This test is to make
sure referential
integrity is enforced.
pascal
1.2.1 Checking if
database can store
class details
pascal
Class Table
ClassID: 1
Name: F
Year: 7
StfID: 1
pascal
It accepts the
values and stores it
within the database
pascal
Valid This test is to make
sure data can be add
to the Table, and Class
Table can reference
the Staff table.
1.2.2 Checking if
referential integrity
is enforced
between Staff and
Class
pascal
Changing StfID from 1 to 2
within staff table where ClassID
is 1.
Note: Record with StfID 2
doesn???t exist
pascal
It displays error and
doesn???t change
pascal
Invalid This test is to make
sure referential
integrity is enforced.
pascal
1.3.1 Checking if
database can store
student details
pascal
Student Table
SdtID: 1
FirstName: Josh
LastName: Drake
Gender: Male
ClassID: 1
pascal
It accepts the
values and stores it
within the database
pascal
Valid This test is to make
sure data can be add
to the Table, and
Student Table can
reference the Class
table.
1.3.2 Checking if
referential integrity
is enforced
between Student
and Class
pascal
Changing ClassID from 1 to 2
within student table where
StfID is 1.
Note: Record with StfID 2
doesn???t exist
pascal
It displays error and
doesn???t change
pascal
Invalid This test is to make
sure referential
integrity is enforced.
pascal
1.4.1 Checking if
database can store
a report
pascal
Report Table
RptID: 1
SdtID: 1
Attendance: 98
Grade: A
Punctuality: 100
Subject: English
DateCreated: 26/10/2022
pascal
Report Comments
Store comments 1, 10, 15, 22,
and 26 with RptID 1.
pascal
It accepts the
values and stores it
within the database
pascal
Valid This test is to make
sure data can be add
to the Tables, and
report comments is
able to reference both
report and comment
bank.
pascal
2 .1.1 Checking if system
allows users to
login
pascal
{click login button}
Email: adam@gmail.com
Password: Adam10
pascal
The program will
display the ???main
pascal
Valid This test to make sure
that the login form
works by reading the
pascal
menu??? and ???Login
form??? will hide.

accounts stored in the database. This is to make sure users are able to login to their accounts (requirement 4.1) and use the system. 2 .1.2 Checking if “Login Form” can inform user if email is incorrect.

pascal
{click login button}
Email: adam123@gm
Password: Adam10
pascal
The ???Login Form???
will output ???email
not found???.

Invalid This test is required to make sure requirement 4.2 is met. 2 .1.3 Checking if “Login Form” can inform user if password is incorrect.

pascal
{click login button}
Email: adam@gmail.com
Password: Adam10123
pascal
The ???Login Form???
will output
???incorrect
password???.

Invalid This test is required to make sure requirement 4.2 is met. 2 .2.1 Checking if “Login Form” can inform user when all values entered are null.

pascal
{click login button}
Email:
Password:
pascal
The ???Login Form???
will output
???complete the
form???.
pascal
Invalid
pascal
This test is to make
sure the system
informs client why they
cannot login to the
system, when they
haven???t filled in the
form.

2 .2.2 Checking if “Login Form” can inform user when email value entered is null.

pascal
{click login button}
Email:
Password: Adam10
pascal
The ???Login Form???
will output
???complete the
form???.
pascal
Invalid

2 .2.3 Checking if “Login Form” can inform user when password value entered is null.

pascal
{click login button}
Email: adam@gmail.com
Password:
pascal
The ???Login Form???
will output
???complete the
form???.
pascal
Invalid
pascal
2. 3 Testing button is
interactive when
mouse on top
pascal
Hover mouse on top of login
button
pascal
When mouse is on
top, colour is
changed to RGB
(119,143,143).
When mouse is not
on top, colour
should be white.
pascal
Valid This test is to make
sure the button
changes colour to
indicate to the user
that it???s a button and
can be clicked. This is a
GUI test.
2 .4 Checking if login
form can open sign
up form
pascal
Click ???don???t have and account,
sign up???.
pascal
Sign up form should
appear and login
form should close.

Valid This test is to make sure that the system allows user to create an account. Without it, the system will be unusable. Needed for requirement 5.1 to be met. 2.5.1 Checking if the system can hide and show hints instead of user deleting it manually.

pascal
Click on email edit box
pascal
Click on Password edit box
pascal
Click on email edit box
pascal
When user clicks on
email edit box,
???email??? should
disappear.
pascal
When user clicks on
password edit box,
???password??? should
disappear and
???email??? should
pascal
Valid This test is to make
sure the system always
gives a hint to users of
what should be
entered in the
password and email
edit boxes, when the
value is null, and
deletes the hint for the
user, instead of having
pascal
appear within email
edit box.
pascal
When user clicks on
email edit box,
???email??? should
disappear, and
???password??? should
appear within
password edit box.
pascal
the user deleting it
manually.

2.5.2 Making sure it doesn’t change the value of email edit box when the value is not null or not ‘email’ (the hint)

pascal
Type ???adam@gmail.com??? in
Email Edit box.
pascal
Click on Password Edit box.
pascal
Click on email edit box.
pascal
The value of the
email edit box will
not change when
the user clicks on
password edit box
or email edit box
pascal
Valid
This test is to make
sure the system does
not change the values
of the edit box when
the user has entered
the value in.
If it does change the
value, it will not allow
the user to login to the
system (requirement
4.1 will not be met).

2.5.3 Making sure it doesn’t change the value of password edit box when the value is not null or not ‘password’ (the hint)

pascal
Type ???Adam10??? in Password
Edit box.
pascal
Click on email edit box.
pascal
Click on Password Edit box.
pascal
The value of the
password edit box
will not change
when the user clicks
on email edit box or
password edit box.
pascal
Valid

3.1 Testing when all values are valid, is user able to create account

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email:
RyanReynold@gmail.com
Password: Reynold10
pascal
Click on signup button
pascal
The signup form
should create the
account and should
display message of
account created.

Valid This test is to make sure the program is able to create an account, for a valid user, and inform them. This test is to check if requirements 5.1 and 5.3 are met. 3.2.1 Testing when all values are valid, apart from First Name

TYPE
pascal
First Name: Ryan1
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: Reynold10
pascal
Click on signup button
pascal
The signup form
should not create
the account and
should display
message invalid
name.
pascal
Invalid
pascal
This test is to make
sure the program
doesn???t create an
account, when the
values the user enters
for name is invalid, and
user is informed why
the account is not
created. This test is to
make sure
requirements 5.6 and
5.4 are met.

3.2.2 Testing when all values are valid, apart from Last Name

TYPE
pascal
First Name: Ryan
Last Name: Reynold##]
Email: RyanRenold@gmail.com
Password: Reynold10

Click on signup button 3.3.1 Testing when all values are valid, apart from password, where password does not contain an integer but is greater than 8 characters

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: ReynoldsTheBest
pascal
Click on signup button
pascal
The signup form
should not create
the account and
should display
message invalid
password.
pascal
Invalid
pascal
This test is to make
sure the program
doesn???t create an
account when the
value the user enters
for password is invalid,
and user is informed
why the account is not
created. This test is to
make sure

3.3.2 Testing when all values are valid, apart from

TYPE
pascal
First Name: Ryan
Last Name: Reynold
pascal
password, where
password length is
less than 8
pascal
Email: RyanRenold@gmail.com
Password: Reyno1
pascal
Click on signup button
pascal
requirements 5.5 and
5.4 are met.

3.3.3 Testing when all values are valid, apart from password, where password length is 8

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: Reynold1
pascal
Click on signup button
pascal
The signup form
should create the
account and should
display message of
account created.
pascal
Bounda
ry
pascal
This is a boundary test
to make sure password
is valid when the
length is on boundary

3.4.1 Testing Email Verification: When there is no ‘@’ symbol

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email: RyanReynoldgmail.com
Password: Reynold10
pascal
Click on signup button
pascal
The signup form
should not create
the account and
should display
message invalid
email.
pascal
Invalid
pascal
This is a test making
sure an invalid email
address is not
accepted by the
system.
This test is to make
sure the user is
informed when the
account is not created
and told why.
Requirement 7 met.

3.4.2 Testing Email Verification: When there is more than one ‘@’ symbol

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email:
Ryan@Reynold@gmail.com
Password: Reynold10

Click on signup button 3.4.3 Testing Email Verification: When there is no ‘.’ symbol

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email: RyanReynold@gmailcom
Password: Reynold10

Click on signup button 3.4.4 Testing Email Verification: When there is no domain, but there is a full stop within the email

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email: Ryan.Reynold@gmail
Password: Reynold10

Click on signup button 3.4.5 Testing Email Verification: When there is an invalid character

TYPE
pascal
First Name: Ryan
Last Name: Reynold
Email:
RyanReynold#@gmail.com
Password: Reynold10
pascal
Click on signup button
pascal
Errone
ous

3.5 Checking if system allows user to create an account with a registered email

TYPE
pascal
First Name: Thomas
Last Name: Shelby
Email:
RyanReynold@gmail.com
Password: Thomas10
pascal
Click on signup button
pascal
The signup form
should not create
the account and
should display
message informing
user that the
account already
exists
pascal
Errone
ous
pascal
This is a test to make
sure the system does
not create accounts of
users who already
exist.
The test is also to make
sure the user is
informed that they

already have an account. This test is to make sure requirement 5.2 is met. 3.6 Checking if users name displays on main menu

TYPE
pascal
Email:
RyanReynold@gmail.com
Password: Reynold10
pascal
Click on Login button
pascal
The login form will
successfully login
with the valid
account. It will hide
itself and show
main menu. The
main menu will
display ???ryan
reynold??? on the top
of the menu.
pascal
Valid This test is to make
sure the system is able
to display the users
name on main menu.

3.7 Testing buttons are interactive when mouse on top

pascal
Hover mouse on top of buttons
on main menu
pascal
When mouse is on
top, colour is
changed to RGB
(119,143,143).
When mouse is not
on top, colour
should be white.

Valid This test is to make sure the buttons change colour to indicate to the user that they are buttons and can be clicked. This is a GUI test. 4.1 Checking if user can open create class form

pascal
Clicks on button Create Class in
Main menu
pascal
Opens Create Class
form

Valid This test is to make sure the main menu can open the create class form. 4.2.1 Checking if system allows users to create a class for year 7 – 11’s

TYPE
pascal
Class Name: B
Select Year 7
pascal
Click on Create Button
Create Class form
should create the
class and display a
message informing
the user that the
class has been
created
pascal
Valid
pascal
This test is to make
sure the user is able to
create a class using the
system.
This test is also to
make sure that the
class is stored properly
in the database by the
system.
This test is also to
make sure that classes
can be created with
the valid name length.
This test is to check if
requirement 12.1 is
met.

4.2.2 Checking if system allows users to create a class for year 12 and 13’s

TYPE
pascal
Class Name: BJH
Select Year 13
pascal
Click on Create Button
4.3.1
pascal
Checking if system
can inform user
when from is not
completed, and
does not create
account
TYPE
pascal
Class Name: NULL
Does not select a year
pascal
Click on Create Button Create Class form
should not create
the class and
display message, fill
in the values to
create class
pascal
Invalid
pascal
This test is to make
sure that a class is not
created with empty
values. This is to make
sure the system
functions properly and
classes can be used to
sort students. This test
is to check if
requirement 12.4 is
met.
4.3.2 TYPE
pascal
Class Name: NULL
Select year 7

Click on Create Button 4.3.3 TYPE Class Name: B Does not select a year

pascal
Click on Create Button

4.4.1 Checking if system can inform user when class name is invalid, where year 7 class name length is not one

TYPE
pascal
Class Name: BL
Select Year 7
pascal
Click on Create Button
pascal
Create Class form
should not create
the class and inform
user class name is
invalid.
pascal
Bounda
ry
pascal
This test is to make
sure the system does
not create a class with
an invalid name. The
system is created for
Graveney school and
must follow the
Graveney school
procedure.
The test is to check if
requirement 12.3 is
met.

4.4.2 Checking if system can inform user when class name is invalid, where year 11 class name length is not one

TYPE
pascal
Class Name: BL
Select Year 11
pascal
Click on Create Button
4.4.3
pascal
Checking if system
can inform user
class name is
invalid, where year
12 class name
length is not three
TYPE
pascal
Class Name: B
Select Year 12

Click on Create Button 4.4.4 TYPE Class Name: BLRT Select Year 12

Click on Create Button 4.4. 5

pascal
Checking if system
can inform user
class name is
invalid, where year
13 class name
length is not three
TYPE
pascal
Class Name: B
Select Year 13

Click on Create Button 4.4. 6 TYPE Class Name: BLRT Select Year 13

Click on Create Button 4.4. 7 Checking if system rejects a class name with an integer

TYPE
pascal
Class Name: BL1
Select Year 13
pascal
Click on Create Button
pascal
Errone
ous

4.5 Checking if system rejects a class that already exists

TYPE
pascal
Class Name: B
Select Year 7
pascal
Click on Create Button
pascal
Create Class form
should not create
the class and inform
user that the class
already exists

Invalid This test is to make sure the system can stop data redundancy. Having multiple same classes will make it impossible for users to know which student is in which class. This test is to check if requirement 12.2 is met. 5.1 Checking if form can add class names to combo box, corresponding to the correct year

pascal
1) Select Year 7, View Classes
2) Select Year 13, View Classes
3) Select Year 8, View Classes
pascal
1) Shows Class B
2) Shows Classes
LMN and BJH
3) Shows No Classes
pascal
Valid This test is to make
sure the form correctly
shows classes
corresponding to the
year selected by the
user, using the
database. The class is
pascal
needed to be stored to
meet requirement
10.3. The test is to
check if requirements
10.6 and 10.7 are met.

5. 2 Checking if user can create a student

TYPE
pascal
First Name: Ben
Last Name: Yale
Select Year 7 Class B
Select Gender Male
pascal
Click on Create Student Button
pascal
Create Student
form should create
the student and
inform user that the
student has been
created

Valid This test is to make sure the system is able to accept valid values and create a student. This test is to make sure the system can store the student within the database. This test is to make sure the system can inform the user that the account has been created. This test is to check if requirements 10.1, 10.2, and 10.3 are met. 5.3 Checking if user can create a student, when student already exists

1)TYPE
pascal
First Name: Ben
Last Name: Yale
Select Year 7 Class B
Select Gender Male
pascal
Click on Create Student Button
pascal
2)TYPE
First Name: ben
Last Name: yale
Select Year 7 Class B
Select Gender Male
pascal
Click on Create Student Button
pascal
Create Student
form should not
create the student
and inform user
that the student
already exists

Invalid This test is to make sure the system can prevent redundancy. This test is to make sure the system can check if the student already exists in the database. This test is to make sure the system does not create the student when it already exists, and it can inform the user. This test is also to make sure that the Create Student form is not case sensitive. This test is to check if requirement 10.4 is met. 5.4.1 Checking if form is filled out

pascal
Click on Create Student Button
pascal
Create Student
Form should not
create the student
and should inform
user the form is not
filled out.
pascal
Invalid
pascal
This test is to make
sure the system
collects all values it
needs before creating
the class, so the
system can function
properly.
The test is to make
sure the user is
informed if the form is
not fully filled out.
This test is to ensure
requirement 10.3 is
met.

5.4.2 Checking if form is filled out, when first name is null

TYPE
pascal
First Name:
Last Name: Yale
Select Year 7 Class B
Select Gender Male

Click on Create Student Button 5.4.3 Checking if form is filled out, when last name is null

TYPE
pascal
First Name: Ben
Last Name:
Select Year 7 Class B
Select Gender Male

Click on Create Student Button 5.4.4 Checking if form is filled out, when class is not selected

TYPE
pascal
First Name: Ben
Last Name: Yale
Select Year 7
Select Gender Male

Click on Create Student Button 5.4.5 Checking if form is filled out, when year is not selected

TYPE
pascal
First Name: Ben
Last Name: Yale
Select Gender Male

Click on Create Student Button 5.4.6 Checking if form is filled out, when gender is not selected

TYPE
pascal
First Name: Ben
Last Name: Yale
Select Year 7 Class B

Click on Create Student Button 5.5.1 Testing when all values are valid, apart from First Name

TYPE
pascal
First Name: Ben1
Last Name: Yale
Select Year 7 Class B
pascal
Click on Create Student Button
pascal
The Create Student
form should not
create the student
and should display
message invalid
name.
pascal
Invalid
pascal
This test is to make
sure the program
doesn???t create a
student, when the
values of the student???s
name is invalid, and
user is informed why
the account is not
created. This test is to
make sure
requirement 10.5 is
met.

5.5.2 Testing when all values are valid, apart from Last Name

TYPE
pascal
First Name: Ben
Last Name: Yale##]
Select Year 7 Class B
pascal
Click on Create Student Button

5. 6 Testing cboselectyear in system, when entering an alphabet

pascal
Enter Letter ???A??? in
cboselectyear
pascal
The Create Student
form should just
display select year

Valid Whilst using the system, an error was found with the event of cboyear being changed. The system prompts an error whenever an alphabetical letter was entered within the cbo. This was not user friendly. 6.1 Testing main menu opening Update Setting Form

pascal
Click on setting button on main
menu
pascal
Main menu should
display the form
with the users
values displayed
within the edit
boxes, apart from
password
pascal
Valid This test is to make
sure the main menu
can open the update
setting form.

6.2 Updating account when values are valid

pascal
Not changing any details
Typing the original password:
Adam1010
pascal
Click Update Button
pascal
The Update Student
Form should update
the email and
change it within the
database. It should
pascal
Valid This test is to make
sure the user is able to
update their accounts
when they are only
pascal
then display a
message to user
regarding the
changes taken
place.

changing one detail, such as first name. This test is to make sure the validation of checking if the account already exist does not deny updating it to the user’s email which he is logged into, as the user will not always change his email every time updating his account. This test can also verify that when the values are valid, the account can be updated. This test is to check if requirement 9.1 is met. 6.3.1 Updating user Email, where email is valid

pascal
Change Email value to
Adam1@gmail.com
pascal
Other values keep same...
Name: Adam Sandler
Type Password: Adam1010
pascal
Click Update Button
pascal
The Update Student
Form should update
the email and
change it within the
database. It should
then display a
message to user
regarding the
changes taken
place.
pascal
Valid This test is to make
sure the system allows
users to update their
details. This test is to
check if requirement
9.1 is met.

6.3.2 Updating user Email, where email is registered to another user

pascal
Change Email value to
ryanrynold@gmail.com
pascal
Other values keep same...
Name: Adam Sandler
Type Password: Adam1010
pascal
Click Update Button
pascal
The Update Student
Form should not
update the account.
It should inform the
user that the
account already
exists.

Valid The test is to check if validation of checking if an account already exists to another user works. It is important as if two users have the same email, one of them will not be able to login. This test is to check if requirement 9.2 is met. 6.3.3 Updating user Email, where email is invalid

pascal
Change Email value to
Adamgmail.com
pascal
Other values keep same...
Name: Adam Sandler
Type Password: Adam1010
pascal
Click Update Button
pascal
The Update Student
Form should not
update the account.
It should inform the
user that the email
entered is invalid.

Invalid This test is to check the validation of email from signup is working. If the test is a success, it means the email validation is working, since the algorithm has already been tested in Stage 3. This test is to check if requirement 9.2 is met. 6.4.1 Updating Name, where First Name is invalid

pascal
Keep Values the same
Name: Adam1 Sandler
Type Password: Adam1010
pascal
The Update Student
Form should not
update the account.
It should inform the
pascal
Invalid This test is to check the
validation of name
from signup is working
with update setting
pascal
Click Update Button user that the name
entered is invalid.
pascal
form. If the test is a
success, it means the
name validation is
working, since the
algorithm has already
been tested in Stage 3.
This test is to check if
requirement 9.2 is
met.

6.4.2 Updating Name, where Last Name is invalid

pascal
Keep Values the same
Name: Adam Sandler###
Type Password: Adam1010
pascal
Click Update Button
pascal
Invalid

6.5 Updating Password where password is invalid

pascal
Keep Values the same
Type Password: Adam
pascal
Click Update Button
pascal
The Update Student
Form should not
update the account.
It should inform the
user that the
password entered is
invalid.

Invalid This test is to check the validation of password from signup is working with update setting form. If the test is a success, it means the password validation is working, since the algorithm has already been tested in Stage 3. This test is to check if requirement 9.2 is met. 6.6.1 Deleting an account Click on delete button Then Yes

pascal
The Update Setting
form should delete
all data of the user.
It should delete all
reports, students,
classes, and the
users??? staff record
and login.

Valid This test is to make sure the user is able to delete his account. This test is to make sure all records that contain the user’s data are deleted from the database. This test is to check if requirement 9.3 is met. 6.6.2 Deleting an account, then cancelling it

pascal
Click on delete button
Then No
pascal
The Update Setting
form should not
delete the account
and shall just return
back to the form.
pascal
Valid This test is to make
sure the system is able
to prevent accidental
deletion of an account.
The purpose of the test
is to confirm the No
button does not delete
the account.

6. 7 Correct Casing for string

pascal
In signup form...
First Name: jEfE
Last Name: willIAMS
Email: Jeff@gmail.com
Password: Jeff1000
Press signup
pascal
The System should
make sure the
name in database is
stored as Jefe
Williams

Valid This test is to make sure the system is able to correct invalid casing of strings entered by the user. This is to make the program look more professional. It is a requirement made by the stakeholder after testing stage 6. 7 .1 Checking if Select Class Form can display students within the selected class

pascal
In Select Class form...
Select class Name L Year 8
pascal
The Select Class
form should display
the 2 students,
Holly and Andy
pascal
Valid This test is to make
sure the system is able
to show the user which
students are in the
class. This feature is
pascal
which are in the
class.

needed as if user is deleting the class, he can check what data he is also deleting with it. 7 .2 Checking if table can be filtered by year

pascal
In Select Class Form...
Select filter by year
1) Select year 7
2) Select year 9
pascal
1) The Select Class
form???s table should
display Class A
2) The Select Class
form???s table should
display no classes

valid This test is to make sure the form is able to change the query so that it only displays the year selected by the user. The purpose of this is to make the system as user friendly as possible. 7 .3 Checking if deleting class functions properly

pascal
In Select Class Form...
Select Class A Year 7
Press Delete
Press yes
pascal
The Select Class
form should delete
the class along with
all the students and
their reports.

Valid This test is to see if the Select Class form is able to allocate and delete all the data of the class, correctly. This test is to make sure requirement 13.2 is met. 7 .4.1 Checking if class details can be updated with 2 different valid values

pascal
In Select Class Form...
Select Class L Year 8
Class name K
Class year 11
Update The Select Class
form should update
the class and notify
the user. It should
then also refresh
the table.
pascal
Valid
pascal
This test is to make
sure the user is able to
update the classes???
values. This test is to
make sure
requirement 13.1 is
met.

7 .4.2 Checking if class details can be updated with year remaining the same

In Select Class Form... Select Class K Year 11 Class name L update 7 .4.3 Checking if class details can be updated with Name remaining the same

In Select Class Form... Select Class L Year 11 Class year 8 update 7 .5 Result when class name entered is invalid and user attempts to update it.

pascal
In Select Class Form...
Select Class L Year 8
Class name K1
Class year 13
update
The select class
form should not
update the class,
and inform the
user.
pascal
Invalid
pascal
This test is to make
sure the system does
not allow any invalid
data within the
database. If the form is
able to verify this
correctly, then it will
verify and find all
invalid possible values,
since the form uses the
same procedure used
by Create Class Form,
which was already
been tested.

7 .6 Result when class is attempted to be updated with null value

pascal
In Select Class Form...
Select Class L Year 8
Class name
Class year Any Year
update

7 .7 Checking if system will not update the class when the class already exists under the user

pascal
In Select Class Form...
Select Class L Year 8
Class name: A
Class year 8
update
pascal
The select class
form should not
update the class,
and inform the user
the class already
exists
pascal
Invalid
pascal
This test is to make
sure the system can
prevent data
redundancy. This is not
only for the efficiency
of the system, but also
to make sure the

solution (system) functions properly. 7 .8 Making sure the data of one user isn’t accessed by the other.

pascal
In Select Class Form...
Select Class L Year 8
Class name: R
Class year 11
update
pascal
The Select Class
form should update
the class and notify
the user. It should
then also refresh
the table.
pascal
Valid

The test is to make sure the user is able to update their class to the same values of another user’s class. The system must not search data of another user. 7.9 Checking if the btnIncrementClasse s functions properly.

pascal
Pressing the button named
btnIncrementClasses
The Update Setting
form should delete
all year 11s and 13
classes and
increment the class
year by 1.
pascal
valid

The purpose of this test is to make sure the user is able to update their data for a new academic year by pressing a single button. This test is to make sure requirement 13.3 is met. 8.1 Checking if the form can generate a valid report

pascal
Year 12|LAL|Mellad Bagbhan
pascal
Grade B| Attendance 97|
Punctuality 92|Computing
pascal
1a|2b|3b|4a|5a|6b
pascal
The create report
form should be able
to create a report
by following the
algorithm, and save
it in the database.
pascal
Valid

The test is to make sure the user is able to create a report and the system can generate an accurate comment from the data collected. This test is to make sure requirement 14.1 and 14.2 is met. 8.2.1 Checking if the form makes sure from is complete before creating report

pascal
Year 9|A|[unselected]
pascal
Other values selected randomly
The form should be
able to inform the
user that the form
is not complete, by
displaying a user-
friendly error
message. The form
should not create a
report.
pascal
Invalid
pascal
These tests are to
make sure the form is
complete and all
values entered by the
user are valid before
creating the report.
This test is to make
sure a suitable error
message is displayed to
user if there is an issue
with the data they
have inputted. This
test is to check if
requirement 14.4 has
been met.

8.2.2 Keep only grade empty

pascal
Keep only attendance empty
pascal
Keep only punctuality empty
pascal
Keep only subject empty

Keep question 6 empty 8.3 Checking if the form is able to validate the attendance and punctuality

pascal
1) Having punctuality as 123
2) Having attendance as - 12
3) Having attendance as A12
pascal
The form should
display message to
user, informing the
value is invalid and
not create the
report
pascal
Invalid

8.4 Checking if the form is able to validate the Grade entered

pascal
1) Inputting value 10
2) Inputting value AC
3) Inputting value #
Invalid

8.5 Checking if the forms previous question button functions as intended too

pascal
Pressing previous button on
form The form should
display the previous
question
pascal
Valid
pascal
This test is to make
sure the user is able to
go back and forth
when answering the
multiple choice

questions, without losing data or having any issues. 8.6 Checking if the form can display the report correctly

pascal
Year 12|LAL|Mellad Bagbhan
pascal
Grade B| Attendance 97|
Punctuality 92|Computing
pascal
1a|2b|3b|4a|5a|6b
pascal
The create report
form should be able
to create a report
and open and
display the form on
report comment
form.
pascal
Valid

This test is to make sure the system can display the students report once generated. This test is to make sure requirement 15.1 is met. 8.7.1 Checking if the form allows the user to copy the comment

pascal
Press Copy and paste it in
Notepad
pascal
The report
comment form
should allow the
user to copy the
comment to
clipboard
pascal
Valid

This test is to make sure the feature for users to copy the report comment to their computers clipboard functions as intended to. 8.7.2 Checking if the form allows the user to export the report as a pdf

pascal
Export report and open
The report
comment form
should allow the
user to export the
report.
pascal
Valid

The test is to make sure the user can export the report where ever they want to as a pdf file. This is to check if requirement 15.3 is met. 8.8 Checking if the form allows the user to input the grade A*

pascal
Create a report with A* as
grade The create report
form should create
the report.
pascal
Valid

The test is to make sure a report can contain the grade A* as requested from the stakeholders. 9.1 Checking if the form allows user to view and open students reports

pascal
Select Student Alex Rider and
double click its existing report
displayed
pascal
The select student
form should display
all the reports of a
student when the
user selects a
student. It should
allow user to open
and view the form.
pascal
Valid

The test is to make sure the user can view a student’s existing (already created) reports, which is needed to be implemented for requirement 15.1 to be met. 9.2.1 Checking if the form allows user to edit the student’s values

pascal
Update Year 7 Class G Alex
Rider to a Female with name
Alexia Rider. Press the update
button
pascal
The select student
form should update
the details of the
students in the
database and
should show a
message of success
to the user.
pascal
Valid

The test is to make sure the user can Update students details using the select student form, with valid data. This is needed for requirement 11.1 to be met. 9.2.2 Checking result of attempting to update student values when form is not complete

pascal
1) Press Update student
when no student is
selected.
2) Select Year 8 class G
Alex Rider, and update
student with first
name and last name
null.
pascal
The Select Student
form should output
a message to the
user indicating the
form is not
complete.
pascal
Invalid
pascal
This test is to make
sure data of students is
always accurately
stored. This is needed
for requirement 11.1
to be met.
  1. Select Year 8 class G Alex Rider, and update student with class and year unselected.
  2. Select Year 8 class G Alex Rider, and update student with class unselected. 9.2.3 Checking result of attempting to update to an existing student
pascal
Select Year 7, class G, Alex
Rider. Attempt to update the
class to Year 8 G, where there is
another student by the name
Alex Rider.
pascal
The select student
form should display
a message
informing the user
the student already
exists, and not
update the
student???s details
pascal
Invalid
pascal
This test is to avoid
data redundancy in
database. Having
duplicates of students
will cause logical errors
in the system, hence
this condition is made.

9.3.1 Checking if user is able to delete a report

pascal
Select Year 7, class G, Alex
Rider and press delete report
button with report selected
pascal
The select student
form should delete
the report of the
student, and show a
message when the
report has been
deleted. The table
of reports being
displayed should
then be updated.
pascal
Valid
pascal
This test is to make
sure the client can
delete reports in select
student form.
Requirement 15.2.

9.3.2 Checking systems output when user attempts to delete a report, when no report is selected

pascal
Select Year 7, class G, Alex
Rider and press delete report
button with no report selected
pascal
The select student
form should display
a message
informing the user
that no reports are
selected.
pascal
Invalid
pascal
This test is to make
sure the system error
is trapped and a user
friendly message is
displayed to the user.

9.4.1 Checking if user can delete student

pascal
Select student Alex Rider in
Year 7, Class G and press delete
student button
pascal
The select student
form deletes the
student and show a
message to the
user, informing
them that the user
has been deleted.
pascal
Valid
pascal
This test is to make
sure the user is able to
delete its students.
Needed for
requirement 11.2.

9.4.2 Checking systems output when user attempts to delete a student, when no student is selected

pascal
Press Delete Student button
(with no student selected)
The select student
form informs the
student no student
is selected.
pascal
Invalid

This test is to make sure the system error is trapped and a user friendly message is displayed to the user. 10.1 Checking if form positions in the centre

pascal
Open Login form
pascal
Open Create Report Form
Both forms should
display in the
middle of the
screen
pascal
Valid
pascal
This test is to make
sure the system is able
to work on any
resolution monitor.
Required for
requirement 2 to be
met.

2.7 Further data to be used in the post development phase

System Testing

pascal
Test
Number
pascal
Test Purpose Test Data Expected Result Justification
pascal
S 1 Process of
creating and
logging into an
account
pascal
Account
Name: Rayaan Uddin
Email: 6250@graveney.org
Password: Rayaan10
pascal
Account is created.
User can login with
account.
pascal
This test is to make sure the
user can use the account
feature. This is a final test to
make sure the system
functions properly, taking
S 2 Process of perspective from client side.
updating an
account
pascal
Update
Email: 6250@graveney.com
Password: RayaanU1
pascal
Account is updated.
pascal
S 3 Process of
deleting an
account
pascal
Pressing the delete account
button
pascal
Account is deleted.
pascal
S 4 Process of
setting up
students and
classes, and
sharing
students
pascal
Class
Name: B
Year: 7
pascal
Student
Name: Nick Solo
Class : (One created above)
Gender: Male
pascal
Share user to...
6250@graveney.org
pascal
Class and student are
created.
User shares student to
another user.
pascal
This test is to make sure the
user can use the student
feature of the system. This is a
final test to make sure the
system functions properly,
taking perspective from client
side.
pascal
S 5 Process of
updating a class
pascal
Update class B: Year 8
Name to: C
pascal
Class is updated. This test is to make sure the
user can use the all class
features of the system. This is
a final test to make sure the
system functions properly,
taking perspective from client
side.
S 6 Process of
creating and
copying a report
pascal
Report
Okay, Excellent, Okay, Some,
At, Some
Grade: 4
Attendance: 92
Punctuality: 86
Subject: English
pascal
Report is created.
Comment is copied
and pasted onto a
word document.
pascal
This test is to make sure the
user can create a report and
copy the comment. This is a
final test to make sure the
system functions properly,
taking perspective from client
side.
pascal
S 7 Process of
updating a
student and
exporting a
report
pascal
Student
Name to: Nickoletta Solo
Gender to: Female
pascal
Student is updated.
The report is exported.
pascal
This test is to make sure the
student selection feature is
working. This is a final test to
make sure the system
functions properly, taking
perspective from client side.
S 8 Process of
deleting a
report
pascal
Pressing delete button on
each form for each function
pascal
Report is deleted. This test is to make sure the
user is able to delete its data.
This is a final test to make
sure the system functions
properly, taking perspective
from client side.
pascal
S 9 Process of
deleting a
student
pascal
Student is deleted.
pascal
S 10 Process of
deleting a class
pascal
Class is deleted.

End User Testing

pascal
This testing is required to check if the ned-user can use the program effectively. To carry this out, I am going to
create a questionnaire for the stakeholders to complete. In the questionnaire I will get feedback about if the
system. Any issues with the solution will be evaluated and will be resolved by an explanation of the next steps
needed to be taken place for the system. In addition to collecting unsatisfactory results, it will also outline all the
usability features.
pascal
The questions that will be asked are...
pascal
Does the login screen show up when the program is ran?
Does the login screen have an option to sign up?
When entered an invalid email, name, or password, does the system inform why the account is not being
created, helping you out?
Does the program allow you to create your account?
Does the system allow you to create the same account?
Are you able to login with that account?
Does the program inform you if you got the password or email wrong when logging in?
Are you able to edit your details and login with the updated details?
Does the program allow you to open the create class window from the main menu?
Are you able to create a class?
Do you get a message when you have entered the wrong class name?
Does the program allow you to open the create student window from the main menu?
Are you able to create a student?
Does the program allow you to create the same student or class?
Does the program allow you to open the create report window from the main menu?
Does the program allow you to create a report and generate the comment for you?
Does the program inform you if you have entered any details incorrectly, and tell you which one you have?
Does the program display the report after it has been generated?
Does the program allow you to copy the report, and can you paste it anywhere on your computer?
Does the program allow you to export the report as a pdf?
Does the program display what location you want to export the report to?
Can you see all details of the report on the pdf file?
Does the program allow you to open the select class window from the main menu?
Does the program allow you to edit the class???s details?
Does the program display all the students in the class?
Does the program allow you to open the select student window from the main menu?
Does the program allow you to edit a student???s details?
Does the program allow you to open created reports?
Does the program allow you to increment all class years by one from the update settings window?
Do all windows open in the centre of your screen?
Does the system prevent you deleting any of you data accidentally?
Is the system designed to your like?
How easy is it to navigate the system on a scale of 1 to 10?
What would oppose you from using the system as a teacher?
Did you experience any faults in the system?

Section 3: Developing the coded solution

Stage 1: Database

The database structure, shown in 2.2, is being implemented.

Prototype

pascal
Here are the tables in design view created in MS Access.
pascal
Screenshot and Explanation of ???Staff??? _table
pascal
The table Staff stores the name of the user. It references the staff???s login details (email and password).
StfID is an important primary key for the system as it will be used to identify who the data in the database
belongs to.
Screenshot and Explanation of ???Login??? _table
pascal
The table Login stores the user???s email and password, which is to verify the user, allowing them to use the
system.
Screenshot and Explanation of ???Class??? _table
pascal
The table Class stores the all the school classes created by users. Users will not be able to create two of
the same class. This is to prevent data redundancy. Year 7 to 11 Form name will be one character whereas
Year 12 and 13, will be three characters. This is an example of a rule of Graveney School. Each class will
only be viewable by the user who created it. StfID is used to identify whose data it is.
Screenshot and Explanation of ???Student??? _table
pascal
The table Student stores the all the students created by users. Users will not be able to create two of the
same students in the same class. It references the class of which the student belongs to, which then links it
to the user, who the data belongs to.
pascal
Screenshot and Explanation of ???Comment Bank??? _table

The table Comment Bank stores the all the sub-comments which will be used to generate the student’s full comment. It saves data by preventing these phrases being stored multiple times.

pascal
Screenshot and Explanation of ???Report??? _table

The table Report stores the all the reports that the user creates.

pascal
Screenshot and Explanation of ???Report Comments??? _table

The table Report Comments stores the comment of the report by linking the report to each comment it has from the comment bank table.

pascal
What has been done
The database has been created. Within the database, the tables have been created, with the correct fields
(stated in 2.2 Structure of Solution). The Primary Keys, for each table, and data types, for each field, has been
identified. This partially meets criteria???s 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, since all requirements stated depend on a
database to store data within and access.

Prototype

Relationships between each table will now be set up. In prototype1, fields were created to be foreign keys.

Screenshot of Relationship

Explanation of Relationship between “Login” and “Staff”

pascal
There is a One-to-One relationship
between the two tables. This is because a
user (Staff) can only have one account.

Explanation of Relationship between “Staff” and “Class”

Explanation of Relationship between “Class” and “Student”

pascal
There is a One-to-Many relationship
between the two tables. This is because a
user (Staff) can create as many classes as
they wish to, as a Graveney teacher
teaches more than one class. Each class
belongs to a single teacher, as data is not
shared between users.
pascal
There is a One-to-Many relationship
between the two tables. This is because a
student of Graveney School can only be
part of a single Form class, and a single
class consists of multiple Students.

Explanation of Relationship between “Student” and “Report”

Explanation of Relationship between “Report” and “Report Comments”

pascal
There is a One-to-Many relationship
between the two tables. This is because
Users (Staff) can write multiple reports on
a single student. Each report will only be
about an individual student.
pascal
There is a One-to-Many relationship
between the two tables. This is because
there are multiple comments in a single
report.

Explanation of Relationship between “Report Comments” and “Comment Bank”

What has been done

pascal
Relationships between each table has been created with enforced referential integrity. This means that the
records must reference an existing record. This is to keep data accurate and to prevent system from data being
reference elsewhere.

Testing of solution

pascal
Test carried out are 1.1, 1.2, 1.2, 1.3.
pascal
Test No 1.1.1 result: checking database can store account details...
pascal
Test No 1.1. 2 result: checking if referential integrity is enforced between Login and Staff...
pascal
Step 1) Inputting
the test data
values for Login
table
pascal
Step 2) Inputting
the test data
values for

Signup table (^) Summary: Test Successful – The database is able to store account data and has a relationship between Login and signup Step 1) changing the value to 2 Step 2) result... Summary: Test Successful – referential integrity is enforced. There is a Many to One relationship between the two tables. This is because there are multiple comments in a single report.

Test No 1.2.1 result: checking if database can store class details ...

Test No 1. 2 .2 result: checking if referential integrity is enforced between Class and Staff...

Test No 1.3.1 result: checking if database can store student details ...

pascal
Inputting the
test data values
for Class table
pascal
_________________________________________________________________
pascal
Summary: Test Successful ??? The database is able to store classes and reference a record from staff table
pascal
changing
the value to
2
pascal
Summary: Test Successful ??? referential integrity is enforced.
pascal
Inputting
the test
data
values for
Student
table
__________________________________________________________________
_______

Test No 1.3.2 result: checking if referential integrity is enforced between Class and Student...

pascal
Summary: Test Successful ??? The database is able to store student???s and reference a record from Class
table
pascal
changing
the value to
2
pascal
Summary: Test Successful ??? referential integrity is enforced.

Prototype

pascal
Sub-Comments are added into the Comment bank. These will be the phrases that will be used to generate the student???s teacher report comment by the system. I have used
Solution A to come up with necessary comments needed for the solution.
pascal
Screenshot and explanation of Comment Bank table

These will be used to generate the comment. The system will replace {name} with the students name, and {pronoun...} with pronouns depending on the students gender found in

table student.

{pronoun1} is he/ she

{pronoun2} is his/ her

{pronoun3} is him/ her

When P is capital, the first character of pronoun is capital, e.g. {Pronoun1} is He/ She.

What has been done The phrases have been written into the database. Ideas for the phrases were taken from existing solution A. This will allow reports to create the comment by linking multiple phrases to a single report. The criteria 9 has been partially met. These questions are used to generate the report comment using multiple choice questions.

Testing of solution Test carried out are 1.4.

pascal
Test No 1. 4 .1 result: checking database can store reports...
pascal
Step 1) Inputting
the test data
values for Report
table
pascal
Step 2) Inputting
the test data
values for report
comments table
pascal
Summary: Test Successful ??? The database is able to store account data and has a relationship between
Report and report comments, and report comments also has a relationship with comment bank

Stage 2: Implementing the “Login page”

The first form is being created. This is the login page where users will be able to login using their details. The requirements needed to be met by the login page are 4, 8.1.

Prototype

pascal
Screenshot of ???Login Form???
pascal
Implemented code for login Form (unit_login)
unit unit_login;
pascal
interface
pascal
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, DB, ADODB, unit_signup, shellAPI,unit_menu;
pascal
type
TfrmLogin = class(TForm)
published
logo_header: TImage;
edtEmail: TEdit;
edtpassword: TEdit;
con_database: TADOConnection;
qryLogin: TADOQuery;
lblerror: TLabel;
lblsignUP: TLabel;
btnLogin: TLabel;
procedure FormCreate(Sender: TObject);
procedure btnLoginClick(Sender: TObject);
procedure btnLoginMouseLeave(Sender: TObject);
pascal
Closes login Page and shows sign up page
to create an account. Uses qryLogin to
interact with database.
pascal
The label (???{error here}???) tells the user if
the email or password entered is incorrect.
pascal
When the user presses login, the program
verifies the details entered in the edit
boxes.
pascal
Connects all
queries in system
to database
pascal
Always stay Lower Case

procedure btnLoginMouseEnter(Sender: TObject); procedure lblcloseClick(Sender: TObject); procedure lblsignUPClick(Sender: TObject); procedure edtpasswordClick(Sender: TObject); procedure edtEmailClick(Sender: TObject); end; //type record to store user details type TUserData = record FirstName, LastName, Email, Password: string; StaffID: Integer; end; var frmLogin: TfrmLogin; info: TUserData; //variable storing key details from database to running program to be used

implementation

{$R *.dfm}

//connects program to database procedure TfrmLogin.FormCreate(Sender: TObject); begin lblerror.caption: =''; con_database.Connected := True; end;

procedure databaseLogin; begin //Selects field from login where email is equivelent to the email inputted by user and selects the row related to the record, from signup frmLogin.qryLogin.SQL.Text := 'SELECT staff.StfID, Login.Email, Login.Password, staff.firstname, staff.lastname FROM Login inner join staff on (login.LgnID = staff.LgnID) where email = '+quotedstr(frmLogin.edtemail.text)+';'; frmLogin.qryLogin.Open; //if 0 records then no account exists under that email address if (frmLogin.qryLogin.RecordCount=0)then frmLogin.lblerror.caption:='Email not found' else //1 record begin if (frmLogin.qryLogin.fieldbyname('password').AsString = frmLogin.edtpassword.Text)then //save user details needed later in the system begin info.FirstName:=frmLogin.qryLogin.fieldbyname('firstname').AsString; info.LastName:=frmLogin.qryLogin.fieldbyname('lastname').AsString; info.Email:=frmLogin.qryLogin.fieldbyname('email').AsString; info.password:=frmLogin.qryLogin.fieldbyname('password').AsString; info.StaffID:=frmLogin.qryLogin.fieldbyname('StfID').AsInteger; //{label in main menu will display users full name} //opening main menu in same position, and closing login form frmMainMenu.Top := frmLogin.Top; frmMainMenu.left := frmLogin.left; frmmainmenu.Show; frmlogin.Hide; end else begin //Informs user password is incorrect (requirement 4.2) frmLogin.lblerror.Caption:='incorrect password';

//Changes Edit Password back to password when the value was invalid; to ensure user still is aware of what needs to be inputted there frmLogin.edtpassword.Text := 'password'; frmLogin.edtpassword.PasswordChar := #0; end; end; frmLogin.qryLogin.close; end;

//Making sure no values are null and user is infromed if there is (requirement 4.2) procedure TfrmLogin.btnLoginClick(Sender: TObject); begin if not ((edtEmail.Text = '') or (edtpassword.Text = '')) then databaseLogin else ShowMessage('complete the form...'); end;

procedure TfrmLogin.lblsignUPClick(Sender: TObject); begin //opening sign up in same position, and closing login form frmSignup.Top := frmLogin.Top; frmSignup.left := frmLogin.left; frmSignup.Show; frmLogin.Hide; end;

//making password character change to be hidden procedure TfrmLogin.edtpasswordClick(Sender: TObject); begin if (edtpassword.passwordchar=#0)then begin edtpassword.PasswordChar := '*'; end; end;

// changing color of btnLogin to indicate that the mouse is on top procedure TfrmLogin.btnLoginMouseLeave(Sender: TObject); begin btnLogin.Font.Color:= clWhite; end;

procedure TfrmLogin.btnLoginMouseEnter(Sender: TObject); var max:Integer; begin btnLogin.Font.Color:= RGB(119,143,143); end;

end.

pascal
Validation carried out

Validation of the user’s email The email entered is searched in the database table “Login”. There can only be 0 or 1 record containing the email (email field is unique). If 0 records, then email is either invalid or the account doesn’t exist. If query has a record, then the account does exist. Validation of the user’s password The password is validated if email is found within the database. The password entered compared to the password of the record found. If the password is not the same, the user has entered it incorrectly.

pascal
Changed in Prototype 2

Validate if form values are not empty

pascal
If one of the values of the form is empty, it will inform the user.
pascal
What has been done
Login form has been created, designed and implemented. Its purpose is to verify a user. Validation algorithms
have been used to make sure user is authentic, preventing people from breaking into system. It also allows
users to open the sign-up form. It is the first form that shows up when system is run. It has two edit box objects
which lets the user input their email and password. The program validates it when the user presses the login
button. To open the signup from, the user needs to click on the label at the bottom of the form. When the user
logs in, the main menu is shown
pascal
Criteria 1 has been completed.
pascal
Testing of solution
Test carried out are 2 .1, 2 .2, 2 .3, 2 .4.
pascal
Test No 2 .1.1 result: checking if users can login with their accounts...
pascal
Step 1) Inputting the test data values
pascal
_
Step 2) Pressing Login Button
pascal
Form isn???t complete
Summary: Test Successful ??? The system is able to login and displayed the menu form, when the correct values
of a registered account are entered.

Test No 2 .1. 2 result: checking that program informs user when email is incorrect, and doesn’t allow them to login...

Test No 2 .1. 3 result: checking that program informs user when password is incorrect, and doesn’t allow them

to login...

pascal
Step 1) Inputting the test data values
pascal
_
Step 2) Pressing Login Button
_
pascal
Summary: Test Successful ??? The system is able to change the caption of the label to ???email not found???, and
doesn???t show menu; doesn???t login.
pascal
Step 1) Inputting the test data values
pascal
_
pascal
Test No 2 .2.1 result: checking system informs user when values are null...
pascal
Step 2) Pressing Login Button
_
pascal
Summary: Test Successful ??? The system is able to change the caption of the label to ???incorrect
password???, change the value of the password edit box, back to password, and doesn???t show menu;
doesn???t login.

When pressing login without typing anything

_

Clearing edit box to value null, then pressing login button

_

Test No 2 .2.2 result: checking if system informs user when email value is null... Automatic Test Failure, same issue as Test No 1.2.1.

Test No 2 .2.3 result: checking if system informs user when password value is null... Automatic Test Failure, same issue as Test No 1.2.1.

pascal
Test No 2. 3 result: checking if system changes button colour when cursor hovering on top...
pascal
Test No 2 .4 result: checking if system can open sign up from login form...
pascal
Summary: Test Failed ??? Logically, the system should output ???complete the form??? when the values of email and
password edit boxes are ???email??? and ???password??? as the user didn???t input that, and they are just there indicating
the user what to type in and shouldn???t be considered as a value. I will have to write a set of validation in the
next prototype making sure when the email edit box is ???email??? and the password edit box is ???password??? the
system portrays that as an empty field and displays the complete the form pop up.
pascal
Hovering Cursor on button
pascal
_
Summary: Test Successful ??? The system is able to change the colour only when the mouse is on top, otherwise it
is white.
pascal
Clicking on ???don???t have and account, sign up??? on login
form
pascal
Form isn???t complete

Prototype

pascal
Prototype 2 is to fix the errors that occurred within the test in prototype1. It also makes some changes by
improving the user interaction with the systems Graphical Interface.

Changes in Implemented code Code Explanation procedure TfrmLogin.btnLoginClick(Sender: TObject); begin if not((edtEmail.Text = '')or (edtpassword.Text = '')or(edtEmail.Text = 'email')or (edtpassword.Text = 'password')) then databaseLogin else ShowMessage('complete the form...'); end;

pascal
Attempting to Fix error that occurred
in test 1.2.1, 1.2.2, 1.2.3, by changing
the condition of the selection in
procedure
???TfrmLogin.btnLoginClick???.

procedure TfrmLogin.edtpasswordClick(Sender: TObject); begin if ((edtpassword.Text = 'password')and(edtpassword.passwordchar=#0))then begin edtpassword.Text := ''; edtpassword.PasswordChar := ''; end else edtpassword.PasswordChar := ''; if((edtemail.Text =''))then edtemail.Text := 'email'; end;

procedure TfrmLogin.edtEmailClick(Sender: TObject); begin if (edtemail.Text = 'email')then edtemail.Text := ''; if((edtpassword.Text =''))then begin edtpassword.Text := 'password'; edtpassword.PasswordChar := #0; end; end;

pascal
Disappears ???email??? or ???password???.
pascal
When user clicks on the password
edit box...
...System checks if password edit box
is ???password??? and if the characters are
showing. If the condition is true, the
password edit box becomes null, so
user can start typing without deleting
the default text ???password???, and the
system changes characters to ???*???
when user types. This is to keep the
user???s password hidden, to prevent
anyone from knowing what it is.
...System checks if email edit box
value is null. If condition is true, the
system changes it to ???email???, so that
the user is aware of what needs to be
entered within it.
pascal
When the user clicks on the email edit
box...
...System checks if email edit box is
???email???. If the condition is true, the
email edit box becomes null, so user
can start typing without deleting the
default text (???email???). ...System checks
if password edit box is null. If
condition is true, it changes it to
???password???, with characters showing,
so that the user is aware of what
needs to be entered within it.
pascal
Changes in Validation carried out

Validate if form values are not empty

pascal
If one of the values of the form is empty, or if the value is ???email??? or ???password???
respectively, it will inform the user.
pascal
Summary: Test Successful ??? The system is able to open signup form from login form by clicking the label ???don???t
have and account, sign up???. It is also able to close login form

What has been done Changes have been made to prototype 1 to fix errors. Prototype 2 fixes the issue of the system not being able to inform user when values are null correctly. Prototype 2 also makes the system more user friendly, by disappearing hints for the user automatically.

pascal
Requirement 4.2 has been met.

Testing of solution

pascal
Test carried out are 2.2.
pascal
Test No 2 .2.1 result: checking system informs user when values are null...

When pressing login without typing anything

pascal
Test No 2 .2.2 result: checking if system informs user when email value is null...

Entering ‘Adam10’ into Password edit box, then pressing Login

_
pascal
Summary: Test Successful ??? ???Email??? and ???password??? are just hints and considered as null. The system is able to
output the message in all possible ways where the values of the edit box are either null or ???email???/ ???password???.

Entering ‘Adam10’ into Password

edit box and deleting ‘email’ from email edit box, then pressing Login

Summary: Test Successful – ‘Email’ is just a hint and considered as null. The system is able to output the message when the value of email edit box is null and password edit box is not null.

pascal
Test No 2 .2.3 result: checking if system informs user when password value is null...

Entering ‘adam@gmail.com’ into

email edit box, then pressing Login

Entering ‘adam@gmail.com’ into

email edit box and deleting ‘password’ from password edit

box, then pressing Login

Summary: Test Successful – ‘Password’ is just a hint and considered as null. The system is able to output the message when the value of password edit box is null and email edit box is not null.

pascal
Test No 2 .5.1 result: checking if the system can hide and show hints automatically...

Step1) clicking on email edit box

Step2) clicking on password edit box

Step3) clicking on email edit box

Summary: Test Successful – The system is able to show and hide the hints for the edit boxes. This means the user does not have to delete the hints when they want to enter a value. It also makes them appear back, making sure the user is fully aware of what needs to go inside the edit boxes.

pascal
Test No 2 .5. 2 result: checking if the system can prevent users email entered from being altered...

Step1) entering value into email

edit box

Step2) clicking on password edit

box

Step3) clicking on email edit box

Summary: Test Successful – The system is able to show and hide the hint for email edit box when the value is only null or ‘email’ respectively. The system will not alter or erase the values entered by the user in email edit box.

pascal
Test No 2 .5.3 result: checking if the system can prevent user???s password entered from being altered...

Step1) entering value into

password edit box

Step2) clicking on email edit box

Step3) clicking on password edit

box

Summary: Test Successful – The system is able to show and hide the hint for password edit box when the value is only null or ‘password’ respectively. The system will not alter or erase the values entered by the user in password edit box.

Stage 3: Implementing the “Signup page” and “Main Menu”

The Signup form and Main Menu are being implemented. The signup form allows users to create an account and login. Main Menu will link all forms needed to solve the problem.

Prototype

pascal
Screenshot of ???Signup Form??? and ???Main Menu Form???
pascal
Validates and creates an account when
all values are valid. Uses qrySignup to
interact with database
pascal
Allows user to open forms for
the solution
pascal
Opens setting form
pascal
User to input data to create
account

Implemented Code for Signup Form (unit_signup) unit unit_signup;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, jpeg, ExtCtrls, StdCtrls, Mask, DB, ADODB;

type TfrmSignup = class(TForm) published logo_header: TImage; edtEmail: TEdit; edtpassword: TEdit; edtfName: TEdit; btnSignup: TLabel; edtlName: TEdit; qrySignup: TADOQuery; procedure btnSignupClick(Sender: TObject); procedure btnSignupMouseEnter(Sender: TObject); procedure btnSignupMouseLeave(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure edtEmailClick(Sender: TObject); procedure edtfNameClick(Sender: TObject); procedure edtlNameClick(Sender: TObject); procedure edtpasswordClick(Sender: TObject); end;

var frmSignup: TfrmSignup;

implementation

uses unit_login;

{$R *.dfm}

//Checks if there is an integer in a string function isintinstr(search:string):Boolean; var i,j:Integer; found:Boolean; const numbers = ['0'..'9']; begin for i:=1 to Length(search) do begin if (Search[i] in numbers)then found := True; end; isintinstr := found; end;

function FirstLetterUppercase(temp:string):string; begin temp := lowercase(temp); temp[1] := uppercase(temp[1]); FirstLetterUppercase := temp; end;

//Checks if string only consists of alphabetical characters function stringisAlpha(name:string):Boolean;

const charslist = ['A'..'Z', 'a'..'z']; var i:Integer; problem:Boolean; begin problem:=false; //initial value is false for i:=1 to Length(name) do begin if not((name[i] in charsList))then problem:=true; // Contains a character, which is not an alphebet. end; stringisAlpha:=not(problem); end;

function verifyName_and_Password(fname,lname,password:string):Boolean; var outcome:Boolean; begin outcome:=false; //Name must only consist of alphabetical characters if not((stringisAlpha(fname))and (stringisAlpha(lname)))then ShowMessage('invalid name') //password length must be greater than/ equal to 8 else if (Length(password) >=8) then begin if not(isintinstr(password))then begin ShowMessage('password must be greater than 8'+#13#10+'characters, and include a digit'); end else outcome:=true; end else begin ShowMessage('password must be greater than 8'+#13#10+'characters, and include a digit'); end; verifyName_and_Password := outcome; end;

//verifys email address function IsValidEmail(email: string): boolean; const charslist = ['_', '-', '.', '0'..'9', 'a'..'z']; var FoundAt, lastpoint,valid : boolean; i, emailLen : integer; c : char; begin emailLen := Length(email); FoundAt := false; lastpoint := false; valid := true; for i:=1 to emailLen do begin c := email[i]; if c = '@' then begin if(FoundAt)then // Can only be one @ symbol in email valid := false else

FoundAt := true; end else if(c = '.')and(foundAt)then //at least 1 ‘.’ after arobasc lastpoint := true else if not(c in charslist)then //valid chars valid := false; end; if not(lastpoint) or (email[emailLen] = '.')then //if no ‘.’in email, or finishes at ‘.’ Then... valid := false; IsValidEmail:=valid; end;

//writes account to database tables login and staff function writeAccount(fname,lname,email,password:string):boolean; var LgnID:Integer; begin frmSignup.qrySignup.SQL.Text := 'Select LgnID from login where email='+quotedStr(email)+';'; frmSignup.qrySignup.open; //checks if email exits... if (frmSignup.qrySignup.RecordCount=0)then begin //if it doesn’t exist, it inserts it to the tables frmSignup.qrySignup.close; frmSignup.qrySignup.SQL.Text := 'insert into login(email,password) values ('+quotedStr(email)+','+ quotedStr(password)+');'; frmSignup.qrySignup.ExecSQL; //finds the LgnID so that the staff table can reference it frmSignup.qrySignup.SQL.Text := 'Select LgnID from login where email='+quotedStr(email)+';'; frmSignup.qrySignup.open; LgnID := frmSignup.qrySignup.fieldbyname('LgnID').AsInteger; frmSignup.qrySignup.close; frmSignup.qrySignup.SQL.Text := 'insert into staff(LgnID,Firstname,Lastname) values ('+inttostr(LgnID)+','+quotedStr(fname)+','+ quotedStr(lname)+');'; frmSignup.qrySignup.ExecSQL; ShowMessage('account created'); writeAccount:=True; end else begin frmSignup.qrySignup.close; ShowMessage('account with email address already exists'); writeAccount:=False; end; end;

procedure TfrmSignup.btnSignupClick(Sender: TObject); var i:integer; Temp:string; begin if (verifyName_and_Password(edtfName.Text, edtlName.Text, edtpassword.Text))then begin if (IsValidEmail(edtEmail.Text))then begin if (writeaccount(edtfName.Text, edtlName.Text, edtEmail.Text, edtpassword.Text))then begin

//keep same pos frmLogin.Top := frmSignup.Top; frmLogin.left := frmSignup.left; //closes signup form when account is created frmLogin.show; frmSignup.close; end; end else ShowMessage('invalid Email address'); end; end;

procedure TfrmSignup.btnSignupMouseEnter(Sender: TObject); begin btnsignup.Font.Color:= RGB(119,143,143); end;

procedure TfrmSignup.btnSignupMouseLeave(Sender: TObject); begin btnSignup.Font.Color:= clWhite; end;

//Opens login when signup is closed procedure TfrmSignup.FormClose(Sender: TObject; var Action: TCloseAction); begin //keep same pos frmLogin.Top := frmSignup.Top; frmLogin.left := frmSignup.left; frmLogin.show; end;

//Make sure Edit Boxes always show what needs to be entered in it. procedure TfrmSignup.edtEmailClick(Sender: TObject); begin if (edtemail.Text = 'email')then edtemail.Text := ''; if((edtpassword.Text =''))then edtpassword.Text := 'password'; if((edtfname.Text =''))then edtfname.Text := 'first name'; if((edtlname.Text =''))then edtlname.Text := 'last name';

end;

procedure TfrmSignup.edtfNameClick(Sender: TObject); begin if (edtemail.Text = '')then edtemail.Text := 'email'; if((edtpassword.Text =''))then edtpassword.Text := 'password'; if((edtfname.Text ='first name'))then edtfname.Text := ''; if((edtlname.Text =''))then edtlname.Text := 'last name'; end;

procedure TfrmSignup.edtlNameClick(Sender: TObject); begin if (edtemail.Text = '')then

edtemail.Text := 'email'; if((edtpassword.Text =''))then edtpassword.Text := 'password'; if((edtfname.Text =''))then edtfname.Text := 'first name'; if((edtlname.Text ='last name'))then edtlname.Text := ''; end;

procedure TfrmSignup.edtpasswordClick(Sender: TObject); begin if (edtemail.Text = '')then edtemail.Text := 'email'; if((edtpassword.Text ='password'))then edtpassword.Text := ''; if((edtfname.Text =''))then edtfname.Text := 'first name'; if((edtlname.Text =''))then edtlname.Text := 'last name'; end;

end.

pascal
Validation carried out for ???signup??? (unit_signup)

Validation of email An email has to consist of only one ‘@’ symbol; separates username with mail server name. An email must have at least one full stop. The full stop is valid to be used within the username. It also is used to separate the mail server with domain. The domain is the end of the email address, therefore if there is a full stop at the end of an email address the user enters, it is not a valid email address. An email address only consists of'_', '-', '.', any digit(s), any Alphabetical character and a ‘@’. Validation of password A password must be greater than or equal to 8 characters. It must have at least one digit. Validation of name Name must only be Alphabetical characters.

Validation of Account If an account with same email exists, the account is not created.

Implemented Code for “Main Menu” (unit_menu) unit unit_menu;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls;

type TfrmMainMenu = class(TForm) published lblProfileName: TLabel; ImgMainMenu: TImage; btnCreateStudent: TLabel; btnSelectStudent: TLabel; btnCreateClass: TLabel; btnSelectClass: TLabel;

btnCreateReport: TLabel; imgSettings: TImage; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnCreateClassClick(Sender: TObject); procedure btnSelectClassClick(Sender: TObject); procedure btnCreateStudentClick(Sender: TObject); procedure btnCreateStudentMouseEnter(Sender: TObject); procedure btnCreateStudentMouseLeave(Sender: TObject); procedure btnSelectStudentClick(Sender: TObject); procedure btnSelectStudentMouseEnter(Sender: TObject); procedure btnSelectStudentMouseLeave(Sender: TObject); procedure btnCreateClassMouseEnter(Sender: TObject); procedure btnCreateClassMouseLeave(Sender: TObject); procedure btnSelectClassMouseEnter(Sender: TObject); procedure btnSelectClassMouseLeave(Sender: TObject); procedure btnCreateReportClick(Sender: TObject); procedure btnCreateReportMouseEnter(Sender: TObject); procedure btnCreateReportMouseLeave(Sender: TObject); procedure imgSettingsClick(Sender: TObject); end;

var frmMainMenu: TfrmMainMenu;

implementation

uses unit_login;

{$R *.dfm}

procedure TfrmMainMenu.FormClose(Sender: TObject; var Action: TCloseAction); begin frmlogin.close; //once main menu is closed, the whole program closes end;

//Create student button - label component used as a button procedure TfrmMainMenu.btnCreateStudentClick(Sender: TObject); begin //open form end;

//changes the color when cursor is on top; lets user know it’s a button procedure TfrmMainMenu.btnCreateStudentMouseEnter(Sender: TObject); begin btnCreateStudent.Font.Color:= RGB(119,143,143); end;

procedure TfrmMainMenu.btnCreateStudentMouseLeave(Sender: TObject); begin btnCreateStudent.Font.Color:= clWhite; end;

//Select student button - label component used as a button procedure TfrmMainMenu.btnSelectStudentClick(Sender: TObject); begin //open form end;

procedure TfrmMainMenu.btnSelectStudentMouseEnter(Sender: TObject); begin

btnSelectStudent.Font.Color:= RGB(119,143,143); end;

procedure TfrmMainMenu.btnSelectStudentMouseLeave(Sender: TObject); begin btnSelectStudent.Font.color:=clWhite; end;

//Create Class button - label component used as a button procedure TfrmMainMenu.btnCreateClassClick(Sender: TObject); begin //open form end;

//changes the color when cursor is on top; lets user know it’s a button procedure TfrmMainMenu.btnCreateClassMouseEnter(Sender: TObject); begin btnCreateClass.Font.Color:= RGB(119,143,143); end;

procedure TfrmMainMenu.btnCreateClassMouseLeave(Sender: TObject); begin btnCreateClass.Font.Color:= clWhite; end;

//Select Class button - label component used as a button procedure TfrmMainMenu.btnSelectClassClick(Sender: TObject); begin //open form end;

//changes the color when cursor is on top; lets user know it’s a button procedure TfrmMainMenu.btnSelectClassMouseEnter(Sender: TObject); begin btnSelectClass.Font.Color:= RGB(119,143,143); end;

procedure TfrmMainMenu.btnSelectClassMouseLeave(Sender: TObject); begin btnSelectClass.Font.Color:= clWhite; end;

//Create Report button - label component used as a button procedure TfrmMainMenu.btnCreateReportClick(Sender: TObject); begin //open form end;

//changes the color when cursor is on top; lets user know it’s a button procedure TfrmMainMenu.btnCreateReportMouseEnter(Sender: TObject); begin btnCreateReport.Font.Color:= RGB(119,143,143); end;

procedure TfrmMainMenu.btnCreateReportMouseLeave(Sender: TObject); begin btnCreateReport.Font.Color:= clWhite; end;

//update user details button – image component used as a button procedure TfrmMainMenu.imgSettingsClick(Sender: TObject);

begin //open form end;

end.

pascal
What has been done
The signup and main menu form have been implemented. Criteria 2 has been met. It allows the user to create
an account to be able to use the system, hence requirement 5 has been met. The Main Menu Form connects all
the forms needed to solve the computational problem. It allows users to open the forms, hence requirement
8.3 is partially met. The prototype was tested in runtime of the code. Screenshots of results of the tests are
shown below.
pascal
Summary: The user is able to create and sign in using an account. The main menu form has also been created,
which will allow users to open different forms for the solution.
pascal
Testing of solution
Test carried out are 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.
pascal
Test No 3 .1 result: checking if users can create an account...

Step 1) Entering the values

Step 2) pressing signup button

Summary: Test Successful – The system is able to create an account and have it stored within the database. This allows the user to login. The system also prompts the user a message when the account has been created. Requirement 5.3 and 5.1 has been met.

pascal
Test No 3 .2.1 result: making sure system does not create an account when name is invalid...

Entering the values and pressing signup button

Summary: Test Successful – The system is able to validate the name. In this case, the system is able to recognise first name is invalid, and not create an account. It is able to inform user why the account as not been created. Requirement 5.4 and 5.6 has been met.

Test No 3 .2.2 result: making sure system does not create an account when name is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to validate the name. In this case, the system is able to recognise last name is invalid, and not create an account. It is able to inform user why the account as not been created. Requirement 5.4 and 5.6 has been met.

Test No 3 .3.1 result: making sure system does not create an account when password is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to validate the password. In this case, the system is able to recognise password does not contain a digit, and does not create an account. It is able to inform user why the account as not been created. Requirement 5.4 and 5.5 has been met.

Test No 3 .3.2 result: making sure system does not create an account when password is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to validate the password. In this case, the system is able to recognise password is less than 8 characters, and does not create an account. It is able to inform user why the account as not been created. Requirement 5.4 and 5.5 has been met.

Test No 3 .3.3 result: making sure system does not create an account when password is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to create an account, when password length is 8 (on boundary) and have it stored within the database. This allows the user to login. The system also prompts the user a message when the account has been created. Requirement 5.3, 5.5, and 5.1 has been met.

Test No 3 .4.1 result: making sure system does not create an account when email is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect when the email is invalid. In this case, the system cannot detect any mail server in the email address. An email address is required a ‘@’ to indicate what the mail server is. The system was able to tell the user that the email address is invalid. The system does not create the account. Requirement 7 met.

Test No 3.4. 2 result: making sure system does not create an account when email is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect when the email is invalid. In this case, the system detects more than one ‘@’ symbol. The system was able to tell the user that the email address is invalid. The system does not create the account. Requirement 7 met.

Test No 3 .4.3 result: making sure system does not create an account when email is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect when the email is invalid. In this case, the system cannot detect any domain in the email address. An email address is required a domain. The system was able to tell the user that the email address is invalid. The system does not create the account. Requirement 7 met.

Test No 3 .4.4 result: making sure system does not create an account when email is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect when the email is invalid. In this case, the system cannot detect any domain in the email address. It does not mistake the domain as ‘reynold@gmail’. An email address is required a domain. The system was able to tell the user that the email address is invalid. The system does not create the account. Requirement 7 met.

Test No 3 .4.5 result: making sure system does not create an account when email is invalid... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect when the email is invalid. In this case, it was able to spot the character ‘#’, which in not a valid character in email addresses. The system was able to tell the user that the email address is invalid. The system does not create the account. Requirement 7 met.

Test No 3. 5 result: making sure system does not create an account when account already exists... Entering the values and pressing signup button

Summary: Test Successful – The system is able to detect if the account already exists and is able to inform the user. The system does not create the account.

Test No 3. 6 result: Checking if users name displays on main menu... Step 1) Entering the values...

Step 2) Pressing login button

Summary: Test Successful – The system is able to display the users name on main menu in the correct position.

Test No 3.7 result: checking if system changes button colour when cursor hovering on top... Hovering Cursor on button

Summary: Test Successful – The system is able to change the colour only when the mouse is on top, otherwise it is white.

Prototype

Prototype 2 is a more efficient way of changing the colour of the buttons for the main menu form.

pascal
Changes in Implemented Code for ???Main Menu Form??? (unit_menu)
...
type
TfrmMainMenu = class(TForm)
published
lblProfileName: TLabel;
ImgMainMenu: TImage;
btnCreateStudent: TLabel;
btnSelectStudent: TLabel;
btnCreateClass: TLabel;
btnSelectClass: TLabel;
btnCreateReport: TLabel;
imgSettings: TImage;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnCreateClassClick(Sender: TObject);
procedure btnSelectClassClick(Sender: TObject);
procedure btnCreateStudentClick(Sender: TObject);
procedure btnMouseEnter(Sender: TObject);
procedure btnMouseLeave(Sender: TObject);
procedure btnSelectStudentClick(Sender: TObject);
procedure btnCreateReportClick(Sender: TObject);
procedure imgSettingsClick(Sender: TObject);
end;
pascal
var
frmMainMenu: TfrmMainMenu;
pascal
implementation
pascal
uses unit_login;
pascal
{$R *.dfm}
pascal
procedure TfrmMainMenu.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
frmlogin.close;
end;
pascal
//Changes Color, lets user know that its a button
procedure TfrmMainMenu.btnMouseEnter(Sender: TObject);
begin
TLabel(Sender).Font.Color := RGB(119,143,143);
end;
pascal
procedure TfrmMainMenu.btnMouseLeave(Sender: TObject);
begin
TLabel(Sender).Font.Color := clWhite;
end;
pascal
//Create student button - label component used as a button
procedure TfrmMainMenu.btnCreateStudentClick(Sender: TObject);
begin
//open form
end;

//Select student button - label component used as a button procedure TfrmMainMenu.btnSelectStudentClick(Sender: TObject); begin //open form end;

//Create Class button - label component used as a button procedure TfrmMainMenu.btnCreateClassClick(Sender: TObject); begin //open form end;

//Select Class button - label component used as a button procedure TfrmMainMenu.btnSelectClassClick(Sender: TObject); begin //open form end;

//Create Report button - label component used as a button procedure TfrmMainMenu.btnCreateReportClick(Sender: TObject); begin //keep open end;

//update user details button – image component used as a button procedure TfrmMainMenu.imgSettingsClick(Sender: TObject); begin //open form end;

end.

pascal
What has been done
Instead of using separate procedures for mouse enter and mouse leave events, for each object, prototype 2
allows a single procedure for mouse enter and one for mouse leave to be used for all objects, reducing it from
ten procedures to only two coded.
pascal
Testing of solution
Retest No 3.7 result: checking if system changes button colour when cursor hovering on top...

Summary: Test Successful – The system is still able to change the colour only when the mouse is on top, otherwise it is white.

Stage 4: Implementing the “Create Class Form”

The Create Class form allows users to enter the details of a class they want to create. Classes play a key part in the system. It organises students, making it easier for the user to find a student to create a report.

Prototype

pascal
Screenshot of ???Create Class Form???
pascal
Implemented Code for Create Class Form (unit_createClass)
unit unit_createClass;
pascal
interface
pascal
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB, unit_login;
pascal
type
TfrmCreateClass = class(TForm)
published
lbledtFormclassName: TLabeledEdit;
cboSelectYear: TComboBox;
btnCreateClass: TButton;
qryCreateClass: TADOQuery;
lblYear: TLabel;
procedure btnCreateClassClick(Sender: TObject);
end;
pascal
var
frmCreateClass: TfrmCreateClass;
pascal
implementation
pascal
{$R *.dfm}
pascal
//Checks if class already exists under the user
function ClassExists(formclassName:string; year:Integer):boolean;
var res:Boolean;
begin
frmcreateclass.qrycreateclass.SQL.Text := 'Select classID from class where
name='+quotedStr(formclassName)+' and stfID='+inttostr(info.staffID)+' and
year='+inttostr(year)+';';
frmCreateClass.qryCreateClass.Open;
//qry will either have 0 or 1 records. If it is not 0 then class already
exists.
pascal
Validates and creates a class when all values are
valid. Uses qryCreateClass to interact with database
pascal
Always stays Upper Case
pascal
Combo box includes values, year 7...year 13

if (frmCreateClass.qryCreateClass.RecordCount>0)then res:=True else res:=false; frmCreateClass.qryCreateClass.close; ClassExists := res; end;

//verifys the class name function verifyClassName(formclassName:string; year:Integer):boolean; var res:Boolean; begin if (((Length(formclassName)=1) and (year>=7) and (year<=11))or((Length(formclassName)=3) and ((year=12) or (year=13))))then res:=True else res:= false; verifyClassName := res; end;

//write class to database and infroms user procedure writeclass(name:string;year,staffID:Integer); begin frmcreateclass.qrycreateclass.SQL.Text := 'Insert into class(name, year,StfID) values('+quotedStr(name)+','+inttostr(year)+','+inttostr(staffID)+');'; frmCreateClass.qryCreateClass.ExecSQL; ShowMessage('class created'); end;

//when create class button is clicked, verifys all data and creates class. procedure TfrmCreateClass.btnCreateClassClick(Sender: TObject); var alreadyExists, classNameVerified:Boolean; className:string; year:Integer; begin className:= lbledtFormclassName.Text; year:= cboSelectYear.ItemIndex + 7; //year 7 is on index 0, and so on. Therefore +7. alreadyExists:= ClassExists(className, year); classNameVerified:= verifyClassName(className,year); if (cboSelectYear.ItemIndex = -1)or(className='')then ShowMessage('Fill in the values to create class...') else if(classNameVerified)then begin if (alreadyExists)then ShowMessage('class exists...') //infroms user when class exists Else //creates class when all data is valid writeClass(className,year,info.staffID); end else ShowMessage('Invalid class name'); //Infroms user, when class name is invalid end;

end.

pascal
Validation carried out for ???Create Class Form??? (unit_createClass)

Validation of Class Name The Class name must be valid to create a class. Classes of year 7 to 11 must be one character in length, whilst year 12 and 13’s must be 3 characters in length. This is the format of Graveney School’s class name. Validation of Class Existence The Class will only be created if it does not already exist. Validates if form is empty If the value of the name is null or if the user did not select a year for the class, the system displays a message to the user informing them to fill in the missing values

pascal
Changes in Implemented Code for ???Main Menu Form??? (unit_menu)

Coded Section Before Coded Section After procedure TfrmMainMenu.btnCreateClassClick(Sender: TObject); begin //open form end;

pascal
procedure
TfrmMainMenu.btnCreateClassClick(Sender:
TObject);
begin
//open form
frmCreateClass.ShowModal;
end;

uses unit_login; uses unit_login, unit_createClass;

Justification: Allow user to open the Create Class form from main menu.

pascal
What has been done
The Create Class Form has been implemented. Criteria 4 has been met. It allows the user to create a class,
hence requirement 12 has been met. The Create Class Form can also be open from the main menu, hence
requirement 8.3 has been partially met. The prototype was tested in runtime of the code. Screenshots of
results of the tests are shown below.
pascal
Summary: The user is able to create and sign in using an account. The main menu form has also been created,
which will allow users to open different forms for the solution. They are also able to create classes once logged
in. The create class form can be opened from main menu.
pascal
Testing of solution
Test carried out are 4 .1, 4.2, 4.3, 4.4, 4.5.

Test No 4 .1 result: checking if users can open create class form... Pressing Create Class button on Main Menu

Summary: Test Successful – The Main Menu is able to open the create class form, when the user presses the button.

pascal
Test No 4.2.1 result: checking if users can create a class...

Typing the Values and clicking create button

Summary: Test Successful – The Create class form is able to create a class, with valid values, and inform the user that the class has been created.

Test No 4.2.2 result: checking if users can create a class... Typing the Values and clicking create button

Summary: Test Successful – The Create class form is able to create a class, with valid values, and inform the user that the class has been created.

pascal
Test No 4.3.1 result: checking result of creating a class, when form is not filled in...

clicking create button

Summary: Test Successful – The Create class form is able to inform user when the form is not complete, and does not create the class.

pascal
Test No 4.3.2 result: checking result of creating a class, when value of name is null...

Selecting year and clicking create button

Summary: Test Successful – The Create class form is able to inform user when the form is not complete, and does not create the class.

pascal
Test No 4.3.3 result: checking result of creating a class, when year is not selected...

Entering value and clicking create button

Summary: Test Successful – The Create class form is able to inform user when the form is not complete, and does not create the class.

pascal
Test No 4.4.1 result: checking if system can recognise invalid name...

Typing the values and clicking create button

Summary: Test Successful – The Create Class form is able to recognise class name length is not one, therefore invalid, and not create the class. It is then able to tell the user why the class has not been created.

Test No 4.4.2 result: checking if system can recognise invalid name... Typing the values and clicking create button

Summary: Test Successful – The Create Class form is able to recognise class name length is not one, therefore invalid, and not create the class. It is then able to tell the user why the class has not been created.

Test No 4.4.3 result: checking if system can recognise invalid name... Typing the values and clicking create button

Summary: Test Successful – The Create Class form is able to recognise class name length is not three, therefore invalid, and not create the class. It is then able to tell the user why the class has not been created.

pascal
Test No 4.4.4 result: checking if system can recognise invalid name...

Typing the values and clicking create button

Summary: Test Successful – The Create Class form is able to recognise class name length is not three, therefore invalid, and not create the class. It is then able to tell the user why the class has not been created.

pascal
Test No 4.4.5 result: checking if system can recognise invalid name...

Typing the values and clicking create button

Summary: Test Successful – The Create Class form is able to recognise class name length is not three, therefore invalid, and not create the class. It is then able to tell the user why the class has not been created.

pascal
Test No 4.4.6 result: checking if system can recognise invalid name...
Typing the values and clicking
create button
pascal
Summary: Test Successful ??? The Create Class form is able to recognise class name length is not three, therefore
invalid, and not create the class. It is then able to tell the user why the class has not been created.
pascal
Test No 4.4.7 result: checking if system can recognise invalid name...
Typing the values and clicking
create button
pascal
Summary: Test failed ??? Code has not been implemented to check if form name consists of only alphabetical
characters, therefore Create Class form takes value BL1 as a valid value, and creates the class. I will have to
write a set of validation in order to avoid erroneous data like this being inputted. This will be done in the next
prototype.
pascal
Test No 4.5 result: checking if system can check if class already exists...
Typing the values and clicking
create button
pascal
Summary: Test Successful ??? The system is able to recognise if class already exist and not create another class.
The system is able to inform user that the class already exists.

Prototype

Prototype 2 fixes the logical error in prototype 1, where the user was able to create a class, with the name including an integer. I have implemented the required validation needed to deny any erroneous data as displayed in the failed test.

Changes in Implemented Code for “Signup Form” (unit_signup) : Attempt to resolve issue seen in test 4.4.7 carried out in prototype 1 ... Public function stringisAlpha(name:string):Boolean; //used in create class end; ... function Tfrmsignup.stringisAlpha(name:string):Boolean; const charslist = ['A'..'Z', 'a'..'z']; var i:Integer; problem:Boolean; begin problem:=false;//initial value is false for i:=1 to Length(name) do begin if not((name[i] in charsList))then problem:=true; // Contains a character, which is not an alphebet. end; stringisAlpha:=not(problem); end;

function verifyName_and_Password(fname,lname,password:string):Boolean; var outcome:Boolean; begin outcome:=false; //Name must only consist of alphabetical characters if not((frmSignup.stringisAlpha(fname))and (frmSignup.stringisAlpha(lname)))then ... The Grey highlighted text is what has been modified from stage 3. Justification: The function, stringisAlpha, has been made public. The function will be used within unit_createClass to check if the form name is a string or not.

pascal
Changes in Implemented Code for ???Create Class Form??? (unit_createClass)

Coded Section Before Coded Section After uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, ADODB, unit_login;

pascal
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB,
ADODB, unit_login, unit_signup;

Function verifyClassName(formclassName:strin g; year:Integer):boolean; var res:Boolean; begin if (((Length(formclassName)=1) and (year>=7) and (year<=11))or((Length(formclassName )=3) and ((year=12) or (year=13))))then res:=True else res:= false; verifyClassName := res; end;

pascal
function
verifyClassName(formclassName:string;
year:Integer):boolean;
var res:Boolean;
begin
res:= false;
if (((Length(formclassName)=1) and
(year>=7) and
(year<=11))or((Length(formclassName)=3)
and ((year=12) or (year=13))))then
begin
if
(frmSignup.stringisAlpha(formclassName))
then
res:=True;
end;
verifyClassName := res;

end; Justification: unit_signup is referenced in unit_createClass so that its able to use its public resources. Function verifyClassName has been modified. It uses the function stringisAlpha, from signup, to make sure name only consists of alphabetical characters.

pascal
Validation carried out for ???Create Class Form??? (unit_createClass)

Validation of Class Name being alphabetical

pascal
Class name must only consist of alphabetical charaters to be valid.
pascal
What has been done
Signup form and create Class form have been modified to have a successful test 4.4.7. Create Class Form is able
to check if the class name only consists of alphabetical characters, hence successfully meeting requirements
12.3.
pascal
Summary: The user is able to create and sign in using an account. The main menu form has also been created,
which will allow users to open different forms for the solution. They are also able to create classes once logged
in. The create class form can be opened from main menu.
pascal
Testing of solution
Test No 4.4.7 result: checking if system can recognise invalid name...

Typing the values and clicking create button

Summary: Test Successful – The system is able to check that the form name only contains alphabetical characters. The system does not create the class when name is invalid and informs user.

Stage 5: Implementing the “Create Student Form”

Create student form allows users to store students, allowing them to create reports of the student.

Prototype

pascal
Screenshot of ???Create Student Form???
pascal
Changes in Implemented Code for ???Main Menu Form??? (unit_menu)
Coded Section Before Coded Section After
procedure
TfrmMainMenu.btnCreateStudentClick(Sender:
TObject);
begin
//open form
end;
pascal
procedure
TfrmMainMenu.btnCreateStudentClick(Sender:
TObject);
begin
//open form
frmCreateStudent.ShowModal;
end;
pascal
uses unit_login, unit_createClass; uses unit_login, unit_createClass,
unit_createStudent;
Justification: Allow user to open the Create Student form from main menu.
pascal
Implemented Code for Create Student Form (unit_createStudent)
unit unit_createStudent;
pascal
interface
pascal
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ExtCtrls, unit_login, unit_signup;
pascal
type
TfrmCreateStudent = class(TForm)
published
lbledtStudent_FirstName: TLabeledEdit;
lbledtStudent_LastName: TLabeledEdit;
cboSelectYear: TComboBox;
cboSelectClass: TComboBox;
qryCreateStudent: TADOQuery;
btnCreateStudent: TButton;
cboSelectGender: TComboBox;
pascal
Combo box includes values, year 7...year 13
pascal
Combo box includes values, Male and female.
pascal
Combo box includes class names of user???s classes
pascal
Validates and creates student, when all values are valid.
Uses qryCreateStudent to interact with database.

[...]