DAILY EXPENSES
Submitted in partial fulfilment of the requirements for the award of
the degree of B. Voc. in Software Development
Semester-VI
DEPARTMENT OF B. VOC. (SOFTWARE DEVEOPMENT)
Guide: Submitted by:
Dr. Kalyan C. Jagdale Kamlesh Chandrashekhar Asolkar
Roll No.:81205
Submitted To
P.D.E.A.’s
Prof. Ramkrishna More Arts, Commerce and Science College, Akurdi, Pune-44.
(AUTONOMOUS) Affiliated To
Savitribai Phule Pune University, Ganeshkhind, Pune-411033
P.D.E.A.’s
Prof. Ramkrishna More Arts, Commerce and Science College, Akurdi, Pune-44.
(AUTONOMOUS)
CERTIFICATE
This is to certify that this project entitled “DAILY EXPENSES” submitted in partial fulfilment of
the degree of BACHELOR IN VOCATION (Software Development) Semester-VI for the
academic year 2024-25 to the P.D.E.A.’s Prof. Ramkrishna More Arts, Commerce and Science
College, Akurdi, Pune-44 ( AUTONOMOUS ) through the Department of B. Voc. (Software
Development), done by Mr./Mrs. “Kamlesh Chandrashekhar Asolkar”, Roll No. 81205 is an
authentic work carried out by him/her at P.D.E.A.’s Prof. Ramkrishna More Arts, Commerce and
Science College, Akurdi, Pune-44 under my guidance. The matter embodied in this project work
has not been submitted earlier for award of any degree or diploma to the best of my knowledge
and belief.
Dr. Kalyan C. Jagdale Dr. Kalyan C. Jagdale
Project Guide Head of the Department
Internal Examiner External Examiner Principal
SELF CERTIFICATE
This is to certify that the project report entitled “DAILY EXPENSES” is done by
me is an authentic work carried out for the partial fulfilment of the requirements for
the award of the degree of B. Voc. in Software Development under the guidance of
Dr. Kalyan C. Jagdale. The matter embodied in this project work has not been
submitted earlier for award of any degree or diploma to the best of my knowledge
and belief.
Signature of the Student:
Name of the Student: Kamlesh C. Asolkar
Roll No:81205
ACKNOWLEDGEMENT
I take this occasion to thank God, almighty for blessing us with his grace and
taking our endeavour to a successful culmination. I extend my sincere and heartfelt
thanks to our esteemed guide, Dr. Kalyan C. Jagdale, for providing me with the
right guidance and advice at the crucial junctures and for showing me the right way.
I extend my sincere thanks to our respected Head of the division Dr. Kalyan C.
Jagdale, for allowing us to use the facilities available. I would like to thank the
other faculty members also, at this occasion. Last but not the least, I would like to
thank my friends and family for the support and encouragement they have given me
during the course of our work.
KAMLESH CHANDRASHEKHAR ASOLKAR
Index
1 Introduction
a. Existing System
b. Need for System
c. Objective & Scope of the Project
d. Details of Hardware & Software used
2 System Analysis & Design
a. Use Case Diagram
b. ERD (Entity Relationship Diagram)
c. DFD (Data Flow Diagram)
d. Class Diagram
e. Activity Diagram
f. Collaboration Diagram
g. Sequence Diagram
h. System Planning (PERT Chart if applicable)
i. Component and Deployment Diagram (if necessary)
3 Implementation
a. Input and Output Screen Design
b. Process involved
4 Printout of the Code Sheet
5 Future Enhancements and Conclusion
Introduction
Managing expenses efficiently is a crucial aspect of financial planning for
both individuals and businesses. Traditional methods of expense tracking,
such as maintaining handwritten records or using spreadsheets, can be
cumbersome and error-prone. The Expense Diary application aims to
provide a user-friendly, efficient, and automated solution for tracking
and analysing expenses.
This project is developed using Java and a suitable framework to create a
desktop or web-based application that allows users to log expenses,
categorize transactions, generate financial reports, and gain insights into
their spending patterns. By leveraging modern Java technologies, the
system will offer a secure, scalable, and intuitive expense management
experience.
Existing System
Currently, many individuals and businesses rely on traditional expense-
tracking methods, such as:
• Paper-based records, which are prone to damage and difficult to
manage.
• Spreadsheets, which require manual data entry and lack automation.
• Generic financial software, which may be overly complex or
expensive.
These existing systems often fail to provide real-time tracking,
automation, and insightful analytics, making financial management time-
consuming and inefficient.
Need for System
A dedicated Expense Diary application is needed to address these
challenges by:
• Providing an easy-to-use digital platform for tracking expenses.
• Automating the categorization and analysis of financial data.
• Offering reporting and visualization tools to help users make
better financial decisions.
• Ensuring data security through proper authentication and storage
mechanisms.
Objective & Scope of the Project
Objective
The objective of this project is to design and develop a Java-based
expense tracking application that simplifies personal and business
financial management. It will offer features such as expense logging,
filtering, analytics, budgeting tools, and report generation.
Scope
• Development of a desktop/web-based application using a Java
framework.
• Implementation of a user-friendly interface for seamless interaction.
• Secure database storage for expense records (MySQL, PostgreSQL, or
SQLite).
• Features such as multi-user support, financial reports, and data
export options.
• Future enhancements including AI-driven financial insights and
cloud synchronization.
Details of Hardware & Software used
Hardware Requirements
• Processor: Minimum Intel i3 or equivalent
• RAM: At least 4GB
• Storage: Minimum 20GB of free space
• Operating System: Windows/Linux/MacOS
Software Requirements
• Programming Language: Java
• Framework: (Spring Boot / JavaFX / Hibernate) (Choose based on
your project needs)
• Database: MySQL / PostgreSQL / SQLite
• Development Environment: IntelliJ IDEA / Eclipse / NetBeans
USE CASE DIAGRAM
CLASS DIAGRAM
ACTIVITY DIAGRAM
SEQUENCE DIAGRAM
Implementation
Opening Window
Add Monthly Salary
Add Expense Description and Amount
Save Excel File
Code Sheet
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
class Expense {
private String description;
private double amount;
private String dateTime;
public Expense(String description, double amount, String dateTime) {
this.description = description;
this.amount = amount;
this.dateTime = dateTime;
}
public String getDescription() {
return description;
}
public double getAmount() {
return amount;
}
public String getDateTime() {
return dateTime;
}
}
public class DailyExpensesDiary {
private JFrame frame;
private JTextField descriptionField, amountField, salaryField, remainingSalaryField;
private JTable expenseTable;
private DefaultTableModel tableModel;
private ArrayList<Expense> expenses;
private double monthlySalary = 0;
public DailyExpensesDiary() {
expenses = new ArrayList<>();
frame = new JFrame("Daily Expenses Diary");
frame.setSize(600, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
JPanel inputPanel = new JPanel(new GridLayout(4, 2, 5, 5));
inputPanel.add(new JLabel("Monthly Salary:"));
salaryField = new JTextField();
inputPanel.add(salaryField);
JButton setSalaryButton = new JButton("Set Salary");
inputPanel.add(setSalaryButton);
inputPanel.add(new JLabel("Expense Description:"));
descriptionField = new JTextField();
inputPanel.add(descriptionField);
inputPanel.add(new JLabel("Amount:"));
amountField = new JTextField();
inputPanel.add(amountField);
inputPanel.add(new JLabel("Remaining Salary:"));
remainingSalaryField = new JTextField();
remainingSalaryField.setEditable(false);
inputPanel.add(remainingSalaryField);
JPanel buttonPanel = new JPanel(new GridLayout(1, 3, 5, 5));
JButton addButton = new JButton("Add Expense");
JButton saveButton = new JButton("Save to Excel");
buttonPanel.add(addButton);
buttonPanel.add(saveButton);
String[] columnNames = {"Date/Time", "Description", "Amount"};
tableModel = new DefaultTableModel(columnNames, 0);
expenseTable = new JTable(tableModel);
frame.add(inputPanel, BorderLayout.NORTH);
frame.add(new JScrollPane(expenseTable), BorderLayout.CENTER);
frame.add(buttonPanel, BorderLayout.SOUTH);
setSalaryButton.addActionListener(e -> setSalary());
addButton.addActionListener(e -> addExpense());
saveButton.addActionListener(e -> saveToExcel());
amountField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
addExpense();
}
}
});
salaryField.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
setSalary();
}
}
});
frame.setVisible(true);
}
private void setSalary() {
try {
monthlySalary = Double.parseDouble(salaryField.getText());
updateRemainingSalary();
JOptionPane.showMessageDialog(frame, "Monthly Salary set successfully!");
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "Please enter a valid salary amount.",
"Error", JOptionPane.ERROR_MESSAGE);
}
}
private void addExpense() {
String description = descriptionField.getText();
double amount;
try {
amount = Double.parseDouble(amountField.getText());
} catch (NumberFormatException e) {
JOptionPane.showMessageDialog(frame, "Please enter a valid amount.", "Error",
JOptionPane.ERROR_MESSAGE);
return;
}
String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new
Date());
expenses.add(new Expense(description, amount, dateTime));
tableModel.addRow(new Object[]{dateTime, description, amount});
descriptionField.setText("");
amountField.setText("");
updateRemainingSalary();
JOptionPane.showMessageDialog(frame, "Expense added successfully!");
}
private void updateRemainingSalary() {
double totalExpenses = 0;
for (Expense expense : expenses) {
totalExpenses += expense.getAmount();
}
double remaining = monthlySalary - totalExpenses;
remainingSalaryField.setText("RS " + remaining);
}
private void saveToExcel() {
try {
File file = new File("Expenses.csv");
FileWriter writer = new FileWriter(file);
writer.write("Date/Time,Description,Amount,Salary,Remaining Balance\n");
double remainingBalance = monthlySalary;
for (Expense expense : expenses) {
remainingBalance -= expense.getAmount();
writer.write(expense.getDateTime() + "," + expense.getDescription() + "," +
expense.getAmount() + "," + monthlySalary + "," + remainingBalance + "\n");
}
writer.close();
JOptionPane.showMessageDialog(frame, "Expenses saved to Expenses.csv
successfully!");
} catch (IOException e) {
JOptionPane.showMessageDialog(frame, "Error saving file.", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String[] args) { new DailyExpensesDiary();
}
}
Future Enhancements
The Expense Diary System can be further improved with the
following enhancements:
1. AI-Based Expense Analysis
o Implement machine learning algorithms to analyze
spending patterns and provide insights for better financial
planning.
2. Integration with Bank Accounts
o Allow users to sync their bank accounts for automatic
transaction tracking.
3. Multi-User Collaboration
o Enable shared expense tracking for families, businesses, or
teams.
4. Voice Input and OCR for Receipts
o Implement voice commands and Optical Character
Recognition (OCR) to automatically capture expenses from
receipts.
5. Cloud Backup and Cross-Platform Support
o Ensure data is securely stored in the cloud, allowing access
from multiple devices.
6. Budgeting and Forecasting
o Introduce features that help users set budgets and predict
future expenses.
7. Export to PDF/Excel
o Provide advanced reporting options for exporting expense
reports in various formats.
Conclusion
The Expense Diary System is designed to simplify personal
finance management by allowing users to efficiently track,
manage, and analyze their expenses. With features like expense
logging, report generation, and financial insights, the system
serves as a valuable tool for budget-conscious individuals.
Future enhancements will further improve its usability,
automation, and intelligence, making financial management
even more seamless. This project lays the foundation for a more
advanced expense-tracking solution that can evolve based on
user needs and technological advancements.