1、数据结构仓库管理系统仓库管理系统1. 题目要求设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情也可以增加或删除货物。struct node char NO; /商品编号 char namemax; /商品名称 char count; /商品数量;2. 应用程序功能开始运行时界面如下: 仓库管理链表建立界面如下:仓库管理链表插入界面如下:仓库管理链表查询界面如下:仓库管理链表删除界面如下:仓库管理链表输出界面如下:3. 输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。4. 主要模块的算法描述流程图:5. 源程序代码#inc
2、lude #includeiostreamint flag1=0;#include string.h#include stdlib.h#include windows.husing namespace std;typedef struct /仓库管理结点类型 char NO10; /商品编号 char name30; /商品名称 char count5; /商品数量 DataType;typedef struct node /结点类型定义 DataType data; /结点数据域 struct node *next; /结点指针域 ListNode;typedef ListNode *Lin
3、kList;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 *)malloc(sizeof(ListNode); /申请头结点 L
4、istNode *p,*rear; char flag=y; /int flag=0; /结束标志置0 rear=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); cinp-data.name; printf(n添加商品数量:n); cinp-data.count; rear-next=p
5、; /新结点连接到尾结点之后 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; /插入p所指向的结点
6、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&strcmp(p-
7、data.NO,num)next; if (p=NULL)|strcmp(p-data.NO,num)0) p=NULL; /没有查到要查找的通讯信息 else if (pp=b|pp=B) printf( 请输入要查找的商品名称:); cinname; while(p&strcmp(p-data.name,name)!=0) p=p-next; return p; /*仓库管理链表上的结点删除*/void DelNode(LinkList head) char jx; ListNode *p,*q; p=ListFind(head); /调用查找函数 if (p=NULL) printf(没
8、有查到要删除的商品信息!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); whi
9、le (p!=NULL) printf(%15s%20s%23sn,p-data.NO,p-data.name,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
10、* 4- 仓库管理链表删除 *); printf(nttt* 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
11、(1500); printf(*n); printf(* 仓库管理链表插入 *n); printf(*n); printf(商品编号(10) 商品名称(30) 商品数量n); printf(* n); p=(ListNode *)malloc(sizeof(ListNode); /申请新结点 printf(n添加商品编号:n); cinp-data.NO; printf(n添加商品名称:n); cinp-data.name; printf(n添加商品数量:n); cinp-data.count; InsertNode(head,p); system(cls); break; case 3: i
12、f(flag1!=1) printf(请先建立表!); Sleep(1500); else printf(*n); printf(* 仓库管理链表查询 *n); printf(*n); p=ListFind(head); if (p!=NULL) printf(商品编号 商品名称 商品数量 n); printf(-n); printf(%s,%s,%sn,p-data.NO,p-data.name,p-data.count); printf(-n); else printf(没有查到要查询的商品信息!n); break; case 4: if(flag1!=1) printf(请先建立表!);
13、 Sleep(1500); else printf(*n); printf(* 仓库管理链表删除 *n); printf(*n); DelNode(head); /删除结点 break; case 5: if(flag1!=1) printf(请先建立表!); Sleep(1500); else printf(*n); printf(* 仓库管理链表输出 *n); printf(*n); PrintList(head); break; case 0:j=0;system(cls);break; default:printf(ttn 输入有错,请重新输入!n);Sleep(1500);system(cls);break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1