Student-Report-System
This is a report system to be used for schools. It autogenerates the teacher comment on student.
- Quiet · last change 12-7-2023
- ★ 4 on GitHub
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
- 1.1 Features that make the problem solvable by computational methods
- 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
- 2.1 Decomposing the Problem
- 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
- Stage 1: Database
- 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
- 4.1 System and End-user testing
- Maintenance Issues..................................................................................................................
Section 1: Analysis
1.1 Features that make the problem solvable by computational methods
Problem Identification
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
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:This would then be used to create the reportSystem needs
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.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.
E.g. how is {student name} effort in class?
1) Excellent
2) Good
3) Unsatisfactory
4) Very PoorInformation Gathering.......................................................................................................................
Planning
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.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]
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.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.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.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.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.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.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.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.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.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
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.Survey IllustrationSurvey results
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]
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
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]
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
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.
Year 7 to 11 Class Name consists of only one characterYear 12 and 13 (6th Form) Class Name consists of three characters1.3 Existing solutions
Solution A
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.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.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.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.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.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.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 mainF i g u r e A _ 2Order of Comment Selection
Opening, Behaviour, Progress, Strength, Weakness, Closing commentF i g u r e A _ 1goal is to allow users to create reports with ease and in time restrictions, therefore a help section will not be
implemented.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
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.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.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.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.
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
Number Feature Explanation and Justification
3 .1 The solution must
be able to run on
Windows OSThe 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
Number Feature Explanation and Justification4 .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.
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
Number Criteria Justification
1 User is able to login with their email and password
to access their accountShows 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 passwordShows 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
detailsShows 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 yearUser 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
classUser 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 buttonUser 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.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
studentUser 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 quizUser 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 commentUsers 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 createdUser 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.2Section 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
Staff (StfID, FirstName, LastName, LgnID)Login (LgnID, Email, Password)Student (SdtID, FirstName, LastName, classID)Report Info (RptInfoID, attendance, punctuality, grade, subject)Class (ClassID, Name, year, StfID) //form class, a student only has one form classComment Bank (CmbID, type, comment, level)Report Comments (RptID, CmbID) //stop other foreign keys from repeating over and over againReport (RptID, attendance, punctuality, grade, subject,dateCreated, SdtID)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.To concludeThis 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
Report
CommentInterface Design
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.Visualising the designs shows me how the application should look like, and give me a change to make any changes,
before the development stage.Login FormThe 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.Error in hereThe error will be displayed
here, e.g., incorrect
password. This is to
complete requirement 4.2.Password
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.Text boxes font Tahoma size 15.
Both indicate what to input in
each box.The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by- This meets requirement 2.
Button to login. Font Tahoma
size 20.Go to sign up page link. Font
Tahoma size 8.Sign upSignup FormThe 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.
Password
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.Text boxes font Tahoma size 15.
Both indicate what to input in
each box.Button to Sign up. Font
Tahoma size 20.The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by- This meets requirement 2.
First name Last Name
Main MenuThe 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.
Create Class FormThe 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.
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 16Opens 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
Font Sans Serif with size 14.
Label indicates what needs to go
inside the textboxFont Sans Serif with size 14. Label
indicates what the values of the
combo box are.Font Sans Serif with size 12. Button
to create class.Create Student FormThe 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.
Select Class FormResolution 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.
Font Tahoma with size 12. Label
indicates what needs to go
inside the textboxFont Tahoma with size 12. Label
indicates what the values of the
combo box are.Font Tahoma with size 8. Button to
create student.Displays
students inside
here, font 8Combo box and text box, font
size 12Button font size 12The header colour is #778f8f.Table font size
12Select Student FormResolution 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.
Update FormButtons with font size 8Text boxes along with
labels of font 12Table with font size 12Combo Boxes with font 12.Password
The header color is #778f8f.
Font Lucida Console size 30.
System is used by one school.Text boxes font Tahoma size 15.
Both indicate what to input in
each box.Button, Font Tahoma size 20.The background color is
#bed3d3. It???s formal and
simple. Resolution is 400 by- 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.
Create Report FormResolution 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
- The create report form is needed to meet requirements 14.
Report Comment FormDisplays report comment in
here in font 8Text boxes with font 18Button font 8Label with font 8Label to display question with
font size 14Text boxes with font 12Radio buttons to select answer
with font size 18Combo Boxes with font 12Buttons with font size 8, general
size is around 40 by 15Resolution 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
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...Student Name is put here. Font
size 14.Data dictionary
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
Purpose: This will be used to store the user???s login details so they are able to access the program.Field
NameRequired? Data Type Sample Data Validation
RuleValidation
TypeDescription and
key field
LgnID Yes AutoNumber ??? 1 ??? Must be
unique.
Must be an
integer.Type
check.
Presence
check.Primary keyEmail Yes VarChar ???rayaanuddin@gmail.com??? Must be
unique.Presence
check.-
Password Yes VarChar ???Rayaan10??? Must be
less or
equal to 32
characters.Length
check.
Presence
check.-
Table name: Staff Purpose: This will be used to store the user’s name.
Field
NameRequired? Data Type Sample
DataValidation Rule Validation Type Description and
key field
StfID Yes AutoNumber ???12??? Must be unique.
Must be an integer.Type check.
Presence check.Primary keyFirstName Yes VarChar ???Rayaan??? Must be unique. Presence check.-
LastName Yes VarChar ???Uddin??? Must be greater
than 8 charactersLength check.
Presence check.-
LgnID Yes Integer ???1??? Must be unique.
Must be an integer.Type check.
Presence check.Foreign KeyTable name: Class
Purpose: This will be used to store the classes created by the user.Field
NameRequired? Data Type Sample
DataValidation Rule Validation
TypeDescription and
key field
classID Yes AutoNumber ??? 3 ??? Must be unique.
Must be an integer.Type check.
Presence check.Primary keyName Yes VarChar ???B??? Length must be less
than or equal to 3
Must only be
alphabetical.Presence check.
Length check.
Type check.-
Year Yes Integer ??? 7 ??? Must be a single
integer.Length check.
Presence check.
Type check.-
StfID Yes Integer ???12??? Must be unique.
Must be an integer.Type check.
Presence check.Foreign KeyTable name: Student Purpose: This will be used to store the classes created by the user.
Field
NameRequired? Data Type Sample
DataValidation Rule Validation
TypeDescription and
key field
SdtID Yes AutoNumber ??? 6 ??? Must be unique.
Must be an integer.Type check.
Presence check.Primary keyFirstName Yes VarChar ???Elena??? Must only be
alphabetical.Presence check.
Length check.
Type check.-
LastName Yes VarChar ???Yale??? Must be a single
integer.Length check.
Presence check.
Type check.-
Gender Yes VarChar ???Female??? Must only be
alphabetical.Type check.
Presence check.
classID Yes Integer ???3??? Must be unique.
Must be an integer.Type check.
Presence check.Foreign KeyTable name: Report
Purpose: This will be used to store the details of a report once created by the user.Field Name Required? Data Type Sample
DataValidation Rule Validation
TypeDescription and
key field
RptID Yes AutoNumber ??? 6 ??? Must be unique.
Must be an
integer.Type check.
Presence
check.Primary keyAttendance Yes Integer ??? 100 ??? Value must be
less than or equal
to 100.Value check.
Presence
check.
Length check.
Type check.-
Punctuality Yes Integer ??? 95 ??? Value must be
less than or equal
to 100.Value check.
Presence
check.
Type check.-
Grade Yes VarChar ??? 8 ??? Length must be
One.Presence
check.
Length check.
Type check.
Gender Yes VarChar ???Female??? Must only be
alphabetical.Type check.
Presence
check.
DateCreated Yes Date/Time ???08/06/2005??? Must be format
DD/MM/YYYYType check.
Presence
check.
Format Check
SdtID Yes Integer ???6??? Must be unique.
Must be an
integer.Type check.
Presence
check.Foreign KeyTable name: Comment Bank
Purpose: This will be used to store the comments which the algorithm will select when generating the report.Field
NameRequired? Data Type Sample Data Validation
RuleValidation
TypeDescription and
key field
cmbID Yes AutoNumber ??? 1 ??? Must be
unique.
Must be an
integer.Type check.
Presence
check.Primary keytype Yes VarChar ???Opening??? - Type check.
Presence
check.-
level Yes VarChar ???Green??? - Presence
check.
Type check.-
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.
Field
NameRequired? Data Type Sample
DataValidation Rule Validation
TypeDescription and
key field
RptID Yes Integer ??? 6 ??? Must be unique.
Must be an integer.Type check.
Presence check.Composite keyCmbID Yes Integer ??? 1 ??? Must be unique.
Must be an integer.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:
SQL Query Justification
SELECT StfID, Email, Password,
firstname, lastname FROM Login INNER
JOIN staff ON (login.LgnID =
staff.LgnID) WHERE email = :userEmailThis 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.1Query’s to write user details
SQL Query Justification
INSERT INTO Login(Email, Password)
VALUES (:userEmail,:userPassword)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)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.1Query’s to Update User details
SQL Query Justification
UPDATE Staff SET FirstName=:fName,
LastName=:lName WHERE StfID=:staffIDThis updates the users first and last name in staff
table. It is executed in update user detail phase.UPDATE Login SET Email= :userEmail,
password=:userPassword WHERE
LgnID=:loginIDThis updates the users email and password in table
login. It is executed in update user detail phase.This allows the user to update their account details.
Requirements met: 9.1Query to Create a Class:
SQL Query Justification
INSERT INTO class(name, year, StfID
VALUES (:cName, :cYear, :staffID)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.1Query to display users classes:
SQL Query JustificationSELECT name FROM class WHERE
year=:cYear and stfID=:staffIDThis 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:
SQL Query Justification
UPDATE Class SET name = :cName, year
= :cYear WHERE classID = :classIDThis 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.1Query to Create Student:
SQL Query Justification
INSERT INTO student(FirstName,
LastName,Gender, ClassID) VALUES
(:fName,:lName,:gender,:classID)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.1Query to Update Student:
SQL Query Justification
UPDATE Student SET FirstName =
:FirstName, LastName = :LastName
, Gender = :Gender, classID =
:classID WHERE SdtID = :studentIDThis 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.1Query to Create Report:
SQL Query Justification
INSERT INTO Report(SdtID, Attendance,
Grade, Punctuality, Subject,
dateCreated) VALUES (:StudentID,
:Attendance, :Grade, :Punctuality,
:Subject, :dateCreated)This will be used by the system to store the report???s
details in the table report in the database.INSERT INTO [Report Comments](RptID,
CmbID) values (:reportID,
:reportNumber)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.This allows the user to create and save a report in the system
Requirements met: 14.1Query to Get Report:
SQL Query JustificationSELECT 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 =
:reportIDThis will be used by the system to get the report
details by having the report id.SELECT comment FROM [Comment Bank]
INNER JOIN [Report Comments] ON
[Comment Bank].cmbID = [Report
Comments].CmbID WHERE rptID =
:reportID ORDER BY [Report
Comments].CmbIDThis will be used by the system to get the report
comments.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.1Login Form (Login Algorithm):
PROCEDURE DatabaseLoginIF FormEmpty THEN
ADD SQL SELECT StfID, Email, Password, firstname, lastname FROM Login INNER
JOIN staff ON (login.LgnID = staff.LgnID) WHERE email = :userEmailIF 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...???)
ENDIFENDPROCEDUREThis 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: 4Signup Form (Create Account Algorithm):
PROCEDURE WriteAccountIF isValidEmail AND isValidName AND isValidPassword THENADD SQL SELECT LgnID from login where email = :userEmailIF No Records Found THEN
ADD SQL INSERT INTO Login(Email, Password) VALUES (:userEmail,
:userPassword)
SQL EXECUTEADD SQL INSERT INTO staff(LgnID,Firstname,Lastname) VALUES
(:loginID,:fname,:lname)
SQL EXECUTEPRINT(???ACCOUNT CREATED!???)CLOSE frmSignup
OPEN frmLogin
ELSE
PRINT(???ACCOUNT ALREADY EXISTS!???)
ENDIFENDPROCEDUREThis 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: 5Email Verification:
FUNTION isValidEmail(email)charslist = ['_', '-', '.', '0'..'9', 'a'..'z'];
emailLen = email.LENGTH
FoundAt = FALSE
LastPoint = FALSE
Valid = TRUEFOR 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 iRETURN ValidENDFUNCTIONThis 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:
PROCEDURE CreateClassIF 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...???)
ENDIFENDPROCEDUREThis 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: 12Delete Class Algorithm:
PROCEDURE DeleteClass(ClassID)ADD SQL SELECT SdtID FROM student WHERE classID = :ClassIDfor i= 1 to RecordCount
DeleteStudentReports(SdtID)
NEXT SQL
NEXT iADD SQL DELETE * FROM student WHERE classID = :ClassID
SQL EXECUTEADD SQL DELETE * FROM Class WHERE classID = :ClassID
SQL EXECUTE
ENDPROCEDUREThis procedure will be used by the system to delete a class. The user must be able to delete its data.
Requirement met: 13.2Create Student Form:
PROCEDURE CreateStudentIF FormEmpty THEN
PRINT(???FILL IN THE VALUES TO CREATE STUDENT???)
ELSEIF isValidName THENADD 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...???)
ENDIFENDPROCEDUREThis 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: 10Delete Student Algorithm:
PROCEDURE DeleteStudent(StudentID)DeleteStudentReports(SdtID)ADD SQL DELETE * FROM Student WHERE sdtid = :StudentID
SQL EXECUTEENDPROCEDUREThis procedure will be used by the system to delete a student. The user must be able to delete its data.
Requirement met: 11.2Create Report Form (Creation):..................................................................................................
PROCEDURE GenerateReportIF isReportFormValid THEN
GenerateReportCommentADD SQL INSERT INTO Report(SdtID, Attendance, Grade, Punctuality, Subject,
dateCreated) VALUES (:StudentID, :Attendance, :Grade, :Punctuality, :Subject,
:dateCreated)
SQL EXECUTEADD SQL SELECT RptID FROM Report WHERE sdtID = :StudentID ORDER BY RptID
DESCFOR i=1 TO 6
ADD SQL INSERT INTO [Report Comments](RptID, CmbID) values (:reportID,
:reportNumber)
SQL EXECUTE
NEXT iPRINT(???REPORT CREATED???)
ENDIFENDPROCEDURE
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: 14Create Report Form (Validation):
FUNCTION isReportFormValidIF 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
ENDIFIF 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
ENDIFIsReportFormValid = NOT(IsInvalid)ENDFUNCTIONThis 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.4Report Comment Form:
PROCEDURE displayReport(reportID)ADD SQL SELECT FirstName, LastName, Gender, Attendance, Grade, Punctuality,
Subject, DateCreated, Name, Year FROM Class INNER JOIN (Student INNER JOINReport 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
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.Having variables and data structures written beforehand will also avoid any repeated code of creation of any
classes, etc.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
Name Data Structure/
propertiesGlobal/
LocalDescription & JustificationTUserData 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.TUserData.LastName String Global This will hold the users last name.TUserData.Email String Global This will hold the users email.TUserData.Password String Global This will hold the users password.TUserData.StaffID Integer Global This will hold the users staff ID, which is used
to assign data to a specific user.Login form
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
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,
ValidBoolean 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
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 numberTquestion.text String Global This will hold the question itselfName Data Structure Global/
LocalDescription & JustificationTquestion 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
Name Data
Structure/
propertiesGlobal/ Local Description & JustificationTquiz 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):
Name Data
structure/
propertiesGlobal/ Local Description & JustificationTStudentInfo 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.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
Name Data Type Global/ Local Description & Justification
punctuality,
attendance, grade,
subject, studentName,
dateCreated,
classNameYrstring 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.Name Data
StructureGlobal/ Local Description & Justificationpronoun Array
stringLocal 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
Test
Num
berTest Purpose Test Data Expected Result Test
TypeJustification1.1.1 Checking if
database can store
account details.Login Table
LgnID: 1
Email: adam@gmail.com
Password: Adam10Staff Table
StfID: 1
FirstName: Adam
LastName: Sandler
LgnID: 1It accepts the
values and stores it
within the databaseValid This test is to make
sure data can be add
to the Table, and Staff
Table can reference
the Login table.1.1.2 Checking if
referential integrity
is enforced
between Login and
StaffChanging LgnID from 1 to 2
within staff table where StfID is
1.
Note: Record with LgnID 2
doesn???t existIt displays error and
doesn???t changeInvalid This test is to make
sure referential
integrity is enforced.1.2.1 Checking if
database can store
class detailsClass Table
ClassID: 1
Name: F
Year: 7
StfID: 1It accepts the
values and stores it
within the databaseValid 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
ClassChanging StfID from 1 to 2
within staff table where ClassID
is 1.
Note: Record with StfID 2
doesn???t existIt displays error and
doesn???t changeInvalid This test is to make
sure referential
integrity is enforced.1.3.1 Checking if
database can store
student detailsStudent Table
SdtID: 1
FirstName: Josh
LastName: Drake
Gender: Male
ClassID: 1It accepts the
values and stores it
within the databaseValid 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 ClassChanging ClassID from 1 to 2
within student table where
StfID is 1.
Note: Record with StfID 2
doesn???t existIt displays error and
doesn???t changeInvalid This test is to make
sure referential
integrity is enforced.1.4.1 Checking if
database can store
a reportReport Table
RptID: 1
SdtID: 1
Attendance: 98
Grade: A
Punctuality: 100
Subject: English
DateCreated: 26/10/2022Report Comments
Store comments 1, 10, 15, 22,
and 26 with RptID 1.It accepts the
values and stores it
within the databaseValid 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.2 .1.1 Checking if system
allows users to
login{click login button}
Email: adam@gmail.com
Password: Adam10The program will
display the ???mainValid This test to make sure
that the login form
works by reading themenu??? 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.
{click login button}
Email: adam123@gm
Password: Adam10The ???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.
{click login button}
Email: adam@gmail.com
Password: Adam10123The ???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.
{click login button}
Email:
Password:The ???Login Form???
will output
???complete the
form???.InvalidThis 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.
{click login button}
Email:
Password: Adam10The ???Login Form???
will output
???complete the
form???.Invalid2 .2.3 Checking if “Login Form” can inform user when password value entered is null.
{click login button}
Email: adam@gmail.com
Password:The ???Login Form???
will output
???complete the
form???.Invalid2. 3 Testing button is
interactive when
mouse on topHover mouse on top of login
buttonWhen 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 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 formClick ???don???t have and account,
sign up???.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.
Click on email edit boxClick on Password edit boxClick on email edit boxWhen user clicks on
email edit box,
???email??? should
disappear.When user clicks on
password edit box,
???password??? should
disappear and
???email??? shouldValid 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 havingappear within email
edit box.When user clicks on
email edit box,
???email??? should
disappear, and
???password??? should
appear within
password edit box.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)
Type ???adam@gmail.com??? in
Email Edit box.Click on Password Edit box.Click on email edit box.The value of the
email edit box will
not change when
the user clicks on
password edit box
or email edit boxValid
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)
Type ???Adam10??? in Password
Edit box.Click on email edit box.Click on Password Edit box.The value of the
password edit box
will not change
when the user clicks
on email edit box or
password edit box.Valid3.1 Testing when all values are valid, is user able to create account
TYPE
First Name: Ryan
Last Name: Reynold
Email:
RyanReynold@gmail.com
Password: Reynold10Click on signup buttonThe 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
First Name: Ryan1
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: Reynold10Click on signup buttonThe signup form
should not create
the account and
should display
message invalid
name.InvalidThis 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
First Name: Ryan
Last Name: Reynold##]
Email: RyanRenold@gmail.com
Password: Reynold10Click 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
First Name: Ryan
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: ReynoldsTheBestClick on signup buttonThe signup form
should not create
the account and
should display
message invalid
password.InvalidThis 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 sure3.3.2 Testing when all values are valid, apart from
TYPE
First Name: Ryan
Last Name: Reynoldpassword, where
password length is
less than 8Email: RyanRenold@gmail.com
Password: Reyno1Click on signup buttonrequirements 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
First Name: Ryan
Last Name: Reynold
Email: RyanRenold@gmail.com
Password: Reynold1Click on signup buttonThe signup form
should create the
account and should
display message of
account created.Bounda
ryThis is a boundary test
to make sure password
is valid when the
length is on boundary3.4.1 Testing Email Verification: When there is no ‘@’ symbol
TYPE
First Name: Ryan
Last Name: Reynold
Email: RyanReynoldgmail.com
Password: Reynold10Click on signup buttonThe signup form
should not create
the account and
should display
message invalid
email.InvalidThis 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
First Name: Ryan
Last Name: Reynold
Email:
Ryan@Reynold@gmail.com
Password: Reynold10Click on signup button 3.4.3 Testing Email Verification: When there is no ‘.’ symbol
TYPE
First Name: Ryan
Last Name: Reynold
Email: RyanReynold@gmailcom
Password: Reynold10Click on signup button 3.4.4 Testing Email Verification: When there is no domain, but there is a full stop within the email
TYPE
First Name: Ryan
Last Name: Reynold
Email: Ryan.Reynold@gmail
Password: Reynold10Click on signup button 3.4.5 Testing Email Verification: When there is an invalid character
TYPE
First Name: Ryan
Last Name: Reynold
Email:
RyanReynold#@gmail.com
Password: Reynold10Click on signup buttonErrone
ous3.5 Checking if system allows user to create an account with a registered email
TYPE
First Name: Thomas
Last Name: Shelby
Email:
RyanReynold@gmail.com
Password: Thomas10Click on signup buttonThe signup form
should not create
the account and
should display
message informing
user that the
account already
existsErrone
ousThis 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 theyalready 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
Email:
RyanReynold@gmail.com
Password: Reynold10Click on Login buttonThe 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.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
Hover mouse on top of buttons
on main menuWhen 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
Clicks on button Create Class in
Main menuOpens Create Class
formValid 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
Class Name: B
Select Year 7Click on Create Button
Create Class form
should create the
class and display a
message informing
the user that the
class has been
createdValidThis 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
Class Name: BJH
Select Year 13Click on Create Button4.3.1
Checking if system
can inform user
when from is not
completed, and
does not create
accountTYPE
Class Name: NULL
Does not select a yearClick on Create Button Create Class form
should not create
the class and
display message, fill
in the values to
create classInvalidThis 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
Class Name: NULL
Select year 7Click on Create Button 4.3.3 TYPE Class Name: B Does not select a year
Click on Create Button4.4.1 Checking if system can inform user when class name is invalid, where year 7 class name length is not one
TYPE
Class Name: BL
Select Year 7Click on Create ButtonCreate Class form
should not create
the class and inform
user class name is
invalid.Bounda
ryThis 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
Class Name: BL
Select Year 11Click on Create Button4.4.3
Checking if system
can inform user
class name is
invalid, where year
12 class name
length is not threeTYPE
Class Name: B
Select Year 12Click on Create Button 4.4.4 TYPE Class Name: BLRT Select Year 12
Click on Create Button 4.4. 5
Checking if system
can inform user
class name is
invalid, where year
13 class name
length is not threeTYPE
Class Name: B
Select Year 13Click 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
Class Name: BL1
Select Year 13Click on Create ButtonErrone
ous4.5 Checking if system rejects a class that already exists
TYPE
Class Name: B
Select Year 7Click on Create ButtonCreate Class form
should not create
the class and inform
user that the class
already existsInvalid 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
1) Select Year 7, View Classes
2) Select Year 13, View Classes
3) Select Year 8, View Classes1) Shows Class B
2) Shows Classes
LMN and BJH
3) Shows No ClassesValid This test is to make
sure the form correctly
shows classes
corresponding to the
year selected by the
user, using the
database. The class isneeded 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
First Name: Ben
Last Name: Yale
Select Year 7 Class B
Select Gender MaleClick on Create Student ButtonCreate Student
form should create
the student and
inform user that the
student has been
createdValid 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
First Name: Ben
Last Name: Yale
Select Year 7 Class B
Select Gender MaleClick on Create Student Button2)TYPE
First Name: ben
Last Name: yale
Select Year 7 Class B
Select Gender MaleClick on Create Student ButtonCreate Student
form should not
create the student
and inform user
that the student
already existsInvalid 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
Click on Create Student ButtonCreate Student
Form should not
create the student
and should inform
user the form is not
filled out.InvalidThis 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
First Name:
Last Name: Yale
Select Year 7 Class B
Select Gender MaleClick on Create Student Button 5.4.3 Checking if form is filled out, when last name is null
TYPE
First Name: Ben
Last Name:
Select Year 7 Class B
Select Gender MaleClick on Create Student Button 5.4.4 Checking if form is filled out, when class is not selected
TYPE
First Name: Ben
Last Name: Yale
Select Year 7
Select Gender MaleClick on Create Student Button 5.4.5 Checking if form is filled out, when year is not selected
TYPE
First Name: Ben
Last Name: Yale
Select Gender MaleClick on Create Student Button 5.4.6 Checking if form is filled out, when gender is not selected
TYPE
First Name: Ben
Last Name: Yale
Select Year 7 Class BClick on Create Student Button 5.5.1 Testing when all values are valid, apart from First Name
TYPE
First Name: Ben1
Last Name: Yale
Select Year 7 Class BClick on Create Student ButtonThe Create Student
form should not
create the student
and should display
message invalid
name.InvalidThis 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
First Name: Ben
Last Name: Yale##]
Select Year 7 Class BClick on Create Student Button5. 6 Testing cboselectyear in system, when entering an alphabet
Enter Letter ???A??? in
cboselectyearThe Create Student
form should just
display select yearValid 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
Click on setting button on main
menuMain menu should
display the form
with the users
values displayed
within the edit
boxes, apart from
passwordValid This test is to make
sure the main menu
can open the update
setting form.6.2 Updating account when values are valid
Not changing any details
Typing the original password:
Adam1010Click Update ButtonThe Update Student
Form should update
the email and
change it within the
database. It shouldValid This test is to make
sure the user is able to
update their accounts
when they are onlythen 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
Change Email value to
Adam1@gmail.comOther values keep same...
Name: Adam Sandler
Type Password: Adam1010Click Update ButtonThe 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.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
Change Email value to
ryanrynold@gmail.comOther values keep same...
Name: Adam Sandler
Type Password: Adam1010Click Update ButtonThe 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
Change Email value to
Adamgmail.comOther values keep same...
Name: Adam Sandler
Type Password: Adam1010Click Update ButtonThe 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
Keep Values the same
Name: Adam1 Sandler
Type Password: Adam1010The Update Student
Form should not
update the account.
It should inform theInvalid This test is to check the
validation of name
from signup is working
with update settingClick Update Button user that the name
entered is invalid.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
Keep Values the same
Name: Adam Sandler###
Type Password: Adam1010Click Update ButtonInvalid6.5 Updating Password where password is invalid
Keep Values the same
Type Password: AdamClick Update ButtonThe 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
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
Click on delete button
Then NoThe Update Setting
form should not
delete the account
and shall just return
back to the form.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
In signup form...
First Name: jEfE
Last Name: willIAMS
Email: Jeff@gmail.com
Password: Jeff1000
Press signupThe System should
make sure the
name in database is
stored as Jefe
WilliamsValid 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
In Select Class form...
Select class Name L Year 8The Select Class
form should display
the 2 students,
Holly and AndyValid This test is to make
sure the system is able
to show the user which
students are in the
class. This feature iswhich 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
In Select Class Form...
Select filter by year
1) Select year 7
2) Select year 91) The Select Class
form???s table should
display Class A
2) The Select Class
form???s table should
display no classesvalid 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
In Select Class Form...
Select Class A Year 7
Press Delete
Press yesThe 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
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.ValidThis 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.
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.InvalidThis 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
In Select Class Form...
Select Class L Year 8
Class name
Class year Any Year
update7 .7 Checking if system will not update the class when the class already exists under the user
In Select Class Form...
Select Class L Year 8
Class name: A
Class year 8
updateThe select class
form should not
update the class,
and inform the user
the class already
existsInvalidThis 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 thesolution (system) functions properly. 7 .8 Making sure the data of one user isn’t accessed by the other.
In Select Class Form...
Select Class L Year 8
Class name: R
Class year 11
updateThe Select Class
form should update
the class and notify
the user. It should
then also refresh
the table.ValidThe 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.
Pressing the button named
btnIncrementClasses
The Update Setting
form should delete
all year 11s and 13
classes and
increment the class
year by 1.validThe 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
Year 12|LAL|Mellad BagbhanGrade B| Attendance 97|
Punctuality 92|Computing1a|2b|3b|4a|5a|6bThe create report
form should be able
to create a report
by following the
algorithm, and save
it in the database.ValidThe 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
Year 9|A|[unselected]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.InvalidThese 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
Keep only attendance emptyKeep only punctuality emptyKeep only subject emptyKeep question 6 empty 8.3 Checking if the form is able to validate the attendance and punctuality
1) Having punctuality as 123
2) Having attendance as - 12
3) Having attendance as A12The form should
display message to
user, informing the
value is invalid and
not create the
reportInvalid8.4 Checking if the form is able to validate the Grade entered
1) Inputting value 10
2) Inputting value AC
3) Inputting value #
Invalid8.5 Checking if the forms previous question button functions as intended too
Pressing previous button on
form The form should
display the previous
questionValidThis test is to make
sure the user is able to
go back and forth
when answering the
multiple choicequestions, without losing data or having any issues. 8.6 Checking if the form can display the report correctly
Year 12|LAL|Mellad BagbhanGrade B| Attendance 97|
Punctuality 92|Computing1a|2b|3b|4a|5a|6bThe create report
form should be able
to create a report
and open and
display the form on
report comment
form.ValidThis 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
Press Copy and paste it in
NotepadThe report
comment form
should allow the
user to copy the
comment to
clipboardValidThis 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
Export report and open
The report
comment form
should allow the
user to export the
report.ValidThe 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*
Create a report with A* as
grade The create report
form should create
the report.ValidThe 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
Select Student Alex Rider and
double click its existing report
displayedThe 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.ValidThe 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
Update Year 7 Class G Alex
Rider to a Female with name
Alexia Rider. Press the update
buttonThe select student
form should update
the details of the
students in the
database and
should show a
message of success
to the user.ValidThe 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
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.The Select Student
form should output
a message to the
user indicating the
form is not
complete.InvalidThis test is to make
sure data of students is
always accurately
stored. This is needed
for requirement 11.1
to be met.- Select Year 8 class G Alex Rider, and update student with class and year unselected.
- 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
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.The select student
form should display
a message
informing the user
the student already
exists, and not
update the
student???s detailsInvalidThis 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
Select Year 7, class G, Alex
Rider and press delete report
button with report selectedThe 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.ValidThis 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
Select Year 7, class G, Alex
Rider and press delete report
button with no report selectedThe select student
form should display
a message
informing the user
that no reports are
selected.InvalidThis 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
Select student Alex Rider in
Year 7, Class G and press delete
student buttonThe select student
form deletes the
student and show a
message to the
user, informing
them that the user
has been deleted.ValidThis 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
Press Delete Student button
(with no student selected)
The select student
form informs the
student no student
is selected.InvalidThis 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
Open Login formOpen Create Report Form
Both forms should
display in the
middle of the
screenValidThis 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
Test
NumberTest Purpose Test Data Expected Result JustificationS 1 Process of
creating and
logging into an
accountAccount
Name: Rayaan Uddin
Email: 6250@graveney.org
Password: Rayaan10Account is created.
User can login with
account.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
accountUpdate
Email: 6250@graveney.com
Password: RayaanU1Account is updated.S 3 Process of
deleting an
accountPressing the delete account
buttonAccount is deleted.S 4 Process of
setting up
students and
classes, and
sharing
studentsClass
Name: B
Year: 7Student
Name: Nick Solo
Class : (One created above)
Gender: MaleShare user to...
6250@graveney.orgClass and student are
created.
User shares student to
another user.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.S 5 Process of
updating a classUpdate class B: Year 8
Name to: CClass 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 reportReport
Okay, Excellent, Okay, Some,
At, Some
Grade: 4
Attendance: 92
Punctuality: 86
Subject: EnglishReport is created.
Comment is copied
and pasted onto a
word document.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.S 7 Process of
updating a
student and
exporting a
reportStudent
Name to: Nickoletta Solo
Gender to: FemaleStudent is updated.
The report is exported.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
reportPressing delete button on
each form for each functionReport 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.S 9 Process of
deleting a
studentStudent is deleted.S 10 Process of
deleting a classClass is deleted.End User Testing
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.The questions that will be asked are...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
Here are the tables in design view created in MS Access.Screenshot and Explanation of ???Staff??? _tableThe 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??? _tableThe 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??? _tableThe 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??? _tableThe 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.Screenshot and Explanation of ???Comment Bank??? _tableThe 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.
Screenshot and Explanation of ???Report??? _tableThe table Report stores the all the reports that the user creates.
Screenshot and Explanation of ???Report Comments??? _tableThe table Report Comments stores the comment of the report by linking the report to each comment it has from the comment bank table.
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”
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”
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.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”
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.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
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
Test carried out are 1.1, 1.2, 1.2, 1.3.Test No 1.1.1 result: checking database can store account details...Test No 1.1. 2 result: checking if referential integrity is enforced between Login and Staff...Step 1) Inputting
the test data
values for Login
tableStep 2) Inputting
the test data
values forSignup 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 ...
Inputting the
test data values
for Class table_________________________________________________________________Summary: Test Successful ??? The database is able to store classes and reference a record from staff tablechanging
the value to
2Summary: Test Successful ??? referential integrity is enforced.Inputting
the test
data
values for
Student
table
__________________________________________________________________
_______Test No 1.3.2 result: checking if referential integrity is enforced between Class and Student...
Summary: Test Successful ??? The database is able to store student???s and reference a record from Class
tablechanging
the value to
2Summary: Test Successful ??? referential integrity is enforced.Prototype
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.Screenshot and explanation of Comment Bank tableThese 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.
Test No 1. 4 .1 result: checking database can store reports...Step 1) Inputting
the test data
values for Report
tableStep 2) Inputting
the test data
values for report
comments tableSummary: 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 bankStage 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
Screenshot of ???Login Form???Implemented code for login Form (unit_login)
unit unit_login;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls, DB, ADODB, unit_signup, shellAPI,unit_menu;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);Closes login Page and shows sign up page
to create an account. Uses qryLogin to
interact with database.The label (???{error here}???) tells the user if
the email or password entered is incorrect.When the user presses login, the program
verifies the details entered in the edit
boxes.Connects all
queries in system
to databaseAlways stay Lower Caseprocedure 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.
Validation carried outValidation 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.
Changed in Prototype 2Validate if form values are not empty
If one of the values of the form is empty, it will inform the user.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 shownCriteria 1 has been completed.Testing of solution
Test carried out are 2 .1, 2 .2, 2 .3, 2 .4.Test No 2 .1.1 result: checking if users can login with their accounts...Step 1) Inputting the test data values_
Step 2) Pressing Login ButtonForm 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...
Step 1) Inputting the test data values_
Step 2) Pressing Login Button_
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.Step 1) Inputting the test data values_Test No 2 .2.1 result: checking system informs user when values are null...Step 2) Pressing Login Button_
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.
Test No 2. 3 result: checking if system changes button colour when cursor hovering on top...Test No 2 .4 result: checking if system can open sign up from login form...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.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.Clicking on ???don???t have and account, sign up??? on login
formForm isn???t completePrototype
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;
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;
Disappears ???email??? or ???password???.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.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.Changes in Validation carried outValidate if form values are not empty
If one of the values of the form is empty, or if the value is ???email??? or ???password???
respectively, it will inform the user.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 formWhat 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.
Requirement 4.2 has been met.Testing of solution
Test carried out are 2.2.Test No 2 .2.1 result: checking system informs user when values are null...When pressing login without typing anything
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
_
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.
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.
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.
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.
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
Screenshot of ???Signup Form??? and ???Main Menu Form???Validates and creates an account when
all values are valid. Uses qrySignup to
interact with databaseAllows user to open forms for
the solutionOpens setting formUser to input data to create
accountImplemented 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.
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.
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.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.Testing of solution
Test carried out are 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7.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.
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.
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;var
frmMainMenu: TfrmMainMenu;implementationuses unit_login;{$R *.dfm}procedure TfrmMainMenu.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
frmlogin.close;
end;//Changes Color, lets user know that its a button
procedure TfrmMainMenu.btnMouseEnter(Sender: TObject);
begin
TLabel(Sender).Font.Color := RGB(119,143,143);
end;procedure TfrmMainMenu.btnMouseLeave(Sender: TObject);
begin
TLabel(Sender).Font.Color := clWhite;
end;//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.
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.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
Screenshot of ???Create Class Form???Implemented Code for Create Class Form (unit_createClass)
unit unit_createClass;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, ADODB, unit_login;type
TfrmCreateClass = class(TForm)
published
lbledtFormclassName: TLabeledEdit;
cboSelectYear: TComboBox;
btnCreateClass: TButton;
qryCreateClass: TADOQuery;
lblYear: TLabel;
procedure btnCreateClassClick(Sender: TObject);
end;var
frmCreateClass: TfrmCreateClass;implementation{$R *.dfm}//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.Validates and creates a class when all values are
valid. Uses qryCreateClass to interact with databaseAlways stays Upper CaseCombo box includes values, year 7...year 13if (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.
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
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;
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.
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.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.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.
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.
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.
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.
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.
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.
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.
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.
Test No 4.4.6 result: checking if system can recognise invalid name...
Typing the values and clicking
create buttonSummary: 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.Test No 4.4.7 result: checking if system can recognise invalid name...
Typing the values and clicking
create buttonSummary: 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.Test No 4.5 result: checking if system can check if class already exists...
Typing the values and clicking
create buttonSummary: 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.
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;
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;
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.
Validation carried out for ???Create Class Form??? (unit_createClass)Validation of Class Name being alphabetical
Class name must only consist of alphabetical charaters to be valid.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.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.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
Screenshot of ???Create Student Form???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;procedure
TfrmMainMenu.btnCreateStudentClick(Sender:
TObject);
begin
//open form
frmCreateStudent.ShowModal;
end;uses unit_login, unit_createClass; uses unit_login, unit_createClass,
unit_createStudent;
Justification: Allow user to open the Create Student form from main menu.Implemented Code for Create Student Form (unit_createStudent)
unit unit_createStudent;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ExtCtrls, unit_login, unit_signup;type
TfrmCreateStudent = class(TForm)
published
lbledtStudent_FirstName: TLabeledEdit;
lbledtStudent_LastName: TLabeledEdit;
cboSelectYear: TComboBox;
cboSelectClass: TComboBox;
qryCreateStudent: TADOQuery;
btnCreateStudent: TButton;
cboSelectGender: TComboBox;Combo box includes values, year 7...year 13Combo box includes values, Male and female.Combo box includes class names of user???s classesValidates and creates student, when all values are valid.
Uses qryCreateStudent to interact with database.[...]

