0% found this document useful (0 votes)
334 views

Final Major Project

The document describes a blood bank management system that aims to store, process, retrieve and analyze information related to blood banks. It maintains data on blood donors, blood groups, and helps manage blood bank operations more effectively. The system provides transparency in blood bank processes, makes obtaining blood hassle-free and prevents corruption. It automates all blood bank operations and allows fast searching of records to find required donor details instantly.

Uploaded by

Anu Dikshit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
334 views

Final Major Project

The document describes a blood bank management system that aims to store, process, retrieve and analyze information related to blood banks. It maintains data on blood donors, blood groups, and helps manage blood bank operations more effectively. The system provides transparency in blood bank processes, makes obtaining blood hassle-free and prevents corruption. It automates all blood bank operations and allows fast searching of records to find required donor details instantly.

Uploaded by

Anu Dikshit
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 99

Abstract

Blood Bank Management System (BBMS) is a browser-based system that is designed to store,

process, retrieve and analyse information concerned with the administrative and inventory

management within a blood bank. This project aims at maintaining all the information pertaining

to blood donors, different blood groups available in each blood bank and help them manage in a

better way. Aim is to provide transparency in this field, make the process of obtaining blood from

a blood bank hassle free and corruption free and make the system of blood bank management

effective.

1
Introduction
The BLOOD BANK MANAGEMENT SYSTEM is great project. this project is designed for

successful completion of project on blood bank management system. the basic building aim is to

provide blood donation service to the city recently. Blood Bank Management System (BBMS) is a

browser-based system that is designed to store, process, retrieve and analyse information concerned

with the administrative and inventory management within a blood bank. This project aims at

maintaining all the information pertaining to blood donors, different blood groups available in each

blood bank and help them manage in a better way. Aim is to provide transparency in this field, make

the process of obtaining blood from a blood bank hassle free and corruption free and make the

system of blood bank management effective.

The Blood bank system project report contain information related to blood like

• Blood type

• Date of Donation of blood

• validity of Blood s

• Available Blood group

2
Objective
The main objective of this application is to automate the complete operations of the blood bank.
They need maintain hundreds of thousands of records. Also searching should be very faster so they
can find required details instantly.

To develop a web-based portal to facilitate the co-ordination between supply and demand of blood.
This system makes conveniently available good quality, safe blood and other blood components,
which can be provided in a sound, ethical and acceptable manner, consistent with the long-term
wellbeing of the community. It actively encourages voluntary blood donation, motivate and maintain
a well-indexed record of blood donors and educate the community on the benefits of blood donation.
This will also serve as the site for interaction of best practices in reducing unnecessary utilization of
blood and help the state work more efficiently towards self-sufficiency in blood.

The system will provide the user the option to look at the details of the existing Donor List, Blood
Group and to add a new Donor. It also allows the user to modify the record. The administrator can
alter all the system data.

This project is containing following features/task which is performed by the blood bank: -

*Login page: - The page where the system users will submit their system credentials access the
system data.

*Home Page: - The page where the system users will be redirected after logging into the blood
bank management system. This page displays the available volume of each blood group and also
displays the system data summary.

*Donor Page: -The page where the donated blood is listed and managed.

*Blood donation Page: -The page where all donated blood is listed and managed. The system
feature that updating the available volume of the blood stocks.

*Requests Page: -The page where all blood requests are listed and managed.

*Handed Over Page: - The page where all given blood or handed over blood requests are listed
and managed.

3
SYSTEM ANALYSIS

Existing System: Everybody is a patient sooner or later, and we as a whole need great medical
care. We accept that specialists are altogether therapeutic experts and that there is great
research behind all their choices. That can't be the situation all the time. They cannot possibly
focus on memory all the knowledge they require for each circumstance, and they probability not
to have it promptly available. Even on the off chance that they had access to the massive
measures of information expected to look at treatment results for all the illnesses they
experience, they would in any case need time and ability to analyse that data and incorporate it
with the patient's own therapeutic profile. Be that as it may, this sort of inside and out research
and measurable examination is past the extent of a doctor's work. They need a specialist who
will converse with them, tune in to what they state and give them exhortation about how to
show signs of improvement and secure their wellbeing later on. When in doubt, the craving for
an answer is helper to the longing of being pondered. Drawback of a current framework would
be that the patients need to visit the specialist face to face and still does not get appropriate
treatment, as the specialists are unfit to foresee the accurate sickness.

Proposed System: To beat the downside of existing framework we have created smart health
prediction System. We have built up a specialist framework called Smart Health Prediction
framework, which is utilized for improving the task of specialists. A framework checks a patient
at initial level and proposes the possible diseases. It begins with getting some information about
manifestations to the patient, in the event that the framework can distinguish the fitting
sickness, at that point it proposes a specialist accessible to the patient in the closest conceivable
territory. On the off chance that the framework isn't sufficiently sure, it asks few questions to the
patients, still on the off chance that the framework isn't sure; at that point it will show a few
tests to the patient. In light of accessible total data, the framework will demonstrate the result.

Methodology:

Module1: patient Module

So as to execute the Proposed System, we will specify graphs that cause us to comprehend the
structure of the proposed framework.
Patient login: Patient login to the framework using ID and password
Patient registration: If a patient is a new client, the framework asks for personal details by
giving client ID and secret key through which he can login to the framework.

Prediction of the disease: The patient will show the side effects caused as a result of his
ailment. The system will make certain request with respect to his ailment and after that anticipate
the disease depending on the indications determined by patient and the framework will likewise
propose specialist’s dependent on the illness.

4
Inquiry about Doctor: Patient can scan for specialist by indicating name, address or type.
Remark: Input: Patient will comment his view and this will be accounted to the administrator.

Module 2: Doctor Module

Doctor Login: Doctor will get to the framework utilizing his User ID and Password.
Details of the patient: Specialist can view the details of the patient that are given by the
patient at the time of registration.

Notification: Doctor will get notice on what number of individuals had gotten to the
framework and what all are the symptoms anticipated by the framework. With the assistance of
these structures, the framework is planned and executed which helps in mechanization of the
wellbeing forecast framework. With the assistance of these structures, the framework is planned
and executed which helps in mechanization of the wellbeing forecast framework.

Working of the system:


As indicated by the charts, it is a two-level design. We give a structure that demonstrates a
rundown of side effects. The client will enter those side effects that he encounters. In view of
picked symptoms the system will produce related ailment. The system will exhibit another
structure that contains a couple of requests if the information for the disorder isn't adequate.
Based on the information an inquiry is made and the data will be based on the reactions to that
inquiry.

Data Mining Architecture:

Data Mining utilized in the field of medicinal application can abuse the concealed examples
present in voluminous therapeutic information which generally is left unfamiliar

5
FEASIBILITY STUDY

• The feasibility study proposes one or more conceptual solution to the problem set of the
project. In fact, it is an evaluation of whether it is worthwhile to proceed with project or not.
• Feasibility analysis usually considers a number of project alternatives, one that is chosen as
the most satisfactory solution. These alternatives also need to be evaluated in a broad way
without committing too many resources. Various steps involved in feasibility analysis are:

1. To propose a set of solution that can realize the project goal. These solutions are usually
description of what the new system should look like.

2. Evaluation of feasibility of such solution. Such evaluation often indicates shortcoming in


the initial goals. This step is repeated as the goal are adjusted and the alternative solution are
evaluated.

Types of feasibility: -
i. Operational feasibility
ii. Technical feasibility
iii. Economic feasibility

i. OPERATIONAL FEASIBILITY: -
Operational feasibility is mainly concerned with issue like whether the system will be used if it is
developed and implemented. Whether there will be resistance from users that will affect the possible
application benefits? The essential question that helps in testing the technical feasibility of a system
are following:
• Does management support the project?
• Are the users not happy with current business practices? Will it reduce the time considerably?
If yes, then they will welcome the change and the new system.
• Have the users involved in the planning and development of the project? Early involvement
reduced the probability of resistance towards the new system.
• Will the proposed system really benefit the organization? Does the overall response increase?
Will accessibility of information be lost? Will the system affect the customer in considerable

6
ii. TECHNICAL FEASIBILITY

Technical feasibility what technical issue to be stand for a manager. Technical feasibility specified
equipment and customer needs by which customer requirement will successfully satisfy. Technical
needs of the manager to manage the mall will be followed: -
1. Manager has facility to produced output in a given time.

2. Manager has more time for customer response under certain condition.

3. Manager always should have Ability to process a certain volume of transaction at a particular
period.

4. Manager has facility to communicate data to distance location like Intelligence Business
Administrator.
The software needed to carry out this project include Java script, HTML, PHP, CSS as front end and
M.S SQL as back end, so the technology required to carry the project is easily technical feasible.
Due to all these reasons implementation of such system becomes not only feasible but reputed to all
the organization.
This feasibility studies carried out by a small group of people who are familiar with information
system techniques, who understand the parts of business that are relevant to the project and are
skilled in system analysis and design process.
These projects are not developed just for fun. They are developed on demand of the organization
corporation staff are almost nil. Any disturbance to the organization if occurs will be advantageous to
the organization. Also, the time required to carry out a will be reduced to a large extent, which will
make the concerned happy and cheerful. The operators now will be able to service more consumers
than before in the same time period. There is no need to recruit new staff to operate the system the
existing staff of the corporation can be trained to interact will the system which is a GUI interface
based and is easy to use. Hence the project is operationally feasible.

iii ECONOMICAL FEASIBILTY

Economic analysis is the most frequently used technique for evaluating the effectiveness of a
proposed system. In feasibility study we consider most of the customer compare facilities on the base
of cost so when Manager manage and provide facilities then always should learn cost estimation.
Every facility Cost manages in this manner that manager have profit an also customer also satisfied.
If benefits outweigh costs, a decision is taken to design and implement the system.
Economic analysis is the most frequently used technique for evaluating the effectiveness of a
proposed system. In feasibility study we consider most of the customer compare facilities on the base
of cost so when Manager manage and provide facilities then always should learn cost estimation.
7
Every facility cost manages in this manner that manager have profit and also customer also satisfied.
If benefits outweigh costs, a decision is taken to design and implement the system.

