0% found this document useful (0 votes)
10 views128 pages

Herman Project

The document is a project report on a 'Zoo Management System' submitted by Sudarshan Gowda for a Bachelor of Computer Application degree at RNS First Grade College. It outlines the purpose, problem statement, existing systems, and proposed modules aimed at improving zoo operations through automation and real-time data management. The report emphasizes the importance of a centralized system to enhance efficiency, visitor experience, and animal care.

Uploaded by

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

Herman Project

The document is a project report on a 'Zoo Management System' submitted by Sudarshan Gowda for a Bachelor of Computer Application degree at RNS First Grade College. It outlines the purpose, problem statement, existing systems, and proposed modules aimed at improving zoo operations through automation and real-time data management. The report emphasizes the importance of a centralized system to enhance efficiency, visitor experience, and animal care.

Uploaded by

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

BANGALORE UNIVERSITY

A PROJECT REPORT

ON

“ZOO MANAGEMENT SYSTEM ”

Submitted in Practical fulfilment for the award of the degree of

BACHELOR OF COMPUTER APPLICATION

Submitted by
SUDARSHAN GOWDA

U03HW22S0137

UNDER THE GUIDANCE OF


Prof – NISCHITHA V

DEPARTMENT OF COMPUTER APPLICATIONS


RNS FIRST GRADE COLLEGE

(Affiliated to Bangalore university and NAAC accredited with ‘A ‘Grade)

Dr. Vishnuvardhan Road, Channasandra, R.R.Nagar


Post, Ph: 080-2861110, Website: www.rnsfgc.edu.in
Bangalore-98
2024- 2025
RNS FIRST GRADE COLLEGE
(Affiliated to Bangalore university and NAAC accredited with ‘A ‘Grade)

Dr. Vishnuvardhan Road, Channasandra, R.R.Nagar-98

CERTIFICATE

This is to certify that Sudarshan Gowda(U03HW22S0137) has


successfully completed the project titled “ ZOO MANAGEMENT
SYSTEM” at RNS First Grade College under my supervision and
guidance in the fulfilment of requirements of VI semester, Bachelor of
Computer Application of Bangalore University, Bangalore.

Signature of the Guide

Head of the Department Principal

Signature of the Examiners: -

1). ..........................

2). .......................
ACKNOWLEDGEMENT

I express my deep gratitude to my guide Prof. Nischitha V, Department of BCA


for providing valuable suggestions and guidance during the development,
designing and implementation of the project, without which it would not
have been possible to complete the project.

I express my sincere thanks to my beloved Principal, Dr. Shekar H S, to provide us


with all the facilities for laboratory and library.

I express my gratitude to my Vice Principal, Prof. Shilpa Sarnad for her


continuous support and assistance during my project.

I wish to reciprocate in full measure the kindness shown by Dr. Mohan S H ,


Head of the BCA Department, who inspired me with his valuable suggestions
in successfully completing the project work.

I express my grateful thanks to all the staff members, Department of BCA for
their valuable assistance, encouragement, and co-operation during this
wonderful learning experience.

Finally, I would like to express my sincere thanks to my parents and friends for
the useful tips and moral support.
TABLE OF CONTENT

SL.NO INDEX PAGE NO

1 INTRODUCTION 1
1.1 PURPOSE 2
1.2 PROBLEM STATEMENT 3-4
1.3 EXISTING SYTSEM 4-5
1.4 SYSTEM MODULES 6-7

2 SYSTEM ANALYSIS 8
2.1 OPERATIONAL FEASIBILITY 9-10
2.2 ECONOMIC FEASIBILITY 10-12
2.3 TECHNICAL FEASIBILITY 13-14

3 SOFTWARE COMPONENT 15
3.1 INTRODUCTION TO HTML 16
3.2 INTRODUCTION TO JAVASCRIPT 17-18
3.3 INTRODUCTION TO EXPRESS 18-19
3.4 INTRODUCTION TO CSS 20-21
3.7 INTRODUCTION TO MySQL 21-23

4 SOFTWARE REQUIREMENT 24
4.1 FUNCTIONAL REQUIREMENT 25-27
4.2 NON-FUNCTIONAL REQUIREMENT 28-29

5 SYSTEM DESIGN 30
5.1 DATA FLOW DIAGRAM 31-32
5.2 ER DIAGRAM 33-34

6 SNAPSHOTS 35-40

7 CODING 40-107
8 FUTURE ENHANCEMENT 108-111

9 CONCLUSION AND REFFERENCE 112


9.1 CONCLUSION 113-114
9.2 REFFERENCE 115
Zoo Management

CHAPTER 1

INTRODUCTION

Department of Computer Application-RNSFGC


Page | 1
Zoo Management

In today's fast-paced world, A Zoo Management System is a software application designed


to streamline and automate the day-to-day operations of a zoo. It helps manage various aspects
such as animal records, staff assignments, feeding schedules, medical history, visitor
information, and ticketing. By integrating these functions into a centralized platform, the
system improves efficiency, ensures proper care for animals, and enhances the overall
visitor experience. This digital solution supports zoo administrators in maintaining accurate
data, coordinating tasks, and making informed decisions for better zoo management.

A Zoo Management System plays a vital role in modernizing zoo operations by providing a
structured and organized way to handle diverse responsibilities. It enables easy tracking of
animal species, habitats, breeding programs, and veterinary care while also managing
human resources and facility maintenance. With real-time data access and reporting
features, the system ensures timely actions and supports conservation efforts. Additionally,
it can enhance visitor engagement through online bookings, interactive maps, and event
scheduling, making the zoo experience more enjoyable and educational.

1.1 PURPOSE
• Streamline operations through automation of booking, dispatch, and delivery processes.
• Enhance real-time tracking of shipments to provide transparency and updates to
customers.
• Improve service quality and customer satisfaction by enabling efficient
communication and fast delivery.
• Reduce operational costs through route optimization, automation, and better resource
allocation.
• Secure data handling by implementing robust data protection measures.
• Generate analytical reports for performance, finance, and resource insights.
• Create a user-friendly, web-based platform accessible across devices for managing
shipments, tracking, and customer support.

Department of Computer Application-RNSFGC


Page | 2
Zoo Management

1.2 PROBLEM STATEMENT


In today's rapidly evolving technological landscape, traditional zoo management
practices often fall short in meeting the demands of modern zoos. These practices,
which largely rely on manual processes and fragmented systems, are plagued by
inefficiencies, delays, and potential errors. Key challenges faced by zoos include:

1.2.1 Manual Data Entry and Record Keeping


 Time-Consuming: Manual data entry for animal records, visitor logs, and inventory
lists is labor-intensive and prone to human error.
 Data Loss: Paper-based records are susceptible to damage, loss, and
misplacement, leading to incomplete or inaccurate data.
1.2.2 Lack of Real-Time Monitoring
 Animal Health and Behavior: Difficulty in tracking animal health and behavior in
real- time, which is crucial for timely intervention and care.
 Visitor Flow: Inability to monitor visitor numbers and manage entry and exit
points efficiently, leading to potential overcrowding and safety issues.
1.2.3 Inefficient Visitor Management
 Ticketing and Reservations: Manual ticketing systems are slow and inefficient,
often leading to long queues and visitor dissatisfaction.
 Feedback Collection: Lack of a centralized system for collecting and analyzing
visitor feedback, making it difficult to improve the visitor experience.
1.2.4 Resource Allocation
 Staff Scheduling: Manual allocation of tasks and shifts for zookeepers,
veterinarians, and other staff, leading to inefficiencies and potential staff shortages.
 Inventory Management: Ineffective tracking of inventory levels for animal
food, medical supplies, and other essential items, resulting in stockouts or
overstocking.
1.2.5 Security and Compliance
 Animal Safety: Ensuring the safety and well-being of animals while complying
with regulatory standards is challenging with manual systems.
 Visitor Safety: Managing visitor safety and security, especially in large and complex
zoo environments, is crucial but often difficult to achieve with existing systems.

Department of Computer Application-RNSFGC


Page | 3
Zoo Management

1.2.6 Limited Analytics and Reporting

Department of Computer Application-RNSFGC


Page | 4
Zoo Management

 Operational Insights: Lack of automated reports and analytics, making it difficult


to make data-driven decisions and optimize operations.
 Performance Monitoring: Inability to track key performance indicators (KPIs)
and identify areas for improvement.

1.3 EXISTING SYTSEM

The current zoo management system is largely manual and fragmented, with data stored in
various formats and locations. This approach has several significant drawbacks:

1.3.1 Paper-Based Records

 Animal Health Records: Detailed health records, including medical history,


vaccinations, and treatments, are often maintained on paper, leading to inefficiencies
and potential data loss.

 Visitor Logs: Visitor entry and exit logs are manually recorded, making it difficult
to manage large volumes of visitors efficiently.

 Inventory Lists: Stock levels for animal food, medical supplies, and other
inventory items are tracked manually, leading to potential stockouts or
overstocking.

1.3.2 Lack of Real-Time Tracking

 Animal Monitoring: No integrated system for monitoring animal health and behavior
in real-time, making it difficult to identify and address potential issues promptly.

 Visitor Management: No real-time tracking of visitor numbers and flow, leading


to potential overcrowding and safety issues.

 1.3.3 Manual Ticketing and Reservations

 Ticket Sales: Ticket sales and reservations are often handled manually, leading to
long queues and visitor dissatisfaction.

 Group Bookings: Managing group bookings and reservations is time-consuming


and prone to errors.

Department of Computer Application-RNSFGC


Page | 5
Zoo Management

1.3.4 Inefficient Staff Scheduling

 Task Allocation: Manual allocation of tasks and shifts for zookeepers, veterinarians,
and other staff, leading to inefficiencies and potential staff shortages.

 Training Records: Tracking staff training and development programs is


cumbersome and often incomplete.

1.3.5 Limited Reporting Capabilities

 Operational Reports: Lack of automated reports and analytics, making it difficult


to make data-driven decisions and optimize operations.

 Financial Reports: Manual tracking of income and expenses, leading to


potential inaccuracies and difficulties in budgeting and forecasting.

Department of Computer Application-RNSFGC


Page | 6
Zoo Management

1.4 System Modules

The proposed Zoo Management System (ZMS) will consist of several key modules designed to

address the identified challenges and improve overall zoo operations.

These modules include:

1.4.1 Animal Management Module

 Animal Records: Maintain detailed profiles for each animal, including species, age,

health history, dietary requirements, and behavioral notes.

 Health Monitoring: Track health metrics, schedule veterinary check-ups, and record

treatment histories to ensure timely intervention and care.

 Behavioral Tracking: Monitor and record animal behavior to identify any changes or

potential issues, enhancing animal welfare.

1.4.2 Visitor Management Module

 Ticketing and Reservations: Manage online and offline ticket sales, reservations, and

group bookings to streamline the visitor experience.

 Visitor Flow Management: Monitor visitor numbers and manage entry and exit points to

ensure smooth flow and safety.

 Feedback and Surveys: Collect visitor feedback and conduct surveys to improve the

visitor experience and make data-driven decisions.

Department of Computer Application-RNSFGC Page | 7


Zoo Management

1.4.3 Staff Management Module

 Staff Scheduling: Automate the allocation of tasks and shifts for zookeepers, veterinarians,

and other staff to improve efficiency and resource utilization.

 Training and Development: Track staff training and development programs to

ensure compliance with zoo standards and enhance staff capabilities.

 Performance Monitoring: Monitor staff performance and provide insights for

improvement, ensuring optimal operational efficiency.

1.4.4 Inventory Management Module

 Inventory Tracking: Manage stock levels for animal food, medical supplies, and

other inventory items to prevent stockouts and overstocking.

 Supplier Management: Maintain records of suppliers and manage purchase orders

and deliveries to ensure timely restocking.

 Cost Management: Track inventory costs and provide insights for cost optimization,

enhancing financial sustainability.

1.4.5 Financial Management Module

 Revenue Tracking: Monitor income from ticket sales, donations, and other sources to

ensure financial health.

 Expense Management: Track operational expenses and provide detailed financial reports

to support budgeting and forecasting.

 Budgeting and Forecasting: Develop budgets and forecasts to support financial planning

and decision-making, ensuring long-term financial sustainability.

Department of Computer Application-RNSFGC Page | 8


Zoo Management

1.4.6 Reporting and Analytics Module

 Operational Reports: Generate reports on animal health, visitor numbers, staff

performance, and inventory levels to provide a comprehensive overview of zoo operations.

 Analytics and Insights: Provide data-driven insights to support decision-making

and continuous improvement, enhancing overall operational efficiency.

 Custom Reports: Allow users to create custom reports based on specific requirements,

ensuring flexibility and adaptability.

Department of Computer Application-RNSFGC Page | 9


Zoo Management

CHAPTER 2

SYSTEM ANALYSIS

Department of Computer Application-RNSFGC Page | 10


Zoo Management

2.1 Operational Flexibility


Operational flexibility refers to the system’s ability to efficiently adapt to changing conditions, organizational
needs, or user requirements within a zoo environment. The Zoo Management System is designed with
modularity, scalability, and user roles in mind to support seamless operations and long-term growth.

1. Multi-Role Access Management


 Supports roles such as Admin, Zookeeper, Veterinarian, and Visitor.
 Role-based access ensures each user interacts only with relevant system features.
 Permissions can be easily adjusted as roles evolve or responsibilities shift.

2. Modular and Scalable Architecture


 Each function (e.g., animal care, ticketing, event scheduling, feeding logs) is handled by independent modules.
 Allows new modules (e.g., conservation tracking or research data) to be integrated without affecting
existing features.
 Scales easily to support growing visitor numbers or expanding animal enclosures.

3. Customizable Schedules and Operations


 Feeding, medication, and cleaning schedules can be configured per animal or group.
 Supports emergency overrides and automated alerts for medical or behavioral anomalies.

4. Dynamic Resource Allocation


 Assigns staff (keepers, vets) based on availability and specialization.
 Tracks work shifts and tasks to optimize labor distribution and reduce redundancy.

5. Real-Time Monitoring and Alerts


 Provides instant updates on animal health, visitor flow, or maintenance needs.
 Automated alerts notify staff about overdue feedings, medical checkups, or security issues.

6. Integration with External Systems


 Can be integrated with barcode scanners, RFID tags, GPS-based animal tracking, and environmental
monitoring sensors.
 Future-ready for technologies like AI-based behavior monitoring or mobile visitor apps.

7. Configurable Reporting and Analytics


 Generates performance reports on animal care, visitor trends, ticket sales, and staff efficiency.
 Allows admins to apply filters (species, dates, zones) for custom insights.

Department of Computer Application-RNSFGC Page | 11


Zoo Management

8. Platform and Device Independence


 Accessible via any modern browser on desktops, tablets, or mobile devices.
 Enables field staff to update records in real-time from remote enclosures or mobile stations.

9. Secure and Maintainable


 Includes secure login, role-based data access, and encrypted records.
 Designed for easy maintenance, upgrades, and long-term extensibility.

2.2 ECONOMIC FEASIBILITY.

1. Low Initial Investment


 Use of Open-Source Technologies: The system is built using cost-effective technologies such as
PHP, MySQL, HTML, CSS, and JavaScript — eliminating software licensing costs.
 In-House Development Option: Can be developed and maintained by internal IT staff or students as
part of academic projects, significantly reducing outsourcing or vendor expenses.
 Minimal Hardware Requirements: Can be deployed on standard desktop or laptop systems without
the need for high-end servers.

2. Reduced Operational Costs


 Automation of Daily Operations: Tasks like feeding schedules, ticket booking, report generation,
and visitor management are automated, reducing dependency on manual labor.
 Paperless Administration: Replaces traditional paper-based records with secure, digital alternatives
— saving costs related to printing, filing, and storage.
 Efficient Inventory Tracking: Monitors food supplies, medical stock, and maintenance tools to
prevent overstocking or wastage.

3. Optimized Staff Utilization


 Dynamic Task Assignment: Allows administrators to allocate tasks based on staff
availability, specialization, and real-time needs.
 Reduced Idle Time: Helps optimize schedules for veterinarians, zookeepers, and cleaning staff,
lowering unnecessary labor costs.

Department of Computer Application-RNSFGC Page | 12


Zoo Management

4. Revenue Growth Potential


 Online Booking & Membership Sales: Generates additional revenue by offering digital ticket
sales, special events, and memberships through the system.
 Donations and Sponsorship Management: Tracks donor history and facilitates targeted
