给我一个c语言实例:可以进行用户以及管理员登录;管理员可以管理快递信息,录入用户信息以及货架号,用户可以凭取货码领取快递,并且管理员可以记录快递领取记录,用户也可以查询并领取快递。
时间: 2024-05-12 21:18:37 浏览: 8
好的,以下是一个示例C语言代码,实现了用户和管理员的登录、快递信息管理、以及快递领取记录的记录和查询功能。注意,这只是一个简单的示例代码,实际应用中还需要进行完善和优化。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_USERS 100
#define MAX_PACKAGES 1000
struct user {
char username[20];
char password[20];
int isAdmin;
};
struct package {
char shelf[20];
char code[20];
char owner[20];
char status[20];
};
struct user users[MAX_USERS];
int numUsers = 0;
struct package packages[MAX_PACKAGES];
int numPackages = 0;
void addUser() {
if (numUsers >= MAX_USERS) {
printf("Too many users!\n");
return;
}
printf("Enter username: ");
scanf("%s", users[numUsers].username);
printf("Enter password: ");
scanf("%s", users[numUsers].password);
printf("Is this user an admin? (0=no, 1=yes): ");
scanf("%d", &users[numUsers].isAdmin);
numUsers++;
}
void addPackage() {
if (numPackages >= MAX_PACKAGES) {
printf("Too many packages!\n");
return;
}
printf("Enter shelf: ");
scanf("%s", packages[numPackages].shelf);
printf("Enter code: ");
scanf("%s", packages[numPackages].code);
printf("Enter owner: ");
scanf("%s", packages[numPackages].owner);
strcpy(packages[numPackages].status, "unclaimed");
numPackages++;
}
void login() {
char username[20];
char password[20];
printf("Enter username: ");
scanf("%s", username);
printf("Enter password: ");
scanf("%s", password);
int isAdmin = 0;
for (int i = 0; i < numUsers; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
isAdmin = users[i].isAdmin;
break;
}
}
if (isAdmin) {
printf("Welcome admin!\n");
printf("1. Add user\n");
printf("2. Add package\n");
printf("3. View package status\n");
printf("4. Exit\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
addUser();
break;
case 2:
addPackage();
break;
case 3:
printf("Enter package code: ");
char code[20];
scanf("%s", code);
struct package *p = NULL;
for (int i = 0; i < numPackages; i++) {
if (strcmp(packages[i].code, code) == 0) {
p = &packages[i];
break;
}
}
if (p != NULL) {
printf("Shelf: %s\n", p->shelf);
printf("Owner: %s\n", p->owner);
printf("Status: %s\n", p->status);
} else {
printf("Package not found!\n");
}
break;
case 4:
printf("Goodbye!\n");
exit(0);
default:
printf("Invalid choice!\n");
}
} else {
printf("Welcome user!\n");
printf("1. Claim package\n");
printf("2. Exit\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
printf("Enter package code: ");
char code[20];
scanf("%s", code);
struct package *p = NULL;
for (int i = 0; i < numPackages; i++) {
if (strcmp(packages[i].code, code) == 0) {
p = &packages[i];
break;
}
}
if (p != NULL && strcmp(p->status, "unclaimed") == 0) {
strcpy(p->status, "claimed");
printf("Package claimed!\n");
} else {
printf("Package not found or already claimed!\n");
}
break;
case 2:
printf("Goodbye!\n");
exit(0);
default:
printf("Invalid choice!\n");
}
}
}
int main() {
while (1) {
printf("1. Login\n");
printf("2. Exit\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
login();
break;
case 2:
printf("Goodbye!\n");
exit(0);
default:
printf("Invalid choice!\n");
}
}
return 0;
}
```