




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程设计题目:仓库管理系统 班级: 计12本2 姓名: 贺萌萌 学号:1212210228 完成日期:2013-11-12 19目 录一:程序设计题目2二:程序设计目标2三:问题描述2四:.需求分析2五:概要设计2六:详细设计31. 初始化表 42. 仓库管理系统和仓库链表的建立43. 插入数据44. 仓库链表的查询55. 删除数据66. 仓库链表的输出67. 测试分析68. 使用说明69. 数据测试6七:程序源代码10 八:课程设计总结18一程序设计题目:仓库管理系统二程序设计目标:帮助学生熟练掌握线性表的基本操作在俩种存储结构上的实现,其中以双向链表链表的操作和应用为重点内容。三问
2、题描述:建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物以及建立新的仓库存储系统。四 .需求分析:1. 创建双向链表,设计仓库管理系统。2. 向链表中插入数据,输入数据 3. 删除链表中的数据 4. 查找链表中的内容 5. 销毁双向链表,释放内存空间;6. 输出表格五.概要设计:;可以采用双向链表的存储结构,如可定义如下的存储结构:typedef struct dnode /*定义双向链表结构体*/ int number; /*商品编号*/ char namemax; /*商品名称*/ int counter; /*商品数量*/ struct dnode *pr
3、ior,*next; /*定义两指针,分别指向其前驱和后继*/ dlnode;六详细设计:总体操作步骤:(1) 分配存储空间,初始化表;(2) 对表进行插入、删除操作;(3)完成操作。1. 初始化表 (1)申请内存(2)数据置空(3)置表头,完成操作2.仓库管理系统和仓库里链表的建立3. 插入数据 (1)申请内存(2)置数据(3)将结点插入,完成操作4.数据查询(仓库链表的查询)5. 删除数据(1)判断相应结点是否存在(2)从链中取出该结点(3)将结点释放,完成操作6.新的仓库管理系统,仓库链表的输出:7.测试分析白盒:查看代码完整性 黑盒:测试是否可以正确的创建,删除,插入,打印,查找等操作
4、8.使用说明插入删除语句:删除1条内容插入语句:插入一条信息自动打印:打印内容9.测试数据:测试内容测试结果删除一条数据正确插入一条数据正确正常打印数据正确正常查找内容正确 七:程序源代码 #include #include string.h#include stdlib.htypedef struct /仓库管理结点类型 char NO10; /商品编号 char name30; /商品名称 char count5; /商品数量 DataType;typedef struct node /结点类型定义 DataType data; /结点数据域 struct node *next; /结点指
5、针域 ListNode;typedef ListNode *LinkList;LinkList head;ListNode *p;LinkList CreateList(void);void InsertNode(LinkList head,ListNode *p);ListNode *ListFind(LinkList head);void DelNode(LinkList head);void PrintList(LinkList head);/*尾插法建立带头结点的仓库管理链表算法*/LinkList CreateList(void)LinkList head=(ListNode *)m
6、alloc(sizeof(ListNode); /申请头结点ListNode *p,*rear;char flag=y;/int flag=0; /结束标志置0rear=head; /尾指针初始指向头结点while (flag=y) p=(ListNode *)malloc(sizeof(ListNode); /申新结点printf( 商品编号(10) 商品名称(30) 商品数量(5) n);printf(-n);printf(n添加商品编号:n);cinp-data.NO;printf(n添加商品名称:n);;printf(n添加商品数量:n);cinp-data
7、.count;rear-next=p; /新结点连接到尾结点之后rear=p; /尾指针指向新结点printf(继续添加记录?(y/n):);cinflag;rear-next=NULL; /终端结点指针置空return head; /返回链表头指针/*在仓库管理链表head中插入结点*/void InsertNode(LinkList head,ListNode *p) ListNode *p1,*p2; p1=head; p2=p1-next; while(p2!=NULL & strcmp(p2-data.NO,p-data.NO)next; /p2指向表的下一个结点 p1-next=p
8、; /插入p所指向的结点 p-next=p2; /连接表中剩余的结点 /*有序仓库管理链表的查找 */ListNode *ListFind(LinkList head) ListNode *p; char num10; char name9;char pp; printf(=n); printf( a. 按商品编号查询 n); printf( b. 按商品名称查询 n); printf(=n); printf( 请 选 择: ); p=head-next; cinpp;getchar(); if (pp=a|pp=A) printf(请输入要查找的商品编号:);cinnum;while (p&
9、strcmp(p-data.NO,num)next;if (p=NULL)|strcmp(p-data.NO,num)0)p=NULL; /没有查到要查找的通讯信息elseif (pp=b|pp=B) printf( 请输入要查找的商品名称:);cinname;while(p&strcmp(,name)!=0)p=p-next; return p; /*仓库管理链表上的结点删除*/void DelNode(LinkList head)char jx;ListNode *p,*q; p=ListFind(head); /调用查找函数if (p=NULL) printf(没有
10、查到要删除的商品信息!n);return; if(p!=NULL)printf(真的要删除该商品吗?(y/n):);cinjx;if (jx=y|jx=Y) q=head;while (q!=NULL)&(q-next!=p)q=q-next;q-next=p-next; /删除结点free(p); /释放被删结点空间printf(删除成功!n); /*仓库管理链表的输出函数 */void PrintList(LinkList head)ListNode *p;p=head-next;printf( 商品编号 商品名称 商品数量 n);printf(-n);while (p!=NULL) pr
11、intf(%15s%20s%23sn,p-data.NO,,p-data.count);printf(-n);p=p-next; /后移一个结点void main()int choice,j=1;char Choice;while(j)printf(nnnnn);printf(tttt仓库管理系统n);printf(nttt*);printf(nttt* 1- 仓库管理链表建立 *);printf(nttt* 2- 仓库管理链表插入 *);printf(nttt* 3- 仓库管理链表查询 *);printf(nttt* 4- 仓库管理链表删除 *);printf(nttt
12、* 5- 仓库管理链表输出 *);printf(nttt* 0- 退出仓库管理系统 *);printf(nttt*);printf(nttt请选择菜单号(0-5):);cinchoice;getchar();switch(choice)case 1:printf(*n);printf(* 仓库管理链表建立 *n);printf(*n);head=CreateList( );flag1=1;system(cls);break;case 2:if(flag1!=1) printf(请先建立表!);Sleep(1500);printf(*n);printf(* 仓库管理链表插入 *n);printf
13、(*n);printf(商品编号(10) 商品名称(30) 商品数量n);printf(* n);p=(ListNode *)malloc(sizeof(ListNode); /申请新结点printf(n添加商品编号:n);cinp-data.NO;printf(n添加商品名称:n);;printf(n添加商品数量:n);cinp-data.count;InsertNode(head,p);system(cls);break;case 3:if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(*
14、仓库管理链表查询 *n);printf(*n);p=ListFind(head);if (p!=NULL) printf(商品编号 商品名称 商品数量 n);printf(-n);printf(%s,%s,%sn,p-data.NO,,p-data.count);printf(-n);else printf(没有查到要查询的商品信息!n);break;case 4: if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 仓库管理链表删除 *n);printf(*n);DelNode(head); /删除结点break;case 5:if(flag1!=1) printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(* 仓库管理链表输出 *n);printf(*n);PrintList(head);break;case 0:j=0;system(cls);break;default:printf(ttn 输入有错,请重新输入!n);Sleep(1500);system(cls);break;八课程设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论