DBMS
DBMS
Academic Year:2023-2024
Course Code: DBMS Lab Mini Project Report
Semester & Batch:4&E2
Project Details:
Student Details:
Email-ID: [email protected]
SRN: R22EF297
1|P a g e
Farm Management System
CONTENT:
CHAPTER PAGNO:
1. INTRODUCTION 1
1.1 OBJECTIVES
1.2 LIMITATIONS
3.2 CONCEPTUALDESIGN
3.2.1 ERDIAGRAM
3.2.3 SCHEMADIAGRAM
3.3 IMPLEMENTATION
3.3.1 FRONTEND
3.3.2 BACKEND
3.3.3 TRIGGER
3.3.4 STORED PROCEDURE
4.1 SCREENSHOTS
2|P a g e
Farm Management System
LIST OF FIGURES:
1 E-R DIAGRAM 8
2 SCHEMA DIAGRAM 9
3 HOMEPAGE 26
4 SIGNUP PAGE 26
5 REGISTER FARMER 27
DETALIES
6 REGISTERATION PAGE & 27
PRODUCTS
7 FRAMERS TRIGGERS 28
RECORDS
8 TRIGGER RECORDS 29
9 FRAMER DETAILS
10 ADDING AGRO PRODUCTS 29
11 RIGSTER 30
12 TRIG 30
13 PHP MY ADMIN ADD
GROUPPRODUCTS 31
14 PHP MY ADMIN USER 31
3|P a g e
Farm Management System
ABSTRACT:
The farmers can sell their productions online and the buyer can purchase
various agricultural products online. Buyer can send purchase request to
check the quality of the Agro product through mails
4|P a g e
Farm Management System
CHAPTER-1
INTRODUCTION
1.1 OBJECTIVES:
• The main objective of the project is to design and develop a user friendly-system Easy
to use and an efficient computerized system.
• To develop an accurate and flexible system, it will eliminate data redundancy.
• To study the functioning of Farm management System.
• To make a software fast in processing, with good user interface.
• To make software with good user interface so that user can change it and it should be used
for a long time without error and maintenance.
• To provide synchronized and centralized farmer and seller database.
• Computerization can be helpful as a means of saving time and money.
• To provide better Graphical User Interface (GUI).
• Less chances of information leakage.
• Provides Security to the data by using login and password method.
• To provide immediate storage and retrieval of data and information.
• Improving arrangements for farmers co-ordination.
• Reducing loss.
1.2 LIMITATIONS:
• Small size of farm business: Due to fragmentation and subdivision of holding the average
size of operational holdings is very small
• Less labour per unit areas is required to farm large areas, especially since expensive
alterations to land (like terracing) are completely absent.
• Mechanisation can be used more effectively over large, flat areas
5|P a g e
Farm Management System
CHAPTER-2
The farmers can sell their productions online and the buyer can purchase various agricultural
products online. Buyer can send purchase request to check the quality of the product. After
collecting all the farm produce from the farmers, it should be sold to the customers. This project
covers these entries and the data collections.There are 2 types of users: Customer & Farmers.The
login id and password must be required to login the system. The article and agro products section
helps farmers to share their products and increase profitability.
6|P a g e
Farm Management System
CHAPTER 3
DATABASE DESIGN
HARDWARE REQUIREMENTS:
• Computer with a 1.1 GHz or faster processor
• Minimum 2GB of RAM or more
• 2.5 GB of available hard-disk space
• 5400 RPM hard drive
• 1366 × 768 or higher-resolution display
• DVD-ROM drive
7|P a g e
Farm Management System
8|P a g e
Farm Management System
3.3 IMPLEMENTATION:
There have been and are several distinct software packages providing of what we all recognize
as Python, although some of those are more like distributions or variants of some existing
implementation than a completely new implementation of the language.
numerous users. Typical examples of DBMSs include Oracle, DB2, Microsoft Access,
Microsoft SQL Server, Firebird, PostgreSQL, MySQL, SQLite, FileMaker and Sybase
Adaptive Server Enterprise. DBMSs are typically used by Database administrators in the
creation of Database systems. Typical examples of DBMS use include accounting, human
resources and customer support systems. Originally found only in large companies with the
computer hardware needed to support large data sets, DBMSs have more recently emerged as
a fairly standard part of any company back office.
A DBMS is a complex set of software programs that controls the organization, storage,
management, and retrieval of data in a database. A DBMS includes:
➢ A modeling language to define the schema of each database hosted in the DBMS,
according to the DBMS data model.
➢ The dominant model in use today is the ad hoc one embedded in SQL, despite the
objections of purists who believe this model is a corruption of the relational model,
since it violates several of its fundamental principles for the sake of practicality and
performance. Many DBMSs also support the Open Database Connectivity API that
supports a standard way for programmers to access the DBMS.
Data structures (fields, records, files and objects) optimized to deal with very large amounts of data
stored on a permanent data storage device (which implies relatively slow access compared to
volatile main memory).A database query language and report
writer to allow users to interactively interrogate the database, analyze its data and
update it according to the users privileges on data.
➢ Data security prevents unauthorized users from viewing or updating the database.
Using passwords, users are allowed access to the entire database or subsets of it called
sub schemas. For example, an employee database can contain all the data about an
individual employee, but one group of users may be authorized to view only payroll
data, while others are allowed access to only work history and student data.
➢ If the DBMS provides a way to interactively enter and update the database, as well as
interrogate it, this capability allows for managing personal databases. However, it
may not leave an audit trail of actions or provide the kinds of controls necessary in a
multi-user organization. These controls are only available when a set of application
programs are customized for each data entry and updating function.
✓ A transaction mechanism, that ideally would guarantee the ACID properties, in order to
ensure data integrity, despite concurrent user accesses (concurrency control), and faults
(fault tolerance).
10 | P a g e
Farm Management System
When a DBMS is used, information systems can be changed much more easily as the
organization's information requirements change. to the Organizations may use one kind of
DBMS for daily transaction processing and then move the detail onto another computer that
uses another DBMS better suited for random inquiries and analysis. Overall systems design
decisions are performed by data administrators and systems analysts. Detailed database design
is performed by database administrators.
SQL:
Structured Query Language (SQL) is the language used to manipulate relational databases.
SQL is tied very closely with the relational model.
.
4.2 : Stored Procedure
4.3 : Triggers
It is the special kind of stored procedure that automatically executes when an event occurs in
the database.
Triggers used :
1: Trigger name: on insert
Table: register
Time: after
11 | P a g e
Farm Management System
Event: insert
INSERT INTO trig VALUES(null,NEW.rid,'Farmer Inserted',NOW())
# MY db connection
local_server= True app =
Flask( name )
app.secret_key='harshithbhaskar
'
12 | P a g e
Farm Management System
@login_manager.user_loader def
load_user(user_id):
return User.query.get(int(user_id))
#
app.config['SQLALCHEMY_DATABASE_URL']='mysql://username:password@localhost/databas_table_
name'
app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:@localhost/farmers' db=SQLAlchemy(app)
class Farming(db.Model):
fid=db.Column(db.Integer,primary_key=True)
farmingtype=db.Column(db.String(100))
class Addagroproducts(db.Model):
username=db.Column(db.String(50))
email=db.Column(db.String(50))
pid=db.Column(db.Integer,primary_key=True)
productname=db.Column(db.String(100))
productdesc=db.Column(db.String(300))
price=db.Column(db.Integer)
class Trig(db.Model):
id=db.Column(db.Integer,primary_key=True)
fid=db.Column(db.String(100))
action=db.Column(db.String(100))
timestamp=db.Column(db.String(100))
class User(UserMixin,db.Model):
id=db.Column(db.Integer,primary_key=True)
username=db.Column(db.String(50))
email=db.Column(db.String(50),unique=True)
password=db.Column(db.String(1000))
13 | P a g e
Farm Management System
class Register(db.Model):
rid=db.Column(db.Integer,primary_key=True)
farmername=db.Column(db.String(50))
adharnumber=db.Column(db.String(50))
age=db.Column(db.Integer)
gender=db.Column(db.String(50))
phonenumber=db.Column(db.String(50))
address=db.Column(db.String(50))
farming=db.Column(db.String(50))
@app.route('/')
def index():
return render_template('index.html')
@app.route('/farmerdetails')
@login_required def
farmerdetails():
query=db.engine.execute(f"SELECT * FROM `register`") return
render_template('farmerdetails.html',query=query)
username
@app.route('/agroproducts') def
agroproducts():
query=db.engine.execute(f"SELECT * FROM `addagroproducts`")
return render_template('agroproducts.html',query=query)
@app.route('/addagroproduct',methods=['POST','GET'])
@login_required def
addagroproduct(): if
request.method=="POST":
username=request.form.get('username')
email=request.form.get('email')
productname=request.form.get('productname')
productdesc=request.form.get('productdesc')
price=request.form.get('price')
products=Addagroproducts(username=username,email=email,productname=pro
ductname,productdesc=prod uctdesc,price=price)
db.session.add(products)
db.session.commit()
flash("Product Added","info")
return redirect('/agroproducts')
14 | P a g e
Farm Management System
return render_template('addagroproducts.html')
@app.route('/triggers')
@login_required def
triggers():
query=db.engine.execute(f"SELECT * FROM `trig`")
return render_template('triggers.html',query=query)
@app.route('/addfarming',methods=['POST','GET'])
@login_required
def addfarming():
if request.method=="POST":
farmingtype=request.form.get('farming')
query=Farming.query.filter_by(farmingtype=farmingtype).first() if
query:
flash("Farming Type Already Exist","warning")
return redirect('/addfarming')
dep=Farming(farmingtype=farmingtype)
db.session.add(dep) db.session.commit()
flash("Farming Addes","success")
return render_template('farming.html')
@app.route("/delete/<string:rid>",methods=['POST','GET'])
@login_required def
delete(rid):
db.engine.execute(f"DELETE FROM `register` WHERE `register`.`rid`={rid}")
flash("Slot Deleted Successful","danger")
return redirect('/farmerdetails')
@app.route("/edit/<string:rid>",methods=['POST','GET'])
@login_required def
edit(rid):
farming=db.engine.execute("SELECT * FROM `farming`")
posts=Register.query.filter_by(rid=rid).first() if
request.method=="POST":
farmername=request.form.get('farmername')
adharnumber=request.form.get('adharnumber')
age=request.form.get('age')
gender=request.form.get('gender')
phonenumber=request.form.get('phonenumber')
address=request.form.get('address')
15 | P a g e
Farm Management System
farmingtype=request.form.get('farmingtype')
query=db.engine.execute(f"UPDATE `register` SET
`farmername`='{farmername}',`adharnumber`='{adharnumber}',`age`='{age}',`gender`='{gender}',`phonenu
mber`='{phonenumber}',`address`='{address}',`farming`='{farmingtype}'") flash("Slot is
Updates","success")
return redirect('/farmerdetails')
return render_template('edit.html',posts=posts,farming=farming)
@app.route('/signup',methods=['POST','GET'])
def signup(): if request.method == "POST":
username=request.form.get('username')
email=request.form.get('email')
password=request.form.get('password')
print(username,email,password)
user=User.query.filter_by(email=email).first() if
user:
flash("Email Already Exist","warning")
return render_template('/signup.html')
encpassword=generate_password_hash(password)
return redirect(url_for('index'))
else:
flash("invalid credentials","danger")
return render_template('login.html')
return render_template('login.html')
@app.route('/logout')
@login_required def
logout():
logout_user()
flash("Logout SuccessFul","warning")
return redirect(url_for('login'))
@app.route('/register',methods=['POST','GET'])
@login_required def
register():
farming=db.engine.execute("SELECT * FROM `farming`")
if request.method=="POST":
farmername=request.form.get('farmername')
adharnumber=request.form.get('adharnumber')
age=request.form.get('age')
gender=request.form.get('gender')
phonenumber=request.form.get('phonenumber')
address=request.form.get('address')
farmingtype=request.form.get('farmingtype')
query=db.engine.execute(f"INSERT INTO `register`
(`farmername`,`adharnumber`,`age`,`gender`,`phonenumber`,`address`,`farming`) VALUES
('{farmername}','{adharnumber}','{age}','{gender}','{phonenumber}','{address}','{farmingtype}')"
) flash("Your Record Has Been Saved","success") return redirect('/farmerdetails')
return render_template('farmer.html',farming=farming)
@app.route('/test') def test(): try:
Test.query.all()
return 'My database is Connected'
except:
return 'My db is not Connected'
app.run(debug=True)
17 | P a g e
Farm Management System
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
{% block style %}
{% endblock style %}
<link
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,50
0,700,800" rel="stylesheet">
</head>
<body>
<div class="container">
<nav id="nav-menu-container">
<ul class="nav-menu">
<li class="{% block home %}
{% endblock home %}"><a href="/">Home</a></li>
{% if current_user.is_authenticated %}
<li class="buy-tickets"><a href="">Welcome {{current_user.username}}</a></li>
<li class="buy-tickets"><a href="/logout">Logout</a></li>
{% else %}
<li class="buy-tickets"><a href="/signup">Signin</a></li>
{% endif %}
</ul>
</nav><!-- #nav-menu-container -->
</div>
</header><!-- End Header -->
19 | P a g e
Farm Management System
</div>
</section><!-- End Intro Section -->
<main id="main">
{% block body %}
{% with messages=get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
</div>
{% endfor %}
{% endif %}
{% endwith %}
{% endblock body %}
20 | P a g e
Farm Management System
</body>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0" name="viewport">
{% block style %}
{% endblock style %}
<link
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,50
0,700,800" rel="stylesheet">
</head>
<body>
<nav id="nav-menu-container">
<ul class="nav-menu">
<li class="{% block home %}
{% endblock home %}"><a href="/">Home</a></li>
{% if current_user.is_authenticated %}
<li class="buy-tickets"><a href="">Welcome {{current_user.username}}</a></li>
<li class="buy-tickets"><a href="/logout">Logout</a></li>
{% else %}
<li class="buy-tickets"><a href="/signup">Signin</a></li>
{% endif %}
</ul>
</nav><!-- #nav-menu-container -->
</div>
</header><!-- End Header -->
{% block body %}
{% with messages=get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
</div>
{% endfor %}
{% endif %}
{% endwith %}
{% endblock body %}
</body>
</html>
23 | P a g e
Farm Management System
Farmer.html
{% extends 'base.html' %}
{% block title %}
Add Farming
{% endblock title %}
{% block body %}
<h3 class="text-center bg-success text-white"><span>Add Farming</span> </h3>
{% with messages=get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
</div>
{% endfor %}
{% endif %}
{% endwith %}
<br>
<div class="container">
<div class="row">
<div class="col-md-4"></div>
<div class="col-md-4">
<div class="form-group">
<label for="dept">Enter Farming Type</label>
<input type="text" class="form-control" name="farming" id="farming">
</div>
<br>
24 | P a g e
Farm Management System
</div>
<div class="col-md-4"></div>
</div></div>
{% endblock body %}
25 | P a g e
Farm Management System
USER INTERFACE
SIGN IN PAGE:
SIGN UP PAGE:
26 | P a g e
Farm Management System
27 | P a g e
Farm Management System
TRIGGERS RECORDS :
28 | P a g e
Farm Management System
29 | P a g e
Farm Management System
DATABASE :
REGISTER:
TRIG:
30 | P a g e
Farm Management System
31 | P a g e
Farm Management System
CONCLUSION
Using MySQL as the database is highly beneficial as it is free to download, popular and can
be easily customized. The data stored in the MySQL database can easily be retrieved and
manipulated according to the requirements with basic knowledge of SQL.
With the theoretical inclination of our syllabus it becomes very essential to take the atmost
advantage of any opportunity of gaining practical experience that comes along. The building
blocks of this Major Project “Farm Management System” was one of these opportunities. It
gave us the requisite practical knowledge to supplement the already taught theoretical
concepts thus making us more competent as a computer engineer. The project from a personal
point of view also helped us in understanding the following aspects of project development:
FUTURE ENHANCEMENT
• Enhanced database storage facility
• online payments
32 | P a g e
Farm Management System
REFERENCES
• https://www.youtube.com
• https://www.google.com
• http://www.getbootstrap.co
33 | P a g e