Cost-benefit analysis
Since cost plays an important role in deciding the new system, it must be identified and estimated
properly. Benefits are also of different types and can be grouped on the basis of advantages they
provide to the manager.

Cost-saving benefit leads to reduction in administrative and operational costs.


Improved-information benefits is where computer-based methods lead to better information
for decision making.

4.INFORMATION GATHERING

• This is process of collecting information related to the project or system. For Gathering the
information, we have to pass the instruction through various phases that relates directly to the
solution of the problem. Information gathering firstly starts with the top-level management.
An overview of the organization, available information, and objectives to be meet by the
proposed system are normally gathered from top level management.
The team paid a visit at the site to have a small of existing system. All relevant personal were
consulted and no information was over-looked. The strategy consisted of:
1. Identify information sources.
2. Revolving a method of obtaining information from identified sources.
3. Using information from module of organization.

Information Sources
The main source of information are users of the system, forms and documents used in the
organization, procedure manuals, rule books, internet etc, reports used by the organization and
existing computer programs (if any).

*Information Gathering Method


Searching for information
• Information can be gathered by interviewing top-level management, middle level
management and operational staff. Besides Interviews group discussion also help the analyst
to gather information.
• It is not possible to obtain all information in a single interview, more than one interview is
thus required.

8
i. ON-SITE OBSERVATION
On-site observation is one of the most effective tools with the analyst where the analyst personally
goes to the site and discovers the functioning of the system. As an observer, the analyst can gain
first-hand knowledge of the activities, operations, processes of the system on-site, hence here the role
of an analyst is of an information seeker.

This information is very meaningful as it is unbiased and has been directly taken by the
analyst. This exposure also sheds some light on the actual happenings of the system as
compared to what has already been documented, thus the analyst gets closer to the system.
This technique is also time-consuming and the analyst should be more patient in gathering the
information. This method is however less effective for learning about people’s perceptions,
feelings and motivations.

Administrator Through on-site observation, analysts can obtain first-hand information about
how activities are carried out. It allows the system analysts to do more measurements.
Observation is relatively in-expensive as compared with other fact-finding techniques. It is
the most useful fact-finding technique.

ii. QUESTIONNAIRE
This is another fact-finding technique used for collecting information by conducting review periods.
The document can be measured through this technique by the distributed response. It gives a large
collection of problem and their solution which are easy to understand and allows the system analyst
to do system measurement.
Questionnaires are useful for collecting statistical data. Sometimes the questionnaires are not
promptly replied and several follow-ups/personal interviews may be required to get questionnaires
back from respondents. But if the questionnaires are short the probability of getting the reply is high
When data has to be collected from large number of people questionnaires are useful.

iii. INTERVIEWS

Planning an Interview:
Before starting the interview, the analyst must make a list of people to be interviewed and in what
order, plan and note down a list of questions to be asked, plan several interview with same person-
mainly to clarify doubts and interview groups as appropriate.

Interviewing Techniques

There are some guidelines to ensure a successful interview:

9
Make a prior appointment with the person to be interviewed and meet him at the allotted time. Read
background material and go prepared with checklist. State purpose of interview. Be punctual and pay
attention to what user says. Do not use computer jargon. Obtain both quantitative and qualitative
information. Discriminate between essential and desirable requirements. State what you understand
and get it confirmed. Do not prolong interview and summarize the information gathered by you
during the interview and verify this with the user.

This method of fact finding can be especially helpful to collect information from individual who do
not communicate effectively in writing or who may not have time to complete questionnaires.
Interviews allows analyst to respond freely and openly to the question and to get more feedback. It
improves the communication skills of both and interviewer and interviewee.
5.REQUIREMENT ANALYSIS & SPECIFICATIONS

This phase starts once the feasibility study phase is complete and project is found to be
financially sound and technically feasible.
The goal of this phase is to clearly understand the customer requirement and to
systematically organized this requirement in a specification document.

Requirement gathering and analysis:


Requirement gathering: It involves interviewing end users and customers and study the existing
documents to collect all possible information regarding the system. Sometime questionnaire is also
used. If the project involves automatic some existing procedures than the task of system analyst
becomes a little easier however in the absence of a working system much more imagination and
creativity on the part of the system analyst requirement.
Analysis the gathered information:
The main purpose of this activity is to clearly understand the exact requirement of the customer.
After the analyst has understood he exact customer requirement he proceed to identify and resolve
the various requirement problems. A Software Requirements specification (SRS) is complete
description of the behaviour of the system to be developed. It includes a set of use cases that describe
all the interaction the users will have with the software. Use cases are also known as functional
requirements. In addition to use cases, the SRS also contains non-functional (or supplementary)
requirements. Non -functional requirements which impose constraints on the design or
implementation (such as performance engineering requirements, quality standards, or design
constraints)
In this phase, the development teams visit the manager and studies their system. By the end of the
feasibility study, the team furnishes a document that holds the different specific recommendation for
the manager system. It also defines in which manner Manager provide facility to customer
The requirement gathering process is intensified and focused specially on customer because
manger fully dependent on the customer need. To understand the information domains well
as required function, behaviour, needs and interfacing of the customer manager.

10
DATA FLOW DIAGRAM (DFD)

The DFD is simple graphical notation that can be used to represent a system in terms of the input
data to represent a system in a term of the input data to the system, various processing carried out on
these data generated by the system. The main reason why the DFD technique is so popular is an
account of the fact that is very simple formalism-it is a simple to understand and use. DFD is also
known as a data flow graph or bubble chart.
Starting with a set of high-level function that a system performs, a DFD model hierarchically
represents various sub-functions. In fact, any hierarchical model is simple to understand.

1. Physical DFD
The data flow diagrams which represent model of the current system are known as physical DFD.
These diagrams are drawn when the analyst studies the current system working in detail.

2. Logical DFD
The data flow diagrams which represent the model of the proposed system are known as logical
DFD, these logical DFD is drawn from the physical DFD.

The Following Observation About are Important:


3. All names should be unique. This makes it easier to refer to item in the DFD.
4. Remember that DFD is not a flowchart. Arrow in the flowchart represent the order of events
while arrows in the DFD represent the flow of data. A data flow diagram does not imply any
order of event.
5. Choose the meaningful name for processes and external entity.
6. Number of processes.
7. Avoid the complex data flow diagram.
8. The process is always running, they do not start or stop.
9. All data flow in named.
10. Every process should receive an input and generate out.

11
Four Simple Notations are Used to Complete a DFD

1. Data Flow: -
The data flow indicates the movement of data either from input to process or from process to output.
Data flow is used to show what data is flowing. The arrowhead indicates direction of data flow.
For Example- store details, reports etc.

2. Process: -
Process is the action performed on input data to produce the output data. They are given some
meaningful names. It is used for transform data from one state to another state.
For example- prepare bills etc.

3. External Entity: -
A square defines the source or destination of the system data. It represents any entity that supplies
data or receives information from the system but it is not a part of the system.
For example- Admin, Donor.

4. Data Store:-
Data store indicates the data files or register where data is accumulated. It is represented by open
rectangle.
For example- Admin , Doner register etc.

12
The data flow diagrams which represent the model of the proposed system are known as logical
DFD. The logical DFD is drawn from the physical DFD.
The following observations about DFD are important:
1. All names should be unique. This makes it easier to refer to item in the DFD.
2. Remember that DFD is not a flowchart. Arrow in the flowchart represent the order of events
while arrows in the DFD represent the flow of data. A data flow diagram does not imply any
order of event.
3. Choose the meaningful name for processes and external entity.
4. Number of processes.
5. Avoid the complex data flow diagram.
6. The process are always running, they do not start or stop.
7. All data flow in named.
8. Every process should receive an input and generate out.

*Zero level DFD for Blood bank management system

Admin

Login

Blood Bank Blood Master


system

Login

User

13
*First level DFD for Blood bank management system

Register Donor Apply for blood

Login search blood

Blood
Bank
Manage Donor
Admin managem Request
entsystem View status
Manage Request

14
*Final DFD for Blood Bank management system

15
Logical Design: -
i. ENTITY RELATIONSHIP DIAGRAM(ER-DIAGRAM)
The entity-relationship data model is based on a perception of a real world that consists of a
collection of basic objects called entities and of relationships among these objects. An entity is an
“object” in the real world that is distinguishable from other objects. For e.g. each customer is an
entity and rooms can be considered to be entities. Entities are described by a set of attributes. For
e.g. the attributes Room no. and Room type describes a particular Room in a hotel. The set of all
entities of the same type and the set of all relationships of the same type are termed as an entity set
and relationship set respectively.

The logical structure of a database can be expressed graphically by an E- R diagram consists of the
following major components:

1. Entity: -An entity is an “object” in the real world that is distinguishable from all other
objects. An entity set is a set of entities of the same type that share the same attributes.

2. Attributes: -Attributes are descriptive properties possessed by each member of an entity


set

RELATIONSHIP: - A relationship is reason for linking two entity types. These relationships are
sometime called binary relationship because they involve two entity types. A relationship captures
how two or more entities related to one another.
Relationships can be thought as verbs, linking two or more nouns.
Objects are connected to one another by relationship or we can say a relationship is a reason for
linking two entity type. Relationship is represented by diamond notation in the E-R diagram.
These relationships are sometimes called binary relationship because they invoice two entity
types.
• ONE TO ONE
• ONE TO MANY
• MANY TO MANY

16
While using E-R diagrams, we can follow certain guidelines, which are as follows:

• Unnecessary attributes should not be introduced.

• Entities should be merged with common attributes.

• A complex entity should be simplified by decomposing a complex attribute into sub attributes.

• We should generalize or specialize wherever possible and appropriate. Generalization is the result of
taking the union of several lower entity sets to produce higher- level entity set.

17
*E-R Diagram for BLOOD Bank Management system: -

Donor_id

Address

Blood
Contact

Blood id

volume

