飞机到达目的地后,游客的行李会进入传送带,由游客自行在取行李处拿取,虽然机场出口处,有工作人员在检查,但也难免会出现拿错行李的事情。请用c语言为机场设计一个游客取行李的程序,游客在取行李处,输入自己的身份证号后才能取到自己的行李。 要求: 使用线性表实现行李存储,行李信息表如下: 行李编号 行李航班 姓名 身份证号 行李状态 001 UC8866 张里 510199909090002 到达 002 NI7755 李丽 510200012290001 已取 003 MQ9090 王一 510198810090003 未取 004 BU8080 赵山 610197708080022 未到达 游客输入身份证号,即可获取对应行李箱状态,并领取本人行李箱。 显示欢迎类语句,为游客增加美好的体验感。 代码符合规范,正确、易读、易操作。 分析代码的运行效率,如时间复杂度和空间复杂度。
时间: 2023-10-04 20:12:14 浏览: 64
以下是一个基于线性表的机场取行李程序的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ID_LEN 18 // 身份证号最大长度
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_FLIGHT_LEN 10 // 航班号最大长度
#define MAX_ITEMS 100 // 行李箱最大数量
typedef struct {
char id[MAX_ID_LEN]; // 身份证号
char name[MAX_NAME_LEN]; // 姓名
char flight[MAX_FLIGHT_LEN]; // 航班号
char status[4]; // 行李箱状态:到达、未到达、已取
} Item;
Item items[MAX_ITEMS]; // 行李箱信息数组
int item_count = 0; // 行李箱数量
void add_item(char* id, char* name, char* flight, char* status) {
if (item_count >= MAX_ITEMS) {
printf("行李箱已满,无法添加新项\n");
return;
}
strcpy(items[item_count].id, id);
strcpy(items[item_count].name, name);
strcpy(items[item_count].flight, flight);
strcpy(items[item_count].status, status);
item_count++;
}
int find_item(char* id) {
for (int i = 0; i < item_count; i++) {
if (strcmp(items[i].id, id) == 0) {
return i;
}
}
return -1;
}
void print_item(Item* item) {
printf("行李编号:%d,航班:%s,姓名:%s,身份证号:%s,状态:%s\n",
item - items + 1, item->flight, item->name, item->id, item->status);
}
void print_all_items() {
for (int i = 0; i < item_count; i++) {
print_item(&items[i]);
}
}
int main() {
// 添加一些测试数据
add_item("510199909090002", "张里", "UC8866", "到达");
add_item("510200012290001", "李丽", "NI7755", "已取");
add_item("510198810090003", "王一", "MQ9090", "未取");
add_item("610197708080022", "赵山", "BU8080", "未到达");
printf("欢迎来到机场取行李系统!\n");
while (1) {
char id[MAX_ID_LEN];
printf("请输入您的身份证号:");
scanf("%s", id);
int idx = find_item(id);
if (idx < 0) {
printf("未找到您的行李箱,请确认输入正确的身份证号\n");
} else {
Item* item = &items[idx];
printf("您的行李箱信息如下:\n");
print_item(item);
if (strcmp(item->status, "已取") == 0) {
printf("您的行李箱已经取走,感谢使用我们的服务!\n");
} else {
printf("请到取行李处领取您的行李箱,祝您旅途愉快!\n");
}
}
}
}
```
该程序使用一个 `Item` 结构体来存储每个行李箱的信息,包括身份证号、姓名、航班号和状态等字段。行李箱信息存储在一个静态数组中,使用 `add_item()` 函数添加新行李箱,使用 `find_item()` 函数根据身份证号查找行李箱。程序主循环中,读取用户输入的身份证号,调用 `find_item()` 查找行李箱,并根据行李箱状态输出不同的提示信息。
时间复杂度方面,添加和查找行李箱的时间复杂度均为 $O(n)$,其中 $n$ 是行李箱数量。空间复杂度为 $O(n)$,需要存储所有行李箱的信息。
阅读全文