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

How do I record multiple inputs for 2 orders on 2 different registers?

本文关键字:2个 输入 记录 寄存器      更新时间:2023-10-16

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

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

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

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

    该类可能具有以下成员函数:

    构造函数(int)–基于传递到构造函数的整数创建多个收据(这是寄存器可以接受的最大订单数)。您可能还需要创建额外的变量来使程序工作,但这取决于您自己。

    void getorder()–询问用户他们想要在第一个可用收据中存储的每个项目的数量。

    void returnreceipts()–此函数返回当天所有收据的详细信息和总额。

    寄存器运算符+(const Register&right)-这是一个重载的加法运算符。当两个对象添加在一起时,会创建一个空的临时寄存器(包含0个收据),并且只向其中添加两个对象的总数。临时寄存器由函数返回。

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

    在主功能中,我想要:

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

  3. 对寄存器1和2运行getorder函数两次
  4. 对寄存器1和寄存器2运行returnreceives
  5. Reg3=Reg1+Reg2
  6. 为寄存器3运行returnreceives

`

  #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 availablen" << 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个用户身上,那么下一个寄存器也会这样做吗?任何提示都将有助于

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

下面是一个工作示例。

注意类声明:

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&);
};