18
i. Data Dictionary
A data dictionary is a collection of descriptions of the data objects or items in a data model for the
benefit of programmers and others who need to refer to them. A first step in analysing a system of
objects with which users interact is to identify each object and its relationship to other objects. Data
dictionary is the centralized collection of information about data. It stores meaning and origin of
data, its relationship with other data, data format for usage etc. Data dictionary has rigorous
definitions of all names in order to facilitate user and software designers.
Data dictionary is often referenced as meta-data (data about data) repository. It is created along with
DFD (Data Flow Diagram) model of software program and is expected to be updated whenever DFD
is changed or updated.

Requirement of Data Dictionary


The data is referenced vis data dictionary while designing and implementing software. Data
dictionary removes any chances of ambiguity. It helps keeping work of programmers and designers
synchronized while using same reference everywhere in the program.

Data dictionary provides a way of documentation for the complete database system in one place.
Validation of DFD is carried out using dictionary.

19
Table Name: blood_inventory
Primary key: - id
Field Name Data Type Size Constraints Description

id int 30 Primary key To store blood id

Blood_group varchar 10 Not null To store blood type

volume float Not Not null To store volume of blood


specified
status tinyint 1 Not null To store status of
inventory
Donor_id int 30 Not null To store donor id

Request_id int 30 Not null To store request id

Date_created datetime Not null To store date of creation

Description: -This stores the information about the Blood inventory.

20
Table Name: Donors
Primary key:-id
Foreign key:-blood_group

Field Name Data Type Size Constraints Description


id int 30 Primary Key To store donor id

Blood_group varchar 10 Foreign key To store Blood type

Name Text Auto Not null To store name of donor

Address Text Auto Not null To store address of donor

Contact varchar 20 No null To store contact of donor

Email varchar 50 Not null To store email of donor

Date_created datetime Auto Not null To store date of creation

21
Table name: Handeover_request
Primary key: - id
Foreign key: - Request_id

Field Name Data type Size Constraints Description

Id int 30 Primary Key To store the id of handover


blood
Request_id int 30 Foreign key To store Request id

Picked up By text auto Not null To store picking up person

Date_created datetime auto Not null To store date of creation

22
Table name: Requests
Primary key: - id
Foreign key: - blood_group

Field Name Data Type Size constraints Description

Id Int 30 Primary To store request id


key
Ref_code varchar 20 Not null To store reference code of
request

Patient text Auto Not null To store patient name

Blood_group varchar 10 Foreign key To store patient blood group

volume float auto Not null To store volume of blood as


requested

Physician_name text auto Not null To store physician name as the


patient under whome

status tinyint 1 Not null To store weather the request


approved or not

Date_created Datetime auto Not null To store date of creation

23
Table name: users
Primary key: - id

Field Name Data Type size constraints Description

id int 30 Primary key To store the id of user

name text auto Not null To store the name of user

username varchar 200 Not null To store username

Password text auto Not null To store password

type tinyint 1 Not null To store type of user

24
ii. Database Design
Request
Blood Group Donor Registration
req_id
Donor_Id
Bg_id ref_code
Name
Blood group Patient
Blood group
Volume Blood Group
address
Status volume
contact
Donor_id physician name
Mobile
Request_id status
Email
Date_created

Users

User name
Password
Type of user

25
iii. PERT/GANTT Chart

A PERT chart is a project management tool used to schedule, organize, and coordinate tasks within a
project. PERT stands for Program Evaluation Review Technique, a methodology developed by the
U.S. Navy in the 1950s to manage the Polaris submarine missile program. A similar methodology,
the Critical Path Method (CPM) was developed for project management in the private sector at about
the same time.

A PERT chart presents a graphic illustration of a project as a network diagram consisting of


numbered nodes (either circle or rectangle) representing events, or milestone in the project linked by
labelled vectors (directional line) representing tasks in the project. The direction of the arrows on the
lines indicates the sequence of tasks. In the diagram, for example, the tasks between nodes 1, 2, 4, 8
and 10 must be completed in sequence. These are called dependent or serial tasks. The tasks between
nodes 1 and 2, and nodes 1 and 3 are not dependent on the completion of one to start the other and
can be undertaken simultaneously. These tasks are called parallel or concurrent tasks. Tasks that
must be completed in sequence but that don’t require resource or completion time are considered to
have event dependency. These are represented by dotted lines with arrows and are called dummy
activities. For example, the dashed arrow linking nodes 6 and 9incdicates that the system files must
be converted before the user test can take place, but that the resources and time required to prepare
for the user test (writing the user manual and user training) are on another path. Numbers on the
opposite sides of the vectors indicate the time allotted for the task.
The PERT chart is some time preferred over the Gantt chart, another popular project management
charting method, because it clearly illustrates task dependencies. On the other hand, the PERT chart
can be much more difficult to interpret, especially on complex projects.
26
S/W and H/W Requirement
Specification

HARDWARE SPECIFICATION
It is recommended that the minimum configuration for client is as appended below: -
Processor Intel core Duo 2.0 or more

RAM 1 GB or more

Hard disk 80 GB or more

Input Device Keyboard and mouse

Output Device Monitor

SOFTWARE SPECIFICATION

Operating System Windows 7,8,10 or more

RDBMS MS SQL

Front-End Notepad++, Sublime Text


Editor,HTML,CSS,Jquery

Back-End MS SQL Server, and PHP

Web Browsers Google Chrome, opera Browser or more

27
System Design
System design is the process of designing the elements of a system such as the architecture, modules
and components, the different interfaces of those components and the data that goes through that
system.
System Analysis is the process that decomposes a system into its component pieces for the purpose
of defining how well those components interact to accomplish the set requirements.
The purpose of the System Design process is to provide sufficient detailed data and information
about the system and its system elements to enable the implementation consistent with architectural
entities as defined in models and views of the system architecture.

Elements of a System
• Architecture - This is the conceptual model that defines the structure, behaviour and more
views of a system. We can use flowcharts to represent and illustrate the architecture.

• Modules - This are components that handle one specific tasks in a system. A combination
of the modules makes up the system.

• Components - This provides a particular function or group of related functions. They are
made up of modules.

• Interfaces - This is the shared boundary across which the components of the system
exchange information and relate.

• Data - This the management of the information and data flow.


Major Tasks Performed During the System Design Process
1. Initialize design definition
• Plan for and identify the technologies that will compose and implement the systems elements
and their physical interfaces.
• Determine which technologies and system elements have a risk to become obsolete, or evolve
during the operation stage of the system. Plan for their potential replacement.
• Document the design definition strategy, including the need for and requirements of any
enabling systems, products, or services to perform the design.

2. Establish design characteristics


• Define the design characteristics relating to the architectural characteristics and check that
they are implementable.
• Define the interfaces that were not defined by the System Architecture process or that need to
be refined as the design details evolve.
• Define and document the design characteristics of each system element2.

28
3. Assess alternatives for obtaining system elements
• Assess the design options
• Select the most appropriate alternatives.
• If the decision is made to develop the system element, rest of the design definition process
and the implementation process are used. If the decision is to buy or reuse a system element,
the acquisition process may be used to obtain the system element.

4. Manage the design


• Capture and maintain the rationale for all selections among alternatives and decisions for the
design, architecture characteristics.
• Assess and control the evolution of the design characteristics.

Factors that Affect Technology Trade-offs during System Design


Scale of Product
• For example, enterprise software companies that are building system-level software prioritize
reliability because customers need to use them. Each change needs to be rigorously tested,
and often approved before it can be released.
• Meanwhile, consumer internet companies spend time and money on making their UX
delightful so that people want to use them. Reliability is something they’re willing to
sacrifice. Since many are web-based applications, they can iterate quickly and release
changes frequently.

Time
• Learning new technologies sometimes often takes time. The trade-offs in this instance will be
made according to which stack/technology will be in time with the set delivery dates. If
switching to a new stack/technology will result in a major shift on the delivery dates and
major inconveniences to the stakeholders then the switch can be held off until an appropriate
time.

Cost
• On larger scale Technology decisions are made based on which is more cost effective, where
a comparison can be done on which will be more effective between buying an off the shelf
system and customizing it or building a new system.

Efficiency
• Technology trade-offs are also done based on which technology is more efficient for example
choosing between Reacts or Angular for a front-end application.

User Experience and Support


• The amount of support and documentation available on a given technology can also be a
determining factor on the decisions. Working with Technologies that have a large support

29
base, comprehensive documentation and A good user experience is much easier and take a
very short time to ramp up on due to the large number of resources available to support it.

Maintainability
• maintainability in this case is the ease with which a product can be maintained in order to
correct errors, fix bugs and add additional features. Trade-off’s decisions will be made based
on the maintainability of the Technology

Reliability
• In this case the trade-offs are made based on the Technology that performs consistently well
and consistently upgrading to more efficient versions.

Scalability
• Technology trade-offs are also made based on the technologies that are more scalable and
able to handle increase loads efficiently without a break in the system efficiency.

30
SCREEN SHOTS

This section project report contains the slides how our project is looking in interface.

*Login page: - The page where the system users will submit their system credentials access the
system data.

31
*Home Page: - The page where the system users will be redirected after logging into the blood
bank management system. This page displays the available volume of each blood group and also
displays the system data summary.

32
*Donor Page: -The page where the donated blood is listed and managed.

33
*Blood donation Page: -The page where all donated blood is listed and managed. The
system feature that updating the available volume of the blood stocks.

34
*Requests Page: -The page where all blood requests are listed and managed.

35
*Handed Over Page: - The page where all given blood or handed over blood requests are listed
and managed.

36
ii. Input design: -
*Donor Page: - In this page user fill the require for add the new Donor as given by donor detail.

37
*Blood Donation Page: - In this page administrator have fill the form to add donation detail
according to donor how many bloods he or she donate.

38
*Request Page: - in this page user is enter the detail of patient to get the blood on demand.

39
*Handed Over Page: - In this page the user fills the reference code to handed over the blood
and fill the detail.

40
You can also check the handed over details by reference code. Weather the handed
over confirm or not.

41
CODING
* Index.php page: -

<!DOCTYPE html>
<html lang="en">

<?php session_start(); ?>


<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">

<title><?php echo isset($_SESSION['system']['name']) ? $_SESSION['system']['name'] : ''


?></title>

<?php
if(!isset($_SESSION['login_id']))
header('location:login.php');
include('./header.php');
// include('./auth.php');
?>

