数据结构课程设计仓库管理_第1页
数据结构课程设计仓库管理_第2页
数据结构课程设计仓库管理_第3页
数据结构课程设计仓库管理_第4页
数据结构课程设计仓库管理_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、洛 阳 理 工 学 院课 程 设 计 报 告 课程名称 数据结构课程设计 设计题目 仓库管理系统 专 业 软件工程 班 级 学 号 姓 名 完成日期 2018年1月12日 课 程 设 计 任 务 书设计题目:仓库管理系统 设计内容与要求:建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物信息、实现货物的入库出库,要求能用文件保存仓库货品信息。【基本要求】(1)记录货物编号,货物名称,货物数量。(2)能够实现按货物编号、按货物名称查询仓库中货物的库存情况。(3)能够实现货物入库、出库,并及时更新库存数量。 指导教师: 2017年12月27日课 程 设 计 评 语成绩

2、: 指导教师: 2018 年 1月12 日1.算法思想:根据题意我们需要建立一个仓库管理系统,满足可以按顺序和货物名称查询仓库存储情况,可以增加或删除货物信息、实现货物的入库出库,能用文件保存仓库货品信息要求。经过考虑我用双链表来实现以上要求,双链表每个数据节点都有两个指针,分别指向直接后继和直接前驱,所以从双链表中的任意结点开始,都可以很方便地访问它的前驱结点和后继结点。方便我们的操作。2.模块划分:描述所设计程序的各个模块(即函数)功能,给出函数调用关系图,主要功能函数的流程图(至少画2个函数的)。各功能模块:void main()/主函数 DNode *create(DNode *L)/

3、创建链表头节点 DNode *input(DNode *L)/入库函数 DNode *output(DNode *L)/按编号出库函数 void search(DNode *L)/查找的主要菜单 void save(DNode *L)/输出到文件函数 void search_bianhao(DNode *L)/按编号查找的函数 void search_name(DNode *L)/按名称查找的函数 void display(DNode *L) /显示货物清单DNode* add(DNode *L) /更新数据函数调用关系图:主函数创建链表头结点保存到文件入库函数出库函数查找函数显示货物清单按编

4、号查询按名称查找更新数据L-bianhaobianhao直接入库插入L之前插入L之后输入货物名称、编号、数量L-next是否是头结点开始NNY结束入库函数流程图: 更新数据函数:表内是否有元素编号是否存在更新数据选择添加或减少表内无元素编号不存在开始NNYY减少添加结束3.数据结构:int ifempty=0;/标志,判断链表是无否为空typedef struct DNode /定义双向链表结构体 int bianhao; /货物编号 char name20; /货物名称 int shuliang; /货物数量 struct DNode *prior, *next; / 定义两指针,分别指向其

5、前驱和后继 DNode; 4.测试测试菜单:测试入库函数:输入:名称:shui编号:1001数量:100测试出库函数输入出库货物编号:1001测试显示货物清单函数:在菜单栏选择4测试查找货物函数:1 按编号查询:输入10022:按名称查询:输入yifu:测试更新货物函数:1. 添加货物:输入1002;输入添加数量2002. 减少货物:输入编号1003输入减少货物50测试输出到文件函数:5.源程序:#include #include #include #include#include int ifempty=0;/标志,判断链表是无否为空 typedef struct DNode /定义双向链表

6、结构体 int bianhao; /货物编号 char name20; /货物名称 int shuliang; /货物数量 struct DNode *prior, *next; / 定义两指针,分别指向其前驱和后继 DNode; void main();/主函数 DNode *create(DNode *L);/创建链表头节点 DNode *input(DNode *L);/入库函数 DNode *output(DNode *L);/按编号出库函数 void search(DNode *L);/查找的主要菜单 void save(DNode *L);/输出到文件函数 void search_