fundraising campaigns to increase financial support.
 Event Monetization: Promotes workshops, educational events, and virtual zoo tours that can be
booked online.

5. Scalable Without Proportional Costs


 Modular Architecture: New modules (e.g., wildlife research tracking, educational portals) can be
added with minimal cost.
 Supports Expansion: As the zoo grows in terms of exhibits or branches, the system can scale up
with little change to the core infrastructure.
 Cross-Platform Compatibility: No additional investment needed to access the system from mobile,
tablet, or desktop.

6. Low Maintenance and Support Costs


 User-Friendly Interface: Intuitive dashboards and form designs reduce the need for continuous
technical support or user training.
 Built-In Security & Backup Features: Minimizes the risk of data loss or system downtime, lowering
the cost of emergency recovery or third-party cybersecurity tools.
 Automatic Updates: Easily updatable system structure reduces the need for frequent
manual interventions and costly reengineering.

7. Improved Decision-Making Through Analytics


 Real-Time Reports: Enables financial tracking, visitor trends, and staff performance evaluations
for strategic planning.
 Data-Driven Resource Allocation: Helps avoid over-budgeting or underutilization of key resources.
 Cost-Benefit Analysis: Tracks ROI for specific programs (e.g., animal adoption, seasonal events)
for better budget forecasting.

8. Long-Term Financial Sustainability


 Quick Break-Even Point: Due to reduced manual operations and improved efficiency, the system
pays for itself in a short period.

Department of Computer Application-RNSFGC Page | 13


Zoo Management

 Lower Cost of Error: Prevents costly mistakes (e.g., missed feedings, duplicate ticketing) that might
lead to financial penalties or reputational damage.
 Enhanced Visitor Satisfaction: Improves repeat visit rates and referrals, indirectly contributing
to revenue growth.

2.3 Technical Feasibility

1. Use of Established and Open Technologies


 Developed using widely accepted technologies such as PHP, MySQL, HTML5, CSS3, and
JavaScript, ensuring robust community support and ease of maintenance.
 Optional use of frameworks like CodeIgniter or Express.js allows enhanced functionality,
faster development, and standardized practices.

2. Modular System Architecture


 The system is divided into modules such as Animal Management, Feeding &
Medical Logs, Ticketing, User Management, and Reports.
 Allows individual modules to be updated or replaced without affecting the rest of the system,
ensuring easy scalability and upgrades.

3. Cross-Platform and Cross-Browser Compatibility


 Fully web-based system, accessible via any modern browser (Chrome, Firefox, Edge,
Safari) on Windows, macOS, Linux, and mobile devices.
 Built using responsive design principles to ensure functionality across desktops, tablets,
and smartphones.

4. Integration Capabilities
 Supports integration with:
 Barcode scanners or RFID readers for animal tracking.
 SMS or Email APIs for notification systems.
 GPS or environmental sensors for real-time monitoring of enclosures.
 Easily extendable to include payment gateways, third-party booking systems, or cloud
storage solutions.

Department of Computer Application-RNSFGC Page | 14


Zoo Management

5. Database Management
 Utilizes MySQL as the backend, offering a reliable, scalable, and fast relational database system.
 Designed to handle large volumes of records, including animal profiles, feeding logs, ticket
sales, visitor data, and staff assignments.

6. Security and Access Control


 Incorporates secure login protocols, role-based access control (RBAC), and encrypted data handling.
 Protects sensitive data related to animal health, staff details, and visitor information.
 Can be extended with SSL certificates and firewalls to ensure secure deployment.

7. Maintainability and Upgradability


 Clean and well-commented codebase ensures that future developers can easily update, debug,
or enhance the system.
 Built-in support for automated backups and error handling helps minimize downtime and data loss.
 Easily upgradable to newer versions of technologies without major rework.

8. Automation Support
 Automated alerts, task reminders, and reporting minimize manual input and errors.
 Supports auto-generation of feeding and medical schedules, ticket receipts, and monthly performance
reports.

9. Support for Modern Tools


 Compatible with development and deployment tools like:
 XAMPP/WAMP for local development.
 Git for version control.
 VS Code, PHPStorm, or Sublime Text for code editing.
 Ready for deployment on shared hosting, VPS, or cloud-based servers (e.g., AWS, Heroku).

10. Future Scalability


 Designed with a scalable backend to accommodate growth in:
 Number of animals and species.
 Additional zoo branches or divisions.
 Rising volume of visitor interactions and online bookings.

Department of Computer Application-RNSFGC Page | 15


Zoo Management

CHAPTER 3
SOFTWARE COMPONENT

Department of Computer Application-RNSFGC Page | 16


Zoo Management

3.1 Introduction to HTML


HTML stands for HyperText Markup Language. It is the standard markup language used to
create and design web pages and web applications. HTML structures the content on the
web by using a system of tags and elements to define text, images, links, tables, forms,
and more.

3.1.1 Key Features of HTML


 Simple and Easy to Learn: HTML has a straightforward syntax, making it ideal for beginners
and foundational for web development.
 Platform Independent: HTML files can be run on any device with a web browser, making
it universally accessible.
 Works with Other Technologies: HTML is often used in combination with CSS (for
styling) and JavaScript (for interactivity).

3.1.2 Basic Structure of an HTML Document


<!DOCTYPE html>
<html>
<head>
<title>My First Page</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>This is a paragraph.</p>
</body>
</html>

 <html>: The root element of an HTML page.


 <head>: Contains meta-information like title and links to CSS/JS files.
 <body>: Contains the content that displays on the web page (text, images, links, etc.).
 <h1> to <h6>: Headings
 <p>: Paragraphs
 <a>: Hyperlinks
 <img>: Images
 <table>, <tr>, <td>: Tables
 <form>: User input forms

Department of Computer Application-RNSFGC Page | 17


Zoo Management

3.2 Introduction to JavaScript


JavaScript is a powerful, lightweight, and versatile programming language that is primarily used
to add interactivity and dynamic behavior to websites. It is a client- side scripting language,
meaning it runs directly in the web browser of the user, allowing web pages to respond to
user actions instantly without needing to reload the entire page.
Since its creation in the mid-1990s, JavaScript has become one of the core technologies of the
web, alongside HTML and CSS. It is supported by all modern web browsers and is essential
for creating rich, user-friendly interfaces in web applications.

3.2.1 Importance of JavaScript in Web Development


JavaScript plays a crucial role in enhancing user experience by enabling real-time interactivity. It
allows developers to:
 Validate user input on forms before data is sent to the server.
 Create interactive elements like image sliders, pop-ups, and dropdown menus.
 Update web page content dynamically without refreshing the page.
 Improve accessibility and usability through responsive design behaviors.
 Communicate with servers asynchronously using AJAX, enabling real-time data
updates (e.g., live shipment tracking).

3.2.2 Integration with Other Technologies


JavaScript works closely with HTML and CSS:
 HTML structures the content of the web page.
 CSS styles the layout and design.
 JavaScript adds behavior and interactivity.
Additionally, JavaScript can integrate with external APIs (such as maps, GPS, or SMS
gateways), making it ideal for building feature-rich applications like Courier Management
Systems.

Department of Computer Application-RNSFGC Page | 18


Zoo Management

3.2.3 Advantages of Using JavaScript


 Speed: Executes quickly in the user's browser, reducing server load.
 Versatility: Can be used both on the front-end (in browsers) and back-end (with platforms
like Node.js).
 Ease of Use: Relatively easy to learn and widely used, making it beginner-friendly.
 Cross-Browser Support: Runs on all major web browsers with consistent behavior.
 Vast Ecosystem: Supported by a large community with numerous frameworks and libraries
(e.g., React, Angular, Vue.js).

3.2.4 Role of JavaScript in Courier Management System


In the context of a Courier Management System, JavaScript is used to:
 Dynamically display shipment tracking information.
 Provide instant feedback to users when booking parcels or filling out forms.
 Enable real-time updates and alerts about shipment status changes.
 Enhance the visual appeal and responsiveness of the user interface.

3.3 Introduction to Express


Express (or Express.js) is a minimalist and flexible web application framework for
Node.js that is used to build web applications and RESTful APIs. It simplifies the process of creating
robust server-side applications in JavaScript by providing a structured way to handle routing, middleware,
HTTP requests, and responses.
Developed and maintained as an open-source project, Express is widely used in both small and large-scale
applications and is considered the de facto standard server framework for Node.js.

3.3.1 Key Features of Express


 Fast and Lightweight
Built on Node.js, Express inherits its speed and non-blocking I/O capabilities, making it ideal for
building high-performance web applications.
 Routing System
Express allows developers to define URL routes to handle different HTTP methods (GET, POST, PUT,
DELETE), enabling RESTful API development.

Department of Computer Application-RNSFGC Page | 19


Zoo Management

 Middleware Support
Middleware functions can be used to handle requests, process data, perform authentication, or handle errors
before sending responses.
 Template Engines Integration
Express supports various template engines like EJS, Pug, or Handlebars to dynamically render HTML
pages on the server.
 Easy to Integrate
It can be integrated with databases (like MongoDB, MySQL) and third-party libraries, making it highly
versatile for full-stack development.

3.3.2 Benefits of Using Express


 Simplifies Backend Development: Reduces the complexity of setting up a Node.js server manually.
 Highly Customizable: Developers can add or remove features based on the needs of the application.
 Large Ecosystem: Supported by a rich set of plugins and modules through npm (Node Package
Manager).
 Scalable Architecture: Suitable for both small web apps and large enterprise-level systems.

3.3.3 Use of Express in Web Applications


In modern web development, Express is commonly used to:
 Build RESTful APIs for front-end and mobile applications.
 Handle backend logic, form submissions, and data processing.
 Connect with databases to store and retrieve data.
 Manage sessions, authentication, and user roles.

3.3.4 Express in Courier Management System


In the context of a Courier Management System, Express can be used to:
 Develop the API endpoints for booking shipments, tracking parcels, and managing user accounts.
 Handle secure login and authentication for users, admins, and couriers.
 Connect to a database to store shipment records, user data, and logs.
 Send real-time updates or responses to the front-end interface.

Department of Computer Application-RNSFGC Page | 20


Zoo Management

3.5 Introduction to CSS

CSS (Cascading Style Sheets) is a stylesheet language used to define the visual appearance and formatting of
web pages written in HTML. It plays a crucial role in web development by controlling the layout, colors,
fonts, spacing, animations, and responsiveness of websites. While HTML is responsible for the structure
and content of a web page, CSS is responsible for how it looks and feels.
Since its introduction, CSS has evolved significantly. With the advent of CSS3, developers now have access to
a wide range of powerful features such as media queries, transitions, animations, and flexible box
(Flexbox) or grid layouts, enabling them to design visually dynamic and responsive web applications.

3.5.1 Why CSS is Important in Web Development


 Improves Design and Aesthetics
CSS allows for the creation of beautifully designed websites with appealing color schemes, typography, and
spacing that improve user engagement.
 Consistency Across Pages
With external CSS, a consistent design can be applied across multiple pages of a website. This improves the user
experience and makes maintenance easier.
 Faster Development and Maintenance
Reusable classes, IDs, and selectors help developers apply styles efficiently and update them in a single
place instead of editing each HTML page.
 Reduces Page Size and Load Time
By removing inline styling and using external stylesheets, CSS can help reduce the size of HTML files and
improve load times.
 Device Responsiveness
CSS media queries allow developers to create layouts that adapt to different screen sizes, improving the
accessibility and usability of websites across devices (desktops, tablets, smartphones).

3.5.2 CSS in Courier Management System

In a Courier Management System, CSS is essential for designing a clean, user-friendly interface for
different user roles such as:

Department of Computer Application-RNSFGC Page | 21


Zoo Management

 Customers
CSS enhances the experience of booking shipments, viewing tracking information, and accessing their
shipment history with clearly styled forms, buttons, and alerts.
 Admins and Sub-Admins
Dashboard interfaces, navigation menus, and report views are styled to be both visually appealing and
functionally intuitive.
 Responsive Design
The system must work well on different screen sizes—CSS media queries ensure that the application
is mobile-friendly, especially for couriers updating delivery statuses on mobile devices.
 Theme Consistency
CSS maintains a uniform color theme, branding elements (like logos and buttons), and layout across all
modules, contributing to a professional and trustworthy system interface.

3.5.4 Advanced CSS Features Used in Modern Web Applications

 Flexbox and Grid: Layout systems that allow precise alignment and distribution of space
among elements, especially useful for dashboards and forms.
 CSS Transitions and Animations: Smooth visual effects for interactive feedback (e.g., button
hover effects, notification fades).
 Custom Fonts and Icons: Use of web fonts (e.g., Google Fonts) and icon libraries ( like Font
Awesome) to enhance visual appeal.
 Variables and Custom Properties: Enable theming and easier maintenance of consistent design
values (e.g., primary color, font sizes).
 Z-index and Layering: Used to control the stacking order of elements such as modals, tooltips,
and menus.

3.5.5 Types of CSS


1. Inline CSS
o Applied directly to HTML elements using the style attribute.
o Example: <p style="color:red;">This is a red paragraph.</p>
o Not recommended for large-scale projects due to poor reusability.
2. Internal CSS
o Written within a <style> tag inside the <head> section of an HTML document.
o Useful for small projects or single-page applications.
3. External CSS
o Stored in a separate .css file and linked using the <link> tag.
o Best practice for large or multi-page applications due to better maintainability and reusability.

3.6 Introduction to MySQL

MySQL is an open-source relational database management system (RDBMS) that is widely used for
managing and organizing data in web applications. It is based on Structured Query Language (SQL), the
standard language for accessing and manipulating databases.
MySQL is known for its speed, reliability, ease of use, and flexibility, making it one of the most popular
database systems in the world. It is commonly used in conjunction with server-side scripting languages

Department of Computer Application-RNSFGC Page | 22


Zoo Management

like PHP, and is part of many technology stacks such as LAMP (Linux, Apache, MySQL, PHP)
and XAMPP (cross-platform Apache, MariaDB/MySQL, PHP, Perl).

3.6.1 Key Features of MySQL


 Relational Database Model
MySQL organizes data into tables that are related to one another, allowing efficient querying and
structured storage.
 Open Source and Free
MySQL is free to use and modify, with robust community support and frequent updates.
 Cross-Platform Support
Available for Windows, Linux, macOS, and other major operating systems.
 Scalability
MySQL supports small applications as well as large-scale, high-traffic websites and enterprise systems.
 Security
MySQL offers robust access control, data encryption, and user management to protect data integrity and
confidentiality.
 High Performance
Optimized for read-heavy applications with fast data retrieval capabilities.

3.6.2 Why MySQL is Used in Web Applications


 Ease of Integration

Easily integrates with server-side languages like PHP, Python, and Java for dynamic web applications.
 Efficient Data Handling
Supports complex queries, joins, stored procedures, and indexing for advanced data manipulation.
 Reliability
Offers strong data backup, recovery, and transactional support, ensuring data consistency and safety.
 Support for Multiple Users
Can handle multiple users simultaneously without compromising performance.

3.6.3 Role of MySQL in Courier Management System


In a Courier Management System, MySQL is crucial for storing and managing the following types of data:
 User Information
Stores details for customers, admins, sub-admins, and couriers including login credentials and profile
data.
 Shipment Records
Tracks booking information, parcel IDs, sender/receiver addresses, and shipment status.
 Parcel Status Logs
Maintains real-time updates on parcel movements, delivery confirmation, and exception handling.
 Feedback and Messages
Stores feedback from users and automated message templates for status notifications.

Department of Computer Application-RNSFGC Page | 23


Zoo Management

 Reports and Analytics


Collects historical data used for generating reports on delivery performance, financial records, and user
activity.

3.6.4 Advantages of Using MySQL in This Project

1. Structured Data Storage


Ensures that the courier data is well-organized, normalized, and easily accessible.
2. Fast Query Execution
Enables real-time tracking and instant search of parcel and user records.
3. Data Security
Offers user access control to ensure only authorized personnel can manipulate critical data.
4. Backup and Recovery
Supports regular backups to protect against data loss or corruption.
5. Concurrency Control
Allows multiple users to access and update the database simultaneously without conflict.

Department of Computer Application-RNSFGC Page | 24


Zoo Management

CHAPTER 4
SOFTWARE REQUIREMENT

Department of Computer Application-RNSFGC Page | 25


Zoo Management

Software Requirement

