用C语言飞机到达目的地后,游客的行李会进入传送带,由游客自行在取行李处拿取,虽然机场出口处,有工作人员在检查,但也难免会出现拿错行李的事情。请为机场设计一个游客取行李的程序,游客在取行李处,输入自己的身份证号后才能取到自己的行李。 要求: 使用线性表实现行李存储,行李信息表如下: 行李编号 行李航班 姓名 身份证号 行李状态 001 UC8866 张里 510199909090002 到达 002 NI7755 李丽 510200012290001 已取 003 MQ9090 王一 510198810090003 未取 004 BU8080 赵山 610197708080022 未到达 游客输入身份证号,即可获取对应行李箱状态,并领取本人行李箱。 显示欢迎类语句,为游客增加美好的体验感。 代码符合规范,正确、易读、易操作。 分析代码的运行效率,如时间复杂度和空间复杂度。
时间: 2024-02-26 14:52:24 浏览: 141
好的,我会为您解答这个问题。
首先,我们可以使用一个结构体来表示每一个行李箱,包含行李编号、行李航班、姓名、身份证号和行李状态等信息。然后,我们可以使用一个线性表(如数组)来存储所有的行李箱信息。
当游客到达取行李处时,程序会提示游客输入身份证号。然后,程序会遍历整个行李箱信息表,查找与该身份证号对应的行李箱信息,并显示该行李箱的状态。如果该行李箱状态为“已取”,则提示游客已经领取过行李箱;如果该行李箱状态为“未取”,则将该行李箱状态更新为“已取”,并提示游客领取行李箱成功。
下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LUGGAGE_NUM 1000
typedef struct {
char number[10];
char flight[10];
char name[20];
char id[20];
char status[10];
} Luggage;
int main() {
Luggage luggages[MAX_LUGGAGE_NUM] = {
{"001", "UC8866", "张里", "510199909090002", "到达"},
{"002", "NI7755", "李丽", "510200012290001", "已取"},
{"003", "MQ9090", "王一", "510198810090003", "未取"},
{"004", "BU8080", "赵山", "610197708080022", "未到达"}
};
int luggageNum = 4;
char id[20];
printf("欢迎来到机场取行李!\n");
printf("请输入您的身份证号:");
scanf("%s", id);
int i;
for (i = 0; i < luggageNum; i++) {
if (strcmp(luggages[i].id, id) == 0) {
printf("您的行李箱状态为:%s\n", luggages[i].status);
if (strcmp(luggages[i].status, "已取") == 0) {
printf("您已经领取过行李箱,请勿重复操作!\n");
} else {
strcpy(luggages[i].status, "已取");
printf("恭喜您成功领取行李箱!\n");
}
break;
}
}
if (i == luggageNum) {
printf("未找到与您身份证号对应的行李箱信息,请检查输入是否正确!\n");
}
return 0;
}
```
这个程序的时间复杂度为O(n),其中n为行李箱数量。空间复杂度为O(n),需要一个长度为n的数组来存储行李箱信息。
阅读全文