怎样将订单信息保存到文件中,并且在程序启动时读取文件中的信息?
时间: 2025-09-04 15:13:22 AIGC 浏览: 3
在C语言中,可以使用文件操作函数将宅急送订单管理系统中的订单信息保存到文件中,并且在程序启动时读取文件中的订单信息。以下是在之前代码基础上进行修改,添加文件保存和读取功能的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ORDERS 100
// 定义订单结构体
typedef struct {
int order_id;
char sender[50];
char receiver[50];
float weight;
char status[20];
} Order;
Order orders[MAX_ORDERS];
int order_count = 0;
// 添加订单
void add_order() {
if (order_count >= MAX_ORDERS) {
printf("订单数量已达到上限,无法添加!\n");
return;
}
Order new_order;
printf("请输入订单编号: ");
scanf("%d", &new_order.order_id);
printf("请输入发货人姓名: ");
scanf("%s", new_order.sender);
printf("请输入收货人姓名: ");
scanf("%s", new_order.receiver);
printf("请输入货物重量: ");
scanf("%f", &new_order.weight);
printf("请输入订单状态: ");
scanf("%s", new_order.status);
orders[order_count++] = new_order;
printf("订单添加成功!\n");
}
// 显示所有订单
void display_orders() {
if (order_count == 0) {
printf("暂无订单信息!\n");
return;
}
printf("订单编号\t发货人\t收货人\t货物重量\t订单状态\n");
for (int i = 0; i < order_count; i++) {
printf("%d\t%s\t%s\t%.2f\t%s\n", orders[i].order_id, orders[i].sender, orders[i].receiver, orders[i].weight, orders[i].status);
}
}
// 将订单信息保存到文件
void save_orders_to_file() {
FILE *file = fopen("orders.txt", "w");
if (file == NULL) {
printf("无法打开文件!\n");
return;
}
for (int i = 0; i < order_count; i++) {
fprintf(file, "%d %s %s %.2f %s\n", orders[i].order_id, orders[i].sender, orders[i].receiver, orders[i].weight, orders[i].status);
}
fclose(file);
printf("订单信息已保存到文件!\n");
}
// 从文件中读取订单信息
void load_orders_from_file() {
FILE *file = fopen("orders.txt", "r");
if (file == NULL) {
printf("未找到订单文件,将使用空订单列表。\n");
return;
}
order_count = 0;
while (order_count < MAX_ORDERS && fscanf(file, "%d %s %s %f %s", &orders[order_count].order_id, orders[order_count].sender, orders[order_count].receiver, &orders[order_count].weight, orders[order_count].status) != EOF) {
order_count++;
}
fclose(file);
printf("订单信息已从文件中加载!\n");
}
int main() {
load_orders_from_file();
int choice;
do {
printf("\n宅急送订单管理系统\n");
printf("1. 添加订单\n");
printf("2. 显示所有订单\n");
printf("3. 保存订单信息到文件\n");
printf("4. 退出\n");
printf("请输入你的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_order();
break;
case 2:
display_orders();
break;
case 3:
save_orders_to_file();
break;
case 4:
save_orders_to_file();
printf("退出系统!\n");
break;
default:
printf("无效的选择,请重新输入!\n");
}
} while (choice != 4);
return 0;
}
```
### 代码解释
- `save_orders_to_file` 函数:使用 `fopen` 以写入模式打开文件 `orders.txt`,然后使用 `fprintf` 将每个订单的信息逐行写入文件,最后使用 `fclose` 关闭文件[^1]。
- `load_orders_from_file` 函数:使用 `fopen` 以读取模式打开文件 `orders.txt`,使用 `fscanf` 逐行读取文件中的订单信息,并将其存储到 `orders` 数组中,直到文件结束或达到最大订单数,最后使用 `fclose` 关闭文件[^1]。
阅读全文
相关推荐



















