Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

CHapters

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 81

1

CHAPTER ONE
INTRODUCTION

1.0 Introduction

This chapter contains and discuss the background to this work as well as its statement of

problem. Other discussion includes the justification, the aim and specific objectives and the

overview of the methodology employ in the study.

1.1 Background

A biometric system is essentially a pattern recognition system that operates by acquiring

biometric data from an individual, extract a feature set from the acquired data, and compare the

feature set against the template set in the database (Prabhakar et al., 2003). Depending on the

application context, a biometric system may operate either in verification or identification:

In the Verification mode: the system validates a persons identity by comparing the captured

biometric data with his/ her own biometric template(s) thats stored in the database. In such a

system, an individual who desires to be recognized claims an identity, usually via a Personal

Identification Number (PIN), a user name, a smart card, and so on. The system also conducts a

one-to-one comparison to determine whether the claim is true or not. Identity verification is

typically used for positive recognition, where the aim is to prevent multiple people from using the

same identity.

In the Identification mode: the system recognizes an individual by searching the templates of all

the users in the database for a match. Therefore, the system conducts a one-to-many comparison

to establish an individuals identity. However, the comparism fails if the subject is not enrolled in

the system database) without the subject having to claim an identity. Identification is a critical
2

component in a situation where the system is meant to be used to establish whether a person is

who he/ she (implicitly or explicitly) claims to be. The purpose of this type of negative recognition

is to prevent a single person from using multiple identities. Identification may also be used in a

positive sense for the recognition of convenience. In this case, the user is not required to claim an

identity (Pankanti et al., 2003). While traditional methods of personal recognition such as

passwords, PINs, keys, and tokens may work for positive recognition, but for negative recognition,

it can only be established through biometric methods. Any human physiological and behavioral

characteristic can be used as a biometric characteristic so long as it satisfies the following

requirements:

Universality (each person should have the characteristic);

distinctiveness (any two persons should be sufficiently different in terms of the

characteristic);

permanence (the characteristic should be sufficiently invariant with respect to the matching

criterion over a period of time);

collectability (the characteristic can be measured quantitatively) (Pankanti et al., 2003).

We have different biometric verification techniques some of them use as presented in Figure 1.1

Usually, biometric techniques are sane means of ensuring that unique identities are kept. This

makes the techniques supposedly appropriate to keep attendance in order to certify that only an

individual is kept track of at a time. This project therefore seeks to leverage on the unique

characteristic of the biometric technique to automate the process of attendance taking.


3

A: Fingerprint; B: Voice; C: Signature; D: Facial; E: Finger size

Figure 1.1 Types of Biometric system.


4

1.2 Justification

The development of an AMS using biometric features such as the fingerprint will give

exactness and promote accuracy in the student attendance management per time. For example, if

used in a school, it will help stakeholder with a thorough understanding of the number of students

and the number of lectures they attend. The knowledge of the existence of such system like the

AMS will encourage student to come for lectures and be punctual because they know that their

attendance is monitored. Lastly, it also calculates and generate monthly report of attendance in

order to reduce any human errors during calculations.

1.3 Statement of Problem

Every Nigerian university has the obligation to record and take student attendance during

lecture periods every semester. The accuracy of such record is important and used to be secured

bearing in mind its usefulness. However, the manual system is marred with many challenges. The

challenges range from the cumbersome nature of the paper sheets used for recording, and so on.

This challenges do make it difficult to regularly manage and update records of attendance, which

have been previously taken. In the advent that the record of attendance is needed for decision

making and the fore going challenge(s) occurs, it will be difficult to use the record. As a result of

the issues raised so far, it is necessary to automate the current manual attendance system. This

particular project seeks to employ the biometric technique to automate an AMS. This is believed

to contribute to making the AMS system with better security.

1.4 Aim and Special Objectives

The aim of the work is to develop an attendance management system that uses a biometric

feature as a means of identifying the absence or the presence of a persons in an event.


5

The Specific Objectives are to:

i. design an attendance management system that uses a fingerprint biometric features;

ii. implement the design in (i) above;

iii. implement the biometric fingerprint feature and

iv. test the system implemented in ii above.

1.5 Overview of Methodology

In summary, the methodology used for this project is presented as follows:

1. Unified Modeling Language (UML 2.0) was used to design the system

2. HTML/ CSS was used to implement the front end and the user interphase

3. The database backend of the system was implemented using MySQL, while Java as an

object oriented programming language was used to implement the front end

4. A biometric device was interface with the AMS to receive biometric fingerprint feature as

input

1.6 Scope of project

Three user interface were involved in this work. This means that the one for the student to

register courses and identify themselves with their unique fingerprint techniques, the Admin, add

lecturer and the specific department of the lecturer, lastly the lecturer domain, where he/ she

verifies the student in class using their previously identified fingerprint and a monthly attendance

report is made.
6

1.7 Summary of Chapter

This study is arranged into five chapters, which is aimed at the development of an

attendance system using a fingerprint biometric feature.

Chapter One represent the introduction to the project. It discussed the background; the

problem statement; project justification; aim and objectives and scope of the study.

Chapter Two reviewed the background concept and relevant literature on attendance

management system using fingerprint biometric features. It focuses on previous work and also

explained the relevant terms in the study and also justified the rationale for the study.

Chapter Three covered the research methodology. It focused on the technique involved in

the development of the attendance management system using fingerprint biometric features. The

chapter discussed the software used and why they were chosen and used.

Chapter Four presents the design of the system; its implementation and documentation.

Chapter Five contains the conclusion to the study and the recommendation.
7

CHAPTER TWO
LITERATURE REVIEW
2.0 Introduction

This chapter contains a general overview of the subject of this project work. The chapter

also presents a discourse on biometric systems, the technique to implement such system and other

related issues on the related work and the techniques used for modelling and system development

life cycle.

2.1 General Overview


A fingerprint is made of a number of ridges and valleys on the surface of the finger. Ridges

are the upper skin layer segment of the finger and valleys are the lower segment. The ridges form

so-called minutia points: ridge endings (where a ridge end) and ridge bifurcations where a ridge

splits in two). Many types of minutiae exist, including dots (very small ridges); islands (ridges

slightly longer than dots; it occupies a middle space between two temporarily divergent ridges);

ponds or lakes (empty spaces between two temporarily divergent ridges); spurs (a notch protruding

from a ridge); bridges (small ridges joining two longer adjacent ridges); and crossovers (two ridges

which cross each other); (Hong,1998).

The three basic patterns of fingerprint ridges are the;

Arch, which is a pattern where the ridges enter from one side of the finger, rise in the center

forming an arc, and then exit the other side of the finger.

Loop, which is a pattern where the ridges enter from one side of a finger, form a curve, and

tend to exit from the same side they enter.


8

Whorl pattern, ridges form circularly around a central point on the finger. Scientists have

found that family members often share the same general fingerprint patterns. This leads to

the belief that these patterns are inherited.

An Attendance Management System (AMS) is one of the easiest way to keep track of

attendance for community organizations such as school, clubs, scouting units, church groups,

athletics, or volunteer groups (Bansal et al., 2013). AMS can be used in the personnel department

for manpower analysis, day-to-day monitoring of the attendance, maintaining statutory registers.

In educational institution or business organization, it can also be used for the monitoring of leave

records, calculation of overtime and the transfer of relevant information to the payroll system

(Ankita, 2012). The AMS can be classified into four classes:

Simple systems: The use of the attendance card is not new. It has been widely popular for

many years now; punch cards have been used for clocking in working hours

Large-scale companies: This is an example of an attendance fingerprint. This works well

in an unlikely situation where its necessary to check a naughty employee.

The Iris Scanner: This is a variant to the fingerprint reader. Like the fingerprint, no two

people have the same eyes where the iris resides.

For an E-Commerce situation: Which is performance based, there is a performance based

attendance keeping systems can be very useful (Ankita, 2012).


9

2.2 Biometric system

A Biometric system is an identification system or a verification system which is meant for

authentication purpose, depending on the application. Identification and verification can be defined

as:

Identification One to Many: Identification involves the determination of a persons

identity by searching through a database for a match. In essence, the system tries to answer the

question, Who am I?. For example, identification is performed in a list to find if the query image

