给我一个c语言实例包括以下内容:用户可以凭取货码领取快递,并且管理员可以记录快递领取记录,用户也可以查询并领取快递。
时间: 2024-06-10 07:05:55 浏览: 134
c# 邮件收发系统案例
4星 · 用户满意度95%
好的,以下是一个简单的C语言实例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct express {
char code[10];
char name[20];
};
struct record {
char code[10];
char name[20];
int status; // 0-未领取 1-已领取
};
struct record *records[100]; // 最多存储100条记录
int record_count = 0;
void add_record(char *code, char *name, int status) {
struct record *r = (struct record *)malloc(sizeof(struct record));
strcpy(r->code, code);
strcpy(r->name, name);
r->status = status;
records[record_count++] = r;
}
void list_records() {
printf("取货码\t\t姓名\t\t领取状态\n");
for(int i=0; i<record_count; i++) {
printf("%s\t\t%s\t\t%s\n", records[i]->code, records[i]->name, records[i]->status ? "已领取" : "未领取");
}
}
int main() {
struct express express_list[100]; // 最多存储100件快递
int express_count = 0;
while(1) {
printf("\n请选择要执行的操作:\n");
printf("1. 领取快递\n");
printf("2. 查询快递\n");
printf("3. 显示所有领取记录\n");
printf("4. 退出\n");
int choice;
printf("\n请输入要执行的操作的编号:");
scanf("%d", &choice);
if(choice == 1) {
printf("\n请输入取货码:");
char code[10];
scanf("%s", code);
int found = 0;
for(int i=0; i<express_count; i++) {
if(strcmp(code, express_list[i].code) == 0) {
printf("您的快递是:%s\n", express_list[i].name);
add_record(code, express_list[i].name, 1); // 添加领取记录
found = 1;
break;
}
}
if(!found) {
printf("找不到对应的快递,请重新输入!\n");
}
} else if(choice == 2) {
printf("\n请输入姓名:");
char name[20];
scanf("%s", name);
int found = 0;
for(int i=0; i<express_count; i++) {
if(strcmp(name, express_list[i].name) == 0) {
printf("您的快递的取货码是:%s\n", express_list[i].code);
found = 1;
break;
}
}
if(!found) {
printf("找不到对应的快递,请重新输入!\n");
}
} else if(choice == 3) {
list_records();
} else if(choice == 4) {
break;
} else {
printf("无效的选择,请重新输入!\n");
}
}
// 释放内存
for(int i=0; i<record_count; i++) {
free(records[i]);
}
return 0;
}
```
这个程序可以让用户凭取货码领取快递,并且管理员可以记录快递领取记录,用户也可以查询并领取快递。具体的实现逻辑如下:
1. 用户可以通过选择菜单项1来输入取货码,程序会查找对应的快递,如果找到就输出快递的名称,并且记录领取记录。
2. 用户可以通过选择菜单项2来输入姓名,程序会查找对应的快递并输出取货码。
3. 用户可以通过选择菜单项3来列出所有的领取记录。
4. 用户可以通过选择菜单项4来退出程序。
5. 管理员可以通过添加快递名称和对应的取货码到`express_list`数组中,每次有用户领取快递时,程序会将领取记录添加到`records`数组中。在程序结束前,所有动态分配的内存都会被释放掉。
希望对你有所帮助!
阅读全文