C++仓库管理系统

功能                代码在效果图后面

1.添加物品  2.删除物品 3.更新物品数量 4.查询物品 5.列出所有物品  6.保存并退出

注意事项:退出要输入“6”退出才能保存数据,不要直接按X关掉窗口(不会保存数据)。

效果图

源代码

编译时在连接器命令行加入以下数据

-std=c++11

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

struct Item {
    int id;
    std::string name;
    int quantity;
    std::string type;
};

class WarehouseManagement {
public:
    WarehouseManagement(const std::string& filename) : filename(filename) {
        loadFromFile();
    }

    bool authenticate(const std::string& username, const std::string& password) {
        return username == "root" && password == "123";
    }

    void addItem(const Item& item) {
        items.push_back(item);
        saveToFile();
    }

    void removeItem(int id) {
        auto it = std::remove_if(items.begin(), items.end(), [id](const Item& item) {
            return item.id == id;
        });
        items.erase(it, items.end());
        saveToFile();
    }

    void updateItemQuantity(int id, int quantity) {
        for (auto& item : items) {
            if (item.id == id) {
                item.quantity = quantity;
                saveToFile();
                return;
            }
        }
    }

    Item* queryItem(int id) {
        for (auto& item : items) {
            if (item.id == id) {
                return &item;
            }
        }
        return nullptr;
    }

    void printItems() {
        for (const auto& item : items) {
            std::cout << "ID: " << item.id << ", 名称: " << item.name
                      << ", 数量: " << item.quantity << ", 类型: " << item.type << '\n';
        }
    }

private:
    std::vector<Item> items;
    std::string filename;

    void loadFromFile() {
        std::ifstream file(filename);
        if (!file.is_open()) return;

        Item item;
        while (file >> item.id >> item.name >> item.quantity >> item.type) {
            items.push_back(item);
        }
        file.close();
    }

    void saveToFile() {
        std::ofstream file(filename);
        if (!file.is_open()) return;

        for (const auto& item : items) {
            file << item.id << ' ' << item.name << ' ' << item.quantity << ' ' << item.type << '\n';
        }
        file.close();
    }
};

int main() {
    WarehouseManagement wm("warehouse.txt");

    std::string username, password;
    std::cout << "请输入用户名: ";
    std::cin >> username;
    std::cout << "请输入密码: ";
    std::cin >> password;

    if (!wm.authenticate(username, password)) {
        std::cout << "无效的用户名或密码。\n";
        return 1;
    }

    int choice;
    do {
        std::cout << "1. 添加物品\n2. 删除物品\n3. 更新物品数量\n4. 查询物品\n5. 列出所有物品\n6. 退出\n";
        std::cout << "请输入您的选择: ";
        std::cin >> choice;

        switch (choice) {
            case 1: {
                Item item;
                std::cout << "请输入物品ID: ";
                std::cin >> item.id;
                std::cout << "请输入物品名称: ";
                std::cin >> item.name;
                std::cout << "请输入物品数量: ";
                std::cin >> item.quantity;
                std::cout << "请输入物品类型: ";
                std::cin >> item.type;
                wm.addItem(item);
                break;
            }
            case 2: {
                int id;
                std::cout << "请输入要删除的物品ID: ";
                std::cin >> id;
                wm.removeItem(id);
                break;
            }
            case 3: {
                int id, quantity;
                std::cout << "请输入要更新的物品ID: ";
                std::cin >> id;
                std::cout << "请输入新的数量: ";
                std::cin >> quantity;
                wm.updateItemQuantity(id, quantity);
                break;
            }
            case 4: {
                int id;
                std::cout << "请输入要查询的物品ID: ";
                std::cin >> id;
                Item* item = wm.queryItem(id);
                if (item) {
                    std::cout << "ID: " << item->id << ", 名称: " << item->name
                              << ", 数量: " << item->quantity << ", 类型: " << item->type << '\n';
                } else {
                    std::cout << "物品未找到。\n";
                }
                break;
            }
            case 5:
                wm.printItems();
                break;
            case 6:
                break;
            default:
                std::cout << "无效的选择。请再试一次。\n";
                break;
        }
    } while (choice != 6);

    return 0;
}

相关推荐

  1. 基于SpringBoot的仓库管理系统

    2024-07-19 15:36:05       58 阅读
  2. 仓库管理系统WMS设计思路

    2024-07-19 15:36:05       52 阅读
  3. Springboot vue elementui仓库管理系统

    2024-07-19 15:36:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 15:36:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 15:36:05       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 15:36:05       58 阅读
  4. Python语言-面向对象

    2024-07-19 15:36:05       69 阅读

热门阅读

  1. Python面试整理-Python中的控制流语句

    2024-07-19 15:36:05       18 阅读
  2. 三个国产数据库调研(达梦,PolarDB,TDSQL

    2024-07-19 15:36:05       20 阅读
  3. 防范UDP Flood攻击的策略与实践

    2024-07-19 15:36:05       21 阅读
  4. 华为OD机考题(HJ62 查找输入整数二进制中1的个数)

    2024-07-19 15:36:05       20 阅读
  5. celery config_from_object的简单使用

    2024-07-19 15:36:05       21 阅读
  6. python程序设定定时任务

    2024-07-19 15:36:05       18 阅读
  7. 【电子数据取证】从SSH开始使用Linux

    2024-07-19 15:36:05       21 阅读
  8. axios源码分析与模拟(上)

    2024-07-19 15:36:05       20 阅读
  9. c语言(7.19)

    2024-07-19 15:36:05       22 阅读
  10. 关于UniApp使用的个人笔记

    2024-07-19 15:36:05       18 阅读