仓库管理系统设计.docx
- 文档编号:6984853
- 上传时间:2023-01-14
- 格式:DOCX
- 页数:20
- 大小:18.95KB
仓库管理系统设计.docx
《仓库管理系统设计.docx》由会员分享,可在线阅读,更多相关《仓库管理系统设计.docx(20页珍藏版)》请在冰豆网上搜索。
仓库管理系统设计
10、仓库管理
问题描述:
已知一工厂有5个仓库(仓库编号、仓库名称、负责人),用于保存公司生产的10个产品(产品编号、产品名称、产品规格),任何一种产品可以保存在该5个仓库中,编写一程序完成以下功能:
1)1)产品入库:
从键盘输入仓库编号、产品编号,入库日期,入库数量。
需要判断仓库编号是否存在、产品编号是否存在、入库日期格式是否合法(格式为:
YYYY-MM-DD,如2009-01-02),入库数量是否大于0,入库日期格式是否合法(格式为:
YYYY-MM-DD,如2009-01-02))
2)2)产品出库:
从键盘输入仓库编号、产品编号、出库日期,出库数量,需要判断仓库编号是否存在、产品编号是否存在、入库日期格式是否合法(格式为:
YYYY-MM-DD,如2009-01-02),入库数量是否大于0,是否小于当前该仓库的库存量,出库日期格式是否合法(格式为:
YYYY-MM-DD,如2009-01-02))
3)3)查询指定仓库编号的入库记录
4)4)查询指定产品编号的入库记录
5)5)查询指定仓库编号的出库记录
6)6)查询指定产品编号的出库记录
提示:
●●定义一个日期结构体保存日期,具体信息为:
年、月、日
●●判断入库日期和出库日期的格式是否合法时,需要判断长度是否为10,第5位和第8位是否为’-’,字符,将1-4位表示的年份,6-7位表示的月份,9-10位表示的日期分别转换成整数。
判断是否满足构成日期的条件闰年月份只能是1-12之间的数,如果是闰年,二月可以是29天否则不能大于28,1,3,5,7,8,10,12月可以是31天,其余只能小于等于30(建议写成函数)。
●●定义一个结构体数组,保存5个仓库信息,具体为:
仓库编号、仓库名称、负责人
●●定义一个结构体数组,保存10个产品信息,具体为:
产品编号、产品名称、产品规格。
●●定义一个产品出库(入库)链表,保存产品的出库(入库)信息。
具体为:
仓库编号、产品编号,入库日期,入库数量,操作类型(为1表示入库,为-1表示出库)
●●产品入库时,需要查询仓库数组和产品数组,如果产品编号和仓库编号存在,则插入产品出库(入库)链表
●●产品出库时,需要查询产品出库(入库)链表,查询产品编号、仓库编号的入库记录得到入库的数量(类型为1),查询产品编号、仓库编号的出库记录得到出库的数量(类型为-1),计算得到该产品在该仓库的库存量,如果出库数量小于库存量,插入产品出库(入库)链表,类型为-1。
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"ctype.h"
#include"cstdlib"
#defineHEADER"|--------|--------|------------|-------|-----|\n"
structdate/*结构数组放日期信息*/
{
intyear;
intmonth;
intday;
}D[100];
structcangku/*结构数组放仓库信息*/
{
charnum[10];
charname[15];
charmanager[15];
}ck[5];
structchanpin/*结构数组放产品信息*/
{
charnum[10];
charname[15];
charstandard[10];
}cp[10];
typedefstructchuru/*定义产品出入链表结构*/
{
charcknum[10];
charcpnum[10];
charcount[10];
chardate[15];
charkind[2];
structchuru*next;
}CR;
/*******函数原型*******/
voidprintheader();/*输出表头信息*/
intdate_legal(char*date);/*定义一个函数,判断日期是否合法*/
voidinput(CR*head);/*产品入库*/
voidoutput(CR*head);/*产品出库*/
voidsearchon_cknum_input(CR*head);/*查询指定仓库编号的入库记录*/
voidsearchon_cpnum_input(CR*head);/*查询指定产品编号的入库记录*/
voidsearchon_cknum_output(CR*head);/*查询指定仓库编号的出库记录*/
voidsearchon_cpnum_output(CR*head);/*查询指定产品编号的出库记录*/
intmenu_show();/*主菜单函数*/
intmenu_select(intsel,CR*head);/*功能函数*/
/*******主函数*******/
main()
{
inti=0;
CR*head;
head=malloc(sizeof(CR));
head->next=NULL;
printf("请输入产品信息!
\n");
while(i<10)
{
printf("-------------------\n");
printf("编号:
");
scanf("%s",cp[i].num);
printf("名称");
scanf("%s",cp[i].name);
printf("规格");
scanf("%s",cp[i].standard);
i++;
if(i%5==0)
{
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
}
system("cls");
printf("请输入仓库信息!
\n");
i=0;
while(i<5)
{
printf("-------------------\n");
printf("编号:
");
scanf("%s",ck[i].num);
printf("名称:
");
scanf("%s",ck[i].name);
printf("负责人:
");
scanf("%s",ck[i].manager);
i++;
}
system("cls");
while
(1)
menu_select(menu_show(),head);
}
/*******功能函数*******/
intmenu_select(intsel,CR*head)
{
switch(sel)
{
case1:
input(head);break;/*产品入库*/
case2:
output(head);break;/*产品出库*/
case3:
searchon_cknum_input(head);break;/*查询指定仓库编号的入库记录*/
case4:
searchon_cpnum_input(head);break;/*查询指定产品编号的入库记录*/
case5:
searchon_cknum_output(head);break;/*查询指定仓库编号的出库记录*/
case6:
searchon_cpnum_output(head);break;/*查询指定产品编号的出库记录*/
case7:
exit(0);
}
return1;
}
/*******主菜单函数*******/
intmenu_show()
{
chars[20];
intc;
printf("**************仓库管理系统****************\n");
printf("1.产品入库\n");
printf("2.产品出库\n");
printf("3.查询指定仓库编号的入库记录\n");
printf("4.查询指定产品编号的入库记录\n");
printf("5.查询指定仓库编号的出库记录\n");
printf("6.查询指定产品编号的出库记录\n");
printf("7.退出\n");
printf("******************************************\n\n");
do{
printf("\n请选择相关操作[1-7]:
");
scanf("%s",s);/*输入选择项*/
c=atoi(s);/*将输入的字符串转换为整形数*/
}while(c<0||c>7);
returnc;/*返回选择项*/
}
/*******输出表头信息*******/
voidprintheader()
{
printf("|仓库编号|产品编号|日期|数量|类型|\n");
}
/*******产品入库*******/
voidinput(CR*head)
{
inti=0,a=0,b=0,c=0,m=1;chars[10];
CR*p,*temp;
p=head;
while(p->next!
=NULL)
p=p->next;
system("cls");/****清屏*****/
temp=malloc(sizeof(CR));
temp->next=NULL;
printf("请输入入库产品信息!
\n");
printf("仓库编号:
");
scanf("%s",temp->cknum);
do
{
i=0;/***判断仓库编号是否存在***/
while(i<5)
{
if(strcmp(ck[i].num,temp->cknum)==0)
b=1;i++;
}
if(b==0)
{
printf("无此仓库编号!
\n请重输入\n");
printf("仓库编号:
");
scanf("%s",temp->cknum);
}
}while(strcmp(ck[i].num,temp->cknum)!
=0&&b==0);
printf("产品编号:
");
scanf("%s",temp->cpnum);
do
{
i=0;
while(i<10)/***判断产品编号是否存在***/
{
if(strcmp(cp[i].num,temp->cpnum)==0)
c=1;i++;
}
if(c==0)
{
printf("无此产品编号!
\n请重输入\n");
printf("产品编号:
");
scanf("%s",temp->cpnum);
}
}while(strcmp(cp[i].num,temp->cpnum)!
=0&&c==0);
printf("入库日期:
");
scanf("%s",temp->date);
if(date_legal(temp->date)==0)/***判断日期格式是否正确***/
{
do{
printf("\n请重输入\n");
printf("入库日期:
");
scanf("%s",temp->date);
}while(date_legal(temp->date)==0);
}
do
{
if(m<=0)
printf("入库数量应大于0,请重输\n");
printf("入库数量:
");
scanf("%s",temp->count);
m=atoi(temp->count);
}while(m<=0);
printf("操作类型:
");
scanf("%s",temp->kind);
if(b&&c)
{
printf("入库成功,并保存!
\n");
p->next=temp;
}
else
free(temp);/***释放存储区间***/
printf("\n\n\n\n\n");
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
/*******产品出库*******/
voidoutput(CR*head)
{
inta=0,b=0,c=0,i=0,sum1=0,sum2=0,m1=0,m2=0,n1=0,n2=0,m3=0,n3=0,n4=1;chars[10];
CR*p,*q,*m,*n;
p=head;m=head;n=head;
while(p->next!
=NULL)
p=p->next;
system("cls");/****清屏*****/
q=malloc(sizeof(CR));
q->next=NULL;
printf("请输出库产品信息:
\n");
printf("仓库编号:
");
scanf("%s",q->cknum);
do
{
i=0;/***判断仓库编号是否存在***/
while(i<5)
{
if(strcmp(ck[i].num,q->cknum)==0)
m3=1;i++;
}
if(m3==0)
{
printf("无此仓库编号!
\n请重输入\n");
printf("仓库编号:
");
scanf("%s",q->cknum);
}
}while(strcmp(ck[i].num,q->cknum)!
=0&&m3==0);
printf("产品编号:
");
scanf("%s",q->cpnum);
do
{
i=0;
while(i<10)/***判断产品编号是否存在***/
{
if(strcmp(cp[i].num,q->cpnum)==0)
n3=1;i++;
}
if(n3==0)
{
printf("无此产品编号!
\n请重输入\n");
printf("产品编号:
");
scanf("%s",q->cpnum);
}
}while(strcmp(cp[i].num,q->cpnum)!
=0&&n3==0);
printf("出库日期:
");
scanf("%s",q->date);
if(date_legal(q->date)==0)/***判断日期格式是否正确***/
{
do{
printf("\n请重输入\n");
printf("出库日期:
");
scanf("%s",q->date);
}while(date_legal(q->date)==0);
}
do
{if(n4<=0)
printf("入库数量应大于0,请重输\n");
printf("出库数量:
");
scanf("%s",q->count);
n=atoi(q->count);
}while(n4<=0);
printf("操作类型:
");
scanf("%s",q->kind);
while(m!
=NULL)
{
m1=atoi(m->cknum);m2=atoi(q->cknum);
n1=atoi(m->cpnum);n2=atoi(q->cpnum);
if(m1==m2&&n1==n2)/***判断编号是否存在***/
{
c=atoi(m->count);
a=atoi(m->kind);
if(a==1)sum1=sum1+c;
if(a==-1)sum2=sum2+c;
i++;
}
m=m->next;
}
if(i==0)
printf("无需出库产品的相应记录!
\n");
b=atoi(q->count);
if(b<=(sum1-sum2))
{
printf("产品出库成功,并记录!
\n");
p->next=q;
}
else
printf("对不起!
该产品在%s仓库中库存不够。
\n\n",q->cknum);
printf("\n\n\n\n\n");
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
/*******查询指定仓库编号的入库记录*******/
voidsearchon_cknum_input(CR*head)
{
CR*p;
chara[5];
inti=0,c=0;
p=head->next;
system("cls");/****清屏*****/
printf("请输入仓库编号:
");
scanf("%s",a);
system("cls");/****清屏*****/
printheader();/***打印表头***/
while(p!
=NULL)
{
c=atoi(p->kind);
if(c==1&&strcmp(a,p->cknum)==0)
{
printf(HEADER);
printf("%-10s%-6s%-14s%-8s%-5s\n",p->cknum,p->cpnum,p->date,p->count,p->kind);
i++;
}
p=p->next;
if(i%3==0)
{
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
}
if(i==0)
printf("您要查找的仓库无入库记录!
\n\n");
printf("\n\n\n\n\n");
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
/*******查询指定产品编号的入库记录*******/
voidsearchon_cpnum_input(CR*head)
{
CR*p;
chara[5];
inti=0,c=0;
p=head->next;
system("cls");/****清屏*****/
printf("请输入产品编号:
");
scanf("%s",a);
system("cls");/****清屏*****/
printheader();/***打印表头***/
while(p!
=NULL)
{
c=atoi(p->kind);
if(c==1&&strcmp(a,p->cpnum)==0)
{
printf(HEADER);
printf("%-10s%-6s%-14s%-8s%-5s\n",p->cknum,p->cpnum,p->date,p->count,p->kind);
i++;
}
p=p->next;
if(i%10==0)
{
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
}
if(i==0)
printf("您要查找的产品无入库记录!
\n\n");
printf("\n\n\n\n\n");
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
/*******查询指定仓库编号的出库记录*******/
voidsearchon_cknum_output(CR*head)
{
CR*p;/*定义指针*/
chara[5];
inti=0,c=0;
p=head->next;
system("cls");/****清屏*****/
printf("请输入仓库编号:
");
scanf("%s",a);
system("cls");/****清屏*****/
printheader();/***打印表头***/
while(p!
=NULL)
{
c=atoi(p->kind);
if(c==-1&&strcmp(a,p->cknum)==0)
{
printf(HEADER);
printf("%-10s%-6s%-14s%-8s%-5s\n",p->cknum,p->cpnum,p->date,p->count,p->kind);
i++;
}
p=p->next;
if(i%10==0)
{
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
}
if(i==0)
printf("您要查找的仓库无出库记录!
\n\n\n");
printf("\n\n\n\n\n");
printf("按任意键继续......");
getch();
system("cls");/****清屏*****/
}
/*******查询指定产品编号的出库记录*******/
voidsearchon_cpnum_output(CR*head)
{
CR*p;
chara[5];
inti=0,c=0;
p=head->next;
system("cls");/****清屏*****/
printf("请输入产品编号:
");
scanf("%s",a);
system("cls");/****清屏*****/
printheader();/***打印表头***/
while(p!
=NULL)
{
c=atoi(p->kind);
if(c==-1&&strcmp(a,p->cpnum)==0)
{
printf(HEADER);
printf("%-10s%-6s%-14s%-8s%-5s\n",p->cknum,p->cpnum,p->date,p->count,p->kind);
i++;
}
p=p->next;/*移动结点*/
if(i%10==0)
{
printf("按任意键继续......");
getch();
system("c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库 管理 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)