👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、基本要求
- 电子元器件管理系统设计与实现(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 退出系统
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈
三、代码分析
各个代码模块功能分析:
- 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); }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈
- 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"); }
- 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"); }
- Shipment():
- 促进将电子元器件从库存中发货的过程。
- 用户输入他们需要发货的元器件类型和数量。
- 系统检查库存中是否有请求的数量,并在有库存时扣减相应数量。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈
- Display():
- 打印当前库存中的电子元器件列表。
- 它遍历
components
数组并显示每个元器件的详细信息,包括 id、类型、型号、数量、封装、厂家、价格和日期。
- Statistics():
- 计算与库存中的电子元器件相关的统计信息。
- 它通过将每种元器件的数量乘以其价格并求和来计算库存中所有元器件的总价值,以及唯一类型元器件的总数。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈
- 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(); }
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 电子元器件 ” 获取。👈👈👈