【C语言/C++】电子元器件管理系统(C源码)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【C语言/C++】电子元器件管理系统(C源码)【独一无二】


目录

  • 【C语言/C++】电子元器件管理系统(C源码)【独一无二】
  • 一、基本要求
  • 二、功能展示
    • 2.1 主界面
    • 2.2 入库功能
    • 2.3 打印元器件列表
    • 2.4 库存元器件统计
    • 2.5 数据排序
    • 2.6 保存到数据文件
    • 2.7 加载数据文件
    • 2.8 退出系统
  • 三、代码分析


一、基本要求

  • 电子元器件管理系统设计与实现(30分)
    【功能要求】为方便实验室的管理,请设计一个电子元器件管理系统,实现以下功能(为与网上代码区分,系统必须按下面规定的函数命名要求来完成);

  • (5分)系统欢迎主界面和菜单MainMenu。

  • (5分)以文件方式存储系统管理的所有电子元器件,提供LoadData和 SaveData 函数实现数据的加载和保存,系统启动自动加载数据,系统退出自动保存数据;

  • (5分)电子元器件入库 Warehousing:根据入库单(如下格式文本文件)录入一批器件;入库单格式(每项数据以逗号分隔,每行一项):
    编号,类型,型号,数目,封装,厂家,单价,出厂日期
    示例:

    A0003,IC,LM324.100.SOP-8,国半,1.00.2015-1
    A0001.三极管.9013.1000.TO92.松下.0.50.2016-3
    A0002,二极管,BIV30-200,450,S0D80,PH,0.10,2020-3

  • (5分)电子元器件出库 Shipment:输入班级人数和每位同学该次实验需要的元器件类型和数量,按入库时的顺序自动扣除库存,某种元器件数量不够时应直接报错,且该次出库无效而不扣任何库存:

  • (5分)打印当前库存元器件列表Display,输出时请按库存数量由多到少排序;

  • (5分)对当前库存的元器件进行统计 Statistics,统计每一类元器件的数量和总价。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈


二、功能展示

2.1 主界面

在这里插入图片描述

2.2 入库功能

在这里插入图片描述

2.3 打印元器件列表

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

2.4 库存元器件统计

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

2.5 数据排序

在这里插入图片描述

2.6 保存到数据文件

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

2.7 加载数据文件

在这里插入图片描述

2.8 退出系统

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈


三、代码分析

各个代码模块功能分析:

  1. LoadData():
    • LoadData() 函数从名为 “电子元器件.txt” 的文件中加载数据到 components 数组中,该数组存储了有关电子元器件的信息。

    • 它逐行从文件中读取数据,解析每行以提取每个电子元器件的信息。

    • 数据的格式是使用逗号分隔每个字段的信息(id、类型、型号、数量、封装、厂家、价格、日期)。

      void LoadData() {printf("加载数据...\n");FILE* file = fopen("电子元器件.txt", "r");if (file == NULL) {printf("无法打开数据文件。\n");return;}// 清空之前的数据componentCount = 0;while (fscanf(file, "%[^,],%[^,],%[^,],%d,%[^,],%[^,],%f,%s\n", components[componentCount].id,components[componentCount].type, components[componentCount].model, &components[componentCount].quantity,components[componentCount].package, components[componentCount].manufacturer,&components[componentCount].price, components[componentCount].date) == 8) {componentCount++;}fclose(file);printf("数据加载完成,共加载 %d 条记录。\n", componentCount);
      }

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

  1. SaveData():

    • 将当前电子元器件的数据从 components 数组保存回 “电子元器件.txt” 文件中。

    • 它以写模式打开文件,并迭代每个电子元器件,按指定格式将其信息写入文件。

      void SaveData() {printf("保存数据...\n");FILE* file = fopen("电子元器件.txt", "w");if (file == NULL) {printf("无法打开文件进行保存。\n");return;}for (int i = 0; i < componentCount; i++) {fprintf(file, "%s,%s,%s,%d,%s,%s,%.2f,%s\n", components[i].id, components[i].type, components[i].model,components[i].quantity, components[i].package, components[i].manufacturer, components[i].price, components[i].date);}fclose(file);printf("数据保存完成。\n");
      }
      
  2. Warehousing():

    • 允许用户输入新的电子元器件信息以进行入库(即添加到库存)。

    • 提示用户输入新元器件的细节,如 id、类型、型号、数量、封装、厂家、价格和日期。

    • 输入的数据然后存储在 components 数组中的下一个可用位置。

      void Shipment() {// 实现电子元器件出库的逻辑printf("电子元器件出库...\n");int numStudents;printf("请输入班级人数: ");scanf("%d", &numStudents);for (int i = 0; i < numStudents; i++) {char requiredType[20];int requiredQuantity;printf("请输入第%d位同学所需元器件类型和数量:\n", i + 1);scanf("%s %d", requiredType, &requiredQuantity);// 查找并扣除库存int found = 0;for (int j = 0; j < componentCount; j++) {if (strcmp(components[j].type, requiredType) == 0) {if (components[j].quantity >= requiredQuantity) {components[j].quantity -= requiredQuantity;found = 1;break;}else {printf("库存不足,无法出库 %s 数量 %d。\n", requiredType, requiredQuantity);found = 1;break;}}}if (!found) {printf("未找到类型为 %s 的元器件,出库无效。\n", requiredType);}}printf("出库完成。\n");
      }
      
  3. Shipment():

    • 促进将电子元器件从库存中发货的过程。
    • 用户输入他们需要发货的元器件类型和数量。
    • 系统检查库存中是否有请求的数量,并在有库存时扣减相应数量。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

  1. Display():

    • 打印当前库存中的电子元器件列表。
    • 它遍历 components 数组并显示每个元器件的详细信息,包括 id、类型、型号、数量、封装、厂家、价格和日期。
  2. Statistics():

    • 计算与库存中的电子元器件相关的统计信息。
    • 它通过将每种元器件的数量乘以其价格并求和来计算库存中所有元器件的总价值,以及唯一类型元器件的总数。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

  1. Sort():
    • 基于元器件的数量,对库存中的电子元器件进行降序排序。

    • 它实现了冒泡排序算法,根据每个元器件的数量重新排列 components 数组。

    • 排序后,调用 Display() 函数打印已排序的元器件列表。

      void Sort() {// 实现数据排序的逻辑,按库存数量由多到少排序for (int i = 0; i < componentCount - 1; i++) {for (int j = 0; j < componentCount - i - 1; j++) {if (components[j].quantity < components[j + 1].quantity) {// 交换元素ElectronicComponent temp = components[j];components[j] = components[j + 1];components[j + 1] = temp;}}}Display();
      }
      

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里的copilot通义灵码,ai代码生成插件,个人免费使用,支持vscode,idea等,在通义灵码用户互动还可以领盲盒

