数据结构仓库库存信息管理系统.docx
《数据结构仓库库存信息管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构仓库库存信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
数据结构仓库库存信息管理系统
《数据结构》课程设计
题目:
仓库库存信息管理系统
系别:
计算机信息及技术系
专业:
班级:
学号:
学生姓名:
指导教师:
2013年06月
1.1问题描述1
1需求分析
1.1问题描述
纸质仓库信息已经不能满足仓库管理员的的要求,容易丢失、查找困难等问题是纸质仓库信息所有能克服的缺点。
“仓库库存信息管理系统”是为了帮助管理员管理和分析的一种应用程序。
仓库信息管理系统的需求分析主要确定系统的主要功能,对系统进行概要描述,分析系统运行时所需的软、硬件环境,并对系统的各个主要功能进行需求描述,目的时使软件在设计过程中尽量符合客户的需要。
1.2需求分析
问题的提出:
为了完善仓库管理员对仓库的管理,需要设计一个仓库库存信息管理系统。
系统的设计目标:
1)建立库存信息表
2)新物品信息入库
3)查询库存信息记录
4)物品出库信息记录
5)显示库存信息记录
0)退出管理系统
2概要设计
2.1主界面设计
当输入相应的操作字符(比如:
0-5),通过在主函数中选择并调用对应的子函数程序以及其他函数中的辅助调用,实现并完成各自的功能操作(比如:
添加、查找、删除、显示等)。
系统主界面如下:
如图2.1所示。
图2.1界面显示
2.2存储结构设计
依据给定的数据格式,仓库库存信息由三个字段来组成,即物品编码、名称、和数量。
如:
编码|名称|数量
1硫酸1
通过C语言把库存物品信息用单链表形式连接,源程序要有适当的注释,使程序易于阅读,进行储存。
同时进行各种修改,完成仓库库存信息管理等功能。
2.3系统功能设计
依据程序的数据结构和功能,遵照“自顶向下”原则,描述该程序的层次结构,在总体上包括数据的插入、添加、删除以及数据的显示等功能模块。
(1)输入函数功能:
通过输入各项数据给数据元素,来建立一个数据表。
(2)显示函数功能:
输出表中所有结点的信息。
(3)查找函数功能:
按照指定关键字,对相应仓库物品信息进行查找。
(4)删除函数功能:
查找到要删除物品的相应信息,并将其从表中永久的删除。
(5)主函数功能:
调用以上子函数,并用开关语句进行选择性的调用。
3模块设计
3.1系统子程序及功能设计
LinkListcreatLink()增加信息
voidprintList(LinkListL)输出信息
voidListdel(LinkListL,inti)删除表
voidsearchnum(LinkListL,intn)用编码查询物品信息
voidsearchnum(LinkListL,intn)用数量查询物品信息
3.2系统功能图
系统功能图如图3.1所示。
图3.1系统功能
4详细设计
4.1数据类型定义
结构体定义:
typedefstructxc
{
intnum;//物品编码
charname[20];//物品名称
intxcnum;//物品数量
structnode*next;
}node,*LinkList;
4.2系统主要子程序详细设计
1.主函数:
主要由switch语句组成,便于函数调用:
switch(choose)
{
case1:
LinkListcreatLink;break;/*建立库存信息表*/
case2:
voidprintList;break;/*插入库存信息记录*/
case3:
voidsearchnum;break;/*查询记录*/
case4:
voidListdel;break;/*删除记录*/
case5:
intmain()
{
system("cls");/*显示记录*/
2.主页面函数;
intmain()
{
system("cls");
system("color9f");
LinkListL=NULL;
printf("*欢迎使用仓库库存信息管理系统*\n");
printf("\n");
printf("*1建立库存信息表\n");
printf("\n");
printf("*2新物品信息入库\n");
printf("\n");
printf("*3查询库存信息记录\n");
printf("\n");
printf("*4物品出库信息记录\n");
printf("\n");
printf("*5显示库存信息\n");
printf("\n");
printf("*0退出管理系统\n");
printf("\n");
printf("*欢迎使用仓库库存信息管理系统*\n");
printf("请选择操作:
\n");
printf("\n");
printf("请选择0-5:
");
5测试分析
各功能的运行结果:
1)建立信息表:
在主菜单中选择1,进入建立库存信息表。
如图5.1所示。
图5.1建立信息表
2)插入信息:
选择2,进行插入信息。
如图5.2所示。
图5.2插入信息
3)查询信息:
选择3,进行查询信息。
如图5.3所示。
图5.3查询信息
4)删除和显示当前库存信息:
选择4、5,进行删除和显示当前信息。
如图5.4所示。
图5.4删除和显示当前库存信息
5)退出管理系统:
选择0,进行退出系统。
如图5.5所示。
图5.5退出系统
6源程序清单
#include
#include
#include
#include
typedefstructxc
{
intnum;//物品编码
charname[20];//物品名称
intxcnum;//物品数量
structnode*next;
}node,*LinkList;
LinkListprior(LinkListL,LinkListp)
{
LinkListpr=L;
while(pr->next!
=p)
pr=pr->next;
returnpr;
}
voidinsert(LinkListL,LinkListElem)
{
LinkListp=L->next;
while(p!
=NULL&&Elem->num>=p->num)
{
if(p->num==Elem->num)
{printf("重复输入\n");}
p=p->next;
}
if(p==NULL)
{
p=prior(L,p);Elem->next=NULL;p->next=Elem;
}
else
{p=prior(L,p);Elem->next=p->next;p->next=Elem;}
}
{LinkListcreatLink()//创建表
{
LinkListL=(LinkList)malloc(sizeof(node));
L->next=NULL;
LinkListp;
intcode;
intnum;
charname[20];
printf("请输入物品编码、物品名称和物品数量,建立库存信息表\n");
printf("\n****提示:
输入编号为负时结束录入****\n\n");
printf("请输入物品编码:
");
scanf("%d",&code);
printf("请输入物品名称:
");
chartemp=getchar();
gets(name);
printf("请输入物品数量:
");
scanf("%d",&num);
while
(1)
{
p=(LinkList)malloc(sizeof(node));
p->code=code;
p->num=num;
strcpy(p->name,name);
insert(L,p);
//num++;
printf("请输入物品编码:
");
scanf("%d",&code);
if(code<=0)
{break;
}
printf("请输入物品名称:
");
chartemp=getchar();
gets(name);
printf("请输入物品数量:
");
scanf("%d",&num);
}
printf("\n信息正在储存.....\n");
Sleep(1000);
return(L);
}voidprintList(LinkListL)//打印输出L表
{
printf("\n-------------------------------------------\n");
printf("\n物品编码物品名称物品数量\n");
printf("-------------------------------------------\n");
LinkListp=L;
intn=1;
if(L==NULL||L->next==NULL)printf("仓库中没有存货\n");
else
while(p->next!
=NULL)
{printf("%8d%4d",n,p->next->code);
printf("%4s%4d\n",p->next->name,p->next->num);
p=p->next;
n++;}
printf("-------------------------------------------\n");
voiddelElem(LinkListL,inti)//删除表中的元素
{
LinkListp=L;
intj=0;
while(p->next&&j{p=p->next;
j++;
}
if(!
(p->next))
{printf("第%d个元素删除失败\n",i);
}
LinkListq=p->next;
p->next=q->next;
free(q);
}intdelName(LinkListL,charn[])//利用Name删除表中的元素
{
intflag=0;
LinkListp=L->next;
seat=1;
if(L->next==NULL)printf("该链表中没有元素\n");
else
{
while(p!
=NULL)
{
if(!
strcmp(p->name,n))
{
flag=1;
printf("%s",p->name);
p=p->next;
delElem(L,seat);
}
else{p=p->next;seat++;}
}
if(flag)printf("被删除\n");
}
returnflag;
}
intdelNum(LinkListL,intn)//利用Num删除表中的元素
{
intflag=0;
LinkListp=L->next;
seat=1;
if(L->next==NULL||L==NULL)printf("该链表中没有元素\n");
else
{
while(p!
=NULL)
{
if(p->code<=n)
{
if(p->code==n)
{
flag=1;
printf("%d",p->code);
p=p->next;
delElem(L,seat);
}
}
else{p=p->next;seat++;}
}
if(flag)printf("被删除\n");
}
returnflag;
}
intsearchName(LinkListL,charn[])//利用字段Name查找表L中的元素
{
intflag=0;
LinkListp=L->next;
//seat=1;
if(L->next==NULL||L==NULL)printf("该链表中没有元素\n");
else
{
while(p!
=NULL)
{
if(!
strcmp(p->name,n))
{
flag=1;
//printf("查找的是第%d个商品:
\n",seat);
printf("Code:
%dName:
%sNum:
%d\n",p->code,p->name,p->num);
}
p=p->next;//seat++;
}
}
returnflag;
}
intsearchCode(LinkListL,intn)//利用物品的Code查找表中的元素
{
intflag=0;
LinkListp=L->next;
seat=1;
if(L->next==NULL)printf("该链表中没有元素\n");
else
{
while(p!
=NULL)
{
if(p->code<=n)
if(p->code==n)
{
flag=1;
printf("查找的是第%d个商品:
\n",seat);
printf("Code:
%dName:
%sNum:
%d\n",p->code,p->name,p->num);
}
p=p->next;seat++;
}
}
returnflag;
}
intmain()//页面显示函数
{
system("cls");//清屏函数
system("colorb0");
LinkListL=NULL;
printf("\n************欢迎使用仓库库存信息管理系统**************\n");
printf("\n");
printf("*1建立库存信息表*\n");
printf("\n");
printf("*2新物品信息入库*\n");
printf("\n");
printf("*3查询库存信息记录*\n");
printf("\n");
printf("*4物品出库信息记录*\n");
printf("\n");
printf("*5显示库存信息*\n");
printf("\n");
printf("*0退出管理系统*\n");
printf("\n");
printf("\n*************欢迎使用仓库库存信息管理系统**************\n");
printf("\n");
printf("请选择操作:
");
printf("\n");
intflag=0;
intmenu;
printf("请选择0-5:
");
scanf("%d",&menu);
while(menu!
=0)
{
switch(menu)
{
case1:
{L=creatLink();
printf("建立库存信息表:
");
printList(L);
flag=1;
printf("\n\n10秒后跳转到主页...\n");
Sleep(10000);
break;
}
case2:
{
if(flag==1)
{intcode,num;
charname[20];
printf("请输入物品编号、物品名称和物品数量:
\n");
printf("请输入物品编号:
");
scanf("%d",&code);
printf("请输入物品名称:
");
chartemp=getchar();
gets(name);
printf("请输入物品数量:
");
scanf("%d",&num);
LinkListp=(LinkList)malloc(sizeof(node));
p->code=code;
p->num=num;
strcpy(p->name,name);
insert(L,p);
printf("插入后:
");
printList(L);
printf("\n\n5秒后跳转到主页...\n");
Sleep(5000);
}
break;
}
case3:
{
intway,n,s;
charname[20];
if(L!
=NULL)
{
if(flag)
{
printf("选择查找方式:
\n");
printf("1.按物品编号2.按物品名称");
printf("选择[_]\b\b");
scanf("%d",&way);
if(way==1)
{
printf("\n请输入物品编号:
");
scanf("%d",&n);
s=searchCode(L,n);
if(s==0)
printf("无此商品!
\n");
}
elseif(way==2)
{
printf("\n请输入物品名称:
");
chartemp=getchar();
gets(name);
s=searchName(L,name);
if(s==0)
printf("无此商品!
\n");
}
else
printf("无库存!
\n");
}
break;
}
else
printf("无库存!
\n");
printf("\n\n5秒后跳转到主页...\n");
Sleep(5000);
break;
}
case4:
{
intway;
printf("选择删除方式:
\n");
printf("1.按序号2.按物品编号3.按物品名称\n");
scanf("%d",&way);
if(way==1)
{
intn;
printf("请输入序号:
");
scanf("%d",&n);
printf("删除后:
\n");
delElem(L,n);
printList(L);
}
elseif(way==2)
{
intn,f;
printf("请输入物品编号:
");
scanf("%d",&n);
f=delNum(L,n);
if(f!
=0)
{
printf("删除后:
\n");
printList(L);
}
else
printf("无该商品!
\n");
}
elseif(way==3)
{
charname[20];
intf;
printf("请输入物品名称:
");
chartemp=getchar();
gets(name);
f=delName(L,name);
if(f!
=0)
{
printf("删除后:
\n");
printList(L);
}
else
printf("无该商品!
\n");
}
elseprintf("Error!
\n");
printf("\n\n5秒后跳转到主页...\n");
Sleep(5000);
break;
}
case5:
{
printf("当前库存信息如下:
\n");
printList(L);
printf("\n\n5秒后跳转到主页...\n");
Sleep(5000);
break;
}
case0:
{
exit(0);
printf("\n************欢迎使用仓库库存信息管理系统***************\n");
printf("\n");
printf("*1建立库存信息表*\n");
printf("\n");
printf("*2新物品信息入库*\n");
printf("\n");
printf("*3查询库存信息记录*\n");
printf("\n");
printf("*4物品出库信息记录*\n");
printf("\n");
printf("*5显示库存信息*\n");
printf("\n");
printf("*0退出管理系统*\n");
printf("\n");
printf("\n*************欢迎使用仓库库存信息管理系统**************\n");
printf("\n");
printf("请选择操作:
");
printf("\n");
printf("\n\n\n****感谢您的使用^@^****\n\n");
scanf("%d",&menu);
}
return0;
}
7工作总结
这次课程设计对我而言可以说是毕业设计的一个预演,。
虽然一开始感觉特别难,无从下手,后来经过老师的讲解、同学的帮助,加上自己的学习,终于小有成效,做了一个很简单的仓库库存信息管理系统。
虽然做的效果不怎么样,但这是我亲手做的,同时