C++实现团购订单管理系统

C++实现团购订单管理系统

概述

本团购订单管理系统有如下功能:

  1. 添加新订单
  2. 修改已有订单
  3. 删除已有订单
  4. 查看所有订单
  5. 根据订单号查看特定订单

实现步骤

步骤一:定义订单类

class Order {
public:
    string orderNo; // 订单号
    string productName; // 商品名称
    int quantity; // 数量
    double price; // 单价
    double totalPrice; // 总价
    string buyer; // 购买人
    string contact; // 联系方式
public:
    // 构造函数
    Order(string orderNo, string productName, int quantity, double price, double totalPrice, string buyer, string contact);
    // 显示订单详细信息
    void showOrderDetails();
};

步骤二:实现订单类的构造函数和显示订单详细信息函数

Order::Order(string orderNo, string productName, int quantity, double price, double totalPrice, string buyer, string contact) {
    this->orderNo = orderNo;
    this->productName = productName;
    this->quantity = quantity;
    this->price = price;
    this->totalPrice = totalPrice;
    this->buyer = buyer;
    this->contact = contact;
}

void Order::showOrderDetails() {
    cout << "订单号:" << orderNo << endl;
    cout << "商品名称:" << productName << endl;
    cout << "数量:" << quantity << endl;
    cout << "单价:" << price << endl;
    cout << "总价:" << totalPrice << endl;
    cout << "购买人:" << buyer << endl;
    cout << "联系方式:" << contact << endl;
}

步骤三:实现订单管理类

class OrderManager {
private:
    vector<Order> orders; // 存储所有订单
    int getOrderIndex(string orderNo); // 根据订单号获取订单在vector中的下标
public:
    // 添加新订单
    void addNewOrder(Order order);
    // 修改已有订单
    void modifyOrder(string orderNo);
    // 删除已有订单
    void deleteOrder(string orderNo);
    // 查看所有订单
    void showAllOrders();
    // 根据订单号查看特定订单
    void showOrderDetails(string orderNo);
};

步骤四:实现订单管理类的成员函数

// 添加新订单
void OrderManager::addNewOrder(Order order) {
    orders.push_back(order);
    cout << "添加成功!" << endl;
}

// 修改已有订单
void OrderManager::modifyOrder(string orderNo) {
    int index = getOrderIndex(orderNo);
    if(index == -1) {
        cout << "不存在此订单!" << endl;
        return;
    }
    orders[index].showOrderDetails();
    cout << "请输入修改后的信息:" << endl;
    string productName, buyer, contact;
    int quantity;
    double price;
    cout << "商品名称:";
    cin >> productName;
    cout << "数量:";
    cin >> quantity;
    cout << "单价:";
    cin >> price;
    cout << "购买人:";
    cin >> buyer;
    cout << "联系方式:";
    cin >> contact;
    double totalPrice = quantity * price;
    orders[index] = Order(orderNo, productName, quantity, price, totalPrice, buyer, contact);
    cout << "修改成功!" << endl;
}

// 删除已有订单
void OrderManager::deleteOrder(string orderNo) {
    int index = getOrderIndex(orderNo);
    if(index == -1) {
        cout << "不存在此订单!" << endl;
        return;
    }
    orders.erase(orders.begin() + index);
    cout << "删除成功!" << endl;
}

// 查看所有订单
void OrderManager::showAllOrders() {
    cout << "订单列表:" << endl;
    for(int i=0; i<orders.size(); i++) {
        cout << "------------------------------" << endl;
        orders[i].showOrderDetails();
        cout << "------------------------------" << endl;
    }
}

// 根据订单号查看特定订单
void OrderManager::showOrderDetails(string orderNo) {
    int index = getOrderIndex(orderNo);
    if(index == -1) {
        cout << "不存在此订单!" << endl;
        return;
    }
    orders[index].showOrderDetails();
}

// 根据订单号获取订单在vector中的下标
int OrderManager::getOrderIndex(string orderNo) {
    for(int i=0; i<orders.size(); i++) {
        if(orders[i].orderNo == orderNo) {
            return i;
        }
    }
    return -1;
}

步骤五:实现主函数

int main() {
    OrderManager orderManager;
    while(true) {
        cout << "请选择功能(输入1-5的数字):" << endl;
        cout << "1. 添加新订单" << endl;
        cout << "2. 修改已有订单" << endl;
        cout << "3. 删除已有订单" << endl;
        cout << "4. 查看所有订单" << endl;
        cout << "5. 根据订单号查看特定订单" << endl;
        int choice;
        cin >> choice;
        if(choice == 1) {
            string orderNo, productName, buyer, contact;
            int quantity;
            double price;
            cout << "请输入订单号:";
            cin >> orderNo;
            cout << "请输入商品名称:";
            cin >> productName;
            cout << "请输入数量:";
            cin >> quantity;
            cout << "请输入单价:";
            cin >> price;
            cout << "请输入购买人:";
            cin >> buyer;
            cout << "请输入联系方式:";
            cin >> contact;
            double totalPrice = quantity * price;
            Order order(orderNo, productName, quantity, price, totalPrice, buyer, contact);
            orderManager.addNewOrder(order);
        }
        else if(choice == 2) {
            string orderNo;
            cout << "请输入订单号:";
            cin >> orderNo;
            orderManager.modifyOrder(orderNo);
        }
        else if(choice == 3) {
            string orderNo;
            cout << "请输入订单号:";
            cin >> orderNo;
            orderManager.deleteOrder(orderNo);
        }
        else if(choice == 4) {
            orderManager.showAllOrders();
        }
        else if(choice == 5) {
            string orderNo;
            cout << "请输入订单号:";
            cin >> orderNo;
            orderManager.showOrderDetails(orderNo);
        }
        else {
            cout << "输入有误,请重新选择!" << endl;
        }
    }
    return 0;
}