我之前用的 copilot&#xff0c;使用一段时间感觉差别不大&#xff0c;重要的是免费&#xff0c;没有体验过 copilot 的可以体验一下这个&#xff0c;个人是免费的&#xff0c;登陆也方便&#xff0c;推荐没用过的尝试一下&#xff0c;可以省去 copilot 的费用 通义灵码&#x…

CentOS7安装flink1.17完全分布式

前提条件 准备三台CenOS7机器&#xff0c;主机名称&#xff0c;例如&#xff1a;node2&#xff0c;node3&#xff0c;node4 三台机器安装好jdk8&#xff0c;通常情况下&#xff0c;flink需要结合hadoop处理大数据问题&#xff0c;建议先安装hadoop&#xff0c;可参考 hadoop安…

前端跨页面通信方案介绍

在浏览器中&#xff0c;我们可以同时打开多个Tab页&#xff0c;每个Tab页可以粗略理解为一个“独立”的运行环境&#xff0c;即使是全局对象也不会在多个Tab间共享。然而有些时候&#xff0c;我们希望能在这些“独立”的Tab页面之间同步页面的数据、信息或状态。这就是本文说说…

hadoop 高可用(HA)、HDFS HA、Yarn HA

目录 hadoop 高可用(HA) HDFS高可用 HDFS高可用架构 QJM 主备切换&#xff1a; Yarn高可用 hadoop 高可用(HA) HDFS高可用 HDFS高可用架构 QJM 主备切换&#xff1a; Yarn高可用

C# WPF编程-命令

C# WPF编程-命令 概述WPF命令模型ICommand接口RoutedCommand类RoutedUICommand类命令库 概述 使用路由事件可以响应广泛的鼠标和键盘事件&#xff0c;这些事件是低级的元素。在实际应用程序中&#xff0c;功能被划分成一些高级的任务。这些任务可通过各种不同的动作和用户界面…

Git 核心知识

2024年4月2日更新 Git 安装 官网下载&#xff0c;Git 选择合适的版本&#xff0c;无脑下一步即可。 安装成功之后&#xff0c;鼠标右键任意的文件夹&#xff0c;会出现 Git GUI 的选项&#xff0c;即安装成功 安装注意事项 安装前&#xff0c;检查环境变量 &#xff0c; 如…

C#/WPF 使用开源Wav2Lip做自己的数字人(无需安装环境)

实现效果 Speaker Wav2Lip概述 2020年&#xff0c;来自印度海德拉巴大学和英国巴斯大学的团队&#xff0c;在ACM MM2020发表了的一篇论文《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》&#xff0c;在文章中&#xff0c;他们提出一个叫做Wa…

Ansys Zemax | 如何将光栅数据从Lumerical导入至OpticStudio(上)

附件下载 联系工作人员获取附件 本文介绍了一种使用Ansys Zemax OpticStudio和Lumerical RCWA在整个光学系统中精确仿真1D/2D光栅的静态工作流程。将首先简要介绍方法。然后解释有关如何建立系统的详细信息。 本篇内容将分为上下两部分&#xff0c;上部将首先简要介绍方法工…

视频监控/云存储/磁盘阵列/AI智能分析平台EasyCVR集成时调用接口报跨域错误是什么原因?

EasyCVR视频融合平台基于云边端架构&#xff0c;可支持海量视频汇聚管理&#xff0c;能提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务。平台兼容性强&#xff0c;支持多协议、多类型设备接入&#xff0c;包括&#xff1a;国标G…

Git 如何合并多个连续的提交

我平常的编程喜欢是写一段代码就提交一次&#xff0c;本地一般不攒代码&#xff0c;生怕本地有什么闪失导致白干。但这样就又导致一个问题&#xff1a;查看历史日志时十分不方便&#xff0c;随便找一段提交可以看到&#xff1a; > git log --oneline 8f06be5 add 12/qemu-h…

数据基础设施投资将进一步扩大!请问现在开融资融券账户交易佣金利率最低是多少?怎么开户!

请问现在开融资融券账户交易佣金利率最低是多少&#xff1f;怎么开户&#xff01; 融资融资利率没有最低的说法&#xff0c;利率一般都是相对的&#xff0c;融资融券的利率通常约为6%以上&#xff0c;当然这个也会根据市场货币的政策有所变动&#xff0c;比如现在的的货币政策…

多态--下

文章目录 概念多态如何实现的指向谁调谁&#xff1f;例子分析 含有虚函数类的大小是多少&#xff1f;虚函数地址虚表地址多继承的子类的大小怎么计算&#xff1f;练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…