您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 数据结构课程设计仓库管理
洛阳理工学院课程设计报告课程名称数据结构课程设计设计题目仓库管理系统专业软件工程班级学号姓名完成日期2018年1月12日课程设计任务书设计题目:仓库管理系统设计内容与要求:建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信息、实现货物的入库出库,要求能用文件保存仓库货品信息。【基本要求】(1)记录货物编号,货物名称,货物数量。(2)能够实现按货物编号、按货物名称查询仓库中货物的库存情况。(3)能够实现货物入库、出库,并及时更新库存数量。指导教师:2017年12月27日课程设计评语成绩:指导教师:2018年1月12日洛阳理工学院课程设计报告11.算法思想:根据题意我们需要建立一个仓库管理系统,满足可以按顺序和货物名称查询仓库存储情况,可以增加或删除货物信息、实现货物的入库出库,能用文件保存仓库货品信息要求。经过考虑我用双链表来实现以上要求,双链表每个数据节点都有两个指针,分别指向直接后继和直接前驱,所以从双链表中的任意结点开始,都可以很方便地访问它的前驱结点和后继结点。方便我们的操作。2.模块划分:描述所设计程序的各个模块(即函数)功能,给出函数调用关系图,主要功能函数的流程图(至少画2个函数的)。各功能模块:voidmain()//主函数DNode*create(DNode*L)//创建链表头节点DNode*input(DNode*L)//入库函数DNode*output(DNode*L)//按编号出库函数voidsearch(DNode*L)//查找的主要菜单voidsave(DNode*L)//输出到文件函数voidsearch_bianhao(DNode*L)//按编号查找的函数voidsearch_name(DNode*L)//按名称查找的函数voiddisplay(DNode*L)//显示货物清单DNode*add(DNode*L)//更新数据洛阳理工学院课程设计报告2函数调用关系图:主函数创建链表头结点保存到文件入库函数出库函数查找函数显示货物清单按编号查询按名称查找更新数据洛阳理工学院课程设计报告3入库函数流程图:L-bianhaoin-bianhao直接入库插入L之前插入L之后输入货物名称、编号、数量L-next是否是头结点开始NNY结束洛阳理工学院课程设计报告4更新数据函数:表内是否有元素编号是否存在更新数据选择添加或减少表内无元素编号不存在开始NNYY减少添加结束洛阳理工学院课程设计报告53.数据结构:intifempty=0;//标志,判断链表是无否为空typedefstructDNode//定义双向链表结构体{intbianhao;//货物编号charname[20];//货物名称intshuliang;//货物数量structDNode*prior,*next;//定义两指针,分别指向其前驱和后继}DNode;4.测试测试菜单:洛阳理工学院课程设计报告6测试入库函数:输入:名称:shui编号:1001数量:100测试出库函数输入出库货物编号:1001洛阳理工学院课程设计报告7测试显示货物清单函数:在菜单栏选择4测试查找货物函数:洛阳理工学院课程设计报告81.按编号查询:输入10022:按名称查询:输入yifu:洛阳理工学院课程设计报告9测试更新货物函数:1.添加货物:输入1002;输入添加数量200洛阳理工学院课程设计报告102.减少货物:输入编号1003输入减少货物50洛阳理工学院课程设计报告11测试输出到文件函数:5.源程序:#includestdio.h#includestdlib.h#includestring.h#includemalloc.h#includewindows.hintifempty=0;//标志,判断链表是无否为空typedefstructDNode//定义双向链表结构体{intbianhao;//货物编号洛阳理工学院课程设计报告12charname[20];//货物名称intshuliang;//货物数量structDNode*prior,*next;//定义两指针,分别指向其前驱和后继}DNode;voidmain();//主函数DNode*create(DNode*L);//创建链表头节点DNode*input(DNode*L);//入库函数DNode*output(DNode*L);//按编号出库函数voidsearch(DNode*L);//查找的主要菜单voidsave(DNode*L);//输出到文件函数voidsearch_bianhao(DNode*L);//按编号查找的函数voidsearch_name(DNode*L);//按名称查找的函数voiddisplay(DNode*L);//显示货物清单DNode*add(DNode*L);//更新数据voidmain(){intx;DNode*L;L=(DNode*)malloc(sizeof(DNode));create(L);洛阳理工学院课程设计报告13while(1){printf(菜单\n\n);printf(1.货物入库\n);printf(2.货物出库\n);printf(3.查找货物表\n);printf(4.显示仓库货物表\n);printf(5.输出到文件\n);printf(6.更新数据\n);printf(0.退出\n\n);printf(请选择操作(0-6):);scanf(%d,&x);switch(x){case1:input(L);break;//调用入库出库函数case2:output(L);break;//调用出库函数case3:search(L);break;//调用查找函数case4:display(L);break;//调用显示输出函数case5:save(L);break;//调用存储函数case6:add(L);break;//调用更新数据函数case0:printf(\n再见!!\n);getchar();洛阳理工学院课程设计报告14exit(0);//退出程序default:printf(输入错误,请输入(0-6):);getchar();}}}DNode*create(DNode*L)//创建链表头节点{printf(欢迎使用!!!);getchar();system(cls);ifempty=0;L-next=NULL;L-prior=NULL;L-bianhao=0;L-shuliang=0;strcpy(L-name,);//初始化returnL;}DNode*input(DNode*L)//入库函数洛阳理工学院课程设计报告15{DNode*in,*head;head=in=(DNode*)malloc(sizeof(DNode));head=L;system(cls);printf(\n请输入货物数据:\n);printf(名称:);scanf(%s,&in-name);printf(编号:);scanf(%d,&in-bianhao);printf(数量:);scanf(%d,&in-shuliang);if(L-next==NULL)//如果只有头节点,{L-next=in;L-prior=in;in-next=L;in-prior=L;ifempty++;printf(成功!!\n);}else//如果当前L的下一个节点不是头节点{while((L=L-next)!=head)//如果输入的数大于L-bianhao,则插到L的前面{洛阳理工学院课程设计报告16if(L-bianhaoin-bianhao){in-next=L;in-prior=L-prior;L-prior-next=in;L-prior=in;ifempty++;printf(成功!!\n);return(head);}}//输入的编号比其它编号都小,则插到最后个节点,并首尾相连head-prior-next=in;in-prior=head-prior;head-prior=in;in-next=head;printf(成功!!\n);ifempty++;}returnhead;}洛阳理工学院课程设计报告17DNode*output(DNode*L)//按编号出库函数{intbianhao;DNode*head=L;system(cls);if(ifempty==0){printf(没有货物输入系统\n);getchar();return(head);}printf(请输入出库货物的编号:);scanf(%d,&bianhao);while((L=L-next)!=head){if(L-bianhao==bianhao)//如果找到就删除节点{L-prior-next=L-next;L-next-prior=L-prior;洛阳理工学院课程设计报告18ifempty--;printf(编号为%d的货物成功出库,bianhao);getchar();returnhead;}}printf(没有此编号的货物,请查看是否还有货物。\n\n);getchar();return(head);}voidsearch(DNode*L)//查找的主要菜单{inty;system(cls);if(ifempty==0){printf(没有输入货物!\n);getchar();return;}else洛阳理工学院课程设计报告19{while(1){printf(1.按编号查询\n);printf(2.按货物名称查询\n);printf(0.返回上一层\n);printf(选择0--2:);scanf(%d,&y);switch(y){case1:search_bianhao(L);break;//调用按编号查找的函数case2:search_name(L);break;//调用按名称查找的函数case0:return;//返回default:printf(输入错误请输入(0--2)\n\n);getchar();printf(\n\n);}}}}voidsearch_bianhao(DNode*L)//按编号查找的函数洛阳理工学院课程设计报告20{intbianhao,flag=0;//(1找到0没找到)DNode*head=L;system(cls);if(ifempty==0){printf(没有货物被输入\n);getchar();return;}printf(输入你要查找的货物编号:\n);scanf(%d,&bianhao);while((L=L-next)!=head){if(L-bianhao==bianhao){flag=1;printf(找到指定编号货物\n);printf(\n编号:%d\n,L-bianhao);printf(名称:%s\n,L-name);printf(数量:%d\n\n,L-shuliang);}洛阳理工学院课程设计报告21}if(flag==0)printf(没有找到指定编号货物,请查看是否还有货物。\n);getchar();}DNode*add(DNode*L)//添加函数{intbianhao,b,c,flag=0;//(1找到0没找到)DNode*head=L;system(cls);if(ifempty==0){printf(没有货物被输入\n);getchar();return0;}printf(请输入要更新货物的编号:\n);scanf(%d,&bianhao);while((L=L-next)!=head){if(L-bianhao==bianhao)洛阳理工学院课程设计报告22{flag=1;printf(找到指定编号货物\n);printf(\n编号:%d\n,L-bianhao);printf(名称:%s\n,L-name);printf(数量:%d\n\n,L
本文标题:数据结构课程设计仓库管理
链接地址:https://www.777doc.com/doc-4924957 .html