matches with any of the images in the list. This concept is used by law enforcement agencies to

identify criminals. This initiative maybe used to suspect to an unsolved crime or identify the person

suspected of committing a crime (Prabhakar, et al 2003).

Verification One to One: Verification involves determining if the identity a person is

claiming is correct or not. In essence, the system in this respect tries to answer the question of,

Am I whom I claim to be?. A verification may include access to an ATM. This can be obtained

by matching the features of a claimed identity in a database. For example, a user might claim to

be the owner of a matric no 050210057 by presenting an identity using his fingerprint. It is not

often required to perform match with a complete database. There are two major types of biometric

systems: Uni modal and multimodal biometric systems. Uni modal biometric systems are

biometric system that uses only one characteristic or feature for recognition. This includes face

recognition, fingerprint recognition, and iris recognition. In multimodal biometric systems. This

includes multiple information are obtained from more than one biometric modality. This includes

fusing information from face and fingerprint (Ankita, 2012). The model Figure 2.1 shows a model

with verification and identification identity.


10

Figure 2.1 Model for Verification and Identification


11

2.2.1 Fingerprint Biometric techniques

Fingerprints, the patterns of ridges and valleys on the friction ridge surfaces of

fingers. It has been used in forensic applications for over a century. Friction ridges are

formed in uterus during fetal development, and even identical twins do not have the same

fingerprints. The recognition performance of currently available fingerprint-based

recognition systems using prints from multiple fingers are quite good. One factor in

recognition accuracy is whether a single print is used or whether multiple or ten prints (one

from each finger) are used (Ankita, 2012).

Multiple prints provide additional information that can be valuable in very large

scale systems. The challenges include the fact that large-scale fingerprint recognition

systems are computationally intensive, particularly when trying to find a match among

millions of references (Ankita, 2012).

Fingerprints basically consist of:

1. Ridges

2. Valleys

Ridges means raised skin and valleys means lowered skin. The ridges and valleys

are twist to form a distinct pattern. When a blue-inked imprint of a finger is made, the blue

color impression created is of the ridges while the valleys are the un-inked areas or white

color between the ridges. These features are particular patterns consisting of terminations

or bifurcations or meeting or ending of the ridges. Moreover, all finger-prints can be

classified into three categories based on their major central pattern: arch, loop, and whorl

as presented (Ankita, 2012). Figure 2.2.


12

2.2.2 Fingerprint Recognition

The first thing to describe is the principle of fingerprint recognition, which has to

do with the extraction of minutiae from a fingerprint. It should be said that all fingerprints

could be divided into 5 classes. These classes are shown in Figure 2.3

The whole process of fingerprint analysis which is the method of minutiae comparison,

consists of six steps that are discussed as follows:

a. Getting the input fingerprint image: the quality of acquired image is necessary for

the performance of automatic identification.


13

Figure 2.2. Composition of Fingerprint


14

A: Arch B: Left Loop C: Right Loop D: Tended Arch E: Whorl

Figure 2.3. Fingerprint classes:


15

It is desirable to use fingerprint scanner that is of high quality, and is capable of

tolerating different skin types, finger injures and dryness or dampness of finger

surface (Ankita, 2012).

b. The performance of the algorithms for image quality improvement. Image quality

improvement is used to recover the real furrow and ridge structures from a damaged

image. At first the histogram of fingerprint image is obtained, then the histogram

equalization is performed, the Gabor filters are used they improve the clearness

of ridge and furrow structures in recovered areas and so prepare image for minutiae

extraction algorithm. Then the directional array is found in the image using filtering

in frequency domain

c. The performance of the image preprocessing. This is the preparatory step for

minutiae extraction and classification. At this level, the thresholding by scheme

Regional Average Thresholding(RAT) and thinning (by Emyroglu) is performed in

this step.

d. Fingerprint classification. In this step the fingerprint is assigned to one of existing

five classes. The classification is a difficult process for the machine as well as for

humans, because for some fingerprints it is very complicated to unambiguously

choose the particular class. At first the Karhunen-Love transformation is applied

on the directional array obtained from the (b). Then the Probabilistic Neural

Network (PNN) classifier is applied, which assigns the fingerprint into one of five

classes.

e. Minutiae extraction. Here we use the Emyroglu extractor, which extracts only three

types of minutia from the fingerprint skeleton. The three types are ridge ending,
16

continuous line and bifurcation. In this step some improvements have been done.

When the detection and extraction phase is finished, the minutiae are tested once

more. If they lie on the edge of the fingerprint, they are deleted. The second test

checks the papillary line continuity (partially done in (c)). The difference between

line ending and bifurcation. And the last improvement includes more accurate scale

for gradient of the minutia. Now it is possible to detect the degree of the bias of the

papillary line more accurately and compute the gradient of this minutia.

f. Verification. This is the comparison of two minutiae sets. The efficiency of the

minutiae comparison algorithms strongly depends on the reliability of the process

of minutiae obtaining and external comparison process. For the minutiae

comparison, we use the Ratha method that tolerates e.g. rotation, translation and

other changes in the fingerprint

2.3 Fingerprint Scanner

Fingerprint scanner is an electronic device used to capture a digital image of the fingerprint

pattern (Cappelli, et al. 2006). The captured image is called a live scan. This live scan is digitally

processed to create a biometric template (a collection of extracted minutiae points) which is stored

and used for matching. Minutiae are defined as the pattern created and the uniqueness of how

ridges end, split and join, or appear as a simple dot. The Minutiae consists of bifurcations, ridge

dots, ridge endings and enclosures, to ensure further uniqueness, the minutiae are further broken

down into sub minutiae such as pores, crossovers, deltas. The pores are tiny depressions within the

ridge on a fingerprint; the crossover creates an X pattern within the ridge of a fingerprint and deltas

create a triangle shaped pattern within the ridge of a fingerprint. Identification in a fingerprint

technology exists when an individual fingerprint is compared against a known source called the
17

fingerprint template (Chirillo & Scott, 2007). Fingerprint sensors are very intricate and continue

to grow more complicated. They are becoming a vital part of the transformation to a more

technologically integrated society. Current fingerprint technologies are generally susceptible to

acquiring poor quality images due to different skin conditions and environmental effects. These

poor quality images adversely affect the ability to accurately determine a persons identity. Poor

fingerprint image can be enhanced through several stages of enhancement (Wayman et al., 2005).

2.3.1 Internal working of fingerprint module

Image Acquisition: The Fingerprint images from various users are taken using the module.

The finger module itself has an internal memory which can store about 100 images in it.

These images are used for the enhancement in next stages.

Image Enhancement The image is enhanced using the techniques like Histogram

Equalization. It is nothing but the graph plot for number of pixels against the gray level.

The overall contrast of the image is made uniform and image looks enhanced. Now the

image is suitable for the extraction of minutiae extraction.

Edge Detection They are many operators used for detecting the edges. The operators are

Prewitt, Laplacian, Sobels, Robertson Operators. The Prewitt operator is one of the best

edge detecting operator and we are implementing Prewitt operator in this paper. The edges

have to be detected in order to match the input image with already saved image. There are

two types of masking used here. They are

i) Horizontal masking

ii) Vertical masking Edges are calculated by using difference between corresponding pixel

intensities of an image. All the masks that are used for edge detection are also known as
18

derivative masks. Because as we have stated many times before in this series of tutorials

that image is also a signal so changes in a signal can only be calculated using

differentiation.

2.3.2 Error rates and their usage

There are two kinds of errors that biometric systems do:

* False rejection (Type 1 error) a legitimate user is rejected (because the system does not

find the users current biometric data similar enough to the master template stored in the

database).

A hundred percent similarity between any two samples suggests a very good forgery.

* False acceptance (Type 2 error) an impostor is accepted as a legitimate user (because

the system finds the impostors biometric data similar enough to the master template of a

legitimate user). In an ideal system, there are no false rejections and no false acceptances.

In a real system, however, these numbers are non-zero and depend on the security

threshold. The higher the threshold the more false rejections and less false acceptances and

the lower the threshold the less false rejections and more false acceptances. The number of

false rejections and the number of false acceptances are inversely proportional. The

decision which threshold to use depends mainly on the purpose of the entire biometric