1. Operating System
 Compatible with Windows, Linux, or macOS for both development and deployment.
 The system can be hosted on any standard server OS supporting PHP and MySQL.

2. Web Server
 Apache HTTP Server (commonly used with XAMPP package) to serve the web application.
 Supports PHP execution and handles HTTP requests and responses.

3. Programming Languages and Frameworks


 PHP: Server-side scripting language used for backend logic and dynamic page generation.
 HTML5 and CSS3: For structuring and styling the user interface.
 JavaScript (including libraries such as jQuery): For client-side interactivity and dynamic content updates.
 Optional: Use of frameworks like Express.js if Node.js backend is incorporated.

4. Database Management System


 MySQL: Relational database system for storing user data, shipment details, tracking logs, and
other application data.
 Must support efficient querying and concurrency for multi-user access.

5. Development Environment
 XAMPP or similar package (includes Apache, PHP, MySQL) for local development and testing.
 Code editor/IDE such as Visual Studio Code, PHPStorm, or Sublime Text.

6. Security Components
 SSL/TLS certificates for secure HTTPS connections.
 PHP libraries for input validation, encryption, and session management.

7. Notification Services
 Integration with SMS gateway APIs or email servers for sending shipment status notifications.

8. Browser Compatibility
 The system must support all major modern web browsers including Google Chrome,
Mozilla Firefox, Microsoft Edge, and Safari.

Department of Computer Application-RNSFGC Page | 26


Zoo Management

4.1 Functional Requirements

1. User Authentication and Role Management


 Users must be able to register, log in, and log out securely.
 The system should support multiple user roles:
o Admin
o Sub-Admin
o Zookeeper
o Veterinarian
o Visitor (read-only access)
 Role-based access must control visibility and permissions across modules.

2. Animal Management
 Admins or authorized staff can add, update, or delete animal records.
 Each record must include:
o Species, name, gender, age
o Health history, diet type, feeding schedule
o Enclosure location and photos
 System should support classification by species, habitat, or conservation status.

3. Feeding and Medical Schedule


 Zookeepers can log feeding times and note any irregularities.
 Veterinarians can schedule and record medical checkups, treatments, and vaccinations.
 The system should send alerts for upcoming feedings or overdue medical checkups.

4. Staff Management
 Admins can manage staff records (zookeepers, vets, support staff).
 Staff can be assigned to specific animals, enclosures, or zones.
 Shift timings and daily task assignments can be viewed and updated.

5. Ticket Booking and Visitor Management


 Visitors can book tickets online, selecting date and time slots.
 System generates a unique booking ID and email/SMS confirmation.
 Admin can view ticket sales, cancelations, and entry logs.

Department of Computer Application-RNSFGC Page | 27


Zoo Management

6. Event and Activity Management


 Admins can create and manage events (e.g., feeding shows, educational tours).
 Visitors can view upcoming events and register to attend.
 Staff can be assigned to event coordination and attendance tracking.

7. Real-Time Notifications
 Users should receive system-generated alerts for:
o Upcoming events
o Scheduled feeding or medical updates
o Visitor booking confirmations
o Critical system updates (e.g., animal health issues)
 Notifications can be sent via email or SMS API integration.

8. Dashboard and Reports


 Admin and Sub-admin dashboards should display:
o Total animals, staff, and bookings
o Upcoming schedules (feeding, medical, events)
o System alerts and pending tasks
 Reports must include:
o Visitor statistics
o Animal health summaries
o Revenue and ticket sales analytics

9. Feedback and Support


 Visitors can submit feedback or report issues through a contact form.
 Admins can view, categorize, and respond to support tickets.

10. Security and Data Integrity


 Sensitive operations (login, booking, medical logs) must be protected with input validation and
user authentication.
 The system must implement role-based access control (RBAC) to prevent unauthorized data access.
 Passwords must be securely stored using hashing techniques.

Department of Computer Application-RNSFGC Page | 28


Zoo Management

4.2 Non-Functional Requirements

1. Performance Requirements
 The system should handle multiple concurrent users (e.g., admins, zookeepers, and visitors)
without significant delays.
 Web pages (e.g., animal profiles, ticket booking) should load within 2–3 seconds under normal load.
 Real-time tracking, notifications, and schedule updates should reflect changes immediately.

2. Scalability
 The system must be capable of supporting:
o Additional animals and enclosures
o Increased number of staff members and visitors
o Future expansion to multiple zoo branches
 Architecture should support adding new modules (e.g., wildlife adoption, research portals) without
core rework.

3. Security Requirements
 All user data must be protected using secure login, encryption, and session management.
 Implement role-based access control (RBAC) to prevent unauthorized access to restricted modules.
 The system must be safeguarded against common vulnerabilities:
o SQL Injection
o Cross-Site Scripting (XSS)
o Cross-Site Request Forgery (CSRF)

4. Availability and Reliability


 The system should maintain 99.9% uptime during operational hours.
 Features like ticket booking, animal records, and notifications must remain functional even under
high traffic.
 A fallback mechanism should handle server or service failures to minimize disruption.

5. Usability
 The user interface should be clean, responsive, and easy to navigate for both technical and non-
technical users.
 Minimal training should be required for staff to use features like schedule logging or report generation.
 Use of icons, tooltips, and consistent design elements should enhance user experience.

6. Maintainability
 Code must be well-documented, modular, and follow standard naming conventions.
 Developers should be able to easily debug, modify, or upgrade features.
 Logs should track key actions (e.g., login, data updates, errors) for monitoring and troubleshooting.

7. Portability
 The system should run on multiple platforms: Windows, Linux, and macOS.
 Should be accessible on desktops, tablets, and smartphones using modern web browsers.

8. Compatibility
 The application must be compatible with major browsers such as:
o Google Chrome
o Mozilla Firefox
o Microsoft Edge
o Safari

Department of Computer Application-RNSFGC Page | 29


Zoo Management

9. Backup and Recovery


 The system should perform regular automatic backups of critical data (animals, schedules, bookings).
 In the event of a failure, data must be recoverable with minimal loss and downtime.

10. Legal and Compliance


 The system must comply with data privacy laws (e.g., GDPR or applicable national standards).
 Visitor and staff data must be handled responsibly, ensuring consent, confidentiality, and integrity.

Department of Computer Application-RNSFGC Page | 30


Zoo Management

CHAPTER 5
SYSTEM DESIGN

Department of Computer Application-RNSFGC Page | 31


Zoo Management

SYSTEM DESIGN

System design is the most creative and challenging. The System Design Document describes
the system requirements, operating environment, system and subsystem architecture, files and
database design, input formats, output layouts, human-machine interfaces, detailed design,
processing logic, and external interfaces

5.1 DATA FLOW DIAGRAM

A data flow diagram (DFD) maps out the flow of information for any process or system. It
uses defined symbols like rectangles, circles and arrows, plus short text labels, to show data
inputs, outputs, storage points and the routes between each destination.

5.1.1 User Panel Data Flow Diagram

In user panel design we have done our task for user. Here we provide facility
about Zoo Management system. In index page user can select any options

Department of Computer Application-RNSFGC Page | 32


Zoo Management

5.1.2 Admin Panel Data Flow Diagram

We have design user login facility to manage and update all of the information. It is fully
secured page. Without appropriate username and password it cannot be accessed by
anyone. For admin login after giving username and password we need to click a login
button , when we click login button it is not directly entered in home page , it stay in
login page. Then it starts a session and set two variables called username and password.
If the username and password are matched with database, it can enter in home page. It is
not possible without click login button. In case if username or password are not matched
with database than Invalid username or password massage is shown. We can describe
the login facility in admin login by using below flow chart given below

Department of Computer Application-RNSFGC Page | 33


Zoo Management

5.2 ER DIAGRAM

The Entity-Relationship (ER) diagram for a Zoo Management System (ZMS) involves identifying the key
entities, their attributes, and the relationships between them. Below is a detailed description of the ER
diagram for the ZMS, including the entities, their attributes, and the relationships.

The diagram helps in database design by organizing data elements and defining how they relate to each
other logically.

5.2.3 Entities and Relationships

1. Animal
 Attributes: AnimalID (PK), Name, Species, Age, Gender, HealthStatus,
DietaryRequirements, HabitatID (FK)
 Description: Represents the animals in the zoo, including their basic information and health status.

2. Habitat
 Attributes: HabitatID (PK), HabitatName, Description, Capacity
 Description: Represents the habitats or enclosures where animals are housed.

3. Staff
 Attributes: StaffID (PK), Name, Role, ContactNumber, Email, DepartmentID (FK)
 Description: Represents the staff members working at the zoo, including their roles and
contact information.

4. Department
 Attributes: DepartmentID (PK), DepartmentName, Description
 Description: Represents different departments within the zoo, such as veterinary, maintenance,
and administration.

5. Visitor
 Attributes: VisitorID (PK), Name, Age, ContactNumber, Email, TicketID (FK)
 Description: Represents visitors to the zoo, including their basic information and ticket details.

6. Ticket
 Attributes: TicketID (PK), TicketType, PurchaseDate, ValidFrom, ValidTo, VisitorID (FK)
 Description: Represents tickets purchased by visitors, including the type of ticket and
validity period.

7. Inventory
 Attributes: InventoryID (PK), ItemName, ItemType, Quantity, SupplierID (FK)
 Description: Represents items in the zoo's inventory, such as animal food and medical supplies.

8. Supplier
 Attributes: SupplierID (PK), SupplierName, ContactNumber, Email, Address
 Description: Represents suppliers of inventory items, including their contact information.

9. HealthRecord
 Attributes: RecordID (PK), AnimalID (FK), Date, Description, VeterinarianID (FK)
 Description: Represents health records of animals, including details of veterinary check-ups
and treatment

Department of Computer Application-RNSFGC Page | 34


Zoo Management

ER DIAGRAM (ER)

Department of Computer Application-RNSFGC Page | 35


Zoo Management

CHAPTER 6
SNAPSHOTS

Department of Computer Application-RNSFGC Page | 36


Zoo Management

Output Screen of Project

After going to http://localhost/Courier-Igniter/index.php a user can see the view.

Home Page

Gallery

Department of Computer Application-RNSFGC Page | 37


Zoo Management

Animals

Department of Computer Application-RNSFGC Page | 38


Zoo Management

Tickets

Vacancies

Department of Computer Application-RNSFGC Page | 39


Zoo Management

Events

Contact Us

Department of Computer Application-RNSFGC Page | 40


Zoo Management

Admin Panel

Login Panel

Department of Computer Application-RNSFGC Page | 41


Zoo Management

CHAPTER 7
CODING

Department of Computer Application-RNSFGC Page | 42


Zoo Management

<?php
require '../db/db_connect.php';
$animalTable = new Table('animals');

