DEVELOPMENT OF A PERSONAL BUDGET TRACKER
Title Page
Project Title: Development of a Personal Budget Tracker
Course: Programming Project
Submitted by: [Aminu Usman]
Matric Number: [241080130017]
Department: [Computer and Information Technology]
Institution: [Iconic Open University]
Supervisor: [Mrs. fadimatu Muhammad Marafa]
Date:[Start Date Thu,May 15, 2025 End Date Thu, Jul 31, 2025
---
Table of Contents
1. Introduction
2. Problem Statement
3. Aims and Objectives
4. Scope of the Project
5. Methodology
6. System Analysis
7. System Design
8. Tools and Technologies Used
9. Implementation
10. Testing and Evaluation
11. Limitations
12. Conclusion
13. References
14. Appendix (Full Code)
---
1. Introduction
In today's world, many people struggle with tracking how they spend money. A Personal Budget
Tracker is a simple desktop application designed to help users manage their income and
expenses. This project aims to build a program using Python that provides an easy-to-use
interface where users can add entries, view summaries, and make better financial decisions.
---
2. Problem Statement
Many individuals still rely on paper, notebooks, or memory to record their spending. This
manual method leads to:
Errors in calculation
Forgetting expenses
Lack of summary or analysis
Poor financial planning
By developing a digital budget tracker, users can manage their money efficiently with automated
recording and visual charts.
---
3. Aims and Objectives
To develop a desktop application that tracks income and expenses.
To provide a user-friendly interface using Python's Tkinter.
To save user data using a local SQLite database.
To provide summary charts using Matplotlib.
---
4. Scope of the Project
This project covers the development of a simple budget tracking system where:
Users can input their income or expenses.
Each entry has a category and type.
Data is stored locally.
The app shows pie charts for better visualization.
This project is limited to personal use and does not include login/authentication or internet
features.
---
5. Methodology
The Agile software development methodology was followed. The steps include:
Requirement analysis
Design of interface
Code development using Python
Testing
Evaluation and feedback
---
6. System Analysis
The system has three main functions:
1. Input: User enters amount, selects type (income/expense), and category.
2. Storage: Data is saved in a local SQLite database.
3. Output: Data is visualized in the form of a pie chart showing category-wise summary.
---
7. System Design
The application interface includes:
Entry field for amount
Dropdowns for type (income/expense) and category
Buttons:
Add Entry: saves the record
Show Chart: displays a pie chart
Pie chart output using Matplotlib
---
8. Tools and Technologies Used
Tool Purpose
Python Programming Language
TkinterGUI (Graphical User Interface)
SQLite Local data storage
Matplotlib Data visualization (pie chart)
VS Code Code editor
---
9. Implementation
The app was built using Python and its built-in GUI library Tkinter.
Sample Steps in Code:
Create a database budget.db
Design a simple form using Tkinter
On clicking "Add Entry", data is saved to SQLite
On clicking "Show Chart", pie chart is generated using saved data
The code is structured in functions for adding entry, creating tables, and displaying charts.
---
10. Testing and Evaluation
The application was tested with different inputs. Results showed:
Data was saved correctly in the database.
The pie chart displayed accurate category summaries.
User interface was smooth and easy to navigate.
---
11. Limitations
No user login system
No export to Excel or PDF
Limited to desktop use only (no mobile version)
---
12. Conclusion
This project demonstrates how a simple budget tracking application can be useful in managing
personal finances. It is easy to use, stores data efficiently, and gives a visual summary of
spending. With future improvements, features like multi-user access and data export can be
added.
---
13. References
Python Official Docs - https://docs.python.org
Tkinter GUI Docs
SQLite3 Python Module
Matplotlib Library
---
14. Appendix: Full Code
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
import matplotlib.pyplot as plt
# Create database
conn = sqlite3.connect('budget.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS transactions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
amount REAL,
type TEXT,
category TEXT
)''')
conn.commit()
# Add Entry
def add_entry():
amount = amount_var.get()
ttype = type_var.get()
category = category_var.get()
if not amount or not ttype or not category:
messagebox.showerror("Error", "All fields are required")
return
c.execute("INSERT INTO transactions (amount, type, category) VALUES (?, ?, ?)",
(float(amount), ttype, category))
conn.commit()
messagebox.showinfo("Success", "Entry added successfully")
amount_var.set("")
# Show Pie Chart
def show_chart():
c.execute("SELECT category, SUM(amount) FROM transactions WHERE type='Expense'
GROUP BY category")
data = c.fetchall()
if data:
categories, amounts = zip(*data)
plt.pie(amounts, labels=categories, autopct='%1.1f%%')
plt.title('Expense Breakdown')
plt.show()
else:
messagebox.showinfo("Info", "No expense data to show")
# GUI
root = tk.Tk()
root.title("Personal Budget Tracker")
amount_var = tk.StringVar()
type_var = tk.StringVar()
category_var = tk.StringVar()
ttk.Label(root, text="Amount").grid(row=0, column=0)
ttk.Entry(root, textvariable=amount_var).grid(row=0, column=1)
ttk.Label(root, text="Type").grid(row=1, column=0)
ttk.Combobox(root, textvariable=type_var, values=["Income", "Expense"]).grid(row=1,
column=1)
ttk.Label(root, text="Category").grid(row=2, column=0)
ttk.Combobox(root, textvariable=category_var, values=["Food", "Transport", "Bills",
"Other"]).grid(row=2, column=1)
ttk.Button(root, text="Add Entry", command=add_entry).grid(row=3, column=0)
ttk.Button(root, text="Show Chart", command=show_chart).grid(row=3, column=1)
root.mainloop()
General observation
1. Refer back to the template shared in the group for your documentation. Your work
is disorganized and you are not doing what is expected of you to do.
2. No intext citation and references provided.
3. No UML diagrams provided.
4. Similar systems not reviewed.
5. The implementation and testing part is also missing.