</head>
<style>
body{
background: #80808045;
}
.modal-dialog.large {
width: 80% !important;
max-width: unset;
}
.modal-dialog.mid-large {
width: 50% !important;
max-width: unset;
}
#viewer_modal .btn-close {
position: absolute;
z-index: 999999;
/*right: -4.5em;*/
background: unset;
color: white;
border: unset;
font-size: 27px;
top: 0;
42
}
#viewer_modal .modal-dialog {
width: 80%;
max-width: unset;
height: calc(90%);
max-height: unset;
}
#viewer_modal .modal-content {
background: black;
border: unset;
height: calc(100%);
display: flex;
align-items: center;
justify-content: center;
}
#viewer_modal img,#viewer_modal video{
max-height: calc(100%);
max-width: calc(100%);
}
</style>

<body>
<?php include 'topbar.php' ?>
<?php include 'navbar.php' ?>
<div class="toast" id="alert_toast" role="alert" aria-live="assertive" aria-atomic="true">
<div class="toast-body text-white">
</div>
</div>

<main id="view-panel" >


<?php $page = isset($_GET['page']) ? $_GET['page'] :'home'; ?>
<?php include $page.'.php' ?>

</main>

<div id="preloader"></div>
<a href="#" class="back-to-top"><i class="icofont-simple-up"></i></a>

<div class="modal fade" id="confirm_modal" role='dialog'>


<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Confirmation</h5>
</div>
<div class="modal-body">
<div id="delete_content"></div>
43
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id='confirm' onclick="">Continue</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="uni_modal" role='dialog'>
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"></h5>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id='submit' onclick="$('#uni_modal
form').submit()">Save</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="viewer_modal" role='dialog'>
<div class="modal-dialog modal-md" role="document">
<div class="modal-content">
<button type="button" class="btn-close" data-dismiss="modal"><span class="fa fa-
times"></span></button>
<img src="" alt="">
</div>
</div>
</div>
</body>
<script>
window.start_load = function(){
$('body').prepend('<di id="preloader2"></di>')
}
window.end_load = function(){
$('#preloader2').fadeOut('fast', function() {
$(this).remove();
})
}
window.viewer_modal = function($src = ''){
start_load()
var t = $src.split('.')
t = t[1]
44
if(t =='mp4'){
var view = $("<video src='"+$src+"' controls autoplay></video>")
}else{
var view = $("<img src='"+$src+"' />")
}
$('#viewer_modal .modal-content video,#viewer_modal .modal-content img').remove()
$('#viewer_modal .modal-content').append(view)
$('#viewer_modal').modal({
show:true,
backdrop:'static',
keyboard:false,
focus:true
})
end_load()

}
window.uni_modal = function($title = '' , $url='',$size=""){
start_load()
$.ajax({
url:$url,
error:err=>{
console.log()
alert("An error occured")
},
success:function(resp){
if(resp){
$('#uni_modal .modal-title').html($title)
$('#uni_modal .modal-body').html(resp)
if($size != ''){
$('#uni_modal .modal-dialog').addClass($size)
}else{
$('#uni_modal .modal-dialog').removeAttr("class").addClass("modal-dialog
modal-md")
}
$('#uni_modal').modal({
show:true,
backdrop:'static',
keyboard:false,
focus:true
})
end_load()
}
}
})
}
window._conf = function($msg='',$func='',$params = []){
$('#confirm_modal #confirm').attr('onclick',$func+"("+$params.join(',')+")")
45
$('#confirm_modal .modal-body').html($msg)
$('#confirm_modal').modal('show')
}
window.alert_toast= function($msg = 'TEST',$bg = 'success'){
$('#alert_toast').removeClass('bg-success')
$('#alert_toast').removeClass('bg-danger')
$('#alert_toast').removeClass('bg-info')
$('#alert_toast').removeClass('bg-warning')

if($bg == 'success')
$('#alert_toast').addClass('bg-success')
if($bg == 'danger')
$('#alert_toast').addClass('bg-danger')
if($bg == 'info')
$('#alert_toast').addClass('bg-info')
if($bg == 'warning')
$('#alert_toast').addClass('bg-warning')
$('#alert_toast .toast-body').html($msg)
$('#alert_toast').toast({delay:3000}).toast('show');
}
$(document).ready(function(){
$('#preloader').fadeOut('fast', function() {
$(this).remove();
})
})
$('.datetimepicker').datetimepicker({
format:'Y/m/d H:i',
startDate: '+3d'
})
$('.select2').select2({
placeholder:"Please select here",
width: "100%"
})
</script>
</html>

*Login page:-

46
<!DOCTYPE html>
<html lang="en">
<?php
session_start();
include('./db_connect.php');
ob_start();
if(!isset($_SESSION['system'])){
$system = $conn->query("SELECT * FROM system_settings limit 1")-
>fetch_array();
foreach($system as $k => $v){
$_SESSION['system'][$k] = $v;
}
}
ob_end_flush();
?>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">

<title><?php echo $_SESSION['system']['name'] ?></title>

<?php include('./header.php'); ?>


<?php
if(isset($_SESSION['login_id']))
header("location:index.php?page=home");

?>

</head>
<style>
body{
width: 100%;
height: calc(100%);
/*background: #007bff;*/
}
main#main{
width:100%;
height: calc(100%);
background:white;
}
#login-right{
position: absolute;
right:0;
width:40%;
height: calc(100%);
background:white;
47
display: flex;
align-items: center;
}
#login-left{
position: absolute;
left:0;
width:60%;
height: calc(100%);
background:#59b6ec61;
display: flex;
align-items: center;
background: url(assets/uploads/blood-cells.jpg);
background-repeat: no-repeat;
background-size: cover;
}
#login-right .card{
margin: auto;
z-index: 1
}
.logo {
margin: auto;
font-size: 8rem;
background: white;
padding: .5em 0.7em;
border-radius: 50% 50%;
color: #000000b3;
z-index: 10;
}
div#login-right::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: calc(100%);
height: calc(100%);
/*background: #000000e0;*/
}

</style>

<body>

<main id="main" class=" bg-danger">


<div id="login-left">
</div>

48
<div id="login-right" class="bg-danger">
<div class="w-100">
<h4 class="text-white text-center"><b><?php echo
$_SESSION['system']['name'] ?></b></h4>
<br>
<br>
<div class="card col-md-8">
<div class="card-body">
<form id="login-form" >
<div class="form-group">
<label for="username" class="control-
label">Username</label>
<input type="text" id="username"
name="username" class="form-control">
</div>
<div class="form-group">
<label for="password" class="control-
label">Password</label>
<input type="password" id="password"
name="password" class="form-control">
</div>
<center><button class="btn-sm btn-block btn-
wave col-md-4 btn-primary">Login</button></center>
</form>
</div>
</div>
</div>
</div>

</main>

<a href="#" class="back-to-top"><i class="icofont-simple-up"></i></a>

</body>
<script>
$('#login-form').submit(function(e){
e.preventDefault()
$('#login-form button[type="button"]').attr('disabled',true).html('Logging
in...');
if($(this).find('.alert-danger').length > 0 )
$(this).find('.alert-danger').remove();
$.ajax({
url:'ajax.php?action=login',
method:'POST',
data:$(this).serialize(),
49
error:err=>{
console.log(err)
$('#login-form button[type="button"]').removeAttr('disabled').html('Login');

},
success:function(resp){
if(resp == 1){
location.href ='index.php?page=home';
}else{
$('#login-form').prepend('<div class="alert alert-
danger">Username or password is incorrect.</div>')
$('#login-form
button[type="button"]').removeAttr('disabled').html('Login');
}
}
})
})
</script>
</html>

*Home page:-

<?php include 'db_connect.php' ?>


50
<style>
span.float-right.summary_icon {
font-size: 3rem;
position: absolute;
right: 1rem;
top: 0;
}
.imgs{
margin: .5em;
max-width: calc(100%);
max-height: calc(100%);
}
.imgs img{
max-width: calc(100%);
max-height: calc(100%);
cursor: pointer;
}
#imagesCarousel,#imagesCarousel .carousel-inner,#imagesCarousel .carousel-item{
height: 60vh !important;background: black;
}
#imagesCarousel .carousel-item.active{
display: flex !important;
}
#imagesCarousel .carousel-item-next{
display: flex !important;
}
#imagesCarousel .carousel-item img{
margin: auto;
}
#imagesCarousel img{
width: auto!important;
height: auto!important;
max-height: calc(100%)!important;
max-width: calc(100%)!important;
}
</style>

<div class="containe-fluid">
<div class="row mt-3 ml-3 mr-3">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<?php echo "Welcome back ". $_SESSION['login_name']."!" ?>
<hr>
<h4><b>Available Blood per group in Liters</b></h4>
<div class="row">
<?php
51
$blood_group = array("A+","B+","O+","AB+","A-","B-","O-","AB-");
foreach($blood_group as $v){
$bg_inn[$v] = 0;
$bg_out[$v] = 0;
}
$qry = $conn->query("SELECT * FROM blood_inventory ");
while($row = $qry->fetch_assoc()){
if($row['status'] == 1){
$bg_inn[$row['blood_group']] += $row['volume'];
}else{
$bg_out[$row['blood_group']] += $row['volume'];
}
}

