Dbms Report Abc
Dbms Report Abc
2024 – 2025
Bachelor of Engineering
in
Computer Science and Engineering
Submitted by
Megha R (4VM23CS032)
Ramya N (4VM23CS040)
Shashanya G (4VM23CS048)
Shilpa P R (4VM23CS049)
4th Semester
Certificate
Certified that DBMS Mini Project Work entitled “Budget and Expense Tracker”
carried Out by Megha R (4VM23CS032), Ramya N (4VM23CS040), Shashanya G
(4VM23CS048), Shilpa P R (4VM23CS049) Bonafide student of VVIET in partial
fulfilment for the award of degree Bachelor of Engineering in COMPUTER
SCIENCE and ENGINEERING as prescribed by VISVESVARYA
TECHNOLOGY UNIVERSITY, BELGAUM during the academic year 2024-25.
It is certified that all corrections/suggestions indicated for internal assessment have
been incorporated in the report deposited in the department library. The project report
has been approved as it satisfies the academic requirement in respect of mini project
work prescribed for the said degree.
_____________________ ____________________
Prof. Namithadevi N N Dr. Somashekhar B M
Assistant Professor HOD, CSE
Acknowledgment
We would like to thank and express our heartfelt gratitude to God almighty for the
abundant blessings without which this project would not have been successful.We
would like to express our sincere gratitude to Late Sri. Vasu Sir, Founder Chairman
of VVIET, Sri.Ritesh Gowda V ,Chairman of VVIET, Sri.Kaveesh Gowda V, Hon
Secretary of VVIET and all management members of VVIET, for their constant
support.
We acknowledge and express our sincere thanks to our beloved Principal Dr.
Karibasappa K, VVIET, Mysuru who is the source of inspiration.
We would like to express our deepest sense of gratitude towards Dr.
Somashekhar B M, Head of the Department, CSE, VVIET, Mysuru for his valuable
suggestions, support, and encouragement.
We would liketo extend our heart felt gratitude to Mrs. Namithadevi N N, Assistant
Professor, Dept. of CSE, for the valuable guidance and advice. We would also like to
thank her for guidance and useful suggestions, which helped us in completing the
project work on time.
We would also thank all other teaching and non-teaching staff of the Computer
Science Department who have directly or indirectly helped us in the completion of this
project. Our thanks and appreciation also go to our family and friends who have
willingly helped us out with their abilities.
Regards,
Megha R
Ramya
Shashanya G
Shilpa P R
Abstract
This mini-project titled Smart Budget and Expense Tracker aims to build a full-stack
web application that empowers users to track, manage, and analyze their financial
activities. With core functionalities such as expense categorization, budget monitoring,
pie chart visualization, and real-time summary, the application not only encourages
disciplined spending but also acts as a comprehensive tool for personal financial
planning.
The application is developed using modern web technologies including HTML, CSS,
JavaScript (optionally React), Node.js with Express.js for backend, and MongoDB for
data persistence.
Our key contributions include a Budget Alert System that notifies users when spending
approaches or exceeds budget limits and Pie Chart Visualization for clear financial
insights.
Chapter 6: Conclusion
6.1 Summary of Learnings
6.2 Project Impact
6.3 Real-world Applicability
Chapter 7: Future Enhancements
7.1 Login system, export reports, mobile PWA, etc.
Chapter 8: Screenshots:
8.1 Home, Add Entry, Pie Chart, Budget Alert pop-up, etc.
References
Budget and Expense Tracker
Chapter 1
Introduction
1.1 Introduction to Expense Tracker
In the modern era of digital transformation, personal finance management is no longer a luxury—it is
a necessity. The Smart Budget and Expense Tracker is a web-based application built to simplify the
way users manage their income and expenses. The primary aim is to help individuals monitor their
financial activities in a structured, efficient, and visually appealing manner.
This application is tailored for users of all backgrounds, whether students managing limited budgets,
professionals juggling multiple expenses, or families overseeing household finances. By allowing
users to add, categorize, and analyze their income and expenses, the tool ensures that users can take
full control over their financial decisions.
The core technologies used in this application include:
Frontend: HTML, CSS, JavaScript
Backend: Node.js with Express.js
Database: MongoDB for persistent and scalable data storage
Advanced features such as a Budget Alert System ensure that users are notified when their expenses
approach or exceed a defined threshold. Additionally, the inclusion of Pie Chart Visualization offers a
graphical representation of spending patterns, making financial review both engaging and
informative.
In summary, the application acts as a comprehensive personal finance assistant, demonstrating the
powerful intersection of full-stack development and database management system (DBMS)
principles in solving everyday problems.
Moreover, from an educational standpoint, this project reflects the real-world application of CRUD
operations, database schemas, API development, data visualization, and responsive web design—
skills essential for a computer science student.
Through this mini-project, we bridge the gap between theoretical DBMS concepts and practical,
impactful software development.
1.3 Significance
The significance of the Smart Budget and Expense Tracker lies in its dual benefit: solving a common
real-life problem and providing a hands-on development experience that deepens the understanding
of DBMS and full-stack systems.
Practical Importance:
Empowers financial literacy: Users learn to understand, interpret, and manage their financial
health.
Encourages budget-conscious behavior: With the help of alerts, users can prevent overspending.
Increases transparency: A clear record of every transaction, categorized and timestamped, gives
users confidence in their budgeting strategy.
Supports goal setting: The app allows users to set financial goals and track progress effectively.
Academic Significance:
Applies key concepts of data persistence, querying, and real-time feedback mechanisms.
Demonstrates backend handling of user data using Node.js and Express.js.
Shows practical implementation of a NoSQL database (MongoDB) for semi-structured data.
Encourages modular design thinking through component-based architecture and RESTful APIs.
In essence, the project is a synergy of technology and personal empowerment, providing tangible
value to both users and developers.
1.4 Objectives
The project’s objectives are aimed at building a full-fledged financial tracker that is not only
functionally sound but also visually and technically robust. The main objectives include:
Functional Objectives:
To create a responsive and intuitive user interface for income and expense tracking.
To enable detailed categorization of expenses for better spending analysis.
To generate summary reports that include total income, expenses, and current balance.
To allow edit/delete operations on any record, supporting full CRUD functionality.
To implement a budget setting module that lets users define monthly limits.
Educational Objectives:
To explore and apply DBMS concepts such as schema design and query optimization.
To utilize backend development with Node.js and Express for handling APIs securely.
To implement a modular and scalable architecture suitable for future expansions.
1.5 Scope
The scope of the Smart Budget and Expense Tracker is comprehensive yet focused on usability and
modularity. It is designed to cover essential financial tracking needs while leaving room for
advanced future developments.
In-Scope Functionalities:
User Data Entry: Add income/expense entries with date, category, description, and amount.
Data Management: View, edit, and delete transaction records.
Budget Monitoring:
Set and adjust monthly budgets.
View remaining budget in real time.
Category Management: Track spending by category (e.g., Food, Rent, Utilities).
Graphical Analysis: Pie charts show distribution of expenses.
Alert System: Pop-up notifications when budget is nearly consumed.
Technical Scope:
Frontend Technologies: HTML, CSS, JS (optionally React)
Backend Technologies: Node.js, Express.js
Database: MongoDB with Mongoose schema modeling
Responsive Design: Works across desktops and mobile devices
Chapter 2
Requirements Analysis
2.1 Funtional Requirements
Functional requirements define the essential operations and features that the system must support.
For the Smart Budget and Expense Tracker, the core functional requirements include:
User Input for Financial Records: The system must allow users to add income and expense
records, including attributes such as amount, date, category, and description. These records
should be editable and deletable.
Category-Based Classification: Each financial transaction must be categorized (e.g., Food,
Transport, Bills, Entertainment), enabling easier analysis and filtering of data.
Budget Setting and Alerts: Users must be able to define monthly budgets. The system
should continuously monitor expenses and trigger an alert when the spending approaches a
specified threshold, such as 90% of the total budget.
Visual Reports: The application should generate visual reports like pie charts that show the
distribution of expenses by category. This helps users quickly interpret their spending
behavior.
Financial Summary: A dashboard must display summary statistics such as total income,
total expenses, and current balance.
Date-Based Filtering: Users should be able to filter transactions by day, week, or month to
view financial activity over a selected timeframe.
These functionalities ensure a complete user experience for managing and analyzing personal
finances efficiently while fulfilling the goal of promoting responsible budgeting behavior.
Portability: The application should be accessible across different devices, browsers, and
platforms. A responsive layout should ensure that users on mobile, tablet, or desktop can
access the tracker seamlessly.
Maintainability: The codebase should be modular and well-documented so that future
developers can easily understand and maintain or upgrade it.
Meeting these non-functional requirements ensures that the system is reliable, user-friendly, and
prepared for long-term usage.
Backend Development:
Node.js: for handling server-side logic.
Express.js: for routing and API management.
Database:
MongoDB: NoSQL database to store users' financial data, categories, and settings.
Mongoose (optional): for schema modeling and validation.
Visualization Tools:
Chart.js or Google Charts: for generating pie charts and graphical summaries.
Code Editor: Visual Studio Code or any IDE compatible with JavaScript, Node.js, and
MongoDB.
Browser: Google Chrome, Mozilla Firefox, or Microsoft Edge for testing UI responsiveness
and performance.
Hardware Requirements:
A computer with at least:
Intel i3 processor or higher
4 GB RAM (minimum)
512 MB graphics (optional, for smoother rendering)
Stable internet connection for using cloud database and packages
These requirements ensure that the system runs efficiently during development and meets the basic
conditions for deployment on a typical user’s machine.
Backend:
Node.js is chosen for its non-blocking, event-driven architecture, which is ideal for handling
real-time financial updates.
Express.js, a lightweight Node.js framework, is used to create RESTful APIs that manage
transactions, retrieve summaries, and communicate with the database securely and efficiently.
Database:
MongoDB is used for its flexibility in handling financial data. Its document-based structure
aligns well with transaction records and user-specific budgets. Collections for expenses,
income, users, and settings are designed for quick retrieval and analytics.
This technology stack supports modularity, scalability, and future enhancement, and it reflects a solid
understanding of full-stack development within the DBMS framework. It also allows seamless
integration of features like chart generation, budget alerts, and mobile responsiveness.
Chapter 3
Design
3.1 ER Diagram (UML Notation)
Categories:
{
_id: ObjectId,
name: String
}
Budgets:
{
_id: ObjectId,
userId: ObjectId,
month: String,
year: Number,
budgetAmount: Number
}
Alerts/Notifications:
Visual pop-ups or highlighted messages when expenses reach a critical threshold.
These mockups were initially designed on paper or tools like Figma/Balsamiq before coding. They
guide frontend developers in implementing consistent and user-friendly layouts, while also helping
testers understand expected behavior and navigation flow.
Chapter 4
Code and Implementation
4.1 Dashboard and Implementation
The dashboard is the central interface where users interact with their financial data. It provides an
overview of the user's income, expenses, balance, and budget utilization. The dashboard is the first
screen shown after successful login and is designed to be clean, user-friendly, and
responsive.Although full user authentication is considered a future enhancement, a basic version can
be simulated using session-based state handling for the current user during testing. The dashboard
includes:
A summary card showing Total Income, Total Expenses, and Current Balance
A budget tracker (progress bar or percentage indicator)
A pie chart showing expense distribution by category
A table or list displaying recent transactions
This structure ensures the user has a clear picture of their financial health at a glance.
Once submitted, the entry is validated and stored in the transactions collection in MongoDB.
// Example transaction object
{
userId: "abc123",
amount: 500,
type: "expense",
category: "Food",
description: "Dinner at restaurant",
date: "2025-05-15"
}
All fields are validated using both client-side JavaScript and server-side Express middleware.
Invalid entries are rejected, and users are prompted to correct inputs.
To make the spending pattern easily understandable, we implement a pie chart using libraries like
Chart.js or Google Charts. Each category’s total is calculated and passed to the chart renderer to
display the proportion of spending.
const categoryTotals = {
Food: 250,
Travel: 100,
Bills: 150,
Entertainment: 80
};
The chart is rendered on the dashboard and updates dynamically as transactions are added or
removed.
These values are calculated server-side and sent via API on page load.
These figures are updated in real-time and visually displayed in cards on the dashboard for clarity.
<?php
include('includes/db.php');
FROM budgets b
WHERE b.user_id = ?
GROUP BY b.category");
$stmt->execute([$user_id]);
$budgets = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<title>Budget Alerts</title>
</head>
<body>
<h1>Budget Alerts</h1>
<ul>
<li>
<?php
echo "Alert: You are nearing your budget limit for " .
htmlspecialchars($budget['category']) . "!";
} else {
?>
</li>
</ul>
</body>
</html>
<?php
include('includes/db.php');
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$user_id = $_SESSION['user_id'];
$category = $_POST['category'];
$amount = $_POST['amount'];
try {
$stmt->bindValue(1, $user_id);
$stmt->bindValue(2, $category);
$stmt->bindValue(3, $amount);
$stmt->execute();
} else {
?>
<!DOCTYPE html>
<html>
<head>
<title>Allocate Budget</title>
</head>
<body>
<h1>Allocate Budget</h1>
<form method="POST">
<label for="category">Category:</label>
<label for="amount">Amount:</label>
</form>
</body>
</html>
<?php
include('includes/db.php');
$stmt->execute([$currency_code]);
$rate = $stmt->fetchColumn();
$stmt->execute([$user_id]);
$budgets = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<title>Currency Conversion</title>
</head>
<body>
<form method="GET">
</select>
</form>
<table border="1">
<tr>
<th>Category</th>
<th>Budget (Converted)</th>
</tr>
<tr>
</tr>
</table>
</body>
</html>
<?php
include('includes/db.php');
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$type = $_POST['type'];
$category = $_POST['category'];
$amount = $_POST['amount'];
$date = $_POST['date'];
$notes = $_POST['notes'];
try {
} else {
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form method="POST">
<label for="type">Type:</label>
<option value="income">Income</option>
<option value="expense">Expense</option>
</select><br>
<label for="category">Category:</label>
<label for="amount">Amount:</label>
<label for="date">Date:</label>
<label for="notes">Notes:</label>
<textarea name="notes"></textarea><br>
</form>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header('Location: login.php');
exit;
if (isset($_SESSION['username'])) {
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<header>
<a href="logout.php">Logout</a>
</header>
<section>
</section>
<footer>
</footer>
</body>
</html>
<a href="logout.php">Logout</a>
<?php
session_start();
session_unset();
session_destroy();
header('Location: login.php');
exit;
<?php
include('includes/db.php');
session_start();
// Assigning weights to each month (Month 1: weight 1, Month 2: weight 2, Month 3: weight 3)
$query = "
SELECT category,
FROM transactions
GROUP BY category
";
$stmt = $pdo->prepare($query);
$stmt->execute([$user_id]);
$expenses = $stmt->fetchAll(PDO::FETCH_ASSOC);
$predictions = [];
$total_weight = 6; // (1 + 2 + 3)
$predictions[] = [
];
?>
<!DOCTYPE html>
<html>
<head>
<title>Expense Prediction</title>
</head>
<body>
<table border="1">
<tr>
<th>Category</th>
</tr>
<tr>
</tr>
</table>
</body>
</html>
<?php
include('includes/db.php');
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$email = $_POST['email'];
$stmt->execute([$email]);
if ($stmt->rowCount() > 0) {
} else {
$stmt = $pdo->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)");
?>
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<form method="POST">
<label for="username">Username:</label>
<label for="email">Email:</label>
<label for="password">Password:</label>
<button type="submit">Register</button>
</form>
</body>
</html>
<?php
include('includes/db.php');
$current_month = date('Y-m');
FROM transactions
GROUP BY category");
$stmt->execute([$user_id, $current_month]);
$transactions = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->execute([$user_id]);
$budgets = $stmt->fetchAll(PDO::FETCH_ASSOC);
$budget_map = [];
$budget_map[$budget['category']] = $budget['amount'];
?>
<!DOCTYPE html>
<html>
<head>
<title>Monthly Report</title>
</head>
<body>
<table border="1">
<tr>
<th>Category</th>
<th>Total Income</th>
<th>Total Expenses</th>
<th>Budget</th>
<th>Overbudget</th>
</tr>
<tr>
<td>
<?php
?>
</td>
</tr>
</table>
</body>
</html>
<?php
include('includes/db.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$categories = $_POST['categories'];
$amounts = $_POST['amounts'];
$date = $_POST['date'];
$notes = $_POST['notes'];
?>
<!DOCTYPE html>
<html>
<head>
<title>Split Expense</title>
</head>
<body>
<h1>Split Expense</h1>
<form method="POST">
<div id="expense-splitter">
<label for="date">Date:</label>
<label for="notes">Notes:</label>
<textarea name="notes"></textarea><br>
<div class="split-group">
<label for="categories[]">Category:</label>
<label for="amounts[]">Amount:</label>
</div>
<button type="submit">Submit</button>
</div>
</form>
<script>
function addSplit() {
document.querySelector('#expense-splitter').appendChild(splitGroup);
</script>
</body>
</html>
<?php
include('includes/db.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$transaction_id = $_POST['transaction_id'];
$notes = $_POST['notes'];
// Fetch transactions
$stmt = $pdo->prepare("SELECT id, category, amount, notes FROM transactions WHERE user_id =
?");
$stmt->execute([$user_id]);
$transactions = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form method="POST">
<select name="transaction_id">
</option>
</select><br>
<label for="notes">Notes:</label>
<textarea name="notes"></textarea><br>
</form>
</body>
</html>
CHAPTER 5
TESTING AND EVALUATION
Testing is a vital phase of any software development lifecycle. It ensures that the system functions as
expected and meets the requirements defined during the analysis phase. For the Smart Budget and
Expense Tracker, a black-box testing approach was followed, focusing on input/output behavior
rather than internal code logic.
Objectives of Testing:
Validate correctness of core functionalities like expense entry, budget setting, and summary
calculations.
Confirm user input validation (e.g., disallowing negative or empty values).
Ensure the Budget Alert System triggers correctly.
Check performance and responsiveness on multiple devices and browsers.
Verify pie chart and summary outputs reflect real-time data changes.
Testing Environments:
The test plan included unit testing of individual modules (e.g., add transaction), integration testing of
modules working together (e.g., expense entry + budget alert), and user acceptance testing (UAT) to
ensure overall satisfaction with the interface and logic.
CHAPTER 6
CONCLUSION
The development of the Smart Budget and Expense Tracker has been a highly educational and
transformative experience. Through this project, we gained hands-on experience with full-stack web
development and a deeper understanding of Database Management Systems (DBMS). Specifically,
we learned how to:
Design and implement an end-to-end web application using HTML, CSS, JavaScript,
Node.js, and Express.js.
Work with MongoDB, a NoSQL database, to store and retrieve structured financial data.
Implement CRUD operations and manage data models using Mongoose schema design.
Visualize financial data using tools like Chart.js for intuitive pie chart rendering.
Apply real-time monitoring through budget alerts and dynamic summary calculations.
We also became familiar with the importance of testing, debugging, and creating modular backend
APIs, which are crucial skills for modern software engineering. Importantly, this project highlighted
the value of user experience design (UX), especially in personal finance tools where clarity and
simplicity are essential.Overall, this mini-project not only improved our technical proficiency but
also emphasized the importance of problem-solving, teamwork, and iterative development.
The impact of the Smart Budget and Expense Tracker project can be observed on two fronts:
technical and societal.
Technical Impact:
Societal/User Impact:
The system helps users gain financial awareness and discipline by monitoring income and
expenses in real time.
Features like budget alerts and visual analysis encourage better spending habits.
By offering a free and simple-to-use tool, it promotes financial literacy, especially among
students and first-time earners.
In conclusion, the project reflects the potential of technology to solve everyday problems through
accessible and well-designed applications.
The Smart Budget and Expense Tracker is highly applicable in real-world scenarios, offering a
practical solution for individuals seeking better control over their finances. It is especially useful for
students, professionals, and small business owners who need a simple yet effective way to track
income and expenses. With features like real-time budget monitoring, visual insights through pie
charts, and customizable categories, the application promotes financial discipline. Its scalable and
modular architecture allows for future enhancements such as mobile support, report generation, and
multi-user access. With continued development, it has strong potential for deployment as a public
utility or educational tool.
CHAPTER 7
FUTURE ENHANCEMENTS
As a scalable and modular application, the Smart Budget and Expense Tracker offers a wide range of
possibilities for future development. While the current system fulfills the essential functions of
personal finance tracking, the following enhancements could significantly improve functionality,
user experience, and system robustness:
CHAPTER 8
SNIPSHOTS
Home page :
Login page :
Final outcomes