用c语言写一个快递信息查询系统
时间: 2023-11-25 12:06:35 浏览: 88
以下是一个简单的快递信息查询系统的C语言代码示例,实现了查询、更新、添加、删除等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义快递信息结构体
typedef struct {
char id[20]; // 快递单号
char sender[30]; // 寄件人姓名
char sender_addr[50]; // 寄件人地址
char receiver[30]; // 收件人姓名
char receiver_addr[50]; // 收件人地址
char status[20]; // 快递状态
} Express;
// 声明函数
void add_express(Express *p_expresses[], int *p_cnt);
void search_express(Express *p_expresses[], int cnt);
void update_express(Express *p_expresses[], int cnt);
void delete_express(Express *p_expresses[], int *p_cnt);
int main() {
int cnt = 0; // 快递数量
int option = 0; // 选项
Express *expresses[100]; // 最多存储100个快递信息
while (1) {
// 显示菜单
printf("快递信息查询系统\n");
printf("1. 添加快递信息\n");
printf("2. 查询快递信息\n");
printf("3. 更新快递信息\n");
printf("4. 删除快递信息\n");
printf("5. 退出\n");
printf("请选择操作:");
scanf("%d", &option);
switch (option) {
case 1:
add_express(expresses, &cnt);
break;
case 2:
search_express(expresses, cnt);
break;
case 3:
update_express(expresses, cnt);
break;
case 4:
delete_express(expresses, &cnt);
break;
case 5:
printf("谢谢使用!\n");
return 0;
default:
printf("无效选项!\n");
break;
}
}
return 0;
}
// 添加快递信息
void add_express(Express *p_expresses[], int *p_cnt) {
if (*p_cnt >= 100) {
printf("快递信息已满,无法添加!\n");
return;
}
// 动态分配内存
Express *p_new = (Express *)malloc(sizeof(Express));
if (!p_new) {
printf("内存分配失败!\n");
return;
}
printf("请输入快递单号:");
scanf("%s", p_new->id);
printf("请输入寄件人姓名:");
scanf("%s", p_new->sender);
printf("请输入寄件人地址:");
scanf("%s", p_new->sender_addr);
printf("请输入收件人姓名:");
scanf("%s", p_new->receiver);
printf("请输入收件人地址:");
scanf("%s", p_new->receiver_addr);
printf("请输入快递状态:");
scanf("%s", p_new->status);
p_expresses[(*p_cnt)++] = p_new; // 将新快递信息添加到数组中
printf("添加成功!\n");
}
// 查询快递信息
void search_express(Express *p_expresses[], int cnt) {
char id[20];
printf("请输入要查询的快递单号:");
scanf("%s", id);
for (int i = 0; i < cnt; i++) {
if (strcmp(p_expresses[i]->id, id) == 0) {
printf("快递单号:%s\n", p_expresses[i]->id);
printf("寄件人姓名:%s\n", p_expresses[i]->sender);
printf("寄件人地址:%s\n", p_expresses[i]->sender_addr);
printf("收件人姓名:%s\n", p_expresses[i]->receiver);
printf("收件人地址:%s\n", p_expresses[i]->receiver_addr);
printf("快递状态:%s\n", p_expresses[i]->status);
return;
}
}
printf("未查询到该快递信息!\n");
}
// 更新快递信息
void update_express(Express *p_expresses[], int cnt) {
char id[20];
printf("请输入要更新的快递单号:");
scanf("%s", id);
for (int i = 0; i < cnt; i++) {
if (strcmp(p_expresses[i]->id, id) == 0) {
printf("请输入新的快递状态:");
scanf("%s", p_expresses[i]->status);
printf("更新成功!\n");
return;
}
}
printf("未查询到该快递信息!\n");
}
// 删除快递信息
void delete_express(Express *p_expresses[], int *p_cnt) {
char id[20];
printf("请输入要删除的快递单号:");
scanf("%s", id);
for (int i = 0; i < *p_cnt; i++) {
if (strcmp(p_expresses[i]->id, id) == 0) {
// 释放内存
free(p_expresses[i]);
// 将数组中的后续快递信息向前移动一位
for (int j = i; j < *p_cnt - 1; j++) {
p_expresses[j] = p_expresses[j + 1];
}
(*p_cnt)--;
printf("删除成功!\n");
return;
}
}
printf("未查询到该快递信息!\n");
}
```
该示例代码使用数组来存储快递信息,并使用动态内存分配来添加、删除快递信息。在实际应用中,可以使用文件或数据库来存储数据,以便查询时能够快速访问。