#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _USER
{
char id[20];//账号
char code[20];//密码
char name[20];//收货人
char addr[20];//收货地址
}USER;
USER user[100];
int user_num=0;
typedef struct _EXPRESS
{
int no;//运单编号
char to_name[20];//收货人
char to_tel[20];//收货人号码
char from_name[20];//发货人
char style[20];//运单种类
char com[20];//承运公司
}EXPRESS;
EXPRESS exp[100];
int exp_num=0;
/*保存到文件*/
void Save_Exp()
{
int i;
FILE* fp=fopen("expinfo.dat","w+");
if(fp==NULL)
{
return ;
}
for(i=0;i<exp_num;i++)
{
fwrite(&exp[i],sizeof(EXPRESS),1,fp);
}
fclose(fp);
}
/*加载文件*/
void Open_Exp()
{
FILE* fp=fopen("expinfo.dat","r+");
if(fp==NULL)
{
exp_num=0;
return;
}
while(fread(&exp[exp_num],sizeof(EXPRESS),1,fp))
{
exp_num++;
}
fclose(fp);
}
/*保存到文件*/
void Save_User()
{
int i;
FILE* fp=fopen("userinfo.dat","w+");
if(fp==NULL)
{
return ;
}
for(i=0;i<user_num;i++)
{
fwrite(&user[i],sizeof(USER),1,fp);
}
fclose(fp);
}
/*加载文件*/
void Open_User()
{
FILE* fp=fopen("userinfo.dat","r+");
if(fp==NULL)
{
user_num=0;
return ;
}
while(fread(&user[user_num],sizeof(USER),1,fp))
{
user_num++;
}
fclose(fp);
}
void Display_Exp(EXPRESS arr[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%10d",arr[i].no);
printf("%10s",arr[i].to_name);
printf("%10s",arr[i].from_name);
printf("%10s\n",arr[i].com);
}
}
void Send_Exp(int who)
{
system("cls");
strcpy(exp[exp_num].from_name,user[who].name);
printf("请输入运单编号:");
scanf("%d",&exp[exp_num].no);
printf("请输入收货人:");
scanf("%s",exp[exp_num].to_name);
printf("请输入收货号码:");
scanf("%s",exp[exp_num].to_tel);
printf("请输入运单种类:");
scanf("%s",exp[exp_num].style);
printf("请输入承运公司:");
scanf("%s",exp[exp_num].com);
printf("运单创建成功!\n");
system("cls");
exp_num++;
}
void Serach_Name()
{
int i;
char temp[20];
system("cls");
printf("请输入要查询的取件人姓名:");
scanf("%s",temp);
printf("%10s%10s%10s%10s\n","运单编号","收货人","发货人","承运公司");
for(i=0;i<exp_num;i++)
{
if(!strcmp(temp,exp[i].to_name))
{
Display_Exp(&exp[i],1);
}
}
system("pause");
}
void Serach_No()
{
int i;
int temp;
system("cls");
printf("请输入要查询的快件单号:");
scanf("%d",&temp);
printf("%10s%10s%10s%10s\n","运单编号","收货人","发货人","承运公司");
for(i=0;i<exp_num;i++)
{
if(temp==exp[i].no)
{
Display_Exp(&exp[i],1);
}
}
system("pause");
}
void Modify(int who)
{
USER temp;
char chioce[20];
strcmp(temp.id,user[who].id);
system("cls");
printf("请输入新登录密码:");
scanf("%s",temp.code);
printf("请输入新收货人:");
scanf("%s",temp.name);
printf("请输入新收货地址:");
scanf("%s",temp.addr);
printf("确认修改?(Y/N):");
scanf("%s",chioce);
if(!strcmp(chioce,"Y")||!strcmp(chioce,"y"))
{
user[who]=temp;
printf("修改成功!\n");
}
else
{
printf("已取消修改!\n");
}
system("pause");
}
int Reg()
{
int i;
system("cls");
printf("请输入登录账号:");
scanf("%s",user[user_num].id);
printf("请输入登录密码:");
scanf("%s",user[user_num].code);
for(i=0;i<user_num;i++)
{
if(!strcmp(user[i].id,user[user_num].id))
{
printf("登陆成功!\n");
return i;
}
}
printf("登陆失败!账号或密码错误!\n");
system("pause");
return -1;
}
void Login()
{
int i;
system("cls");
printf("请输入申请账号:");
scanf("%s",user[user_num].id);
for(i=0;i<user_num;i++)
{
if(!strcmp(user[i].id,user[user_num].id))
{
printf("账号重复,注册失败!");
system("pause");
return ;
}
}
printf("请输入登录密码:");
scanf("%s",user[user_num].code);
printf("请输入收货人:");
scanf("%s",user[user_num].name);
printf("请输入收货地址:");
scanf("%s",user[user_num].addr);
printf("注册成功!\n");
user_num++;
system("pause");
}
void Get_Exp(int who)
{
int i,temp,j;
system("cls");
printf("请输入要签收的快件单号:");
scanf("%d",&temp);
for(i=0;i<exp_num;i++)
{
if(temp==exp[i].no)
{
break;
}
}
if(i==exp_num)
{
printf("无该快件号信息!\n");
return ;
}
if(strcmp(user[who].name,exp[i].to_name))//如果用户和收件人不一致
{
printf("该快件收件人非当前用户!取件失败!\n");
}
for(j=i;j<exp_num;j++)
{
exp[j]=exp[j+1];
}
printf("取件成功!");
system("pause");
}
int Main_Menu()
{
int chioce;
system("cls");
printf("1:登录\n");
printf("2:注册\n");
printf("0:退出\n");
printf("请输入选择:");
scanf("%d",&chioce);
while(chioce<0||chioce>2)
{
printf("选择错误,重新输入:");
scanf("%d",&chioce);
}
return chioce;
}
int User_Menu()
{
int chioce;
system("cls");
printf("1:修改账号信息\n");
printf("2:快件签收\n");
printf("3:按收货人查询快件\n");
printf("4:按单号查询快件\n");
printf("5:发送快件\n");
printf("0:退出\n");
printf("请输入选择:");
scanf("%d",&chioce);
while(chioce<0||chioce>5)
{
printf("选择错误,重新输入:");
scanf("%d",&chioce);
}
return chioce;
}
int main()
{
int chioce1,flag=-1,chioce2;
Open_Exp();
Open_User();
do
{
flag=-1;
chioce1=Main_Menu();
switch(chioce1)
{
case 1:
flag=Reg();
break;
case 2:
Login();
break;
}
if(flag !=-1 )//说明登录成功
{
chioce2=User_Menu();
switch(chioce2)
{
case 1:
Modify(flag);
break;
case 2:
Get_Exp(flag);
break;
case 3:
Serach_Name();
break;
case 4:
Serach_No();
break;
case 5:
Send_Exp(flag);
break;
}
}
}while(chioce1!=0);
Save_Exp();
Save_User();
return 0;
}
快递管理系统
最新推荐文章于 2024-06-16 18:17:18 发布