7、bianhao(DNode *L);/按编号查找的函数 void search_name(DNode *L);/按名称查找的函数 void display(DNode *L) ; /显示货物清单DNode* add(DNode *L); /更新数据void main() int x; DNode *L; L=(DNode *)malloc(sizeof(DNode);create(L);while(1) printf( 菜单 nn); printf( 1. 货物入库n); printf( 2. 货物出库n);printf( 3. 查找货物表n); printf( 4. 显示仓库货物表n); p

8、rintf( 5. 输出到文件n);printf( 6. 更新数据n);printf( 0. 退出nn);printf( 请选择操作(0-6):);scanf(%d,&x); switch(x) case 1:input(L);break;/调用入库出库函数 case 2:output(L);break;/调用出库函数case 3:search(L);break;/调用查找函数 case 4:display(L);break;/调用显示输出函数 case 5:save(L);break;/调用存储函数case 6:add(L);break;/调用更新数据函数case 0:printf(n 再见

9、!n); getchar();exit(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, ); /初始化 return L; DNode *input(DNode *L)/入库函数 DNode *in,*head; head=in=(DNode *)m

10、alloc(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

11、)/如果输入的数大于L-bianhao,则插到L的前面 if(L-bianhaobianhao) 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+; return head; DNode *output(DNode *L)

12、/按编号出库函数 int bianhao; 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; ifempty-; printf(编号为%d的货物成功出库,bianhao); getchar(); ret

13、urn head; printf(没有此编号的货物,请查看是否还有货物。nn); getchar(); return (head); void search(DNode *L) /查找的主要菜单 int y;system(cls);if(ifempty=0) printf(没有输入货物!n); getchar(); return; else while(1) printf(1.按编号查询n); printf(2.按货物名称查询n); printf(0.返回上一层n); printf(选择0-2:); scanf(%d,&y); switch(y) case 1:search_bianhao(L

14、);break;/调用按编号查找的函数 case 2:search_name(L);break;/调用按名称查找的函数 case 0:return;/返回 default:printf(输入错误请输入(0-2)nn); getchar();printf(nn); void search_bianhao(DNode *L)/按编号查找的函数 int bianhao,flag=0;/(1找到0没找到)DNode *head=L;system(cls);if(ifempty=0) printf(没有货物被输入n); getchar(); return; printf(输入你要查找的货物编号:n);

15、scanf(%d,&bianhao); while(L=L-next)!=head) if(L-bianhao=bianhao) flag=1; printf(找到指定编号货物 n); printf(n编号:%dn,L-bianhao); printf(名称:%sn,L-name) ; printf(数量:%dnn,L-shuliang); if(flag=0)printf(没有找到指定编号货物,请查看是否还有货物。n); getchar(); DNode *add(DNode *L)/添加函数 int bianhao,b,c,flag=0;/(1找到0没找到)DNode *head=L;sy

16、stem(cls);if(ifempty=0) printf(没有货物被输入n); getchar(); return 0; printf(请输入要更新货物的编号:n);scanf(%d,&bianhao); while(L=L-next)!=head) if(L-bianhao=bianhao) flag=1; printf(找到指定编号货物 n); printf(n编号:%dn,L-bianhao); printf(名称:%sn,L-name); printf(数量:%dnn,L-shuliang);printf(请选择出库添加货物或者减少货物(1添加,2减少):n);scanf(%d,&

17、b);if(b=1)printf(输入你要添加的数量:n);scanf(%d,&c);printf(加入成功,现货物为:%dn,L-shuliang=L-shuliang+c);if(b=2)printf(输入你要减少的数量:n);scanf(%d,&c);printf(加入成功,现货物为:%dn,L-shuliang=L-shuliang-c);if(12)printf(输入错误!n);return (head); if(flag=0)printf(没有找到指定编号货物,请查看是否还有货物。n); getchar();return 0; void search_name(DNode *L)/

18、按名称查找的函数 int flag=0; char na32; DNode *head=L;system(cls);if(ifempty=0) printf(没有货物被输入n); getchar(); return; printf(输入你要查找的货物名称n); scanf(%s,&na); while(L=L-next)!=head) if(strcmp(L-name,na)=0) flag=1; printf(找到指定名称货物 n); printf(n编号:%dn,L-bianhao); printf(名称:%sn,L-name) ; printf(数量:%dnn,L-shuliang);

19、if(flag=0)printf(没有找到指定编号货物,请查看是否还有货物。nn); getchar(); void display(DNode *L)/显示货物清单 DNode *head=L;system(cls);if(ifempty=0) printf(没有货物可显示n); getchar(); return; L=L-next; do printf(n编号:%dn,L-bianhao); printf(名称:%sn,L-name) ; printf(数量:%dnn,L-shuliang); while(L=L-next)!=head); getchar(); void save(DNode *L) /输出到文件函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论