用C语言写一个代码,飞机到达目的地后,游客的行李会进入传送带,由游客自行在取行李处拿取,虽然机场出口处,有工作人员在检查,但也难免会出现拿错行李的事情。请为机场设计一个游客取行李的程序,游客在取行李处,输入自己的身份证号后才能取到自己的行李。 要求: 使用线性表实现行李存储,行李信息表如下: 行李编号 行李航班 姓名 身份证号 行李状态 001 UC8866 张里 510199909090002 到达 002 NI7755 李丽 510200012290001 已取 003 MQ9090 王一 510198810090003 未取 004 BU8080 赵山 610197708080022 未到达 游客输入身份证号,即可获取对应行李箱状态,并领取本人行李箱。 显示欢迎类语句,为游客增加美好的体验感。 代码符合规范,正确、易读、易操作。 分析代码的运行效率,如时间复杂度和空间复杂度。
时间: 2023-07-16 08:11:40 浏览: 60
以下是用C语言实现机场取行李的程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
typedef struct {
char id[19]; // 身份证号
char flight[7]; // 航班号
char name[20]; // 姓名
char status[5]; // 行李状态
} Luggage;
typedef struct {
Luggage data[MAX_SIZE];
int length;
} LuggageList;
void init(LuggageList* list) {
list->length = 4;
Luggage l1 = {"510199909090002", "UC8866", "张里", "到达"};
Luggage l2 = {"510200012290001", "NI7755", "李丽", "已取"};
Luggage l3 = {"510198810090003", "MQ9090", "王一", "未取"};
Luggage l4 = {"610197708080022", "BU8080", "赵山", "未到达"};
list->data[0] = l1;
list->data[1] = l2;
list->data[2] = l3;
list->data[3] = l4;
}
int search(LuggageList list, char* id) {
for (int i = 0; i < list.length; i++) {
if (strcmp(list.data[i].id, id) == 0) {
return i;
}
}
return -1;
}
void display(LuggageList list, int index) {
printf("欢迎您,%s先生/女士!\n", list.data[index].name);
printf("您的行李状态为:%s\n", list.data[index].status);
if (strcmp(list.data[index].status, "未取") == 0) {
printf("请到取行李处领取您的行李!\n");
}
}
int main() {
LuggageList list;
init(&list);
char id[19];
printf("请输入您的身份证号:");
scanf("%s", id);
int index = search(list, id);
if (index == -1) {
printf("未找到您的行李信息,请联系工作人员!\n");
} else {
display(list, index);
}
return 0;
}
```
程序首先定义了一个结构体 `Luggage`,表示行李的信息。然后定义了另一个结构体 `LuggageList`,表示行李列表,其中包含了行李数组和数组长度。
在主函数中,首先通过 `init` 函数初始化了行李列表。然后要求用户输入身份证号,接着调用 `search` 函数查找该身份证号对应的行李信息。如果找到了,就调用 `display` 函数显示该用户的行李状态和取行李的提示信息。
`search` 函数使用了线性查找算法,遍历行李列表,查找身份证号与输入的身份证号相同的行李信息。如果找到了,返回该行李信息在数组中的下标,否则返回 -1。
`display` 函数根据行李状态的不同,显示不同的提示信息,为用户提供方便。
程序的时间复杂度为 O(n),空间复杂度为 O(n),其中 n 为行李的数量。
阅读全文