简单的快递管理系统(c语⾔版)--⼤⼀下的总结
⼤⼀下的课设任务之⼀是设计⼀个管理系统,上课期间突发奇想–设计⼀个简单的快递管理系统。
代码中⽤到的技术⽐较简单,但是知识点⽐较多,在编写过程中遇到的bug和困难也不少。
主要运⽤到的技术有:链表的增删改查,⽂件的⼀系列操作,链表输出到⽂件,⽂件内容提取到链表、函数的重构等。
1. 快递管理系统主要的⾓⾊有:商品(即快递)、快递员、快递仓库管理⼈员、消费者。
2. 快递管理系统主要的功能有:快递员送快递、查询⼿中未送快递;消费者购买快递、查询购买快递情况、取快递;快递仓库管理⼈员
查看仓库快递信息、改变仓库快递信息、统计⼀个消费者的快递数量;较为完整的菜单界⾯。
3. 快递管理系统运⽤的主要算法是链表的增删改查。
4. 快递管理系统还加⼊了⾝份验证功能,虽然这些⾝份信息是提前写好的并且已经告知使⽤者,但这也体现了设计的思想。
5. 代码中的部分注释是对功能的解释,部分注释是在构思中所写,仅供参考。
6. 管理系统的默认登录密码在注释中已给出,请根据密码进⾏登录和操作。本管理系统为了简单起见,把快递员、消费者、管理⼈员均
各看成⼀类⼈员,⽀持修改密码功能。
⼤⼀的时光已然过去,爱过、甜过也痛苦过、失望过,可⽆论在哪⾥、在做什么,编程始终是⼼中所爱,当然,还有那个远⽅的她…
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LENGTH sizeof(struct Goods)
#define FILENAME1 ""
#define FILENAME2 ""
/*
快递员的账号:courier,默认密码:123456
消费者的账号:consumer,默认密码:123456
仓库管理⼈员的账号:manager,默认密码:123456
*/
//⾓⾊设计:⽤户、商品
struct Goods
{
char name[30];//由于⼀个汉字占两个字符,快递名字不要超过15个字
char ownerName[10];//收货⼈名字⼀般为2或3个字
char ownerTel[15];//电话号码⼀般为11位
struct Goods * next;//根据输⼊的数据形成快递链表,存⼊数据⽂件中
};//商品
struct User
{
char account[20];
char password[20];
};
/*struct Consumers{
char name[20];
char tel[15];
char goodsName[20];
struct Consumers * next;
};*///消费者
/*struct Courier{
char name[20];
char tel[15];
struct Goods * TSGoods;//快递员⼿中的暂存快递链表,还未存⼊快递仓库中
};*///快递员
/*struct Manager{
struct Goods * goods;//快递仓库管理⼈员管理的仓库快递链表
};*///快递仓库管理⼈员
//开辟链表。在运⾏期间存储快递仓库的数据
/
/开辟链表。在运⾏期间存储快递仓库的数据
struct Goods * goodsStart =NULL;
struct Goods * goodsEnd =NULL;
//开辟链表,在运⾏期间存储暂存仓库的数据
struct Goods * goodsTemStart =NULL;
struct Goods * goodsTemEnd =NULL;
//主函数,程序⼊⼝
int main()
{
//函数声明
void save(struct Goods *goods,char fileName[],char fileOpenWay[]);
void read(char fileName[]);
void add(char addWay[]);
void find(char name[],char ownerName[],char ownerTel[]);
void change(char name[],char ownerName[],char ownerTel[],char oldOwnerName[],char oldOwnerTel[]);
void send(char name[],char ownerName[],char ownerTel[]);
void getGoods(char ownerName[],char ownerTel[]);
void create();
int validation(char account[],char password[],char fileName[]);
void statistics(char ownerName[],char ownerTel[]);
void changePassword(char account[],char newPassword[],char fileName[]);
//构造菜单界⾯的变量
int welcome;
for(welcome=0;welcome<11;welcome++)
{
if(welcome==5)
{
printf("** 欢迎进⼊快递管理系统 **");
}else if(welcome==8)
{
printf("** programmed by 于卓冉 **");
}else if(welcome==9)
{
printf("** 计算机类三班 **");
}
else
printf("** **");
}
int count;
printf("*****************************您是否是第⼀次操作本程序,如果是请按1进⾏数据初始化,不是请按2*****************************\n"); printf(" ------温馨提⽰:在本程序中,请您以换⾏的⽅式输⼊每⼀个数据");
scanf("%d",&count);
if(count ==1)
{
create();
goto A;
}else if(count ==2)英文剧本
{
goto B;
}
A:
for(welcome=0;welcome<11;welcome++)
{
if(welcome==5)
{
printf("** 请依次进⾏快递仓库、快递员暂存快递初始化 **");
printf(" ------提⽰:所有初始化信息将被存⼊数据⽂件中");
}else
{
printf("** **");
printf("** **");
}
}
//先进⾏商品仓库的初始化
add("goods");
goodsEnd = goodsStart;
//暂存快递初始化
add("goodsTem");
goodsTemEnd = goodsTemStart;
/*
将初始化的仓库快递链表数据输出到⽂件中
打开⽅式为“a”,⽆法进⾏读,只能进⾏写⼊
*/
save(goodsStart, FILENAME1,"a");
//将初始化的暂存快递链表数据输出到⽂件中
save(goodsTemStart, FILENAME2,"a");
/
/设计菜单
B:for(welcome=0;welcome<12;welcome++)
{
if(welcome==3)
{
printf("********************************************| 快递管理系统菜单 |*********************************************"); }else if(welcome==4)
{
printf("********************************************| |*********************************************");
}else if(welcome==5)
{
printf("********************************************| 选择快递员请按1 |*********************************************");
}else if(welcome==6)
{
printf("********************************************| 选择消费者请按2 |*********************************************");
}else if(welcome==7)
{
printf("********************************************| 选择快递仓库管理⼈员请按3 |*********************************************"); }else if(welcome==8)
{
printf("********************************************-------------------------------*********************************************");
}else
{
printf("************************************************************************************************************************");
}
}
//四个变量⽤于进⼊不同的⾝份与功能
int number, number1, number2, number3;
scanf("%d",&number);
if(number ==1)
{
printf("** 请输⼊您的账户和密码进⾏⾝份验证: **");
char account[20];
char password[20];
scanf("%s",account);
scanf("%s",password);
if(validation(account,password,"")==0)
{
goto B;
}
C:for(welcome=0;welcome<12;welcome++)
{
if(welcome==2)
{
printf("** 您现在是快递员 **");
}else if(welcome==4)
{
printf("** | 选择送快递请按1 | **");
}else if(welcome==5)
{
printf("** | 选择查看⼿中快递情况请按2 | **");
}else if(welcome==6)
{
printf("** | 选择返回菜单请按3 | **");
}else if(welcome==7)
{
printf("** | 选择修改密码请按4 | **");
}
else if(welcome==8)
{
printf("** ------------------------------- **");
}else
{
printf("** **");
}
}
scanf("%d",&number1);
if(number1 ==1)
{
char name[30];
char ownerName[10];
char ownerTel[15];
printf("** 请依次输⼊您要送的快递名称、收货者名字、⼿机号码: **\n");
scanf("%s",name);
scanf("%s",ownerName);
scanf("%s",ownerTel);
send(name,ownerName,ownerTel);
goto C;
}else if(number1 ==2)
{
简体字转换繁体字read(FILENAME2);
goto C;
}else if(number1==3)
{
goto B;
}else if(number1==4)
{
char account[20];
char newPassword[20];
神武反制宠printf("** 请输⼊您的账户和新的密码: **");
scanf("%s",account);
scanf("%s",newPassword);情侣个性签名一对
changePassword(account,newPassword,"");
goto B;
}
}else if(number ==2)
{
printf("** 请输⼊您的账户和密码进⾏⾝份验证: **");
char account[20];
char password[20];
scanf("%s",account);
scanf("%s",password);
if(validation(account,password,"")==0)
{
goto B;
关于老师的故事}
D:for(welcome=0;welcome<12;welcome++)
{
if(welcome==2)
{
printf("** 您现在是消费者 **");
}else if(welcome==4)
{
printf("** | 选择取快递请按1 | **");
}else if(welcome==5)
{
printf("** | 选择购买商品请按2 | **");
}else if(welcome==6)
{
printf("** | 选择查询快递情况请按3 | **");
}else if(welcome==7)
{
printf("** | 选择返回菜单请按4 | **");
}else if(welcome==8)
{
printf("** | 选择修改密码请按5 | **");
}
else if(welcome==9)
{
printf("** ------------------------------- **");
}else
{
printf("** **");
为高考加油的暖心句子}
}
scanf("%d",&number2);
if(number2 ==1)
{
char ownerName[10];
char ownerTel[15];
printf("** 请输⼊您的名字及电话号码: **");
scanf("%s",ownerName);
scanf("%s",ownerTel);
getGoods(ownerName,ownerTel);
goto D;
}else if(number2 ==2)
{
//将购买的商品的数据先添加到暂存快递链表中
add("goodsTem");
//只是将链表尾的数据输出到⽂件中。⽤“a+”或“a”的⽅式打开⽂件,进⾏追加数据
save(goodsTemEnd, FILENAME2,"a+");
goto D;
}else if(number2 ==3)
{
char name[30];
char ownerName[10];
char ownerTel[15];
printf("** 请依次输⼊您的快递名称、您的名字、⼿机号码: **");
scanf("%s",name);
scanf("%s",ownerName);
scanf("%s",ownerTel);
find(name,ownerName,ownerTel);
goto D;
}else if(number2==4)
{
goto B;
}else if(number2==5)
{
char account[20];
char newPassword[20];
printf("** 请输⼊您的账户和新的密码: **");
scanf("%s",account);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论