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日

相关文章

  • Qt实现编辑数据库数据的方法详解

    Qt实现编辑数据库数据的方法详解 介绍 Qt是一个跨平台的应用程序开发框架,提供了一系列GUI界面开发工具和非GUI应用所需的服务。它可以在多平台上运行,包括Windows、Mac OS X、Linux、Android和iOS等操作系统。其中,Qt的数据库模块提供了一种轻松管理和操纵数据库数据的方式。 步骤 第一步:连接数据库 首先,在Qt中连接到数据库是必…

    C 2023年5月22日
    00
  • C语言中字符串和数字的相互转换实现代码

    C语言中字符串和数字的相互转换是常见的编程操作。下面是一些实现代码,以便帮助你进行相应的转换。 将字符串转换为数字 C语言中,字符串可以使用标准库函数 atoi() 转换为整数。由于 atoi() 是标准库函数,因此需要包含头文件 <stdlib.h>。 #include <stdio.h> #include <stdlib.h…

    C 2023年5月24日
    00
  • VS2015怎么解决scanf函数的C4996错误?

    当使用VS2015进行C\C++编程时,scanf函数会报C4996错误,这是由于scanf函数被认为是不安全的函数而导致的。要解决这个问题,我们需要用安全的scanf_s函数,以下是解决方案的详细步骤。 Step 1: 打开VS2015编译器 Step 2: 新建一个C或C++项目 Step 3: 在代码中,找到scanf函数的相应位置 示例1: #inc…

    C 2023年5月23日
    00
  • MYSQL数据库Innodb 引擎mvcc锁实现原理

    MYSQL数据库Innodb 引擎mvcc锁实现原理 InnoDB是MySQL数据库的默认存储引擎,实现了被广泛使用的多版本并发控制(MVCC)锁机制,这使得InnoDB的并发处理能力比其他存储引擎更优秀。本文将重点讲解InnoDB的MVCC锁实现原理。 MVCC介绍 MVCC为多版本并发控制(Multi-Version Concurrency Contro…

    C 2023年5月22日
    00
  • 老生常谈C语言静态函数库的制作和使用

    老生常谈C语言静态函数库的制作和使用 静态函数库是一组用C语言编写并经过编译后得到的功能模块,可以在程序开发过程中被反复使用。本文将详细讲解如何制作和使用C语言的静态函数库,并提供两个示例以帮助读者更好地理解。 制作静态函数库 以下是制作静态函数库的具体步骤: 编写需要的函数并将其放入单独的.c文件中。 将所有.c文件一起编译,生成相应的目标文件.o。 使用…

    C 2023年5月23日
    00
  • 游戏安全攻防技巧全攻略之攻击篇

    游戏安全攻防技巧全攻略之攻击篇 本攻略主要介绍游戏安全方面的攻击技巧和防御策略,旨在帮助游戏开发者提高自身的安全水平和防范黑客攻击。 常见的游戏攻击方式以及防御方法 1. SQL注入 攻击者利用SQL注入漏洞对数据库进行非法操作,例如删除、修改、篡改等。防御SQL注入主要有以下几个方法: 防范用户输入,对用户所输入的数据进行过滤或转义。 限制数据库用户的权限…

    C 2023年5月22日
    00
  • Qt使用SQLite数据库存储管理图片文件

    下面就是关于“Qt使用SQLite数据库存储管理图片文件”的完整攻略。 准备工作 在开始之前,我们需要先准备好以下工具: Qt开发环境,可以通过官网下载安装。 SQLite数据库,可以通过官网下载安装。 创建SQLite数据库 首先,我们需要创建一个SQLite数据库,可以按照以下步骤进行: 打开SQLite3命令行工具 输入以下命令创建一个名为“image…

    C 2023年5月22日
    00
  • 如何在C++中实现一个正确的时间循环器详解

    如何在C++中实现一个正确的时间循环器 什么是时间循环器 时间循环器是一种计时器,它按照一定的时间间隔来触发事件。在游戏编程中,时间循环器经常被用来控制游戏的逻辑,例如更新游戏物体的位置、判断游戏事件是否发生等。 实现思路 实现一个时间循环器的关键在于利用计时器并按照一定的时间间隔来触发事件。这个过程可以通过以下步骤来完成。 获取时间戳,记录当前时间。 使用…

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