#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Structure to represent an expense
struct Expense {
char category[50];
float amount;
char date[11]; // Assuming the date format is YYYY-MM-DD
};
// Function to enter expenses
void enterExpenses(struct Expense *expenses, int *numExpenses) {
printf("Enter Expenses:\n");
printf("Enter expense category (food, transportation, housing, entertainment): ");
scanf("%s", expenses[*numExpenses].category);
printf("Enter expense amount: ");
scanf("%f", &expenses[*numExpenses].amount);
printf("Enter expense date (YYYY-MM-DD): ");
scanf("%s", expenses[*numExpenses].date);
(*numExpenses)++;
printf("Expense added successfully!\n\n");
}
// Function to list expenses for a given period
void listExpenses(struct Expense *expenses, int numExpenses, char startDate[11], char endDate[11]) {
printf("List of Expenses from %s to %s:\n", startDate, endDate);
float totalExpenses = 0;
for (int i = 0; i < numExpenses; i++) {
if (strcmp(expenses[i].date, startDate) >= 0 && strcmp(expenses[i].date, endDate) <= 0) {
printf("%s - %s: $%.2f\n", expenses[i].date, expenses[i].category, expenses[i].amount);
totalExpenses += expenses[i].amount;
}
}
printf("\nTotal Expenses: $%.2f\n\n", totalExpenses);
}
// Function to calculate and display total expenses by month in a year
void statisticTotalExpensesByMonth(struct Expense *expenses, int numExpenses, char year[5]) {
printf("Total Expenses by Month in %s:\n", year);
float monthlyTotals[12] = {0};
for (int i = 0; i < numExpenses; i++) {
if (strncmp(expenses[i].date, year, 4) == 0) {
int month = atoi(expenses[i].date + 5); // Extracting month from the date
monthlyTotals[month - 1] += expenses[i].amount;
}
}
for (int i = 0; i < 12; i++) {
printf("Month %d: $%.2f\n", i + 1, monthlyTotals[i]);
}
}
int main() {
struct Expense expenses[100]; // Assuming a maximum of 100 expenses
int numExpenses = 0;
while (1) {
printf("Personal Finance Management Program:\n");
printf("1. Enter Expenses\n");
printf("2. List Expenses for a Given Period\n");
printf("3. Statistic Total Expenses by Month in a Year\n");
printf("4. Exit\n");
int choice;
printf("Enter your choice (1-4): ");
scanf("%d", &choice);
switch (choice) {
case 1:
enterExpenses(expenses, &numExpenses);
break;
case 2: {
char startDate[11], endDate[11];
printf("Enter start date (YYYY-MM-DD): ");
scanf("%s", startDate);
printf("Enter end date (YYYY-MM-DD): ");
scanf("%s", endDate);
listExpenses(expenses, numExpenses, startDate, endDate);
break;
}
case 3: {
char year[5];
printf("Enter the year: ");
scanf("%s", year);
statisticTotalExpensesByMonth(expenses, numExpenses, year);
break;
}
case 4:
printf("Exiting the program. Goodbye!\n");
exit(0);
default:
printf("Invalid choice. Please enter a number between 1 and 4.\n\n");
}
}
return 0;
}
Posts