我的网站:https://www.liuzhi.org.cn 大家可以进入看看! 运行软件CodeBlocks
#include
#include
#include
#include
#define h1 "===============货物信息数据如下==============\n"
#define h2 "|编号 |名称 |价格 |\n"
#define h3 "|=====|=====|=====|\n"
#define h4 "|%-5s |%-4s |%4d |\n"
#define dataBase p->date.num,p->date.name,p->date.money
#define END "------------------------------------\n"
#define e 123456
#define m 123456
int saveflag=0;//判断是否进行保存
/*****定义货物信息********/
struct goods
{
char num[10];
char name[10];
int money;
};
/**数据的数据域和指针域***/
typedef struct Record
{
struct goods date;
struct Record *next;
} record,*connect;
/*****定义客户信息*******/
struct guest
{
char account[10];//账户
char password[10];//密码
};
void choose(connect pCur);
void admin(connect pCur);
void menu();
void keep(connect pCur);
void Alter0(connect pCur);
void Alter1(connect pCur);
void Alter2(connect pCur);
void Query0(connect pCur);
void Query00(connect pCur);
void Query1(connect pCur);
void Query2(connect pCur);
void Query3(connect pCur);
void Query4(connect pCur);
void Delete0(connect pCur);
void Delete1(connect pCur);
void Delete2(connect pCur);
void Add(connect pCur);
void Insert(connect pCur);
void Unfind();
void Output(record *pp);
void Header();
void Display(connect pCur);
void land0(connect pCur);
void land1(connect pCur);
void registerAccount(connect pCur);
void guest(connect pCur);
void alterPassword(connect pCur);
/*******主函数*******/
/****输入无,输出选择的界面*****/
int main()
{
connect pCur;
record *p,*s;
FILE *fp;
pCur = (record *)malloc(sizeof(record));
s=pCur;
if(!pCur)
{
printf("没有申请到空间\n");
}
pCur->next=NULL;
fp=fopen("goods","ab+");
if(fp==NULL)
{
printf("无法打开文档\n");
exit(0);
}
while(!feof(fp))
{
p=(record *)malloc(sizeof(record));
if(!p)
{
printf("没有申请成功\n");
}
if(fread(p,sizeof(record),1,fp)==1)
{
p->next=NULL;
s->next=p;
s=p;
}
}
fclose(fp);
printf("\n ==========>打开文件成功==========\n");
char ch='z';
while((ch!='m')&&(ch!='s'))
{
system("cls");
printf("\t************仓库信息管理系统***************\n");
printf("\t** 姓名: **\n");
printf("\t** 班级: **\n");
printf("\t** 学号: **\n");
printf("\t*******************************************\n");
printf("\t请选择进入系统的身份。\n");
printf("\tm, 管理端\n\ts, 客户端\n");
printf("\t请选择:");
choose(pCur);
}
return 0;
}
/***选择管理员界面,客户端界面*******/
/******输入头指针,输出选择的界面******/
void choose(connect pCur)
{
int a,b;
char ch;
ch=getchar();
if(ch=='m')
{ system("cls");
printf("定义管理员账号密码为123456,123456\n");
printf("请输入账号:");
scanf("%d",&a);
printf("请输入密码:");
scanf("%d",&b);
if(a==e&&b==m)
{
admin(pCur);
}
else
{
printf("输入错误,按任意键重新选择。");
getchar();
choose(pCur);
}
}
else if(ch=='s')
{
land0(pCur);
}
}
/*****管理选择界面********/
/******输入头指针,输出选择的界面******/
void admin(connect pCur)
{
int a;
int b;
system("cls");
while(pCur)
{
printf("输入任意键继续");
getchar();
system("cls");
menu();
printf("输入操作指令,0为可进行保存:");
scanf("%d",&a);
if(a==0)
{
if(saveflag==1)
{
getchar();
printf("\n==是否要保存,y或Y进行保存==\n");
char ch;
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
keep(pCur);
}
printf("=====保存成功=====");
getchar();
}
}
switch(a)
{
case 1:
Add (pCur);
break;
case 2:
Alter0(pCur);
break;
case 3:
Query0(pCur);
break;
case 4:
Delete0(pCur);
break;
case 5:
Insert(pCur);
break;
case 6:
Display(pCur);
break;
case 7:
main();
break;
default :
system("cls");
printf("输入错误,输入1重新输入,输入其他退出程序\n");
printf("请输入您的选择");
scanf("%d",&b);
if(b==1)
{
admin(pCur);
}
else
{
exit(0);
}
break;
}
}
}
/*****客户端选择界面********/
/******输入头指针,输出选择的界面******/
void guest(connect pCur)
{
int a;
system("cls");
printf("--------------欢迎你来到仓库信息管理系统------------------\n");
printf("1,查询货物信息 2,修改账户 \n");
printf("3. 返回上一级 4.退出程序\n");
printf("请你输入命令:");
scanf("%d",&a);
switch(a)
{
case 1:
Query00(pCur);
break;
case 2:
alterPassword(pCur);
break;
case 3:
land0(pCur);
break;
default :
printf("感谢您使用程序");
exit(0);
break;
}
}
/*****管理员端的菜单显示*******/
/******输入无,输出界面******/
void menu()//admin的菜单
{
printf("\t************************************\n");
printf("\t* 仓库信息管理系统 *\n");
printf("\t************************************\n");
printf("\t************************************\n");
printf("\t* *1.添加信息 *2.修改信息 *\n");
printf("\t* *\n");
printf("\t* *3.查询信息 *4.删除信息 *\n");
printf("\t* *\n");
printf("\t* *5.插入信息 *6.打印数据 *\n");
printf("\t* *\n");
printf("\t* *7.返回上一级 *0.保存数据 *\n");
printf("\t* *\n");
printf("\t*更改信息后要进行保存操作 *\n");
printf("\t************************************* \n");
printf("\t*************************************\n");
}
/****客户端登陆界面******/
/******输入头指针,输出程序操作界面******/
void land0(connect pCur)
{
system("cls");
int a;
printf("欢迎进入客户端登陆界面,请按提示进行选择\n");
printf("1.登陆客户端 2.注册账户\n");
printf("3.返回上一级 4.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
land1(pCur);
break;
case 2:
system("cls");
registerAccount(pCur);
break;
case 3:
system("cls");
choose(pCur);
break;
default :
printf("感谢使用,再见!");
exit(0);
break;
}
}
/******客户账户登陆界面*******/
/******输入头指针,输出选择的界面******/
void land1(connect pCur)
{
FILE *fp;
struct guest *a[100];
int i=0,j=0;
int p=0,q=0;
int b;
char account[10],password[10];
fp=fopen("registerAccount","rb");
if(!fp)
{
printf("无客户账户信息");
exit(0);
}
printf("请进行登陆操作\n");
printf("请输入你的账户:");
scanf("%s",account);
printf("请输入你的密码:");
scanf("%s",password);
while(1)
{
a[i]=(struct guest *)malloc(sizeof(struct guest));
fscanf(fp,"%s %s",a[i]->account,a[i]->password);
if(feof(fp))
break;
i++;
}
for(j=0;j<=i;j++)
{
if(strcmp(account,a[j]->account)==0)
{
p++;
if(strcmp(password,a[j]->password)==0)
{
q++;
guest(pCur);
break;
}
}
else
{
continue;
}
}
system("cls");
if(p==0)
{
printf("账户不存在,请选择是否重新输入\n");
printf("请按提示进行选择:\n");
printf("1.重新输入 2.返回上一级\n");
printf("3.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&b);
switch(b)
{
case 1:
system("cls");
land1(pCur);
break;
case 2:
system("cls");
land0(pCur);
default :
printf("感谢使用,再见!");
exit(0);
break;
}
}
fclose(fp);
}
/****客户注册账户***/
/******输入头指针,输出注册提示******/
void registerAccount(connect pCur)
{
struct guest *a[100];
FILE *fp;
char account[10];
char password[10];
int i=0,s=0;
int p=0,b;
fp=fopen("registerAccount","a+");
if(!fp)
{
printf("申请客户文件夹失败");
exit(0);
}
while(1)
{
a[i]=(struct guest *)malloc(sizeof(struct guest));
fscanf(fp,"%s %s",a[i]->account,a[i]->password);
if(feof(fp))
break;
i++;
}
system("cls");
printf("请输入你的账户:");
scanf("%s",account);
printf("请输入你的密码:");
scanf("%s",password);
for(s=0;s<=i;s++)
{
if(strcmp(account,a[s]->account)==0)
{
p++;
break;
}
}
system("cls");
if(p!=0)
{
printf("该账号已被注册\n");
}
if(p==0)
{
fprintf(fp,"%s %s\n",account,password);
printf("账号注册成功\n");
}
fclose(fp);
printf("============请选择下步操作==========\n");
printf("1.再次注册 2.返回上一级\n");
printf("3.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&b);
switch(b)
{
case 1:
system("cls");
registerAccount(pCur);
break;
case 2:
system("cls");
land0(pCur);
break;
default :
printf("感谢使用,再见!");
exit(0);
break;
}
}
/****客户账户修改****/
/******输入头指针,输出注册提示******/
void alterPassword(connect pCur)
{
struct guest *a[100];
FILE *fp;
char account[10];
char password[10];
char password1[10];
int i=0,s=0;
int b;
fp=fopen("registerAccount","a+");
if(!fp)
{
printf("申请客户文件夹失败");
exit(0);
}
while(1)
{
a[i]=(struct guest *)malloc(sizeof(struct guest));
fscanf(fp,"%s %s",a[i]->account,a[i]->password);
if(feof(fp))
break;
i++;
}
system("cls");
printf("请输入你要修改的账户:");
scanf("%s",account);
printf("请输入账户密码:");
scanf("%s",password);
for(s=0;s<=i;s++)
{
if(strcmp(account,a[s]->account)==0)
{
if(strcmp(password,a[s]->password)==0)
{
printf("账户密码正确请进行修改\n");
break;
}
}
else
{
continue;
}
}
printf("请输入要修改的密码");
scanf("%s",password1);
fprintf(fp,"%s %s\n",account,password1);
printf("账号修改成功\n");
fclose(fp);
printf("============请选择下步操作==========\n");
printf("1.返回上一级 2.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&b);
switch(b)
{
case 1:
system("cls");
guest(pCur);
break;
default :
printf("感谢使用,再见!");
exit(0);
break;
}
}
/*****货物数据的保存****/
/******输入头指针,输出保存提示******/
void keep(connect pCur)//保存数据
{
FILE *fp;
record *p;
int a=0;
if((fp=fopen("goods","wb"))==NULL)
{
printf("\t 打开文件失败...");
getch();
system("cls");
return;
}
p=pCur->next;
while(p)
{
if( fwrite(p,sizeof(record),1,fp)==1)
{
p=p->next;
a++;
}
else
{
break;
}
}
if(a>0)
{
printf("\n\t 数据保存成功...");
getchar();
system("cls");
}
else
{
system("cls");
printf("\n\t 数据保存失败...");
getchar();
}
fclose(fp);
}
/*****货物数据的修改****/
/******输入头指针,输出修改结果******/
void Alter0(connect pCur)
{
system("cls");
int a;
printf("欢迎进入修改功能界面,请按照提示进行选择\n");
printf("1.编号修改 2.名称修改\n");
printf("3.返回上一级 4.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
Alter1(pCur);
break;
case 2:
system("cls");
Alter2(pCur);
break;
case 3:
system("cls");
admin(pCur);
break;
default :
system("cls");
exit(0);
break;
}
}
void Alter1(connect pCur)//按编号修改信息
{
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ───修改信息───\n");
printf("\t *********************\n");
printf("\t *1.按编号修改 \n");
printf("\t *********************\n");
record *p=pCur->next;
char findmess[20];
printf("输出货物信息");
Display(pCur);
printf("输入要修改的货物编号:");
scanf("%s",findmess);
while(p)
{
if(strcmp(p->date.num,findmess)==0)
{
printf("输入货物编号:");
scanf("%s",p->date.num);
printf("输入货物名称:");
scanf("%s",p->date.name);
printf("输入货物价格:");
scanf("%d",&p->date.money);
system("cls");
Display(p);
printf("\n=====》修改成功《=====\n");
break;
}
p=p->next;
}
if(p==NULL)
{
getchar();
printf("没有货物信息");
}
}
void Alter2(connect pCur)//按名称修改信息
{
system("cls");
printf("\n----------------------------------------------------\n");
printf("\t ───修改信息───\n");
printf("\t *********************\n");
printf("\t *1.按名称修改 \n");
printf("\t *********************\n");
record *p=pCur->next;
char findmess[20];
printf("输出货物信息");
Display(pCur);
printf("输入要修改的货物名称:");
scanf("%s",findmess);
while(p)
{
if(strcmp(p->date.name,findmess)==0)
{
printf("输入货物编号:");
scanf("%s",p->date.num);
printf("输入货物名称:");
scanf("%s",p->date.name);
printf("输入货物价格:");
scanf("%d",&p->date.money);
system("cls");
Display(p);
printf("\n=====》修改成功《=====\n");
break;
}
p=p->next;
}
if(p==NULL)
{
getchar();
printf("没有货物信息");
}
}
/*****货物数据的查询****/
/******输入头指针,输出查询结果******/
void Query0(connect pCur)
{
system("cls");
int a;
printf("\t欢迎进入查询功能界面,请按照提示进行选择\n");
printf("\t请按照提示进行选择!\n");
printf("\t1.编号查询 2.名称查询\n");
printf("\t3.价格查询 4.返回上一级菜单\n");
printf("\t5.退出程序\n ");
printf("\t请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
Query1(pCur);
break;
case 2:
system("cls");
Query2(pCur);
break;
case 3:
system("cls");
Query3(pCur);
break;
case 4:
system("cls");
admin(pCur);
break;
default :
system("cls");
exit(0);
break;
}
}
void Query00(connect pCur)
{
system("cls");
int a;
printf("\t欢迎进入查询功能界面,请按照提示进行选择\n");
printf("\t请按照提示进行选择!\n");
printf("\t1.编号查询 2.名称查询\n");
printf("\t3.价格查询 4.返回上一级菜单\n");
printf("\t5.退出程序\n ");
printf("\t请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
Query1(pCur);
printf("按任意键返回上一级");
getchar();
guest(pCur);
break;
case 2:
system("cls");
Query2(pCur);
printf("按任意键返回上一级");
getchar();
guest(pCur);
break;
case 3:
system("cls");
Query3(pCur);
printf("按任意键返回上一级");
getchar();
guest(pCur);
break;
case 4:
system("cls");
guest(pCur);
break;
default :
system("cls");
exit(0);
break;
}
}
void Query1(connect pCur)//按编号查询
{
system("cls");
printf("----------------------------------------------------\n");
printf("\t ───查询信息───\n");
printf("\t ┌─────────────┐\n");
printf("\t │1.按编号查询 \n");
printf("\t └─────────────┘\n");
record *p=pCur->next;
char name[20];
printf("输入要查询货物的编号:");
scanf("%s",name);
while(p)
{
if(strcmp(p->date.num,name)==0)
{
Header();
Output(p);
printf(END);
getchar();
}
p=p->next;
}
if(p==NULL)
{
getchar();
printf("没有货物信息");
}
}
void Query2(connect pCur)//按名称查询
{
system("cls");
printf("----------------------------------------------------\n");
printf("\t ───查询信息───\n");
printf("\t ┌─────────────┐\n");
printf("\t │1.按名称查询 \n");
printf("\t └─────────────┘\n");
record *p=pCur->next;
char name[20];
printf("输入要查询货物的名称:");
scanf("%s",name);
while(p)
{
if(strcmp(p->date.name,name)==0)
{
Header();
Output(p);
printf(END);
getchar();
}
p=p->next;
}
if(p==NULL)
{
getchar();
printf("没有货物信息");
}
}
void Query3(connect pCur)//按价格查询
{
system("cls");
printf("----------------------------------------------------\n");
printf("\t ───查询信息───\n");
printf("\t ┌─────────────┐\n");
printf("\t │1.按价格查询 \n");
printf("\t └─────────────┘\n");
record *p=pCur->next;
int money;
printf("输入要查询货物的价格:");
scanf("%d",&money);
while(p)
{
if(strcmp(p->date.money,money)==0)
{
Header();
Output(p);
printf(END);
getchar();
}
p=p->next;
}
if(p==NULL)
{
getchar();
printf("没有货物信息");
}
}
/*****货物数据的删除****/
/******输入头指针,输出删除结果******/
void Delete0(connect pCur)
{
system("cls");
int a;
printf("欢迎进入删除功能界面,请按照提示进行选择\n");
printf("1.编号删除 2.名称删除\n");
printf("3.返回上一级 4.退出程序\n");
printf("请输入你的选择:");
scanf("%d",&a);
switch(a)
{
case 1:
system("cls");
Delete1(pCur);
break;
case 2:
system("cls");
Delete2(pCur);
break;
case 3:
system("cls");
admin(pCur);
break;
default :
system("cls");
exit(0);
break;
}
}
void Delete1(connect pCur)//按编号删除
{
system("cls");
printf("----------------------------------------------------\n");
printf("\t ───删除信息───\n");
printf("\t ********************\n");
printf("\t *1.按编号删除\n");
printf("\t *******************\n");
record *p=pCur->next;
record *pre=pCur,*r=p,*rpre=pre;
char findmess[20];
Display(pCur);
printf("输入要删除的货物编号");
scanf("%s",findmess);
if(p)
{
if(strcmp(p->date.num,findmess)==0)
{
r=p;
rpre=pre;
pre=p;
p=p->next;
rpre->next=r->next;
free(r);
getchar();
printf("删除成功\n");
saveflag=1;
}
else
{
getchar();
printf("没有货物信息");
}
}
}
void Delete2(connect pCur)//按名称删除
{
system("cls");
printf("----------------------------------------------------\n");
printf("\t ───删除信息───\n");
printf("\t ********************\n");
printf("\t *1.按名称删除\n");
printf("\t *******************\n");
record *p=pCur->next;
record *pre=pCur,*r=p,*rpre=pre;
char findmess[20];
Display(pCur);
printf("输入要删除的货物名称");
scanf("%s",findmess);
if(p)
{
if(strcmp(p->date.name,findmess)==0)
{
r=p;
rpre=pre;
pre=p;
p=p->next;
rpre->next=r->next;
free(r);
getchar();
printf("删除成功\n");
saveflag=1;
}
else
{
getchar();
printf("没有货物信息");
}
}
}
/*****新货物数据的插入****/
/******输入头指针,输出插好后的结果******/
void Insert(connect pCur)//按货物的编号插入
{
connect p,n,newinsert;
char name2[20];
char ch;
int flog=0;
n=pCur->next;
system("cls");
Display(pCur);
printf("输入要插入之前的货物编号:");
scanf("%s",name2);
while(pCur)
{
flog=0;
n=pCur->next;
while(n)
{
if(strcmp(n->date.name,name2)==0)
{
flog=1;
break;
}
n=n->next;
}
if(flog==1)
break;
else
{
getchar();
printf("对不起,改编号不存在,要继续请输入y或Y\n,其他输入退出:");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
Insert(pCur);
}
else
{
exit(0);
}
}
}
printf("请输入要插入的货物");
char name3[20];
scanf("%s",name3);
n=pCur->next;
while(n)
{
if(strcmp(n->date.name,name3)==0)
{
printf("此货物编号已存在");
Header();
Output(n);
printf("\n");
getchar();
return ;
}
n=n->next;
}
newinsert = (record *)malloc(sizeof(record));
if(newinsert==NULL)
{
printf("未申请到空间");
return ;
}
strcpy( newinsert->date.num,name3);
printf("输入货物编号:%s\n",newinsert->date.num);
printf("输入货物名称:");
scanf("%s",newinsert->date.name);
printf("输入货物价格:");
scanf("%d",&newinsert->date.money);
saveflag=1;
p=pCur->next;
while(pCur)
{
if(strcmp(p->date.name,name2)==0)
{
newinsert->next=p->next;
p->next=newinsert;
break;
}
p=p->next;
}
system("cls");
Display(pCur);
}
/*****货物数据的添加****/
/******输入头指针,输出添加完成的结果******/
void Add(connect pCur)
{
record *p,*r,*s;
char ch;
int flog=0;
char num[20];
r=pCur;
s=pCur->next;
system("cls");
Display(pCur);
while(r->next!=NULL)
{
r=r->next;
}
while(pCur)
{
while(pCur)
{
printf("请输入货物编号,判断是否存在,当输入0时返回上一级菜单:");
printf("\n");
scanf("%s",num);
flog=0;
if(strcmp(num,"0")==0)
{
system("cls");
return ;
}
s=pCur->next;
while(s)
{
if(strcmp(s->date.name,num)==0)
{
flog=1;
break;
}
s=s->next;
}
if(flog==1)
{
getchar();
printf("货物编号重复是否重新输入,重新输入y或Y,否则返回菜单");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
continue;
}
else
{
admin(pCur);
}
}
else
{
break;
}
}
p=(record *)malloc(sizeof(record));
if(!p)
{
printf("未申请到空间");
return ;
}
printf("输入货物编号:");
scanf("%s",p->date.num);
printf("货物名称:");
scanf("%s",p->date.name);
printf("货物价格:");
scanf("%d",&p->date.money);
p->next=NULL;
r->next=p;
r=p;
saveflag=1;
}
return ;
}
/*****货物数据的显示****/
/******输入头指针,输出全部货物数据******/
void Display(connect pCur)//表格形式显示记录
{
system("cls");
record *p;
p=pCur->next;
if(!p)
{
printf("\n***************没有货物记录***************\n");
getchar();
return;
}
printf("\n\n");
Header();
while(p)
{
Output(p);
p=p->next;
printf(h3);
}
getchar();
}
void Header()
{
printf(h1);
printf(h2);
printf(h3);
}
void Output(record *pp)
{
record* p;
p=pp;
printf(h4,dataBase);
}
void Unfind()
{
printf("\n=========>未查到此货物信息!<==========\n");
}