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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3250348.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

七款好用的CAD图纸加密软件推荐|2024最新排行榜

在2024年的今天&#xff0c;随着数字化转型的深化&#xff0c;企业对保护知识产权和商业机密的需求愈发迫切。特别是在依赖计算机辅助设计&#xff08;CAD&#xff09;的行业中&#xff0c;图纸加密软件成为了关键的工具&#xff0c;用于维护设计图纸的安全。以下是根据市场反馈…

<数据集>蛋壳裂缝检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2520张 标注数量(xml文件个数)&#xff1a;2520 标注数量(txt文件个数)&#xff1a;2520 标注类别数&#xff1a;2 标注类别名称&#xff1a;[crack, egg] 序号类别名称图片数框数1crack245128352egg25142514 使…

RHCSA —— 第七节 (文件、 目录)

FHS FHS --- filesystem hirearchy standard 文件系统层级标准&#xff0c;定义了在类Unix系统中的目录结构和目录内容&#xff0c;即用户知道已安装的软件放在哪个目录下 Linux 目录结构的特点 1.使用树形目录结构来组织和管理结构 2.整个系统只有一个根目录&#xff08;…

卸载linux 磁盘的内容,磁盘占满

Linux清理磁盘 https://www.cnblogs.com/siyunianhua/p/17981758 当前文件夹下&#xff0c;数量 ls -l | grep "^-" | wc -l ls -lR | grep "^-" | wc -l 找超过100M的大文件 find / -type f -size 100M -exec ls -lh {} \; df -Th /var/lib/docker 查找…

记录vivado自带IP iBert眼图近端回环

记录利用vivado自带IP核工具测试信号质量 ibert是测试眼图的工具&#xff0c;在使用的时候并不用改太多的内容&#xff0c;只需要注意参考时钟及所需要的引脚即可。由于条件的限制&#xff0c;并没有使用光纤和电缆进行连接进行外部回环&#xff0c;仅使用内部回环做测试&…

P4-AI产品经理-九五小庞

从0开始做AI产品的完整工作方法 项目启动 项目实施 样本测试模型推荐引擎 构建DMP&#xff08;数据管理平台&#xff09; 项目上线

用户体验优化的关键:掌握原型设计思路提升产品质量

原型设计是产品的缩影。在产品推出之前&#xff0c;原型设计承载着UI设计和交互测试的大部分工作&#xff0c;可以帮助产品经理和UX设计师以最低的成本测试产品的逻辑框架、交互体验、创造性表达等&#xff0c;这不仅节省了时间和成本&#xff0c;而且缩短了各部门之间的沟通成…

[PM]产品运营

生命周期 运营阶段 主要工作 拉新 新用户的定义 冷启动 拉新方式 促活 用户活跃的原因 量化活跃度 运营社区化/内容化 留存 用户流失 培养用户习惯 用户挽回 变现 变现方式 付费模式 广告模式 数据变现 变现指标 传播 营销 认识营销 电商营销中心 拼团活动 1.需求整理 2.…

独立游戏《星尘异变》UE5 C++程序开发日志5——实现物流系统

目录 一、进出口清单 二、路径计算 三、包裹 1.包裹的数据结构 2.包裹在场景中的运动 四、道路 1.道路的数据结构 2.道路的建造 3.道路的销毁 4.某个有道路连接的建筑被删除 作为一个工厂类模拟经营游戏&#xff0c;各个工厂之间的运输必不可少&#xff0c;本游戏采用的…

Apache SeaTunnel——OLAP 引擎的数据动脉

导读本文将分享如何利用 Apache SeaTunnel 将各个业务系统的数据同步到 OLAP 引擎。 主要内容包括以下六大部分&#xff1a; 1. Apache SeaTunnel 项目介绍 2. Apache SeaTunnel 核心功能 3.SeaTunnel 在 OLAP 场景下的应用 4. 社区近期计划 5. WhaleTunnel 产品特性 6. …

