Write a C++ program to print the bill of various items. Including GST

 #include <iostream>

#include <vector>

#include <string>

#include <ctime>


class Item

{

public:

    std::string name;

    int quantity;

    float price;

    Item(std::string name, int quantity, float price) : name(name), quantity(quantity), price(price) {}

};


class Invoice

{

private:

    std::vector<Item> items;

    float gst;

    float total;


public:

    Invoice() : gst(0.15) {}

    void addItem()

    {

        int n;

        std::cout << "Enter the number of items: ";

        std::cin >> n;

        system("clear");

        for (int i = 0; i < n; i++)

        {

            std::string name;

            int quantity;

            float price;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " name: ";

            std::cin >> name;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " quantity: ";

            std::cin >> quantity;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " unit price: ";

            std::cin >> price;

            Item item(name, quantity, price);

            items.push_back(item);

            system("clear");

        }

    }

    void generateInvoice()

    {

        std::cout << "-----------------------------------------\n";

        std::cout << "ITEM\t\tQUANTITY\tPRICE\n";

        std::cout << "-----------------------------------------\n";

        for (auto item : items)

        {

            total += item.quantity * item.price;

            std::cout << item.name << "\t\t" << item.quantity << "\t\t" << item.price * item.quantity << std::endl;

        }

        total = total + total * gst;

        std::cout << "-----------------------------------------\n";

        std::cout << "CGST @15%\t\t\t" << total * gst << std::endl;

        std::cout << "Total\t\t\t\t" << total << std::endl;

        std::cout << "-----------------------------------------\n";

        std::cout << "\n\nPress any key and then Enter to exit ";

        std::string c;

        std::cin >> c;


        system("clear");

    }

};


class AdvanceInvoice : public Invoice

{

private:

    std::vector<Item> items;

    float gst;

    float sgst;

    float total;


public:

    AdvanceInvoice() : gst(0.075), sgst(0.075) {}

    void addItem()

    {

        int n;

        std::cout << "Enter the number of items: ";

        std::cin >> n;

        system("clear");

        for (int i = 0; i < n; i++)

        {

            std::string name;

            int quantity;

            float price;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " name: ";

            std::cin >> name;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " quantity: ";

            std::cin >> quantity;

            std::cout << "------------------------------------\n";

            std::cout << "Enter item " << i + 1 << " unit price: ";

            std::cin >> price;

            Item item(name, quantity, price);

            items.push_back(item);

            system("clear");

        }

    }

    void generateInvoice()

    {

        std::cout << "-----------------------------------------\n";

        std::cout << "ITEM\t\tQUANTITY\tPRICE\n";

        std::cout << "-----------------------------------------\n";

        for (auto item : items)

        {

            total += item.quantity * item.price;

            std::cout << item.name << "\t\t" << item.quantity << "\t\t" << item.price * item.quantity << std::endl;

        }

        total = total + total * gst + total * sgst;

        std::cout << "-----------------------------------------\n";

        std::cout << "SGST @7.5%\t\t\t" << total * sgst << std::endl;

        std::cout << "CGST @7.5%\t\t\t" << total * gst << std::endl;

        std::cout << "Total\t\t\t\t" << total << std::endl;

        std::cout << "-----------------------------------------\n";

        std::cout << "\n\nPress any key and then Enter to exit ";

        std::string c;

        std::cin >> c;


        system("clear");

    }

};





int main()

{

    AdvanceInvoice invoice;

    int choice;

    std::string c_name = "";

    do

    {


        std::cout << "------------------------------------\n";

        std::cout << "\tInvoice Generator\n";

        std::cout << "------------------------------------\n";

        std::cout << "Menu:\n1. Add details\n2. Generate invoice\n3. Exit"

                  << "\n------------------------------------\n"

                  << "Enter your choice: ";

        std::cin >> choice;


        switch (choice)

        {

        case 1:

        {

            system("clear");

            std::cout << "------------------------------------\n";

            std::cout << "Enter coustomer name: ";


            std::cin >> c_name;


            invoice.addItem();

            break;

        }

        case 2:

        {

            system("clear");

            std::cout << "-----------------------------------------\n";

            std::cout << "Invoice to: " << c_name << "\n";

            std::time_t t = std::time(nullptr);

            std::tm *now = std::localtime(&t);

            std::cout << "Date: " << now->tm_mday << '/' << (now->tm_mon + 1) << '/'

                      << (now->tm_year + 1900) << std::endl;

            invoice.generateInvoice();

            break;

        }

        case 3:

        {

            break;

        }

        default:

        {

            system("clear");

            std::cout << "Invalid choice\n";

            break;

        }

        }

    } while (choice != 3);

    return 0;

}

Comments

Post a Comment

Popular posts from this blog

Data Mining || Supervised vs. Unsupervised Techniques || Dimensionality Reduction || Partitioning Methods

What does one mean by exothermic and endothermic reactions? Give examples.

Vectors important questions of physics || Important question of PHYSICS || Important question of Basic Mathematics || MOTION IN A PLANE || Physics||

2.0 gram of a metal burst in oxygen give 3.2 gram of its oxide. 1.42 gram of the same metal heat in steam give 2.27 gram of its oxide which toys shown by this data?

Kinematics Important Questions Of Physics