system. It is chosen as a compromise between the security and the usability of the system.

The biometric system at the gate of the Disneys amusement park will typically use lower

threshold than the biometric system at the gate of the NSA headquarters. The number of

false rejections/false acceptances is usually expressed as a percentage from the total

number of authorized/unauthorized access attempts.


19

These rates are called the false rejection rate (FRR)/false acceptance rate (FAR).

The values of the rates are bound to a certain security threshold. Most of the systems

support multiple security thresholds with appropriate false acceptance and false rejection

rates. Some of the biometric devices (or the accompanying software) take the desired

security threshold as a parameter of the decision process (e.g. for a high threshold only

linear transformations are allowed), the other devices return a score within a range (e.g. a

difference score between 0 and 1000, where 0 means the perfect match) and the decision

itself is left to the application. If the device supports multiple security levels or returns a

score we can create a graph indicating the dependence of the FAR and FRR on the threshold

value. The following picture shows an example of such a graph: Figure 2.4

The curves of FAR and FRR cross at the point where FAR and FRR are equal. This value

is called the equal error rate (ERR) or the crossover accuracy. This value does not have any

practical use (we rarely want FAR and FRR to be the same), but it is an indicator how

accurate the device is. If we have two devices with the equal error rates of 1% and 10%

then we know that the first device is more accurate (i.e., does fewer errors) than the other.

However, such comparisons are not so straightforward in the reality.

2.3.3 Fingerprint processing

Fingerprints are not compared and usually also not stored as bitmaps. Fingerprint

matching techniques can be placed into two categories: minutiae-based and correlation

based. Minutiae-based techniques find the minutiae points first and then map their relative

placement on the finger. Minutiae are individual unique characteristics within the

fingerprint pattern such as ridge endings, bifurcations, divergences, dots or islands. In the

recent years automated fingerprint comparisons have been most often based on minutiae.
20

The problem with minutiae is that it is difficult to extract the minutiae points accurately

when the fingerprint is of low quality. This method also does not take into account the

global pattern of ridges and furrows.

A surprisingly high proportion of the population have missing fingers, with the left

forefinger having the highest percentage at 0.62%. Fingerprint ridges are not continuous,

straight ridges. Instead they are broken, forked, changed directionally, or interrupted. The

points at which ridges


21

Figure 2.4: Graph of Error rates


22

end, fork and change are called minutia points, and these minutia points provide unique,

identifying information. There are a number of types of minutia points. The most common

are ridge endings and ridge bifurcations (points at which a ridge divides into two or more

branches). There are about 30 minutiae within a typical fingerprint image obtained by a

live fingerprint reader. The FBI has shown that no two individuals can have more than 8

common minutiae.

The U.S. Court system has allowed testimony based on 12 matching minutiae. The

number and spatial distribution of minutiae varies according to the quality of the fingerprint

image, finger pressure, moisture and placement. In the decision process, the biometric

system tries to find a minutiae transformation between the current distribution and the

stored template. The matching decision is then based on the possibility and complexity of

the necessary transformation. The decision usually takes from 5 milliseconds to 2 seconds.

The minutiae matching is a process where two sets of minutiae are compared to decide

whether they represent the same finger or not. The speed of the decision sometimes

depends on the security level and the negative answer very often takes longer time than the

positive one (sometimes even 10 times more). There is no direct dependency between the

speed and accuracy of the matching algorithm according to our experience. We have seen

fast and accurate as well as slow and less accurate matching algorithms.

The minutiae found in the fingerprint image are also used to store the fingerprint

for future comparisons. The minutiae are encoded and often also compressed. The size of

such a master template usually is between 24 bytes and one kilobyte. Fingerprints contain

a large amount of data. Because of the high level of data present in the image, it is possible

to eliminate false matches and reduce the number of possible matches to a small fraction.
23

This means that the fingerprint technology can be used for identification even within large

databases. Fingerprint identification technology has undergone an extensive research and

development since the seventies. The initial reason for the effort was the response to the

FBI requirement for an identification search system. Such systems are called Automated

Fingerprint Identification Systems (AFIS) and are used to identify individuals in large AFIS

databases (typically to find the offender of a crime according to a fingerprint found at the

crime scene or to identify a person whose identity is unknown). AFIS systems are operated

by professionals who manually intervene the minutiae extraction and matching process and

thus their results are really excellent. In todays criminal justice applications, the AFIS

