Fish Farming Management System
Fish Farming Management System
MAIN PROJECT
ON
AQUA MANAGE
Submitted By,
ARJUN N B
CERTIFICATE
This is to certify that the Main Project Report entitled
AQUA MANAGE
has been submitted by
ARJUN N B
Register no: 220021084849
in partial fulfillment of the requirements for the award of the degree
By blessing and permission of Almighty God, I was able to complete this work successfully.
My sincere thanks to our Principal-in-charge, Mrs. Rosy Joice Lopez for her overwhelming and
moralsupport extended towards us.
I would like to thank our head of the department Mrs. Nisha Sanjay for her constant
encouragement and support for the completion of our project.
I would like to express gratitude to Mrs. Ranimol V G (project guide), for her valuable
guidance and support.
I would also like to express my sincere thanks to all my teachers, Mrs. Sharmila Francis,
Mrs. Andal V, Mrs. Remilda Rajan and Mr. Vishnu Mohanan for their timely assistance
and advice offered to us, to make this mini project a success.
Finally, I thank my parents for their boundless support and for making our lives so easy and
for helping to tackle all those difficulties in life.
nbvj
DECLARATION
I ARJUN N B, hereby declare that the Main Project entitled AQUA MANAGE FISH
FARMING MANAGEMENT SYSTEM submitted to Mahatma Gandhi University ,
Kottayam in partial fulfillment of therequirements for the Bachelor’s degree of Computer
Applications is a record of original work done by me during the period of study at Chinmaya
College Of Arts, Commerce And Science Tripunithura under the supervision and guidance of
Mrs. Ranimol V G (project guide), Department of Computer Application and that this project
work has not formed the basis for the award of any diploma/associates-ship/fellowship or
similar title to any candidate of any university.
The core features of Aqua Manage include inventory management, water quality monitoring,
feed scheduling, health tracking, and financial management. Users can maintain detailed
records of fish stocks, monitor growth rates, and track inventory levels to ensure optimal stock
management. The application integrates with IoT devices and sensors to provide real-time data
on water quality parameters such as pH, temperature, dissolved oxygen, and ammonia levels,
enabling farmers to make informed decisions to maintain a healthy aquatic environment.
Aqua Manage also includes an advanced feed scheduling module that automates feeding
routines based on the specific needs of different fish species, promoting optimal growth and
reducing waste. Health tracking features allow users to log and monitor the health status of
their fish, manage disease outbreaks, and record treatments and medications.
The financial management module helps users keep track of expenses, income, and
profitability, providing detailed financial reports and analytics to aid in decision-making and
planning. The system is user-friendly interface, developed with Python Django, ensures a
consistent and responsive experience across various devices.
TABLE OF CONTENTS
1. Introduction 01
1.1. Project Overview 01
2. System Analysis 03
2.1. Problem Analysis 04
2.1.1. Existing System 04
2.1.2. Proposed System 05
2.1.3. Feasibility Study 05
2.1.3.1. Economic Feasibility 06
2.1.3.2. Technical Feasibility 06
2.1.3.3. Behavioral Feasibility 06
2.2. Requirement Specification 07
2.2.1. Software Requirement Specification 07
2.3. Hardware and Software Selection and justification 09
2.3.1. Hardware Specification 09
2.3.2. Software Specification 09
2.4. Use case Diagram 13
2.5. Data Flow Diagram 14
2.6. Entity Relationship Diagram 19
3. System Design 20
3.1. Structed Design methodologies 22
3.2. User Interface Design 22
3.3. Database Design 23
3.3.1. Data and Integrity Constraint 24
3.4. Output Design 25
3.5. Table Design 25
4. Coding 28
4.1. Program code preparation 29
4.2. Implementation of Security 30
4.2.1. Data Security 30
4.2.2. Users and Access Rights 30
5. System Testing 31
5.1. Unit Testing 33
5.2. Integration Testing 34
5.3. User Acceptance Testing 34
5.4. Test Case Design 34
5.5. Test Report and Debugging 35
6. System Implementation and maintenance 37
7. Scope of Project 39
8. Future Enhancement 41
9. Conclusion 43
10. Bibliography 45
Appendix I – Coding 47
Appendix II – Forms and Screenshots – Demo of Project 63
Appendix III 65
1. INTRODUCTION
AQUA MANAGE 1
The Fish Farming Management System is a streamlined digital platform designed to simplify
aquaculture management for farmers, users, and administrators. The system is divided into
three core modules—User, Farmer, and Admin—each with specific functions tailored to their
roles. Below is the overview of the system:
1. User Module
The User Module is designed to provide a seamless experience for customers
purchasing fish. Key functions include:
a. Inventory Management
• Track fish batches by species, age, and growth stages.
• Monitor pond/tank capacity and water quality parameters.
b. Feed Scheduling
• Create and manage feeding schedules with portion sizes and frequency.
3. Admin Module
The Admin Module is limited to managing farmer accounts and does not interfere
with other functions. Key function includes:
a. Add/Manage Farmers
• Register new farmers and update their details.
• Deactivate or remove farmer accounts as needed.
Database Design
The system’s database will store structured data, including:
A. Users: Personal details, purchase history, and preferences.
B. Farmers: Farm details, fish batches, feeding schedules, health records, financial
records, and sales data.
C. Admins: Farmer management data and system logs.
This system empowers farmers to manage their operations effectively, provides users with a
seamless purchasing experience, and allows admins to oversee farmer accounts without
interfering with operational functions.
2.SYSTEM ANALYSIS
2. SYSTEM ANALYSIS
System analysis refers to the process of examining a situation with the intent of improving it
through better process and methods. System analysis is, therefore the process of gathering
and interpreting facts, diagnosing problem and using the information to recommend changes
in the system, in other words it means a detailed explanation of description. Before
computerizing a system under consideration, it must be analyzed. We need
to study how it functions currently, what are problems and what are the requirements that the
proposed software should meet.
The Fish Farming Management System provides a user-friendly interface that can be easily
operated by individuals with basic computer knowledge, including farmers, users, and
administrators. It stores essential information related to fish farming operations in a well-
organized database, which can be accessed securely by all stakeholders based on their roles.
This system ensures efficient management of data, eliminates the storage of invalid or
redundant information, and streamlines the operations of fish farming businesses.
approach is prone to errors, difficult to maintain, and lacks real-time updates. Users, such as
buyers, often have to visit farms or contact farmers directly to check fish availability, place
orders, and track delivery status, leading to delays and a lack of transparency.
Feasibility is conducted to identify the best system that meets all the requirements for managing
fish farming services. It is both necessary and important to evaluate the feasibility of the project
at the earliest possible stage. A feasibility study includes identifying and describing the
proposed system, evaluating it, and selecting the best system for the job. This ensures that the
proposed system will not become a burden to the yoga studio. The feasibility study should be
relatively quick and inexpensive, providing results that inform the decision of whether to
proceed with a more detailed analysis. Understanding the major requirements of the system is
essential during this phase.
• Economic feasibility
• Technical feasibility
• Behavioural feasibility
Economic feasibility is the most frequently used method for evaluating the
effectiveness of the candidate system. It is very essential because the main goal of the
proposed system is to have economically better result along with increased efficiency. A cost
evaluation is weighed against the ultimate income or product. Economic justification is
generally the bottom-line consideration that includes cost benefit analysis, long term
corporate income strategies, and cost of resources needed for development and potential
market growth. When compared to the advantage obtained from implementing the system its
cost is affordable. Proposed system was developed with available resources. Since cost input
for the software is almost nil the output of the software is always a profit. Hence software is
economically feasible
both manpower and time factors are reduced and also unnecessary burden is reduced. thus,
the remaining people are made to engage in some other important work. also, there is no need
to wait in case of downloading the data for the users therefore, the system is feasible
Requirement analysis involves studying the current system to find out how it works and where
improvements could be made. A clear idea about the existing system is a must formaking
improvements where it is required. Proper planning and collection of data serves the purpose.
1. Preliminary analysis
2. Detailed analysis
This documentation aims to define the overall software requirements for the Fish Farming
Management System. Efforts have been made to accurately specify all necessary requirements.
The final product will only include the features mentioned in this document, and no
assumptions about additional features should be made by any parties involved in developing,
testing, implementing, or using the product. If additional features are required, a formal change
request must be submitted, after which a new release of both the document and the product will
be produced.
The Fish Farming Management System is designed to manage all details related to fish farming
operations, including inventory, feeding schedules, health records, financial transactions, and
user orders. The system provides farmers, users, and administrators with an easy, less complex
way to perform their tasks, minimizing redundancy. This ensures that all stakeholders
accessing the system can achieve maximum efficiency and rely on it for accurate, desired
results.
The Admin is the superuser and primary controller of the Fish Farming Management System.
The admin has full access to the system, enabling them to manage all aspects of the platform's
operations. Key responsibilities include adding and managing farmer accounts, overseeing
system settings and configurations, generating reports on fish farming operations, sales, and
financial performance, and ensuring data security and system integrity. The admin plays a
critical role in maintaining the overall functionality and security of the system, ensuring that it
runs smoothly and efficiently for all users.
The Farmer is responsible for managing fish farming operations through the system. Key
features include inventory management, where farmers can track fish batches, pond/tank
details, and water quality parameters. Farmers can also create and manage feeding schedules,
track feed inventory, and set reorder alerts through the feed scheduling feature. Health records
allow farmers to log symptoms of diseases, treatments applied, and vaccination schedules,
while financial records enable them to record expenses (feed, labor, equipment) and revenue
from fish sales. Additionally, farmers can access a list of registered users who have purchased
fish and track orders placed by users, including order status and delivery timelines.
The User represents customers who purchase fish from farmers. Key features include
registration and login for secure authentication to access the system. Users can edit their
profiles to update personal details such as name, contact information, and address. They can
browse available fish batches, pricing, and promotions through the view fish purchase feature.
Users can also track the status of placed orders, such as processing, shipped, or delivered, and
receive notifications for updates on order status, promotions, and system announcements. This
ensures a seamless and transparent purchasing experience for users.
Speed:1.60GHz
WINDOWS 11
Windows 11 is a major release of the Windows NT operating system developed by Microsoft, serving
as the successor to Windows 10. It was officially announced on June 24, 2021, and released to the general
public on October 5, 2021. Windows 11 introduces a refreshed user interface, improved performance,
and new features designed to enhance productivity, gaming, and creativity.
One of the standout features of Windows 11 is its redesigned Start Menu and Taskbar, which are now
centered by default, providing a more modern and streamlined look. The operating system also
introduces Snap Layouts and Snap Groups, which allow users to organize and multitask with multiple
windows more efficiently. Additionally, Windows 11 integrates Microsoft Teams directly into the
Taskbar, making communication and collaboration more seamless.
Windows 11 follows the Windows-as-a-Service model, receiving regular updates and new features
through Windows Update. These updates are available at no additional cost to users, with enterprise
customers having the option to opt for long-term support channels that prioritize stability and security
updates.
Microsoft aims to make Windows 11 the most inclusive and accessible version of Windows, with
features like improved accessibility settings, voice typing, and touchscreen optimizations. As of 2023,
Windows 11 is steadily gaining adoption, with millions of devices upgrading from Windows 10.
However, Windows 10 remains widely used due to its compatibility with older hardware and its
established user base.
PHP
Django is a high-level, open-source web framework written in Python that enables developers to build robust,
scalable, and secure web applications quickly. It follows the Model-View-Template (MVT) architectural pattern
and emphasizes the DRY (Don't Repeat Yourself) principle, making it an excellent choice for developing
complex web applications like the Fish Farming Management System. Django was first released in 2005 and has
since become one of the most popular web frameworks due to its simplicity, flexibility, and extensive feature
set. Django is particularly well-suited for projects that require rapid development, such as content management
systems, e-commerce platforms, and data-driven applications. It is a MUST for students and working
professionals aiming to become skilled Software Engineers, especially in the web development domain. Below
are some of the key advantages of using Django for your Fish Farming Management System is a recursive
acronym for "PHP: Hypertext Pre-processor".
1. ORM (Object-Relational Mapping): Django’s ORM allows developers to interact with the database
using Python code instead of SQL, simplifying database operations.
2. Admin Interface: Django automatically generates a powerful admin interface, which can be
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 12
customized to manage farmers, users, and other data in your Fish Farming Management System.
3. REST Framework: Django REST Framework (DRF) makes it easy to build APIs for your system,
enabling seamless communication between the frontend and backend.
4. Template Engine: Django’s template engine allows developers to create dynamic HTML pages by
combining templates with data.
5. Middleware Support: Django’s middleware components enable developers to add functionality like
authentication, session management, and security checks to the request/response cycle.
Characteristics of Django
• Simplicity
• Efficiency
• Security
• Flexibility
• Familiarity
MYSQL
MySQL was created by a Swedish company, MySQL AB, founded by David Axmark, Allan
Larsson and Michael "Monty" Widenius. Original development of MySQL by Widenius and
Axmark began in 1994. The first version of MySQL appeared on 23 May 1995. It was initially
created for personal usage from MySQL based on the low-level language ISAM, which the
creators considered too slow and inflexible. They created a new SQL interface, while keeping
the same API as MySQL. By keeping the API consistent with the MySQL system, many
developers were able to use MySQL instead of the (proprietarily licensed) MySQL antecedent.
MySQL can be built and installed manually from source code, but it is more commonly
installed from a binary package unless special customizations are required. On most Linux
distributions, the package management system can download and install MySQL with minimal
effort, though further configuration is often required to adjust security and optimization
settings.
Though MySQL began as a low-end alternative to more powerful proprietary databases, it has
gradually evolved to support higher-scale needs as well. It is still most commonly used in small
There are, however, limits to how far performance can scale on a single server ('scaling
up'), so on larger scales, multi-server MySQL ('scaling out') deployments are required to
provide improved performance and reliability. A typical high-end configuration can
include a powerful master database which handles data write operations and is replicated
to multiple slaves that handle all read operations. The master server continually pushes
binlog events to connected slaves so in the event of failure a slave can be promoted to
become the new master, minimizing downtime. Further improvements in performance
can be achieved by caching the results from database queries in memory using
Memcached, or breaking down a database into smaller chunks called shards which can
be spread across a number of distributed server clusters.
Data flow diagram (DFD) is used to show how data flows through the system and the processes
that transform the input data into output. Data flow diagrams are a way of expressing system
requirements in a graphical manner. Four simple notations are used to complete a DFD. The
notations are given below:
a. DATA FLOW
A directed arc or an arrow is used as a Data Flow Symbol. This represents the data
flow occurring between two processes or between an external entity and a process;
in direction of the Data Flow Arrow. Data flow Symbols are annotated with
corresponding data names.
b. PROCESS
c. EXTERNAL ENTITY
external entity symbols can be used to represent external hardware and software such
as application software.
d. DATA STORE
A Data Store represents a logical file; it is represented using two parallel lines. A
logical file can represent either Data Store Symbol, which can represent either data
structure or a physical file on disk. Each data store is connected to a process by means
of a Data Flow Symbol. The direction of the Data Flow Arrow shows whether data
is being read from or written into a Data Store. An arrow flowing in or out of a data
store implicitly represents the entire area of the Data Store and hence arrows
connecting to a data store need not be annotated with the names of the corresponding
data-item
a. ZERO-LEVEL DFD
1. USER
2.ADMIN
3.FARMER
3. SYSTEM DESIGN
3. SYSTEM DESIGN
The most creative and challenging phase of the system development is system design, is
a solution to how to approach to the creation of the proposed system. It refers to the
technical specification that will be applied. It provides the understanding and procedural
details necessary for implementing the system recommended in the feasibility study.
Design goes through the logical and physical stages of development. At an early stage in
designing a new system, the system analyst must have a clear understanding of the
objectives, which the design is aiming to fulfil. The first step is to determine how the
output is to be produced and in what format. Second, input data and master files
(database) have to be designed to meet the requirements of the proposed output. The
operational (processing) phases are handled through program construction and testing.
It is to be developed in a way that three users can access Admin and User with different
permissions. It is a solution to a “how to” approach compared to system analysis which
is a “what is” orientation. It translates the system requirements into ways of making them
operational. The design phase focuses on the detailed implementation of the system
recommended in the feasibility study.
The input forms used for data entry are intuitive and easy to understand. Whenever users enter
data, the system checks for validity, and if any incorrect or incomplete information is found,
meaningful prompts and warning messages are displayed. This feature enhances the user
experience, making interactions with the system smooth and efficient. Additionally, to ensure
security, users must log in with a valid username and password before accessing the system.
This authentication process safeguards sensitive data and prevents unauthorized access.
Login: This form allows users to enter their login credentials, including username and password, to gain
access to the system securely.
Registration: This form collects basic user details required to create an account in the system.
Fish Ordering: This form enables users to select and order the type and quantity of fish they want to
purchase.
Database design is one of the most important parts of the system design phase. In a database
environment common data are available and are used by several users. Instead
of each program managing its own data, authorized users share data across application with
the database software managing the data as an entity. The primary objective of a database
design is fast response time to enquiries, more information at low cost, control of redundancy,
clarity and ease of use, date and program independence, accuracy and integrity of the system,
fast recovery and availability of powerful end-user languages. The theme behind a database is
to handle information as an integrated whole thus the main objective is to make information as
access easy, quick, inexpensive and flexible forthe users.
Data directory specifies the major element in the system, and care should be taken while
designing, in order to avoid unnecessary duplication of data. The entire package dependson
how the data are maintained in the system. Several tables are maintained in the systemto store
data that are required for the processing of various data as well as storing intermediate or final
processed results.
Database design mainly aims at handling large volumes of information, involving the
definitions for the structure of storage and provisions for the manipulation of information,
providing safety of information despite of system crashes due to unauthorized access.
Some conditions are satisfied in database design stage.
The primary of a database design is fast response time to inquiries, more information at
low cost, control of redundancy, clarity and ease of use, accuracy and integrity of the
system, fast recovery and availability of powerful end-user languages. The theme behind
a database is to handle information as an integrated whole thus the main objective is to
make information as access easy, quick, inexpensive and flexible for the users. In this
project, we mainly concentrated into relational databases.
Relational database stores data in tables, which is turn, are composed of rows also known
as records, columns also known as fields. The fields in the relational model are: -
Primary Key: The key which is uniquely identify records. They also notify the not null
constraints.
Foreign Key: The key which references the primary key, is the data inserted in the primary
key column of the table.
Normalization
After the conceptual level, the next level of process of database design to organize the
database structure into a good shape called Normalization. The normalization simplifies
the entries, removing redundancies from the system data and finally builds a data
structure, which is both flexible and adaptable to the system. The different normal forms
obtained during the database design are given below:
In the database design, we create a database with different tables that is used to store the
data. We normalize the data in the table. Database normalization is the process of
organizing the fields and tables in a relational database to minimize redundancy and
dependency. Normalization usually involves dividing large tables into smaller (and less
redundant) tables and defining relationships between them. The objective is to isolate data
so that additions, deletions, and modifications of a field can be made in just one tableand
then propagated through the rest of the database via the defined relationships.
In the project I have made used of the 3rd normal form, Third Normal Form (3NF) is a
property of database tables. A relation is in third normal form if it is in Second Normal
Form and there are no functional (transitive) dependencies between two (or more)
nonprimary key attributes. The overall objective in the development of database
technology has been to treat data as an organizational resource and as an integrated whole.
Database Management System allows data to be protected and organized separately from
other resources. Database is an integrated collection of data. This is the difference
between logical and physical data.
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 24
The output design of the Fish Farming Management System ensures that information is presented
efficiently and in a user-friendly manner. The results of various processes should be clear and well-
structured to enhance decision-making and usability. Well-designed output improves system
performance and helps users effectively interact with the system.
The output design phase focuses on converting system-processed data into meaningful and easily
understandable formats for users. Efficient and well-structured output enhances user experience,
making system interaction seamless and improving decision-making in fish farming management.The
major output forms are as follows:
1. View Inventory – Users can view fish stock and feed inventory details, including quantity, type,
and availability.
2. View Sales Report – Users can check sales records, including details of buyers, quantity sold,
and revenue generated.
3. View Expenses Report – Displays details of all expenditures, including feed purchases,
maintenance costs, and labor wages.
4. View Farmer Activities – Admin can monitor actions taken by farmers, such as stock additions
and updates.
5. View Performance Analytics – Graphical and tabular representations of farm performance,
including growth rate and profit trends.
Table no: 1
Table name: user_farmer
Table Description: Stores farmer details.
Column Name Data Type Constraints
PRIMARY KEY,
Id INT AUTO_INCREMENT
Table no: 2
Table name: user_fishstock
Table Description: Manages stocked fish details.
Table no: 3
Table name: user_feedschedule
Table description: Contains all the details of admin add new plans
Column Name Data Type Constraints
PRIMARY KEY,
Id INT AUTO_INCREMENT
FOREIGN KEY REFERENCE user_fishstock (id)
fish_stock_id INT
Table no: 4
Table name: user_healthrecord
Table Description: Logs fish health information.
Column Name Data Type Constraints
PRIMARY KEY,
Id INT AUTO_INCREMENT
FOREIGN KEY REFERENCE
fish_stock_id INT user_fishstock (id)
Table no: 7
Table name: user_ order
Table Description: Manages customer orders
Table no: 8
Table name: user_ orderitem
Table Description: Tracks items sold in each order.
Table no: 9
Table name: user_ cart
Table Description: Stores customer cart data before order placement.
Column Name Data Type Constraints
PRIMARY KEY,
Id INT AUTO_INCREMENT
FOREIGN KEY REFERENCES
user_id INT user_user(id)
DEFAULT
Created_at TIMETAMP CURRENT_TIMESTAMP
Table no: 10
Table name: user_ cartitem
Table Description: Tracks items in a user’s cart.
Table no: 11
Table name: user_ cartitem
Table Description: Records payment
4.CODING
In my project I have made use of the python to code the whole project and have made use of
MySQL to act as a database to store the results of the processed data which is the output of the
project
The quality begins with a set of technical methods and tools that help the analyst to
achieve high quality specification and the designer to develop high quality design. The
next activity involves assessment for quality for the design that is created which is the
formal technical review. Software testing combines a multi-step strategy with a series of
test case design methods that help to ensure effective error detection. To enforce data
integrity, you can constrain or restrict the data values that users can insert, delete, or
update in the database. Recordkeeping refers to the entire range of functions involved in
creating and managing records throughout their life cycle. It includes: creating / capturing
adequate records. maintaining them in trustworthy recordkeeping systems for defined
retention periods.
Admin: Allows the admin to manage farmer accounts and monitor farm activities without
making direct changes.
Farmer: Grants farmers full control over farm operations, including managing fish stock,
feeding schedules, inventory, financial records, and customer orders.
Users: Enables customers to browse fish stock, place orders, make payments, track purchases, and
communicate with farmers.
5. SYSTEM TESTING
5.SYSTEM TESTING
System testing is the stage of implementation highly aimed at ensuring that the system works
accurately and efficiently before the live operation commences. Testing is vital to the success
of the system. The primary objective of testing is to derive a set of tests that has the highest
likelihood for uncovering defects in then software. The system test in implementation should
conform that all is correct and an opportunity to show the users that the system works as
expected. It accounts the largest percentage of technical effort in the software development
process. Testing phase in the development cycle validates the code against the functional
specification.
There are mainly two approaches of testing namely, functional testing and structural testing.
Functional testing is based on the functionality of the program and not the structure of the
program. The test cases are solely on the basis of specification or requirements of the program.
This type of testing is also called as black box testing. Structural testing is also called as white
box testing or glass box testing. Here the internal structure of the program is tested.
Test cases are designed by examining the logic of the program. “Online Service Booking
System” focuses on the functionality of the system and hence it mainly does the
functional/black box testing. The test cases of this system are completely based on the
specifications of the system.
The application was tested and found to be working as expected. There was no abnormal
behavior reported during the testing of the program. Testing is a method by which we try
reducing the testing efforts and bringing out the maximum output. Testing helps us in knowing
whether the logical assumptions that we have taken for the system are correct, and if they are
correct, we have obtained our goal. We test the system to know the errors, to check the validity
of the information, to also group the modules with the aim that we meet the system
requirements according to the system needs.
Testing is vital to the success of the system. System testing makes logical assumption that if all
the parts of the system are correct, we have achieved the mission successfully. System testing
is the stage of implementation that is aimed at assuring that the system works accurately and
efficiently before the live operation commences.
Testing includes several levels of testing. They are:
4.2 Unit Testing
4.3 Integration Testing
4.4 System Testing
4.5 Acceptance Testing
Client-Side Validation
Client-side validation is something that will happen on users' browser. The validation will
occur before the data gets posted back to server. It is a good idea to have client-side
validation as the user gets to know what needs to be changed immediately, i.e., no trips to
servers are made. JavaScript is most widely used to perform client-side validation.
Server-Side Validation
Server-side validation occurs at server. The benefit of having server-side validation is that
if the user somehow bypasses the client-side validation (accidentally or deliberately), then
we can catch the problem on the server side. So, having server-side validation provides
more security and ensures that no invalid data gets processed by the application. Server-
side validation is done by writing our custom logic for validating all the input.
Debugging is a cyclic activity involving execution testing and code correction. The testing that
is done during debugging has a different aim than final module testing. Final module testing
aims to demonstrate correctness, whereas testing during debugging is primarily aimed at
locating errors. This difference has a significant effect on the choice of testing strategies.
Avoid complex one-use testing code - One reason why it is counterproductive to add
module correctness checks for errors that involve the entire structure is that the code to
do so can be quite complex. It is very discouraging to spend several hours debugging a
problem, only to find that the error was in the debugging code, not the module under
test. Complex testing code is only practical if the difficult parts of the code are reusable.
6. SYSTEM IMPLEMENTATION
AND MAINTENANACE
7. SCOPE OF PROJECT
7.SCOPE OF PROJECT
The Fish Farming Management System simplifies farm management by efficiently handling fish stock,
feeding schedules, inventory, financial records, and customer orders. It ensures seamless interaction between
farmers, customers, and the admin while enhancing overall productivity and decision-making.
• To streamline the process of managing fish stock, feeding schedules, and sales.
• The system generates valuable reports that can be used for various purposes.
• It satisfies the requirements of farmers, customers, and administrators.
• Be easy to understand and use for all users.
• Be simple to operate with minimal training.
• Have an intuitive and user-friendly interface.
• Be scalable for future expansions and additional features.
8.FUTURE ENHANCEMENTS
8.FUTURE ENHANCEMENTS
The Fish Farming Management System can be enhanced by integrating IoT-based water quality
monitoring to automatically track parameters like temperature, pH levels, and oxygen levels,
ensuring optimal fish health. Additionally, incorporating AI-driven predictive analytics can help
farmers anticipate fish growth rates, disease outbreaks, and ideal harvesting times, improving
efficiency and profitability. A mobile application can also be developed to allow farmers and
customers to access the system anytime, improving convenience and accessibility.
Future upgrades may include automated feeding systems that dispense the right amount of feed
at scheduled times, reducing waste and ensuring proper nutrition for the fish. Expanding the
system with blockchain-based traceability can help in tracking fish from farm to market,
enhancing transparency and trust among buyers. Integration with e-commerce platforms will
allow farmers to sell fish online, reaching a larger customer base and boosting sales. These
enhancements will make the system more intelligent, efficient, and scalable for the growing
needs of the aquaculture industry.
9.CONCLUSION
9.CONCLUSION
Our project is a humble initiative aimed at simplifying fish farm management for farmers and
customers. By streamlining processes such as fish stock management, feeding schedules,
financial tracking, and customer orders, the system enhances efficiency and productivity in
aquaculture. User-friendly features and an intuitive interface ensure that farmers can easily
monitor and manage their operations, while customers can seamlessly place orders and track
purchases.
This system serves as a powerful tool to meet the growing needs of the fish farming industry.
The structured software planning and continuous improvements will enable scalability and
adaptability for future enhancements. By providing a well-organized and efficient solution, the
Fish Farming Management System ensures that users can effectively manage their farms and
make informed decisions, ultimately contributing to a more sustainable and profitable
aquaculture industry.
10.BIBLIOGRAPHY
10. BIBLIOGRAPHY
www.beginwebprogramming.com
www.stackoverflow.com
www.W3Schools.com
www.tutorialspoint.com
BOOK OF STUDY
APPENDIX I – CODING
Views.py
if request.method == 'POST':
username = request.POST['username']
address = request.POST['address']
phone = request.POST['phone']
image = request.FILES.get('image')
email = request.POST['email']
password = request.POST['pass']
confirm_password = request.POST['re_pass']
if password != confirm_password:
messages.error(request, "Passwords do not match.")
return redirect('signup')
if User.objects.filter(username=username).exists():
messages.error(request, "Username already exists.")
return redirect('signup')
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 48
if User.objects.filter(email=email).exists():
messages.error(request, "Email already registered.")
return redirect('signup')
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
# home page.
def home(request):
fish_stocks = FishStock.objects.all() # Fetch all fish stock records
context = {
'fish_stocks': fish_stocks,
}
return render(request, "user/index.html", context)
if not request.user.is_authenticated:
return JsonResponse({"success": False, "message": "You need to be logged in to
add items to the cart.", "redirect_to": "signin"})
if request.method == "POST":
try:
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 50
data = json.loads(request.body)
fish_id = data.get("fish_id")
quantity = int(data.get("quantity"))
if quantity <= 0:
return JsonResponse({"success": False, "message": "Quantity must be greater
than 0."})
# cart page.
def cart_page(request):
if not request.user.is_authenticated:
messages.error(request, "You need to be logged in to add items to the cart.")
return redirect("signin")
cart, created = Cart.objects.get_or_create(user=request.user)
cart_items = CartItem.objects.filter(cart=cart)
total_price = sum(item.get_total_price() for item in cart_items)
if request.method == "POST":
card_holder_name = request.POST.get("card_holder_name")
card_number = request.POST.get("card_number")
payment_status = "Initiated" # Default status
if len(card_number) < 4:
messages.error(request, "Invalid card number. Please enter a valid card
number.")
return redirect("checkout")
card_number_last4 = card_number[-4:]
payment = CreditCardPayment.objects.create(
user=request.user,
card_holder_name=card_holder_name,
card_number_last4=card_number_last4,
amount_paid=total_price,
status=payment_status,
)
try:
payment.status = "Success"
payment.save()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 53
order = Order.objects.create(
user=request.user,
CreditCardPayment=payment,
order_number="ORDER" + str(payment.id),
order_total=total_price,
status="Pending"
)
fish_stock = cart_item.fish_stock
fish_stock.quantity -= cart_item.quantity
fish_stock.save()
cart_items.delete()
except Exception as e:
print(f"Error during payment processing: {str(e)}")
payment.status = "Failed"
payment.save()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 54
messages.error(request, "Payment failed. Please try again.")
return redirect("checkout")
# about page.
def about(request):
return render(request, 'user/about.html')
current_user = request.user
orders = OrderItem.objects.filter(user=request.user).order_by('-created_at')
context = {
'orders': orders,
'profile': current_user,
}
return render(request, 'user/profile.html', context)
if request.method == 'POST':
username = request.POST.get('username')
email = request.POST.get('email')
address = request.POST.get('address')
phone = request.POST.get('phone')
image = request.FILES.get('image')
# Validate if the username or email is already taken (except by the current user)
if User.objects.exclude(id=user.id).filter(username=username).exists():
messages.error(request, "This username is already taken.")
return redirect('edit_user_profile')
if User.objects.exclude(id=user.id).filter(email=email).exists():
messages.error(request, "This email is already in use.")
return redirect('edit_user_profile')
if image:
user.image = image
user.save()
################################################### Farmer
####################################################################
try:
# Fetch the farmer object based on the username (or name field)
farmer = Farmer.objects.get(name=name)
print("try block", farmer)
try:
# Fetch the farmer object from the database using the farmer ID
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmerrrr details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
# orders = OrderItem.objects.all().order_by('-created_at')
if request.user.is_superuser:
orders = OrderItem.objects.all()
elif farmer:
orders = OrderItem.objects.filter(farmer=farmer).order_by('-created_at')
else:
orders = OrderItem.objects.none()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 59
if request.user.is_superuser:
context = {'orders': orders, 'view_only': True, 'farmer': farmer}
else:
context = {'orders': orders, 'view_only': False, 'farmer': farmer}
# edit orders.
def edit_order(request, id):
farmer_id = request.session.get('farmer_id')
if not farmer_id:
messages.error(request, "Session expired. Please log in again.")
return redirect("farmer_login")
try:
farmer = Farmer.objects.get(id=farmer_id)
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect("farmer_login")
try:
# Ensure the farmer can only edit their own orders
order = Order.objects.get(pk=id)
print(order)
except OrderItem.DoesNotExist:
messages.error(request, "Order not found or you do not have permission to edit this
order.")
return redirect("farmer_orders")
if request.method == "POST":
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 60
status = request.POST.get("status")
if status:
order.status = status
order.save()
messages.success(request, f"Order status updated to {status}.")
else:
messages.error(request, "Invalid status value.")
return redirect("farmer_orders")
################################################ Admin
#####################################################################
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
# admin logout
def admin_logout(request):
logout(request)
request.session.flush()
messages.success(request, "logged out succesfully")
return redirect('home')
# add farmers.
@user_passes_test(lambda u: u.is_superuser, login_url='/admin_login')
def add_farmers(request):
if request.method == 'POST':
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 62
form = FarmerForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, "Fish stock record added successfully!")
return redirect('farmer')
else:
messages.error(request, "Please correct the errors below.")
else:
form = FarmerForm()
# farmer profile.
def farmer_profile(request):
farmer_id = request.session.get('farmer_id')
try:
farmer = Farmer.objects.get(id=farmer_id)
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
if request.method == 'POST':
farmer.name = request.POST.get('name', farmer.name)
farmer.email = request.POST.get('email', farmer.email)
farmer.address = request.POST.get('address', farmer.address)
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 63
farmer.phone = request.POST.get('phone', farmer.phone)
farmer.save()
messages.success(request, "Farmer details updated successfully!")
return redirect('farmer_profile') # Redirect to farmer list or details page
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
if request.user.is_superuser:
fish_stocks = FishStock.objects.all()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 64
elif farmer:
fish_stocks = FishStock.objects.filter(farmer=farmer)
else:
fish_stocks = FishStock.objects.none()
context = {
'fish_stocks': fish_stocks,
'view_only': request.user.is_superuser,
'farmer': farmer
}
try:
# Fetch the farmer object from the database using the farmer ID
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 65
form = FishStockForm(request.POST, instance=fish_stock)
if form.is_valid():
form.save()
messages.success(request, "Fish stock record updated successfully!")
return redirect('dashboard')
else:
messages.error(request, "Please correct the errors below.")
else:
form = FishStockForm(instance=fish_stock)
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
context = {
'inventory_items': inventory_items,
'view_only': request.user.is_superuser
}
if not farmer_id:
messages.error(request, "You must be logged in as a farmer to access this page.")
return redirect('farmer_login') # Redirect to login page if farmer ID not found in
session
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 67
form = InventoryForm(request.POST)
if form.is_valid():
inventory_item = form.save(commit=False) # Don't save yet
inventory_item.farmer = farmer # Link to the logged-in farmer
inventory_item.save() # Now save the item
messages.success(request, "Inventory item added successfully!")
return redirect('inventory')
else:
messages.error(request, "Please correct the errors below.")
else:
form = InventoryForm()
try:
# Fetch the farmer object from the database using the farmer ID
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = InventoryForm(request.POST, instance=inventory_item)
if form.is_valid():
form.save()
messages.success(request, "Inventory item updated successfully!")
return redirect('inventory') # Redirect to the dashboard or appropriate page
else:
messages.error(request, "Please correct the errors below.")
else:
form = InventoryForm(instance=inventory_item) # Pre-populate the form with
existing data
return render(request, 'admin/edit_inventory.html', {'form': form, 'inventory_item':
inventory_item})
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
if request.user.is_superuser:
# Superusers can see all fish stocks
feed_schedule = FeedSchedule.objects.all()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 69
elif farmer:
# Regular farmers can only see their own fish stocks
feed_schedule = FeedSchedule.objects.filter(fish_stock__farmer=farmer)
else:
feed_schedule = FeedSchedule.objects.none()
if request.user.is_superuser:
context = {'feed_schedule': feed_schedule, 'view_only': True}
else:
context = {'feed_schedule': feed_schedule, 'view_only': False}
try:
# Fetch the farmer object from the database using the farmer ID
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = FeedScheduleForm(request.POST)
if form.is_valid():
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 70
form.save()
messages.success(request, "Feed Schedule added successfully!")
return redirect('feed_schedule')
else:
messages.error(request, "Please correct the errors below.")
else:
form = FeedScheduleForm()
try:
# Fetch the farmer object from the database using the farmer ID
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = FeedScheduleForm(request.POST, instance=feed_schedule)
if form.is_valid():
form.save()
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 71
messages.success(request, "Inventory item updated successfully!")
return redirect('feed_schedule') # Redirect to the dashboard or appropriate page
else:
messages.error(request, "Please correct the errors below.")
else:
form = FeedScheduleForm(instance=feed_schedule) # Pre-populate the form with
existing data
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
if request.user.is_superuser:
# Superusers can see all fish stocks
health_record = HealthRecord.objects.all()
elif farmer:
# Regular farmers can only see their own fish stocks
health_record = HealthRecord.objects.filter(fish_stock__farmer=farmer)
else:
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 72
health_record = HealthRecord.objects.none()
if request.user.is_superuser:
context = {'health_record': health_record, 'view_only': True}
else:
context = {'health_record': health_record, 'view_only': False}
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
farmer_id = request.session.get('farmer_id')
if not farmer_id:
messages.error(request, "You must be logged in as a farmer to access this page.")
return redirect('farmer_login')
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 73
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = HealthRecordForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Feed Schedule added successfully!")
return redirect('health_record')
else:
messages.error(request, "Please correct the errors below.")
else:
form = HealthRecordForm()
return render(request, 'admin/add_health_record.html', {'form': form})
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
farmer_id = request.session.get('farmer_id')
if not farmer_id:
messages.error(request, "You must be logged in as a farmer to access this page.")
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 74
return redirect('farmer_login')
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = HealthRecordForm(request.POST, instance=feed_schedule)
if form.is_valid():
form.save()
messages.success(request, "Inventory item updated successfully!")
return redirect('health_record')
else:
messages.error(request, "Please correct the errors below.")
else:
form = HealthRecordForm(instance=feed_schedule)
if farmer_id:
try:
farmer = Farmer.objects.get(id=farmer_id)
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 75
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
farmer = None
messages.error(request, "Farmer not found in session.")
else:
farmer = None
context = {
'financial_record': financial_record,
'view_only': request.user.is_superuser
}
if not farmer_id:
messages.error(request, "You must be logged in as a farmer to access this page.")
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 76
return redirect('farmer_login') # Redirect if no farmer is logged in
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = FinancialRecordForm(request.POST)
if form.is_valid():
financial_record = form.save(commit=False) # Delay saving to assign the
farmer
financial_record.farmer = farmer # Link the record to the logged-in
farmer
financial_record.save() # Save the record
messages.success(request, "Financial record added successfully!")
return redirect('financial_record')
else:
messages.error(request, "Please correct the errors below.")
else:
form = FinancialRecordForm()
try:
farmer = Farmer.objects.get(id=farmer_id)
print(f"Farmer details: {farmer.name}, {farmer.email}")
except Farmer.DoesNotExist:
messages.error(request, "Farmer not found.")
return redirect('farmer_login')
if request.method == 'POST':
form = FinancialRecordForm(request.POST, instance=feed_schedule)
if form.is_valid():
form.save()
messages.success(request, "Inventory item updated successfully!")
return redirect('financial_record')
else:
messages.error(request, "Please correct the errors below.")
else:
form = FinancialRecordForm(instance=feed_schedule)
viewplan.php
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$planname = $row['planname'];
$description = $row['description'];
$image = $row['image'];
echo '
<div class="plan-item">
<div class="plan-image">
<img src="' . $image . '" alt="Plan Image">
</div>
<div class="plan-content">
<h3 class="plan-title">' . htmlspecialchars($planname) . '</h3>
<p class="plan-description">' . htmlspecialchars($description) . '</p>
<form action="getplan.php" method="get">
</div>
</div>';
}
} else {
// Close connection
mysqli_close($conn);
?>
</div>
<footer class="footer">
<section class="box-container">
</section>
</footer>
<!-- footer section ends -->
</body>
<?php
// db_connect.php
$servername = "localhost";
$username = "root"; // Use your database username
$password = ""; // Use your database password
$dbname = "project"; // Your database name
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
getplan.php
<?php
include 'connect.php';
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Collect form data
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$address = $_POST['address'];
$gender = $_POST['gender'];
$height = $_POST['height'];
$weight = $_POST['weight'];
$goal = $_POST['goal'];
if (mysqli_query($conn, $sql)) {
$book_id=mysqli_insert_id($conn);
header("Location: payment.php?book_id=$book_id");
exit;
}
else{
echo "Error:" .$sql. "<br>" .mysqli_error($conn);
}
mysqli_close($conn);
}
?>
<label for="phone">Phone:</label>
<input type="tel" id="phone" name="phone" required>
<label for="address">Address:</label>
<input type="text" id="address" name="address" required>
<label for="gender">Gender:</label>
<label for="goal">Goals:</label>
<select id="goal" name="goal" required>
<option value="">Select Goal</option>
<option value="weight-loss">Weight Loss</option>
<option value="flexibility">Flexibility</option>
<option value="stress-relief">Stress Relief</option>
<option value="general-fitness">General Fitness</option>
</select>
<button type="submit">Submit</button>
</form>
</div>
</body>
</html>
Dashboard.html[Admin]
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Datum | CRM Admin Dashboard Template</title>
</div>
</div>
<!-- Page end -->
</div>
</div>
</div>
<!-- Wrapper End-->
<footer class="iq-footer">
<div class="container-fluid">
<div class="row">
<div class="col-lg-6">
<ul class="list-inline mb-0">
<li class="list-inline-item"><a href="../backend/privacy-policy.html">Privacy
Policy</a></li>
<li class="list-inline-item"><a href="../backend/terms-of-service.html">Terms
of Use</a></li>
</ul>
</div>
<div class="col-lg-6 text-right">
<span class="mr-1">
Copyright
<script>document.write(new Date().getFullYear())</script>© <a href="#"
class="">Datum</a>
All Rights Reserved.
</span>
</div>
</div>
</div>
</footer> <!-- Backend Bundle JavaScript -->
<script src="/static/assets/js/backend-bundle.min.js"></script>
CHINMAYA COLLEGE OF ARTS, COMMERCE AND SCIENCE DEPARTMENT OF COMPUTER APPLICATIONS
AQUA MANAGE 94
<!-- Chart Custom JavaScript -->
<script src="/static/assets/js/customizer.js"></script>
<script src="/static/assets/js/sidebar.js"></script>
APPENDIX II
Login form
Signup form
Add/Manage Inventory
Appendix III
User page
View Fish