?>
<?php foreach ($blood_group as $v): ?>
<div class="col-md-3 mb-3">
<div class="card">
<div class="card-body bg-light">
<div class="card-body text-dark">
<span class="float-right summary_icon"><?php echo $v ?><i class="fa fa-tint text-
danger"></i></span>
<h4><b>
<?php echo ($bg_inn[$v] - $bg_out[$v]) / 1000 ?>
</b></h4>
</div>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<hr>
<div class="row">
<div class="col-md-3 mb-3">
<div class="card">
<div class="card-body bg-light">
<div class="card-body text-dark">
<span class="float-right summary_icon"><i class="fa fa-user-friends text-primary
"></i></span>
<h4><b>
<?php echo $conn->query("SELECT * FROM donors")->num_rows ?>
</b></h4>
<p><b>Total Donors</b></p>
</div>
</div>
</div>
</div>
52
<div class="col-md-3 mb-3">
<div class="card">
<div class="card-body bg-light">
<div class="card-body text-dark">
<span class="float-right summary_icon"><i class="fa fa-notes-medical text-danger
"></i></span>
<h4><b>
<?php echo $conn->query("SELECT * FROM blood_inventory where status = 1 and
date(date_created) = '".date('Y-m-d')."' ")->num_rows ?>
</b></h4>
<p><b>Total Donated Today</b></p>
</div>
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="card">
<div class="card-body bg-light">
<div class="card-body text-dark">
<span class="float-right summary_icon"><i class="fa fa-th-list "></i></span>
<h4><b>
<?php echo $conn->query("SELECT * FROM requests where date(date_created) =
'".date('Y-m-d')."' ")->num_rows ?>
</b></h4>
<p><b>Today's Requests</b></p>
</div>
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="card">
<div class="card-body bg-light">
<div class="card-body text-dark">
<span class="float-right summary_icon"><i class="fa fa-check text-primary "></i></span>
<h4><b>
<?php echo $conn->query("SELECT * FROM requests where date(date_created) =
'".date('Y-m-d')."' and status = 1 ")->num_rows ?>
</b></h4>
<p><b>Today's Approved Requests</b></p>
</div>
</div>
</div>
</div>
</div>

</div>
53
</div>
</div>
</div>
</div>
<script>
$('#manage-records').submit(function(e){
e.preventDefault()
start_load()
$.ajax({
url:'ajax.php?action=save_track',
data: new FormData($(this)[0]),
cache: false,
contentType: false,
processData: false,
method: 'POST',
type: 'POST',
success:function(resp){
resp=JSON.parse(resp)
if(resp.status==1){
alert_toast("Data successfully saved",'success')
setTimeout(function(){
location.reload()
},800)

}
})
})
$('#tracking_id').on('keypress',function(e){
if(e.which == 13){
get_person()
}
})
$('#check').on('click',function(e){
get_person()
})
function get_person(){
start_load()
$.ajax({
url:'ajax.php?action=get_pdetails',
method:"POST",
data:{tracking_id : $('#tracking_id').val()},
success:function(resp){
if(resp){
resp = JSON.parse(resp)
if(resp.status == 1){
54
$('#name').html(resp.name)
$('#address').html(resp.address)
$('[name="person_id"]').val(resp.id)
$('#details').show()
end_load()

}else if(resp.status == 2){


alert_toast("Unknow tracking id.",'danger');
end_load();
}
}
}
})
}
</script>

*Donation page:-
<?php include('db_connect.php');?>

55
<div class="container-fluid">

<div class="col-lg-12">
<div class="row mb-4 mt-4">
<div class="col-md-12">

</div>
</div>
<div class="row">
<!-- FORM Panel -->

<!-- Table Panel -->


<div class="col-md-12">
<div class="card">
<div class="card-header">
<b>List of Donations</b>
<span class="float:right"><a class="btn btn-primary
btn-block btn-sm col-sm-2 float-right" href="javascript:void(0)" id="new_donation">
<i class="fa fa-plus"></i> New Entry
</a></span>
</div>
<div class="card-body">
<table class="table table-condensed table-bordered
table-hover">
<thead>
<tr>
<th class="text-center">#</th>
<th class="">Date</th>
<th class="">Donor</th>
<th class="">Blood Group</th>
<th class="">Volume (ml)</th>
56
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<?php
$i = 1;
$donor = $conn->query("SELECT * FROM donors");
while($row=$donor->fetch_assoc()){
$dname[$row['id']] = ucwords($row['name']);
}
$donations = $conn->query("SELECT * FROM blood_inventory where status = 1 order by
date(date_created) desc ");
while($row=$donations->fetch_assoc()):

?>
<tr>
<td class="text-center"><?php echo $i++ ?></td>
<td>
<?php echo date('M d, Y',strtotime($row['date_created'])) ?>
</td>
<td class="">
<p><b><?php echo isset($dname[$row['donor_id']]) ? $dname[$row['donor_id']] : 'Donor was
removed from the list.' ?></b></p>
</td>
<td class="">
<p><b><?php echo $row['blood_group'] ?></b></p>
</td>
<td class="">
<p><b><?php echo $row['volume']; ?></b></p>
</td>
<td class="text-center">

57
<button class="btn btn-sm btn-outline-primary edit_donation" type="button" data-id="<?php echo
$row['id'] ?>" >Edit</button>
<button class="btn btn-sm btn-outline-danger delete_donation" type="button" data-id="<?php echo
$row['id'] ?>">Delete</button>
</td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Table Panel -->
</div>
</div>

</div>
<style>

td{
vertical-align: middle !important;
}
td p{
margin: unset
}
img{
max-width:100px;
max-height: :150px;
}
</style>
<script>
$(document).ready(function(){
58
$('table').dataTable()
})

$('#new_donation').click(function(){
uni_modal("New donation","manage_donation.php","mid-large")

})
$('.edit_donation').click(function(){
uni_modal("Manage donation Details","manage_donation.php?id="+$(this).attr('data-id'),"mid-
large")

})
$('.delete_donation').click(function(){
_conf("Are you sure to delete this donation?","delete_donation",[$(this).attr('data-id')])
})

function delete_donation($id){
start_load()
$.ajax({
url:'ajax.php?action=delete_donation',
method:'POST',
data:{id:$id},
success:function(resp){
if(resp==1){
alert_toast("Data successfully deleted",'success')
setTimeout(function(){
location.reload()
},1500)

}
}

59
})
}
</script>
<?php include('db_connect.php');?>

<div class="container-fluid">

<div class="col-lg-12">
<div class="row mb-4 mt-4">
<div class="col-md-12">

</div>
</div>
<div class="row">
<!-- FORM Panel -->

<!-- Table Panel -->


<div class="col-md-12">
<div class="card">
<div class="card-header">
<b>List of Donors</b>
<span class="float:right"><a class="btn btn-primary btn-block btn-sm col-sm-2 float-right"
href="javascript:void(0)" id="new_donor">
<i class="fa fa-plus"></i> New Entry
</a></span>
</div>
<div class="card-body">
<table class="table table-condensed table-bordered table-hover">
<thead>
<tr>
<th class="text-center">#</th>

60
<th class="">Donor</th>
<th class="">Blood Group</th>
<th class="">Information</th>
<th class="">Previuos Donation</th>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<?php
$i = 1;
$donors = $conn->query("SELECT * FROM donors order by name asc ");
while($row=$donors->fetch_assoc()):
$prev = $conn->query("SELECT * FROM blood_inventory where status = 1 and donor_id =
".$row['id']." order by date(date_created) desc limit 1 ");
$prev = $prev->num_rows > 0 ? $prev->fetch_array()['date_created'] : '';
?>
<tr>
<td class="text-center"><?php echo $i++ ?></td>
<td class="">
<p><b><?php echo ucwords($row['name']) ?></b></p>
</td>
<td class="">
<p><b><?php echo $row['blood_group'] ?></b></p>
</td>
<td class="">
<p>Email: <b><?php echo $row['email']; ?></b></p>
<p>Contact #: <b><?php echo $row['contact']; ?></b></p>
<p>Address: <b><?php echo $row['address']; ?></b></p>
</td>
<td>
<?php echo !empty($prev) ? date('M d, Y',strtotime($prev)) : 'New' ?>

61
</td>
<td class="text-center">
<button class="btn btn-sm btn-outline-primary edit_donor" type="button" data-id="<?php echo
$row['id'] ?>" >Edit</button>
<button class="btn btn-sm btn-outline-danger delete_donor" type="button" data-id="<?php echo
$row['id'] ?>">Delete</button>
</td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Table Panel -->
</div>
</div>

</div>
<style>

td{
vertical-align: middle !important;
}
td p{
margin: unset
}
img{
max-width:100px;
max-height: :150px;
}
</style>
62
<script>
$(document).ready(function(){
$('table').dataTable()
})

$('#new_donor').click(function(){
uni_modal("New Donor","manage_donor.php","mid-large")

})
$('.edit_donor').click(function(){
uni_modal("Manage donor Details","manage_donor.php?id="+$(this).attr('data-id'),"mid-large")

})
$('.delete_donor').click(function(){
_conf("Are you sure to delete this donor?","delete_donor",[$(this).attr('data-id')])
})

function delete_donor($id){
start_load()
$.ajax({
url:'ajax.php?action=delete_donor',
method:'POST',
data:{id:$id},
success:function(resp){
if(resp==1){
alert_toast("Data successfully deleted",'success')
setTimeout(function(){
location.reload()
},1500)

}
63
}
})
}
</script>
<?php
include 'db_connect.php';
if(isset($_GET['id'])){
$qry = $conn->query("SELECT * FROM blood_inventory where id= ".$_GET['id']);
foreach($qry->fetch_array() as $k => $val){
$$k=$val;
}
}
?>
<div class="container-fluid">
<form action="" id="manage-donation">
<input type="hidden" name="id" value="<?php echo isset($id) ? $id : '' ?>">
<input type="hidden" name="status" value="1">
<div id="msg"></div>
<div class="form-group">
<label for="" class="control-label">Donor's Name</label>
<select class="custom-select select2" name="donor_id" required>
<option value=""></option>
<?php
$qry = $conn->query("SELECT * FROM donors order by name asc");
while($row= $qry->fetch_assoc()):
?>
<option value="<?php echo $row['id'] ?>" data-bgroup="<?php echo
$row['blood_group'] ?>" <?php echo isset($donor_id) && $donor_id == $row['id'] ? 'selected' : ''
?>><?php echo $row['name'] ?></option>
<?php endwhile; ?>
</select>
</div>
64
<div class="form-group">
<label for="" class="control-label">Blood Group</label>
<input type="text" class="form-control" name="blood_group" value="<?php
echo isset($blood_group) ? $blood_group :'' ?>" required readonly>

</div>
<div class="form-group">
<label for="" class="control-label">Volume (ml)</label>
<input type="number" class="form-control text-right" step="any"
name="volume" value="<?php echo isset($volume) ? $volume :'' ?>" required>
</div>
<div class="form-group">
<label for="" class="control-label">Date of Transfusion/Donation</label>
<input type="date" class="form-control" name="date_created" value="<?php
echo isset($date_created) ? date('Y-m-d',strtotime($date_created)) :'' ?>" required>
</div>
</form>
</div>
<script>
$('.select2').select2({
placeholder:'Please select here.',
width:'100%'
})
$(document).ready(function(){
if('<?php echo isset($donor_id)? 1:0 ?>' == 1)
$('[name="donor_id"]').trigger('change')
})

$('[name="donor_id"]').change(function(){
var _id = $(this).val()
if(_id > 0){
65
$('[name="blood_group"]').val($(this).find('option[value="'+_id+'"]').attr('data-bgroup'))
}else{
$('[name="blood_group"]').val('')
}
})
$('#manage-donation').submit(function(e){
e.preventDefault()
start_load()
$('#msg').html('')
$.ajax({
url:'ajax.php?action=save_donation',
data: new FormData($(this)[0]),
cache: false,
contentType: false,
processData: false,
method: 'POST',
type: 'POST',
success:function(resp){
if(resp==1){
alert_toast("Data successfully saved.",'success')
setTimeout(function(){
location.reload()
},1000)
}
}
})
})
</script>
<?php
include 'db_connect.php';

66
if(isset($_GET['id'])){
$qry = $conn->query("SELECT * FROM donors where id= ".$_GET['id']);
foreach($qry->fetch_array() as $k => $val){
$$k=$val;
}
}
?>
<div class="container-fluid">
<form action="" id="manage-donor">
<input type="hidden" name="id" value="<?php echo isset($id) ? $id : '' ?>">
<div class="form-group">
<label for="" class="control-label">Full Name</label>
<input type="text" class="form-control" name="name" value="<?php echo
isset($name) ? $name :'' ?>" required>
</div>
<div class="form-group">
<label for="" class="control-label">Address</label>
<textarea cols="30" rows = "2" required="" name="address" class="form-
control"><?php echo isset($address) ? $address :'' ?></textarea>
</div>
<div class="form-group">
<label for="" class="control-label">Email</label>
<input type="email" class="form-control" name="email" value="<?php echo
isset($email) ? $email :'' ?>" required>
</div>
<div class="form-group">
<label for="" class="control-label">Contact #</label>
<input type="text" class="form-control" name="contact" value="<?php echo
isset($contact) ? $contact :'' ?>" required>
</div>
<div class="form-group">
<label for="" class="control-label">Blood Group</label>

67
<select name="blood_group" id="" class="custom-select select2" required>
<option <?php echo isset($blood_group) && $blood_group == 'A+' ? '
selected' : '' ?>>A+</option>
<option <?php echo isset($blood_group) && $blood_group == 'B+' ? '
selected' : '' ?>>B+</option>
<option <?php echo isset($blood_group) && $blood_group == 'O+' ? '
selected' : '' ?>>O+</option>
<option <?php echo isset($blood_group) && $blood_group == 'AB+'
? ' selected' : '' ?>>AB+</option>
<option <?php echo isset($blood_group) && $blood_group == 'A-' ? '
selected' : '' ?>>A-</option>
<option <?php echo isset($blood_group) && $blood_group == 'B-' ? '
selected' : '' ?>>B-</option>
<option <?php echo isset($blood_group) && $blood_group == 'O-' ? '
selected' : '' ?>>O-</option>
<option <?php echo isset($blood_group) && $blood_group == 'AB-' ?
' selected' : '' ?>>AB-</option>
</select>
</div>
</form>
</div>
<script>

$('#manage-donor').submit(function(e){
e.preventDefault()
start_load()
$('#msg').html('')
$.ajax({
url:'ajax.php?action=save_donor',
data: new FormData($(this)[0]),
cache: false,
contentType: false,
processData: false,
method: 'POST',
68
type: 'POST',
success:function(resp){
if(resp==1){
alert_toast("Data successfully saved.",'success')
setTimeout(function(){
location.reload()
},1000)
}
}
})
})
</script>

69
*navbar page:-
<style>
.collapse a{
text-indent:10px;
}
nav#sidebar{
/*background: url(assets/uploads/<?php echo $_SESSION['system']['cover_img'] ?>)
!important*/
}
</style>

<nav id="sidebar" class='mx-lt-5 bg-danger' >

<div class="sidebar-list">
<a href="index.php?page=home" class="nav-item nav-home"><span
class='icon-field'><i class="fa fa-home text-danger"></i></span> Home</a>
<a href="index.php?page=donors" class="nav-item nav-
donors"><span class='icon-field'><i class="fa fa-user-friends text-danger"></i></span> Donors</a>
<a href="index.php?page=donations" class="nav-item nav-
donations"><span class='icon-field'><i class="fa fa-tint text-danger"></i></span> Blood
Donations</a>
<a href="index.php?page=requests" class="nav-item nav-
requests"><span class='icon-field'><i class="fa fa-th-list text-danger"></i></span> Requests</a>
<a href="index.php?page=handedovers" class="nav-item nav-
handedovers"><span class='icon-field'><i class="fa fa-toolbox text-danger"></i></span> Handed
Over</a>
<?php if($_SESSION['login_type'] == 1): ?>
<a href="index.php?page=users" class="nav-item nav-users"><span
class='icon-field'><i class="fa fa-users text-danger"></i></span> Users</a>
<!-- <a href="index.php?page=site_settings" class="nav-item nav-
site_settings"><span class='icon-field'><i class="fa fa-cogs text-danger"></i></span> System
Settings</a> -->
<?php endif; ?>
</div>
70
</nav>
<script>
$('.nav_collapse').click(function(){
console.log($(this).attr('href'))
$($(this).attr('href')).collapse()
})
$('.nav-<?php echo isset($_GET['page']) ? $_GET['page'] : '' ?>').addClass('active')
</script>

71
*Request page:-
<?php include('db_connect.php');?>

<div class="container-fluid">

<div class="col-lg-12">
<div class="row mb-4 mt-4">
<div class="col-md-12">

</div>
</div>
<div class="row">
<!-- FORM Panel -->

<!-- Table Panel -->


<div class="col-md-12">
<div class="card">
<div class="card-header">
<b>List of Requests</b>
<span class="float:right"><a class="btn btn-primary
btn-block btn-sm col-sm-2 float-right" href="javascript:void(0)" id="new_request">
<i class="fa fa-plus"></i> New Entry
</a></span>
</div>
<div class="card-body">
<table class="table table-condensed table-bordered
table-hover">
<thead>
<tr>
<th class="text-center">#</th>
<th class="">Date</th>

72
<th class="">Referrence Code</th>
<th class="">Patient Name</th>
<th class="">Blood Group</th>
<th class="">Information</th>
<th class="">Status</th>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<?php
$i = 1;
$requests = $conn->query("SELECT * FROM requests order by date(date_created) desc ");
while($row=$requests->fetch_assoc()):

?>
<tr>
<td class="text-center"><?php echo $i++ ?></td>
<td>
<?php echo date('M d, Y',strtotime($row['date_created'])) ?>
</td>
<td class="">
<p><b><?php echo $row['ref_code'] ?></b></p>
</td>
<td class="">
<p><b><?php echo ucwords($row['patient']) ?></b></p>
</td>
<td class="">
<p><b><?php echo $row['blood_group'] ?></b></p>
</td>
<td class="">
<p>Volume Needed: <b><?php echo ($row['volume'] / 1000).' L' ?></b></p>
73
<p>Physician Name: <b><?php echo ucwords($row['physician_name']) ?></b></p>
</td>
<td class=" text-center">
<?php if($row['status'] == 0): ?>
<span class="badge badge-primary">Pending</span>
<?php else: ?>
<span class="badge badge-success">Approved</span>
<?php endif; ?>
</td>
<td class="text-center">
<button class="btn btn-sm btn-outline-primary edit_request" type="button" data-id="<?php echo
$row['id'] ?>" >Edit</button>
<button class="btn btn-sm btn-outline-danger delete_request" type="button" data-id="<?php echo
$row['id'] ?>">Delete</button>
</td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
</div>
<!-- Table Panel -->
</div>
</div>

</div>
<style>

td{
vertical-align: middle !important;
}
74
td p{
margin: unset
}
img{
max-width:100px;
max-height: :150px;
}
</style>
<script>
$(document).ready(function(){
$('table').dataTable()
})

$('#new_request').click(function(){
uni_modal("New request","manage_request.php","mid-large")

})
$('.edit_request').click(function(){
uni_modal("Manage request Details","manage_request.php?id="+$(this).attr('data-id'),"mid-large")

})
$('.delete_request').click(function(){
_conf("Are you sure to delete this request?","delete_request",[$(this).attr('data-id')])
})

function delete_request($id){
start_load()
$.ajax({
url:'ajax.php?action=delete_request',
method:'POST',
data:{id:$id},
75
success:function(resp){
if(resp==1){
alert_toast("Data successfully deleted",'success')
setTimeout(function(){
location.reload()
},1500)

}
}
})
}
</script>

*users page:-

<?php

?>

<div class="container-fluid">

<div class="row">
<div class="col-lg-12">
<button class="btn btn-primary float-right btn-sm" id="new_user"><i
class="fa fa-plus"></i> New user</button>
</div>
</div>
<br>
<div class="row">
<div class="card col-lg-12">
<div class="card-body">

76
<table class="table-striped table-bordered col-md-12">
<thead>
<tr>
<th class="text-center">#</th>
<th class="text-center">Name</th>
<th class="text-center">Username</th>
<th class="text-center">Type</th>
<th class="text-center">Action</th>
</tr>
</thead>
<tbody>
<?php
include 'db_connect.php';
$type = array("","Admin","Staff","Alumnus/Alumna");
$users = $conn->query("SELECT * FROM users order by
name asc");
$i = 1;
while($row= $users->fetch_assoc()):
?>
<tr>
<td class="text-center">
<?php echo $i++ ?>
</td>
<td>
<?php echo ucwords($row['name']) ?>
</td>

<td>
<?php echo $row['username'] ?>
</td>
<td>

77
<?php echo $type[$row['type']] ?>
</td>
<td>
<center>
<div class="btn-group">
<button type="button" class="btn btn-
primary">Action</button>
<button type="button" class="btn btn-
primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<span class="sr-only">Toggle
Dropdown</span>
</button>
<div class="dropdown-menu">
<a class="dropdown-item edit_user"
href="javascript:void(0)" data-id = '<?php echo $row['id'] ?>'>Edit</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item delete_user"
href="javascript:void(0)" data-id = '<?php echo $row['id'] ?>'>Delete</a>
</div>
</div>
</center>
</td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
</div>

</div>
<script>
78
$('table').dataTable();
$('#new_user').click(function(){
uni_modal('New User','manage_user.php')
})
$('.edit_user').click(function(){
uni_modal('Edit User','manage_user.php?id='+$(this).attr('data-id'))
})
$('.delete_user').click(function(){
_conf("Are you sure to delete this user?","delete_user",[$(this).attr('data-id')])
})
function delete_user($id){
start_load()
$.ajax({
url:'ajax.php?action=delete_user',
method:'POST',
data:{id:$id},
success:function(resp){
if(resp==1){
alert_toast("Data successfully deleted",'success')
setTimeout(function(){
location.reload()
},1500)

}
}
})
}
</script>

79
*database connection page:-
<?php

$conn= new mysqli('localhost','root','','bloodbank_db')or die("Could not connect to


mysql".mysqli_error($con));

*top bar page:-

<style>
.logo {
margin: auto;
font-size: 20px;
background: white;
padding: 7px 11px;
border-radius: 50% 50%;
color: #000000b3;
}
</style>

<nav class="navbar navbar-light fixed-top bg-danger" style="padding:0;min-height: 3.5rem">


<div class="container-fluid mt-2 mb-2">
<div class="col-lg-12">
<div class="col-md-1 float-left" style="display: flex;">

</div>
<div class="col-md-4 float-left text-white">
<large><b><?php echo isset($_SESSION['system']['name']) ? $_SESSION['system']['name'] : ''
?></b></large>
</div>

80
<div class="float-right">
<div class=" dropdown mr-4">
<a href="#" class="text-white dropdown-toggle" id="account_settings" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"><?php echo $_SESSION['login_name'] ?></a>
<div class="dropdown-menu" aria-labelledby="account_settings" style="left: -2.5em;">
<a class="dropdown-item" href="javascript:void(0)" id="manage_my_account"><i class="fa fa-
cog"></i> Manage Account</a>
<a class="dropdown-item" href="ajax.php?action=logout"><i class="fa fa-power-off"></i>
Logout</a>
</div>
</div>
</div>
</div>

</nav>

<script>
$('#manage_my_account').click(function(){
uni_modal("Manage Account","manage_user.php?id=<?php echo $_SESSION['login_id']
?>&mtype=own")
})
</script>

i. Constraints /Check:-
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;


/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

81
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `bloodbank_db`
--

-- --------------------------------------------------------

--
-- Table structure for table `blood_inventory`
--

CREATE TABLE `blood_inventory` (


`id` int(30) NOT NULL,
`blood_group` varchar(10) NOT NULL,
`volume` float NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT 1 COMMENT '1 = in -stock,2=out',
`donor_id` int(30) NOT NULL,
`request_id` int(30) NOT NULL,
`date_created` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `blood_inventory`
--

INSERT INTO `blood_inventory` (`id`, `blood_group`, `volume`, `status`, `donor_id`, `request_id`,


`date_created`) VALUES
(1, 'O+', 450, 1, 3, 0, '2020-10-23 00:00:00'),
(2, 'AB+', 450, 1, 1, 0, '2020-08-05 00:00:00'),

82
(3, 'B-', 450, 1, 2, 0, '2020-10-01 00:00:00');

-- --------------------------------------------------------

--
-- Table structure for table `donors`
--

CREATE TABLE `donors` (


`id` int(30) NOT NULL,
`blood_group` varchar(10) NOT NULL,
`name` text NOT NULL,
`address` text NOT NULL,
`contact` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`date_created` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `donors`
--

INSERT INTO `donors` (`id`, `blood_group`, `name`, `address`, `contact`, `email`, `date_created`)
VALUES
(1, 'AB+', 'John Smith', 'Sample Address', '+18456-5455-55', '[email protected]', '2020-10-23
09:25:57'),
(2, 'B-', 'George Wilson', 'Sample address', '8747808787', '[email protected]', '2020-10-23
09:27:54'),
(3, 'O+', 'Claire Blake', 'Sample Address', '+6948 8542 623', '[email protected]', '2020-10-23
09:28:14');

-- --------------------------------------------------------

83
--
-- Table structure for table `handedover_request`
--

CREATE TABLE `handedover_request` (


`id` int(30) NOT NULL,
`request_id` int(30) NOT NULL,
`picked_up_by` text NOT NULL,
`date_created` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `handedover_request`
--

INSERT INTO `handedover_request` (`id`, `request_id`, `picked_up_by`, `date_created`) VALUES


(1, 2, 'Patient Brother', '2020-10-23 13:23:42');

-- --------------------------------------------------------

--
-- Table structure for table `requests`
--

CREATE TABLE `requests` (


`id` int(30) NOT NULL,
`ref_code` varchar(20) NOT NULL,
`patient` text NOT NULL,
`blood_group` varchar(10) NOT NULL,
`volume` float NOT NULL,
84
`physician_name` text NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0= pending,1= approved',
`date_created` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `requests`
--

INSERT INTO `requests` (`id`, `ref_code`, `patient`, `blood_group`, `volume`, `physician_name`,


`status`, `date_created`) VALUES
(2, 'Zfpshiky', 'Mike Williams', 'O+', 450, 'Doctor John', 1, '2020-10-23 10:46:26');

-- --------------------------------------------------------

--
-- Table structure for table `system_settings`
--

CREATE TABLE `system_settings` (


`id` int(30) NOT NULL,
`name` text NOT NULL,
`email` varchar(200) NOT NULL,
`contact` varchar(20) NOT NULL,
`cover_img` text NOT NULL,
`about_content` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `system_settings`
--

85
INSERT INTO `system_settings` (`id`, `name`, `email`, `contact`, `cover_img`, `about_content`)
VALUES
(1, 'Blood Bank Management System', '[email protected]', '+6948 8542 623',
'1603344720_1602738120_pngtree-purple-hd-business-banner-image_5493.jpg', '&lt;p
style=&quot;text-align: center; background: transparent; position: relative;&quot;&gt;&lt;span
style=&quot;color: rgb(0, 0, 0); font-family: &amp;quot;Open Sans&amp;quot;, Arial, sans-serif;
font-weight: 400; text-align: justify;&quot;&gt;&amp;nbsp;is simply dummy text of the printing and
typesetting industry. Lorem Ipsum has been the industry&rsquo;s standard dummy text ever since
the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen
book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining
essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing
Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker
including versions of Lorem Ipsum.&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;p style=&quot;text-align:
center; background: transparent; position: relative;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p
style=&quot;text-align: center; background: transparent; position:
relative;&quot;&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;');

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE `users` (


`id` int(30) NOT NULL,
`name` text NOT NULL,
`username` varchar(200) NOT NULL,
`password` text NOT NULL,
`type` tinyint(1) NOT NULL DEFAULT 3 COMMENT '1=Admin,2=Staff, 3= subscriber'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `users`
--

86
INSERT INTO `users` (`id`, `name`, `username`, `password`, `type`) VALUES
(1, 'Administrator', 'admin', '0192023a7bbd73250516f069df18b500', 1);

--
-- Indexes for dumped tables
--

--
-- Indexes for table `blood_inventory`
--
ALTER TABLE `blood_inventory`
ADD PRIMARY KEY (`id`);

--
-- Indexes for table `donors`
--
ALTER TABLE `donors`
ADD PRIMARY KEY (`id`);

--
-- Indexes for table `handedover_request`
--
ALTER TABLE `handedover_request`
ADD PRIMARY KEY (`id`);

--
-- Indexes for table `requests`
--
ALTER TABLE `requests`
ADD PRIMARY KEY (`id`);

87
--
-- Indexes for table `system_settings`
--
ALTER TABLE `system_settings`
ADD PRIMARY KEY (`id`);

--
-- Indexes for table `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `blood_inventory`
--
ALTER TABLE `blood_inventory`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `donors`
--
ALTER TABLE `donors`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=4;

--
-- AUTO_INCREMENT for table `handedover_request`
--
88
ALTER TABLE `handedover_request`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `requests`
--
ALTER TABLE `requests`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

--
-- AUTO_INCREMENT for table `system_settings`
--
ALTER TABLE `system_settings`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `users`
--
ALTER TABLE `users`
MODIFY `id` int(30) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;


/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

89
VALIDATION CHECKS

Validation is the process of checking whether the software product is up to the mark or in other
words product has high level requirements. It is the process of checking the validation of product i.e.
it checks what we are developing is the right product. it is validation of actual and expected product.
Validation is the Dynamic Testing.
Activities involved in validation:
1. Black box testing
2. White box testing
3. Unit testing
4. Integration testing

Note: Verification is followed by Validation.

90
Implementation And Maintenance in Software Life
Cycle

Maintenance includes all the activity after the installation of software that is performed to keep the
system operational. As we have mentioned earlier, software often has design faults. The two major
forms of maintenance activities are adaptive maintenance and corrective maintenance.

It is generally agreed that for large systems, removing all the faults before delivery is extremely
difficult and faults will be discovered long after the system is installed. As these faults are detected,
they have to be removed. Maintenance activities related to fixing of errors fall under corrective
maintenance.

Removing errors is one of the activities of maintenance. Maintenance also needed due to a change
in the environment or the requirements of the system. The introduction of a software system
affects the work environment. This change in environment often changes what is desired from the
system. Furthermore, often after the system is installed and the users have had a chance to work
with it for some time, requirements that are not identified during requirement analysis phase will
be uncovered. This occurs, since the experience with the software helps the user to define the
needs more precisely. There might also be changes in the input data, the system environment and
output formats. All these require modification of the software. The maintenance activities related
to such modification fall under adaptive maintenance.

Maintenance work is based on existing software, as compared to development work, which creates
new software. Consequently, maintenance resolves around understanding the existing software
and spares most of their time trying to understand the software that they have to modify.
Understanding the software involves not only understanding the code, but also the related
documents. During the modification of the software, the effects of the change have to be clearly
understood by the maintainer since introducing undesired side effects in the system during
modification is easier.

To test whether those aspects in the system that are not supposed to be modified are operating as
they were before modification, regression testing is done. Regression testing involves executing old
test cases to test that no new errors have been introduced. Thus, maintenance involves
understanding the existing software (code and related documents), understanding the effects of
change, making the changes - both to the code and documents, testing the new parts (changes),
and resetting of the old parts that were not changed.

Since often during development, needs of the maintainers are not kept in mind, little support
documents are produced during development to aid the maintainer. The complexity of the
maintenance task is coupled with the neglect of maintenance concerns during development which
makes maintenance the most cost-effective activity in the life of a software product.

91
Testing

Testing is the process of executing then programs with the intention of finding out errors. During the
process, the project is executed with set of tests and the output of the website is evaluated to
determine if the project is performing as expected. Testing makes a logical assumption that if all the
parts of the module are correct then goal will be successfully achieved. Testing includes after the
completion of the coding phase. The project was tested from the very beginning and also at each step
by entering different type of data. In the testing phase some mistakes were found, which did not
come to knowledge at the time of coding the project. Then changes were made in the project coding
so that it may take all the relevant data and gives the required result. All the forms were tested one by
one and made all the required changes.

Testing is vital to the success of the system. Testing makes a logical assumption that if all the
parts of the system are correct, the goal will be successfully achieved. A small system error can
conceivably explode into a much larger problem. Effective testing early in the process translates
directly into long-term cost savings from a reduced number of errors. For the verification and
validation of data various-nesting task are performed. Testing is itself capable of finding the
syntactical mistakes in the system but user need to test the system for logical checking.

LEVELS OF TESTING:

The aim of the testing process is to identify all the defects in the website. It is not practical to test the
website with respect to each value that the input request data may assume. Testing provides a
practical way of reducing defects in the website and increasing the user’s confidence in a developed
system. Testing consists of subjecting the website to a set of test inputs and observing if the program
behaves as expected. If the program fails to Testing behave as expected then conditions under which
failure occurs are noted for later debugging and correction. The following things are associated with
testing:

Failure is a manifestation of an error. But the mere presence of an error may not necessarily lead to a
failure. A test case is the triplet [I, S, O] where I am data input to the system. S is the state of the
state of the system at which the data is input, O is the expected output of the system A test suite is
the set of all test cases with which a given software product is to be tested.

92
FUCTIONAL TESTING:

Here the system is a black box whose behaviour is determined by studying its inputs and related
outputs. The key problem is to select the inputs that have a huge probability of being members of a
set in my case; the selection of these test cases is based on the previous studies.

STRUCTURAL TESTING:

A great deal can be learnt about the strength and the limitation of the application by examinee the
manner in which the system breaks. This type of testing has two limitations.
It tests failure behaviour of the system circumstances may arise through an unexpected
combination of events where the node placed on the system exceeds the maximum anticipated load.
The structure of each module was checked at every step. Some structures were firstly wrong, which
came to notice at the time of the connectivity.

UNIT TESTING:

In unit testing the entire individual functions and modules were tested independently. By following
this strategy all the error in coding were identified and corrected. This method was applied in
combination with the white and black box testing techniques to find the errors in each module.

Unit testing is normally considered an adjunct to the coding step. Unit test case design was
started after source level code had been developed, reviewed, and verified for correct syntax. A
review of design information provides guidance for establishing test cases that were likely to uncover
errors in each of the categories discussed above. Each test case was coupled with a set of expected
results.

Testing admin login form: -This form is used for log in of administrator of the system. In this
we enter the username and password if both are correct administration page will open otherwise if
any of data is wrong it will get redirected back to the login page and again ask for username and
password

93
Test For Admin Module

User Account Addition: - In this section the admin can verify User details from student
academic info and then only add student details to main library database it contains add and delete
buttons if user click add button data will be added to student database and if he clicks delete button
the student data will be deleted

Book Addition- Admin can enter details of book and can add the details to the main book table
also he can view the books requests.

Test for User login module


Test for User login Form: -This form is used for log in of user. In this we enter the, username
and password if all these are correct User login page will open otherwise if any of data is wrong it
will get redirected back to the login page and again ask for username and password.

Test for account creation: - This form is used for new account creation when user does not fill
the form completely it asks again to fill the whole form when he fills the form fully it gets redirected
to page which show waiting for conformation message as his data will be only added by
administrator after verification.

INTEGRITY TESTING:

Integrity phases the entire module using the bottom-up approach and tested them. Integrity testing is
a systematic technique for constructing the program structure while at the same time conducting tests
to uncover errors associated with interfacing. The objective was to take unit tested modules and build
a program structure that has been dictated by design.
The testing strategy has two different approaches namely the top-down approach in which the
integration is carried out from the top-level module to the bottom and the bottom-up approach in
which the integration is carried out from the low-level module to the top.
The modules were tested using the bottom-up approach by introducing stubs for the top-level
functions. This test was used to identify the errors in the interfaces, the errors in passing the
parameters between the functions and to correct them.

94
Black Box Testing: -
In black box testing the structure of the program is not considered. Test cases are decided solely on
the basis of the requirements or specifications of the program or module, and the consideration for
selection of test classes. In this section, we will present some techniques for generating test cases for
black-box testing. In black-box testing, the testing only knows the inputs that can be given to the
system and what output the system can give. In other words, the basis for deciding test case in
functional testing is the requirement or specification of the system module. This form of testing is
obvious functional or behavioural testing.
The most obvious functional testing procedure is exhaustive testing,
which as we have stated, is empirical. One criterion for generating test causes is to strategy has little
chance of resulting in a set of test causes that is close to optimal (i.e., that detects the maximum
errors with minimum test cases). Hence, we need some other criterion or rule for
selecting test cases. There are no formal rules for designing test cases for functional testing. In fact,
there are no precise criteria for selecting test cases however, there have been found to be very
successful in detecting errors. Here we mention some of these techniques.
White Box Testing: -
In the previous section we discussed testing, which is concerned with the function that the tested
program is proposed to program and does not deal with the internal structure of the program
responsible for actually implementing that function. Those black-box testing is concerned with
functionality rather than implementation of the program. On the other hand, white-box testing is
concerned with testing implementation of the program. The intent of this testing is not to exercise all
the different input or output conditions (although that may be buy products) but to exercise the
different programming structures and data structures used in the program. White-box testing is also
called structure testing and we will use the two terms interchangeably to test the structures of a
program, structural testing aims to achieve test cases that force the desired coverage of different
structures various criteria have been proposed for this. Unlike the criteria for functional testing which
are frequently imprecise, the criteria for structural testing are generally quite precise as they are
based on program structures, which are formal and precise.

95
VARIOUS TYPES OF MODULES\REPORTS
Patient Login:

Patient Login to the system using his ID and Password.


• Patient Registration: -If Patient is a new user, he will enter his personal details and he
will user Id and password through which he can login to the system.
• My Details: – Patient can view his personal details.

• Disease Prediction: -Patient will specify the symptoms caused due to his illness. System
will ask certain question regarding his illness and system predict the disease based on the
symptoms specified by the patient and system will also suggest doctors based on the disease.
• Search Doctor: - Patient can search for doctor by specifying name, address or type. •
Feedback: -Patient will give feedback this will be reported to the admin.

Doctor Login:

Doctor will access the system using his User ID and Password.

• Patient Details: Doctor can view patient’s personal details.


• Notification: Doctor will get notification how many people had accessed the system and
what all are the diseases predicted by the system.

Admin Login:

Admin can login to the system using his ID and Password.


• Add Doctor: Admin can add new doctor details into the database.
• Add Disease: Admin can add disease details along with symptoms and type.
• View Doctor: Admin can view various Doctors along with their personal details.
• View Disease: Admin can view various diseases details stored in database.
• View Patient: Admin can view various patient details who had accessed the system .
• View Feedback: Admin can view feedback provided by various users.
It consists of a three module i.e., Doctor, patient and Admin. Admin can maintain the flow of a
system, He can add, remove doctors as well as patients. Admin also handles the database of
system. Patient is a prior user of system, they can specify the symptoms from which they are
96
suffers and system sends this message to doctor site, then doctor give the prescription on their
health issue which can be received by the patient.

SOFTWARE FEATURES

This system can be accessed by others in future to make android apps, or can be embedded in
other applications locally available doctors could be referred to the patients. Further, the
software we made may be extended, by adding a link, for buying medicines online, for predicted
diseases, prescribed by doctors. Also, features like, detecting the causes of the detected diseases
can be added. For more concern of the patients, the software can have features, saying what
things. should be avoided by the patients, during the illness period.

This system can be used by all patients or their family members who need help in emergency.
They can also get doctor’s information for the treatment of disease as well. It will be very helpful
for those people who are in need and doesn’t know about any nearby doctor or the disease from
which they are possibly suffering. They can get information about their disease and can take
precautions till the time; doctor is being found.

97
FUTURE SCOPE OF THE PROJECT
This web application involves almost all the basic features of the blood bank management
system.
The future implementation will be online help for the customers and chatting with
administrative.
Today the market place is flooded with several blood bank management system options for
blood bank to choose from. A variety of innovative products and services are being offered
spoiling customers for choice. Blood bank management system is no more a privilege
enjoyed by managers and employees. in the last couple of years, the growth of IT industry
has been phenomenal as more have started discovering the benefits of using these
problems. Therefore, we will make this system live and provide software as service in
future.

Limitations of the project: -

1. It is not a large-scale system.


2. Only limited information provided by this system.
3. Since it is an offline project, operated from pc in which it is installed.
4. People who are not familiar with computers can’t use this application.

98
References / Bibliography: -

The Joy of PHP Programming: A Beginner's Guide – by Alan Forbes

HTML & CSS Author: Jon Duckett

www.php.net/

https://www.google.com

http://www.w3schools.com

http://www.indianbloodgroup.com

99

You might also like