$currentAnimalofWeekQ = $pdo->prepare("SELECT * FROM animal_of_the_week WHERE


an_week_id=(SELECT MAX(an_week_id) FROM animal_of_the_week )");
$currentAnimalofWeekQ->execute();
if ($currentAnimalofWeekQ->rowCount() > 0) {
$fetched = $currentAnimalofWeekQ->fetch();
$currAnimalQ = $animalTable->findInDatabase('animal_id', $fetched['animal_id']);
$currAnimal = $currAnimalQ->fetch();
} else {
$currAnimal = null;
}

$animalImageTable = new Table('animal_images');


$getImageName = function ($animalId)
{ global $animalImageTable;
$imageQ = $animalImageTable->findInDatabase('animal_id', $animalId);
$images = $imageQ->fetchAll();
$oneImageName = $images[0]['image_name'];
return $oneImageName;
};

$sponsorTable = new Table('sponsors');


$getSponsorName = function ($sponsorId)
{ global $sponsorTable;
$sponsorQ = $sponsorTable->findInDatabase('sponsor_id', $sponsorId);
$sponsor = $sponsorQ->fetch();
return $sponsor['s_client_name'];
};
$testimonials = $pdo->prepare("SELECT * FROM testimonials ORDER BY posted_date DESC LIMIT 3");
$testimonials->execute();

$title = "Zoo - Homepage";


$content = loadTemplate('../templates/home_template.php',
[ 'currAnimal' => $currAnimal, 'getImageName' => $getImageName,
'testimonials'=>$testimonials, 'getSponsorName' => $getSponsorName
]);

<?php
require_once '../db/db_connect.php';
// $galleryTable = new Table('gallery');
// $galleries = $galleryTable->findInDatabase('g_archived', 'false');

$galleryImage = $pdo->prepare('SELECT * FROM gallery WHERE g_file_type=:g_file_type AND


g_archived=:g_archived');
$galleryImage->execute(['g_file_type' => 'image', 'g_archived' => 'false']);

Department of Computer Application-RNSFGC Page | 43


Zoo Management

$galleryVideo = $pdo->prepare('SELECT * FROM gallery WHERE g_file_type=:g_file_type AND


g_archived=:g_archived');
$galleryVideo->execute(['g_file_type' => 'video', 'g_archived' => 'false']);

$title = "Zoo - Gallery";


$content = loadTemplate('../templates/gallery_template.php', ['galleryImage' => $galleryImage,
'galleryVideo' => $galleryVideo]);

<?php
require_once '../db/db_connect.php';
$classTable = new Table('classifications');

$classId=$_GET['class_id'];

$animalTable = new Table('animals');


$animals = $pdo->prepare("SELECT * FROM animals WHERE an_archived='false' AND class_id='$classId'");
$animals->execute();

$getClassName = function ($classId)


{ global $classTable;
$classQ = $classTable->findInDatabase('class_id', $classId);
$class = $classQ->fetch();
return $class['class_display_name'];
};

$animalImageTable = new Table('animal_images');


$getImageName = function ($animalId)
{ global $animalImageTable;
$imageQ = $animalImageTable->findInDatabase('animal_id', $animalId);
$images = $imageQ->fetchAll();
$oneImageName = $images[0]['image_name'];
return $oneImageName;
};

$title = "Zoo - Animals";


$content = loadTemplate('../templates/animals_template.php', [
'animals' => $animals,
'getClassName'=>$getClassName,
'getImageName'=>$getImageName
]);

<?php
require_once '../db/db_connect.php';
$classTable = new Table('classifications');
$animalImageTable = new Table('animal_images');
$animalTable = new Table('animals');

$animalQ = $animalTable->findInDatabase('animal_id', $_GET['an_id']);


$animal = $animalQ->fetch();

Department of Computer Application-RNSFGC Page | 44


Zoo Management

$classQ = $classTable->findInDatabase('class_id', $animal['class_id']);


$class = $classQ->fetch();

$childTable = new Table($class['class_table_name']);


$childDetailsQ = $childTable->findInDatabase('animal_id', $animal['animal_id']);
$childDetails = $childDetailsQ->fetch();

$images = $animalImageTable->findInDatabase('animal_id', $animal['animal_id']);

$getClassName = function ($classId)


{ global $classTable;
$classQ = $classTable->findInDatabase('class_id', $classId);
$class = $classQ->fetch();
return $class['class_display_name'];
};

$locationTable = new Table('locations');

$getLocationName = function ($locationId)


{ global $locationTable;
$var = $locationTable->findInDatabase('location_id', $locationId);
$data = $var->fetch();
return $data['location_name'];
};

$sponsoredQ = $pdo->prepare('SELECT * FROM sponsored_animals WHERE animal_id=:animal_id AND


s_status=:s_status');
$sData = [
'animal_id' => $_GET['an_id'],
's_status' => 'accepted'
];
$sponsoredQ->execute($sData);
if ($sponsoredQ->rowCount() > 0) {
$sponsored = true;
$sponsorDetails = $sponsoredQ->fetch();
} else {
$sponsored = false;
$sponsorDetails = [];
}

$title = "Zoo - Animals";


$content = loadTemplate('../templates/animal_template.php', [
'animal' => $animal,
'class' => $class,
'childDetails' => $childDetails,
'images' => $images,
'getLocationName' => $getLocationName,
'getClassName' => $getClassName,
'sponsored'=>$sponsored,
'sponsorDetails'=>$sponsorDetails
]);

Department of Computer Application-RNSFGC Page | 45


Zoo Management

<?php
require '../db/db_connect.php';

$applicationTable = new Table('applications');


if (isset($_POST['submit'])) {
unset($_POST['submit']);

$fileName = pathinfo($_FILES['cv']['name'])['filename'];
$newFileName = $fileName . '_' . time();
$extension = pathinfo($_FILES['cv']['name'])['extension'];
$fullName = $newFileName . '.' . $extension;

$_POST['a_cv'] = $fullName; move_uploaded_file($_FILES['cv']


['tmp_name'], '../files/cv/' . $fullName);

$_POST['vacancy_id'] = $_GET['vac_id'];

$applicationTable->insertInDatabase($_POST);
header('Location:apply_vacancy?msg= Application received. You\'ll be contacted after few days');

$title = "Zoo - Apply for Vacancy";


$content = loadTemplate('../templates/apply_vacancy_template.php', []);

<?php

$ticketTable = new
Table('tickets'); if
(isset($_POST['submit'])) {
unset($_POST['submit']);
$totalPrice = $_POST['regular_num'] * 6 + $_POST['child_num'] * 2 + $_POST['student_num'] * 3;
if ($totalPrice == 0) {
header('Location:ticket_page?msg=Booking failed. You must select at least one ticket&type=danger');
} else {
$_POST['visitor_id'] = $_SESSION['visitor_id'];
$ticketTable->insertInDatabase($_POST);
header('Location:ticket_page?msg=Ticket booked successfully!! Your total price is: $' . $totalPrice .
'&type=success');
}
}

$title = "Zoo - Ticket";


$content = loadTemplate('../templates/ticket_page_template.php', []);

<?php
require '../db/db_connect.php';

$vacancies = $pdo->prepare("SELECT * FROM vacancies WHERE v_archived='false' AND


v_status='available'");

Department of Computer Application-RNSFGC Page | 46


Zoo Management

$vacancies->execute();

Department of Computer Application-RNSFGC Page | 47


Zoo Management

$title = "Zoo - Vacancies";


$content = loadTemplate('../templates/vacancies_template.php', ['vacancies' => $vacancies]);

<?php
$eventsTable = new Table('events');
$events = $eventsTable->findInDatabase('event_archived', 'false');

$title = "Zoo - Events";


$content = loadTemplate('../templates/events_template.php', ['events' => $events]);

<?php
$testimonialTable = new Table('testimonials');
if (isset($_POST['submit'])) {
unset($_POST['submit']);
$_POST['sponsor_id'] = $_SESSION['sponsor_id'];
$testimonialTable->insertInDatabase($_POST); header('Location:post_testimonial?
msg=Testimonial added successfully');
}
$title = "Zoo - Add Testimonial";
$content = loadTemplate('../templates/post_testimonial_template.php', []);

<?php
$sponsorTable = new
Table('sponsors'); if
(isset($_POST['submit'])) {
unset($_POST['submit']);
if ($_POST['sponsor_id'] == "") {
$_POST['s_password'] = password_hash($_POST['s_password'], PASSWORD_DEFAULT);
}
if ($_POST['sponsor_id'] != "") {
$_SESSION['s_client_name'] = $_POST['s_client_name'];
$_SESSION['s_existing_customer'] = $_POST['s_existing_customer'];
$_SESSION['s_phone_number'] = $_POST['s_phone_number'];
$_SESSION['s_client_address'] = $_POST['s_client_address'];
$_SESSION['s_yearly_revenue'] = $_POST['s_yearly_revenue'];
$_SESSION['s_business_type'] = $_POST['s_business_type'];
$_SESSION['s_email'] = $_POST['s_email'];
}
$sponsorTable->saveInDatabase($_POST, 'sponsor_id');
if ($_POST['sponsor_id'] == "")
header('Location:register_sponsor?msg=Applied for registration. You can login after few hours.');
else
header('Location:register_sponsor?msg=Updated Successfully');
}

$title = "Zoo - Sponsor";


$content = loadTemplate('../templates/register_sponsor_template.php', []);

<?php
$visitorTable = new Table('visitors');

Department of Computer Application-RNSFGC Page | 48


Zoo Management

if (isset($_POST['submit'])) {

Department of Computer Application-RNSFGC Page | 49


Zoo Management

unset($_POST['submit']);
if ($_POST['visitor_id'] == "") {
$_POST['v_password'] = password_hash($_POST['v_password'], PASSWORD_DEFAULT);
}
$visitorTable->saveInDatabase($_POST, 'visitor_id');

if ($_POST['visitor_id'] != "") {
$_SESSION['v_firstname'] = $_POST['v_firstname'];
$_SESSION['v_lastname'] = $_POST['v_lastname'];
$_SESSION['v_email'] = $_POST['v_email'];
$_SESSION['v_address'] = $_POST['v_address'];
}

if ($_POST['visitor_id'] == "") header('Location:register_visitor?


msg=Registered Successfully');
else
header('Location:register_visitor?msg=Updated Successfully');
}
$title = "Zoo - Visitor Registration";
$content = loadTemplate('../templates/register_visitor_template.php', []);

<?php
$sponsorAnimalTable = new Table('sponsored_animals');

if (isset($_POST['submit'])) {
unset($_POST['submit']);
$_POST['animal_id'] = $_GET['an_id'];
$_POST['sponsor_id'] = $_SESSION['sponsor_id'];

$fileName = pathinfo($_FILES['image']['name'])['filename'];
$newFileName = $fileName . '_' . time();
$extension = pathinfo($_FILES['image']['name'])['extension'];
$fullName = $newFileName . '.' . $extension;

$_POST['signage_photo'] = $fullName;

$price = $_POST['total_price'];
$sBand;

if ($price >= 500 && $price <= 1000)


$sBand = 'E';
else if ($price > 1000 && $price <= 1500)
$sBand = 'D';
else if ($price > 1500 && $price <= 2000)
$sBand = 'C';
else if ($price > 2000 && $price <= 2500)
$sBand = 'B';
else if ($price > 2500)
$sBand = 'A';

$_POST['sponsor_band'] = $sBand;

Department of Computer Application-RNSFGC Page | 50


Zoo Management

$sponsorAnimalTable->insertInDatabase($_POST);

move_uploaded_file($_FILES['image']['tmp_name'], '../img/sponsor_image/' . $fullName);


header('Location:sponsor_animal?msg=Applied for sponsorship. Please wait until admin reviews your
application');
}

$title = "Zoo - Sponsor";


$content = loadTemplate('../templates/sponsor_animal_template.php', []);

(function($) {
"use strict";

$("#sidebarToggle, #sidebarToggleTop").on('click', function(e) {


$("body").toggleClass("sidebar-toggled");
$(".sidebar").toggleClass("toggled");
if ($(".sidebar").hasClass("toggled")) {
$('.sidebar .collapse').collapse('hide');
};
});

$(window).resize(function()
{ if ($(window).width() <
768) {
$('.sidebar .collapse').collapse('hide');
};
});
$('body.fixed-nav .sidebar').on('mousewheel DOMMouseScroll wheel', function(e) {
if ($(window).width() > 768) {
var e0 = e.originalEvent,
delta = e0.wheelDelta || -e0.detail;
this.scrollTop += (delta < 0 ? 1 : -1) * 30;
e.preventDefault();
}
});

$(document).on('scroll', function() {
var scrollDistance = $
(this).scrollTop(); if (scrollDistance >
100) {
$('.scroll-to-top').fadeIn();
} else {
$('.scroll-to-top').fadeOut();
}
});

$(document).on('click', 'a.scroll-to-top', function(e) {


var $anchor = $(this);

Department of Computer Application-RNSFGC Page | 51


Zoo Management

$('html, body').stop().animate({
scrollTop: ($($anchor.attr('href')).offset().top)

Department of Computer Application-RNSFGC Page | 52


Zoo Management

}, 1000, 'easeInOutExpo');
e.preventDefault();
});

})(jQuery);

<?php
$badge = [
'high' => 'danger',
'medium' =>
'warning', 'low' =>
'success'
];
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
} ?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['attended']) ? "Attended" : "" ?>
Watchlist</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 600px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Image</th>
<th scope="col">Given Name</th>
<th scope="col">Classification</th>
<th scope="col">Issue</th>
<th scope="col">Severity</th>
<th scope="col">Date Issued</th>
<th scope="col">Attended</th>
<?php if ($_SESSION['role'] != "zookeeper") { ?>
<th scope="col">Action</th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php foreach ($watchlists as $key => $watchlist) {
$animal = $getAnimalData($watchlist['animal_id']);
$className = $getClassName($animal['class_id']);
$imageName = $getImageName($animal['animal_id']);
?>
<tr>

Department of Computer Application-RNSFGC Page | 53


Zoo Management

<th scope="row"><?= $key + 1 ?></th>

Department of Computer Application-RNSFGC Page | 54


Zoo Management

<td><img src="../../img/animals/<?= $imageName ?>" alt="" width="100px" style="border-


radius: 20px;"></td>
<td><?= $animal['an_given_name'] ?></td>
<td><?= $className ?></td>
<td><?= $watchlist['watch_description'] ?></td>
<td><span class="badge p-2 badge-<?= $badge[$watchlist['watch_severity']] ?>"><?=
$watchlist['watch_severity'] ?></span></td>
<td><?= $watchlist['watch_date'] ?></td>
<td><?= $watchlist['watch_attended'] ?></td>
<?php if ($_SESSION['role'] != "zookeeper") { ?>

<?php if (!isset($_GET['attended'])) { ?>


<td>
<a href="archive?attend_watch=<?= $watchlist['watch_id'] ?>&watch_value=true"
class="btn btn-success btn-sm d-inline-block"><i class="fas fa-user-nurse"></i> Mark Attended</a>
</td>
<?php } else { ?>
<td>
<a href="archive?attend_watch=<?= $watchlist['watch_id'] ?>&watch_value=false"
class="btn btn-danger btn-sm d-inline-block"><i class="fas fa-user-times"></i> Mark Unattended</a>
</td>
<?php } ?>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<?php
$animals2 = $animals->fetchAll();
$classifications2 = $classifications->fetchAll();
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
} ?>
<h1 class="h3 mb-4 text-gray-800">Set Animal of the Week</h1>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<?php
foreach ($classifications2 as $key => $row) { ?>

Department of Computer Application-RNSFGC Page | 55


Zoo Management

<li class="nav-item">
<a class="nav-link <?php if ($key == 0) echo "active" ?>" data-toggle="tab" href="#<?php echo
$row['class_table_name'] ?>" role="tab"><?php echo $row['class_display_name']; ?></a>
</li>
<?php } ?>
</ul>
<div class="tab-content" id="myTabContent">
<?php
foreach ($classifications2 as $key => $class) { ?>
<div class="tab-pane fade <?php if ($key == 0) echo "show active" ?>" id="<?php echo
$class['class_table_name'] ?>" role="tabpanel">
<?php
$classId = $class['class_id'];
$tableName = $class['class_table_name'];
?>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Image</th>
<th scope="col">Name</th>
<th scope="col">Species Name</th>
<th scope="col">DOB</th>
<th scope="col">Gender</th>
<th scope="col">Join Date</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php
$count = 1;
foreach ($animals2 as $animal) { ?>
<?php if ($animal['class_id'] == $classId) {
$imageName = $getImageName($animal['animal_id']);
?>
<tr>
<th scope="row"><?= $count++ ?></th>
<td><img src="../../img/animals/<?= $imageName ?>" alt="" width="120px"
style="border-radius: 20px;"></td>
<td><?= $animal['an_given_name'] ?></td>
<td><?= $animal['an_species_name'] ?></td>
<td><?= $animal['an_dob'] ?></td>
<td><?= $animal['an_gender'] ?></td>
<td><?= $animal['an_joindate'] ?></td>
<td>
<a href="archive?set_an_week=<?= $animal['animal_id'] ?>" class="btn btn-
success btn-sm d-inline-block"><i class="fas fa-trophy"></i>&emsp;Set Animal of the Week</a>
</td>
</tr>
<?php } ?>

Department of Computer Application-RNSFGC Page | 56


Zoo Management

<?php } ?>
</tbody>
</table>
</div>

</div>
<?php } ?>
</div>

<div class="mt-4">
<div class="card mb-4">
<div class="card-header h5 text-gray-800 font-weight-bold">
Current Animal of the Week
</div>
<div class="card-body d-flex">
<?php if ($currAnimal != null) { ?>
<div class="text-center">
<img src="../../img/animals/<?= $getImageName($currAnimal['animal_id']) ?>" alt=""
width="60%" style="border-radius: 20px">
</div>
<div>
<h6> <span class="text-muted">Given name:</span>&ensp;<?=
$currAnimal['an_given_name'] ?></h6>
<h6> <span class="text-muted">Species name:</span>&ensp;<?=
$currAnimal['an_species_name'] ?></h6>
<h6> <span class="text-muted">Date of birth:</span>&ensp;<?= $currAnimal['an_dob']
?></h6>
<h6> <span class="text-muted">Gender:</span>&ensp;<?= $currAnimal['an_gender'] ==
"m" ? "Male":"Female" ?></h6>
<h6> <span class="text-muted">Zoo join date:</span>&ensp;<?=
$currAnimal['an_joindate'] ?></h6>
</div>
<?php } else { ?>
Animal of the week not set
<?php } ?>
</div>
</div>
</div>
</div>
</div>
</div>

<div class="container">
<div class="row pb-5">
<div class="col-md-8 order-md-1">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-' . $_GET['type'] . ' alert-dismissible fade show" role="alert">' .
$_GET['msg'] . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>

Department of Computer Application-RNSFGC Page | 57


Zoo Management

</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800"><?= isset($_GET['l_id']) ? "Edit" : "Add" ?> Location</h1>
<form action="" method="post">
<input type="hidden" name="location_id" value="<?php if (isset($location['location_id'])) echo
$location['location_id'] ?>">
<div class="mb-4 field-required">
<label for="location_name">Location Name</label>
<input type="text" value="<?= isset($location['location_name']) ? $location['location_name'] : ""
?>" class="form-control" id="location_name" placeholder="" name="location_name" required>
</div>
<!-- <hr class="mb-3"> -->
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="archived" name="location_archived"
value="true" <?= isset($location['location_archived']) && $location['location_archived'] == "true" ?
"checked" : "" ?>>
<label class="custom-control-label" for="archived">Archived</label>
</div>
<hr class="mb-4">
<button class="btn btn-primary btn-lg btn-block" type="submit" name="submit"><?=
isset($_GET['l_id']) ? "Edit" : "Add" ?> Location</button>
</form>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View Archived Accounts </h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Full Name</th>
<th scope="col">Email</th>
<th scope="col">Role</th>
<th scope="col">Actions</th>
</tr>

Department of Computer Application-RNSFGC Page | 58


Zoo Management

</thead>
<tbody>
<?php foreach ($accounts as $key => $account) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $account['admin_name'] ?></td>
<td><?= $account['admin_email'] ?></td>
<td><?= $account['role'] ?></td>
<td>
<a href="archive?unarc_account_id=<?= $account['admin_id'] ?>" class="btn btn-
success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Locations</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 600px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Location Name</th>
<th scope="col">Archived</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($locations as $key => $location) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $location['location_name'] ?></td>
<td><?= $location['location_archived'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td style="max-width: 200px;">
<a href="save_location?l_id=<?= $location['location_id'] ?>" class="btn btn-primary
btn-sm d-inline-block"><i class="fas fa-edit"></i> Edit</a>
<a href="archive?l_id=<?= $location['location_id'] ?>&archive=true" class="btn btn-
warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td style="max-width: 140px">

Department of Computer Application-RNSFGC Page | 59


Zoo Management

<a href="archive?l_id=<?= $location['location_id'] ?>&archive=false" class="btn btn-


success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] . '
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Employees</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 700px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Employee Name</th>
<th scope="col">Email</th>
<th scope="col">Phone</th>
<th scope="col">Position</th>
<th scope="col">Contract Type</th>
<th scope="col">Contract Start Date</th>
<th scope="col">Contract End Date</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($employees as $key => $employee) {
$app = $getApplication($employee['application_id']);
$vac = $getVacancy($employee['vacancy_id']);
?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $app['a_fullname'] ?></td>
<td><?= $app['a_email'] ?></td>

Department of Computer Application-RNSFGC Page | 60


Zoo Management

<td><?= $app['a_phone'] ?></td>


<td><?= $vac['v_position'] ?></td>
<td><span class="text-capitalize"><?= $vac['v_type'] ?></span></td>
<td><?= $vac['v_start_date'] ?></td>
<td><?= $vac['v_end_date'] == "0000-00-00" ? "N/A" : $vac['v_end_date'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td>
<a href="archive?ar_emp_id=<?= $employee['e_id'] ?>&archive=true" class="btn btn-
warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td>
<a href="archive?ar_emp_id=<?= $employee['e_id'] ?>&archive=false" class="btn btn-
success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container">
<div class="row pb-5">
<div class="col-md-8 order-md-1">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800"><?= isset($_GET['account_id']) ? "Edit" : "Add" ?> User
Account</h1>
<form action="" method="post">
<input type="hidden" name="admin_id" value="<?php if (isset($account['admin_id'])) echo
$account['admin_id'] ?>">
<div class="mb-4 field-required">
<label for="class_display_name">Full Name</label>

Department of Computer Application-RNSFGC Page | 61


Zoo Management

<input type="text" value="<?= isset($account['admin_name']) ? $account['admin_name'] :


"" ?>" class="form-control" id="class_display_name" placeholder="" name="admin_name" required>
</div>

<div class="mb-4 field-required">


<label for="admin_email">Email</label>
<input type="email" value="<?= isset($account['admin_email']) ? $account['admin_email'] :
"" ?>" class="form-control" id="admin_email" placeholder="" name="admin_email" required>
</div>

<div class="mb-4 field-required">


<label for="v_type">User Type</label>
<select class="custom-select d-block w-100" name="role" id="v_type" required>
<option value="admin" <?= isset($account['role']) && $account['role'] == "admin" ?
"selected" : "" ?>>Administrator</option>;
<option value="manager" <?= isset($account['role']) && $account['role'] == "manager" ?
"selected" : "" ?>>Manager</option>;
<option value="zook<div class="container">
<div class="row pb-5">
<div class="col-md-8 order-md-1">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800"><?= isset($_GET['event_id']) ? "Edit" : "Add" ?> Event</h1>
<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="event_id" value="<?php if (isset($event['event_id'])) echo
$event['event_id'] ?>">
<div class="mb-4 field-required">
<label for="class_display_name">Event Name</label>
<input type="text" value="<?= isset($event['event_name']) ? $event['event_name'] : "" ?
>" class="form-control" id="class_display_name" placeholder="" name="event_name" required>
</div>
<div class="mb-4 field-required">
<label for="v_description">Description</label>
<textarea name="event_description" placeholder="....." class="form-control"
id="v_description" cols="30" rows="5" required><?= isset($event['event_description']) ?
$event['event_description'] : "" ?></textarea>
</div>
<div class="mb-4 field-required">
<label for="event_duration">Event Duration</label>
<input type="text" value="<?= isset($event['event_duration']) ? $event['event_duration'] :
"" ?>" class="form-control" id="event_duration" placeholder="" name="event_duration" required>
</div>
<div class="form-group mb-4">

Department of Computer Application-RNSFGC Page | 62


Zoo Management

<label for="file">Select Image</label><br/>


<input type="file" name="image" className="form-control-file" id="file" accept="image/*"
/>
</div>
<div class="mb-4 field-required">
<label for="v_start_date">Event Start Date</label>
<input type="date" value="<?= isset($event['event_start_date']) ?
$event['event_start_date'] : "" ?>" class="form-control" name="event_start_date" id="v_start_date"
required>
</div>
<button class="btn btn-primary btn-lg btn-block" type="submit" name="submit"><?=
isset($_GET['event_id']) ? "Edit" : "Add" ?> Event</button>
</form>
</div>
</div>
</div>eeper" <?= isset($account['role']) && $account['role'] == "zookeeper" ? "selected" : ""
?>>Zookeeper</option>;
</select>
</div>
<?php if (!isset($_GET['account_id'])) { ?>
<div class="mb-4 field-required">
<label for="v_start_date">Password</label>
<input type="password" value="" class="form-control" name="admin_pass"
id="v_start_date" required>
</div>
<?php } ?>
<button class="btn btn-primary btn-lg btn-block" type="submit" name="submit"><?=
isset($_GET['account_id']) ? "Edit" : "Add" ?> Account</button>
</form>
</div>
</div>
<?php
$sponAni = $sponsor_animals_pdo->fetchAll();
$classes = [
['status' =>
'unreviewed'], ['status'
=> 'accepted'],
['status' => 'rejected'],
]
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';

Department of Computer Application-RNSFGC Page | 63


Zoo Management

Department of Computer Application-RNSFGC Page | 64


Zoo Management

?>
<h1 class="h3 mb-4 text-gray-800">View Animal Sponsorship Applications</h1>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<?php
foreach ($classes as $key => $row) { ?>
<li class="nav-item">
<a class="nav-link <?php if ($key == 0) echo "active" ?>" data-toggle="tab" href="#<?php
echo $row['status'] ?>" role="tab"><span class="text-capitalize"><?= $row['status'] ?></span></a>
</li>
<?php } ?>
</ul>
<div class="tab-content" id="myTabContent">
<?php
foreach ($classes as $key => $class) { ?>
<div class="tab-pane fade <?php if ($key == 0) echo "show active" ?>" id="<?php echo
$class['status'] ?>" role="tabpanel">

<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Client/Company Name</th>
<th scope="col">Phone</th>
<th scope="col">Yearly Revenue</th>
<th scope="col">Business Type</th>
<th scope="col">Website</th>
<th scope="col">Sponsorship Band</th>
<th scope="col">Total Price</th>
<th scope="col">Start Date</th>
<th scope="col">End Date</th>
<th scope="col">Sponsored Animal</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
<?php
$count = 1;
foreach ($sponAni as $spon) { ?>
<?php if ($spon['s_status'] == $class['status']) {
$sponsorData = $getSponsor($spon['sponsor_id']);
?>
<tr>
<th scope="row"><?= $count++ ?></th>
<td><?= $sponsorData['s_client_name'] ?></td>
<td><?= $sponsorData['s_phone_number'] ?></td>
<td><?= $sponsorData['s_yearly_revenue'] ?></td>
<td><?= $sponsorData['s_business_type'] ?></td>
<td><?= $spon['s_url'] ?></td>
<td><?= $spon['sponsor_band'] ?></td>
<td>$<?= $spon['total_price'] ?></td>

Department of Computer Application-RNSFGC Page | 65


Zoo Management

<td><?= $spon['start_date'] ?></td>


<td><?= $spon['end_date'] ?></td>
<td><?= $getAnimalName($spon['animal_id']) ?></td>
<?php if ($spon['s_status'] == "unreviewed") { ?>
<td style="min-width: 200px">
<a href="archive?sa_id=<?= $spon['sa_id'] ?>&sa_animal_id=<?=
$spon['animal_id'] ?>&sa_status=accepted" class="btn btn-success btn-sm d-inline-block"><i class="fas
fa-check"></i> Approve</a>
<a href="archive?sa_id=<?= $spon['sa_id'] ?>&sa_animal_id=<?=
$spon['animal_id'] ?>&sa_status=rejected" class="btn btn-danger btn-sm d-inline-block"><i class="fas
fa-times"></i> Reject</a>
</td>
<?php } else { ?>
<td>
<i class="text-capitalize"><?= $spon['s_status'] ?></>
</td>
<?php } ?>
</tr>
<?php } ?>
<?php } ?>
</tbody>
</table>
</div>

</div>
<?php } ?>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<h1 class="h3 mb-4 text-gray-800">View Booked Tickets</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 600px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Booked For</th>
<th scope="col">Child Tickets #</th>
<th scope="col">Student Tickets #</th>
<th scope="col">Regular Tickets #</th>
<th scope="col">Total Price</th>
<th scope="col">Visit Date</th>
</tr>
</thead>
<tbody>
<?php foreach ($tickets as $key => $ticket) { ?>
<tr>

Department of Computer Application-RNSFGC Page | 66


Zoo Management

<th scope="row"><?= $key + 1 ?></th>


<td><?= $ticket['book_name'] ?></td>
<td><?= $ticket['child_num'] ?></td>
<td><?= $ticket['student_num'] ?></td>
<td><?= $ticket['regular_num'] ?></td>
<td>$<?= $ticket['regular_num'] * 6 + $ticket['student_num'] * 3 +
$ticket['child_num'] * 2 ?></td>
<td><?= $ticket['t_date'] ?></td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container">
<div class="row pb-5">
<div class="col-md-8 order-md-1">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800"><?= isset($_GET['vacancy_id']) ? "Edit" : "Add" ?>
Vacancy</h1>
<form action="" method="post">
<input type="hidden" name="vacancy_id" value="<?php if (isset($vacancy['vacancy_id'])) echo
$vacancy['vacancy_id'] ?>">
<div class="mb-4 field-required">
<label for="class_display_name">Position</label>
<input type="text" value="<?= isset($vacancy['v_position']) ? $vacancy['v_position'] : "" ?
>" class="form-control" id="class_display_name" placeholder="Eg: Receptionist" name="v_position"
required>
</div>
<div class="mb-4 field-required">
<label for="v_description">Description</label>
<textarea name="v_description" placeholder="....." class="form-control" id="v_description"
cols="30" rows="5" required><?= isset($vacancy['v_description']) ? $vacancy['v_description'] : ""
?></textarea>
</div>
<div class="mb-4 field-required">
<label for="v_type">Vacancy Type</label>

Department of Computer Application-RNSFGC Page | 67


Zoo Management

<select class="custom-select d-block w-100" name="v_type" id="v_type" required <?php if


(isset($vacancy['vacancy_id'])) echo 'data-value="" onfocus="this.setAttribute(\'data-value\',
this.value);" onchange="this.value = this.getAttribute(\'data-value\');"' ?>>
<option value="permanent" <?= isset($vacancy['v_type']) && $vacancy['v_type'] ==
"permanent" ? "selected" : "" ?>>Permanent</option>;
<option value="temporary" <?= isset($vacancy['v_type']) && $vacancy['v_type'] ==
"temporary" ? "selected" : "" ?>>Temporary</option>;
</select>
</div>
<div class="mb-4 field-required">
<label for="v_start_date">Contract Start Date</label>
<input type="date" value="<?= isset($vacancy['v_start_date']) ? $vacancy['v_start_date'] :
"" ?>" class="form-control" name="v_start_date" id="v_start_date" required>
</div>
<div class="mb-4">
<label for="v_end_date">Contract End Date</label>
<input type="date" value="<?= isset($vacancy['v_end_date']) ? $vacancy['v_end_date'] : ""
?>" class="form-control" name="v_end_date" id="v_end_date">
<small>For temporary vacancy</small>
</div>
<button class="btn btn-primary btn-lg btn-block" type="submit" name="submit"><?=
isset($_GET['vacancy_id']) ? "Edit" : "Add" ?> Vacancy</button>
</form>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View <span class="text-capitalize"><?= $_GET['type'] . 's'
?></span> </h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Full Name</th>
<th scope="col">Email</th>
<th scope="col">Actions</th>
</tr>

Department of Computer Application-RNSFGC Page | 68


Zoo Management

</thead>
<tbody>
<?php foreach ($accounts as $key => $account) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $account['admin_name'] ?></td>
<td><?= $account['admin_email'] ?></td>
<td>
<?php if ($account['admin_id'] != $_SESSION['admin_id']) { ?>
<a href="archive?arc_account_id=<?= $account['admin_id']
?>&arc_account_type=<?= $account['role']?>" class="btn btn-warning btn-sm d-inline-block"><i
class="fas fa-archive"></i> Archive</a>
<?php } ?>
<a href="save_account?account_id=<?= $account['admin_id'] ?>" class="btn btn-
primary btn-sm d-inline-block ml-3"><i class="fas fa-edit"></i> Edit</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<?php
$animals2 = $animals->fetchAll();
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Animals</h1>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<?php
foreach ($classifications as $key => $row) { ?>
<li class="nav-item">
<a class="nav-link <?php if ($key == 0) echo "active" ?>" data-toggle="tab" href="#<?php
echo $row['class_table_name'] ?>" role="tab"><?php echo $row['class_display_name']; ?></a>
</li>
<?php } ?>
</ul>
<div class="tab-content" id="myTabContent">
<?php
foreach ($classifications2 as $key => $class) { ?>
<div class="tab-pane fade <?php if ($key == 0) echo "show active" ?>" id="<?php echo
$class['class_table_name'] ?>" role="tabpanel">
<?php
$classId = $class['class_id'];
$tableName = $class['class_table_name'];
?>

Department of Computer Application-RNSFGC Page | 69


Zoo Management

<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Image</th>
<th scope="col">Name</th>
<th scope="col">Species Name</th>
<th scope="col">DOB</th>
<th scope="col">Gender</th>
<th scope="col">Lifespan</th>
<th scope="col">Location</th>
<th scope="col">Diet Requirement</th>
<th scope="col">Natural Habitat</th>
<th scope="col">Population Distribution</th>
<th scope="col">Join Date</th>
<th scope="col">Height</th>
<th scope="col">Weight</th>
<th scope="col">Archived</th>

<?php if ($tableName == 'mammals') { ?>


<th scope="col">Gestational Period</th>
<th scope="col">Mammal Category</th>
<th scope="col">Body Temperature</th>
<?php } ?>
<?php if ($tableName == 'birds') { ?>
<th scope="col">Nest Construction</th>
<th scope="col">Clutch Size</th>
<th scope="col">Wingspan</th>
<th scope="col">Can Fly</th>
<th scope="col">Color Variant</th>
<?php } ?>
<?php if ($tableName == 'fish') { ?>
<th scope="col">Body Temperature</th>
<th scope="col">Water Type</th>
<th scope="col">Color Variant</th>
<?php } ?>
<?php if ($tableName == 'reptiles' || $tableName == 'amphibians') { ?>
<th scope="col">Reproduction Type</th>
<th scope="col">Clutch Size</th>
<th scope="col">No. of Offspring</th>
<?php } ?>
<?php if ($_SESSION['role'] != "zookeeper") { ?>
<th scope="col">Actions</th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php
$count = 1;
foreach ($animals2 as $animal) { ?>

Department of Computer Application-RNSFGC Page | 70


Zoo Management

<?php if ($animal['class_id'] == $classId) {


$imageName = $getImageName($animal['animal_id']); ?>
<tr>
<th scope="row"><?= $count++ ?></th>
<td><img src="../../img/animals/<?= $imageName ?>" alt="" width="100px"
style="border-radius: 20px;"></td>
<td><?= $animal['an_given_name'] ?></td>
<td><?= $animal['an_species_name'] ?></td>
<td><?= $animal['an_dob'] ?></td>
<td><?= $animal['an_gender'] ?></td>
<td><?= $animal['an_avg_lifespan'] ?></td>
<td><?php echo $getLocationName($animal['location_id']) ?></td>
<td><?= $animal['an_dietary_req'] ?></td>
<td><?= $animal['an_natural_habitat'] ?></td>
<td><?= $animal['an_pop_dist'] ?></td>
<td><?= $animal['an_joindate'] ?></td>
<td><?= $animal['an_height'] ?></td>
<td><?= $animal['an_weight'] ?></td>
<td><?= $animal['an_archived'] ?></td>

<!-- you can add more classification data here to show animals in tab -->

<!-- for mammal -->


<?php if ($tableName == 'mammals') {
$mammal = $getMammalData($animal['animal_id']);
?>
<td><?= $mammal['m_gest_period'] ?></td>
<td><?= $mammal['m_category'] ?></td>
<td><?= $mammal['m_avg_body_temp'] ?></td>
<?php } ?>

<!-- for bird -->


<?php if ($tableName == 'birds') {
$bird = $getBirdData($animal['animal_id']);
?>
<td><?= $bird['b_nest_const'] ?></td>
<td><?= $bird['b_clutch_size'] ?></td>
<td><?= $bird['b_wingspan'] ?></td>
<td><?= $bird['b_ability_fly'] ?></td>
<td><?= $bird['b_color_variant'] ?></td>
<?php } ?>

<!-- for fish -->


<?php if ($tableName == 'fish') {
$fish = $getFishData($animal['animal_id']);
?>
<td><?= $fish['f_body_temp'] ?></td>
<td><?= $fish['f_water_type'] ?></td>
<td><?= $fish['f_color_variant'] ?></td>
<?php } ?>

Department of Computer Application-RNSFGC Page | 71


Zoo Management

<!-- for reptile -->


<?php if ($tableName == 'reptiles') {
$reptile = $getReptileData($animal['animal_id']);
?>
<td><?= $reptile['r_rep_type'] ?></td>
<td><?= $reptile['r_clutch_size'] ?></td>
<td><?= $reptile['r_num_offspring'] ?></td>
<?php } ?>

<!-- for amphibians -->


<?php if ($tableName == 'amphibians') {
$amph = $getAmphibianData($animal['animal_id']);
?>
<td><?= $amph['am_rep_type'] ?></td>
<td><?= $amph['am_clutch_size'] ?></td>
<td><?= $amph['am_num_offspring'] ?></td>
<?php } ?>

<!-- for other classes add here -->


<!-- for other classes add here -->
<?php if ($_SESSION['role'] != "zookeeper") { ?>

<?php if (!isset($_GET['archived'])) { ?>


<td style="min-width: 180px">
<a href="save_animal?an_id=<?= $animal['animal_id'] ?>" class="btn
btn-primary btn-sm d-inline-block"><i class="fas fa-edit"></i> Edit</a>
<a href="archive_animal?an_id=<?= $animal['animal_id'] ?>"
class="btn btn-warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td style="min-width: 140px">
<a href="unarchive_animal?an_id=<?= $animal['animal_id'] ?>"
class="btn btn-success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
<?php } ?>
</tr>
<?php } ?>
<?php } ?>
</tbody>
</table>
</div>

</div>
<?php } ?>
</div>
</div>
</div>
</div>

<?php

Department of Computer Application-RNSFGC Page | 72


Zoo Management

$applications = $applications_pdo->fetchAll();
$classes = [
['type' => 'unreviewed'],
['type' =>
'accepted'], ['type'
=> 'rejected']
]
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View Job Applications</h1>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<!-- <li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#unreviewed"
role="tab">Unreviewed</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#accepted" role="tab">Accepted</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#rejected" role="tab">Rejected</a>
</li> -->
<?php
foreach ($classes as $key => $row) { ?>
<li class="nav-item">
<a class="nav-link <?php if ($key == 0) echo "active" ?>" data-toggle="tab" href="#<?php
echo $row['type'] ?>" role="tab"><span class="text-capitalize"><?= $row['type']; ?></span></a>
</li>
<?php } ?>
</ul>
<div class="tab-content" id="myTabContent">
<?php
foreach ($classes as $key => $class) { ?>
<div class="tab-pane fade <?php if ($key == 0) echo "show active" ?>" id="<?php echo
$class['type'] ?>" role="tabpanel">

<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>

Department of Computer Application-RNSFGC Page | 73


Zoo Management

<th scope="col">#</th>

Department of Computer Application-RNSFGC Page | 74


Zoo Management

<th scope="col">Applicant Fullname</th>


<th scope="col">Email</th>
<th scope="col">Phone</th>
<th scope="col">CV</th>
<th scope="col">Applied Position</th>
<th scope="col">Actions/Info</th>
</tr>
</thead>
<tbody>
<?php
$count = 1;
foreach ($applications as $app) { ?>
<?php if ($app['a_status'] == $class['type']) { ?>
<tr>
<th scope="row"><?= $count++ ?></th>
<td><?= $app['a_fullname'] ?></td>
<td><?= $app['a_email'] ?></td>
<td><?= $app['a_phone'] ?></td>
<td><a href="../../files/cv/<?= $app['a_cv'] ?>" class="btn btn-
secondary">Download</a></td>
<td><?= $getVacancyPosition($app['vacancy_id']) ?></td>
<!-- for other classes add here -->
<!-- for other classes add here -->
<?php if ($class['type'] == 'unreviewed') { ?>
<td>
<a href="archive?review_app_id=<?= $app['application_id']
?>&app_vacancy_id=<?= $app['vacancy_id'] ?>&a_status=accepted" class="btn btn-success btn-sm d-
inline-block"><i class="fas fa-check"></i> Accept</a>
<a href="archive?review_app_id=<?= $app['application_id']
?>&app_vacancy_id=<?= $app['vacancy_id'] ?>&a_status=rejected" class="btn btn-danger btn-sm d-
inline-block"><i class="fas fa-times"></i> Reject</a>
</td>
<?php } else { ?>
<td>
<span class="text-capitalize"><?= $app['a_status'] ?></span>
</td>
<?php } ?>
</tr>
<?php } ?>
<?php } ?>
</tbody>
</table>
</div>

</div>
<?php } ?>
</div>
</div>
</div>
</div>

Department of Computer Application-RNSFGC Page | 75


Zoo Management

<div class="container-fluid">
<div class="row">
<div class="col">
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Classifications</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 700px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Classification Display Name</th>
<th scope="col">Classification Table Name</th>
<th scope="col">Archived</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($classifications as $key => $classification) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $classification['class_display_name'] ?></td>
<td><?= $classification['class_table_name'] ?></td>
<td><?= $classification['class_archived'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td style="max-width: 200px;">
<a href="save_classification?class_id=<?= $classification['class_id'] ?>" class="btn
btn-primary btn-sm d-inline-block"><i class="fas fa-edit"></i> Edit</a>
<a href="archive?class_id=<?= $classification['class_id'] ?>&archive=true"
class="btn btn-warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td style="max-width: 140px">
<a href="archive?class_id=<?= $classification['class_id'] ?>&archive=false"
class="btn btn-success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {

Department of Computer Application-RNSFGC Page | 76


Zoo Management

echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .


'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Employees</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 700px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Employee Name</th>
<th scope="col">Email</th>
<th scope="col">Phone</th>
<th scope="col">Position</th>
<th scope="col">Contract Type</th>
<th scope="col">Contract Start Date</th>
<th scope="col">Contract End Date</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($employees as $key => $employee) {
$app = $getApplication($employee['application_id']);
$vac = $getVacancy($employee['vacancy_id']);
?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $app['a_fullname'] ?></td>
<td><?= $app['a_email'] ?></td>
<td><?= $app['a_phone'] ?></td>
<td><?= $vac['v_position'] ?></td>
<td><span class="text-capitalize"><?= $vac['v_type'] ?></span></td>
<td><?= $vac['v_start_date'] ?></td>
<td><?= $vac['v_end_date'] == "0000-00-00" ? "N/A" : $vac['v_end_date'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td>
<a href="archive?ar_emp_id=<?= $employee['e_id'] ?>&archive=true" class="btn
btn-warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td>
<a href="archive?ar_emp_id=<?= $employee['e_id'] ?>&archive=false"
class="btn btn-success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>

Department of Computer Application-RNSFGC Page | 77


Zoo Management

<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Events</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 600px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Event Image</th>
<th scope="col">Event Name</th>
<th scope="col">Description</th>
<th scope="col">Start Date</th>
<th scope="col">Event Duration</th>
</tr>
</thead>
<tbody>
<?php foreach ($events as $key => $event) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td>
<?php if ($event['event_image'] != "") { ?>
<img src="../../img/event/<?= $event['event_image'] ?>" alt="" width="100px"
style="border-radius: 20px;">
<?php } ?>
</td>
<td><?= $event['event_name'] ?></td>
<td><?= $event['event_description'] ?></td>
<td><?= $event['event_start_date'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td style="max-width: 200px;">

Department of Computer Application-RNSFGC Page | 78


Zoo Management

<a href="save_event?event_id=<?= $event['event_id'] ?>" class="btn btn-


primary btn-sm d-inline-block"><i class="fas fa-edit"></i> Edit</a>
<a href="archive?arc_event_id=<?= $event['event_id'] ?>&event_archive=true"
class="btn btn-warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>

Chart.defaults.global.defaultFontFamily = 'Nunito', '-apple-system,system-


ui,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif';
Chart.defaults.global.defaultFontColor = '#858796';

function number_format(number, decimals, dec_point, thousands_sep) {

number = (number + '').replace(',', '').replace(' ', '');


var n = !isFinite(+number) ? 0 : +number,
prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
sep = (typeof thousands_sep === 'undefined') ? ',' :
thousands_sep, dec = (typeof dec_point === 'undefined') ? '.' :
dec_point,
s = '',
toFixedFix = function(n, prec)
{ var k = Math.pow(10, prec);
return '' + Math.round(n * k) /
k;
};

s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');


if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || '';
s[1] += new Array(prec - s[1].length + 1).join('0');
}
return s.join(dec);
}

var ctx = document.getElementById("myAreaChart");


var myLineChart = new Chart(ctx, {
type: 'line',
data: {
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
datasets: [{
label: "Earnings",
lineTension: 0.3,
backgroundColor: "rgba(78, 115, 223, 0.05)",
borderColor: "rgba(78, 115, 223, 1)",
pointRadius: 3,
pointBackgroundColor: "rgba(78, 115, 223, 1)",
pointBorderColor: "rgba(78, 115, 223, 1)",
pointHoverRadius: 3,
pointHoverBackgroundColor: "rgba(78, 115, 223, 1)",
Department of Computer Application-RNSFGC Page | 79
Zoo Management

pointHoverBorderColor: "rgba(78, 115, 223, 1)",

Department of Computer Application-RNSFGC Page | 80


Zoo Management

pointHitRadius: 10,
pointBorderWidth: 2,
data: [0, 10000, 5000, 15000, 10000, 20000, 15000, 25000, 20000, 30000, 25000, 40000],
}],
},
options: {
maintainAspectRatio: false,
layout: {
padding: {
left: 10,
right: 25,
top: 25,
bottom: 0
}
},
scales: {
xAxes: [{
time: {
unit: 'date'
},
gridLines: {
display: false,
drawBorder: false
},
ticks: {
maxTicksLimit: 7
}
}],
yAxes: [{
ticks: {
maxTicksLimit: 5,
padding: 10,
// Include a dollar sign in the ticks
callback: function(value, index, values)
{ return '$' + number_format(value);
}
},
gridLines: {
color: "rgb(234, 236, 244)",
zeroLineColor: "rgb(234, 236, 244)",
drawBorder: false,
borderDash: [2],
zeroLineBorderDash: [2]
}
}],
},
legend: {
display: false
},
tooltips: {
backgroundColor: "rgb(255,255,255)",

Department of Computer Application-RNSFGC Page | 81


Zoo Management

bodyFontColor: "#858796",
titleMarginBottom: 10,
titleFontColor: '#6e707e',
titleFontSize: 14,
borderColor: '#dddfeb',
borderWidth: 1,
xPadding: 15,
yPadding: 15,
displayColors: false,
intersect: false,
mode: 'index',
caretPadding: 10,
callbacks: {
label: function(tooltipItem, chart) {
var datasetLabel = chart.datasets[tooltipItem.datasetIndex].label || '';
return datasetLabel + ': $' + number_format(tooltipItem.yLabel);
}
}
}
}
});

<?php } else { ?>


<td style="max-width: 140px">
<a href="archive?arc_event_id=<?= $event['event_id'] ?>&event_archive=false" class="btn btn-
success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>

Department of Computer Application-RNSFGC Page | 82


Zoo Management

<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['reviewed']) ? "Reviewed" :


"Unreviewed" ?> Feedback</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Email</th>
<th scope="col">Subject</th>
<th scope="col">Message</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($feedback as $key => $feed) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $feed['f_firstname'] ?></td>
<td><?= $feed['f_lastname'] ?></td>
<td><?= $feed['f_email'] ?></td>
<td><?= $feed['f_subject'] ?></td>
<td><?= $feed['f_message'] ?></td>
<?php if (!isset($_GET['reviewed'])) { ?>
<td>
<a href="archive?rev_feed_id=<?= $feed['feedback_id'] ?>" class="btn btn-
primary btn-sm d-inline-block"><i class="fas fa-check"></i> Mark Reviewed</a>
</td>
<?php } else { ?>
<td>
<i>Reviewed</i>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">

Department of Computer Application-RNSFGC Page | 83


Zoo Management

<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View Active Vacancies</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 700px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Position</th>
<th scope="col">Description</th>
<th scope="col">Contract Type</th>
<th scope="col">Start Date</th>
<th scope="col">End Date</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($vacancies as $key => $vacancy) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $vacancy['v_position'] ?></td>
<td><?= $vacancy['v_description'] ?></td>
<td class="text-capitalize"><?= $vacancy['v_type'] ?></td>
<td><?= $vacancy['v_start_date'] ?></td>
<td><?= $vacancy['v_end_date'] == "0000-00-00" ? "N/A" : $vacancy['v_end_date']
?></td>
<td>
<a href="save_vacancy?vacancy_id=<?= $vacancy['vacancy_id'] ?>" class="btn btn-
primary btn-sm d-inline-block"><i class="fas fa-edit"></i> Edit</a>
<a href="archive?vacancy_id=<?= $vacancy['vacancy_id'] ?>" class="btn btn-
warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'

Department of Computer Application-RNSFGC Page | 84


Zoo Management

<button type="button" class="close" data-dismiss="alert" aria-label="Close">


<span aria-hidden="true">&times;</span>
</button>
</div>';
}
?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['archived']) ? "Archived" : "" ?>
Visitors</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Email</th>
<th scope="col">Address</th>
<th scope="col">Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($visitors as $key => $visitor) { ?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><?= $visitor['v_firstname'] ?></td>
<td><?= $visitor['v_lastname'] ?></td>
<td><?= $visitor['v_email'] ?></td>
<td><?= $visitor['v_address'] ?></td>
<?php if (!isset($_GET['archived'])) { ?>
<td>
<a href="archive?arc_vis_id=<?= $visitor['visitor_id'] ?>&archive=true"
class="btn btn-warning btn-sm d-inline-block"><i class="fas fa-archive"></i> Archive</a>
</td>
<?php } else { ?>
<td>
<a href="archive?arc_vis_id=<?= $visitor['visitor_id'] ?>&archive=false"
class="btn btn-success btn-sm d-inline-block"><i class="fas fa-box-open"></i> Unarchive</a>
</td>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

Department of Computer Application-RNSFGC Page | 85


Zoo Management

<?php
$badge = [
'high' => 'danger',
'medium' =>
'warning', 'low' =>
'success'
];
?>
<div class="container-fluid">
<div class="row">
<div class="col">
<?php
if (isset($_GET['msg'])) {
echo '<div class="alert alert-success alert-dismissible fade show" role="alert">' . $_GET['msg'] .
'
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>';
} ?>
<h1 class="h3 mb-4 text-gray-800">View <?= isset($_GET['attended']) ? "Attended" : "" ?>
Watchlist</h1>
<div class="table-responsive">
<table class="table table-hover table-striped table-bordered" style="min-width: 600px;">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Image</th>
<th scope="col">Given Name</th>
<th scope="col">Classification</th>
<th scope="col">Issue</th>
<th scope="col">Severity</th>
<th scope="col">Date Issued</th>
<th scope="col">Attended</th>
<?php if ($_SESSION['role'] != "zookeeper") { ?>
<th scope="col">Action</th>
<?php } ?>
</tr>
</thead>
<tbody>
<?php foreach ($watchlists as $key => $watchlist) {
$animal = $getAnimalData($watchlist['animal_id']);
$className = $getClassName($animal['class_id']);
$imageName = $getImageName($animal['animal_id']);
?>
<tr>
<th scope="row"><?= $key + 1 ?></th>
<td><img src="../../img/animals/<?= $imageName ?>" alt="" width="100px"
style="border-radius: 20px;"></td>
<td><?= $animal['an_given_name'] ?></td>

Department of Computer Application-RNSFGC Page | 86


Zoo Management

<td><?= $className ?></td>

Department of Computer Application-RNSFGC Page | 87


Zoo Management

<td><?= $watchlist['watch_description'] ?></td>


<td><span class="badge p-2 badge-<?= $badge[$watchlist['watch_severity']] ?>"><?=
$watchlist['watch_severity'] ?></span></td>
<td><?= $watchlist['watch_date'] ?></td>
<td><?= $watchlist['watch_attended'] ?></td>
<?php if ($_SESSION['role'] != "zookeeper") { ?>

<?php if (!isset($_GET['attended'])) { ?>


<td>
<a href="archive?attend_watch=<?= $watchlist['watch_id']
?>&watch_value=true" class="btn btn-success btn-sm d-inline-block"><i class="fas fa-user-nurse"></i>
Mark Attended</a>
</td>
<?php } else { ?>
<td>
<a href="archive?attend_watch=<?= $watchlist['watch_id']
?>&watch_value=false" class="btn btn-danger btn-sm d-inline-block"><i class="fas fa-user-times"></i>
Mark Unattended</a>
</td>
<?php } ?>
<?php } ?>
</tr>
<?php } ?>
</tbody>
</table>
</div>
</div>
</div>
</div>

:root {
--input-padding-x: 1.5rem;
--input-padding-y: 0.75rem;
}

body {
background: #014e2e;
background: linear-gradient(to right, #014e2e, #498d71);
}

.card-signin {
border: 0;
border-radius: 1rem;
box-shadow: 0 0.5rem 1rem 0 rgba(0, 0, 0, 0.1);
}

.card-signin .card-title {
margin-bottom: 2rem;
font-weight: 300;
font-size: 1.5rem;
}

Department of Computer Application-RNSFGC Page | 88


Zoo Management

.card-signin .card-body
{ padding: 2rem;
}

.form-signin
{ width:
100%;
}

.form-signin .btn
{ font-size: 80%;
border-radius: 5rem;
letter-spacing: 0.1rem;
font-weight: bold;
padding: 1rem;
transition: all 0.2s;
}

.form-label-group
{ position: relative;
margin-bottom: 1rem;
}

.form-label-group input
{ height: auto;
border-radius: 2rem;
}

.form-label-group > input,


.form-label-group > label {
padding: var(--input-padding-y) var(--input-padding-x);
}

.form-label-group > label


{ position: absolute;
top: 0;
left: 0;
display: block;
width: 100%;
margin-bottom: 0;

line-height: 1.5;
color: #495057;
border: 1px solid transparent;
border-radius: 0.25rem;
transition: all 0.1s ease-in-
out;
}

.form-label-group input::-webkit-input-placeholder {
color: transparent;
Department of Computer Application-RNSFGC Page | 89
Zoo Management

Department of Computer Application-RNSFGC Page | 90


Zoo Management

.form-label-group input:-ms-input-placeholder {
color: transparent;
}

.form-label-group input::-ms-input-placeholder {
color: transparent;
}

.form-label-group input::-moz-placeholder {
color: transparent;
}

.form-label-group input::placeholder {
color: transparent;
}

.form-label-group input:not(:placeholder-shown) {
padding-top: calc(var(--input-padding-y) + var(--input-padding-y) * (2 /
3)); padding-bottom: calc(var(--input-padding-y) / 3);
}

.form-label-group input:not(:placeholder-shown) ~ label {


padding-top: calc(var(--input-padding-y) / 3);
padding-bottom: calc(var(--input-padding-y) / 3);
font-size: 12px;
color: #777;
}

.btn-google
{ color:
white;
background-color: #ea4335;
}

.btn-facebook {
color: white;
background-color: #3b5998;
}

.cursor-pointer{
cursor: pointer;
}

@supports (-ms-ime-align: auto) {


.form-label-group > label
{ display: none;
}
.form-label-group input::-ms-input-placeholder {

Department of Computer Application-RNSFGC Page | 91


Zoo Management

color: #777;

Department of Computer Application-RNSFGC Page | 92


Zoo Management

}
}

@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {


.form-label-group > label
{ display: none;
}
.form-label-group input:-ms-input-placeholder {
color: #777;
}
}

root {
--blue: #4e73df;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #e74a3b;
--orange: #fd7e14;
--yellow: #f6c23e;
--green: #1cc88a;
--teal: #20c9a6;
--cyan: #36b9cc;
--white: #fff;
--gray: #858796;
--gray-dark: #5a5c69;
--primary: #4e73df;
--secondary: #858796;
--success: #1cc88a;
--info: #36b9cc;
--warning: #f6c23e;
--danger: #e74a3b;
--light: #f8f9fc;
--dark: #5a5c69;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica
Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier
New", monospace;
}

*,
*::before,
*::after {
box-sizing: border-box;
}

Department of Computer Application-RNSFGC Page | 93


Zoo Management

html {
font-family: sans-serif;
line-height: 1.15;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}

article, aside, figcaption, figure, footer, header, hgroup, main, nav, section
{ display: block;
}

body {
margin: 0;
font-family: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica
Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color
Emoji"; font-size: 1rem;
font-weight: 400;
line-height: 1.5;
color:
#858796; text-
align: left;
background-color: #fff;
}

[tabindex="-1"]:focus {
outline: 0 !important;
}

hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}

h1, h2, h3, h4, h5, h6


{ margin-top: 0;
margin-bottom: 0.5rem;
}

p{
margin-top: 0;
margin-bottom: 1rem;
}

abbr[title],
abbr[data-original-title] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
border-bottom: 0;

Department of Computer Application-RNSFGC Page | 94


Zoo Management

-webkit-text-decoration-skip-ink: none;

Department of Computer Application-RNSFGC Page | 95


Zoo Management

text-decoration-skip-ink: none;
}

address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}

ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}

ol ol,
ul ul,
ol ul,
ul ol
{
margin-bottom: 0;
}

dt {
font-weight: 700;
}

dd {
margin-bottom: .5rem;
margin-left: 0;
}

blockquote
{ margin: 0 0
1rem;
}

b,
strong {
font-weight: bolder;
}

small {
font-size: 80%;
}

sub,
sup
{
position: relative;
font-size: 75%;
Department of Computer Application-RNSFGC Page | 96
Zoo Management

line-height: 0;
vertical-align: baseline;

Department of Computer Application-RNSFGC Page | 97


Zoo Management

sub {
bottom: -.25em;
}

sup {
top: -.5em;
}

a{
color: #4e73df;
text-decoration: none;
background-color: transparent;
}

a:hover {
color: #224abe;
text-decoration: underline;
}

a:not([href]):not([tabindex]) {
color: inherit;
text-decoration: none;
}

a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {
color: inherit;
text-decoration: none;
}

a:not([href]):not([tabindex]):focus {
outline: 0;
}

pre,
code,
kbd,
samp {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
monospace;
font-size: 1em;
}

pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
}

figure {

Department of Computer Application-RNSFGC Page | 98


Zoo Management

margin: 0 0 1rem;
}

img {
vertical-align: middle;
border-style: none;
}

svg {
overflow: hidden;
vertical-align: middle;
}

table {
border-collapse: collapse;
}

caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #858796;
text-align: left;
caption-side: bottom;
}

th {
text-align: inherit;
}

label {
display: inline-block;
margin-bottom: 0.5rem;
}

button {
border-radius: 0;
}

button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
}

input,
button,
select,
optgroup,
textarea
{ margin: 0;
font-family: inherit;
font-size: inherit;

Department of Computer Application-RNSFGC Page | 99


Zoo Management

line-height: inherit;
}

button,
input {
overflow: visible;
}

button,
select {
text-transform: none;
}

select {
word-wrap: normal;
}

button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}

button:not(:disabled),
[type="button"]:not(:disabled),
[type="reset"]:not(:disabled),
[type="submit"]:not(:disabled) {
cursor: pointer;
}

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}

input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}

input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}

Department of Computer Application-RNSFGC Page | 100


Zoo Management

textarea {
overflow: auto;
resize: vertical;
}

fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}

legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}

progress {
vertical-align: baseline;
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}

[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}

[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}

::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}

output {
display: inline-block;
}

Department of Computer Application-RNSFGC Page | 101


Zoo Management

summary {
display: list-item;
cursor: pointer;
}

template {
display: none;
}

[hidden] {
display: none !important;
}

h1, h2, h3, h4, h5, h6,


.h1, .h2, .h3, .h4, .h5, .h6 {
margin-bottom: 0.5rem;
font-weight: 400;
line-height: 1.2;
}

h1, .h1 {
font-size: 2.5rem;
}

h2, .h2 {
font-size: 2rem;
}

h3, .h3 {
font-size: 1.75rem;
}

h4, .h4 {
font-size: 1.5rem;
}

h5, .h5 {
font-size: 1.25rem;
}

h6, .h6 {
font-size: 1rem;
}

.lead {
font-size: 1.25rem;
font-weight: 300;
}

.display-1 {

Department of Computer Application-RNSFGC Page | 102


Zoo Management

font-size: 6rem;
font-weight:
300;
line-height: 1.2;
}

.display-2 {
font-size: 5.5rem;
font-weight: 300;
line-height: 1.2;
}

.display-3 {
font-size: 4.5rem;
font-weight: 300;
line-height: 1.2;
}

.display-4 {
font-size: 3.5rem;
font-weight: 300;
line-height: 1.2;
}

hr {
margin-top: 1rem;
margin-bottom: 1rem;
border: 0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
}

small,
.small {
font-size: 80%;
font-weight: 400;
}

mark,
.mark {
padding: 0.2em;
background-color: #fcf8e3;
}

.list-unstyled
{ padding-left:
0; list-style:
none;
}

.list-inline
{ padding-left:

Department of Computer Application-RNSFGC Page | 103


Zoo Management

0; list-style:
none;
}

Department of Computer Application-RNSFGC Page | 104


Zoo Management

.list-inline-item {
display: inline-block;
}

.list-inline-item:not(:last-child) {
margin-right: 0.5rem;
}

.initialism {
font-size: 90%;
text-transform: uppercase;
}

.blockquote {
margin-bottom: 1rem;
font-size: 1.25rem;
}

.blockquote-footer {
display: block;
font-size: 80%;
color: #858796;
}

.blockquote-footer::before {
content: "\2014\00A0";
}

.img-fluid {
max-width: 100%;
height: auto;
}

.img-thumbnail
{ padding: 0.25rem;
background-color: #fff;
border: 1px solid
#dddfeb; border-radius:
0.35rem; max-width:
100%;
height: auto;
}

.figure {
display: inline-block;
}

.figure-img {
margin-bottom: 0.5rem;
line-height: 1;

Department of Computer Application-RNSFGC Page | 105


Zoo Management

Department of Computer Application-RNSFGC Page | 106


Zoo Management

.figure-caption {
font-size: 90%;
color: #858796;
}

code {
font-size: 87.5%;
color: #e83e8c;
word-break: break-word;
}

a > code
{ color:
inherit;
}
bd {
padding: 0.2rem 0.4rem;
font-size: 87.5%;
color: #fff;
background-color: #3a3b45;
border-radius: 0.2rem;
}

kbd kbd {
padding: 0;
font-size: 100%;
font-weight: 700;
}

pre {
display: block;
font-size: 87.5%;
color: #3a3b45;
}

pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}

.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}

.container
{ width:
100%;
padding-right: 0.75rem;

Department of Computer Application-RNSFGC Page | 107


Zoo Management

padding-left: 0.75rem;
margin-right: auto;

Department of Computer Application-RNSFGC Page | 108


Zoo Management

margin-left: auto;
}

@media (min-width: 576px) {


.container {
max-width: 540px;
}
}

@media (min-width: 768px) {


.container {
max-width: 720px;
}
}

@media (min-width: 992px) {


.container {
max-width: 960px;
}
}

@media (min-width: 1200px) {


.container {
max-width: 1140px;
}
}

.container-fluid {
width: 100%;
padding-right: 0.75rem;
padding-left: 0.75rem;
margin-right: auto;
margin-left: auto;
}

.row {
display: flex;
flex-wrap: wrap;
margin-right: -0.75rem;
margin-left: -0.75rem;
}

.no-gutters {
margin-right: 0;
margin-left: 0;
}

.no-gutters > .col,


.no-gutters > [class*="col-"]
{ padding-right: 0;
padding-left: 0;

Department of Computer Application-RNSFGC Page | 109


Zoo Management

.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,
.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9,
.col-sm-10, .col-sm-11, .col-sm-12, .col-sm,
.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8,
.col- md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,
.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-
10, .col-lg-11, .col-lg-12, .col-lg,
.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-
10, .col-xl-11, .col-xl-12, .col-xl,
.col-xl-auto {
position: relative;
width: 100%;
padding-right: 0.75rem;
padding-left: 0.75rem;
}

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";


SET time_zone = "+00:00";

CREATE TABLE `admin` (


`admin_id` int(11) NOT NULL,
`admin_name` varchar(255) NOT NULL,
`admin_email` varchar(255) NOT NULL,
`admin_pass` varchar(255) NOT NULL,
`role` enum('admin','manager','zookeeper') NOT NULL,
`ad_archived` enum('false','true') NOT NULL DEFAULT 'false'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `admin` (`admin_id`, `admin_name`, `admin_email`, `admin_pass`, `role`, `ad_archived`)


VALUES
(1, 'Admin', 'admin@mail.com',
'$2y$10$7rLSvRVyTQORapkDOqmkhetjF6H9lJHngr4hJMSM2lHObJbW5EQh6', 'admin', 'false'),
(2, 'Manger Cavil', 'manager@mail.com',
'$2y$10$GkhnM26eiN3ZdQb7XDtPNu2lfkzyx/zo4DSxcXyJkl2do13xLcP3y', 'manager', 'false'),
(3, 'Zookeeper Martin', 'zookeeper@mail.com',
'$2y$10$RwopLcjYrzbZM5f61aQTLeWxynlicux/bW9XjYLEHyx4nnqQtgDtW', 'zookeeper', 'false'),
(5, 'Manager John', 'manager2@mail.com',
'$2y$10$xmEjQDAfzIXw/CtJVppS/.m.mNhc2MgVhlmUSSmN2w0FlHhGuTRyO', 'manager', 'false');

CREATE TABLE `amphibians` (


`animal_id` int(11) NOT NULL,
`am_rep_type` varchar(255) NOT NULL,
`am_clutch_size` float NOT NULL,

Department of Computer Application-RNSFGC Page | 110


Zoo Management

`am_num_offspring` int(11) NOT NULL


) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `amphibians` (`animal_id`, `am_rep_type`, `am_clutch_size`, `am_num_offspring`) VALUES


(25, 'Egg layer', 12, 12);

CREATE TABLE `animals` (


`animal_id` int(11) NOT NULL,
`an_given_name` varchar(255) NOT NULL,
`an_species_name` varchar(255) NOT NULL,
`an_dob` date NOT NULL,
`an_gender` enum('m','f') NOT NULL,
`an_avg_lifespan` varchar(255) NOT NULL,
`location_id` int(11) NOT NULL,
`an_dietary_req` varchar(255) NOT NULL,
`an_natural_habitat` varchar(255) NOT NULL,
`an_pop_dist` varchar(255) NOT NULL,
`an_joindate` date NOT NULL,
`an_height` float NOT NULL,
`an_weight` float NOT NULL,
`an_description` longtext NOT NULL,
`class_id` int(11) NOT NULL,
`an_med_record` longtext NOT NULL,
`an_transfer` varchar(255) NOT NULL,
`an_transfer_reason` longtext NOT NULL,
`an_death_date` date NOT NULL,
`an_death_cause` longtext NOT NULL,
`an_incineration` varchar(255) NOT NULL,
`an_archived` enum('true','false') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `animals` (`animal_id`, `an_given_name`, `an_species_name`, `an_dob`, `an_gender`,


`an_avg_lifespan`, `location_id`, `an_dietary_req`, `an_natural_habitat`, `an_pop_dist`, `an_joindate`,
`an_height`, `an_weight`, `an_description`, `class_id`, `an_med_record`, `an_transfer`,
`an_transfer_reason`, `an_death_date`, `an_death_cause`, `an_incineration`, `an_archived`) VALUES
(24, 'Cheetah', 'Acinonyx jubatus', '2020-04-04', 'm', '20 Years', 4, 'Meat', 'Grassland', '20,000 in Asia',
'2020-04-11', 12, 12, 'lorem ipsum dolor sit amet', 1, '', '', '', '0000-00-00', '', '', 'false'),
(25, 'Becky the Frog', 'frog', '2020-04-16', 'm', '2 Days', 2, 'insect', 'pond', 'population dist', '2020-04-10',
1, 1, '', 5, '', '', '', '0000-00-00', '', '', 'false'),
(26, 'Hermit the Snake', 'snake', '2020-04-02', 'f', '3 months', 2, 'asd', 'asd', 'asd', '2020-04-17', 3, 3, '',
4, '', '', '', '0000-00-00', '', '', 'false'),
(27, 'Tim the Fish', 'fish', '2020-04-15', 'm', 'asd', 3, 'asd', 'asd', 'as', '2020-04-11', 21, 21, 'asd', 3, '', '',
'', '0000-00-00', '', '', 'false'),
(28, 'Eagle', 'Bald eagle', '2020-04-09', 'm', '20', 1, 'Test', 'estuaries, large lakes, reservoirs, rivers',
'311700', '2020-04-02', 12, 21, 'large, predatory raptors that are recognizable for their brown body
and wings, white head and tail, and hooked yellow beak. Their feet, which are also yellow, are
equipped with sharp black talons.', 2, '', '', '', '0000-00-00', '', '', 'false'),
(29, 'Pangolin', 'Pholidota', '2020-04-09', 'm', '1.5 Years', 4, '1.4 kg of grass per day', 'Grassland',
'20,000 in Asia', '2020-04-08', 0.69, 0.7, 'lorem ipsum sit amet dolor', 1, 'Had its limb broken during
transfer from Asia', '2019/04/02 - Manchester Zoo', 'For its treatment ', '2020-04-22', 'Lung infection',
'2019/04/02 - Blackpool', 'false'),

Department of Computer Application-RNSFGC Page | 111


Zoo Management

(30, 'Panda examle changed', 'example changed', '2020-05-01', 'm', '2 Years', 4, '1.4 kg of grass per
day', 'example', 'example', '2020-05-02', 1.4, 1.5, 'lorem ipsum', 1, 'Broken leg', '', '', '0000-00-00', '', '',
'true'),
(31, 'Dingo', 'Canis Lupus Dingo', '2020-02-11', 'm', '11', 4, 'About 1.5 KG of Meat', 'harsh deserts to lush
rainforests', '10,000 to 50,000', '2021-06-22', 0.55, 11, 'Dingos are a dog-like wolf. They have a long
muzzle, erect ears and strong claws. They usually have a ginger coat and most have white markings on
their feet, tail tip and chest. Their bushy tail is 25–37 cm long.', 1, 'No records in the literature, yet.',
'none', 'none', '0001-01-01', 'none', 'none', 'false'),
(32, 'Myna Bird', 'Common myna', '2021-10-07', 'm', '4', 1, '0.4 KG', 'Open Woodland, Mangroves,
Grasslands, Farmlands', '15', '2021-12-08', 0.23, 0.15, 'Mynas are medium-sized passerines with strong
feet. Their flight is strong and direct, and they are gregarious. Their preferred habitat is fairly open
country, and they eat insects and fruit. Plumage is typically dark, often brown, although some species
have yellow head ornaments.', 2, 'This is sample text. This is sample text. This is sample text. This is
sample text.', 'none', 'none', '0001-01-01', 'This is sample text.', 'This is sample text.', 'false');

CREATE TABLE `animal_images` (


`animal_id` int(11) NOT NULL,
`image_name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `animal_images` (`animal_id`, `image_name`) VALUES


(24, 'cheetah2_1588351323.jpg'),
(24, 'cheetah_1588351323.jpg'),
(25, 'frog_1586331653.jfif'),
(26, 'snake_1586331752.jfif'),
(27, 'fish2_1586331820.jpg'),
(27, 'fish_1586331820.jpg'),
(28, 'eagle_1586331886.jpg'),
(29, 'pangolin_1587452434.jpg'),
(30, 'panda2_1588400959.jpg'),
(30, 'panda3_1588400959.jpg'),
(31, 'dingoo_1645274375.jpg'),
(32, 'mynabrd_1645334873.jpg');

CREATE TABLE `animal_of_the_week` (


`an_week_id` int(11) NOT NULL,
`animal_id` int(11) NOT NULL,
`an_week_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `animal_of_the_week` (`an_week_id`, `animal_id`, `an_week_date`) VALUES


(1, 24, '2020-04-08 07:57:15'),
(2, 25, '2020-04-08 07:57:53'),
(3, 26, '2020-04-08 08:40:10'),
(4, 25, '2020-04-08 08:43:01'),
(5, 29, '2020-05-01 16:43:18'),
(6, 28, '2020-05-02 06:30:34'),
(7, 26, '2020-05-02 06:48:05'),
(8, 32, '2022-02-20 16:19:31'),
(9, 31, '2022-02-20 16:43:18'),
(10, 32, '2022-02-20 16:49:02');

Department of Computer Application-RNSFGC Page | 112


Zoo Management

CREATE TABLE `applications` (


`application_id` int(11) NOT NULL,
`a_fullname` varchar(255) NOT NULL,
`a_email` varchar(255) NOT NULL,
`a_phone` bigint(12) NOT NULL,
`a_cv` varchar(255) NOT NULL,
`vacancy_id` int(11) NOT NULL,
`a_status` enum('unreviewed','accepted','rejected') NOT NULL DEFAULT 'unreviewed'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `applications` (`application_id`, `a_fullname`, `a_email`, `a_phone`, `a_cv`, `vacancy_id`,


`a_status`) VALUES
(1, 'Margaret Sowell', 'margaret@mail.com', 7410001010, 'sample.pdf', 2, 'accepted'),
(2, 'Leonila Maddox', 'maddox@mail.com', 4500002036, 'sample.pdf', 3, 'rejected'),
(3, 'James Negron', 'negron@mail.com', 6578540126, 'sample.pdf', 3, 'accepted'),
(4, 'David Viens', 'david@mail.com', 7854785470, 'sample.pdf', 4, 'rejected'),
(5, 'Demo Name', 'demo@demo.com', 3333225550, 'sample.pdf', 5, 'accepted'),
(6, 'Joseph L. Matheny', 'joseph@mail.com', 7854500010, 'sample_1645287029.pdf', 6, 'unreviewed');

CREATE TABLE `birds` (


`animal_id` int(11) NOT NULL,
`b_nest_const` varchar(255) NOT NULL,
`b_clutch_size` float NOT NULL,
`b_wingspan` float NOT NULL,
`b_ability_fly` enum('yes','no') NOT NULL,
`b_color_variant` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `birds` (`animal_id`, `b_nest_const`, `b_clutch_size`, `b_wingspan`, `b_ability_fly`,


`b_color_variant`) VALUES
(28, 'asd', 12, 12, 'yes', 'asd'),
(32, 'This is sample text.', 6, 18, 'yes', 'black, brown');

CREATE TABLE `classifications` (


`class_id` int(11) NOT NULL,
`class_display_name` varchar(255) NOT NULL,
`class_table_name` varchar(255) NOT NULL,
`class_archived` enum('true','false') NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `classifications` (`class_id`, `class_display_name`, `class_table_name`, `class_archived`)


VALUES
(1, 'Mammals', 'mammals', 'false'),
(2, 'Birds', 'birds', 'false'),
(3, 'Fish', 'fish', 'false'),
(4, 'Reptiles', 'reptiles', 'false'),
(5, 'Amphibians', 'amphibians', 'false'),
(9, 'Protozoa', 'protozoa',

'true'); CREATE TABLE

Department of Computer Application-RNSFGC Page | 113


Zoo Management

`employees` (

Department of Computer Application-RNSFGC Page | 114


Zoo Management

`e_id` int(11) NOT NULL,


`application_id` int(11) NOT NULL,
`vacancy_id` int(11) NOT NULL,
`e_archived` enum('true','false') NOT NULL DEFAULT 'false'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `employees` (`e_id`, `application_id`, `vacancy_id`, `e_archived`) VALUES


(2, 1, 2, 'false'),
(3, 3, 3, 'true'),
(4, 5, 5, 'false');

CREATE TABLE `events` (


`event_id` int(11) NOT NULL,
`event_name` varchar(255) NOT NULL,
`event_description` varchar(255) NOT NULL,
`event_start_date` date NOT NULL,
`event_image` varchar(255) NOT NULL,
`event_duration` varchar(255) NOT NULL,
`event_archived` enum('false','true') NOT NULL DEFAULT 'false'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `events` (`event_id`, `event_name`, `event_description`, `event_start_date`,


`event_image`, `event_duration`, `event_archived`) VALUES
(2, 'Zoo nights', 'Nights in the zoo', '2020-04-02', 'Zoo_nights_1587391459.jpg', '2 days',
'true'), (3, 'Open mic', 'lorem', '2020-05-08', 'open_mic_1588401599.png', '2 days', 'true'),
(4, 'Egg-Venture', 'Calling all explorers: get ready to discover Zoo in a whole new way! This spring guests
can come and enjoy a virtual scavenger hunt at the park using an app on their mobile phones. While
enjoying a stroll through the park families can use clues to find 12', '2022-03-07',
'estregg_1645347907.jpg', 'March 07, 2022 @ 10:00 AM - April 02, 2022 @ 4:00 PM', 'false');

CREATE TABLE `feedback` (


`feedback_id` int(11) NOT NULL,
`f_firstname` varchar(255) NOT NULL,
`f_lastname` varchar(255) NOT NULL,
`f_email` varchar(255) NOT NULL,
`f_subject` varchar(255) NOT NULL,
`f_message` longtext NOT NULL,
`visitor_id` int(11) NOT NULL,
`f_reviewed` enum('true','false') NOT NULL DEFAULT 'false'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `feedback` (`feedback_id`, `f_firstname`, `f_lastname`, `f_email`, `f_subject`, `f_message`,


`visitor_id`, `f_reviewed`) VALUES
(1, 'David', 'Viens', 'david@mail.com', 'Regarding Animal Display', 'A demo feedback!', 2, 'true'),
(2, 'Henry', 'Foreman', 'henry@mail.com', 'Regarding Animal Display', 'All Good, Testing.', 4, 'true'),
(3, 'David', 'Viens', 'david@mail.com', 'test', 'Test Test', 2, 'false'),
(4, 'Teresa', 'Dumas', 'teresa@mail.com', 'Test Subject', 'Hey, this is a demo test.', 8, 'false'),
(5, 'Will', 'Williams', 'williams@mail.com', 'Demo Demo', 'This is a demo test from Will Williams!', 6,
'true');

Department of Computer Application-RNSFGC Page | 115


Zoo Management

CHAPTER 08
FUTURE ENHANCEMENT

Department of Computer Application-RNSFGC Page | 116


Zoo Management

9.1 FUTURE ENHANCEMENT

As technology and customer expectations evolve, the Courier Management System can be improved and
expanded with additional features and capabilities. The following are some potential future
enhancements that can make the system more robust, user-friendly, and competitive. These future
enhancements can greatly extend the functionality, efficiency, and usability of the Courier Management
System. By implementing these improvements, the system can evolve into a comprehensive logistics
platform that meets the needs of modern businesses and tech-savvy customers. To ensure the long-term
success and adaptability of the Courier Management System, several future enhancements can be
considered. These upgrades aim to improve system efficiency, customer satisfaction, scalability, and
technological competitiveness.

1. Mobile Application Development


 Create Android/iOS apps for visitors and staff to access zoo features anytime, anywhere.
 Enable staff to log feeding or medical tasks on the go.
 Allow visitors to book tickets and view animal profiles via the app.

2. RFID/Barcode Animal Tagging


 Assign RFID or barcode tags to animals for faster identification.
 Enable tag scanning to auto-fill animal data in medical or feeding logs.
 Improve data accuracy and reduce manual input errors.

3. IoT Integration for Enclosure Monitoring


 Install sensors to track temperature, humidity, and air quality.
 Generate automatic alerts if environmental parameters deviate.
 Display live enclosure conditions on the admin dashboard.

4. AI-Based Animal Health Detection


 Use machine learning to detect unusual animal behavior via camera feeds.
 Generate early warning alerts for potential illnesses.
 Suggest checkups based on historical health data.

5. Online Adoption & Donation System


 Allow users to virtually adopt animals and donate online.
 Generate adoption certificates and thank-you messages.
 Share periodic updates on the adopted animal’s status.

Department of Computer Application-RNSFGC Page | 117


Zoo Management

6. Multilingual User Interface


 Provide language options such as English, Kannada, and Hindi.
 Improve system accessibility for local staff and visitors.
 Enable language preferences in user profiles.

7. Biometric Attendance and Security


 Use fingerprint or facial recognition for staff attendance.
 Restrict access to sensitive areas using biometric validation.
 Generate attendance logs automatically.

8. Educational and E-Learning Portal


 Host interactive content on animals, habitats, and conservation.
 Include quizzes, videos, and downloadable materials.
 Allow schools to book guided virtual tours and participate remotely.

9. AI Chatbot for Visitor Support


 Provide 24/7 assistance for FAQs and ticket-related queries.
 Recommend animals or exhibits based on user interest.
 Support voice-based commands or typing.

10. Cloud-Based System Hosting


 Deploy the system on a cloud server for better reliability and access.
 Enable data syncing between multiple zoo branches.
 Improve system backup and disaster recovery processes.

11. Visitor Tracking and Heatmaps


 Use Wi-Fi or camera data to monitor visitor movement patterns.
 Generate heatmaps to optimize crowd flow and exhibit placement.
 Improve safety and visitor experience during peak hours.

12. Advanced Reports and Dashboards


 Create dynamic BI dashboards for real-time data visualization.
 Generate automated reports for health, finance, and visitor metrics.
 Allow report export in PDF or Excel format.

Department of Computer Application-RNSFGC Page | 118


Zoo Management

13. Live Animal Webcams & Virtual Tours


 Set up live streaming from popular enclosures.
 Enable virtual zoo tours for remote visitors.
 Allow schools and sponsors to “visit” online.

14. Gamification for Visitors


 Introduce badges, trivia, and interactive tasks for children.
 Offer rewards for frequent visits or quiz completions.
 Encourage educational engagement through fun challenges.

15. Emergency Alert Integration


 Link emergency systems with staff dashboards for real-time alerts.
 Enable SOS buttons or panic alerts in the staff mobile app.
 Maintain a log of all emergency incidents and response times.

Department of Computer Application-RNSFGC Page | 119


Zoo Management

CHAPTER 09
CONCLUSION
AND
REFERENCES

Department of Computer Application-RNSFGC Page | 120


Zoo Management

10.1 CONCLUSION
In our project work, an attempt has been made to develop a comprehensive Zoo Management System
was developed to streamline and automate the various operational aspects of managing a zoological
park. Traditional zoo management methods often rely on manual processes, which are time-consuming,
error- prone, and lack scalability. This system addresses these challenges by providing a centralized,
user- friendly platform for managing animals, staff, schedules, visitor interactions, and more.

10.1.1 Key Achievements

 Developed a centralized web-based system to automate key zoo operations including animal care,
ticket booking, staff management, and reporting.
 Implemented secure role-based access for Admins, Sub-admins, Zookeepers, Veterinarians, and Visitors
to ensure controlled functionality.
 Enabled systematic logging and monitoring of animal feeding schedules and medical records for
improved care and accountability.
 Designed a responsive online ticket booking module to streamline visitor management and enhance user
experience.
 Integrated real-time notification features (email/SMS) for alerts on feeding, treatments, and ticketing
events.
 Consolidated all operational data into a secure and searchable MySQL database for quick retrieval and
reporting.
 Ensured full responsiveness across devices (desktop, tablet, mobile) to support accessibility for field
staff and remote users.
 Provided advanced reporting tools for analyzing visitor statistics, animal health updates, and operational
performance.
 Built the system using cost-effective open-source technologies (PHP, MySQL, HTML, CSS, JS) to
reduce overall development cost.
 Structured the application using a modular and scalable architecture, enabling easy future integration
of advanced features like AI, IoT, and mobile apps.

Department of Computer Application-RNSFGC Page | 121


Zoo Management

10.1.2 Lessons Learned


 Gained practical experience in identifying real-world problems and converting them into

functional software solutions.

 Learned the importance of planning, modular design, and using ER diagrams and DFDs for
structured system development.

 Strengthened full-stack development skills using HTML, CSS, JavaScript, PHP, and MySQL.

 Understood how to implement secure login systems and role-based access control for user and

data management.

 Improved database design knowledge, focusing on relationships, normalization, and SQL queries

for data handling.

 Enhanced problem-solving and debugging abilities through real-time testing and error resolution.
 Recognized the value of teamwork, task division, and effective communication in

collaborative projects.

 Gained experience in writing clear and structured project documentation and technical reports.

 Practiced time management and maintained discipline in adhering to development milestones

and deadlines.

 Learned to think ahead by suggesting scalable, future-proof enhancements aligned with real-
world needs.

In conclusion, the Zoo Management System lays a solid foundation for digital transformation in zoo

operations. It improves coordination among departments, ensures better animal care through systematic

scheduling, and enhances visitor satisfaction through digital engagement. With continued enhancements

and maintenance, the system has the potential to evolve into a complete smart zoo solution.

Department of Computer Application-RNSFGC Page | 122


Zoo Management

10.2 REFERENCES

For PHP
 https://www.w3schools.com/php/default.asp

 https://www.sitepoint.com/php/
 https://www.php.net/

For MySQL
 https://www.mysql.com/
 http://www.mysqltutorial.org

For XAMPP
 https://www.apachefriends.org/download.html

Department of Computer Application-RNSFGC Page | 123

You might also like