《数据结构课程设计》由会员分享,可在线阅读,更多相关《数据结构课程设计(27页珍藏版)》请在毕设资料网上搜索。
1、 计算机科学与技术学院计算机科学与技术学院 课课 程程 设设 计计 报报 告告 课程名称:课程名称: 数 据 结 构 专专 业:业: 计算机科学与技术 一、一、 仓库管理系统仓库管理系统 1.1. 题目要求题目要求 使用链表实现一个仓库管理系统,仓库商品的属性包括(商品编号,商品名称,商品数 量),借助计算机来完成如下功能: (1)入库:可以录入商品信息,包括:商品编号,商品名称,商品数量,商品价格; (2)出库:可以删除一定数量的指定商品名称的商品,商品不够给出提示。 (3)修改:修改指定商品编号或者商品名称的价格。 (4)删除:可以删除指定商品编号、商品名称的商品记录。 (5)查询:可以查
2、询所有商品信息;或指定商品编号、商品名称的商品信息。 (6)排序:可以根据价格或数量对商品进行排序,并显示排序结果。 typedef struct /仓库管理结点类型 char NO10; /商品编号 char name30; /商品名称 char count5; /商品数量 char pricet10; /商品价格 DataType; 2.2. 应用程序功能应用程序功能 开始运行时界面如下: 仓库管理链表建立界面如下: 仓库管理链表插入界面如下: 仓库管理链表查询界面如下: 按商品编号查询界面如下: 仓库管理链表删除界面如下: 仓库管理链表排序界面: 仓库管理链表输出界面如下: 3.3. 输
3、入数据类型、格式和内容限制输入数据类型、格式和内容限制 输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品 名称时不可出现空格。 4.4. 主要模块的算法描述主要模块的算法描述 流程图: 5.5. 核心算法描述核心算法描述 定义仓库节点类型 typedef struct /仓库管理结点类型 char NO10; /商品编号 char name30; /商品名称 char count5; /商品数量 char price10;/商品价格 DataType; typedef struct node /结点类型定义 DataType data; /结点数据域 struct node *n
4、ext; /结点指针域 ListNode; /*尾插法建立带头结点的仓库管理链表算法*/ LinkList CreateList(void) 修改 排序 按 编 号 排 序 按 价 格 排 序 按 数 量 排 序 修改成功 LinkList head=(ListNode *)malloc(sizeof(ListNode); /申请头结点 ListNode *p,*rear; char flag=y; /int flag=0; /结束标志置 0 rear=head; /尾指针初始指向头结点 while (flag=y) p=(ListNode *)malloc(sizeof(ListNode);
5、 /申新结点 printf(“ 商品编号(10) 商品名称(30) 商品数量(5) 商品价格 (10)n“); printf(“-n“); printf(“n 添加商品编号:n“); cinp-data.NO; printf(“n 添加商品名称:n“); cinp-data.name; printf(“n 添加商品数量:n“); cinp-data.count; printf(“n 添加商品价格:n“); cinp-data.price; 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 /p2 指向表的下一个结点 p1-next=p; /插入 p 所指向的结点 p-next=p2; /连接表中剩余的结点 /*有序仓库管理链表的查找 */ ListNode *ListFin