仓库库存管理系统源程序.docx
- 文档编号:11810697
- 上传时间:2023-06-02
- 格式:DOCX
- 页数:16
- 大小:16.75KB
仓库库存管理系统源程序.docx
《仓库库存管理系统源程序.docx》由会员分享,可在线阅读,更多相关《仓库库存管理系统源程序.docx(16页珍藏版)》请在冰点文库上搜索。
仓库库存管理系统源程序
仓库库存管理系统源程序
#include
#include
#include
#include
intshoudsave=0;
structitem//物品信息定义
{
charcode[10];//物品编码
charname[20];//物品名称
intnum;//商品数量
intlevel;//物品等级
}item;
typedefstructnode
{
structitemdata;
structnode*next;
}Node,*Link;//定义为链表
voidmenu()//页面显示函数
{
system("cls");//清屏函数
printf("***********************************《物品库存管理》*****************************\n");
printf("\n");
printf("\n<1>物品入库管理\n\t\n<2>物品出库管理\n");
printf("\n<3>浏览库内物品信息\n\t\n<4>修改物品信息\n");
printf("\n<5>保存物品信息\n\t\n<0>退出库存管理\n");
printf("\n");
cout<<"********************************************************************************"< printf("\n请选择操作: "); } voidprintstart() { printf("------------------------------------------\n"); } voidWrong()//错误处理函数 { printf("输入错误! \n"); getchar(); getchar(); menu(); return; } voidNofind() { printf("没有找到该物品! \n"); } voidprintc()//本函数用于输出中文 { printf("物品编码物品名称物品数量物品等级\n"); } voidprinte(Node*p)//输出物品信息函数 { cout< } Node*Locate(Linkl,charfindmess[],charnameorcode[])//用于定位连接中,符合要求的结点,并返回该指针 { Node*r; if(strcmp(nameorcode,"code")==0)// { r=l->next; while(r! =NULL) { if(strcmp(r->data.code,findmess)==0) returnr; r=r->next; } } else if(strcmp(nameorcode,"name")==0)//按名称查询 { r=l->next; while(r! =NULL) { if(strcmp(r->data.name,findmess)==0) returnr; r=r->next; } } return0; } voidAdd(Linkl)//增加物品函数 { Node*p,*r,*s; charcode[10]; r=l; s=l->next; while(r->next! =NULL) r=r->next; while(l) { system("cls");//清屏函数 cout<<"请输入商品编码(输入'0'返回上一级菜单): "< scanf("%s",code); if(strcmp(code,"0")==0) break; while(s) { if(strcmp(s->data.code,code)==0) { printf("物品编码为'%s'的物品已经存在,如果要修改请选择'4修改'! \n",code); printstart(); printc(); printe(s); printstart(); printf("\n"); return; } s=s->next; } p=(Node*)malloc(sizeof(Node)); strcpy(p->data.code,code); printf("请输入物品名称: "); scanf("%s",p->data.name); getchar(); printf("请输入物品数量: "); scanf("%d",&p->data.num); printf("请输入物品等级: "); scanf("%d",&p->data.level); p->next=NULL; r->next=p; r=p; shoudsave=1; } menu(); } voidQur(Linkl)//查询物品信息函数 { intsel; charfindmess[20]; Node*p; if(! l->next) { printf("\n没有信息可查询! \n"); getchar(); getchar(); menu(); return; } system("cls");//清屏函数 printf("\n1按物品编码查询\n2按物品名称查询\n"); scanf("%d",&sel); if(sel==1)// { printf("请输入要查询的编码: \n"); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) { printf("\t\t\t\t查询结果\n"); printstart(); cout< printc(); cout< printe(p); cout< printstart(); getchar(); getchar(); menu(); return; } else Nofind(); } else if(sel==2)// { printf("请输入要查找的物品名称: "); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { printf("\t\t\t查询结果\n"); printstart(); cout< printc(); cout< printe(p); cout< printstart(); getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong(); getchar(); system("cls");//清屏函数 menu(); } voidDel(Linkl)//删除 { intsel; Node*p,*r; charfindmess[20]; if(! l->next) { system("cls");//清屏函数 printf("\n您的仓库为空! \n"); getchar(); getchar(); menu(); return; } system("cls");//清屏函数 printf("\n1按物品编码出仓\n2按物品名称出仓\n"); scanf("%d",&sel); if(sel==1) { printf("请输入要出仓的物品编码: "); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) { r=l; while(r->next! =p) r=r->next; r->next=p->next; free(p); printf("\n该物品已经成功出仓\n"); shoudsave=1; getchar(); getchar(); menu(); return; } else Nofind(); } else if(sel==2) { system("cls");//清屏函数 printf("请输入要出仓的物品名: "); scanf("%s",findmess); p=Locate(l,findmess,"name"); if(p) { r=l; while(r->next! =p) r=r->next; r->next=p->next; free(p); printf("\n该物品已经成功出仓! \n"); shoudsave=1; getchar(); getchar(); menu(); return; } else Nofind(); } else Wrong(); } voidModify(Linkl)//物品信息修改 { Node*p; charfindmess[20]; if(! l->next) { system("cls");//清屏函数 printf("\n您的库存为空,无需修改! \n"); getchar(); getchar(); menu(); return; } printf("请输入要修改的物品编码: "); scanf("%s",findmess); p=Locate(l,findmess,"code"); if(p) { system("cls");//清屏函数 printf("请输入新编码(原来的是%s): ",p->data.code); scanf("%s",p->data.code); printf("请输入新名称(原来的是%s): ",p->data.name); scanf("%s",p->data.name); getchar(); printf("请输入新的物品数量(原来的是%d): ",p->data.num); scanf("%d",&p->data.num); getchar(); printf("请输入新的物品等级(原来的是%d): ",p->data.level); scanf("%d",&p->data.level); getchar(); printf("\n修改资料成功! \n"); shoudsave=1; getchar(); menu(); return; } else Nofind(); getchar(); menu(); } voidDisp(Linkl) { intcount=0; Node*p; p=l->next; if(! p) { printf("\n没有资料可以显示! \n"); getchar(); getchar(); menu(); return; } printf("\t\t\t\t显示结果\n"); printstart(); printc(); printf("\n"); while(p) { printe(p); p=p->next; } printstart(); printf("\n"); } voidSave(Linkl)//物品信息保存 { FILE*fp; Node*p; intflag=1,count=0; fp=fopen("c: \\student","wb"); if(fp==NULL) { printf("\n重新打开文件时错误! \n"); exit (1); } p=l->next; while(p) { if(fwrite(p,sizeof(Node),1,fp)==1) { p=p->next; count++; } else { flag=0; break; } } if(flag) { system("cls");//清屏函数 printf("\n文件保存成功.(有%d条记录保存成功.)\n",count); shoudsave=0; getchar(); getchar(); menu(); } fclose(fp); } voidmain()//主函数 { menu(); Linkl;//链表 Node*r; intsel; charch; intcount=0; l=(Node*)malloc(sizeof(Node)); l->next=NULL; r=l; while(l) { scanf("%d",&sel); if(sel==0) { if(shoudsave==1) { getchar(); printf("\n资料已改动,是否将改动的文件保存到文件中(yorn)? \n"); scanf("%c",&ch); if(ch=='y'||ch=='Y') Save(l); } printf("\n已退出系统! \n"); break; } switch(sel) { case1: Add(l);break;//物品进库 case2: Del(l);break;//物品出库 case3: Qur(l);break;//查询物品 case4: Modify(l);break;//修改物品信息 case5: Save(l);break;//保存物品信息 default: Wrong();getchar();break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库 库存 管理 系统 源程序