From 6e9fe18de2c52ab24e86a5e052a637a4e14ff524 Mon Sep 17 00:00:00 2001 From: LONECODER1 Date: Fri, 14 Nov 2025 23:14:07 +0530 Subject: [PATCH] Invoice Generator added --- .../InvoiceGenerator.cpp | 322 ++++++++++++++++++ .../InvoiceGenerator.exe | Bin 0 -> 142025 bytes Src/Invoice_Generator_System/README.md | 78 +++++ .../invoices/index.txt | 5 + .../invoices/invoice_1001.txt | 18 + .../invoices/invoice_1002.txt | 18 + .../invoices/invoice_1003.txt | 18 + .../invoices/invoice_1004.txt | 14 + .../invoices/invoice_1005.txt | 14 + 9 files changed, 487 insertions(+) create mode 100644 Src/Invoice_Generator_System/InvoiceGenerator.cpp create mode 100644 Src/Invoice_Generator_System/InvoiceGenerator.exe create mode 100644 Src/Invoice_Generator_System/README.md create mode 100644 Src/Invoice_Generator_System/invoices/index.txt create mode 100644 Src/Invoice_Generator_System/invoices/invoice_1001.txt create mode 100644 Src/Invoice_Generator_System/invoices/invoice_1002.txt create mode 100644 Src/Invoice_Generator_System/invoices/invoice_1003.txt create mode 100644 Src/Invoice_Generator_System/invoices/invoice_1004.txt create mode 100644 Src/Invoice_Generator_System/invoices/invoice_1005.txt diff --git a/Src/Invoice_Generator_System/InvoiceGenerator.cpp b/Src/Invoice_Generator_System/InvoiceGenerator.cpp new file mode 100644 index 0000000..ca52aa2 --- /dev/null +++ b/Src/Invoice_Generator_System/InvoiceGenerator.cpp @@ -0,0 +1,322 @@ +// InvoiceGenerator.cpp +// Works on Dev-C++, Old MinGW, Linux, Windows +// Compile: g++ InvoiceGenerator.cpp -o InvoiceGenerator + +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#include // for _mkdir +#else +#include // for mkdir +#endif + +using namespace std; + +// ----------- Utility: Create Directory ------------- +void makeDirectory(const string &dirName) +{ +#ifdef _WIN32 + _mkdir(dirName.c_str()); // Windows +#else + mkdir(dirName.c_str(), 0777); // Linux +#endif +} + +// Check if file exists +bool fileExists(const string &filename) +{ + ifstream f(filename.c_str()); + return f.good(); +} + +// ----------- Item Class ------------- +class Item +{ +public: + string name; + int quantity; + double price; + + Item() : quantity(0), price(0) {} + + Item(string n, int q, double p) + : name(n), quantity(q), price(p) {} + + double getTotal() const + { + return quantity * price; + } +}; + +// ----------- Invoice Class ------------- +class Invoice +{ +public: + int invoiceID; + string customerName; + vector items; + double subtotal, tax, total; + double taxRate; // NEW: user-entered tax rate % + + Invoice(int id, string cname, double tr) + : invoiceID(id), customerName(cname), subtotal(0), + tax(0), total(0), taxRate(tr) {} + + void addItem(const Item &it) + { + items.push_back(it); + } + + void calculateTotals() + { + subtotal = 0; + for (auto &it : items) + subtotal += it.getTotal(); + + tax = subtotal * (taxRate / 100.0); + total = subtotal + tax; + } + + string filename() const + { + return "invoices/invoice_" + to_string(invoiceID) + ".txt"; + } + + void saveToFile() + { + makeDirectory("invoices"); + + ofstream out(filename().c_str()); + if (!out) + { + cout << "Error saving invoice file!\n"; + return; + } + + out << "----------------------------------------\n"; + out << "Invoice ID: " << invoiceID << "\n"; + out << "Customer Name: " << customerName << "\n"; + out << "----------------------------------------\n\n"; + + out << left << setw(20) << "Item Name" + << setw(10) << "Qty" + << setw(10) << "Price" + << setw(10) << "Total" << "\n"; + out << "--------------------------------------------------\n"; + + for (auto &it : items) + { + out << left << setw(20) << it.name + << setw(10) << it.quantity + << setw(10) << fixed << setprecision(2) << it.price + << setw(10) << fixed << setprecision(2) << it.getTotal() + << "\n"; + } + + out << "--------------------------------------------------\n\n"; + out << "Subtotal: " << subtotal << "\n"; + out << "Tax (" << taxRate << "%): " << tax << "\n"; + out << "Total: " << total << "\n"; + out << "----------------------------------------\n"; + + out.close(); + } +}; + +// ----------- Invoice Manager ------------- +class InvoiceManager +{ +public: + string indexFile; + + InvoiceManager() + { + indexFile = "invoices/index.txt"; + makeDirectory("invoices"); + + if (!fileExists(indexFile)) + { + ofstream make(indexFile.c_str()); + make.close(); + } + } + + int generateID() + { + ifstream f(indexFile.c_str()); + string line; + int maxID = 1000; + + while (getline(f, line)) + { + if (line.empty()) + continue; + + stringstream ss(line); + string idStr; + getline(ss, idStr, '|'); + + int id = stoi(idStr); + if (id > maxID) + maxID = id; + } + return maxID + 1; + } + + void saveToIndex(int id, string cname, string fname) + { + ofstream f(indexFile.c_str(), ios::app); + f << id << "|" << cname << "|" << fname << "\n"; + f.close(); + } + + void createInvoice() + { + cin.ignore(); + cout << "Enter customer name: "; + string cname; + getline(cin, cname); + + cout << "Enter tax percentage (%): "; + double taxPercent; + cin >> taxPercent; + cin.ignore(); + + int id = generateID(); + Invoice inv(id, cname, taxPercent); + + while (true) + { + cout << "\nEnter item name (leave blank to finish): "; + string iname; + getline(cin, iname); + + if (iname.empty()) + break; + + cout << "Quantity: "; + int qty; + cin >> qty; + + cout << "Price: "; + double price; + cin >> price; + cin.ignore(); + + inv.addItem(Item(iname, qty, price)); + } + + if (inv.items.empty()) + { + cout << "No items added. Invoice cancelled.\n"; + return; + } + + inv.calculateTotals(); + inv.saveToFile(); + + saveToIndex(inv.invoiceID, inv.customerName, inv.filename()); + + cout << "\nInvoice created and saved successfully!\n"; + } + + void viewInvoiceByID() + { + cout << "Enter Invoice ID: "; + int id; + cin >> id; + + ifstream f(indexFile.c_str()); + string line; + + while (getline(f, line)) + { + stringstream ss(line); + string idStr, cname, fname; + + getline(ss, idStr, '|'); + getline(ss, cname, '|'); + getline(ss, fname, '|'); + + if (stoi(idStr) == id) + { + ifstream invFile(fname.c_str()); + cout << "\n----- Invoice Content -----\n\n"; + string ln; + while (getline(invFile, ln)) + cout << ln << "\n"; + return; + } + } + + cout << "Invoice not found!\n"; + } + + void showAllInvoices() + { + ifstream f(indexFile.c_str()); + string line; + + cout << "\nStored Invoices:\n"; + cout << "-------------------------------------------\n"; + + while (getline(f, line)) + { + if (line.empty()) + continue; + + stringstream ss(line); + string id, cname, fname; + getline(ss, id, '|'); + getline(ss, cname, '|'); + getline(ss, fname, '|'); + + cout << "ID: " << id << " | Name: " << cname + << " | File: " << fname << "\n"; + } + } +}; + +// ----------- MAIN MENU ------------- +int main() +{ + InvoiceManager manager; + + while (true) + { + cout << "\n----------------------------------------\n"; + cout << " INVOICE GENERATOR SYSTEM \n"; + cout << "----------------------------------------\n"; + cout << "1. Create Invoice\n"; + cout << "2. View Invoice by ID\n"; + cout << "3. Show All Invoices\n"; + cout << "4. Exit\n"; + cout << "Enter choice: "; + + int choice; + cin >> choice; + + switch (choice) + { + case 1: + manager.createInvoice(); + break; + case 2: + manager.viewInvoiceByID(); + break; + case 3: + manager.showAllInvoices(); + break; + case 4: + cout << "Exiting...\n"; + return 0; + default: + cout << "Invalid choice!\n"; + } + } +} diff --git a/Src/Invoice_Generator_System/InvoiceGenerator.exe b/Src/Invoice_Generator_System/InvoiceGenerator.exe new file mode 100644 index 0000000000000000000000000000000000000000..fcae9fbff9765e87cc37b5f82316dd47c7992848 GIT binary patch literal 142025 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 literal 0 HcmV?d00001 diff --git a/Src/Invoice_Generator_System/README.md b/Src/Invoice_Generator_System/README.md new file mode 100644 index 0000000..448735e --- /dev/null +++ b/Src/Invoice_Generator_System/README.md @@ -0,0 +1,78 @@ +# Invoice Generator --- User Guide + +This document explains how to run and use the Invoice Generator System. + +------------------------------------------------------------------------ + +## Menu Options + + 1. Create Invoice + 2. View Invoice by ID + 3. Show All Invoices + 4. Exit + Enter choice: + +------------------------------------------------------------------------ + +## 1. Create Invoice + +### Steps: + +1. Enter customer name\ +2. Add items one by one: + - Enter item name\ + - Enter quantity\ + - Enter price\ +3. To finish adding items, **press ENTER on an empty item name** + +### Example: + + Enter customer name: Aditya Gupta + + Enter item name (leave blank to finish): Biscuits + Quantity: 3 + Price: 300 + + Enter item name (leave blank to finish): + +After this, the invoice is saved automatically. + +------------------------------------------------------------------------ + +## 2. View Invoice by ID + +Enter: + + Enter invoice ID: 1001 + +------------------------------------------------------------------------ + +## 🗂 3. Show All Invoices + +Displays all invoice IDs stored in `index.txt`. + +------------------------------------------------------------------------ + +## Project Structure + + project/ + InvoiceGenerator.cpp + index.txt + invoices/ + invoice_1001.txt + invoice_1002.txt + +------------------------------------------------------------------------ + +## ✔ Adding Sample Data + +Place sample invoices in the `invoices/` folder and update `index.txt`. + +------------------------------------------------------------------------ + +## You're Ready! + +- Create invoices\ +- View invoices\ +- Store invoices\ +- List all saved invoices diff --git a/Src/Invoice_Generator_System/invoices/index.txt b/Src/Invoice_Generator_System/invoices/index.txt new file mode 100644 index 0000000..89e5161 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/index.txt @@ -0,0 +1,5 @@ +1001|Test Customer|invoices/invoice_1001.txt +1002|Rohan Sharma|invoices/invoice_1002.txt +1003|Priya Verma|invoices/invoice_1003.txt +1004|Aditya Gupta|invoices/invoice_1004.txt +1005|Rakshesh Singh Rajput|invoices/invoice_1005.txt diff --git a/Src/Invoice_Generator_System/invoices/invoice_1001.txt b/Src/Invoice_Generator_System/invoices/invoice_1001.txt new file mode 100644 index 0000000..c8d1449 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/invoice_1001.txt @@ -0,0 +1,18 @@ +---------------------------------------- +Invoice ID: 1001 +Customer Name: Test Customer +Date: 2025-11-14 12:00:00 +---------------------------------------- + +Item Name Qty Price Total +-------------------------------------------------------------- +Pen 2 10.00 20.00 +Notebook 1 50.00 50.00 +Pencil 5 5.00 25.00 +-------------------------------------------------------------- + +Subtotal: 95.00 +Tax (18%): 17.10 +Total: 112.10 + +---------------------------------------- diff --git a/Src/Invoice_Generator_System/invoices/invoice_1002.txt b/Src/Invoice_Generator_System/invoices/invoice_1002.txt new file mode 100644 index 0000000..dbb9a97 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/invoice_1002.txt @@ -0,0 +1,18 @@ +---------------------------------------- +Invoice ID: 1002 +Customer Name: Rohan Sharma +Date: 2025-11-14 12:30:00 +---------------------------------------- + +Item Name Qty Price Total +-------------------------------------------------------------- +USB Cable 1 150.00 150.00 +Charger 1 350.00 350.00 +Earphones 2 200.00 400.00 +-------------------------------------------------------------- + +Subtotal: 900.00 +Tax (18%): 162.00 +Total: 1062.00 + +---------------------------------------- diff --git a/Src/Invoice_Generator_System/invoices/invoice_1003.txt b/Src/Invoice_Generator_System/invoices/invoice_1003.txt new file mode 100644 index 0000000..28fd0a3 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/invoice_1003.txt @@ -0,0 +1,18 @@ +---------------------------------------- +Invoice ID: 1003 +Customer Name: Priya Verma +Date: 2025-11-14 13:15:00 +---------------------------------------- + +Item Name Qty Price Total +-------------------------------------------------------------- +Shampoo 1 120.00 120.00 +Soap 4 25.00 100.00 +Face Wash 1 180.00 180.00 +-------------------------------------------------------------- + +Subtotal: 400.00 +Tax (18%): 72.00 +Total: 472.00 + +---------------------------------------- diff --git a/Src/Invoice_Generator_System/invoices/invoice_1004.txt b/Src/Invoice_Generator_System/invoices/invoice_1004.txt new file mode 100644 index 0000000..8479837 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/invoice_1004.txt @@ -0,0 +1,14 @@ +---------------------------------------- +Invoice ID: 1004 +Customer Name: Aditya Gupta +---------------------------------------- + +Item Name Qty Price Total +-------------------------------------------------- +Biscuits 3 300.00 900.00 +-------------------------------------------------- + +Subtotal: 900.00 +Tax (18%): 162.00 +Total: 1062.00 +---------------------------------------- diff --git a/Src/Invoice_Generator_System/invoices/invoice_1005.txt b/Src/Invoice_Generator_System/invoices/invoice_1005.txt new file mode 100644 index 0000000..e6d0b03 --- /dev/null +++ b/Src/Invoice_Generator_System/invoices/invoice_1005.txt @@ -0,0 +1,14 @@ +---------------------------------------- +Invoice ID: 1005 +Customer Name: Rakshesh Singh Rajput +---------------------------------------- + +Item Name Qty Price Total +-------------------------------------------------- +Wine 2 3000.00 6000.00 +-------------------------------------------------- + +Subtotal: 6000.00 +Tax (40.00%): 2400.00 +Total: 8400.00 +----------------------------------------