news 2026/4/17 22:53:13

实验四 ysy

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
实验四 ysy
/* project1_add.增加数据 */ #include <stdio.h> #include <stdlib.h> typedef struct { int id; // 产地ID char name[50]; // 产地名称 int yield; // 产量(吨) } OrangeFarm; int main() { OrangeFarm new_farm; // 本次只需定义一个结构体变量用于追加 FILE *fp; // 1. 从控制台录入单条需要追加的数据 printf("--- 廉江红橙产地数据追加 ---\n"); printf("请输入新增产地信息(格式:ID 名称 产量):\n"); if (scanf("%d %s %d", &new_farm.id, new_farm.name, &new_farm.yield) != 3) { printf("输入格式错误。\n"); return 1; } // 2. 以追加模式("a")打开文件 // "a"代表append。如果文件不存在会创建;如果存在,指针直接指向文件末尾 fp = fopen("farms.txt", "a"); // 检查文件打开是否成功 if (fp == NULL) { printf("错误:无法打开文件进行追加!\n"); return 1; } // 3. 使用fprintf写入新数据 // 务必保留末尾的\n,确保下一条追加的数据能另起一行 fprintf(fp, "%d %s %d\n", new_farm.id, new_farm.name, new_farm.yield); // 4. 关闭文件 fclose(fp); printf("\n新记录已成功追加至 farms.txt 末尾。\n"); return 0; }
/* project2_delete.删除信息 */ #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main() { OrangeFarm farms[100]; // 假设最多存储100个产地 int count = 0; int deleteId; char confirm; FILE *fp; // 1. 读取文件内容到内存数组 fp = fopen("farms.txt", "r"); if (fp == NULL) { printf("错误:无法打开 farms.txt,请确保文件已存在。\n"); return 1; } // 循环读取直到文件末尾 while (fscanf(fp, "%d %s %d", &farms[count].id, farms[count].name, &farms[count].yield) == 3) { count++; } fclose(fp); if (count == 0) { printf("数据库为空,无数据可删除。\n"); return 0; } // 2. 展示当前所有数据,每行3个并对齐 printf("--- 当前廉江红橙产地列表 ---\n"); for (int i = 0; i < count; i++) { printf("[%d] %-12s", farms[i].id, farms[i].name); if ((i + 1) % 3 == 0) { printf("\n"); // 每行输出3个后换行 } } printf("\n------------------------\n"); // 3. 用户输入要删除的ID printf("请输入要删除的产地ID:"); scanf("%d", &deleteId); // 查找该ID所在的索引 int targetIndex = -1; for (int i = 0; i < count; i++) { if (farms[i].id == deleteId) { targetIndex = i; break; } } if (targetIndex == -1) { printf("错误:未找到ID为 %d 的记录。\n", deleteId); return 0; } // 4. 显示具体信息并进行确认 printf("\n拟删除记录详情:\n"); printf("ID:%d | 名称:%s | 产量:%d 吨\n", farms[targetIndex].id, farms[targetIndex].name, farms[targetIndex].yield); printf("警告:此操作不可撤回!确定删除吗?(y/n):"); getchar(); // 清除之前输入的换行符,防止scanf直接读取回车 scanf("%c", &confirm); if (confirm != 'y' && confirm != 'Y') { printf("操作已安全取消。\n"); return 0; } // 5. 在数组中进行"逻辑删除" // 将目标位置之后的元素全部向前移动一位 for (int i = targetIndex; i < count - 1; i++) { farms[i] = farms[i + 1]; } count--; // 总数减1 // 6. 重新写回文件(覆盖模式) fp = fopen("farms.txt", "w"); if (fp == NULL) { printf("系统错误:无法更新文件数据。\n"); return 1; } for (int i = 0; i < count; i++) { fprintf(fp, "%d %s %d\n", farms[i].id, farms[i].name, farms[i].yield); } fclose(fp); printf("成功:ID为 %d 的记录已从系统中彻底移除。\n", deleteId); return 0; }
/* project3_alter.修改信息 */ #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main() { OrangeFarm farms[100]; int count = 0; int targetId, choice; FILE *fp; // 1. 加载数据到内存 fp = fopen("farms.txt", "r"); if (fp == NULL) { printf("错误:无法打开 farms.txt,请确保文件已存在。\n"); return 1; } while (fscanf(fp, "%d %s %d", &farms[count].id, farms[count].name, &farms[count].yield) == 3) { count++; } fclose(fp); if (count == 0) { printf("数据库为空,请先添加数据。\n"); return 0; } // 2. 展示已有ID,每行3个并对齐 printf("--- 当前系统内的产地ID列表 ---\n"); for (int i = 0; i < count; i++) { printf("[%d] %-12s", farms[i].id, farms[i].name); // %-12s保证名称左对齐 if ((i + 1) % 3 == 0) { printf("\n"); // 每行输出3个后换行 } } printf("\n------------------------\n"); // 3. 用户选择要修改的ID printf("请输入您想要修改的产地ID:"); scanf("%d", &targetId); int index = -1; for (int i = 0; i < count; i++) { if (farms[i].id == targetId) { index = i; break; } } if (index == -1) { printf("未找到ID为 %d 的记录。\n", targetId); return 0; } // 4. 选择修改项 printf("\n已锁定产地:%s(产量:%d 吨)\n", farms[index].name, farms[index].yield); printf("1. 修改产地名称\n"); printf("2. 修改预计产量\n"); printf("3. 取消修改\n"); printf("请选择操作(1-3):"); scanf("%d", &choice); switch (choice) { // 使用switch-case处理多选项 case 1: printf("请输入新的名称:"); scanf("%s", farms[index].name); break; case 2: printf("请输入新的产量(吨):"); scanf("%d", &farms[index].yield); break; case 3: printf("操作已取消。\n"); return 0; default: printf("非法输入,操作终止。\n"); return 0; } // 5. 写回文件 fp = fopen("farms.txt", "w"); if (fp == NULL) { printf("回写文件失败!\n"); return 1; } for (int i = 0; i < count; i++) { fprintf(fp, "%d %s %d\n", farms[i].id, farms[i].name, farms[i].yield); } fclose(fp); printf("ID为 %d 的记录已成功更新。\n", targetId); return 0; }
/* project4_search.查询信息 */ #include <stdio.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main() { FILE *fp; OrangeFarm temp; int threshold; int foundCount = 0; // 1. 打开文件进行读取 fp = fopen("farms.txt", "r"); if (fp == NULL) { printf("错误:无法打开数据文件 farms.txt,请确保文件已存在。\n"); return 1; } // 2. 获取用户查询条件 printf("--------- 廉江红橙产量筛选系统 ---------\n"); printf("请输入产量阈值(吨):"); if (scanf("%d", &threshold) != 1) { printf("输入无效。\n"); fclose(fp); // 记得关闭文件 return 1; } printf("\n正在查询产量大于 %d 吨的产地...\n", threshold); printf("----------------------------------------\n"); printf("%-10s %-20s %-10s\n", "ID", "产地名称", "预计产量(吨)"); printf("----------------------------------------\n"); // 3. 循环逐行解析数据 // fscanf返回成功读取的项目数,若达到文件末尾则返回EOF while (fscanf(fp, "%d %s %d", &temp.id, temp.name, &temp.yield) == 3) { // 4. 执行逻辑判断与成员访问 if (temp.yield > threshold) { printf("%-10d %-20s %-10d\n", temp.id, temp.name, temp.yield); foundCount++; } } // 5. 结果汇总 if (foundCount == 0) { printf("未找到产量超过 %d 吨的记录。\n", threshold); } else { printf("----------------------------------------\n"); printf("查询完毕,共找到 %d 条记录。\n", foundCount); } // 6. 必须执行的文件关闭操作 fclose(fp); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 8:15:24