示例说明

示例一:添加新订单

  1. 用户输入1,选择添加新订单功能。
  2. 程序提示用户输入订单信息,如订单号、商品名称、数量、单价、购买人和联系方式。
  3. 程序根据用户输入的信息创建一个新的订单,并存储到订单管理类中。
  4. 程序显示“添加成功!”。

示例二:修改已有订单

  1. 用户输入2,选择修改已有订单功能。
  2. 程序提示用户输入要修改的订单号。
  3. 程序查找对应的订单,如存在则显示其详细信息,然后提示用户输入修改后的信息。
  4. 程序根据用户输入的信息更新订单。
  5. 程序显示“修改成功!”或“不存在此订单!”等提示信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现团购订单管理系统 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • 项目之C++如何实现数据库连接池

    下面是关于“项目之C++如何实现数据库连接池”的完整攻略。 概述 这是一个C++项目,目的是为了实现一个数据库连接池。它可以提供多个连接数据库的线程,而且每个线程都可以从连接池中获取数据库连接,使用完之后再释放回去,以便其他线程使用。 实现步骤 第一步:建立连接池类 首先,我们需要建立一个连接池类,这个类应该包含以下几个基本方法: init_connecti…

    C 2023年5月22日
    00
  • C++小知识:不要去做编译器的工作

    C++小知识:不要去做编译器的工作 背景 C++ 是一个庞大的语言,语法实在复杂。由于各种优化等操作,编译器已经变得越来越强大,并且一些操作也很难手动实现。然而,很多 C++ 开发人员容易错误地尝试手动实现一些简单的编译器功能(示例包括手写字符串分割、手写代码验证、手写类型推断等)。本文会通过两个示例说明为什么需要避免做编译器工作。 示例一:手写类型推断 首…

    C 2023年5月23日
    00
  • C 作用域规则

    C 作用域规则详解 在 C 语言中,变量的作用域指的是变量可以被访问的范围。C 语言定义了几种作用域,其中包括块作用域、函数作用域、文件作用域和函数形参作用域等。本文将详细介绍 C 作用域规则以及示例说明。 1. 块作用域 块作用域是指只能在定义变量的块或函数内使用变量的作用域。块作用域中定义的变量通常称为局部变量。 1.1. 示例 1 #include &…

    C 2023年5月10日
    00
  • C语言中基础小问题详细介绍

    C语言中基础小问题详细介绍攻略 在学习C语言的过程中,会遇到一些基础小问题,这些问题虽然看起来不起眼,但它们却是我们在开发过程中需要深入理解和运用的知识点。下面我们将介绍几个基础小问题及其解决方法,希望对您的学习有所帮助。 问题一:如何输出带有引号的字符串? 在C语言中,若要输出带有引号的字符串,可以采用转义字符\。 例如,要输出”hello world”,…

    C 2023年5月23日
    00
  • C++实现简易反弹小球游戏的示例代码

    好的。首先,让我们来讲解如何使用C++实现简易反弹小球游戏的完整攻略。 准备工作 在开始编写代码之前,我们需要准备一些工具和环境: C++编译器(建议使用Visual Studio等集成开发环境) 游戏引擎或者相关库(例如SDL2等) 在本篇攻略中,我们将使用SDL2库来实现我们的游戏。因此,在开始之前,我们需要安装SDL2库及其所需的依赖项。 编写代码 接…

    C 2023年5月24日
    00
  • C语言实现任何文件的加密解密功能

    C语言实现任何文件的加密解密功能 背景介绍 在实际开发中,有时会需要对一些敏感信息或重要文件进行加密操作,以保证数据安全性。在C语言中,可以通过一些加密算法,对文件进行加密和解密操作,从而实现对文件的保护。 实现步骤 整个加密解密过程可以分为以下几个步骤: 读取需要进行加密/解密的文件; 对读取到的内容进行转换,如加密算法的处理; 将转换后的内容写入到新的文…

    C 2023年5月23日
    00
  • C++中的整形字节数

    当我们在C++中定义整型变量时,我们必须指定该变量的整型类型。不同的整型类型在内存中使用的字节数不同,并且可以容纳的数值范围也不同。在C++中,整型类型可以使用signed和unsigned修饰符。下面是C++中整型类型和它们在内存中使用的字节数的列表: 类型 字节数 范围 short(短整型) 2 有符号:-32768到32767,无符号:0到65535 …

    C 2023年5月23日
    00
  • C语言模拟实现atoi函数的实例详解

    C语言模拟实现atoi函数的实例详解 在C语言中,atoi函数能将字符串转化为整型数。本文将详细讲解C语言中模拟实现atoi函数的过程以及示例。 需求分析 想要实现atoi函数,我们需要明确要求的功能。即,将字符串转化为整型数。 实现思路 以下是实现atoi函数的思路: 首先考虑如何将字符转化为数字。C语言中,字符变量按照ASCII码表存储,因此可以通过in…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部