c语言利用txt文件写一个大约500行的快递管理系统
时间: 2023-12-24 13:04:43 浏览: 160
好的,以下是一个简单的C语言快递管理系统,使用了txt文件进行数据的存储。这个快递管理系统可以实现基本的快递信息的录入、查询、修改和删除等功能。当然,这只是一个简单的示例,您可以根据自己的需求进行修改和扩展。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 100
// 定义快递信息结构体
typedef struct {
char name[MAXSIZE];
char phone[MAXSIZE];
char address[MAXSIZE];
char company[MAXSIZE];
char status[MAXSIZE];
} Express;
// 定义快递信息数组
Express expressList[MAXSIZE];
// 定义全局变量,记录快递数量
int count = 0;
// 从文件读取快递信息
void readFromFile() {
FILE *fp;
fp = fopen("express.txt", "r");
if (fp == NULL) {
printf("文件打开失败");
exit(0);
}
while (!feof(fp)) {
fscanf(fp, "%s %s %s %s %s", expressList[count].name, expressList[count].phone, expressList[count].address, expressList[count].company, expressList[count].status);
count++;
}
fclose(fp);
}
// 将快递信息写入文件
void writeToFile() {
FILE *fp;
fp = fopen("express.txt", "w");
if (fp == NULL) {
printf("文件打开失败");
exit(0);
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s %s %s %s\n", expressList[i].name, expressList[i].phone, expressList[i].address, expressList[i].company, expressList[i].status);
}
fclose(fp);
}
// 添加快递信息
void addExpress() {
if (count >= MAXSIZE) {
printf("快递数量已达上限");
return;
}
printf("请输入快递信息:\n");
printf("姓名:");
scanf("%s", expressList[count].name);
printf("电话:");
scanf("%s", expressList[count].phone);
printf("地址:");
scanf("%s", expressList[count].address);
printf("快递公司:");
scanf("%s", expressList[count].company);
strcpy(expressList[count].status, "未签收");
count++;
printf("添加成功\n");
writeToFile();
}
// 查询快递信息
void queryExpress() {
char name[MAXSIZE];
printf("请输入要查询的姓名:");
scanf("%s", name);
printf("查询结果:\n");
for (int i = 0; i < count; i++) {
if (strcmp(name, expressList[i].name) == 0) {
printf("姓名:%s\n", expressList[i].name);
printf("电话:%s\n", expressList[i].phone);
printf("地址:%s\n", expressList[i].address);
printf("快递公司:%s\n", expressList[i].company);
printf("状态:%s\n", expressList[i].status);
return;
}
}
printf("未查询到该快递信息\n");
}
// 修改快递信息
void modifyExpress() {
char name[MAXSIZE];
printf("请输入要修改的姓名:");
scanf("%s", name);
for (int i = 0; i < count; i++) {
if (strcmp(name, expressList[i].name) == 0) {
printf("请输入新的电话:");
scanf("%s", expressList[i].phone);
printf("请输入新的地址:");
scanf("%s", expressList[i].address);
printf("请输入新的快递公司:");
scanf("%s", expressList[i].company);
printf("修改成功\n");
writeToFile();
return;
}
}
printf("未查询到该快递信息\n");
}
// 删除快递信息
void deleteExpress() {
char name[MAXSIZE];
printf("请输入要删除的姓名:");
scanf("%s", name);
for (int i = 0; i < count; i++) {
if (strcmp(name, expressList[i].name) == 0) {
for (int j = i; j < count; j++) {
strcpy(expressList[j].name, expressList[j+1].name);
strcpy(expressList[j].phone, expressList[j+1].phone);
strcpy(expressList[j].address, expressList[j+1].address);
strcpy(expressList[j].company, expressList[j+1].company);
strcpy(expressList[j].status, expressList[j+1].status);
}
count--;
printf("删除成功\n");
writeToFile();
return;
}
}
printf("未查询到该快递信息\n");
}
// 打印菜单
void printMenu() {
printf("1. 添加快递信息\n");
printf("2. 查询快递信息\n");
printf("3. 修改快递信息\n");
printf("4. 删除快递信息\n");
printf("5. 退出\n");
}
int main() {
readFromFile();
int choice;
while (1) {
printMenu();
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
addExpress();
break;
case 2:
queryExpress();
break;
case 3:
modifyExpress();
break;
case 4:
deleteExpress();
break;
case 5:
printf("谢谢使用\n");
exit(0);
default:
printf("无效的选择,请重新输入\n");
break;
}
}
return 0;
}
```
其中,快递信息会被存储在`express.txt`文件中,每一行表示一个快递信息。每个字段之间使用空格分隔。这个文件应该事先存在于您的工作目录中。
阅读全文