Professional Documents
Culture Documents
That this Dissertation is the original work of the candidates, and that it is accepted in partial
fulfilment of the requirements for the award of the degree of Bachelor of Science in Information
Systems.
i
ABSTRACT
Sierra Jobs Online Job Portal is a website-oriented human resource management system. The main
aim of the website is to provide recruitment services. Online Job Portal provides jobs to fulfill
specific skills and job profiles that are currently in demand in the local and international markets.
An Agile methodology life cycle has been used to design and develop the proposed system. The
open-source programming framework is used to develop the functional requirements for the
With high demand in the recruitment process, the efficient outcome will fulfill the requirements
of job hunters. The online job portal system is created using the PHP Framework platform, with
Apache web server as the server environment, and MySQL as the database management system.
The System has many online recruitment functions and other regular functions, such as User
registration, Management of Job posts, Job Search, Adding Skills, viewing and applying for jobs,
Find Employer information, resume management, Scheduling interviews, Skill Search, and more.
The high-end skill testing functions for the selected employee facilitate an authentic candidate
ii
DEDICATION
This dissertation is firstly dedicated to Allah with whom all things are possible. His blessings,
Our work is also dedicated to our amazing and supportive families who have endlessly offered all
the needed support during this our academic journey, we are truly humble by your unquestionable
To our friends, in and out of the classroom, your contributions to this journey are hard to go
unnoticed, you helped us grow and it has been a huge pleasure having you in every chapter of this
story.
To our spouses, we thank you for being the strength behind this journey, you showed us the needed
love and most importantly your care, support and understanding were unimaginable, we are
grateful.
iii
ACKNOWLEDGEMENTS
We want to acknowledge Allah the most gracious and most merciful, for the strength and for
equipping us with the ability to learn, understand and accomplish the goal of writing this our
We want to express our gratitude to our supervisor Mr. Christian Thomas for his support, teaching,
advice and guidance. It has been an honor to have been under your supervision.
We will also like to express our deepest thanks and appreciation to our Dean of faculty for
Information Systems and Technology, Dr. Mohamed A. Sheriff, the heads of departments, and
every lecturer that have contributed to our journey, you filled our curiosity with impactful
We will also like to express our deepest thanks and appreciation to Mr. Jonathan Thomas and the
staff of Complete Solutions LTD. We want to thank you from the depth of our hearts for not only
letting us use your facilities during this project but also for the guidance and mentorship that
We also thank all those who played a great role in our academic accomplishments, we
iv
CHAPTER ONE
1. INTRODUCTION
A Job Portal is a modern term for a job board or platform that can be accessed over the internet. It
helps employers to find their candidates and the job seekers to find jobs that are suitable for them.
These online job portals offer usually a wide range of functionalities that brings so much ease in
both job application and recruiting processes as compared to the traditional way of doing the same
activity.
In recent years majority if not all institutions use this technology for their job advertisement and
among many other sectors have embraced online job portals to enable the job seekers access
Normally it is time and financially consuming for employers to get the right candidates for the
jobs, and also requires resources from the job seekers to access not just available vacancies but
also valid information on institutions, this can be a challenge during interviews simply because the
old-fashioned way of advertising jobs and the entire recruiting process provides little or no form
of communication and interaction between job seekers and job providers prior to first meeting.
In this project we will develop an online application that will be available to both employers and
job seekers with the aim to provide a platform that not only advertise jobs but also provides all the
required interaction and communication between parties. When companies want to advertise for
jobs or recruit in Sierra Leone, they mostly rely on announcing over local radios or newspaper
publications which we can agree to be less effective in this era. Through this online Job Portal,
1
companies in Sierra Leone will not only get to advertise jobs but will get the chance to make
profiles of their companies available and also have access to a large rich database of jobseekers
who will be interested in working all across the country, jobseekers cannot only have access to
posted adverts on vacancies but understanding of potential employers profile and cultures, create
resumes and be part of a rich database of jobseekers that can be directly recruited by suitors. Main
features of this system will include job advert, view jobs, search jobs by district, create company
Sierra Jobs, the name of our portal is a web application, which serves jobseekers to find available
job vacancies and employers to identify eligible job seekers with the prospect of selecting the most
qualified candidates in Sierra Leone. The only way to select best-qualified candidate is to have a
pool of eligible applicants, which is possible by drawing the interest of individuals in the market.
Sierra Jobs best serve this purpose. E-recruitment has become the standard means for employers
and job seekers to meet their respective objectives. The traditional methods for recruitment include
Job fairs, University career employment services, Employee referrals, advertising in the
newspapers, televisions etc. With the advancement in technology and growth of internet usage, the
e-recruitment has revolutionized the way organizations in the advance world hire and candidates
search for jobs. With the Sierra Jobs online job portal, the recruitment process is hastened up at
every stage from job postings, to receiving applications from candidates, interviewing process.
The cost of searching/posting jobs will be much less compared to the traditional way of advertising.
Job search portal stands as an effective means for Employers to outline the job vacancies,
responsibilities and qualifications to attract jobseekers. Using the portal jobseekers can extensively
search for jobs in companies, organizations and regions they may otherwise have not learnt.
2
1.2 STATEMENT OF THE PROBLEM
Sierra Leone is a country that is slowly joining the evolution of technology and is still few steps
back in embracing the modern way of doing things. Most notable, job seekers still struggle to
have access to advertise vacancies which are mostly published in various local newspapers, also it
is a challenge for recruiters to access a platform that maintains a reach job seekers database with
We intend to develop a system that will aim at making job seeking convenient on both sides. The
Portal will be the solution where recruiter and the job seeker meet aiming at fulfilling their
individual requirement. Our system will not only be a platform for job advertisement, but will aid
job seekers in developing CVs. Companies can also make their profiles available.
The following are the main aims and objective of this project in details;
• To provide Employers in Sierra Leone an online platform that they can advertise vacancies
• To provide jobseekers one stop place to access advertisement on available jobs across the
country.
• To aid institutions with online presence by having a platform to publish their profiles.
• To provide features that help jobseekers build standard robust resumes that make them
3
1.4 JUSTIFICATION
The online job portal creates a platform to the jobseekers for them to find the fitting job
opportunities that suites their qualifications all across the country. It will also help companies in
improving its standards through the use of computerized systems rather than manual or traditional
ways of recruiting. The main aim of developing this system is to make job searching easier and
more efficient to the jobseekers and the employers. It is a primary source of talent search for the
recruiters. The job seekers are also able know the vacancies available at single point. The online
job portal has a connecter between the employers and the jobseekers. The job portals have become
very good communication channels because they reach a wide audience worldwide. They are used
in marketing various companies which might not be known if not through the use of this job portal.
• Our job portal will provide employers modern way of notifying the job seeking community
• This system will help jobseekers find suitable jobs that matches their qualifications and
• Traditional ways of recruiting or advertising for jobs can be resource consuming depending
on which method is used. It requires finance for repeated newspaper ads, radio
announcement slots etc. with our Job portal a drastic cut in both human, time, financial and
• Institutions in our country mostly lack the online presence, at the end of this project, the
system will provide features that will provide means for institutions to get their profiles
4
• The system will not only provide rich employee database to recruiters, but provide standard
way of building robust resume for jobseekers. With a common format for curriculum vitae,
1.5 SCOPE
• The job portal web application which is to be developed will provides its members with
jobs information.
We will be developing using the Laravel PHP framework which can be installed using composer,
MySQL as the database engine and Apache Server (Xampp) to host our web application, we will
be using Visual Studio code and Notepad ++ for writing all required script. We will use HTML,
CSS and JavaScript for our front-end development and MS Project to manage the project.
• Laravel: is a free and open-source PHP web framework that is use for the development of
• PHP: Hypertext Preprocessor (PHP) is a technology that allows software developers to create
5
• MySQL: which is a part of the Apache suit, it is a database engine, widely used for accessing
• Apache Server (Xampp): is a free and open-source cross-platform web server solution stack
package developed by Apache Friends, consisting mainly of the Apache HTTP Server,
MariaDB database, and interpreters for scripts written in the PHP and Perl programming
languages.
• Visual Studio code: Visual Studio Code, also commonly referred to as VS Code, is a source-
• Notepad ++: Notepad++ is a text and source code editor for use with Microsoft Windows. It
supports tabbed editing, which allows working with multiple open files in a single window.
• HTML: Hypertext Markup Language is used to create and save web documents.
As a team we will maintain a WhatsApp group which we will use for communication and also to
share resource.
After approval of our proposal, we studied each development phase together to enhance the
We started with our requirement formulating phase in which we brought out all requirement to
match the scope of our project, furthermore, we used the process approach in segmenting our
6
project, this helped us in deriving robust use cases for our analysis and correct matrix to help form
Development, documentation and writeup for the dissertation were done simultaneously. We held
daily discussion on the WhatsApp group and met at least twice a week as a team.
Even though our development was done in an iterative approach, we plan to have detail of all
activities involve with the help of a work break down (WBD) structure which in turn can help us
7
FIGURE 1.1 Gantt Chart
8
1.8 DISSERTATION OVERVIEW
Chapter One (1) Introduction: Describe general introduction and gives clear background to the
project, it covers the aims and objective and justification for the project, tools to be used and
Chapter Two (2) Problem definition and Scope: Overview of the problem that warranted the
development of the project, it describes the problem in details and brings out all the challenges
and obstacles that the current systems possess. Furthermore, this chapter gives insight to the
Chapter Three (3) Literature Review and Methodology: This chapter is aimed at reviewing
the existing literature on the trend of online job or recruitment systems, the demand for online
job portals, related projects on online job portals, similarities and differences between the related
system. This system reviews the different methodologies of software development and
Chapter Four (4) System Analysis and Design: this chapter Identifies detail, requirement
gathering and fact-finding techniques are discussed. Analyzing current system and requirements
analysis for the proposed system is included. System's functional and non-functional
requirements are also discussed. Specific hardware requirements and software requirements are
analyzed and listed. Design approaches discussed and justification for our design method also
presented.
Chapter Five (5) Results and Discussion: This Chapter present pictorial results in terms of the
key features of the system that we have implemented, result from system test perform and the
9
Chapter Six (6) Summary, Conclusion and Recommendation: This chapter summarizes the
dissertation with a critical evaluation of the system, lessons learned and suggestions for any future
enhancements.
10
CHAPTER TWO
2.1 INTRODUCTION
This chapter describes the contemporary drawbacks and challenges in the whole recruiting and job
seeking process in the country. It assesses a range of issues or obstacles surrounding the traditional
or non-technology methods of recruiting or job seeking, and narrows the scope to job seeking
graduates and skill youths and their potential employers. This chapter attempts to describe the
challenges faced by firms in advertising jobs, the number of resources varying from time, finance
among others that are invested by all stakeholders in recruiting or applying for a job.
The ideal candidate is not peering in newspapers or locked in to radio listening to advert or public
notices; they are squinting on their phone screen exploring online job listings. That’s the reality of
today’s generations otherwise refer to as millennials. And that makes up over 50% of the available
workforce. This makes about slightly above 70% of employers find it difficult to search for skilled
candidates, and a huge percentage of Job seekers miss out on advertised vacancies because of the
These traditional methods which involves newspaper advertisement can be effective to certain set
of job seekers, particular within local radius, local employment office postings and temp agencies.
which do exist but way less popular that are used for recruitment agencies that shortlist potential
11
Majority of companies in Sierra Leone are old fashioned and are inclined to go with these
traditional methods or uses, the tried and tested recruiting strategies which technology have proven
to be outdated now.
Therefore, this study provides an analysis of the major challenges faced by both employers and
employees, others considered as job seekers in the whole job recruiting and job seeking cycle in
the country.
We live in a country in which the embrace of technology and the comfort it brings is on the low
side as compare to countries in the first world. Employers still struggles to access a robust rich
database of potential recruits, so they usually just use means like newspaper job ads or radio and
television slots to communicate about available vacancies in their institutions. This is very
expensive to do with vary much little effect on wider radius and audience or even attract interest
from the job seeking community simply because these methods present far fewer information on
both the job description and the employer. This is still considered to be cheaper as compared to
other alternatives like organizing job fairs or working with temp recruiting agencies.
Job seekers barely get access to single newspaper in their localities not to mention to get the various
editions which are printed on daily bases, so they mostly miss out job advertisement which are
12
The following constraints are the limitations to the current method of recruiting and job seeking
• Limited access to diverse talents: If employers print a newspaper job ad, the prospects
are limited not just by the geographical boundary but also by a factor of chance. The ideal candidate
might just breeze through the job posting without even noticing.
Unlike a digital system, there are no filters or algorithms matching ideal candidates to job listings.
You can only do so much targeting in a traditional hiring approach and among those few people—
who are in the locality, who notice the job posting, and decide to apply, they are left with not so
much options.
• Restricted flexibility of job postings: You will face quite a few hurdles in merely posting
the job ad. In most print ads, there are not adequate space for the entire job description and
Another problem is the frequency with which job postings can be placed. For enhanced visibility
in the digital medium, recruiters can delete an old job posting and post it afresh on job sites.
After you attend a job fair, post a bulletin board, or print a newspaper ad, you can only wait. You
• Excessive cost and Time Consuming: Traditional recruitment is an expensive and time
demanding process considering all that is involved in the entire recruiting cycle irrespective of
which traditional method is used. Consider the cost for advertisements, recruitment agency
charges, hiring professionals, duration of the process, the time involve in getting the word out on
an available vacancy, waiting around for weeks for physical applications to come in, sorting
13
through each job application manually, arranging tests and interviews, calling in each shortlisted
both been consistently available to the job seeking community and radius of geographical
coverage, job seekers are missing out on their ideal jobs, they also do not provide means for
employees to scan through directories of available jobs, job seekers cannot also have means to
create and add their resumes to a database that can be available to recruiters.
The scope of this project is to develop a system that will provide the perfect environment for
recruitment and job application. The system will be used by both recruiters and job seekers.
Our scope is defined by the identified actors or stakeholders to the system, definition of the scope
Employer/Recruiter: They can create a profile of their institution and make relevant information
about their availability online. In addition to the online presence, there will be unlimited chances
to publish as many as available jobs in their institutions and these job adverts can remain available
Recruiters will have access to a rich database that contains standard formatted resumes of all job
Employee/Job Seekers: The system will make available all job adverts in the country irrespective
Job seekers can have a guided way of creating standard resume which can be placed to a database
14
Job seekers can scan through directories of available jobs within the country and they can search
with robust filters that can sort jobs based on district and discipline.
15
CHAPTER THREE
3.1 INTRODUCTION
This chapter is aimed at reviewing the existing literature on the trend of online job or recruitment
systems, the demand for online job portals, related projects on online job portals, similarities and
differences between the related system. This system reviews the different methodologies of
software development.
helps provide important information to executives in any organization which is pivotal and gives
aggressive edge in this current globalize conditions. In this paper we present the plan of different
on-line recruitment framework, that enables businesses to post their job advertisements, which job
searcher can allude to, when searching for jobs. This job portal can catch job prerequisites
Joblessness is one of the genuine social issues looked by both developing and developed nations.
For instance, in Europe the rate of joblessness has been expanding quickly since the 1970's. Dorn
and Naz referenced that one reason for this issue is the unjustifiable appropriation or absence of
data on job openings so individuals cannot present the new job opportunities. It implies that there
are a few jobs accessible, yet jobseekers do not approach that data. An effective pursuit of the web
may help jobseekers in their job chase. Some web-based interfaces give productive method to look
16
Today, the web has changed numerous parts of our life, for example, the manner in which we
search for jobs. On the off chance that an individual needs to get another line of work, he/she can
present a resume utilizing word handling programming like Microsoft Office Word, open an
internet browser to send the resume and get an email. Online recruitment has turned into the
standard strategy for businesses and jobseekers to meet their particular targets. The businesses
transfer the job contributions in to the job portals. The majority of substantial organizations as well
as the little ones has acknowledged online recruitment. The organizations send data or jobs opening
for posting on the portals and speak with the candidates through the Internet and Email.
Gangle characterized the idea of online recruitment or e-recruitment as the utilization of the
Internet to scan for jobs, which have been publicized electronically. From this narrative we
understand that businesses publicize job advertisement from their respective institutions, scan
through resumes of potential candidates, and can contact suitable jobseekers through the web
platform. Today the internet has turned out to be one of the key strategies for accessing data on
suitable candidates to fill in job openings for recruiters. Substantial foundations, similar to colleges
incorporate data on vocation prospects in their sites, which are likewise connected to recruitment
locales.
Both old and new ways of looking for jobs more often than not includes distinctive approaches to
search for job openings, for example, through close to home contacts, direct phone calls to
businesses, job organization office, filtering on the web job postings, and so on. Prior to the
internet, these approaches turned out to be generally utilized strategies for job search; jobseekers
invested a heap of energy utilizing different strategies to search for job openings. Today,
jobseekers utilize online techniques, which are extremely advantageous and spare a great deal of
17
time. Galanaki records the accompanying strategies to be the conventional (old) routes for
recruitment;
● Job fairs
● Management Consultants
These old jobs searching techniques are excessively moderate, distressing, testing and furthermore
need quality. What's more, the candidates need to consider the expense and the measure of time to
get the data they need, and the different arrangements they need to make. Securing all accessible
The Internet is presently an incredible asset that jobseekers can utilize. Today, numerous locales
publicize job positions to be filled by individuals with specific skills in different fields. The Internet
assumes an essential job in the region of human asset arranging and advancement. Most arranging
and advancement organizations are currently utilizing personal computer innovation and the
internet for staff recruitment. It ought to be noticed that despite the fact that the Internet has
encouraged the procedure of job chasing, it has not supplanted the conventional techniques totally.
In the period of innovation, the Internet has turned into the principal wellspring of data for
18
prospects on their sites. As per a review, slightly above 70% of the workforce utilizes sites or
portals on the Internet to look for jobs in France. These sites or portals are available for internet
Sulaiman and Burke found that most businesses are quick to utilize online recruitment strategies
for the recruitment of staff. He referenced that online recruitment strategies can recognize the best
candidates. That is the motivation behind why progressively created nations, for example,
Malaysia have begun to utilize online job portal as one of the vital methods to enlist individuals to
fill job opening. An examination done in 2006, found that 21% of web clients in the EU utilized
the web to look for jobs or to send job applications. In 2007, this had expanded to 67% for jobless
individuals.
Most organizations distribute their job opening on their site, or utilize online jobsites. These
techniques result in incredible sparing in expenses. Mochol and Nixon expressed that the
acquisition yet decreased exchange cost. Today, the Internet is utilized for an expansive number
In a report in 2005, it was discovered that 90% of jobseekers in Germany utilize the web to search
for jobs. A purpose behind this high rate of Internet is that candidates are youthful and very
qualified and utilize the web a great deal, and numerous organizations distributed their job
Job portals are the beginning stage of jobseekers while scanning for jobs. In this way, some job
portals charge businesses high expenses to distribute data on job opportunities. Regardless of this,
numerous businesses still keep on publicizing or distributing data on job openings hands on portal,
19
however, constrained to minimize expenses. Numerous businesses still trust that a jobseeker will
A great job portal can likewise bolster learning sharing among the individuals. The quantity of
online job portals keeps on expanding. It is trusted that seventy-five percent of individuals who
are looking for jobs, utilize the web and on the web portals. Gangle expressed that online
recruitment has the accompanying points of interest: bosses can distinguish an extensive number
of qualified job searchers and get their data effectively done. It implies that organizations or
institutions can broaden the inquiry area, subsequently, they have better prospect of choosing the
most qualified applicants. Web gives managers an approach to draw in a higher number of
applicants, particularly, the individuals who satisfy the job necessities. With online recruitment,
individuals approach the job data from anywhere on the planet, while with the paper, data is spread
at nearby dimension. One key part of job portal is the expense. Organizations spend less to
distribute or publicize job opportunities on the portals or sites, when contrasted with the utilization
of other media, for example, paper or job fairs. Besides, online recruitment is quick, and spares
time. Once the managers transfer the job opening on the portal, the jobseekers can see it and send
in their application.
Along these lines, cost and efficiency are two noteworthy points of interest of job portals.
Ganalaki, referred to in Rosita and Nadianatra (2007), expressed that the Internet is an instrument
without fringes, and utilizing it have been a great strategy in bringing people together around the
world.
One of the approaches to enhance work portability is to give online job offer administrations.
Online job portals can help jobseekers as they contain all required data about accessible opening
20
in a solitary point. Such portals upgrade effectiveness in job recruitment as candidates can
coordinate their capabilities and skills to the prerequisites of bosses and potential employers.
For the most part, looking for jobs on the web includes a procedure of data gathering in light of
the fact that the jobseeker accumulates data contained in the job portals, amid the inquiry. A great
job portal imparts data and encounters to its individuals/clients. It requires less time and better
choices can be made. Job openings necessities can be coordinated to a candidate's capabilities and
skills. Along these lines, job portals return the exact matches as well as return the most comparable
match. The individuals from the European Commission (EC) expressed that online job portals
● An online accessible database of positions for job searcher; offices to send CVs to the site;
● Additional guidance, for instance, about working in remote nations or profession direction;
● Businesses must be able to distribute and oversee job positions, look through the CV
database;
After thorough research on locally based online Job Portals, a study of current systems of Career.sl
and Careerical eConsult SL was conducted for comparison and inspiration. The study was
conducted on these systems and a brief similarity and differences of how these are as compared to
our system and how the systems operate on all levels are also explained below.
21
3.3.1 DESCRIPTION OF CAREERS.SL SYSTEM
Careers.sl is a job-search engine which was developed by IDT Labs a technology leading firm in
Sierra Leone. This online job platform was developed with the aim of making the labor markets
more inclusive, innovative, flexible, and transparent. This web application explores and leverages
The system is accessible by the internet and utilizes Web Access Points (WAP) and Short
Messaging System (SMS) which lower the search cost and barriers to information for the job
seekers and employers. Their system allows employers create and pay subscription for their
accounts, with these subscribed accounts, they can post vacancies which are available to the
Job seekers can access advertised jobs on the platform but there is a limit to the quantity of
unlimited search portfolio of available jobs, one needs to register to the website and pay
subscription.
designed to help students, graduates and professionals achieve job satisfaction and/or
Their system helps organize career building trainings for all levels of the job market. The system
serves as medium between stake holders of the job community, it provides guides on how to
develop professional resumes and also prepares individuals for job interviews.
22
They mostly allow the publications of vacancies on the website and their numerous social media
They are players in the job community but are limited to only trainings, resume guides and job
advertisement.
The following are similarities between our system and the mentioned systems above;
Even though there are numerous similarities between our systems, there are also several
• Our system allows a single standard way of presenting resume whiles the other systems
• Our system does not limit the amount of job adverts that can be visible to all users.
• To use our system is free of charge while the other system requires subscription fees for
23
3.4 SYSTEM DEVELOPMENT METHODOLOGY
Just like any other engineering discipline, the development of software is guided by a standard
engineering practice referred to software development life cycle (SDLC). As the old adage says
“plan your work and work your plan”. This philosophy has time and again proven to be extremely
efficient, The SDLC with it different models have brought a certain amount of useful structure to
software engineering work and have provided the much needed and reasonably effective road map
The software development life cycle process is broken down into steps (generally 6-8 steps):
However, the steps involved can be combined or omitted based on the project scope. Having said
that, these are the core components recommended for all software development projects.
The software development life cycle helps improve and measures the entire software development
process by enabling step by step analysis of the process. Moreover, SDLC also helps developers
reduce costs, meet customer needs, and facilitates quick software delivery to help projects run
smoothly.
Throughout the years, various software development methodologies were introduced to capitalize
platform for developers to work together more efficiently as a team. It formalizes communication
Today, many IT companies agree that employing a software development methodology is crucial
for their team. However, the subject of which method is the best remains in question. That’s
because none exists. Each methodology has its pros and cons.
24
Getting the best out of one depends on the team structure, requirements, and goals. It’s also
The major and most popular methodologies are waterfall development method, Agile development
The waterfall method, sometimes called the classic life cycle, is the first-ever, simplest, and one
of the best SDLC methodology in the history of software development. The process of
development in this model is linear and all the phases are completed one by one, suggests a
systematic, sequential approach to software development that begins with customer specification
culminating in ongoing support of the completed software. As the name implies, like a waterfall,
• Requirements
• Design
• Implementation
• Deployment
• Maintenance
25
The Waterfall model does not permit going back to previous stages of development to rectify or
implement changes, each phase must be 100% complete before the next phase can start.
The linear nature of the waterfall development method makes it easy to understand and manage.
Projects with clear objectives and stable requirements can best use the waterfall method. Less
experienced project managers and project teams, as well as teams whose composition changes
frequently, may benefit the most from using the waterfall development methodology.
• The waterfall model is easy to explain (for clients and the developers)
26
3.4.1.2 CONS OF WATERFALL DEVELOPMENT METHODOLOGY
The waterfall development method is often slow and costly due to its rigid structure and tight
controls. These drawbacks can lead waterfall method users to explore other software development
methodologies.
• Not suitable for the projects where requirements are at a moderate to high risk of changing.
So, risk and uncertainty are high with this process model.
• Quick development
Rapid application development (RAD) is a condensed development process that produces a high-
quality system with low investment costs. This RAD process allows developers to quickly adjust
27
The RAD (Rapid Application Development) Model is based on the combination of iterative and
prototyping model and has no or minimum planning involved. RAD is again amongst the best
SDLC methodology for business. The required primary data in this model is crated through
The functional modules in the RAD model essentially build parallelly to the prototype and are then
integrated to come up with the final product quickly. This SDLC analysis designs the software,
build and test phases into a series of short, iterative development cycles.
The rapid application development method contains four phases: requirements planning, user
design, construction, and cutover. The user design and construction phases repeat until the user
Rapid application development is most effective for projects with a well-defined business
objective and a clearly defined user group, but which are not computationally complex. RAD is
especially useful for small to medium projects that are time sensitive.
28
More benefits are;
• Higher productivity
• Quick development
• Reusable components
Rapid application development requires a stable team composition with highly skilled developers
and users who are deeply knowledgeable about the application area. Deep knowledge is essential
in a condensed development timeline that requires approval after each construction phase.
Organizations that don’t meet these requirements are unlikely to benefit from RAD.
• Modularized systems
• Design-based projects
29
• Projects with automated code generating functionality
centers on organizational change that enhances collaboration between the departments responsible
for different segments of the development life cycle, such as development, quality assurance, and
operations.
testing, deployment, and monitoring. A competent DevOps lifecycle is necessary to build superior
The DevOps approach embraces continuous innovation, agility, and scalability to build, test,
consume, and evolve software products. It promotes a culture of experimentation, feedback, and
constant learning to reinvent products, services, and processes. However, to implement DevOps,
a proper understanding of different phases of the DevOps lifecycle is crucial. To deliver faster
results, developers must be fully aware of all the different phases of the DevOps lifecycle. If they
are not, the entire development process can become complex and time-consuming.
30
3.4.3.1 PROS DEVOPS DEVELOPMENT METHODOLOGY
DevOps is focused on improving time to market, lowering the failure rate of new releases,
shortening the lead time between fixes, and minimizing disruption while maximizing reliability.
everything happens smoothly and reliably. Companies that use DevOps methods benefit by
significantly reducing time to market and improving customer satisfaction, product quality, and
• Greater automation
• Greater innovation
• Some industries have regulations that require extensive testing before a project can move
production.
• Some quality attributes require human interaction, which slows down the delivery pipeline.
• Collaborative development
The Agile software development methodology is the structured series of stages that a product goes
through as it moves from beginning to end. It contains six phases: concept, inception, iteration,
In an agile method of software development, the project is divided into small subparts and is
delivered in iterations. The subtasks are divided into time frames to serve working functionality
with each build. As a result, the final product has all the required features.
Teams use the agile development methodology to minimize risk (such as bugs, cost overruns, and
changing requirements) when adding new functionality. In all agile methods, teams develop the
software in iterations that contain mini-increments of the new functionality. There are many
different forms of the agile development method, including scrum, crystal, extreme programming
32
3.4.4.1 PROS OF AGILE DEVELOPMENT METHODOLOGY
The primary benefit of agile software development is that it allows software to be released in
iterations. Iterative releases improve efficiency by allowing teams to find and fix defects and align
expectation early on. They also allow users to realize software benefits earlier, with frequent
• Quick development
Agile development methods rely on real-time communication, so new users often lack the
documentation they need to get up to speed. They require a huge time commitment from users and
are labor intensive because developers must fully complete each feature within each iteration for
• The team can sometimes loose focus due to overwhelming change requests.
• Documentation takes a back seat in Agile, which can be a problem later on in development.
• Agile focuses on discussions and feedback, which can be too time-consuming for the team.
• Due to its non-structured approach, Agile requires experienced developers who can work
independently
33
3.4.4.3 BEST FOR
• It works best to implement the additional ideas as you learn more about the market needs
• Suitable for team of developers that are highly-independent and comfortable working in a
The Agile Development model is suitable for this project, because Agile relies on a continuous,
Considering we are on an Agile project; the team does not attempt to develop all features at once.
Instead, the team assigns a smaller subset of features that is guided by our scope to each sprint.
That way, the team have more time to perfect those items before integration. Furthermore, agile
copies to a shared repository several times a day) gives our team the chance to test issues daily and
address them immediately. Working on a product in small incremental releases ensures that each
Below are more reasons as to why we selected the Agile Methodology for this project;
• Reduced Technical Debt: with this methodology it helps keep technical debt to a minimum.
Any defects, feature changes or other maintenance tasks are added to what is known as a
product backlog. The team reviews the backlog during each sprint planning session to
determine what to address next. Thus, each sprint is a new opportunity to fix defects along
34
• Adapt to Change Quickly and Easily: Considering our experience with developing this type
of system, a lot of changes can creep in during the process, Agile methodology does not just
only let us adapt to these changes, but encouraged us to embrace the practice.
• Minimize Risk: Using Agile, the team get feedback almost daily and can act on that feedback
track and allows us to adjust almost immediately. Also, because sprints are customer-focused,
the team can be sure they are producing value at every release.
• User focused Testing: Agile is about more than just adapting to change. It is about delivering
what is most important to the customer. As such, the product owner works closely with the
team to help them gain a clear understanding of what is needed, which fortunately in this case
happens to be around a domain that we are very much familiar with. In Agile software
development, user requirements are represented as “user stories.” These stories define an
action that provides value to the customer. The concept of user stories is a stark contrast to the
35
CHAPTER FOUR
4.1 INTRODUCTION
System Analysis and design is a phase or approach in software engineering that developers use to
evaluate particular situations and develop ways to improve them through more optimal methods.
System Analysis is one of the important phases of system development life cycle. This phase
includes requirement gathering and understanding the functional and non-functional requirements
of the proposed system. Similar type of system is analysed. Available design options explained,
and justification for using the Structured System Analysis and Design Methodology and high-level
This Identifies detailed requirement gathering and fact-finding techniques are discussed.
Analysing an ongoing system and requirements analysis for the proposed system is included.
Specific hardware and software requirements are analysed and listed. At the design view, the
analysed requirements are converted into graphical form and drawn up Entity Relationship
Diagram (ERD), High-level architecture diagram, Use case diagram, Sequential diagram and class
diagram.
In this phase of our project, we applied skills that have been developed by experienced software
engineers on how to collect the needed data from the right sources and we were able to extract the
needed requirements for our system development. Some of these skills involves communicating
with the client, which in our situation we served as developers and also acted in the capacity of the
client. We asked questions that we will expect a client of such system to ask and had them recorded
as use cases. We are aware of how vital the requirement gathering phase is to the whole
36
development cycle and if not handled carefully can be negatively impactful to the entire success
of the project. So, the following are the techniques we applied in coming up with the requirements
• Research on similar project: Similar projects were looked into, we searched websites that
advertise job openings and studied their system processes and procedures, we created profiles
for both Employer and Jobseeker in these platforms which gave us insight and understanding
of what each dashboard offers. We also studied some online job portal systems, with the help
of articles and blogs. The knowledge gathered helped with our analysis which was held on
round table discussions which involves constructive argument and convincing on the
• Interviews: Interview is one of the flexible solutions to gain domain knowledge, we utilized
this tool to gain domain knowledge on recruitment process by asking the colleague university
students and job seekers regarding interested field of current and future job market.
• Observing and Monitoring: Observing and monitoring how human resource departments
from few local institutions are doing their recruitment processes. Reading local newspapers
The gathered requirements needed to be validated and analysed for clarity. Requirement is very
obvious to meet a goal. Requirements have effect on the project scope and the project cost.
Requirements were derived and analysed with tool like use case and managed with the help of the
product backlog tool associated with the scrum methodology. These tools help us identify all
actors, define the system boundaries and functionalities of all respective actors of the system.
37
4.3.1 ACTORS
• Recruiter/Employer: The actor that advertises and offers job opportunities to the jobseeker
• Jobseeker/Employee: The actor that searches and applies for jobs that are advertised by the
recruiter.
38
4.4 ANALYSIS OF CURRENT AND ONGOING SYSTEMS
Before initializing system design task, it is essential to evaluate the current process of the system.
This section analyses the manual or traditional method and some technology base systems that
currently operates in Sierra Leone. It clearly analyses how a typical recruiting process works.
The traditional or manual recruitment refers to old fashioned or all method of recruiting that makes
no use of technology. Analyses of this method of recruiting or job seeking requires that we do the
Recruiter or Employer: This actor usually advertises vacancies from their institutions on local
newspapers or air on mass media slots, sometimes they advertise by internal and external memos,
they usually state requirements and methods for application from applicants.
Once applications have been received during the stated period, they usually analyse and pick out
the most suitable and contact them for the next phase of the process which can sometimes be an
Jobseeker or Employee: This actor usually gets information on available vacancies from
advertisement placed on newspapers or on radio or television advert slots or more often by word
of mouth from insiders or from someone who might have come across the advertisement.
They are usually sent in application letters and their resume, if found to be suitable by the recruiter
they are then contacted by the potential employer for continuation on the recruitment process
39
4.5 REQUIRMENTS FOR THE NEW SYSTEM
The requirements for our proposed system were derived, gathered and categorized. This section
will outline all functional and non-functional requirement of the system and also recommended
User Registration
Job post
• Relevant candidate name list will be display for every skill search.
Searching
• Password change.
• Forgot password.
• Interview schedules.
40
4.5.2 NON-FUNTIONAL REQUIREMENTS
Performance: Website loading speed and optimize script deliver better usability for even ordinary
user. This requirement will ensure that the Job Portal will always be at optimal performance,
better User Interface (UI) design and User Experiences (UX). Users should be at ease and find the
functionalities easy to use before a system is considered as usable. Usability can be achieved when
the system provides the users with easy learnability and memorability of how the system works.
In that case, user has flexibility to use this website to complete their task. the online job portal
Availability: This type of requirement is stated for the system to be always available at all times
to perform its assigned functionalities. This simply means Online job portal is to be available 24x7
Operability: The system should be operable on different operating systems such as Windows,
Linux, Mac OS and any other operating system capable of running a web browser.
Responsiveness: Systems are said to be responsive when their design and development correspond
to the users’ work environment. The online job portal must be flexible and can respond to users’
requests and actions in a reasonable time. System is designed for all device compatibility and
responsive design using bootstrap for all the browsers and devices.
Privacy: Users might have facility to protect their data by setting up some privacy option. User
Reliability: If there is no deadline for a job post and that post is available on web all the time,
candidate may not trust the content. Always all the job post content must be accurate and reliable.
41
4.5.3 HARDWARE AND SOFTWARE REQUIREMENTS
These are requirements that were specified for the development environment.
Hardware Specifications
Software Specifications
42
4.6 SYSTEM DESIGN
The Software design is focused on visualizing a way to fulfil the expected solution or performance
of the system required by the users. For the purpose of this development the Researchers chose to
• Object-Oriented Design.
• Function-Oriented Design.
• Structure-Oriented Design.
In the object-oriented design method, the system is viewed as a collection of objects (i.e., entities).
The state is distributed among the objects, and each object handles its state data. This technique
enables the implementation of a software solution based on the concepts of objects. The OOD
(Object-Oriented Design) process takes the conceptual systems model, use cases, system relational
model, user interface (UI) and other analysis data as input from the OOA (Object-Oriented
Analysis) phase. This is used in OOD to identify, define and design systems classes and objects,
43
Objects: All entities involved in the solution design are known as objects. For example, person,
banks, company, and users are considered as objects. Every entity has some attributes associated
class defines all the attributes, which an object can have and methods, which represents the
Messages: Objects communicate by message passing. Messages consist of the integrity of the
target object, the name of the requested operation, and any other action needed to perform the
Encapsulation: Encapsulation is called an information hiding concept. The data and operations
are linked to a single unit. Encapsulation not only bundles essential information of an object
together but also restricts access to the data and methods from the outside world.
Inheritance: OOD allows similar classes to stack up in a hierarchical manner where the lower or
sub-classes can import, implement, and re-use allowed variables and functions from their
immediate super classes. This property of OOD is called an inheritance. This makes it easier to
define a specific class and to create generalized classes from specific ones.
Polymorphism: OOD languages provide a mechanism where methods performing similar tasks
but vary in arguments, can be assigned the same name. This is known as polymorphism, which
allows a single interface is performing functions for different types. Depending upon how the
44
4.6.2 FUNCTION ORIENTED DESIGN
Function-Oriented Design is an approach to software design where the design is decomposed into
a set of interacting units where each unit has a clearly defined function.
Design Notations are primarily meant to be used during the process of design and are used to
represent design or design decisions. For a function-oriented design, the design can be represented
Data Flow Diagram (DFD): A data flow diagram (DFD) maps out the flow of information for
any process or system. It uses defined symbols like rectangles, circles and arrows, plus short text
labels, to show data inputs, outputs, storage points and the routes between each destination.
Data Dictionaries: Data dictionaries are simply repositories to store information about all data
items defined in DFDs. At the requirement stage, data dictionaries contain data items. Data
45
dictionaries include name of the item, aliases (other names for items), description/purpose, related
Structure Charts: It is the hierarchical representation of system which partitions the system into
black boxes (functionality is known to users but inner details are unknown). Components are read
from top to bottom and left to right. When a module calls another, it views the called module as
Pseudo Code: Pseudo Code is system description in short English like phrases describing the
function. It uses keyword and indentation. Pseudo codes are used as replacement for flow charts.
Structured design breaks a system down into functional modules. Each module can be described
system functionality.
solution. It is basically concerned with the solution design. Benefit of structured design gives better
understanding of how the problem is being solved. Structured design makes it simpler for designer
Structured design is mostly based on ‘divide and conquer’ strategy where a problem is broken into
several small problems and each small problem is individually solved until the whole problem is
solved. The small pieces of problems are solved by means of solution modules. Structured design
emphasis that these modules be well organized in order to achieve precise solution. These modules
46
are arranged in hierarchy. They communicate with each other. A good structured design always
A good structured design has high cohesion and low coupling arrangements.
Considering the available information and requirements for our system, we were able to derive
solid requirements by dividing the system into modules for each identified actor, with all the good
available design approached we find structure-oriented design to be the most suitable for this
project.
Structured design provides a means for understanding complex problems and evaluating system
and usable documentation is produced. This design has a lot of existing CASE tools which can
Below are some of the key reasons and justification for using structure-oriented design;
• This design approach decreases the complexity of the program by breaking it down into smaller
logical modules.
• This design method allows us to divide, develop, and code modules simultaneously.
• Considering the common features between our pages, it permits reusability, which simply
means it also allows common functions to be written once and then used in all the programs
needing it.
47
• It gave us the flexibility to do modification and amendments to individual modules which in
• It is easier to name modules in such a way that they are easy to find in the documentation and
consistent.
48
4.8 PROPOSED SYSTEM DESIGN
4.8.1 INTRODUCTION
In the System design phase, designed methodology processed using unified modelling language
(UML) and rendered UML diagram using source code to implement the User-friendly interface.
PHP script and MySQL database is used to develop back-end and Twitter Bootstrap framework is
ER Diagram
Figure 4.3 ER Diagram
49
4.8.3 NORMALIZATION
Tbl_user
MemberId(PK)
First_name
Last_name
Gender
DOB
Email
Address
Experience
Reference
Academic
Professional
Language
Referee
Training
Attachment
Tbl_Attachment
Tbl_Academic Tbl_Training
Id (Pk)
Id (Pk) Id (Pk) Issuer
Institution Institution Title
Course Certificate attachment
Transcript timeframe
Certificate
Timeframe
50
4.8.4 HIGH LEVEL ARCHITECTURE DIAGRAM
User can view all the job post; User can search for any job category from any district
Functionalities
Already
Registered
user?
No
Yes
Register
Login
Jobseeker/Employee
Recruiter/Employer
▪ Manage company profile
▪ Update information
▪ View Jobseekers
▪ Post jobs ▪ Search for available
▪ Manage posts jobs
▪ View employer
information
▪ Apply for job
51
4.8.5 UNIFIED MODELLING LANGUAGE (UML) DIAGRAM
UML is one of the methodologies used in system analysis to understand, clarify and organize
system requirements. Use case diagram is used in UML. UML clearly shows various user
activities in the system that every user can perform and functionalities. Users call in use case
diagram as actors.
Overview Jobseeker/Employee to apply for a job, Check the status of applied job
Preconditions
Jobseeker/Employee must register with the system.
Post conditions
1. Jobseeker/Employee can apply for a job only once.
2. Receive update on application status.
Flow of events
1. Jobseeker/Employee must login
2. Jobseeker/Employee apply for the available job by clicking a button.
3. Jobseeker/Employee will get notified via email once invited for the interview.
52
Use Case Recruiter/Employer registration
Actors Recruiter/Employer
Overview Recruiter/Employer post a job, receive application job
Preconditions
Recruiter/Employer must register with the system.
Post conditions
1. Recruiter/Employer can post and manage jobs.
2. Receive update on posted jobs from applicant status
Flow of events
1. Recruiter/Employer must login
2. Recruiter/Employer can post a job by entering required relevant information regarding
the job and post with the click of the button.
3. Recruiter/Employer will get notified via email about applications on posted jobs.
4.8.6 UML USE CASE DIAGRAM
<<Initiate>>
Figure 4.5 UML diagram
<<Participant>>
System
Verify password
<<Initiate>> View portal &
Register
<<Initiate>> <<Include>>
<<Initiate>> <<Initiate>>
Login
<<Initiate>>
<<Initiate>> Manage Recruiter/Employe
Jobseeker/Employ Manage <<Initiate>>
Profile
ee <<Initiate>> Profile
<<Initiate>>
<<Extend>>Post Job <<Initiate>>
<<Initiate>> Apply
job Manage
job
Search
53
4.8.7 SEQUENTIAL DIAGRAM
View portal
Registration
Registration
Login
Login
Manage profile
Apply
Job Notification
Notification
54
4.5 SYSTEM LAYERS
The proposed System is designed on a 3-tier architecture using the web-based server/client concept
for user interaction. Functional process logic, data storage and data access are developed and
The Database Layer: The proposed system's database will be implemented using MySQL Server
8.0. This layer provides high connectivity and availability, plus, it provides system developers with
the ability to manage and administer their databases easily, especially using the Graphical User
create their own stored procedures or use built-in system ones. Using MySQL Server as a
Relational Database Management System (RDBMS) of the entire solution gives the user the ability
to create Server-Side Cursors to iterate programmatically through different table records and
manipulate them row by row. At development time, developers may need to process resulting
records at the server without the need to use another programming language, i.e. by means of the
The Application Layer: contains the User Interface (UI), Business Rules, and the Data-Access
Components. In this system, all the accessing data code and business rules implementation was
developed using PHP; the code was written in files; each contains a feature or function connected
to a module that handle the operations of web forms designed using PHP.
The Client Layer: The simplest client must have a PC or PDA or mobile phone that connects to
the internet that runs an operating system with a web browser installed. Codes were tested on all
popular browsers; they work very well on such browsers and the support of XML or HTML5. As
a web-based application, processing is handled by the hosting server and the client end script, so
the portal is accessible from any platform that supports web browsing.
55
CHAPTER FIVE
5.1 INTRODUCTION
This Chapter presents results in terms of the key features of the system that we have implemented
using PHP MySQL based framework called Laravel which is an open-source framework that can
be downloaded on the internet. Sierra Jobs as we titled our portal is for Sierra Leone job community
We will provide in-depth evaluation of how the system works. show how thorough testing had
been carried out, the results achieved and the descriptive explanations on how it was achieved.
Our requirement derivation and analysis with the help of the numerous tools, we were able to
segment our system into two modules based on the actors identified. Anyone can access the system
but users of the system can only do so in two (2) roles, Recruiter/Employer or Jobseeker/Employee.
this different user roles have different access and functions within the system.
56
5.2 SYSTEM OVERVIEW
This section aims to present pictorial representation of what various windows and elements of the
57
5.2.3.1 REGISTRATION AS EMPLOYER
5.2.4 LOGIN
58
5.2.5 JOB LISTING
59
5.2.7 EMPLOYEE LISTING
60
5.2.9 EMPLOYEE DASHBOARD
• Apache Web Server version 2.4.53: Apache web server is locally used by XAMPP control
panel and also used online Linux web server for online job portal application. Apache is one of
the best web server platforms in the world. Apache is an open-source software that was
incorporated with eight contributors in February 1995. Most of the websites around the world
• PHP version 8.1.6: Hypertext Preprocessor (PHP) is an open-source scripting language used
in wider range of website development. PHP scripts are processed using PHP interpreter and
rendered into HTML document on the web server. After the render, HTML file will be sent to
browser through http. HTML code can embed into PHP and vice versa. PHP scripting is a
61
• MySQL Server version 8.0.30: MySQL is a popular relational database management system.
It is a widely used database management system for many available open-source web
applications. PhpMyAdmin is the most popular graphical user interface tool for MySQL
database.
• Visual Studio Code Editor version 1.70.2: Visual Studio Code is a streamlined code editor.
This software is easy to use for debugging, task running and for version control purpose during
the development stage. This is a very lightweight software. Visual Studio Code editor does not
• Notepad++ version 8.4.5: Notepad++ text editor supports debugging, code editing with several
languages including PHP, HTML, CSS and JavaScript. Notepad++ is a lightweight editor.
62
5.4 SYSTEM TESTING
A famous quote from William Howden says “Testing is the unavoidable part of any responsible
effort to develop a software system”. In software engineering, auditing and validation of the
software system is called software testing, which happens to be one element of a broader topic that
is often referred to as verification and validation (V&V). during this phase we performed set of
tasks that verified that our system correctly implemented all specified functions and validated that
our system has been built based on requirements. In other words, verification ensures that we are
building the system the right way and validation ensures that we are building the right system. The
system testing will provide an objective overview of how the system works from a user and
developers perspective.
• To ensure the efficiency of the system by checking the quality of the system.
Otherwise refers to behavioral testing, black box testing is a user’s point of testing the system
functionalities to view how well the system works. This test checks the performance of the system
and if its behavior is corresponding to specify required triggered actions. But a function can only
behave as expected when value is inputted in order to get output value. An example being the
login, where an email address and password input is required to provide an output where users can
access their accounts. The black box testing involves the functional testing which is divided into
sub levels.
63
5.6.1 FUNCTIONAL TESTING
This test focuses on the functional requirements of the system in which we compare the system
functional responses to that of the expected output. The following are the different level of
functional testing:
We tested a small component of the system to see how it works. With our design methodology,
we were able to perform unit testing after every sprint with the available prototype. After writing
a small set of code we ran it and tested the prototype to verify if it is error free and works properly.
The first part of the system that was tested for its functionality is the registration sector for both
recruiter and jobseeker. User registration (sign up) process is a basic functional requirement
process in the online job portal system. All jobseekers should enter their first name, last name and
valid email address along with and desired password to register with the system and recruiters
should enter their company name, company type, valid email address along with desired password.
It was tested with a valid email address and password input to verify the result. Other elements
and features of the system that were tested during this phase are as follows
• UI Testing: Front end is very important for web-based applications. The black box testing
offered the opportunity to test the user interface on numerous popular browsers and
• Browser Testing: considering our application is a web base application, Web browser level
competencies are highly recommended for any web applications. Application is tested on
different web browsers (Google Chrome, Firefox, Edge, Opera and etc.). Testing was also
Search Function: Search function is a preliminary task for Online Job Portal. Search box
64
function is created to search any category and by district.
The test scripts and test results of all the scenarios above are display in the Appendix of this
writeup.
This test was done to ensure that the different units of the system work properly when integrated
together. For example, after the login was developed, the dashboards for both recruiter/employer
and jobseeker/employee. Other features that are specific to each module was also developed, so it
Considering the number of modifications and adjustments that every sprint brings with our design
approach, we had to perform regression testing. This testing involves re-testing the whole system
to verify that an update on the system does not alter or destroy the existing functionalities of the
system. It was a continuous testing process in order to prevent any error or negative result from
This test is done to verify that the end-product of the system is per the requirement, only then can
it be accepted for the intended end user. So, a Beta testing was performed by some employers and
our friends and classmates, the testers verifying how well the job portal works before we continue
development of the system with all its features and functionalities. We get to know that the actors
find the system to be very effective and easy to use and is also satisfied with its functionalities.
The test script and test results are shown in the appendix.
65
5.7 WHITE BOX TESTING
This type of testing is done by the developers to detect logical and design errors and faults in the
system development. The primary intent for doing the white box testing was to check the quality
of implementing the Online Job Portal. It was an important testing that required high understanding
of programming and implementation from the developers. We made sure to understand reasons
for some of the code bugs ups and worked hard to develop the system according to the detailed
design documented. The team did the following test to verify the quality of implementing such a
system:
It was done to ensure efficiency and optimal performance of the desired tasks that the users are
going to perform. It ensured that the capability of the online job portal to perform heavy tasks like
create user accounts, post jobs with all required details, create resumes, modify information and
The capability for the system to load pages and respond to request when tasks are performed with
varying conditions was presented with the desired outcome. Even though this test was performed
on a local server with relatively average specification we considered the response time to be
acceptable and can even work better and faster when and if hosted on a cloud platform.
We did a test to verify that our system allows concurrent users of the system simultaneously in
order to validate how well the system works with receiving multiple requests at the same time.
66
5.7.4 SECURITY TESTING
This test proved to be efficient as the system maintained its security despite being used by different
individuals. We did authentication testing for the specified users before accessing their personal
The system is also tested for easy usability making sure that the interface is good and well-defined
67
CHAPTER SIX
6. INTRODUCTION
This chapter summarizes the dissertation with a critical evaluation of the system, lessons learnt
6.1 SUMMARY
Our research examined the constraints and problems faced by the job community within the
country when it comes to the old or traditional methods of recruiting and job seeking within
country. Having highlighted the problems and established the need for a better and modern system,
the researchers worked tirelessly to develop a system that will cater for the general needs when it
comes to job seeking and recruiting. And to get a better understanding of what our users need, we
performed requirement gathering/elicitation and had deep observation on the already existing
systems and utilized the knowledge we gained to develop a system that meets the required needs
We also conducted a literature review on how a typical Online Job Portal works, related studies in
the past that prepared us to face similar challenges and opportunities when developing our system.
Selecting the suitable SDLC model after reviewing the different models helped a lot in our
development process. We did numerous testing using the white box and black box testing approach
to match the system to the derived users’ requirement. The testing phase was an essential process
that was required for the smooth running of the system that aligns with the end users’ needs. We
were able to accomplish our goal of developing the online job portal with everything highlighted
above and with the guidance of the software requirements specifications (SRS) document.
68
6.2 LESSONS LEARNT
Development and Implementation of such a system brings gain of knowledge in several aspects.
Some of them are requirement gathering, requirement analysis and system analysis design, project
planning, frontend design and backend development, software testing, organizing infrastructure
and prepare documentation. This is a full stack development process which is equivalent to process
roles of a project manager, technical lead, system analyst, business analyst, software developer,
quality assurance tester, network administrator, content writer and graphic & user interface
designer. The self-confidence and commitment to learn helps more to complete the project
successfully on time. It has been a great challenge for this team and it has been satisfactory on
personal level for this team. It was a great opportunity to not just learn but practicalized some of
the things we have been learning over the years, we have expanded on our knowledge on the
programming PHP and PHP Framework, HTML and CSS using Bootstrap, JavaScript, MySQL
and many other important new technologies to lead the way to learn.
The online job portal is a major improvement and a robust tool for our local job community as it
delivers modern ways of recruiting and job seeking, we have developed a system that requires less
resources for job advertisement and job search and covers larger municipality as compared to other
forms of job advertisement, a system that provides a rich jobseeker database for potential
employers. This system provides a platform for easy interaction between recruiters and jobseekers,
also it provides the online presence for institutions by letting companies not only post jobs but also
69
6.4 LIMITATIONS OF THE STUDY
Though the system is completed based on our objectives, there are other features which we cannot
achieve due to time constraints and technical know-how. Features like setting up interviews or
Considering it a fairly new technological tool for this part of the world, we were faced with
numerous other challenges for both our research and developing the system. These constraints
ranges from our research work, requirement gathering, developing and testing of the system. The
• Coming up with the right requirement was a difficulty considering we also had to role play the
• Our design method requires a lot of testing, ensuring the system is error free and flawless
• The time required for completion of the entire project was short considering the amount of
70
6.5 CONCLUSION
It is evident in our limitation that not all features are implemented, but this online job portal
provides the basis as a tool for modern method of the entire recruitment circle for all stakeholders
of the job community in and beyond Sierra Leone. There is no doubt that improvement of
Developed online job portal system is a stable system running on PHP framework platform and it
has scalable schedule to do changes with its MVC architecture. Any freshman can quickly learn
The main functions that, needed for online job portal systems are mentioned as follows. ‘User
Registration’ is required for the very first access for job seekers and the employers. After the
registration, an employer can ‘post new vacancies. The job seeker can be able to view and apply
for jobs which are sent automatically. After shortlisting the applications, the employer can be able
to ‘invite candidates’ to the interview by emails or using the other contact information included on
the resume. Employers and job seekers can be kept in touch with the system with email
71
6.6 RECOMMENDATION
Some functions need to be included in the system to enhance the portal. Though they are not most
prominent ones but they may give a more attractive look to the system. Some of the recommended
• Create a section on the home page for advertisement, once the portal has grown in number of
users, it can be an attractive place for firms and individual to market goods and services, the
• Online payment for goods and services posting: Online payment method for every marketing
• Add search bars for on both the employee and employer pages
• We recommend the application hosted on a cloud server, the mobile view feature that allows
users to access the system through mobile phone requires a live and running server.
72
REFRENCES
2. Dorn, J. and Naz, T., 2007. Integration of Job Portals by Meta-search. Enterprise
<https://link.springer.com/chapter/10.1007/978-1-84628-858-6_44#citeas> [Accessed 8
September 2022].
3. Gangl, M., 2003. The Only Way is Up?: Employment Protection and Job Mobility among
Recent Entrants to European Labour Markets. European Sociological Review, [online] 19(5),
2022].
4. Galanaki, E., 2002. The decision to recruit online: a descriptive study. Career Development
5. Howden, W., 1981. Software Testing and Validation Techniques. 2nd ed. New York: IEEE
6. Jones, S., 2022. Here’s Why Traditional Hiring Methods No Longer Work. [online] uplers.
7. Khan, M., 2022. which SDLC model is the best for your business. [Blog] rnftechnologies,
September 2022].
73
8. Mochol, M., Wache, H. and Nixon, L., 2007. Improving the Accuracy of Job Search with
10. QualityLogic. 2022. A Smarter Approach to Software & QA Testing Services.. [online]
11. Rosita, M. and Nadianatra, M., 2007. E-recruitment practice: pros vs. cons. [online] 1.
15 September 2022].
12. Scientist, G., 2022. Structured Programming- Advantages & Disadvantages. [online] GK
September 2022].
14. Sulaiman, N. and Burke, M., 2009. A case analysis of knowledge sharing implementation
15. Team, S., 2022. Top 4 software development methodologies. [online] Application Security
74
16. Techopedia.com. 2022. What is Object-Oriented Design (OOD)? - Definition from
<https://www.tutorialspoint.com/software_engineering/software_design_strategies.htm>
75
APPENDICES
APPENDIX A: USER MANUAL
To Register
• Click on register at the menu bar
• Select actor type (Employer or Employee) from the pop-up window
• Enter all the required details
• Click on Register
To Post a Job
• Login with an Employer account
• Click on Post A Job from the employer dashboard
• Enter all the required details on the job
• Click on Post your Job to publish
To Apply for a Job
• Login with Employee account
• Search or scroll to a job from the job list
• Click on view job to view details and requirements on the Job
• Click on the Apply for this job
76
Test cases used to test Registration/Login functions
User registration (sign up) process is a basic functional requirement process for an online job
portal. Our system implemented this functionality and used the test below;
1 New user tries to register with Form validation rules reject system Success
blank First name, Last name input and display error
and email address
2 New user registration details Adds user details with proper Success
with valid email address and validation, and update database
other information
3 User tries existing email Return login page again to login Success
address to register and validation error occur
6 User tries blank username and Form validation sends error Success
blank password to login message and login failed
7 User tries with correct username Form verification failed and login Success
but wrong password rejected
8 User tries with wrong username Form verification failed and login Success
and correct password rejected
9 Correct email and password Form verification success and login Success
success
77
Test cases used to test on search function
78
APPENDIX C: SOURCE CODES
The source code for this system is at the GitHub account
https://github.com/ramadanbah/OnlineJobPortal.git
Home page
Figure Appendix C1.1
<!doctype html>
<html lang="en">
<?php
include 'constants/settings.php';
include 'constants/check-login.php';
?>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
79
</head>
<style>
.autofit2 {
height:70px;
width:400px;
object-fit:cover;
}
.autofit3 {
height:80px;
width:100px;
object-fit:cover;
}
</style>
<body class="home">
<div class="container-wrapper">
<header id="header">
<div class="container">
<div class="logo-wrapper">
<div class="logo">
<a href="./"><img src="images/logoMRB.png" alt="Logo" /></a>
</div>
</div>
<li>
<a href="./">Home</a>
</li>
<li>
<a href="job-list.php">Job List</a>
</li>
<li>
<a href="employers.php">Employers</a>
</li>
<li>
<a href="employees.php">Employees</a>
</li>
<li>
<a href="contact.php">Contact Us</a>
</li>
</ul>
</div>
<div class="nav-mini-wrapper">
<ul class="nav-mini sign-in">
<?php
if ($user_online == true) {
print '
<li><a href="logout.php">logout</a></li>
<li><a href="'.$myrole.'">Profile</a></li>';
}else{
print '
<li><a href="login.php">login</a></li>
<li><a data-toggle="modal"
href="#registerModal">register</a></li>';
80
}
?>
</ul>
</div>
</div>
<div id="slicknav-mobile"></div>
</nav>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-
hidden="true">×</button>
<h4 class="modal-title text-center">Create your account for free</h4>
</div>
<div class="modal-body">
</div>
</div>
</div>
</header>
<div class="main-wrapper">
<div class="main-search-form-wrapper">
<div class="form-holder">
<div class="row gap-0">
81
$result = $stmt->fetchAll();
foreach($result as $row)
{
?>
<option style="color:black"
value="<?php echo $row['category']; ?>"><?php echo $row['category']; ?></option>
<?php
}
$stmt->execute();
}catch(PDOException $e)
{
?>
</select>
</div>
foreach($result as $row)
{
?>
<option style="color:black"
value="<?php echo $row['country_name']; ?>"><?php echo $row['country_name']; ?></option>
<?php
}
$stmt->execute();
}catch(PDOException $e)
{
?>
</select>
</div>
</div>
</div>
<div class="btn-holder">
<button name="search" value="✓" type="submit"
class="btn"><i class="ion-android-search"></i></button>
</div>
</form>
</div>
</div>
</div>
82
<div class="container">
<div class="row">
<div class="col-sm-4">
<div class="icon">
<i class="flaticon-line-icon-set-
magnification-lens"></i>
</div>
<div class="content">
<h5>01 / Search for jobs</h5>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="icon">
<i class="flaticon-line-icon-set-
pencil"></i>
</div>
<div class="content">
<h5>02 / Apply a Job</h5>
</div>
</div>
</div>
<div class="col-sm-4">
<div class="icon">
<i class="flaticon-line-icon-set-
calendar"></i>
</div>
<div class="content">
<h5>03 / Start Working</h5>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="section-title">
<br><h2>Random Companies</h2>
</div>
83
</div>
</div>
<?php
require 'constants/db_config.php';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM tbl_users WHERE role = 'employer' ORDER BY rand() LIMIT 8");
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row) {
$complogo = $row['avatar'];
?>
<div class="col-xss-12 col-xs-6 col-sm-4 col-md-3">
<div class="top-company">
<div class="image">
<?php
if ($complogo == null) {
print '<center><img class="autofit2" alt="image" src="images/blank.png"/></center>';
}else{
echo '<center><img class="autofit2" alt="image"
src="data:image/jpeg;base64,'.base64_encode($complogo).'"/></center>';
}
?>
</div>
<h6><?php echo $row['first_name'];?></h6>
<a target="_blank" href="company.php?ref=<?php echo $row['member_no']; ?>">View
Company</a>
</div>
</div>
<?php
}}catch(PDOException $e)
{
?>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="section-title">
<h2>Latest Jobs</h2>
</div>
</div>
</div>
<div class="row">
84
<div class="col-md-12">
foreach($result as $row) {
$jobcity = $row['city'];
$jobcountry = $row['country'];
$type = $row['type'];
$title = $row['title'];
$closingdate = $row['closing_date'];
$company_id = $row['company'];
$post_date = date_format(date_create_from_format('d/m/Y',
$closingdate), 'd');
$post_month = date_format(date_create_from_format('d/m/Y', $closingdate), 'F');
$post_year = date_format(date_create_from_format('d/m/Y', $closingdate), 'Y');
if ($type == "Freelance") {
$sta = '<div class="job-label label label-success">
Freelance
</div>';
}
if ($type == "Part-time") {
$sta = '<div class="job-label label label-danger">
Part-time
</div>';
}
if ($type == "Full-time") {
$sta = '<div class="job-label label label-warning">
Full-time
</div>';
}
?>
<a class="recent-job-item clearfix" target="_blank" href="explore-
job.php?jobid=<?php echo $row['job_id']; ?>">
<div class="GridLex-grid-middle">
<div class="GridLex-col-5_xs-12">
<div class="job-position">
<div class="image">
<?php
if ($complogo == null) {
print '<center><img alt="image" src="images/blank.png"/></center>';
}else{
echo '<center><img alt="image" title="'.$thecompname.'"
width="180" height="100" src="data:image/jpeg;base64,'.base64_encode($complogo).'"/></center>';
}
?>
</div>
<div class="content">
<h4><?php echo "$title"; ?></h4>
<p><?php echo "$thecompname"; ?></p>
</div>
</div>
</div>
<div class="GridLex-col-5_xs-8_xss-12 mt-10-xss">
<div class="job-location">
<i class="fa fa-map-marker text-primary"></i> <?php echo
"$jobcountry" ?></strong> - <?php echo "$jobcity" ?>
85
</div>
</div>
<div class="GridLex-col-2_xs-4_xss-12">
<?php echo "$sta"; ?>
<span class="font12 block spacing1 font400 text-center">Due - <?php
echo "$post_month"; ?> <?php echo "$post_date"; ?>, <?php echo "$post_year"; ?></span>
</div>
</div>
</a>
<?php
}
}catch(PDOException $e)
{
}
?>
</div>
</div>
</div>
</div>
</div>
<footer class="footer-wrapper">
<div class="main-footer">
<div class="container">
<div class="row">
<div class="row">
<div class="footer-about-us">
<h5 class="footer-
title">About Sierra Jobs</h5>
<p>Sierra Jobs is a
job portal, online job management system developed by Mohamed .L.Bah, Chernor M.S. Jalloh, & Mamadu A. Barrie as their dissertation project class of
21/22.</p>
</div>
</div>
</ul>
86
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="bottom-footer">
<div class="container">
<div class="row">
</div>
<ul class="bottom-footer-menu">
<li><a >Developed by L.Bah, Chernor,
Leigh</a></li>
</ul>
</div>
</div>
</div>
</div>
</footer>
</div>
</div>
<div id="back-to-top">
<a href="#"><i class="ion-ios-arrow-up"></i></a>
</div>
87
<script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/bootstrap-modalmanager.js"></script>
<script type="text/javascript" src="js/bootstrap-modal.js"></script>
<script type="text/javascript" src="js/smoothscroll.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.waypoints.min.js"></script>
<script type="text/javascript" src="js/wow.min.js"></script>
<script type="text/javascript" src="js/jquery.slicknav.min.js"></script>
<script type="text/javascript" src="js/jquery.placeholder.min.js"></script>
<script type="text/javascript" src="js/bootstrap-tokenfield.js"></script>
<script type="text/javascript" src="js/typeahead.bundle.min.js"></script>
<script type="text/javascript" src="js/bootstrap3-wysihtml5.min.js"></script>
<script type="text/javascript" src="js/bootstrap-select.min.js"></script>
<script type="text/javascript" src="js/jquery-filestyle.min.js"></script>
<script type="text/javascript" src="js/bootstrap-select.js"></script>
<script type="text/javascript" src="js/ion.rangeSlider.min.js"></script>
<script type="text/javascript" src="js/handlebars.min.js"></script>
<script type="text/javascript" src="js/jquery.countimator.js"></script>
<script type="text/javascript" src="js/jquery.countimator.wheel.js"></script>
<script type="text/javascript" src="js/slick.min.js"></script>
<script type="text/javascript" src="js/easy-ticker.js"></script>
<script type="text/javascript" src="js/jquery.introLoader.min.js"></script>
<script type="text/javascript" src="js/jquery.responsivegrid.js"></script>
<script type="text/javascript" src="js/customs.js"></script>
</body>
</html>
<!doctype html>
<html lang="en">
<?php
include 'constants/settings.php';
include 'constants/check-login.php';
?>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
88
<title>Sierra Jobs - Login</title>
if(document.getElementById('mymail').value == "")
{
alert("Please enter your email");
}else{
document.getElementById("data").innerHTML = "Please wait...";
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("data").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","app/reset-pw.php?opt="+str, true);
xmlhttp.send();
}
function reset_text()
{
document.getElementById('mymail').value = "";
document.getElementById("data").innerHTML = "";
}
</script>
</head>
<body class="not-transparent-header">
89
<div class="container-wrapper">
<header id="header">
<div class="container">
<div class="logo-wrapper">
<div class="logo">
<a href="./"><img src="images/logoMRB.png" alt="Logo" /></a>
</div>
</div>
<li>
<a href="./">Home</a>
</li>
<li>
<a href="job-list.php">Job List</a>
</li>
<li>
<a href="employers.php">Employers</a>
</li>
<li>
<a href="employees.php">Employees</a>
</li>
<li>
<a href="contact.php">Contact Us</a>
</li>
</ul>
</div>
<div class="nav-mini-wrapper">
<ul class="nav-mini sign-in">
<li><a href="login.php">login</a></li>
<li><a data-toggle="modal" href="#registerModal">register</a></li>
</ul>
</div>
</div>
<div id="slicknav-mobile"></div>
</nav>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-
hidden="true">×</button>
<h4 class="modal-title text-center">Create your account for free</h4>
</div>
<div class="modal-body">
90
</div>
</div>
</div>
</div>
</header>
<div class="main-wrapper">
<div class="breadcrumb-wrapper">
<div class="container">
<ol class="breadcrumb-list">
<li><a href="./">Home</a></li>
<li><span>Access your account</span></li>
</ol>
</div>
</div>
<div class="login-container-wrapper">
<div class="container">
<div class="row">
<div class="row">
<div class="modal-header">
<h4 class="modal-title text-center">Access your account</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>Email Address</label>
<input class="form-control" placeholder="Enter your email address" name="email" required type="text">
</div>
</div>
<div class="form-group">
<label>Password</label>
<input class="form-control" placeholder="Enter your password" name="password" required type="password">
</div>
</div>
91
<div class="col-sm-12 col-md-12">
<div class="login-box-link-action">
<a data-toggle="modal" onclick = "reset_text()"
href="#forgotPasswordModal">Forgot password?</a>
</div>
</div>
</div>
</div>
</div>
</form>
<div
id="forgotPasswordModal" class="modal fade login-box-wrapper" tabindex="-1" style="display: none;" data-backdrop="static" data-keyboard="false" data-
replace="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-
hidden="true">×</button>
<h4 class="modal-title text-center">Restore your forgotten password</h4>
</div>
<div class="modal-body">
<div class="row gap-20">
<div class="form-group">
<label>Email Address</label>
<input id="mymail" autocomplete="off" name="email"
class="form-control" placeholder="Enter your email address" type="email" required>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
92
</div>
</div>
Login Page
Figure Appendix C1.3
<!doctype html>
<html lang="en">
<?php
include 'constants/settings.php';
include 'constants/check-login.php';
?>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
93
<link rel="stylesheet" href="icons/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="icons/simple-line-icons/css/simple-line-icons.css">
<link rel="stylesheet" href="icons/ionicons/css/ionicons.css">
<link rel="stylesheet" href="icons/pe-icon-7-stroke/css/pe-icon-7-stroke.css">
<link rel="stylesheet" href="icons/rivolicons/style.css">
<link rel="stylesheet" href="icons/flaticon-line-icon-set/flaticon-line-icon-set.css">
<link rel="stylesheet" href="icons/flaticon-streamline-outline/flaticon-streamline-outline.css">
<link rel="stylesheet" href="icons/flaticon-thick-icons/flaticon-thick.css">
<link rel="stylesheet" href="icons/flaticon-ventures/flaticon-ventures.css">
if(document.getElementById('mymail').value == "")
{
alert("Please enter your email");
}else{
document.getElementById("data").innerHTML = "Please wait...";
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
document.getElementById("data").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","app/reset-pw.php?opt="+str, true);
xmlhttp.send();
}
function reset_text()
{
document.getElementById('mymail').value = "";
document.getElementById("data").innerHTML = "";
}
</script>
</head>
<body class="not-transparent-header">
<div class="container-wrapper">
<header id="header">
<div class="container">
<div class="logo-wrapper">
<div class="logo">
94
<a href="./"><img src="images/logoMRB.png" alt="Logo"
/></a>
</div>
</div>
<li>
<a href="./">Home</a>
</li>
<li>
<a href="job-list.php">Job List</a>
</li>
<li>
<a href="employers.php">Employers</a>
</li>
<li>
<a href="employees.php">Employees</a>
</li>
<li>
<a href="contact.php">Contact Us</a>
</li>
</ul>
</div>
<div class="nav-mini-wrapper">
<ul class="nav-mini sign-in">
<li><a href="login.php">login</a></li>
<li><a data-toggle="modal"
href="#registerModal">register</a></li>
</ul>
</div>
</div>
<div id="slicknav-mobile"></div>
</nav>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-
hidden="true">×</button>
<h4 class="modal-title text-center">Create your account for free</h4>
</div>
<div class="modal-body">
95
</div>
</div>
</div>
</div>
</header>
<div class="main-wrapper">
<div class="breadcrumb-wrapper">
<div class="container">
<ol class="breadcrumb-list">
<li><a href="./">Home</a></li>
<li><span>Access your account</span></li>
</ol>
</div>
</div>
<div class="login-container-wrapper">
<div class="container">
<div class="row">
<div class="row">
<div class="modal-header">
<h4 class="modal-title text-center">Access your account</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>Email Address</label>
<input class="form-control" placeholder="Enter your email address" name="email" required type="text">
</div>
96
</div>
<div class="form-group">
<label>Password</label>
<input class="form-control" placeholder="Enter your password" name="password" required type="password">
</div>
</div>
</div>
</div>
</div>
</form>
<div
id="forgotPasswordModal" class="modal fade login-box-wrapper" tabindex="-1" style="display: none;" data-backdrop="static" data-
keyboard="false" data-replace="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-
hidden="true">×</button>
<h4 class="modal-title text-center">Restore your forgotten password</h4>
</div>
<div class="modal-body">
<div class="row gap-20">
<div class="form-group">
<label>Email Address</label>
<input id="mymail" autocomplete="off"
name="email" class="form-control" placeholder="Enter your email address" type="email" required>
</div>
</div>
97
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Employer Dashboard
Figure Appendix C 1.4:
<!doctype html>
<html lang="en">
<?php
include '../constants/settings.php';
include 'constants/check-login.php';
if ($user_online == "true") {
if ($myrole == "employer") {
}else{
header("location:../");
}
}else{
header("location:../");
}
?>
98
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body class="not-transparent-header">
<div class="container-wrapper">
<header id="header">
<div class="container">
<div class="logo-wrapper">
<div class="logo">
<a href="../"><img src="../images/logoMRB.png" alt="Logo" /></a>
</div>
</div>
<li>
<a href="../">Home</a>
</li>
<li>
<a href="../job-list.php">Job List</a>
</li>
<li>
<a href="../employers.php">Employers</a>
</li>
<li>
<a href="../employees.php">Employees</a>
99
</li>
<li>
<a href="../contact.php">Contact Us</a>
</li>
</ul>
</div>
<div class="nav-mini-wrapper">
<ul class="nav-mini sign-in">
<li><a href="../logout.php">logout</a></li>
<li><a href="./">Profile</a></li>
</ul>
</div>
</div>
<div id="slicknav-mobile"></div>
</nav>
</header>
<div class="main-wrapper">
<div class="breadcrumb-wrapper">
<div class="container">
</div>
</div>
<div class="admin-container-wrapper">
<div class="container">
<div class="GridLex-gap-15-wrappper">
<div class="GridLex-grid-noGutter-equalHeight">
<div class="GridLex-col-3_sm-4_xs-12">
<div class="admin-sidebar">
<div class="image">
<?php
if ($logo == null) {
print '<center>Company Logo
Here</center>';
}else{
echo '<center><img
alt="image" title="'.$compname.'" width="180" height="100" src="data:image/jpeg;base64,'.base64_encode($logo).'"/></center>';
}
?><br>
</div>
</div>
<a href="post-job.php"
class="btn btn-primary btn-sm btn-inverse">Post a Job</a>
</div>
100
<ul class="admin-user-menu clearfix">
<li class="active">
<a href="./"><i
class="fa fa-user"></i> Profile</a>
</li>
<li class="">
<a href="change-
password.php"><i class="fa fa-key"></i> Change Password</a>
</li>
<li>
<a
href="../company.php?ref=<?php echo "$myid"; ?>"><i class="fa fa-briefcase"></i> Company Overview</a>
</li>
<li>
<a href="my-
jobs.php"><i class="fa fa-bookmark"></i> Posted Jobs</a>
</li>
<li>
<a
href="../logout.php"><i class="fa fa-sign-out"></i> Logout</a>
</li>
</ul>
</div>
</div>
<div class="GridLex-col-9_sm-8_xs-12">
<div class="admin-content-wrapper">
<div class="admin-section-title">
<h2>Profile</h2>
<p>Your last loged-in: <span
class="text-primary"><?php echo "$mylogin"; ?></span></p>
</div>
<form class="post-form-wrapper"
action="app/update-profile.php" method="POST" autocomplete="off">
<div class="row
gap-20">
<?php
include 'constants/check_reply.php'; ?>
<div
class="clear"></div>
<div
class="col-sm-12 col-md-8">
<div class="form-group">
<label>Company Name</label>
<input name="company" placeholder="Enter company name" type="text" class="form-control" value="<?php echo "$compname";
?>" required>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Established In</label>
<input name="year" placeholder="Enter year eg: 2016, 2017, 2018" type="text" class="form-control" value="<?php echo
"$esta"; ?>" required>
</div>
101
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Type</label>
<input class="form-control" placeholder="Eg: Booking, Travel" name="type" required type="text" value="<?php echo
"$mytitle"; ?>" required>
</div>
</div>
<div
class="clear"></div>
<div
class="form-group">
<label>People</label>
<option <?php if ($mypeople == "1-10") { print ' selected '; } ?> value="1-10">1-10</option>
<option <?php if ($mypeople == "11-100") { print ' selected '; } ?> value="11-100">11-100</option>
<option <?php if ($mypeople == "200+") { print ' selected '; } ?> value="200+" >200+</option>
<option <?php if ($mypeople == "300+") { print ' selected '; } ?> value="300+">300+</option>
<option <?php if ($mypeople == "1000+") { print ' selected '; } ?>value="1000+">1000+ </option>
</select>
</div>
<label>Website</label>
<input type="text" class="form-control" value="<?php echo "$myweb"; ?>" name="web" placeholder="Enter your website">
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>City/town</label>
<input name="city" required type="text" class="form-control" value="<?php echo "$city"; ?>" placeholder="Enter your city">
</div>
</div>
<div
class="col-sm-6 col-md-4">
102
<div class="form-group">
<label>Street</label>
<input name="street" required type="text" class="form-control" value="<?php echo "$street"; ?>" placeholder="Enter your street">
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Zip Code</label>
<input name="zip" required type="text" class="form-control" value="<?php echo "$zip"; ?>" placeholder="Enter your zip">
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
require '../constants/db_config.php';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
foreach($result as $row)
{
?> <option <?php if ($country == $row['country_name']) { print ' selected '; } ?> value="<?php echo
$row['country_name']; ?>"><?php echo $row['country_name']; ?></option> <?php
}catch(PDOException $e)
{
?>
</select>
</div>
</div>
<div
class="clear"></div>
103
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Phone Number</label>
<input type="text" name="phone" required class="form-control" value="<?php echo "$myphone"; ?>" placeholder="Enter your
phone">
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" required class="form-control" value="<?php echo "$mymail"; ?>" placeholder="Enter your
email">
</div>
</div>
<div
class="clear"></div>
<div
class="clear"></div>
<div
class="col-sm-12 col-md-12">
<label>Company background</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-12 col-md-12">
<label>Services</label>
</div>
</div>
<div
class="clear"></div>
104
<div
class="col-sm-12 col-md-12">
<label>Expertise</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-12 mt-10">
</div>
</form><br>
<form action="app/new-
dp.php" method="POST" enctype="multipart/form-data">
<div class="row gap-20">
<div class="col-sm-12 col-md-
12">
<div class="form-group
bootstrap3-wysihtml5-wrapper">
<label>Company Logo</label>
<input accept="image/*"
type="file" name="image" required >
</div>
</div>
<div class="clear"></div>
}else{
?><a onclick = "return
confirm('Are you sure you want to delete your logo ?')" class="btn btn-primary btn-inverse" href="app/drop-dp.php">Delete</a> <?php
}
?>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
105
Employee Dashboard
Figure Appendix C 1.5:
!doctype html>
<html lang="en">
<?php
require '../constants/settings.php';
require 'constants/check-login.php';
if ($user_online == "true") {
if ($myrole == "employee") {
}else{
header("location:../");
}
}else{
header("location:../");
}
?>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>
.autofit2 {
height:80px;
width:100px;
object-fit:cover;
}
</style>
<body class="not-transparent-header">
<div class="container-wrapper">
<header id="header">
<div class="container">
106
<div class="logo-wrapper">
<div class="logo">
<a href="../"><img src="../images/logoMRB.png" alt="Logo"
/></a>
</div>
</div>
<li>
<a href="../">Home</a>
</li>
<li>
<a href="../job-list.php">Job List</a>
</li>
<li>
<a href="../employers.php">Employers</a>
</li>
<li>
<a href="../employees.php">Employees</a>
</li>
<li>
<a href="../contact.php">Contact Us</a>
</li>
</ul>
</div>
<div class="nav-mini-wrapper">
<ul class="nav-mini sign-in">
<li><a href="../logout.php">logout</a></li>
<li><a href="./">Profile</a></li>
</ul>
</div>
</div>
<div id="slicknav-mobile"></div>
</nav>
</header>
<div class="main-wrapper">
<div class="breadcrumb-wrapper">
<div class="container">
</div>
</div>
<div class="admin-container-wrapper">
<div class="container">
<div class="GridLex-gap-15-wrappper">
<div class="GridLex-grid-noGutter-equalHeight">
<div class="GridLex-col-3_sm-4_xs-12">
107
<div class="admin-sidebar">
<div class="admin-user-item">
<div class="image">
<?php
if ($myavatar == null) {
print '<center><img
class="img-circle autofit2" src="../images/default.jpg" title="'.$myfname.'" alt="image" /></center>';
}else{
echo '<center><img
class="img-circle autofit2" alt="image" title="'.$myfname.'" src="data:image/jpeg;base64,'.base64_encode($myavatar).'"/></center>';
}
?>
</div>
<br>
<h4><?php echo
"$myfname"; ?> <?php echo "$mylname"; ?></h4>
<p class="user-role"><?php
echo "$mytitle"; ?></p>
</div>
<a target="_blank"
href="my_cv" class="btn btn-primary btn-sm btn-inverse">View my CV</a>
</div>
<li>
<a
href="referees.php"><i class="fa fa-users"></i> Referees</a>
</li>
<li>
<a
href="academic.php"><i class="fa fa-graduation-cap"></i> Academic Qualifications</a>
</li>
<li>
<a
href="experience.php"><i class="fa fa-briefcase"></i> Working Experience</a>
</li>
<li>
<a
href="attachments.php"><i class="fa fa-folder-open"></i> Other Attachments</a>
</li>
<li>
<a href="applied-
jobs.php"><i class="fa fa-bookmark"></i> Applied Jobs</a>
</li>
<li>
<a
href="../logout.php"><i class="fa fa-sign-out"></i> Logout</a>
</li>
</ul>
108
</div>
</div>
<div class="GridLex-col-9_sm-8_xs-12">
<div class="admin-content-wrapper">
<div class="admin-section-title">
<h2>Profile</h2>
<p>Your last loged-in: <span
class="text-primary"><?php echo "$mylogin"; ?></span></p>
</div>
<form class="post-form-wrapper"
action="app/update-profile.php" method="POST" autocomplete="off">
<div class="row
gap-20">
<?php require
'constants/check_reply.php'; ?>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>First Name</label>
<input name="fname" required type="text" class="form-control" value="<?php echo "$myfname"; ?>" placeholder="Enter
your first name">
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Last Name</label>
<input name="lname" required type="text" class="form-control" value="<?php echo "$mylname"; ?>" placeholder="Enter
your last name">
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Born</label>
109
while($x <= 31) {
$x = "0$x";
print '<option '; if ($mydate == $x ) { print ' selected '; } print ' value="'.$x.'">'.$x.'</option>';
}else{
print '<option '; if ($mydate == $x ) { print ' selected '; } print ' value="'.$x.'">'.$x.'</option>';
}
$x++;
}
?>
</select>
</div>
$x = "0$x";
print '<option '; if ($mymonth == $x ) { print ' selected '; } print ' value="'.$x.'">'.$x.'</option>';
}else{
print '<option '; if ($mymonth == $x ) { print ' selected '; } print ' value="'.$x.'">'.$x.'</option>';
}
$x++;
}
?>
</select>
</div>
<?php
$x = date('Y');
$yr = 60;
$y2 = $x - $yr;
while($x > $y2) {
print '<option '; if ($myyear == $x ) { print ' selected '; } print ' value="'.$x.'">'.$x.'</option>';
$x = $x - 1;
}
?>
</select>
</div>
</div>
</div>
</div>
110
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Email</label>
<input type="email" name="email" required class="form-control" value="<?php echo "$myemail"; ?>" placeholder="Enter
your email address">
</div>
</div>
<div
class="clear"></div>
<div
class="form-group">
<div class="col-sm-12">
<label>Education Level</label>
</div>
</div>
<input value="<?php echo "$mytitle"; ?>" name="title" required type="text" class="form-control mb-15" placeholder="Eg:
Computer Science, IT...etc">
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Gender</label>
<option <?php if ($mygender == "Male") { print ' selected '; } ?> value="Male">Male</option>
</select>
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
111
<label>City/town</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Street</label>
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Constituency</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>District</label>
require '../constants/db_config.php';
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
foreach($result as $row)
{
?> <option <?php if ($mycountry == $row['country_name']) { print ' selected '; } ?>
value="<?php echo $row['country_name']; ?>"><?php echo $row['country_name']; ?></option> <?php
112
}catch(PDOException $e)
{
?>
</select>
</div>
</div>
<div
class="col-sm-6 col-md-4">
<div class="form-group">
<label>Phone Number</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-12 col-md-12">
<label>About me</label>
</div>
</div>
<div
class="clear"></div>
<div
class="col-sm-12 mt-10">
</div>
</form><br>
<form action="app/new-
dp.php" method="POST" enctype="multipart/form-data">
<div class="row gap-20">
<div class="col-sm-12 col-md-
12">
<div class="form-group
bootstrap3-wysihtml5-wrapper">
<label>Display Image</label>
<input accept="image/*"
type="file" name="image" required >
</div>
113
</div>
<div class="clear"></div>
}else{
?><a onclick = "return
confirm('Are you sure you want to delete your avatar ?')" class="btn btn-primary btn-inverse" href="app/drop-dp.php">Delete</a> <?php
}
?>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
114