大数据领域Kafka在社交媒体数据处理中的应用

大数据领域Kafka在社交媒体数据处理中的应用关键词&#xff1a;大数据、Kafka、社交媒体数据处理、消息队列、分布式系统摘要&#xff1a;本文深入探讨了大数据领域中Kafka在社交媒体数据处理方面的应用。首先介绍了Kafka和社交媒体数据处理的背景知识&#xff0c;包括其目的、…

作者头像 李华
网站建设 2026/4/18 7:25:41

AI驱动的企业创新项目管理:敏捷方法与AI的结合

AI驱动的企业创新项目管理:敏捷方法与AI的结合 关键词:AI、企业创新项目管理、敏捷方法、结合、项目效率 摘要:本文深入探讨了AI驱动的企业创新项目管理中敏捷方法与AI结合的相关内容。随着企业面临的竞争环境日益复杂,创新项目管理的重要性愈发凸显。敏捷方法以其灵活性和…

作者头像 李华
网站建设 2026/4/18 7:23:18

海曦技术加持!AI梦想家一键生成职业梦想,点亮班会高光时刻

AI梦想家——海曦技术加持&#xff0c;专为中小学班会、教育培训机构打造的职业形象生成体验产品&#xff01;依托海曦技术赋能的拍照、语音识别与AI图像生成三大核心能力&#xff0c;将孩子的梦想职业直观可视化。管理后台、学校管理端、教师端三端协同&#xff0c;扫码即可便…

作者头像 李华
网站建设 2026/4/18 8:36:20

巴菲特的圈子能力理论

巴菲特的圈子能力理论 关键词:巴菲特、圈子能力理论、投资决策、能力边界、商业洞察力、风险管理、长期价值 摘要:本文深入探讨了巴菲特的圈子能力理论。该理论核心强调投资者应明确自身的能力边界,专注于自己熟悉和理解的领域进行投资决策。文章从理论的背景介绍出发,剖析…

作者头像 李华
网站建设 2026/4/18 7:25:54

ZGLanguage 解析SQL数据血缘 之 提取select语句中的源表名

# 假设存在 SQL代码 如下&#xff1a;SELECT CL.OBJECTNO, AL.PAYDATEFROM NYBDP.O_SS_CL_LOAN_ACCT_STATIS CLinner JOIN O_CWWS_ACCT_LOAN ALON 11LEFT out JOIN NYBDP.O_CWWS_BUSINESS_DUEBILL BDON 11LEFT JOIN O_CWWS_BUSINESS_CONTRACT BCON 11 ;# 若要提取以上SQL代码中…

作者头像 李华
网站建设 2026/4/18 7:31:50

实现CarSim/TruckSim与Simulink联合仿真:键盘操控车辆全方位指南

CarSim or TruckSim与Simulink联合仿真&#xff0c;使用键盘控制车辆加速&#xff0c;减速&#xff0c;转向&#xff0c;包含前进与后退档位切换&#xff0c;支持自定义按键功能&#xff0c;支持拓展 提供carsim参数配置文件&#xff0c;导入即可运行 提供simulink模型文件 提供…

作者头像 李华