网站制作代码官网设计制作
2026/4/18 5:39:28 网站建设 项目流程
网站制作代码,官网设计制作,在线花钱做网站,网页游戏网络游戏题⽬ 1#xff1a;数据持久化——增加与保存 【任务】#xff1a;编写程序#xff0c;从控制台输⼊ 5 个廉江红橙产地的信息#xff0c;将其存⼊结构体数组中#xff0c;并 使⽤ fprintf 函数将数组内容持久化存储到名为 farms.txt 的⽂本⽂件中。 ⽂件操作重点#xff1…题⽬1数据持久化——增加与保存【任务】编写程序从控制台输⼊5个廉江红橙产地的信息将其存⼊结构体数组中并使⽤fprintf函数将数组内容持久化存储到名为farms.txt的⽂本⽂件中。⽂件操作重点使⽤w模式打开⽂件掌握fprintf的格式化写⼊。要求每⾏存储⼀个产地的信息字段间⽤空格分隔。代码1project1_add.cpp/* 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; }题⽬2数据过滤——读取与删除【任务】先将farms.txt中的所有数据加载到结构体数组中。⽤户输⼊⼀个要删除的“产地ID”程序在数组中剔除该条⽬后将剩余数据重新覆盖写⼊farms.txt。⽂件操作重点使⽤r模式读取feof()或fscanf() ! EOF判断⽂件结尾。删除逻辑在内存数组中完成删除再通过重新打开⽂件并写⼊来实现“物理删除”。/* 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⼀样先展⽰当前所有数据每⾏3个并对⻬ printf(\n--- 当前廉江红橙产地列表 ---\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; }题⽬3精准更新——加载与修改【任务】实现交互式修改。1.程序打开⽂件并加载所有ID供⽤户预览。2.⽤户输⼊⽬标ID。3.程序提⽰⽤户选择修改项1.修改名称2.修改产量。4.⽤户输⼊新值后程序更新数组并同步回⽂件。⽂件操作重点掌握“内存加载-修改-重新回写”的完整链路。要求利⽤switch-case结构处理⽤户的修改选择/* 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; }题⽬4条件检索——读取与查询【任务】编写⼀个查询⼯具。⽤户输⼊⼀个“产量阈值”程序打开⽂件读取数据通过遍历结构体数组筛选并打印出所有产量⼤于该阈值的产地信息。⽂件操作重点使⽤循环配合fscanf逐⾏解析数据。逻辑重点考查结构体成员的访问与逻辑判断表达式。/* 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; }

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询