SDP Assignment
SDP Assignment
GROUP ASSIGNMENT
TECHNOLOGY PARK MALAYSIA
AAPP006-4-2-SDP
SOFTWARE DEVELOPMENT PROJECT
UCDF1805ICT/ICT(ITR)/ICT(DI)
INSTRUCTIONS TO CANDIDATES:
1. Submit your assignment at the administrative counter.
2. Students are advised to underpin their answers with the use of
references (cited using the Harvard Name System of Referencing).
3. Late submission will be awarded zero (0) unless Extenuating
Circumstances (EC) are upheld.
4. Cases of plagiarism will be penalized.
5. The assignment should be bound in an appropriate style (comb-bound
or stapled).
6. Where the assignment should be submitted in both hardcopy and
softcopy, the softcopy of the written assignment and source code
(where appropriate) should be on a CD in an envelope / CD cover and
attached to the hardcopy.
7. You must obtain 50% overall to pass the module.
Student declaration:
I declare that: We understand what is meant by plagiarism
The implication of plagiarism have been explained to us by our lecturer
This project is all our work and we have acknowledged any use of the
published or unpublished works of other people.
Table of Contents
Table of Figures..........................................................................................................................7
1.0 Acknowledgement................................................................................................................1
2.0 Abstract................................................................................................................................2
4.0 Introduction..........................................................................................................................4
4.1 Project Background........................................................................................................................................4
14.3 Register....................................................................................................................................................102
14.4 Login........................................................................................................................................................105
14.5 Logout......................................................................................................................................................108
14.6 Feedback..................................................................................................................................................109
14.8 Discussion................................................................................................................................................113
14.10 Library....................................................................................................................................................122
15.0 Conclusion......................................................................................................................134
16.0 References......................................................................................................................135
17.0 Appendix........................................................................................................................138
17.1 Installation Guide.....................................................................................................................................138
Table of Figures
Figure 1 Statistic......................................................................................................................15
Figure 2 Waterfall Model.........................................................................................................25
Figure 3 Project Gannt Chart...................................................................................................29
Figure 4 Landing Page and Home Page Chart.........................................................................30
Figure 5 Portal Page Chart.......................................................................................................31
Figure 6 Context Diagram........................................................................................................32
Figure 7 DFD Level 0..............................................................................................................33
Figure 8 DFD Level 1 (Library)...............................................................................................34
Figure 9 DFD Level 1 (Discussion – Read Thread).................................................................35
Figure 10 DFD Level 1 (Test)..................................................................................................36
Figure 11 DFD Level 1(Feedback)..........................................................................................37
Figure 12 Entity Relationship Diagram (ERD)........................................................................55
Figure 13 Flowchart (Library).................................................................................................56
Figure 14 Flowchart (Discussion - Read Thread)....................................................................57
Figure 15 Flowchart (Test).......................................................................................................59
Figure 16 Flowchart (Feedback)..............................................................................................60
Figure 17 Landing 1.................................................................................................................61
Figure 18 Landing 2.................................................................................................................61
Figure 19 Landing Info............................................................................................................62
Figure 20 Landing Nav............................................................................................................62
Figure 21 Landing Footer.........................................................................................................62
Figure 22 Register 1.................................................................................................................64
Figure 23 Register 2.................................................................................................................64
Figure 24 Register 3.................................................................................................................64
Figure 25 Register 4.................................................................................................................65
Figure 26 Register 5.................................................................................................................65
Figure 27 Login 1.....................................................................................................................66
Figure 28 Login 2.....................................................................................................................66
Figure 29 Login 3.....................................................................................................................66
Figure 30 Home 1.....................................................................................................................67
Figure 31 Home 2.....................................................................................................................67
Figure 32 Home Feedback.......................................................................................................68
1.0 Acknowledgement
We would like to thank our lecturers that have taught us througout the semesters for
this diploma. We are very grateful as they have given us the ability and knowledge to perform
well and succeed in our specific fields. Most importantly, we are very thankful for our
lecturer Dr. Nurul Haniza Binti Mohtar as she had been guiding us on our progress for SDP.
Secondly, we would like to thank our PHP lecturer from our previous semester, Sivaguru A/L
Subarmaniyan as we would not have been able to create our E-Learning Website if it was not
for his teaching. Our group had created an E-Learning system website named Coding 101.
The intention of the website is to provide free online computing education to the people of
Malaysia. The overall process was done by a team of 4 members. Each of the components for
the project required different skills for the overall complete project establishment. The project
was split accordingly to suit each of the group member’s expertise in the field. The project
took a total of 14 long weeks to complete. Despite all of the obstacles and hassles, it was still
a very interesting and a great learning experience.
2.0 Abstract
An E-learning system website named Coding 101 was developed. The intention of
the website was to provide free online computing education to the people of Malaysia. There
are a number of functions provided by the system that aims to benefit the users. For example,
a platform where students can choose the courses they are interested in to study. Next, a page
for the students to take an online examination to evaluate their performances. A discussion
page where they are able to exchange their questions and answers with other students.
Finally, a free accessible library where students can get a range of readable E-Books. The
main highlights of the website were to mainly provide free education to the people who are in
need, as higher education is expensive and not many people can afford it. The system had the
main intention of promoting online learning to the community mostly because it can be very
beneficial and helpful in many ways to most people. Coding 101 hopes that they are able to
reach out and assist many more in need. It also hopes to be able to grow and expand their
services in the future.
4.0 Introduction
4.1 Project Background
The E-Learning system was created due to many factors faced by many people. One
of the problems faced is that not every person is able to afford higher education such as
colleges or universities. This is an important factor as higher education acts as an investment
that requires a substantial threshold for an individual to further their studies [ CITATION Dan
\l 17417 ]. Malaysia has also been ranked as the fifth most expensive country for one to get
university education [ CITATION Cha15 \l 17417 ] This is mostly due to the low average
monthly income of RM3,087 earned by most employees based on the Salaries & Wages
Survey Report Malaysia by Statistics Department (DOSM) in 2018 [ CITATION htt \l
17417 ]. The statistic report is shown as the figure Statistic below.
Figure 1 Statistic
The first problem that arises is that there are many under privileged high school
leavers and other students who are not able to afford higher education due to financial
issues. With this problem, a lot of people who are potentially talented misses and waste the
opportunity to learn and utilize computer skills.
The second problem will be the traditional learning methods that are being
conducted in universities and colleges. Traditional learning methods are not very effective
in the modern era as different students require different learning techniques. The old
traditional learning technique might not be effective in delivering the module as most
universities do not provide consistent balance of practical training and theoretical
understanding of the particular module.
The third problem will be the limited knowledge and IT study resources found in
most universities’ libraries compared to online. This is due to the expensive cost for
universities to purchase books. With limited variety of books and studying materials, it will
not provide students full understanding of their modules.
The fourth problem is the poor computer fundamental skills that most students
have. Most of the students have very poor computer skills and most of them do not know
how to use the basic functions, such as downloading a software and many more. This factor is
very likely due to the poor exposure of computer knowledge for students during their
studying days. Most schools do not provide computing skills and knowledge to lower level
education students. This is a very crucial and critical factor as IT is becoming more important
in the modern world, without the basic computer skills, they will face a lot of issues later on.
The fifth and final problem is that most graduates or students do not fully
understand in the particular subject despite scoring well for their exams. The traditional
learning system usually consists of exams being conducted after learning the subject for a
certain number of weeks. Students might score as high as a distinction however; they are not
guaranteed to fully understand the module as some exams conducted in universities might be
biased or unfair. This can bring serious problems to certain graduates especially when they
are out in the working environment as expectations by employers are usually high.
The first solution is that by creating an E-Learning system, it can help to provide
students a virtual place to obtain complete IT knowledge as most students are under
privileged and are not able to afford higher education. The E-learning system can be another
useful alternative for people in obtaining proper computer knowledge.
Next, the second solution is to provide students alternative ways for learning
compared to the old traditional learning method. For example, students can learn through
the videos provided, read online notes, do tutorial questions, ask questions in the discussion
page, conduct online tests and browse the online library page in the portal. It can help
overcome the traditional learning method as most traditional learning ways are tedious and
boring.
The third solution is that by creating an E-Learning website, students can access the
website’s portal page that consists of an online virtual library to obtain studying
resources and knowledge. The library page consists of many educational websites found all
over the Internet. It can help students solve programming problems and gain more additional
knowledge.
The fourth solution is that by creating an E-Learning website, students are not just
able to learn IT and programming, but they are also able to enhance and learn basic
computer fundamental skills such as emailing, creating an account and so on. With this
skill, they are able to browse the web without any problems.
The fifth and final solution is that an E-learning website helps students to fully
understand their module. The major problem that most graduates do not realize is that
besides scoring distinction in that particular module, it does not guarantee that these students
fully understand the module. With this new E-learning system, it can help student emphasize
the understanding of a particular course. There is a slide page for the courses chapter that
allows students to learn. There is also a tutorial page that allows student practice and answer
questions. There is also a video page for each course to provide better explanation to the
students. There is a discussion page that allow students to seek help or answer some questions
posted by other users. Students will understand their courses better when they seek help from
other users. Finally, There will be a test for each course to evaluate the student’s
understanding. This can help students to learn and understand each chapter of the module
better.
Coding 101 E-Learning system emphasizes in helping the students or any learner to
gain the knowledge regarding Information Technology in a more effective way. Coding 101
aims to deliver programming knowledge to students virtually.
The roles of the system will be divided into web administrators and students. For the
roles, a web administrator can perform activities such as website editing such as creating,
updating and deleting web contents. Students are able to learn through online videos, lecture
session and do programming exercises. They can take online tests.
The first point for the system’s scope is that the target audience will be mainly for
Malaysians high school leavers but not restricted to other education level students, such as
undergraduates and so on. This initiative is made as it helps to boost the countries recognition
for IT. Malaysia can be more modern and well developed if there is a good introduction of
technology being implemented. The system aims to target high school leavers as teenagers
with young mind are relatively active at this age range, and can contribute a lot with a good
foundation of IT. However, the system plans to open up and expand to other countries in the
future.
Secondly, the system will be web based and can be easily accessible through the
Internet. Anything can be accessed online via the Internet. One will need a computer or any
electronic device along with an Internet connection to access the webpage via an Internet web
browser. This approach makes it very easily accessible and less confusing. The development
of the web page is relatively cheaper compared to hiring software engineers to develop a
software for the system. This helps to save cost especially when the E-Learning system
service is free of charge to the students.
Thirdly, users of intermediate computer skills can easily access and utilize the e-
learning system. Coding 101 E-Learning system has made initiatives and plans that aims to
allow users to use the service easily without hesitations. If the system is complicated, it will
not be user friendly and can lead to many problems. Hence, it will not be very effective for
students in using the provided service.
10
Fourthly, the courses provided are Java programming, PHP and SQL. Coding 101 E-
Learning system aims to introduce and teach the most widely used programming language to
their students. The following programming languages are very commonly used in the
working environment. Students with a good foundation of the following languages can apply
for work easily in the future.
Finally, the level of the courses provided are based on the Diploma standard level of
education. The courses offered are not too hard and complex as it follows the real university
level standard of IT education. When the courses offered by the system is set at a difficult
level, students might give up easily due to many difficulties and problem faced, especially
when they are high school leavers with poor IT computer knowledge background.
11
Coding 101 E-Learning System has set 5 major objectives in hopes that the system
will fulfil and satisfy. The objectives set are relatively important for a new system’s milestone
growth. When the objectives set are achieved, it opens a bigger pathway for opportunities,
such as the worldwide expansion of the system to assists more students in need.
The first objective of the system is to provide every student a chance to study and
obtain computer knowledge through a free online education platform. Not everyone is
able to afford higher education as most of them comes from poorer family background and
many other factors. Coding 101 aims to assist and provide opportunities for under privileged
high school leavers and other different level of education students to pursue in IT. Some
students might waste their opportunity, especially those who have the talent and potential in
programming. Thus, the system plans to help the students in getting an exposure to IT
education by offering a free online E-Learning platform.
12
an account, logging in, submitting forms and etc. Most people in Malaysia have very poor
computer fundamental knowledge, with this system, they can learn programming while
improving their basic computer skills.
13
Waterfall model is the first methodology that was conceived by Dr Winston W. Royce
in 1970. The waterfall model emphasizes that a logical progression of steps be taken
throughout the system development process, much like the cascading steps down an
incremental waterfall[ CITATION Pow16 \l 17417 ]. It breaks down the project activities into
a liner sequence Thus, each activity will depend on the deliverables of the previous one and
correspond to a specialization of tasks.
The reason why the project should implement this methodology is due to its
significant features as it suits a smaller project where requirements are well defined. The
project team has mentioned all the requirements for the proposed system in the early stage of
the project. Besides, a project Gantt chart is produced and the elaboration of documentation is
done at every phase of the system development cycle. This can ensure that the progression of
the project is in the right time frames and the implementation of the proposed system is in the
right direction. In additions, the project development team will also perform quality assurance
test such as verification and validation before completing each stage. It is very important as
the new system will have a lesser problem and its quality can be guaranteed.
14
This model consists of five different phases which are Requirement Analysis,
Design, Implementation and Unit Testing, Integration and System Testing, and
Operation and Maintenance.
First and foremost, the key aspect of the waterfall model is that all system
requirements are gathered at the beginning of the project. During this initial phase which is
requirement analysis, the system goal, services and constraints are established by having a
formal meeting with the project development team. This is to ensure all the requirements are
being identified and defined in detail, and serve as a system specification. For instance, the
system requirements for student users are the e-learning system should be able to provide
online course material such as lecture slides for module detailed information, tutorial
questions for better understanding of the module and also educational videos for a more
interesting learning environment. Besides, the admin will be able to manage the system
database for data modification and new data entry, and also generate test statistic reports to
monitor the students’ academic performance. Thus, a system requirement specification (SRS)
is produced and being reviewed by the project development team. This stage will mainly
focus on defining and planning of the project without mentioning specific processes
[ CITATION Lew07 \l 17417 ].
Once all the requirements have been determined, the project will enter the next phase
which is the design phase. During this phase, the hardware and system requirements will be
specified to help in defining overall system architecture. The design phase is broken up into
logical design and physical design subphases [ CITATION Pro19 \l 17417 ]. The logical
design involves the Context Diagram and Data Flow Diagrams (DFD) which are used to
visualize a system and analyse each process and subprocess within the context of the entire
flow which helps the team discover areas that can be improved. All the diagrams mentioned
can be found under the heading of 7.0 Context Diagram and Data Flow Diagram (DFD).
Besides, the flowcharts for certain functions are produced to show the process taken to
achieve the outcome of the functions and the outputs are provided under the heading of 10.0
Flow Chart. The physical design subphase will produce a prototype of the proposed system
which will show all the main solutions and requirements that have been suggested. Moreover,
this phase will plan the programming language such as PHP in order to produce system code
15
that will be used at the next stage. MYSQL online database server is applied to connect the
system to store and retrieve data.
After the design stage, it is the implementation and unit testing phase. The
implementation phase is when programmers assimilate the requirements and specifications
from the prior phases and produce actual code. With inputs from system design, the system is
first developed in small programs called units, which are integrated into the next phase
[ CITATION Sha16 \l 17417 ]. Each unit is developed and tested for its functionality which is
referred to as Unit Testing. Some unit test plans for certain functions are provided for this
project under the heading of 13.0 Test Plan. For example, library page which can provide
extra study materials to the student user and its study material can be uploaded or modified
by the admin, is produced and tested to ensure its function meets the system requirements.
When each unit has been verified to meet its specification, the project will enter the
integration and system testing phase. At the beginning of this phase, all the units developed
such as user account system, course system, admin database system and test statistic report
system are integrated into a complete system to ensure the system requirements have met
[ CITATION Sha16 \l 17417 ]. After the integration process, the new system must go through
constant system testing to ensure there are no flaws or errors. A system test then will be
applied for this project. The testing must be done so that the system will not face any problem
during the implementation of the e-learning website. However, when there is any error
occurs, the whole activities of the Implementation and Unit Testing phase must take part
again for the revealed bus to be properly squashed.
After the testing is done and the system has met all the specification and
requirements, the new proposed system will be delivered to its target customers or users.
Thus, the project has entered the final phase which is the operation and maintenance phase.
Finally, the e-learning system is ready for deployment as it is deemed fully functional.
Maintenance phase occurs after installation and involves making modification to the system
to alter attributes or improve performance [ CITATION Sha16 \l 17417 ]. These
modifications arise might be the change requests from users’ feedbacks. For instance, a
feedback function has been applied to the system to collect the users’ comments and response
towards the system. Besides, this might occur due to defects uncovered during live use of the
system such as the student users are not able to view the test results. Therefore, the system
16
development team must apply the fixes as necessary until the needs of the users are satisfied.
Lastly, the regular maintenance and support for the developed e-learning system will be
provided to ensure the smooth operation of the system can be achieved and new system
features or functions can be included to meet the target customers’ requirements.
17
18
19
20
21
22
23
24
25
26
External Entity
Name Admin
Description Customer clicks on “Library Database”
page to add new books to the library.
Input Data Flow -
Output Data Flow Library Database Request
Name Student
Description Student clicks on “Library” button to access
to library page on portal.
Input Data Flow -
Output Data Flow Portal
Process
27
28
the portal
Input Data Flow 1) Portal
2) Result
Output Data Flow -
29
Data Flow
Name Library Database Request
Description Admin is directed to the library database
page through the admin page
Origin / Source Admin
Destination / Sink Access Library Database
Name Database
Description New book details are stored in the library
database.
Origin / Source New Books Added
Destination / Sink Library Database
30
Name Result
Description Books are fetched and retrieved from the
library database
Origin / Source Library Database
Destination / Sink Library Page
Name Portal
Description Student clicks on the portal page to get
access to the library page
Origin / Source Student
Destination / Sink Library Page
31
Data Store
Name library
32
External Entity
Name Student
Description Student clicks on “Read Thread” button to access to Read Thread
Page on Discussion page.
Input Data Flow -
Output Data Flow Read Thread Request
Process
Name 8.1 Access Read Thread Function
Description Student accesses the Read Thread function on Discussion page
Input Data Flow Read Thread Request
Output Data Flow Read Thread Request
33
Data Flow
Name Read Thread Request
Description User is directed to the Read Thread page through the Discussion
page.
Origin / Source External Entity, Student
Destination / Sink Process, 8.1 Access Read Thread Function
34
35
Data Store
Name D8 Reply
Description Stores and Display all thread information and thread reply data.
Input Data Flow New Reply Data
Output Data Thread Information
Flow
Data Structure Thread_Username,
Thread_Title,
Thread_Description,
Thread_Reply
36
Data flow
Name Description Source Sink
Test User Submitted test Student External Validate test process
information Entity
Validation Success Test information is Validate test process Calculate Result
valid process
Fail Message Indicate test Validate test process Validate test failed
information is not process
valid
Process
Name Description Input data flow Output data flow
5.2 Validate test Inform user some Failed Message Prompt Message
failed questions are not
answered
Data flow
Name Description Source Sink
Fail Message Indicate test Validate test process Validate test failed
information is not process
valid
Prompt Message Display an alert Validate test failed Student External
message to the user process Entity
Process
Name Description Input data flow Output data flow
5.3 Calculate Result Calculate the total Validation Success Test Result Data
marks of the user
Data flow
Name Description Source Sink
Validation Success Test information is Validate test process Calculate test process
valid
Test Result Data User’s total marks Calculate Result Store Result process
process
Process
37
Data flow
Name Description Source Sink
Test Result Data (1) User’s total marks Calculate Result Store Result process
process
Test Result Data (2) User’s total marks Store Result process Java Test, PHP Test or
SQL Test data store
Data Store
Name Description Input data flow Output data flow Data structure
Java Test Store all Test Result Data Test Result JAVA_Form_ID,
information about Information user_id, Java_Q1,
Java Test Java_Q2,
Java_Q3,
Java_Q4,
Java_Q5,
Java_Q6, Result
PHP Test Store all Test Result Data Test Result PHP_Form_ID,
information about Information user_id,
PHP Test PHP_Q1,
PHP_Q2,
PHP_Q3,
PHP_Q4,
PHP_Q5,
PHP_Q6, Result
38
SQL Test Store all Test Result Data Test Result SQL_Form_ID,
information about Information user_id,
SQL Test SQL_Q1,
SQL_Q2,
SQL_Q3,
SQL_Q4,
SQL_Q5,
SQL_Q6, Result
Process
Name Description Input data flow Output data flow
5.5 Output Result Display user’s test Test Result Test Result
marks Information
Data flow
Name Description Source Sink
Test Result User’s test marks from Store Result process Output Result process
Information database
Test Result User’s test marks Output Result process Student External
Entity
External Entity
Name Description Input data flow(s) Output data flow(s)
Student Students access the Access Portal Success Message
feedback page from
the portal and
answers all the
questions. When
finished, the
“Submit” button is
clicked and the data
is stored.
Process
Name Description Input Data Output Data Process
Flow(s) Flow(s) (Structured
English)
9.1 Feedback The page where Question Error Message Program
Page students give Details FeedbackRedire
their feedback ct:
about the Detect if an
website. account is
logged in.
39
If yes then
allow the
student to
access the
Feedback page.
If no then
redirect the
student to the
Login page .
9.2 Submit After Error Message, Question Program
Feedback submitting the Feedback Details FeedbackSubmi
feedback, a Details t:
script checks if Detect when a
all the questions student clicks
had been on the “Submit”
answered. button.
If one or more
questions are
not answered,
give an error
message.
If all questions
are answered,
give a success
message and
redirect users to
the Portal.
9.3 Update Using a script, Feedback Form Existing Program
Feedback any updated Update Feedback Form UpdateFeedbac
feedback forms Detected k:
will have Detect if the
updated student has an
answers existing form.
reflecting the If yes, modify
change. the answers of
the student.
Data Flow
Name Description Origin Sink
Access Portal Students access the Student Feedback Page
“Portal” page to
access the
“Feedback” page
Question Details The answers of the Feedback Page Submit Feedback
student’s feedback
Error Message If some questions Submit Feedback Feedback Page
are not answered,
students will be
prompted with
40
41
42
43
44
45
46
47
48
The E-Learning Website “Coding 101” was created using PHP, HTML, CSS, JavaScript. It is
also linked with the PHPMYADMIN databases. It has a total of 80 PHP files on its own along
with other html and bootstrap files. The website has used 2 different bootstrap templates for
the design. For this user manual, the user “James” will be used as a test. The first page will be
the landing page. It is shown as the figures below.
Figure 17 Landing 1
Figure 18 Landing 2
Upon landing on the page, the user will first see the items and contents as shown as Figure
Landing 1 above. Firsly, there is a “GET STARTED” label along with a login and register
button below for the user to create an account or log into the website with an existing
account. When a user hovers their mouse over one of the buttons, the buttons will show a
49
glowing effect. It is shown as Figure Landing 2 above. Next, the second content will be the
“ABOUT US” section. It is shown as Figure Landing Info below.
The ABOUT US section talks about the company’s detail and background along with its
objectives. Next, the navigation bar is shown as Figure Landing Nav below.
The navigation bar on top shows 3 buttons, that is the website’s name “CODING 101”, GET
STARTED and INFO. Upon clicking on the CODING 101 or GET STARTED button, it
brings the user back up to the top section when they scroll down along the website, as it is
also first item of the page. Clicking on the INFO button brings the user down to the ABOUT
US section. Next, the footer is shown as Figure Landing Footer below.
50
The footer shows 3 items, the company’s origin location with a detailed written address, the
social media link icons and contact details. There is a navigation bar and footer for every
page except for the portal.
51
Upon clicking on the Register Button on the Landing Page, it brings the user to the register
page as shown as Figure Register 1 below.
Figure 22 Register 1
The register page shows a registration form that the user must fill in to register an account. It
includes their first name, last name, e-mail address, password and gender field. It is
compulsory for a user to fill in all of the fields or else a message will appear. It is shown as
Figure Register 2 below.
Figure 23 Register 2
The user will have to enter a password with a minimum length of 4 characters at least or else
a message will appear. It is shown as Figure Register 3 below.
Figure 24 Register 3
52
A user cannot user an existing e-mail address. If they use an existing e-mail address, the user
will not be able to create an account and an error will appear. It is shown as Figure Register 4
below.
Figure 25 Register 4
Upon successfully creating an account, a message will appear and direct the user to the Login
Page. The message is shown as Figure Register 5 below.
Figure 26 Register 5
53
After creating an account or clicking on the Login Button, it will direct the user to the Login
Page. It is shown as Figure Login 1 below.
Figure 27 Login 1
A user will have to key in their E-mail address and Password to sign in. After successfully
entering the details, they will have to click on the Sign In button. Users can also choose to
create an account by clicking on the green “Create an account” label below the Sign In
button. The user will have to enter both of the fields. If the user enters a wrong e-mail address
or password, an error will be thrown to them. The error is shown as Figure Login 2 below.
Figure 28 Login 2
If the user enters the correct credentials, a message will appear and direct them to the Home
Page. The message is shown as Figure Login 3 below.
54
Figure 29 Login 3
After successfully signing in, the user will be directed to the home page. It is shown as Figure
Home 1 below.
Figure 30 Home 1
An avatar will appear on the screen welcoming the current user with a clickable “Launch
Course” label that directs the user to the Portal Page.
Figure 31 Home 2
Next, the second item on the webpage will be the SUPPORT section. It is shown as Figure
Home 2 above. There are 3 clickable square buttons that are named Feedback, Career and
55
Donate. Upon clicking on one of the buttons, a mini window pops up allowing the user to get
to the specific webpage. The 3 mini windows are shown as the figures below.
56
Based on the figures above, each of the window has a detailed mini description and a button
down below. The feedback window as shown as Figure Home Feedback above directs the
user to the website’s feedback page. The career window as shown as Figure Home Career
above directs the user to the website’s career page while the donate window as shown as
Figure Home Donate above directs the user to UNICEF’s donation page. Next, the third item
on the webpage will be the same ABOUT US section that was discussed earlier. The
navigation bar above has replaced the previous buttons with 4 new buttons instead, the
CODING 101 button remains however. The 4 new buttons are the SUPPORT, INFO,
LAUNCH COURSE and LOG OUT button. Upon clicking on the CODING 101 button, it
still brings the user back to the top section of the page. Clicking on the SUPPORT button, it
brings the user to the support section. Similarly, clicking on the INFO button, it brings the
user to the about us section. Next, clicking on the LAUNCH COURSE button, it brings the
user to the Portal Page. Finally, clicking on the log out button will bring the user back to the
home page. A message will appear if the user has been successfully logged out. The message
is shown as Figure Logout 1 below.
Figure 35 Logout 1
If a user has already logged out but tries to get to the home page, a message will appear to
remind the user that they have to log in first. The message is shown as Figure Logout 2
below.
Figure 36 Logout 2
57
58
On the feedback page, there is a form containing a set of 5 questions that requests for the
user’s feedback. It is shown as the figures below.
Figure 37 Feedback 1
Figure 38 Feedback 2
A user must then select a rating based on a range of 5 different rating options that are “Very
Bad”, “Bad”, “Average”, “Good” or “Very Good”. The user must then click on the submit
button to send their responses. After the user has clicked on the submit button, a message will
appear and redirect the user back to the home page. It is shown as Figure Feedback 3 below.
59
Figure 39 Feedback 3
The user’s feedback will be recorded in a database. A user must answer all of the given
questions or else an error will appear. The error is shown as Figure Feedback 4 below.
Figure 40 Feedback 4
60
On the career page, there is a section of information that talks about the company’s
background, objectives, job benefits and career options. It is shown as the figures below.
Figure 41 Career 1
Figure 42 Career 2
There is a collapsible career box as shown as Figure Career 2 above that allows the user to
click on each job position. Upon clicking on either one, a brief description regarding the job
scope will appear. It is shown as Figure Career 3 below.
61
Figure 43 Career 3
Users who are interested to apply for the jobs can follow the instructions shown below the
collapsible career box.
62
Users will land to the classes path page of the portal page upon clicking on “Launch Course”
from the home page. The portal page has a side navigation bar on the left that includes the
user’s avatar icon and 6 buttons that is Home, Discussion, Classes, Test, Library and the
clickable user’s name or image. The Home button redirects the user back to the home page,
the Discussion button directs the user to the discussion page, the Classes button directs the
user to the current classes page, the Test button directs the user to the test page, the Library
button directs the user to the library page and finally the clickable user’s name or image
directs the user to the user profile page. The portal and classes page is shown as Figure Portal
1 below.
Figure 44 Portal 1
There is an orange button on top of the webpage for the user to hide the side navigation bar,
this helps to stretch the webpage, allowing them to study and perform study activities better.
The button is shown as Figure Portal 2 below.
Figure 45 Portal 2
Upon clicking on the button, it hides the side navigation bar. It is shown as Figure Portal 3
below.
63
Figure 46 Portal 3
The classes page shows 3 types of courses that are available to study. The courses are Java,
PHP and SQL. Upon clicking on either of them it shows a similar layout that consists of
slides, tutorial and videos. For this example, the Java course will be selected for showcase.
The figure is shown as Figure Classes 1 below.
Figure 47 Classes 1
Users can select the slides button to study a series of chapters for the current course, select
the tutorial button to do course exercises or select the video button to view a full course
video. On the top right side of the page, there is a BACK button that redirects the user back to
the previous page. It is shown as Figure Classes 2 below.
Figure 48 Classes 2
In the slides, the user can choose a chapter to study. It is shown as Figure Classes 3 below.
64
Figure 49 Classes 3
After selecting a chapter, they will be directed to the chapter’s webpage where they can read
and study the contents of the module’s chapter via a slideshow. Users can navigate the pages
of the chapter by clicking on the left and right arrows on the side of the slideshow to view the
slideshow chapter content. There are also a few light grey coloured buttons below that allows
the user to navigate to the desired page of the chapter. The slideshow is shown as Figure
Classes 4 below.
Figure 50 Classes 4
Next, the tutorial path is similar to the slides path. After selecting the tutorial, the user can
choose a chapter to do the course exercises. After selecting a chapter, they will be directed to
the chapter’s webpage where they can answer a set of questions. There is also a set of
answers down below for the user to refer and do their corrections. It is shown as the figures
down below.
65
Figure 51 Classes 5
Figure 52 Classes 6
Finally, for the video path, when a user selects the video button, they will be directed to the
courses’ video webpage where they can view a full course video via a large screen
implemented in the webpage. The video webpage is shown as Figure Classes 7 below.
Figure 53 Classes 7
66
Upon clicking on the user’s name or the avatar icon, the user will be directed to the user
profile page. The user profile page is shown as Figure 37 User Profile 1 below.
From the figure as shown above, the user profile webpage shows a form containing the user’s
first name, last name, e-mail address and gender. It also shows their test results on the right
side. There is also a photo upload button below for the user to upload a profile picture. The
user’s uploaded photo will be stored in a database. For this showcase, a blue and white avatar
icon will be used as the profile picture for the user “James”. After creating a new account, the
default picture will be blank. Users will have to upload their profile pictures by themselves.
The blank default picture for a new user is shown as Figure User Profile 2 below.
Users are not able to modify their details besides uploading or changing their profile picture.
67
On the discussion page, there are two pathways available for the users. The users can either
choose to create a thread or read a thread by clicking on the buttons. The discussion page is
shown as Figure Discussion 1 below.
Figure 56 Discussion 1
68
When a user clicks on the CREATE THREAD button, they will be directed to the create
thread page. At the page, users can post a thread by filling in the form that consists of a title
and description box field. The page is shown as Figure Discussion 2 below.
Figure 57 Discussion 2
After the user has filled in the form, they must click on the “Post Thread” button to post their
thread. After the user clicks on the button, a message will appear to notify the user that the
thread has been successfully posted. The message is shown as Figure Discussion 3 below.
Figure 58 Discussion 3
Users cannot type more than 100 characters in the title box field and they also cannot type
more than 255 characters in the description box field. There is a placeholder written at each
of the field boxes to remind the users not to exceed the maximum number of characters they
are allowed to type. The threads created will be stored in a database.
69
When a user clicks on the READ THREAD button, they will be directed to the read thread
page. At the page, users can view a thread by browsing through a list of threads found on the
webpage. The list of thread consists of a title, user name and view field. The title field shows
the title of the thread, the user name field shows the name of the user who posted the thread
and the view field consists of a button that allow the users to click onto the specific thread.
The page is shown as Figure Discussion 4 below.
Figure 59 Discussion 4
There is a search bar located on the top for users to search for a thread by the title of the
thread posted. Users can type and search for a specific thread. After typing, they will have to
click on the Search button to filter out the unrelated threads. It is shown as Figure Discussion
5 below.
Figure 60 Discussion 5
After the user clicks on the view button for a specific thread, they will be directed to the
thread’s page. For this showcase, the Tutorial 1 (JAVA) question submitted by James will be
used. The thread page is shown as the figures below.
70
Figure 61 Discussion 6
Figure 62 Discussion 7
As shown as Figure Discussion 6 above, the webpage shows the user who submitted the
thread, title and description of the thread. There is also a reply box as shown as Figure
Discussion 7 above. Users can choose to reply to a thread. After the user has completed
typing, they must click on the Submit Reply button to post their response. A message will pop
up to notify the user that their response has been successfully submitted. The message is
shown as Figure Discussion 8 below.
Figure 63 Discussion 8
71
Users cannot type more than 255 characters in the reply box field. There is a placeholder
written at the reply field box to remind the users not to exceed the maximum number of
characters they are allowed to type. The user’s reply will be recorded in a database. The
replies are shown down below the reply box. It shows the name of the user who responded
and the user’s reply. Every user is able to check on other user replies. When a user enter and
views a newly created thread with no replies, a message will pop up to notify the user that
there are currently no responses in that thread yet, before entering the thread. The message is
shown as Figure Discussion 9 below.
Figure 64 Discussion 9
72
On the test page, users can choose to take a test for any of the three courses by clicking on the
green courses buttons. The webpage is shown as Figure Test 1 below.
Figure 65 Test 1
For this showcase, we will be choosing Java for the test. After clicking on the Java button, it
will direct the user to the test page where they must answer a set of questions. It is shown as
the figures below.
Figure 66 Test 2
73
Figure 67 Test 3
Figure 68 Test 4
Figure 69 Test 5
There are a total of 6 questions that the user must answer. After the user has answered all of
the 6 questions, they must click on the submit button below. If the user does not choose an
answer for any of the questions, a message will pop up to remind them that they have to
answer the question. It is shown as Figure Test 6 below.
74
Figure 70 Test 6
When the user submits the test, a message will pop up and notify the user that the test has
been successfully submitted. It is shown as Figure Test 7 below.
Figure 71 Test 7
Another message will also appear to notify the user about the marks they have scored for the
test. It is shown as Figure below.
Figure 72 Test 8
After clicking on OK, they will be redirected to the user profile page. The users are able to
see their overall test marks for the particular course on the “YOUR RESULT” window
located at the right side of the page. It is shown as Figure Test 9 below.
Figure 73 Test 9
75
The results will be stored in a database. After completing a test for the particular course, the
user is not able to redo the test for the same course. If they try to redo the same test by
clicking on the course’s button at the test page, a message will appear to tell them that they
have already submitted a test for that particular course. It is shown as Figure Test 10 below.
Figure 74 Test 10
76
On the library page, users can choose to read any online PDF books through a list of books
given. The page is shown as Figure Library 1 below.
Figure 75 Library 1
In the library page as shown as Figure Library 1 above, there is an image, book name, author
and read field. Users can choose a book to read from the list range. Upon clicking on the read
field links, a new tab will appear with the book PDF content. On top, there is also a search
bar for the users to locate a specific book by the book name.
77
On the admin page, the admin is able to view all of the database table that contains the data of
the users. The admin page has a total of 9 blue database table buttons and 1 red button to
view all the three test’s statistics pie chart. The E-Learning system has a total of 9 tables. The
database shown are directly extracted from PHPMYADMIN. The JAVA, PHP and TEST
button directs the admin to the specific course results database page. The USERS button
directs the admin to the users database page. The PHOTO button directs the admin to the
user’s photo database page. The FEEDBACK button directs the admin to the user’s feedback
page. The LIBRARY button directs the admin to the library page. The THREAD button
directs the admin to the thread page and the REPLIES button direct the admin to the user
replies page. Finally, the unique red colour “TESTS STATISTICS” button directs the admin
to all the three test’s statistics pie chart page. The webpage is shown as Figure Admin 1
below.
Figure 76 Admin 1
The admin page does not have a footer unlike the home page or landing page, it also only
contains a LOG OUT button at the navigation bar. Only the admin can access the admin page.
For this showcase, the admin’s account credentials are shown as the table admin below.
Table Admin
78
When the admin signs in, a message will appear. It is shown as Figure Admin 2 below.
Figure 77 Admin 2
However, if the user is not an admin but tries to get access to the admin page, a message will
pop up. In this showcase, the user James will be the user. It is shown as Figure Admin 3
below.
Figure 78 Admin 3
If a random person who is not a user of CODING 101 tries to get access to the admin page, a
different message will pop up. It is shown as Figure Admin 4 below.
Figure 79 Admin 4
79
In the admin page, the three course test button has the similar design. Upon clicking, it directs
the admin to the user test’s page. Inside the webpage, the admin can view or delete the user’s
test results. The Java, PHP and SQL database are shown as the figures below.
Figure 80 Admin 5
Figure 81 Admin 6
Figure 82 Admin 7
80
There is a “Go Back” button located below that directs the admin back to the previous page.
It is shown as Figure Admin 8 below.
Figure 83 Admin 8
There is also a search bar located on top for the admin to locate the user’s results. The admin
has to search based on the user’s ID. The admin can delete the user’s result by clicking on the
Delete button located on the right.
81
For the user button, it directs the admin to the user database page. Inside the webpage, the
admin can view, edit or delete the user’s information. It is shown as Figure Admin 9 below.
Figure 84 Admin 9
There is also a search bar located on top for the admin to locate the user. The admin has to
search based on the user’s first name. The admin can delete the user by clicking on the Delete
button located on the right. When the admin clicks on the Edit button, it brings the admin to
the edit page. It is shown as Figure Admin 10 below.
Figure 85 Admin 10
In this page, the admin is able to modify a user’s information. There is a form that shows the
user’s detail. There are two buttons below the form, that is the Update button that updates the
user new information and the Back to previous Page button that redirects the admin back to
the previous page. After the admin clicks on the Update button, a message will appear to
82
notify the admin that the user’s information has been successfully updated. It is shown as
Figure Admin 11 below.
Figure 86 Admin 11
However, if the data was not changed but the admin decides to click on the Update button,
another message will appear to notify the admin that the data was not updated. It is shown as
Figure Admin 12 below.
Figure 87 Admin 12
83
For the photo button, it directs the admin to the user’s photo database page. Inside the
webpage, the admin can view or delete the user’s profile picture. It is shown as Figure Admin
13 below.
Figure 88 Admin 13
There is also a search bar located on top for the admin to locate the user’s profile picture. The
admin has to search based on the user’s ID. The admin can delete the user’s photo by clicking
on the Delete button located on the right.
84
For the feedback button, it directs the admin to the user’s feedback database page. Inside the
webpage, the admin can view or delete the user’s feedback. It is shown as Figure Admin 14
below.
Figure 89 Admin 14
There is also a search bar located on top for the admin to locate the user’s feedback. The
admin has to search based on the user’s ID. The admin can delete the user’s feedback by
clicking on the Delete button located on the right.
85
For the library button, it directs the admin to the portal’s library database page. Inside the
webpage, the admin can view, add or delete the library’s content. It is shown as Figure Admin
15 below.
Figure 90 Admin 15
There is also a search bar located on top for the admin to locate the books. The admin has to
search based on the book name. The admin can delete the book by clicking on the Delete
button located on the right. When the admin clicks on the ADD BOOK button, it brings the
admin to the add book page. It is shown as Figure Admin 16 below.
86
Figure 91 Admin 16
In the webpage, the admin is able to publish a new book. There is a form of fields that the
admin has to fill in. After filling in all of the fields, the admin has to click on the submit
button located below to publish. All of the fields must be entered or else a message will
appear. It is shown as Figure Admin 17 below.
Figure 92 Admin 17
After clicking on the submit button, a message will appear to notify the admin that the book
has been successfully published. It is shown as Figure Admin 18 below.
Figure 93 Admin 18
87
For the thread button, it directs the admin to the user’s thread database page. Inside the
webpage, the admin can view or delete the user’s thread. It is shown as Figure Admin 19
below.
Figure 94 Admin 19
There is also a search bar located on top for the admin to locate the user’s thread. The admin
has to search based on the user’s ID. The admin can delete the user’s thread by clicking on
the Delete button located on the right.
88
For the replies button, it directs the admin to the user’s reply database page. Inside the
webpage, the admin can view or delete the user’s reply. It is shown as Figure Admin 20
below.
Figure 95 Admin 20
There is also a search bar located on top for the admin to locate the user’s reply. The admin
has to search based on the user’s ID. The admin can delete the user’s reply by clicking on the
Delete button located on the right.
89
There is one function that allows the admin to generate a test statistics report on the
admin page which is the unique red coloured “TESTS STATISTICS” button as shown in the
figure below. The Test Statistic Pie Chart for each subject is used to show the total results of
the student for particular subject. This is to help the admin to analyze which course test has
the higher percentage of number of the students that have high scores and also low scores for
the test. It provides the easiness for the admin to get information about which course might
need to change or modify the study materials offered in order to help the students to have a
better understanding of the particular course and therefore, they are able to score better marks
for the tests.
Furthermore, the admin can also provide a new student’s course feedback form on the
feedback page to collect comments and responses from student user about the study materials
of the courses provided and any suggestion or improvement for the courses. Thus, it can help
the admin to improve the course’s study materials that are able to help students to have a
greater learning outcome.
90
For the tests statistics button, it directs the admin to the test statistics page. It is shown
as Figure Test Statistics Piechart below.
Inside the webpage, the admin can see 3 different pie charts that each represents different
tests, such as Java, PHP and SQL. All the test statistic pie charts are auto-generated.
Moreover, the pie charts are generated based on real time data, for instance, all the real time
data are extracted from the test tables of MYSQL for each subject as shown as Figures 98, 99
and 100 below.
91
This means that when there is a new user submits a test, the pie chart will be updated
automatically. The pie chart figure shows all of the user’s taken test results. The colours are
represented differently for the number of correct answers from the results. There is a total of
6 questions for each test and the correct answer value will range from 0 to 6. The correct
answer results are based on the preset “Default” field values on the database by the admin.
For this example, the java test will be used as the showcase. The figure is shown as Figure
Java Test Database below.
The answers submitted by the students for the java test must match the default field values as
shown as the figure above. or else it would result as a wrong answer. It is similar for the PHP
and SQL tests.
92
93
94
95
96
97
98
For the E-Learning website, Coding 101 to be developed, PHP programming language was
used for the development of most of the functions. PHP is a server scripting language that is
used for make dynamic and also interactive web pages [CITATION w3s1 \l 1033 ]. One of
the main functions added in the website were the User Log In and Register Page, Feedback
Page, User Profile Page, Discussion Page, Test Page, Library Page along with the Admin
Page. The functions used were connected with the MYSQL online database server. The
software “ATOM” was used as the main source for the PHP coding along with HTML and
CSS. For this documentation, only the PHP codes will be discussed as they are the main
functions that help to power up the E-Learning website.
First of all, the connection string is a php page that acts as a tool in helping other pages to
connect for data retrieving and receiving purposes. It helps to connect with MYSQL to store
and retrieve the data collected. The connecting string file is created and named as
“coding101conn”.php. The codes are shown as the figure Connection String below.
99
It starts off with the <?php opening tag first on line 10. It is the opening component key in
order for the code to work. It also ends with the ?> closing tag on line 17. Next line stores a
variable called conn. It is written with a dollar sign first and then followed by the name. A
variable is a symbol or name that represents a value. They are used in storing numeric,
characters or string values in order for them to be used in a program [ CITATION w3r20 \l
1033 ]. The variable is then followed with a mysqli_connect() function. The
mysqli_connection() function helps the user to access MYSQL database servers [CITATION
w3s2 \l 1033 ]. It is then followed up a set of four items inside a parenthesis that is,
(“localhost”,”root”,””,”coding101”);. The first item “localhost” represents the local server
location, the next item “root” represents the username of the server, the third item””
represents the password used for the server while the last “coding101” value stands for the
name of the database that is used for the server connection. The line of code must end with a
semicolon tag as it helps to tell PHP that the line of code is finished and done modifying. If
the semicolon tag is not used, the overall code will not be executed and will be resulted in a
coding failure. The next line is represented by a set of IF ELSE conditions. There is a
mysqli_connect_errno() function added after the IF statement. The mysqli_connect_errno()
function helps to return the error code from the last happened connect call [CITATION php \l
1033 ]. It is followed by “echo” and a string of sentences. The echo function helps to call the
output. They are wrapped under a set of curly braces. The whole lines of code aims to check
the connection, it undergoes an IF statement to check if there is an error in the connection
part, if there is, it will echo out the message to notify the user. It is then closed with the ?>
closing tag. The connection string php file is saved and can be reused again as a connection
100
string. This will help to save time by not needing to rewrite the redundant connecting string
line codes in other php files.
101
The connection string code links with the MYSQL online database server. Users must first
download the “WAMP”. The software WAMP is a tool that helps to link PHP and MYSQL
Database. WAMP provides a usable MYSQL server that is called PHPMYADMIN. Users
must first run the WAMP software first in order to make the MYSQL server online. The
PHPMYADMIN webpage is shown as figure PHPMYADMIN below.
After logging in, the users will be directed to a database webpage where they can create their
own tables. It is shown as figure PHPMYADMIN DATABASE below.
102
14.3 Register
Next will be the user registration page, the connecting string as mentioned previously has to
be created first in order for the registration process to work. The code is shown as the figures
below.
103
104
There are two register files being created, one is created and saved via .PHP called
Register.php and another is saved via .HTML called Register.html. The HTML file is the
design template layout and it stores the variable names needed for the PHP linkage. The PHP
file is the page that will handle the connectivity functions. Figure Register 1 shows the
HTML codes while Figure Register 2 and Register 3 shows the Register page’s PHP codes. In
Figure Register 1, the fields for the registration page has been created and declared, each of
them have different names in the <input type>. The input tag specifies an input field that
allows user to enter data [CITATION w3s3 \l 1033 ]. Next, on the php file, Figure Register 2
shows the “include (“../coding101conn.php”); code line. This line is called to enable the
connectivity through the connection string file. Next line shows the variables called for the
fields. It is followed by a mysqli_real_escape_string() function. This function escapes special
characters inside a string in an SQL query. It is used to create a SQL string that can be used in
an SQL statement [CITATION w3s4 \l 1033 ]. Inside the parenthesis includes the $conn
variable called from the connection string file. It is followed by a $_POST super global
variable. Super globals are built-in variables that are available in all scopes [CITATION w3s5
\l 1033 ]. The $_POST super global variable is used to collect form data after submitting a
form with the method “post” [CITATION w3s5 \l 1033 ]. The item brackets are followed up
after, the items are the names used previously in the HTML Input type field. The next line
$sqlcheck variable is called with an SQL function. The SELECT key is called to call out the
data from the database, in this case, it is calling for the user_email attribute from the users
table where the value is based on the $email variable. The next line shows a $resultc variable
being created with the $conn and $sqlcheck variables wrapped inside a parenthesis. It is
stored as a single variable to be used for the next line. The next line uses the
mysqli_num_rows() function. The function is used to return a number of rows present in the
result set [CITATION Rah \l 1033 ]. It is followed up by the $resultc variable with a greater
than 0 “ > “ value. It is to check if the data exists or not, if it does then it will echo out a
message. The window.history.go(-1) method is called to redirect the user back to the previous
page after clicking on the submit button, if failed. There is also a $password !=
$confirmpassword line of code that checks if the current typed password matches the
confirmed typed password field. This is for security purposes. On the last line at line 56, it
shows the mysqli_close() function. The function is called to close the connection. If the
105
connection is not closed, it will result in many errors. The php code is then closed with the ?>
closing tag.
106
14.4 Login
Next, the user login page is accessed after successfully creating an account. The code is
shown as figure Login below.
107
108
It is created with two types of files as well similarly to the registration page. There is a
HTML file for the field and design layout along with a PHP file for the connectivity. The
HTML code is shown as Figure Login while the PHP code is shown as Figure Login 2 and
Login 3. The HTML file consists of the <input type> values similarly to the registration page.
They are used to link with the PHP page. In Figure Login 2 and 3 shows the php codes. It is
similar to the registration page, like every other page, it is started with the <?php opening tag
first and the “include “../coding101conn.php”; line. However, in between the two lines of
code, there is a session_start() function. The function starts a new session or continues an
existing session [ CITATION php20 \l 1033 ]. This is called as the user’s data needs to be
hold after they have successfully logged in. In line 19, the md5() function is called. The
function calculates the MD5 hash of a string [CITATION w3s6 \l 1033 ]. The function is
helps to encrpyt the user’s password into a set of random characters. This is a security
function that helps to prevent the breach of the password leaked from the database server. It is
shown as Figure Login 4 below.
The following lines are quite straight forward and repeated, in line 36, the $row variable is
called with the mysqli_fetch_array() function. The function fetches a result row as an
associative array, a numeric array or even both [CITATION w3s7 \l 1033 ]. This function will
fetch the data from the database server, upon being followed up by the $result variable. The
next line shows the $_SESSION super global variables. The $_SESSION is a super global
variable that acts as a way to store information to be used across multiple pages [ CITATION
w3s20 \l 1033 ]. The variables are called with the $_SESSION super global variable instead
of the $_POST because the data is needed to be hold and carried out in the next page, after
the user has successfully login. The user will be directed to the home page after logging in,
the system checks if there are data being hold from the previous login page that are associated
109
with the database. If the data does not exist, it means that the user has not logged in but is
trying to access the page. The user will then be redirected back to the login page. The next
line in line 48 checks and validates the user with 2 types of roles. Every user will have a role
of 1 except the admin, who has a role of 0. This helps to differentiate and allows the system
to check if the user logging in is a normal user or an admin. The role of the admin is set as 0
because the admin user is created in the PHPMYADMIN database. Every user will have a
role of “1” when registered via the registration page. The line 60 shows a $sqlphoto variable
that selects the data from the photo table in the database. The $imageresult variable is called
with the mysqli_query function along with the $conn and $sqlphoto in the parenthesis to store
the fetched photo data. At line 64, the $row variable uses the mysqli_fetch_array() function
along with the $imageresult variable contained in the parenthesis to check if the picture data
are fetched. The data fetched are needed to display the user’s profile picture later at the User
Profile page section. The php code is then closed with the ?> closing tag.
110
14.5 Logout
When user clicks on the logout button, it will redirect the user back to the landing page. The
logout code is shown as Figure Logout below.
It starts off with the opening <?php tag and the session_start() tag. The session has to be
declared in every page after login page as it still holds the user’s data. In line 14, it will echo
a message when the user clicks on the logout button. After that, in line 16, the
session_destroy() function will kill the current session. It will remove the current data being
hold and reset the system. The next line has a window.location.href method followed with the
link of the landing page, that will redirect the user back to the landing page. The closing ?>
php tag is then called.
111
14.6 Feedback
Based on the figure feedback above, the following code were used to insert the feedback user
gave into the database table. Include() were used to include code in coding101conn.php
which contain database connection to allow query to be executed[CITATION Placeholder2 \l
17417 ]. $sql were used to stores the query for inserted all the feedback info from the user
into the feedback table. Mysqli_query() was used to perform the sql query in line
9[CITATION Placeholder1 \l 17417 ]. From line 14 to 17 if the query failed to execute, it will
be terminated and show an error message. Mysqli_affected_rows() was used to get result
rows from the database[CITATION Placeholder4 \l 17417 ]. From line 25 to 28 if there are no
affected rows in feedback table in database, an alert message will pop out and tell user data is
not inserted and redirect user to previous table.
112
Figure 118 UP
The code shows for the user profile page’s upload picture section. It is shown as Figure UP
above. The following code was used to check if user has upload an image or no.
session_start() was used to start the session for the current user. Include() was used to retrieve
the code from coding101conn.php which contain connection string that allow database
connection[CITATION Placeholder2 \l 17417 ]. $target_dir stores the directory of the main
folder used to store the images while $target_file stores the directory of the main folder and
return the trailing name component of the path with basename, $_FILES was used to retrieve
the name of the file. $imageFileType contain pathinfo() which is used to return the
information about the file path, PATHINFO_EXTENSION was used to retrieve the extension
of the file. getImageSize() was used to get the size of the image uploaded in line 12. Since
getImageSize() can only function if the file is an valid image, from line 13 to 21 if the $check
which include the getImageSize() able to execute, an alert message will pop out and tell that
the file is an image. Else a different alert message will pop out tell that the file is not and
image and redirect user back to previous page.
113
Based on Figure UP2 above, the following code is used to check the extension type of the
file, move the image into the folder and insert the data into the database. From line 23 to 27 if
the image file extension is not JPG, JPEG, PNG or GIF file, an alert message will pop out tell
that only those file extension are allowed and redirect user back to the previous page. Inside
line 28, move_uploaded_file is used to move an uploaded file to $target_file that contain the
directory[ CITATION php202 \l 17417 ]. From line 28 to 34 if the uploaded file is not moved
to the targeted directory, an alert message will pop out and tells that the file was not able to
upload and redirect user to the previous page. Else a different alert message will pop out tells
that the file has been uploaded. $sql was used in line 36 to store query for inserting the
information of the photo into the photo table. Mysqli_query() was used to execute the query
in line 36. Line 41 to line 44 was used to check if query is executed or no[CITATION
Placeholder1 \l 17417 ]. If the query is able to execute, an alert message will pop out tell that
the picture has been updated and redirect user back to their profile page.
114
Mysqli_affected_rows() was used to get the result rows from the table[CITATION
Placeholder4 \l 17417 ]. Line 51 to 57 was used to check if there are any rows affected after
the query executed.
115
14.8 Discussion
14.8.1 Create Thread
Based on Figure Create above, the following code is used to record the thread information
into the thread table in database. Line 6 to line 20 were used to check if the passed variable is
not blank for the tittle and description ,insert the data into the thread table and check if the
data is being inserted into the table or no. isSet() was used to check if the variable is declared[
CITATION Mer20 \l 17417 ]. $q stores the query used to insert the thread data into the threat
table as well as mysqli_query for executing the query[CITATION Placeholder1 \l 17417 ].
Mysqli_affected_rows() was used to get the result of the rows from database
table[CITATION Placeholder4 \l 17417 ]. From line 13 to line 20 if there is no affected rows,
an alert message will pop out tells that the thread is not able to create and redirect user back
to previous page. Else a different alert message will pop out tells that the thread has been
created and posted and redirect user back to discussion page. Mysqli_close() was used to
close the database connection after finish using it[ CITATION w3r202 \l 17417 ].
116
Based on Figure Create 2 above, the following code was use to open connection, create a
search function inside the website. Include() was used to retrieve code from
coding101conn.php file which contain connection string that allow query to be able to
execute[CITATION Placeholder2 \l 17417 ]. In line 148, $sql was used to store the query to
perform the search function in website. An inner join was use between users table and thread
table to include the username of the thread creator since the threads table only has the user id
instead of the username. Mysqli_query was used to execute the query created in line
148[CITATION Placeholder6 \l 17417 ].
117
Based on the Figure Read above, the following code was used[CITATION Placeholder2 \l
17417 ] to retrieve creator id and retrieve the detail of selected thread. $fid was used in line
141 to store the thread creator id. $sql was used to store query for getting thread information
based on the creator id. $sqlun was used to store query for getting the creator username, inner
join was used in the query since username is not store in thread table. From line 149 to 166 if
there is number of row retrieve after the query store in $sql was 0, an alert message will pop
out and tell something is wrong. Else output all the info which include the username the title
of the thread and the description. Include (“thread_viewreply.php”) was used to retrieve the
code from thread_viewreply.php file which contain the code needed to show the reply from
other users.
118
Based on the Figure Reply above, the following code was used to create a table. Include()
was used to retrieve code from coding101conn.php which contain the connection string that
allow query to execute[CITATION Placeholder2 \l 17417 ]. $sqlj was used to store the query
used for getting the username of the user who reply in the thread. $resultj was used to execute
the query that stored in $sqlj. From line 33 to 45 if the number of row retrieve after query has
been execute is 0, then an alert message will pop out said there is no replies yet. Else it will
output the table header for each column.
119
Based on the Figure Reply 2 above, the following code is used to show the username with
their replies into the website. From line 17 to 20 if the number of rows retrieve after the query
that store in $resultj is 0 or lower than 0, then a alert message will pop out tells that
something is wrong, else do nothing. From line 22 to 37 while there are data retrieve after the
query stored in $resultj is execured, out put the username and the replies .
120
14.9 Test
Based on Figure Test above, the following php codes were used to check if user logged in and
check the profile picture in database. Session_start() at line 46 were used to resume the
session of the existed session[ CITATION Vic10 \l 17417 ]. Line 49 to line 53 contain code
that prevent users to directly access following page unless has logged in. Isset() is used to
determine if session_start(‘name’) existed of no. An alert message will pop out that tell user
to login first to proceed and sent user back to login page. Line 57 code is used to include the
code in coding101conn.php which contain the connection of the database. Line 61 to line 68
were used to display users profile picture, $img stores the default user image address. Line 63
to line 65 codes were use to check the image address in the database, mysqli_query were use
to performed the query written in line 63[CITATION Placeholder1 \l 17417 ], and
mysqli_fetch_array were used to fetch the result row in line 64[CITATION w3s191 \l
17417 ]. Line 67 to 68 is used to check whether the user has uploaded a profile picture before
121
and show the uploaded profile picture instead of the default picture. File_exists were used to
check if the directory exist and $img will replace the old directory if its exists[ CITATION
Shu20 \l 17417 ]. In Addition, <?php echo $img;?> and <?php echo ($_SESSION['name']); ?
> were used to display the profile picture and username.
Based on Figure Test 2 above, the following php code were create by to verify if user already
taken the test. Include() were used in line 59 to include codes in coding101conn.php which
contain the database connection that allow query to be able to execute[CITATION
Placeholder2 \l 17417 ]. Line 61 to 67 were used to check if user has taken the test or no.
$sqljava in line 61 stores a query which is used to check users java test result. Mysqli_query()
were used in line 62 to use to perform the query in line 61[CITATION Placeholder1 \l
17417 ]. Mysqli_fetch_array was used in line 64 to fetch the result from the query performed,
an alert message will pop out and tell user has already taken the test and redirect user to
previous page if java test result were found in the database[ CITATION w3s191 \l 17417 ]
[CITATION Placeholder3 \l 17417 ].
122
123
Based on Figure Test 3 above, the following php code were create by to verify if user already
taken the test. Include() were used in line 59 to include codes in coding101conn.php which
contain the database connection that allow query to be able to execute[CITATION
Placeholder2 \l 17417 ]. Line 61 to 67 were used to check if user has taken the test or no.
$sqljava in line 61 stores a query which is used to check users java test result. Mysqli_query()
were used in line 62 to use to perform the query in line 61[CITATION Placeholder1 \l
17417 ]. Mysqli_fetch_array was used in line 64 to fetch the result from the query performed,
an alert message will pop out and tell user has already taken the test and redirect user to
previous page if java test result were found in the database[ CITATION w3s191 \l 17417 ]
[CITATION Placeholder3 \l 17417 ].
Based on Figure Test 4 above, this following php code were created to check users’ answers,
give user the result and store it into the database table. Include() were used in line 7 to
include codes in coding101conn.php which contain the database connection that allow query
to be execute[CITATION Placeholder2 \l 17417 ]. Line 9 to line 23 were used to collect user
result on the test. $a were used to store result, result will be set to 0 before checking each of
the question as shown in line 9. $_POST[] were used to pass the variable from the previous
page which in this case is the answer user picked[CITATION Placeholder3 \l 17417 ]. From
124
line 11 to line 16, if the answer user picked is A, then $a will be $a++ which will become 1 or
else $a will remain 0. It will then check for question two until the last question.
Based on Figure Test 5 above, after all the question is checked, line 53 to line 55 will be used
to insert the data into the database. $sql stores the query used to insert the data into javatest
table with its corresponding value. Mysqli_query() was used to perform the query in line
53[CITATION Placeholder1 \l 17417 ]. From line 58 to 6 if the query failed to execute, it will
be terminated and display a message as shown in line 60 using die(). Echo() was use in both
line 63 and 66 to output the alert message. Mysqli_affected_rows() was use to get result rows
in the database[CITATION Placeholder4 \l 17417 ]. From line 70 to line 73 if there are no
rows added in the database, an alert message will pop out tell user unable to insert data and
direct user to previous page. Mysqli_close() were used to close the database connection in
line 74 which is the last line of code in TEST_JAVAFORM.php[ CITATION w3r202 \l 17417
].
125
14.10 Library
Based on Figure Library above, the following code were used to create a search keyword
function, to retrieve data from library table in database to put it into a table. Include() was
used to get code from coding101conn.php which contain database connection that allow
query to be execute[CITATION Placeholder2 \l 17417 ]. $search_key were used to store the
keyword users type in which is passed using $_POST. From line 135 to 140 if the
$search_key contain nothing, then do nothing else also do nothing. $sql stores the query that
is used to perform search function on the book name in library table. Mysqli_query were used
to execute the query that is being stored in $sql[CITATION Placeholder1 \l 17417 ]. $sqlimg
were used to store the query used to find book image from library table. Mysqli_query was
used in line 147 to execute the query stored in $sqlimg[CITATION Placeholder1 \l 17417 ].
Mysqli_fetch_array were used in line 148 to get the result from the query performed in
$resultimg[ CITATION w3s191 \l 17417 ][ CITATION Rah20 \l 17417 ]. $path were used to
store the directory of the book image.
126
Based on Figure Library 2 above, the following code were used to check affected rows and
build a table in the web side. Mysqli_num_rows() were used to get the number of rows in the
$result which is the query performed previously in line 144[ CITATION Rah20 \l 17417 ]
[CITATION Placeholder5 \l 17417 ]. From line 151 to 166 if the numbers of rows are 0, alert
message will appear telling there are no result. Else it will output the table header of each
row.
Based on Figure Library 3 above, the following code were used to put the data from database
table into the website’s table. While() were used to fetch the result repeatedly from the query
127
performed[CITATION Placeholder5 \l 17417 ]. From line 168 to 185 while there are result
from the query performed, output all the result into the table on the website.
128
The admin page allows the admin to view the database of the users. Only the Admin can
access the admin page, the system checks the type of user via the role based line code as
mentioned early before. The codes for the tests, photo, feedback, thread and replies table will
not be discussed in this documentation as it is similar to the user’s database. The code for the
user database page is shown as the figures below.
129
130
Based on Figure Admin User above, a search bar template is created on line 79. It uses the
$_POST super global variable as the method and is named “search_key”. On line 87, it shows
the search key function that allow the admin to filter out results. The $search_key variable is
declared with the isset() function. The isset function helps to identify if the variable declared
and is different than null [ CITATION php201 \l 17417 ]. The function is followed up with
the $_POST super global variable along with the name of the search key that was declared
earlier. The next line shows a $sql variable being declared. It uses the SQL Select statement
to filter out the results based on the users table with the user_first_name field. This will filter
out the results after the admin has successfully typed the desired data and clicks on the
“search” button. The next following lines are similar to what was discussed earlier. The
$result variable is declared along with an IF condition. If the results are not found, it will
occur a message and not build the table, else it will build a table as shown in line 101 to 112
using the html <table> tag. The next line will fetch the data from the database into the created
table. It uses the $rows variable along with the while loop to represent. On line 124 and 125,
there is a hyperlink tag that uses the <a href> tag followed by the link of the webpage. This
means that it will direct the admin to the following pages after the admin has successfully
clicked on the buttons. This will be further discussed later on.
131
The delete function continues from the user database’s page when the admin clicks on the
delete button. Every database page has a delete button as well. The code is shown as figure
Delete below.
Based on the Figure Delete above, the lines from 10 to 29 were discussed earlier, thus it will
not be explained again. On line 34, the $id variable is declared along with the intval()
function. The function returns the integer value of the variable [ CITATION w3s201 \l
17417 ]. It will convert any variables into a integer value. In this case, it will receive the id
based on the user’s table. It is followed up with a $_GET super global variable first. The
$_GET super global variable is similarly to the $_POST super global variable as mentioned
earlier. It will then declare a $sql variable with the SQL DELETE statement based on the
users table on the condition where the user_id is equal to the $id variable. It will then run a
132
condition to check if the rows were fully deleted or not. If it is not, then it will echo out a
message and redirect the admin back to the same page. If it is deleted, then it will delete the
data based on the user ID selected and echo out a message along with redirecting the admin
back to the same database page.
133
The edit function continues from the user database’s page when the admin clicks on the edit
button. The code is shown as the figures below.
134
Based on Figure Edit 1, it is similar to the previous code. On line 41, the $result variable is
declared and undergo the IF condition with the $rows variable. If it the data exists, then it
will create a form using the <form> tag, a table using the <table> tag and a set of fields
known as the user’s ID, name, last name, emaill address, password and gender using the
<input> tag. In each input tag line, there is a <?php echo $rows[ ]?> line for the attributes,
except for the user id attribute, that is using the <?php echo $uid;?> line. These lines help to
call out and fetch the previous held data, so that the admin can see the data in the edit form
page. There is an submit button with the input type submit. This input type will create a
button. The name of the button is called as “Update” via the value. Upon clicking on the
button, it will direct the admin to the update_user.php page. In line 38, the form is created
along with the form action added that links the admin to the update page after clicking on the
update button. The edit page acts as a template for the admin to enter the data to be modified
while the update page will be the main function that modifies the data in the database. The
update page will be discussed after this.
135
The update function continues after the edit page. The code is shown as figure Update below.
Bassed on the Figure Update above, the variables are declared on line 35 to 40. It uses the
passed names from the edit page. A $_POST super global variable is declared first. On line
43, the $sql variable is then declared with the SQL UPDATE statement to update the users
table along with the SET method. This will change the previous database data to the newly
modified data fetched from the edit page. Again, on line 53, the IF statement is called to
check whether the data has been successfully updated or not. If it has been successful, then it
will echo out a message and redirect the admin back to the user database page. If it fails, then
it will echo out a message and redirect the admin back to the edit page.
136
Next, the library database page allows the admin to view and delete the current data, similarly
to the users and other databases. However, the library database page also has a button that
allows the admin to upload new books into the database and website. The code is shown as
the figures below.
137
The figure Library 1 shows the form template that is similar to the previous edit page while
the figures Library 2 and Library 3 performs the function. In figure Library 1, the form is
created with a form action that links to the update page that is known as “add_library2”. A
field of input types tags are created with unique names that will link with the update page
later. Figure library 2 and library 3 shows the code function that will be used to store the
newly added books into the database. In the beginning at line 4, there is a $target_dir variable
declared with the “upload” statement. It means that it will store the images into the folder
called “upload”. This is needed as the admin is able to upload pictures for the library section.
The next few lines perform the similar functions that were mentioned earlier. Line 4 to 28
discusses entirely on the photo function. On line 8, a $check variable will be declared to be
placed in an IF Else condition. It is to check if the uploaded item is a picture format or not.
After the admin uploads a picture and clicks on the submit button, the system will check if it
is an image or not. If the item is an image, it carries on to line 19. If the item is not an image,
a message will be echoed out and the admin will be redirected to the same page. On line 19, it
checks to see if the uploaded image consists of one of the given image formats. If the
uploaded image format does not belong to any one of the mentioned formats, a message will
be echoed out and wont allow the admin to proceed. Next, on line 24, it will go through
another validation process based on the earlier declared variables. If it fails, then it will not
allow the admin to proceed. However, if all the validations are done and there is no error, the
code will continue at line 32. A $sql variable will be declared with the SQL INSERT
statement to insert the data into the library table. It will insert the previous newly added data
into the previously declared name fields. The $_POST super global variable is declared
before putting in the name fields. The next few lines will undergo an IF statement to check if
there is an error with the insert function linkage with the database. If there are errors, it will
echo out a message and it will not allow the admin to proceed. However, if there are no
errors, it will echo out a message and redirect the admin back to the library database page.
The admin can now view the newly added book data at the library database page.
138
15.0 Conclusion
In conclusion, the E-Learning System website Coding 101 includes one of the main
functions that are needed by most of the students in the real world. Most students are not able
to get access to quality course slides, well detailed tutorial questions or even videos on the
understanding of the courses. They are also not able to ask questions due to many factors
such as mental disorders, shyness, lack of opportunity, inability to reach out and many more.
Most students are also not able to get their hands on library books or free accessible E-books
online. With the establishment of the E-Learning System website, Coding 101 aims to help
students curb the obstacles and limitations by providing them the needed resources and
services. In the future, Coding 101 hopes to be more well-known and to be able to expand
their services to assist many more in need.
139
16.0 References
Banerjee, S., 2020. PHP | file_exists( ) Function. [Online]
Available at: https://www.geeksforgeeks.org/php-file_exists-function/
[Accessed 14 April 2020].
Chan, A., 2015. High cost of varsity degree. [Online]
Available at: https://www.thestar.com.my/news/nation/2015/10/27/high-cost-of-varsity-
degree-malaysia-fifth-most-expensive-place-to-get-tertiary-education/
Daniel, E., 2018. The rising cost of higher education. [Online]
Available at: https://www.nst.com.my/education/2018/01/320953/rising-cost-higher-
education
Lewis, S., 2007. Definition: Waterfall Model. [Online]
Available at: https://searchsoftwarequality.techtarget.com/definition/waterfall-model
[Accessed 2 April 2020].
MerlynShelley, 2020. isset() Function. [Online]
Available at: https://www.geeksforgeeks.org/why-to-check-both-isset-and-empty-function-in-
php/
[Accessed 14 April 2020].
Murad, D., 2019. Feature: Malaysian salaries are insufficient. [Online]
Available at: https://www.thestar.com.my/news/nation/2019/11/03/malaysian-salaries-are-
insufficient
Nicollet, V., 2010. PHP session_start(). [Online]
Available at: https://stackoverflow.com/questions/4015729/php-session-start
[Accessed 14 April 2020].
php, 2020. $_POST. [Online]
Available at: https://www.php.net/manual/en/reserved.variables.post.php
[Accessed 14 April 2020].
php, 2020. isset. [Online]
Available at: https://www.php.net/manual/en/function.isset.php
php, 2020. move_uploaded_file. [Online]
Available at: https://www.php.net/manual/en/function.move-uploaded-file.php
[Accessed 14 April 2020].
php, 2020. mysqli::$connect_errno. [Online]
Available at: https://www.php.net/manual/en/mysqli.connect-errno.php
140
141
142
17.0 Appendix
17.1 Installation Guide
143
3. Click on the installer launcher to install WampServer on your device. Make sure to
accept the terms and conditions and also set the directory for WampServer to be
stored in. It is shown as Figure Wamp 3 below.
4. Search up WampServer on your search bar and then launch WampServer. A command
prompt will briefly appear upon clicking it. Wait until it disappears before executing
the next step. It is shown as Figure Wamp 4 below.
5. A “W” icon will appear on the sidebars, it should turn red then orange then green. If it
remains at red or orange, check for potential errors that may had caused the
application to malfunction. It is shown as Figure Wamp 5 below.
144
6. Once the icon turns green, click the icon to have access to the WampServer menu. It is
shown as Figure Wamp 6 below.
7. Click on www directory to store your projects. It is shown as Figure Wamp 7 below.
8. Click on localhost directly to select your file and open it. It is shown as Figure Wamp
8 below.
10. Enter your Username and Password, this will be the username and password you use
to access your database. It is shown as Figure Wamp 10 below.
145
11. On the top left corner, click on the New button to create a new database. It is shown
as Figure Wamp 11 below.
12. Name the new database and the language used by the database. Usually,
latin1_swedish_ci is used in order to support more characters. It is shown as Figure
Wamp 12 below.
146
13. Create a new table for the database. Enter the name and the number of columns (can
be changed later) for the database. It is shown as Figure Wamp 13 below.
14. Enter for each row the name of the row, the type of data, the length or values, the
default values, collations, attributes, whether null values are allowed, the index of the
row (primary, unique etc.) and auto-increments of the database and save it.
15. Finally, to use this database in the website, link it to localhost, use php and type
mysqli_connect("localhost","Username","Password","DatabaseName").
147
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Forming Complete Tan Ming Wei Tan Ming 17/1/2020
a Tan Kim Chuan Wei
complete Lim Wei Hern
group of Pang Qi Hao Isaac
4
Next Meeting
Date of Meeting: 24/1/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
148
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
149
Progress Report
Meeting No.: 2
Week: 2
Date of Meeting: 24/1/2020
Start Time: 10:35am
End Time: 12:35pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Compiling Complete Tan Ming Wei Tan 28/1/2020
proposal Ming
draft parts Wei
on 23rd Jan
2020
2 Fixing Complete Tan Ming Wei Tan 28/1/2020
correction Tan Kim Chuan Ming
s Lim Wei Hern Wei
according Pang Qi Hao Isaac
to format
and
lecturer’s
feedback
3 Submitted Complete Tan Ming Wei Tan 28/1/2020
proposal Ming
draft on Wei
rd
23 Jan
2020
4 Assigning Complete an Ming Wei Tan 7/2/2020
parts for Ming
finalized Wei
proposal
document
Next Meeting
150
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
151
Progress Report
Meeting No.: 3
Week: 3
Date of Meeting: 31/1/2020
Start Time: 10:35am
End Time: 12:35pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Compiling Complete Tan Ming Wei Tan 7/2/2020
parts for Ming
proposal Wei
document
Next Meeting
Date of Meeting: 7/2/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
152
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
153
Progress Report
Meeting No.: 4
Week: 4
Date of Meeting: 7/2/2020
Start Time: 10:35am
End Time: 12:35pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Submittin Complete Tan Ming Wei Tan 7/2/2020
g complete Ming
proposal Wei
Next Meeting
Date of Meeting: 14/2/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
154
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
155
Progress Report
Meeting No.: 5
Week: 5
Date of Meeting: 14/2/2020
Start Time: 10:35am
End Time: 12:35pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Planning Complete Tan Ming Wei Tan 14/2/2020
and Tan Kim Chuan Ming
allocating Lim Wei Hern Wei
appropriate Pang Qi Hao Isaac
ERD tables
needed for
system.
2 Initial start Complete Tan Ming Wei Tan 14/2/2020
on planning Tan Kim Chuan Ming
context Lim Wei Hern Wei
diagram Pang Qi Hao Isaac
and DFD
level 0.
3 Identifying Complete Tan Ming Wei Tan 14/2/2020
needed Tan Kim Chuan Ming
software Lim Wei Hern Wei
and Pang Qi Hao Isaac
templates
for website
system
4 Allocating Complete Tan Ming Wei Tan 14/2/2020
individual Tan Kim Chuan Ming
component Lim Wei Hern Wei
s to group Pang Qi Hao Isaac
156
Next Meeting
Date of Meeting: 21/2/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
157
Progress Report
Meeting No.: 6
Week: 7
Date of Meeting: 28/2/2020
Start Time: 10:35am
End Time: 12:35pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Implementin Complete Tan Ming Wei Tan 27/2/2020
g correction Tan Kim Chuan Ming
on group Lim Wei Hern Wei
component Pang Qi Hao Isaac
tasks
(ERD,
Context
Diagram &
DFD Level
0)
2 Begin On-Going Tan Ming Wei Tan 27/3/2020
website Tan Kim Chuan Ming
coding Lim Wei Hern Wei
Pang Qi Hao Isaac
Next Meeting
Date of Meeting: 13/3/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
Approved by
158
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
159
Progress Report
Meeting No.: 7
Week: 8
Date of Meeting: 12/3/2020
Start Time: 12:00pm
End Time: 3:30pm
Meeting Venue: APU Classroom
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Finalizing Complete Tan Ming Wei Tan 13/3/2020
Context Tan Kim Chuan Ming
Diagram Lim Wei Hern Wei
Pang Qi Hao Isaac
Next Meeting
Date of Meeting: 20/3/2020
Start Time: 10:35am
Meeting Venue: APU Classroom
160
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
161
Progress Report
Meeting No.: 8
Week: 9
Date of Meeting: 20/3/2020
Start Time: 10:35am
End Time: 12:35am
Meeting Venue: Online (WhatsApp)
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Start discussing Complete Tan Ming Wei Tan 1/4/2020
on individual Tan Kim Chuan Ming
components Lim Wei Hern Wei
Pang Qi Hao Isaac
Next Meeting
Date of Meeting: 27/3/2020
Start Time: 10:35am
Meeting Venue: Online (WhatsApp)
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
162
163
Progress Report
Meeting No.: 9
Week: 10
Date of Meeting: 27/3/2020
Start Time: 10:35am
End Time: 12:35am
Meeting Venue: Online (WhatsApp)
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Finalizing Complete Tan Ming Wei Tan 27/3/2020
website coding Lim Wei Hern Ming
Wei
Lim Wei
Hern
2 Start on Code On-Going Tan Ming Wei Tan 19/4/2020
snipping & Lim Wei Hern Ming
User manual Wei
Lim Wei
Hern
Next Meeting
Date of Meeting: 3/4/2020
Start Time: 10:35am
Meeting Venue: Online (WhatsApp)
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
164
165
Progress Report
Meeting No.: 10
Week: 11
Date of Meeting: 3/4/2020
Start Time: 10:35am
End Time: 12:35am
Meeting Venue: Online (WhatsApp)
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-
Suggested/Decided Charge
by)
1 Progress on On-Going Tan Ming Wei Tan 19/4/2020
code snipping Lim Wei Hern Ming
& user manual Wei
Lim Wei
Hern
Next Meeting
Date of Meeting: 10/4/2020
Start Time: 10:35am
Meeting Venue: Online (WhatsApp)
Approved by
166
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
167
Progress Report
Meeting No.: 11
Week: 12
Date of Meeting: 10/4/2020
Start Time: 10:35am
End Time: 12:35am
Meeting Venue: Online (WhatsApp)
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-Charge
Suggested/Decided
by)
1 Complete code Complete Tan Ming Wei Tan Ming 19/4/2020
snipping & Lim Wei Hern Wei
user manual Lim Wei
Hern
Next Meeting
Date of Meeting: 16/4/2020
Start Time: 12:00pm
Meeting Venue: Online (WhatsApp)
168
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
169
Progress Report
Meeting No.: 12
Week: 13
Date of Meeting: 16/4/2020
Start Time: 12:00pm
End Time: 1:00pm
Meeting Venue: Online (WhatsApp)
Group Members
Present: Absent:
Tan Ming Wei
Tan Kim Chuan
Lim Wei Hern
Pang Qi Hao Isaac
Report
No Agenda Progress Decision Person- Due date
. (Action and in-Charge
Suggested/Decided
by)
1 Finalizing Complete Tan Ming Wei Everybod 19/4/2020
previous parts Lim Wei Hern y
correction
170
Approved by
Lecturer Signature:
Dr. Nurul Husna Binti Mohd Saad
171