systems achieve over 98% identification rate while the FAR is below 1%. {Software

suppliers never publish their exact encoding methods. They are usually based on the type

of minutiae, its location, the direction and the number of ridges between the minutiae

The typical access control systems, on the other side, are completely automated.

Their accuracy is slightly worse. The quality of the fingerprint image obtained by an

automated fingerprint reader from an unexperienced (non-professional) user is usually

lower. Fingerprint readers often do not show any fingerprint preview and so the users do

not know if the positioning and pressure of the finger is correct. The automatic minutiae

extraction in a lower quality image is not perfect yet. Thus the overall accuracy of such a

system is lower. Some newer systems are based not only on minutiae extraction, they use

the length and position of the papilar lines as well. A few systems take into account even

pores (their spatial distribution), but the problem with pores is that they are too dependent

on the fingerprint image quality and finger pressure. Most of the biometric fingerprint

systems use the fingerprint reader to provide for the fingerprint bitmap image only, whole
24

the processing and matching is done by a software that runs on a computer (the software is

often available for Microsoft Windows operating systems only). There are currently only

very few fingerprint devices that do all the processing by the hardware. The manufacturers

of the fingerprint readers used to deliver the fingerprint processing software with the

hardware.

Even if it is still possible to buy a fingerprint reader with a software package (this

is the popular way especially for the low-end devices for home or office use) there are

many manufacturers that produce fingerprint hardware only (e.g. fingerprint silicon chips

by Thomson) or software companies that offer device-independent fingerprint processing

software (e.g. Neurodynamics). Device-independent software is not bound to images

obtained by one single input devices, but their accuracy is very low if various input devices

are mixed.

2.4 Modelling Tool


2.4.1 Unified Modeling Language [UML]

The Unified Modeling Language (UML) is a standard language for writing software

blueprints. The UML may be used to visualize, specify, construct, and document the

artifacts of a software intensive system. The UML is appropriate for modeling systems

ranging from enterprise information systems to distributed Web-based applications and

even to hard real time embedded systems. It is a very expressive language, addressing all

the views needed to develop and then deploy such systems.

Even though it is expressive, the UML is not difficult to understand and to use.

Learning to apply the UML effectively starts with forming a conceptual model of the

language, which requires learning three major elements: the UML's basic building blocks,
25

the rules that dictate how these building blocks may be put together, and some common

mechanisms that apply throughout the language. The Use Case Diagram is used in the

development of both new and existing system.

2.5 Implementation Tools

2.5.1 PHP

PHP is a widely-used general-purpose scripting language that is especially suited

for Web development and can be embedded into HTML. PHP scripts can be server-side

scripting, command line scripting, writing desktop applications. The import of the tool in

this project endeavor is however based on its Server-side scripting Feature. Server-side

scripting is the most traditional and main target field for PHP. Three things are needed to

make this work. The PHP parser, a web server, and a web browser. The web server need

to run, with a connected PHP installation. The PHP program output can be accessed with

a web browser, viewing the PHP page through the server. One of the strongest and most

significant features in PHP is its support for a wide range of databases. It makes writing a

database-enabled web page incredibly simple using one of the database specific extensions

(e.g., for MySQL)

2.5.2 MySQL

This is the relational database Management System to be used for the database of

this project. MySQL is one of the world's most popular open source database software.

MySQL has become the preferred choice for Web, Web 2.0, SaaS, ISV, Telecom

companies and forward-thinking corporate IT Managers because it eliminates the major

problems associated with downtime, maintenance and administration for modern, online

applications.
26

Other feature of MySQL that prompted its choice as the database management system for

this project is as follows:

1. High Performance & Scalability

2. Ease of Use & Administration

3. Reliability

4. Broad Platform support

5. Integration into the Windows Environment

2.5.3 HTML

Hypertext Markup Language (HTML) is the main markup language for creating

web pages and other information that can be displayed in a web browser. HTML is written

in the form of HTML elements consisting of tags enclosed in angle brackets (like <html>).

HTML documents needs a web browser to read its content and compose them into visible

or audible web pages. The browser does not display the HTML tags, but uses the tags to

interpret the content of the page. HTML elements form the building blocks of all websites.

HTML allows images and objects to be embedded and can be used to create interactive

forms. It provides a means to create structured documents by denoting structural semantics

for text such as headings, paragraphs, lists, links, quotes and other items. HTML works

together with other development

2.5.4 Cascading Style Sheets (CSS)

This is integrated with the HTML to define the appearance and layout of text and

other materials in the web page. Cascading Style Sheets or CSS allow you to control the
27

layout and look of your page easily. CSS tags or properties are easy to use and affect the

look and feel or style of your pages.

2.6 System Development Life Cycle

Software development is a cumbersome process which demands a lot of hard work and

time. Even after developing software to perform your tasks you would find it not performing up to

your expectations. The Software process model:

The waterfall model: This takes the fundamental process activities of specification, development,

validation, and evolution and represents them as separate process phases such as requirements

specification, software design, implementation, testing, and so on

Incremental development This approach interleaves the activities of specification, development,

and validation. The system is developed as a series of versions (increments), with each version

adding functionality to the previous version.

Reuse-oriented software engineering This approach is based on the existence of a significant

number of reusable components. The system development process focuses on integrating these

components into a system rather than developing them from scratch.

This is due to the lack of systematic approach. In order to avoid such problem, the project will

adopt the following established software development process.

2.6.1 Feasibility Study: this is necessary to perform a series of successful and

established guidelines to ensure the success of the project. This helps in delivering the

estimated results out of the system. By performing the step-by-step procedure for the
28

system development which will in turn provides a strong solid base for implementing the

project plan.

2.6.2 System analysis: this is the foremost step employed for developing software. The

aim of system analysis is to determine the problems in the system. In this phase the entire

system is broken down in to different pieces for understanding the problem thoroughly.

Users are engaged in this particular phase to get exact knowledge about the users

requirements. Requirements that are gathered from this phase have to be accurate. Else it

would lead to bugs and errors in your program.

2.6.3 System design: this stage comes next after analysis phase in the software

development. In this phase the functions and operations used in the system will be

explained in detail. System design demands the creation of one or more design elements

for every requirement that you recognized in the earlier stage. The final output of this phase

is a subsystem consisting of a group of modules. The system design phase helps in

providing the system developer sufficient details regarding the system.

2.6.4 System Implementation: Implementation is the most important phase where the

programmer creates the code for each and every module created during the early stages.

The programmer requires a thorough knowledge about the language in which the software

is to be developed. Unit testing is done in this phase to check for the individual functionality

of the modules.

2.6.5 System Testing: System testing is the final stage which is compulsory for the

successful completion of the system development. Testing the entire software for errors is
29

known as software testing. If any bugs or errors are detected there will be need to work on

that particular module and clear them. Interoperability, user acceptance etc. are the key

features that we test for in the testing procedure. Performing all the above phases

systematically would provide a system meeting all the expected requirements.

.2.7 Related works

Most of the attendance systems use paper based methods for taking and calculating attendance and

this manual method requires paper sheets and a lot of stationery material. Previously, very few

works have been done relating to the academic attendance monitoring problems. Biometrics has

been used in biological studies, including forestry, for the collection, synthesis, analysis and

management of quantitative data on biological communities such as forests. Biometrics in

reference to biological sciences has been studied and applied for several generations and is

somewhat simply viewed as "biological statistics" (Smart Cart Alliance Identity Council, 2007).

According to Jiexun, Wang and Chen (2011) as quoted in the research work of Oloyede et al.,

(2013), the origin of biometrics has been in the public sector; however, biometrics is used for the

identification and verification of criminals. Other sectors where biometrics has also thrived are the

Banking, Education and Health sectors. For example, emerging application markets include

biometrically enabled transactional payment solutions and biometrically enables wireless for

business use. Oloyede et al., (2013) carried out extensive research on applicability of biometric

technology to solve the problem of staff attendance. However, the researchers did not write any

software to address the problems of attendance Furthermore, biometric application has been useful

in various other sectors which include the Government using it for the purpose of stopping terrorist

attacks and fighting crimes. After the 9/11 incident, the Yeager Airport in Charleston introduced
30

the biometrics system, which is used to secure access to its control tower (Dubin, 2011). Moreover,

the biometrics system has been very useful in the education sector where it has assisted students

in the borrowing and returning of books out and into the library respectively. A palm scanner

which reads a patients unique vein pattern was implemented in Sharp Healthcare in San Diego

for the purpose of stopping patient identity theft, the system was known to be very secure and

performed efficiently well for its purpose (Kreimer, 2011). Furthermore, biometrics can be

integrated with other systems for it to carry out its purpose of identification. Various homeland

security databases require the use a card access system integrated with a biometric technology to

gain access. European explorer, Joao de Barros recorded the first known example of fingerprinting,

which is a form of biometrics, in China during the 14th century. Chinese merchants used ink to

take children's fingerprints for identification purposes. Marijana (2004) carried out a critical review

of the extent to which biometric technology has assisted in controlling illegal entry of travelers

into specific country through the integration of biometric passport. The issue regarding how the

false acceptance rate can be measured in a border control setting was also looked into. The

researcher concludes that the problems associated with biometric technologies such as error rates,

spoofing attacks, non-universality and interoperability can be reduced through an overall security

process that involves people, technology and procedures. Suggestions were drawn on how the

security issues at the border can be improved.

First, any numbers supplied by manufacturers are incomparable because manufacturers usually do

not publish exact conditions of their tests and second even if we have the supervision of the tests,

the tests are very dependent on the behavior of users and other external influences.

The manufacturers often publish only the best achievable rates (e.g., FAR < 0.01% and

FRR < 0.1%), but this does not mean that these rates can be achieved at the same time (i.e., at one
31

security threshold). Moreover, not all the manufacturers use the same algorithms for calculating

the rates. Especially the base for computation of the FAR often differs significantly. So one must

be very careful when interpreting any such numbers. The following table shows real rounded rates

(from real tests) for three devices set the lowest security level possible. Table 2.1:

Although the error rates quoted by manufactures (typically ERR < 1%) might indicate that

biometric systems are very accurate, the reality is rather different. Namely the false rejection rate

is in reality very high (very often over 10%). This prevents the legitimate users to gain their access

rights and stands for a significant problem of the biometric systems.


32

Rates/ Devices A B C

FAR 0.1% 0.2% 6%

FRR 30% 8% 40%

Table 2.1: Error rates


33

CHAPTER THREE

METHODOLOGY

3.0 Introduction

For any standard system to be developed, certain methodology must be employed in

achieving successful result. This chapter begins with the specification required by the proposed

system, stating what the system should be able to do. It also describes the methods used in

designing the proposed system. The description covers the logical as well as the physical design

components.

3.1 Requirement Analysis

Requirement analysis is a vital process in any system development. Its carried out in order

to ensure that the system developed reflects the needs of the user. It also shows what the system

should do, the services that it provides and the constraints on its operation. There are two broad

categories of requirement analysis that are usually employed in the system development. They are

the functional and the non- functional requirement analysis. The proposed system will provide the

following requirement:

i. Simple and understandable student interface, where the student can register his

biodata.

ii. A phase where the student will be verified using a fingerprint verification scheme.

iii. Simple and understandable lecturer interface, where he can monitor the student

attendance and view attendance report.


34

3.2 System Architecture

The 3-tier architecture which is the simplest N-tier architecture was used. It has three layers: A

student interphase for the student to register for the semester and the required courses necessary

for the semester. A column for the fingerprint verification phase, the other phase for the lecturer

for monitoring and evaluation of the student attendance to class. And the admin phase to add

lecturer and the department they represent.

3.3 Software Process Model

The model adopted and used for the implementation of the proposed system is the

Incremental Model. The reason for this choice is because the incremental development is based on

the formative notion of delivering a sequence of releases in incremental basis which speeds up the

progress of development of each functionality. Incremental development in some form is now the

most common approach for the development of application systems. This approach can be either

plan-driven, agile, or, more usually, a mixture of these approaches. In a plan-driven approach, the

system increments are identified in advance; if an agile approach is adopted, the early increments

are identified but the development of later increments depends on progress and customer priorities.

Incremental development is based on the idea of developing an initial implementation,

exposing this to user comment and evolving it through several versions until an adequate system

has been developed. Specification, development, and validation activities are interleaved rather

than separate, with rapid feedback across activities. Incremental software development, which is a

fundamental part of agile approaches, is better than a waterfall approach for most business, e-

commerce, and personal systems. Incremental development reflects the way that we solve

problems. We rarely work out a complete problem solution in advance but move toward a solution
35

in a series of steps, backtracking when we realize that we have made a mistake. By developing the

software incrementally, it is cheaper and easier to make changes in the software as it is being

developed. Each increment or version of the system incorporates some of the functionality that is

needed by the customer. Generally, the early increments of the system include the most important

or most urgently required functionality. This means that the customer can evaluate the system at a

relatively early stage in the development to see if it delivers what is required. If not, then only the

current increment has to be changed and, possibly, new functionality defined for later increments.

Incremental development has three important benefits, compared to the waterfall model:

1. The cost of accommodating changing customer requirements is reduced. The amount of

analysis and documentation that has to be redone is much less than is required with the

waterfall model.

2. It is easier to get customer feedback on the development work that has been done.

Customers can comment on demonstrations of the software and see how much has been

implemented. Customers find it difficult to judge progress from software design

documents.

3. More rapid delivery and deployment of useful software to the customer is possible, even if

all of the functionality has not been included. Customers are able to use and gain value

from the software earlier than is possible with a waterfall process

3.4 Logical Design

The logical design is the translation of user requirement into a system model by producing

the major features of the new system meeting the required objective. Its discuss the WHAT and

WHY of the proposed system. The logical design features undertaken by the researcher include

the registration forms design, the class design, use case diagram as well as the activity diagram.
36

3.4.1 Use case

Use case diagrams describe what a system does from the standpoint of an external

observer. The emphasis is on what a system does rather than how. Use case diagrams are

closely connected to scenarios. A scenario is an example of what happens when someone

interacts with the system. A use case is a summary of scenarios for a single task or goal.

An actor is who or what initiates the events involved in that task. Actors are simply roles

that people or objects play. Use case diagrams are helpful in three areas.

determining features (requirements). New use cases often generate new

requirements as the system is analyzed and the design takes shape.

communicating with clients. Their notational simplicity makes use case diagrams a

good way for developers to communicate with clients.

3.4.2 Class diagram

A Class diagram gives an overview of a system by showing its classes and the

relationships among them. Class diagrams are static -- they display what interacts but not

what happens when they do interact. UML class notation is a rectangle divided into three

parts: class name, attributes, and operations.

Our class diagram has three kinds of relationships.

association -- a relationship between instances of the two classes. There is an

association between two classes if an instance of one class must know about the

other in order to perform its work. In a diagram, an association is a link connecting

two classes.

aggregation -- an association in which one class belongs to a collection. An


37

aggregation has a diamond end pointing to the part containing the whole

generalization -- an inheritance link indicating one class is a superclass of the other.

A generalization has a triangle pointing to the superclass.

3.4.3 Activity diagram

An activity diagram is essentially a fancy flowchart. Activity diagrams and state

chart diagrams are related. While a state chart diagram focuses attention on an object

undergoing a process (or on a process as an object), an activity diagram focuses on the flow

of activities involved in a single process. The activity diagram shows the how those

activities depend on one another. The three involved classes (people, etc.) of the activity

are Customer, ATM, and Bank. The process begins at the black start circle at the top and

ends at the concentric white/black stop circles at the bottom. The activities are rounded

rectangles.

Activity diagrams can be divided into object swim lanes that determine which object is

responsible for which activity. A single transition comes out of each activity, connecting it

to the next activity.

3.4.4 User interface design

The user interphase allows a user to interact with a system. The proposed system

will utilize a graphical user interface (GUI). The designs for the various GUI screens are

shown in section 4.2.

3.5 Choice of programming Language

The proposed system was programmed using Java, NETBEAN. Its a high level

programming language. A program written in a high-level language cannot be run directly on any
38

computer. First, it has to be translated into machine language. This translation can be done by a

program called a compiler. There is an alternative to compiling a high-level language program.

Instead of using a compiler, which translates the program all at once, you can use an interpreter,

which translates it instruction-by-instruction, as necessary. An interpreter is a program that acts

much like a CPU, with a kind of fetch-and-execute cycle. In order to execute a program, the

interpreter runs in a loop in which it repeatedly reads one instruction from the program, decides

what is necessary to carry out that instruction, and then performs the appropriate machine-language

commands to do so.

The designers of Java chose to use a combination of compilation and interpretation. Programs

written in Java are compiled into machine language, but it is a machine language for

a computer that doesnt really exist. This so-called virtual computer is known as the Java

Virtual Machine, or JVM. The machine language for the Java Virtual Machine is called Java

bytecode. There is no reason why Java bytecode couldnt be used as the machine language of a

real computer, rather than a virtual computer. But in fact the use of a virtual machine makes

possible one of the main selling points of Java: the fact that it can actually be used on any

computer. All that the computer needs is an interpreter for Java bytecode. Such an interpreter

simulates the JVM in the same way that Virtual PC simulates a PC computer. (The term JVM

is also used for the Java bytecode interpreter program that does the simulation, so we say that

a computer needs a JVM in order to run Java programs. Technically, it would be more correct

to say that the interpreter implements the JVM than to say that it is a JVM.)

Of course, a different Java bytecode interpreter is needed for each type of computer, but

once a computer has a Java bytecode interpreter, it can run any Java bytecode program. And

the same Java bytecode program can be run on any computer that has such an interpreter.
39

This is one of the essential features of Java: the same compiled program can be run on many

different types of computers. I should also note that the really hard part of platform-independence

is providing a Graphical User Interfacewith windows, buttons, etc.that will work on all the

platforms that support Java.

MySQL is a Structured Query language; MySQL is a popular open source Database Management

System (DBMS) that is known for its blistering performance. It runs on numerous operating

systems, including most Linux variants. To improve performance, it has a slimmer feature set than

do many other DBMSs. Its critics point out that it is not a fully relational DBMS since it does not

support many key features of relational databases, particularly in how it processes transactions.

MySQL in a Nutshell describes four implementations of the current SQL standard, SQL99 (also

known as SQL3): Microsofts SQL Server, MySQL, Oracle, and PostgreSQL. Relational Database

Management Systems (RDBMSs), such as SQL Server and Oracle, are the primary engines of

information systems worldwide, particularly Internet/Intranet applications and distributed

client/server computing systems. An RDBMS is defined as a system whose users view data as a

collection of tables related to each other through common data values. Data is stored in tables, and

tables are composed of rows and columns. Tables of independent data can be linked (or related) to

one another if they each have columns of data (called keys) that represent the same data value.

3.6 System testing

Software testing is a critical element in software quality assurance and represents the

ultimate review of specification, design and code generation. Software testing fundamentals define

the overriding objectives for software testing.


40

The two software testing that will be used in testing our proposed system are the Alpha and

Beta testing. The alpha testing is usually carried out by the test takes places at the developers

sites. Developers observe the users and note problems. The beta testing comes after the alpha

testing has been carried out. The goal of beta testing is for the attendance management system to

be tested outside of the developers site to discover any flaws or issues from the users perspective

which the user would not want to experience when the final version of the application is delivered.

The testing objectives of our proposed system is to meets the business and technical requirements

that guided its design and development and works as expected. It will be useful to systematically

uncovers different classes errors and to do so with minimum amount of time and effort. Before

applying methods to design effective test cases, the following principles must be taken into

consideration in software testing:

i. All tests should be traceable to end user requirement

ii. Tests should be planned long before testing begins

iii. To be mostly effective, testing should be conducted by an independent third party

iv. Exhaustive testing is not possible

v. Testing should begin in the beginning and progress toward testing in the large
41

CHAPTER FOUR
DESIGN AND IMPLEMENTATION
4.0 Introduction
In this section, we focused on the design and implementation of the software. It will discuss the

database design, business logic and application interface. This chapter explicitly explains the

architecture of the system design including components, modules and how the different modules

function together.

4.1 Requirement for the Development of the System

In section 3.2, we look at the system requirement from the user. Here, we are going to dive

into the system requirement for the development of the software from the developer of the system.

At this stage, the database administrator, programmers and developers come together and plan on

the architecture of the software. The following are list of requirements needed for the development

stage.

Hardware Requirements:

A personal computer system with the following features:

Processor: Minimum of Intel Pentium IV and above.

RAM: Minimum of 512MB and above.

Processor speed: Minimum of 1GHz and above.

VGA: Nvidea GForce 2 or its equivalent.

Software Requirements:

Operating System: Windows 7 or above.

Web Server: XAMP server 3.2.2.


42

A PHP enabled IDE: NetBeans 6.0 and above, Notepad ++.

Web Browser: Mozilla, Google Chrome

Interface Design: Dream waver MX or later version

4.2 System Design

This is one major phase in system development as the application of technical specification

obtained is incorporated here. Its the specification or construction of a technical, computer based

solution. In sections 3.4 and 3.5, we describe the features of logical and physical design. We also

focus on the actual representation of the logical and physical design for our proposed system.

4.2.1 The Use Case

The use case diagram shows the users of a system and functions that they can

perform when making use of the system. Each user is called an actor and the functions are

referred to as use- case. Figure 4.1.

4.2.2 The Activity Diagram

In order to understand how the activity diagram performs with respect to what its

meant to model, it should be interpreted beginning from the single small dark circle as

shown in Figure 4.2. The single small dark circle is used to depict the starting point of

activity. The rounded rectangle is used to represent the activity that occurred, while the

diamond shape is used to show the points of decision when need arises. As usual the double

small circle is used to depicts the end of the final activity. The arrows as they indicate are

used to show the direction of activity flow as the case may be due to how users chose to

interact with the system


43

Login

Register Biodata

Fingerprint
Identification

Student Upload picture Admin

Attendance report

Mark Attendance

Fingerprint verification

Add Department

Lecturer Add Lecturer

Figure 4.1: Use case diagram of the system


44

Logi
n

False
Generate error
report
True

Admin Student
profile profile

Add Add Verify Mark View Register Fingerprint Upload


new departmen Fingerprint Attendanc Attendance Bio data identification passport
lecture t e Report and

Logout

Figure 4.2: Activity diagram of the System


45

4.2.3 Entity Relationship Diagram

The entity relationship diagram (E-R diagram) shows the relationship between

different entities. The diagram in Figure 4.3 shows how each of the entity interact with

each other. The E-R diagram will further be translated into tables where information will

be saved.

4.2.4 User Interface Design

The presentation layer of our system is where information input is being provided

by the user. The sketch of interface design carried out by the java developer application.

The user interface allows a user to interact with a system, tit will also utilize a graphical

user interface (GUI).


46

Figure 4.3: Entity Relationship Diagram of the system


47

Figure 4.4 Index page


48

Figure 4.5: Student interface I


49

Figure 4.6: Student interface II


50

Figure 4.7: Student interface III


51

Figure 4.8: Student interface IV


52

Figure 4.9: Student interface V


53

Figure 4.9.0: Student interface VI


54

4.3 System Architecture

The diagram shown in Figure 4.5 is a representation of a 3 tier architecture showing how

information flows among presentation layer which is the browser, the application layer which is

the web server and the data layer which is the database engine.

4.4 Coding and Debugging

The software was written in Java. In order to compile the program as well as all other

programs for this project, we have to use Net beans

4.5 Deployment

The database querying to the application server, the interaction between the phase.

Hardware Requirements:

A dedicated server machine with the following features:

Processor: Minimum of Intel Pentium IV and above.

RAM: Minimum of 512MB and above.

Processor speed: Minimum of 1GHz and above.

VGA: Nvidea GForce 2 or its equivalent.

Software Requirements:

Operating System with GUI

Web Server: XAMP server 3.2.2


55

4.6 System testing

In order to ensure that the developed system properly function, each module was tested

separately to eliminate build- up of error and real data were used to demonstrate that the developed

system operates according to specifications. Each test was carried out to include acceptance

testing, integration testing and security testing. The system was tested to ensure that the access

privileges is properly assigned in order not to grant unauthorized users access to pages they werent

meant to see or carry out unauthorized process

4.7 Software Maintenance

Maintenance will be carried out by the system engineers in order to improve the system

delivery and durability. Maintenance has to do with the correction of bugs noticed during the

deployment and using of the software, addition of new features of the system and extension of

already existing features using the systems life time. There is various form of maintenance that

may be carried out on the system

Correction Maintenance, a type of maintenance that takes place when the system falls to

functions expected. Corrective maintenance eliminates the cause of the system failure. This can be

in the form of removal, modification and addition of program codes

Adaptive Maintenance, since the environment is dynamic, it should be made to suit whatever

requirement that may change in the long run. Its also the modification of the software product

performed after delivery to keep the computer program usable after changing environment.

Preventive Maintenance, involves measures taken to prevent the system from crashing and the

system uses input validation mechanism to reduce or eliminate the occurrence of system crashing
56

Emergency Maintenance, an unscheduled corrective maintenance performed on the system to

keep the system operational. It could either be performed by the system designer or by the software

product itself which is already encoded in its program.


57

CHAPTER FIVE

CONCLUSION

5.0 Introduction

The chapter explain the possible improvement that can make the software better as the

years come by. Also, some modularity was advised to improve the efficiency and customer

satisfaction.

5.1 Summary

This project has been developed a software for fingerprint verification for an attendance

management system for students of Computer Science department, Obafemi Awolowo University.

It was developed to accurately manage the attendance system of the department

5.2 Recommendation

As a contemporary science department that deals with digital trends, its recommended that

the department should make the software a web application. A web application that sponsors

feedback and make it open for correction and improvement by their respective user.

5.3 Conclusion

When fully implemented the prosed system will definitely benefit users (students and

lecturers). The lecturer will have another way of distributing software to students while the

students will have an alternative means of downloading software within the department. It will be

possible to read post and reviews on the latest improvement available for the system.
58

REFERENCES

Arjona R and Baturone I Model-based Design for Selecting Fingerprint Recognition

Algorithms for Embedded Systems Electronics, Circuits and Systems (ICECS), 19th IEEE

International Conference 2012.

Azarnoush A, Kiani K Improving the Performance of an HMM-based Fingerprint

Recognition System Computer Applications & Research (WSCAR), World Symposium 2014.

Barrenechea1 M, Altuna2 J, Miguel S A Low-Cost FPGA-based Embedded Fingerprint

Verification and Matching System, Vol 3 No 2 Pg250 261, January 2014.

Bifari, E.N. Elrefaei, L.A. Automated Fingerprint Identification System Based on

Weighted Feature Points Matching Algorithm.

Cheng X, Tulyakov S and Govindaraju V Minutiae-based Matching State Model for

Combinations in Fingerprint Matching System IEEE Conference on Computer Vision and Pattern

Recognition Workshops 2013.

Gutirrez P D, Lastra M, Herrera F, and Bentez J M A High Performance Fingerprint

Matching System for Large Databases Based on GPU, IEEE TRANSACTIONS ON

INFORMATION FORENSICS AND SECURITY, VOL. 9, NO. 1, JANUARY 2014.

Haiyun X, Raymond N. J. Veldhuis, Tom A. M. Kevenaar, and Ton A. H. M. Ackermans

A Fast Minutiae-Based Fingerprint Recognition System, IEEE SYSTEMS JOURNAL, VOL. 3,

NO. 4, DECEMBER 2009.

Hong L, Wan Y, and Jain A K. Fingerprint Image Enhancement: Algorithm and

performance algorithm". IEEE Transactions on Pattern Analysis and Machine Intelligence, VOL

20, NO 8, MAY 1998.


59

Kamarajui M, Kumar P A DSP based Embedded Fingerprint Recognition System, 13th

International Conference on Hybrid Intelligent Systems (HIS) 2013.

Lasisi H. and Ajisafe A.A. Development of stripe biometric based fingerprint

Authentications systems in automated teller machines 2nd International Conference on Advances

in Computational Tools for Engineering Applications (ACTEA) 2012.

Lei Zhang, Mei Xie Realization of a New-style Fingerprint Recognition System Based on

DSP, Proceedings of IEEE International Symposium on IT in Medicine and Education 2008.

Lorrentza P, Howellsb W. G. J, McDonald-Maierc K.D. A Fingerprint Identification

System using adaptive FPGA based Enhanced Probabilistic Convergent Network NASA/ESA

Conference on Adaptive Hardware and Systems 2009.

Marcos F-Z & Fabregas J Testing Report of a Fingerprint-Based Door-Opening

System, IEEE A&E SYSTEMS MAGAZINE. JUNE 2005

Militello C, Conti V, Sorbello S, Vitabile D, A Novel Embedded Fingerprints

Authentication System Based on Singularity Points, International Conference on Complex,

Intelligent and Software Intensive Systems, ISBN 0-7695-3109-1 2008

Miron R F., Letia T S. and Hulea M Two Server Topologies for a Distributed Fingerprint-

Based Recognition System System Theory, Control, and Computing (ICSTCC), 2011 15th

International Conference,2011.

Mukeshi R, Subashini V.J Fingerprint Based Authentication System Using Threshold

Visual Cryptographic Technique IEEE International Conference On Advances in Engineering,

Science and Management (ICAESM -2012) March 30, 31, 2012.

Nagaty K A, An Energy-Based Fingerprint Matching System, Consumer

Communications and Networking Conference, 2004. CCNC 2004.


60

Nayak V C, Kanchan T. Lobo S W, and Rastogi P etc. \Sex differences from fingerprint

ridge density in the Indian population". Journal of Forensic and Legal Medicine, VOL 17, NO 1,

September 2007.

Nilsson K and Bigun J. Localization of corresponding points in fingerprints by complex

altering". Pattern Recognition Letters 24, page 2135 - 2144, October 2003.

Pallav G, Ravi S*, Raghunathan A *, Niraj K. Efficient Fingerprint-based User

Authentication for Embedded Systems, DAC2005, June l3-17,2005, Anaheim, Califomia, USA.

Copyright 2005

Prabhakar S, Pankanti S, and Jain A. K, Biometric Recognition: Security and Privacy

Concerns, IEEE Security and Privacy Magazine, Vol. 1, No. 2, pp. 33-42, 2003

Prof. Pujari S, Behera P, Yadav D, HELIANTHUS - SMART SOLAR PANEL

International Journal of Communication Network Security ISSN: 2231 1882, Volume-2, Issue-

1, 2013.

Rawat A, Indian Institute of Technology, Kanpur. A hierarchical fingerprint matching

system, A thesis for b. tech m. tech dual degree, published in 2009.

Ratha N.K. Karu K, Chen S, and. Jain A. K. A Real-Time Matching System for Large

Fingerprint Database VOL 35 NO 4. http://bizcovering.com/busines/student-attendance-system-

final-year-project-69

Vinoth K G, Prasanth K, S. Raj G, Sarathi S., Fingerprint Based Authentication System

with Keystroke Dynamics for Realistic User IEEE 2014 IEEE Conference Number - 33344

July 8, 2014.
61

Wang F, Zhang Y Study and Design of Intelligent Authentication System Based on

Fingerprint Identification Second International Symposium on Knowledge Acquisition and

Modeling 2009.

Wang F, Zhengyong H, Hui Y, Xiaohua T, Xinbing W, Jinwei H EESM-based Fingerprint

Algorithm for Wi-FiIndoor Positioning System 2nd IEEE/CIC International Conference on

Communications in China (ICCC): Wireless Networking and Applications 2013.

Wang Yuan, Yao Lixiu, Zhou Fuqiang, A Real Time Fingerprint Recognition System

Based On Novel Fingerprint Matching Strategy

Wang Y, Li Q, Zhang L Design of Embedded Fingerprint Identification System Based on

DSP Anti-Counterfeiting, Security and Identification (ASID), 2011

Wayman J. L, Fundamentals of Biometric Authentication Technologies, International

Journal of Image and Graphics, Vol. 1, No. 1, pp. 93-113, 2001

Yang W, Hu J, and Wang S A Delaunay Quadrangle-Based Fingerprint Authentication

System with Template Protection Using Topology Code for Local Registration and Security

Enhancement IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY,

VOL. 9, NO. 7, JULY 2011

Zhu Z, Chen F Fingerprint Recognition-Based Access Controlling System for

Automobiles 2011 4th International Congress on Image and Signal Processing.


62

Codes for the Index pages

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package biometrics.admin;

/**
*
* @author michael-prime
*/
public class RecordsAdmin {

}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package biometrics.model;

import java.io.IOException;
import java.util.Date;
import java.util.Objects;
import biometrics.database.Database;
import biometrics.database.Map;

/**
63

*
* @author Hontimmy
*/
public class Student {

public final String regNumber;


public final String surname;
public final String fname;
public final String sex;
public final String address;
public final String lga;
public final String state;
public final String phone;
public final String email;
public final String faculty;
public final String department;
public final String level;
public final String dob;

public Student(String regNumber,


String surname, String fname, String sex, String address, String lga, String state, String
phone, String email, String faculty,
String department, String level, String dob) {
Objects.requireNonNull(regNumber);
Objects.requireNonNull(surname);

this.regNumber = regNumber;
this.surname = surname;
this.fname = fname;
64

this.sex = sex;
this.dob = dob;
this.address = address;
this.lga = lga;
this.state = state;
this.phone = phone;
this.email = email;
this.faculty = faculty;
this.department = department;
this.level = level;

public Department loadDepartment() throws IOException {


return Database.helper(Department.class).get(department);
}

public static Student load(String regNumber) throws IOException {


return Database.helper(Student.class).get(regNumber);
}

public static final class Builder {


public String regNumber;
public String surname;
public String fname;
public String sex;
public String address;
public String lga;
public String state;
public String phone;
65

public String email;


public String faculty;
public String department;
public String level;
public String dob;

public Builder(Student s) {
this.regNumber = s.regNumber;
this.surname = s.surname;
this.fname = s.fname;
this.sex = s.sex;
this.dob = s.dob;
this.address = s.address;
this.lga = s.lga;
this.state = s.state;
this.phone = s.phone;
this.email = s.email;
this.faculty = s.faculty;
this.department = s.department;
this.level = s.level;

public Builder() {
}

public Student build() {


return new Student(regNumber, surname, fname, sex, address, lga, state, phone, email,
faculty, department, level,dob );
66

}
}

public static final class Factory extends biometrics.database.Factory<Student> {


public Factory() {
super(Student.class,
"regNumber", "surname", "fname", "sex", "dob", "address", "lga", "state", "phone",
"email", "faculty",
"department", "level");
}

@Override
public Student from(Map map) {

return new Student(map.getAny("regNumber"),


map.getStr("surname"),
map.getStr("fname"),
map.getStr("sex"),
map.getStr("address"),
map.getStr("lga"),
map.getStr("state"),
map.getStr("phone"),
map.getStr("email"),
map.getStr("faculty"),
map.getStr("department"),
map.getStr("level"),
map.getStr("dob"));
}

@Override
67

public Object get(Student s, String field) {


switch(field.toLowerCase()) {
case "regnumber": return s.regNumber;
case "surname": return s.surname;
case "fname": return s.fname;
case "sex": return s.sex;
case "dob": return s.dob;
case "address": return s.address;
case "lga": return s.lga;
case "state": return s.state;
case "phone": return s.phone;
case "email": return s.email;
case "faculty": return s.faculty;
case "department": return s.department;
case "level": return s.level;
default: throw new IllegalArgumentException(field);
}
}

}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package biometrics.model;

import java.io.IOException;
68

import java.util.Date;
import java.util.Objects;
import biometrics.database.Database;
import biometrics.database.Map;

/**
*
* @author Hontimmy
*/
public class Student {

public final String regNumber;


public final String surname;
public final String fname;
public final String sex;
public final String address;
public final String lga;
public final String state;
public final String phone;
public final String email;
public final String faculty;
public final String department;
public final String level;
public final String dob;

public Student(String regNumber,


String surname, String fname, String sex, String address, String lga, String state, String
phone, String email, String faculty,
String department, String level, String dob) {
69

Objects.requireNonNull(regNumber);
Objects.requireNonNull(surname);

this.regNumber = regNumber;
this.surname = surname;
this.fname = fname;
this.sex = sex;
this.dob = dob;
this.address = address;
this.lga = lga;
this.state = state;
this.phone = phone;
this.email = email;
this.faculty = faculty;
this.department = department;
this.level = level;

public Department loadDepartment() throws IOException {


return Database.helper(Department.class).get(department);
}

public static Student load(String regNumber) throws IOException {


return Database.helper(Student.class).get(regNumber);
}

public static final class Builder {


public String regNumber;
public String surname;
70

public String fname;


public String sex;
public String address;
public String lga;
public String state;
public String phone;
public String email;
public String faculty;
public String department;
public String level;
public String dob;

public Builder(Student s) {
this.regNumber = s.regNumber;
this.surname = s.surname;
this.fname = s.fname;
this.sex = s.sex;
this.dob = s.dob;
this.address = s.address;
this.lga = s.lga;
this.state = s.state;
this.phone = s.phone;
this.email = s.email;
this.faculty = s.faculty;
this.department = s.department;
this.level = s.level;

}
71

public Builder() {
}

public Student build() {


return new Student(regNumber, surname, fname, sex, address, lga, state, phone, email,
faculty, department, level,dob );
}
}

public static final class Factory extends biometrics.database.Factory<Student> {


public Factory() {
super(Student.class,
"regNumber", "surname", "fname", "sex", "dob", "address", "lga", "state", "phone",
"email", "faculty",
"department", "level");
}

@Override
public Student from(Map map) {

return new Student(map.getAny("regNumber"),


map.getStr("surname"),
map.getStr("fname"),
map.getStr("sex"),
map.getStr("address"),
map.getStr("lga"),
map.getStr("state"),
map.getStr("phone"),
map.getStr("email"),
map.getStr("faculty"),
72

map.getStr("department"),
map.getStr("level"),
map.getStr("dob"));
}

@Override
public Object get(Student s, String field) {
switch(field.toLowerCase()) {
case "regnumber": return s.regNumber;
case "surname": return s.surname;
case "fname": return s.fname;
case "sex": return s.sex;
case "dob": return s.dob;
case "address": return s.address;
case "lga": return s.lga;
case "state": return s.state;
case "phone": return s.phone;
case "email": return s.email;
case "faculty": return s.faculty;
case "department": return s.department;
case "level": return s.level;
default: throw new IllegalArgumentException(field);
}
}

}
}
/*
* To change this license header, choose License Headers in Project Properties.
73

* To change this template file, choose Tools | Templates


* and open the template in the editor.
*/
package biometrics.database;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
*
* @author michael-prime
*/
public class JdbcDatabase extends Database {
static final Logger LOGGER = Logger.getLogger(JdbcDatabase.class.getName());
String url = "jdbc:mysql://localhost/oaubio";
String dbname = "root";
74

String dbpass = "";

public Connection connect() {


try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, dbname, dbpass);
System.out.println("Connected to DB!");
return connection;
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, e);
return null;
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, e.toString());
return null;
}
}

private static List<Map> maps(ResultSet set) throws SQLException, IOException {


ResultSetMetaData rsmd = set.getMetaData();
final int columns = set.getMetaData().getColumnCount();
final List<Map> maps = new ArrayList<>();

int size = 0;
while (set.next()) {
size++;
Map map = new Map();
for (int i = 1; i <= columns; i++) {
String key = rsmd.getColumnLabel(i);
Object val = set.getObject(i);
if (val instanceof Blob) {
75

System.out.println(key + " is Blob");


InputStream is = set.getBinaryStream(i);
ByteArrayOutputStream baos = new ByteArrayOutputStream();

int b;
while ((b = is.read()) != -1) {
baos.write(b);
}
val = baos.toByteArray();
}
map.put(key, val);
}
maps.add(map);
}

System.out.println(size + " rows");


return maps;
}

private void execute(String sql, Collection<?>... multiArgs) throws IOException {


System.err.println(sql);
if (DEBUGGING) {
int index = 1;
for (Collection<?> args : multiArgs) {
for (Object o : args) System.err.println((index++) + " " + o);
}
} else {
try (PreparedStatement ps = connect().prepareStatement(sql)) {
int index = 1;
for (Collection<?> args : multiArgs) {
76

for (Object arg : args) {


if (arg instanceof byte[]) {
ps.setBytes(index++, (byte[]) arg);
} else {
ps.setObject(index++, arg);
}
}
}
ps.execute();
} catch (SQLException ex) {
throw new IOException(ex);
}
}
}

private List<Map> executeQuery(String sql, Collection<?>... multiArgs) throws IOException {


System.err.println(sql);
if (DEBUGGING) {
int index = 1;
for (Collection<?> args : multiArgs) {
for (Object o : args) System.err.println((index++) + " " + o);
}
return Collections.emptyList();
}

try (PreparedStatement ps = connect().prepareStatement(sql)) {


int index = 1;
for (Collection<?> args : multiArgs) {
for (Object arg : args) {
if (arg instanceof byte[]) {
77

ps.setBytes(index++, (byte[]) arg);


} else {
ps.setObject(index++, arg);
}
}
}
try (ResultSet result = ps.executeQuery()) {
return maps(result);
}
} catch (SQLException ex) {
throw new IOException(ex);
}
}

@Override
protected List<Map> getAll(String table) throws IOException {
return executeQuery("SELECT * FROM " + table);
}

@Override
protected List<Map> select(String table, Map filter) throws IOException {
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM ").append(table);
String prefix = "WHERE";

for (String key : filter.keySet()) {


sql.append(' ').append(prefix);
sql.append(' ').append(key);
sql.append("=?");
prefix = "AND";
78

return executeQuery(sql.toString(), filter.values());


}

@Override
protected void delete(String table, Map filter) throws IOException {
StringBuilder sql = new StringBuilder();
sql.append("DELETE FROM ").append(table);
String prefix = "WHERE";

for (String key : filter.keySet()) {


sql.append(' ').append(prefix);
sql.append(' ').append(key);
sql.append("=?");
prefix = "AND";
}

execute(sql.toString(), filter.values());
}

@Override
protected void update(String table, Map filter, Map object) throws IOException {
StringBuilder sql = new StringBuilder();
sql.append("UPDATE ").append(table);
sql.append( " SET ").append(object.toString(", ", "?"));
sql.append(" WHERE ").append(filter.toString(" AND ", "?"));

execute(sql.toString(), object.values(), filter.values());


}
79

@Override
protected void insert(String table, Map object) throws IOException {
StringBuilder sql = new StringBuilder();
sql.append("INSERT INTO ").append(table);
sql.append(" (").append(String.join(",", object.keySet())).append(')');
sql.append(" VALUES (").append(repeat("?", object.size())).append(')');

execute(sql.toString(), object.values());
}

private static String repeat(String text, int count) {


StringBuilder sb = new StringBuilder();
if (count > 0) sb.append(text);
for (int i = 0; i < count - 1; i++) {
sb.append(",").append(text);
}
return sb.toString();
}
}
package biometrics.model;

import java.io.IOException;
import biometrics.database.Database;
import biometrics.database.Map;

/**
*
* @author Hontimmy
*/
80

public class Course {


public final String code;
public final String name;
public final int units;

public Course(String code, String name, int units) {


this.code = code;
this.name = name;
this.units = units;
}

@Override
public String toString() {
return code;
}

public static Course load(String code) throws IOException {


return Database.helper(Course.class).get(code);
}

public static final class Factory extends biometrics.database.Factory<Course> {


public Factory() { super(Course.class, "code", "name", "units"); }

@Override
public Course from(Map map) {
return new Course(map.getStr("code"),
map.getStr("name"),
map.getInt("units"));
}
81

@Override
public Object get(Course c, String field) {
switch (field.toLowerCase()) {
case "code": return c.code;
case "name": return c.name;
case "units": return c.units;
default: throw new IllegalArgumentException(field);
}
}

}
}

You might also like