如何在2个不同的寄存器上记录2个订单的多个输入?

时间:2015-02-27 05:42:14

标签: c++ class constructor member-functions

Hal的销售工具是:     锤子:10.99美元     扳手:10.99美元     级别:19.99美元     卷尺:4.99美元     螺丝刀:8.99美元

为了使事情变得更容易从长远来看,你已经决定制作一个c ++程序,它接受每个寄存器的所有订单并在一天结束时计算它们。

编写一个执行以下操作的c ++程序:

  1. 创建一个Register类,可以存储当天的所有收据以及该寄存器的总数。

    此类可以具有以下成员函数:

    Contructor(int) - 根据传递给构造函数的整数创建一些收据(这是寄存器可以采用的最大订单数)。您可能还需要创建其他变量以使程序正常工作,但由您决定。

    void getorder() - 询问用户他们想要在第一张可用收据中存储商店的数量。

    void returnreceipts() - 此函数返回所有收据的详细信息以及当天的总数。

    寄存器操作符+(const寄存器和右) - 这是一个重载的加法运算符。当两个对象一起添加时,将创建一个空的临时寄存器(带有0个收据),并且只添加两个对象的总数。临时寄存器由函数返回。

    Register operator =(const Register& right) - 这个重载的赋值运算符只复制右边Object的总数。

    在主要功能中我想:

  2. 创建3个注册对象。前两个寄存器是商店中的寄存器,应初始化为10个订单。第三个是在关闭时使用的,可以用0个收据初始化,因为它只会从其他寄存器中获取总数。

  3. 两次运行寄存器1和2的getorder功能。
  4. 为寄存器1和寄存器2运行returnreceipts。
  5. REG3 = Reg1中+ Reg2中;
  6. 为寄存器3运行returnreceipts。
  7. `

      #include <iostream>
        #include <iomanip>
    
    using namespace std;
    
    class Register
    {
        public:
    
            void returnreceipts();
            void getorder();
        Register(int numReceipt)
        {
            numReceipt = reciept;
        };
        Register operator+(const Register &right); //two objects are added, an empty reg is created (0 receitps)
                                                   //only the totals are added. temp reg is returned by the function
        Register operator=(const Register &right); //copies only the totals fom te object on the right
    };
    
    
    int main()
    {
        Register reg1(2),reg2(2),reg3;
    
        cout << "Welcome to Hardware SuperStore! I see we have a number of customers! There are two cash registers available\n" << endl;
    
        reg1.getorder();
        reg2.getorder();
    
        return 0;
    }
    
    void Register::getorder()
    {
        int W,S,L,TM,H;
    
        for ( int i = 0; i < 2; i++)
        {
            cout << "\n";
            cout << "How many of each item do you want to order for order no." << i + 1 << "in cash register 1 "<< endl;
            cout << "Wrenches: ";
            cin >> W;
            cout << endl << "Screwdrivers: ";
            cin >> S;
            cout << endl << "Levels: ";
            cin >> L;
            cout << endl << "Tape Measures: ";
            cin >> TM;
            cout << endl << "Hammers: ";
            cin >> H;
        }
    }
    

    这就是我到目前为止我试图让输入部分首先工作,因此用户会被问到每个项目个人他们想要多少?这将发生在2个用户,然后下一个寄存器将做同样的事情?任何提示都会有所帮助

1 个答案:

答案 0 :(得分:0)

您需要成员变量来保存每个订单中订购的每件商品的数量。 std::vector是最佳选择。在获得输入时,计算订单的成本并将其添加到总成本中。

Here是一个有效的例子。

注意类声明:

class Register
{
    std::vector<int> hammers ; // number of hammers for each order
    std::vector<int> wrenches ; // number of wrenches for each order
    std::vector<int> levers ; // number of levers for each order
    std::vector<int> tapes ; // number of tapes for each order
    std::vector<int> screw_drivers ; // number of screw drivers for each order

    int              order_limit ; // max orders to be taken
    int              order_taken ; // number of order taken
    float            total_cost ;

public:
    Register(int ol) : order_limit{ol}, order_taken{0}, total_cost{0.0f} {}
    Register() {}

    void get_order();
    void return_receipts();

    friend Register operator+(const Register&, const Register&);

};