《Winodws API每日一练》11.3 工具栏控件

本节将讲述工具栏控件的创建和使用。 本节必须掌握的知识点&#xff1a; 工具栏控件 第72练&#xff1a;工具栏控件 11.3.1 工具栏控件 工具栏控件&#xff08;Toolbar Control&#xff09;是Windows操作系统提供的一种用户界面元素&#xff0c;用于显示常用的命令按钮、工具…

PostgreSQL创建表和自增序列

一、创建表&#xff1a; 注意&#xff1a; 1、在mysql没有序列的概念&#xff0c;id自增通过auto_increment实现&#xff1b; 2、pgsql没有auto_increment的概念&#xff0c;如何实现id自增&#xff1f;有两种方式&#xff1a; 方式一&#xff1a;创建序列&#xff0c;绑定…

MYSQL调优详解:案例解析(第40天)

系列文章目录 一、数据库设计优化 二、查询优化 三、架构优化 四、其他优化策略 五、优化案例解析 文章目录 系列文章目录前言一、数据库设计优化二、查询优化三、架构优化四、其他优化策略五、优化案例解析案例一&#xff1a;优化SELECT查询案例二&#xff1a;使用索引案例三…

springboot系列十: 自定义转换器,处理JSON,内容协商

文章目录 自定义转换器基本介绍应用实例查看源码注意事项和细节 处理JSON需求说明应用实例 内容协商基本介绍应用实例debug源码优先返回xml注意事项和细节 ⬅️ 上一篇: springboot系列九: 接收参数相关注解 &#x1f389; 欢迎来到 springboot系列十: 自定义转换器&#xff0c…

ELK日志收集

一、什么是ELK ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体&#xff0c;ELK 是 elastic 公司研发的一套完整的日志收集、分析和展示的企业级解决方案。 ELK 的好处&#xff1a; ELK 组件在大数据运维系统中&#xff0c;主要可解决的问题如下&…

MDK5没有DeviceName

遇到的问题是Jlink驱动问题 不是引脚接反 使用国产GD单片机不同的工程&#xff0c;有的有Device Name,有的没有Device Name&#xff08;下图是弄好的情况&#xff0c;有Device Name&#xff09; 硬件链接&#xff0c;和设备都没有问题&#xff1a;无法仿真&#xff0c;无法下…

ARM体系结构和接口技术(四)LED灯实验---②

文章目录 一、特殊功能控制寄存器&#xff08;一&#xff09;GPIOx_MODER寄存器&#xff08;二&#xff09;GPIOx_OTYPER寄存器&#xff08;三&#xff09;GPIOx_OSPEEDR寄存器&#xff08;四&#xff09;GPIOx_PUPDR寄存器&#xff08;五&#xff09;GPIOx_IDR寄存器&#xff…

C语言——详解二级指针及其与二维数组的误区、指针定义大全

C语言中的二级指针&#xff08;也称为指针的指针&#xff09;是指一个指针变量&#xff0c;它存储的不是普通的值&#xff0c;而是另一个指针的地址。这意味着你可以通过二级指针来访问和修改另一个指针的值。这种结构在C语言中非常有用&#xff0c;尤其是在处理动态内存分配、…

C语言实现二叉树以及二叉树的详细介绍

目录 1.树概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 2.二叉树概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 3.二叉树顺序结构--特殊的二叉树--堆及其实现 3.1堆的概念及结构 3.2堆的实现 3.2.1堆的结构 3.2.2堆…

《昇思25天学习打卡营第25天|第22天》

今天是学习的第22天&#xff0c;今天学的是应用实践的自然语言处理的RNN实现情感分类。 从情感分类开始学习&#xff0c;数据准备、数据下载模块、加载IMDB数据集、加载预训练词向量、数据集预处理、模型构建、Embedding、RNN(循环神经网络)、Dense、损失函数与优化器、训练逻…