【问题标题】:How to print the name of every salesman from Salesman class?如何打印销售员班的每个销售员的姓名?
【发布时间】:2021-11-08 03:43:40
【问题描述】:

在这里,我使用 OOP 概念实现了一个 c++ 程序。 假设一家公司有 1000 名销售人员(1000 个Salesman Class 对象)。如果我想打印每个销售员的姓名(使用循环或其他方式),该怎么做? 不仅是为了打印姓名,假设公司要查找平均工资。如果我可以遍历类中的所有对象,那就很容易了。

这是我的代码(我把代码放在这里仅供参考

#include <string>
#include <iostream>

class Salesman
{
private:
    int salesmanId;
    string salesmanName;
    int salary;
    string contactNumber;

public:
    Salesman();
    ~Salesman();
    void setSalesmanDetails(int id, string name, int sal, string number);
    void displaySalesmanDetails();
    void setSalesmanContactNumber(string number);
};

void Salesman ::setSalesmanDetails(int id, string name, int sal, string number)
{
    salesmanId = id;
    salesmanName = name;
    salary = sal;
    contactNumber = number;
}

void Salesman ::displaySalesmanDetails()
{
    cout << "Salesman ID: " << salesmanId << endl;
    cout << "Salesman Name: " << salesmanName << endl;
    cout << "Salary: " << salary << endl;
    cout << "Contact Number: " << contactNumber << endl
         << endl;
}

void Salesman::setSalesmanContactNumber(string number)
{
    contactNumber = number;
}

Salesman::Salesman()
{
}

Salesman::~Salesman()
{
}

int main(int argc, char *argv[])
{
    string number;
    Salesman *s1 = new Salesman;
    s1->setSalesmanDetails(1, "John", 30000, "772358375");

    Salesman *s2 = new Salesman;
    s2->setSalesmanDetails(2, "Ann", 40000, "773029452");

    Salesman *s3 = new Salesman;
    s3->setSalesmanDetails(3, "Leema", 35000, "778294526");
}

【问题讨论】:

  • 你的教科书对 arraysvectors 有什么看法?
  • @Someprogrammerdude 我知道数组和向量,但我不知道如何将它们应用于 oop 或对象。
  • 正如@dude 所说,请回到基础并使用数组或者可能更好的向量!

标签: c++ class object oop


【解决方案1】:

对于一个类的输出,需要覆盖插入操作符&lt;&lt;。在此,您所做的几乎与您的显示功能相同。这样,您可以将代码输出到std::cout 或文件或任何其他流。

请阅读运算符重载,尤其是插入器和提取器。

在您的主要功能中,您可以简单地使用std::vector 来存储您的推销员。

然后使用上面的插入操作符在一个简单的循环中输出。

请看下面的示例代码:

#include <string>
#include <iostream>
#include <fstream>
#include <vector>

using std::string;
using std::cout;
using std::endl;

class Salesman
{
private:
    int salesmanId;
    string salesmanName;
    int salary;
    string contactNumber;

public:
    Salesman();
    ~Salesman();
    void setSalesmanDetails(int id, string name, int sal, string number);
    void displaySalesmanDetails();
    void setSalesmanContactNumber(string number);
    
    friend std::ostream& operator << (std::ostream& os, const Salesman& sm) {
        return os << "Salesman ID: " << sm.salesmanId << endl
            << "Salesman Name: " << sm.salesmanName << endl
            << "Salary: " << sm.salary << endl
            << "Contact Number: " << sm.contactNumber << endl  << endl;
        
    }
};

void Salesman ::setSalesmanDetails(int id, string name, int sal, string number)
{
    salesmanId = id;
    salesmanName = name;
    salary = sal;
    contactNumber = number;
}

void Salesman ::displaySalesmanDetails()
{
    cout << "Salesman ID: " << salesmanId << endl;
    cout << "Salesman Name: " << salesmanName << endl;
    cout << "Salary: " << salary << endl;
    cout << "Contact Number: " << contactNumber << endl
         << endl;
}

void Salesman::setSalesmanContactNumber(string number)
{
    contactNumber = number;
}

Salesman::Salesman()
{
}

Salesman::~Salesman()
{
}

int main(int argc, char *argv[])
{
    std::vector<Salesman> salesman{};

    
    string number;
    
    Salesman s1;
    s1.setSalesmanDetails(1, "John", 30000, "772358375");
    salesman.push_back(s1);

    Salesman s2;
    s2.setSalesmanDetails(2, "Ann", 40000, "773029452");
    salesman.push_back(s2);

    Salesman s3;
    s3.setSalesmanDetails(3, "Leema", 35000, "778294526");
    salesman.push_back(s3);
    
    for (const Salesman& sm : salesman)
        std::cout << sm;
    
    
}

【讨论】:

    【解决方案2】:

    只需创建一个类来存储包含SalesMan 对象的向量。使该类能够添加salesMan 和另一个成员函数来遍历所有销售人员并打印详细信息。

    class SalesMen
    {
    public:
        SalesMen() = default;
    
    public:
        void AddSalesMan(const Salesman& salesMan)
        {
            salesMen.push_back(salesMan);
        }
    
        void PrintDetails()
        {
            for (auto& salesMan : salesMen)
            {
                salesMan.displaySalesmanDetails();
            }
        }
    
    private:
        std::vector<Salesman> salesMen;
    };
    
    int main(int argc, char* argv[])
    {
    
        SalesMen salesMen{};
    
        Salesman s1;
        s1.setSalesmanDetails( 1, "John", 30000, "772358375" );
        salesMen.AddSalesMan(s1);
    
        Salesman s2;
        s2.setSalesmanDetails(2, "Ann", 40000, "773029452");
        salesMen.AddSalesMan(s2);
    
        Salesman s3;
        s3.setSalesmanDetails(3, "Leema", 35000, "778294526");
        salesMen.AddSalesMan(s3);
    
        salesMen.PrintDetails();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2013-01-30
      • 2012-09-12
      相关资源
      最近更新 更多