1、仓储系统管理数据结构课程设计报告仓库管理系统通讯录管理系统猴子选大王(仓储系统管理)数据结构课程设计报告(仓库管理系统、通讯录管理系统、猴子选大王、数据结构课程设计报告第一章 设计目的3第二章 设计任务及要求3一、基本要求3二、内容3第三章 题目分析与解答4一、仓库管理系统41.题目要求42.应用程序功能43.输入数据类型、格式和内容限制64.主要模块的算法描述65.源程序代码7二、通讯录管理系统131.题目要求132.应用程序功能133.输入数据类型、格式和内容限制154.主要算法模块描述165.源程序代码16三、猴子选大王221.题目要求:222.应用程序功能223.输入数据类型、格式和内
2、容限制234.主要算法模块描述235.源程序代码23四、二叉树运算2261.题目要求262.应用程序功能263.输入数据类型、格式和内容限制264.主要算法模块描述265.源程序代码28第一章设计目的一、培养学生运用算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。二、培养学生独立设计程序与解决问题的能力,培养学生团队协作集成程序模块及调试能力。三、培养学生初步的软件设计及软件测试的能力。第二章设计任务及要求一、 基本要求学生必须仔细阅读数据结构课程设计指导书,认真主动完成课设的要求。有问题及时主动通过各种方式与教师联系沟通。学生要发挥自主学习的能力,充分利用时间,安排好课设
3、的时间计划,并在课设过程中不断检测自己的计划完成情况,及时的向教师汇报。课程设计按照教学要求需要一周时间完成,一周中每天(按每周5天)至少要上3-4小时的机来调试C语言设计的程序,总共至少要上机调试程序15小时。根据设计报告要求编写设计报告,主要内容包括目的、意义、原理和实现方法简介、过程分析及说明、实验结果情况说明、结论。每个人必须有可运行的程序,学生能对自己的程序面对教师提问并能熟练地解释清楚,学生回答的问题和程序运行的结果作为评分的主要衡量标准。二、 内容本次课程设计完成如下模块:仓库管理系统、通讯录管理系统、猴子选大王及二叉树运算2。第三章题目分析与解答一、 仓库管理系统1. 题目要求
4、设计一个仓库管理系统,可以按照顺序和货物名称查询仓库的存储情也可以增加或删除货物。structnodecharNO;/商品编号charnamemax;/商品名称charcount;/商品数量;2. 应用程序功能开始运行时界面如下:仓库管理链表建立界面如下:仓库管理链表插入界面如下:仓库管理链表查询界面如下:按商品编号查询界面如下:按商品名称查询界面如下:仓库管理链表删除界面如下:仓库管理链表输出界面如下:3. 输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可出现空格,如在输入商品名称时不可出现空格。4. 主要模块的算法描述流程图:5. 源程序代码#include#inclu
5、deiostreamintflag1=0;#includestring.h#includestdlib.h#includewindows.husingnamespacestd;typedefstruct/仓库管理结点类型charNO10;/商品编号charname30;/商品名称charcount5;/商品数量DataType;typedefstructnode/结点类型定义DataTypedata;/结点数据域structnode*next;/结点指针域ListNode;typedefListNode*LinkList;LinkListhead;ListNode*p;LinkListCrea
6、teList(void);voidInsertNode(LinkListhead,ListNode*p);ListNode*ListFind(LinkListhead);voidDelNode(LinkListhead);voidPrintList(LinkListhead);/*尾插法建立带头结点的仓库管理链表算法*/LinkListCreateList(void)LinkListhead=(ListNode*)malloc(sizeof(ListNode);/申请头结点ListNode*p,*rear;charflag=y;/intflag=0;/结束标志置0rear=head;/尾指针初
7、始指向头结点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;/新结点连接到尾结点之后rear=p;/尾指针指向新结点printf(继续添加记录?(y/n):);cinflag;rear-next=NULL;/终端结点指针置空ret
8、urnhead;/返回链表头指针/*在仓库管理链表head中插入结点*/voidInsertNode(LinkListhead,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所指向的结点p-next=p2;/连接表中剩余的结点/*有序仓库管理链表的查找*/ListNode*ListFind(LinkListhead)ListNode*p;charnum10;charname9;charpp;printf
9、(=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-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(p-data.name,nam
10、e)!=0)p=p-next;returnp;/*仓库管理链表上的结点删除*/voidDelNode(LinkListhead)charjx;ListNode*p,*q;p=ListFind(head);/调用查找函数if(p=NULL)printf(没有查到要删除的商品信息!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);/*仓
11、库管理链表的输出函数*/voidPrintList(LinkListhead)ListNode*p;p=head-next;printf(商品编号商品名称商品数量n);printf(-n);while(p!=NULL)printf(%15s%20s%23sn,p-data.NO,p-data.name,p-data.count);printf(-n);p=p-next;/后移一个结点voidmain()intchoice,j=1;charChoice;while(j)printf(nnnnn);printf(tttt仓库管理系统n);printf(nttt*);printf(nttt*1-仓库
12、管理链表建立*);printf(nttt*2-仓库管理链表插入*);printf(nttt*3-仓库管理链表查询*);printf(nttt*4-仓库管理链表删除*);printf(nttt*5-仓库管理链表输出*);printf(nttt*0-退出仓库管理系统*);printf(nttt*);printf(nttt请选择菜单号(0-5):);cinchoice;getchar();switch(choice)case1:printf(*n);printf(*仓库管理链表建立*n);printf(*n);head=CreateList();flag1=1;system(cls);break;c
13、ase2:if(flag1!=1)printf(请先建立表!);Sleep(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);b
14、reak;case3:if(flag1!=1)printf(请先建立表!);Sleep(1500);elseprintf(*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);elseprintf(没有查到要查询的商品信息!n);break;case4:if(flag1!=1)printf(请先建立表!);Sleep(1500);e
15、lseprintf(*n);printf(*仓库管理链表删除*n);printf(*n);DelNode(head);/删除结点break;case5:if(flag1!=1)printf(请先建立表!);Sleep(1500);elseprintf(*n);printf(*仓库管理链表输出*n);printf(*n);PrintList(head);break;case0:j=0;system(cls);break;default:printf(ttn输入有错,请重新输入!n);Sleep(1500);system(cls);break;二、 通讯录管理系统1. 题目要求通讯录一般包括通讯者
16、的编号、姓名、性别、电话及地址等信息,设计一个通讯录要求实现通讯者的插入、查询、删除、更新、排序操作。structnodecharnum5;/编号charname8;/姓名charsex;/性别chartel8;/电话charaddress100;/地址;2. 应用程序功能开始运行时界面如下:通讯录链表建立界面如下:通讯录链表插入界面如下:通讯录链表查询界面如下:按编号查询界面如下:按姓名查询编号如下:通讯录链表删除界面如下:通讯录链表输出界面如下:3. 输入数据类型、格式和内容限制输入数据类型为字符型,但在输入过程中不可包含空格,如输入地址过程中不可出现空格!4. 主要算法模块描述流程图:5
17、. 源程序代码#include#includeiostreamintflag1=0;#includestring.h#includestdlib.h#includewindows.husingnamespacestd;typedefstruct/通讯录结点类型charnum5;/编号charname9;/姓名charsex3;/性别charphone13;/电话charaddr31;/地址DataType;typedefstructnode/结点类型定义DataTypedata;/结点数据域structnode*next;/结点指针域ListNode;typedefListNode*LinkL
18、ist;LinkListhead;ListNode*p;LinkListCreateList(void);voidInsertNode(LinkListhead,ListNode*p);ListNode*ListFind(LinkListhead);voidDelNode(LinkListhead);voidPrintList(LinkListhead);/*尾插法建立带头结点的通讯录链表算法*/LinkListCreateList(void)LinkListhead=(ListNode*)malloc(sizeof(ListNode);/申请头结点ListNode*p,*rear;charf
19、lag=y;/intflag=0;/结束标志置0rear=head;/尾指针初始指向头结点while(flag=y)p=(ListNode*)malloc(sizeof(ListNode);/申新结点printf(编号(4)姓名(8)性别电话(11)地址(31)n);printf(-n);printf(n添加的编号:n);cinp-data.num;printf(n添加的姓名:n);cinp-data.name;printf(n性别:n);cinp-data.sex;printf(n电话:n);cinp-data.phone;printf(n地址:n);cinp-data.addr;rear-
20、next=p;/新结点连接到尾结点之后rear=p;/尾指针指向新结点printf(继续建表?(y/n):);cinflag;rear-next=NULL;/终端结点指针置空returnhead;/返回链表头指针/*在通讯录链表head中插入结点*/voidInsertNode(LinkListhead,ListNode*p)ListNode*p1,*p2;p1=head;p2=p1-next;while(p2!=NULL&strcmp(p2-data.num,p-data.num)next;/p2指向表的下一个结点p1-next=p;/插入p所指向的结点p-next=p2;/连接表中剩余的结
21、点/*有序通讯录链表的查找*/ListNode*ListFind(LinkListhead)ListNode*p;charnum5;charname9;charpp;printf(=n);printf(a.按编号查询n);printf(b.按姓名查询n);printf(=n);printf(请选择:);p=head-next;cinpp;if(pp=a|pp=A)printf(请输入要查找者的编号:);cinnum;while(p&strcmp(p-data.num,num)next;if(p=NULL)|strcmp(p-data.num,num)0)p=NULL;/没有查到要查找的通讯信息
22、elseif(pp=b|pp=B)printf(请输入要查找者的姓名:);cinname;while(p&strcmp(p-data.name,name)!=0)p=p-next;returnp;/*通讯录链表上的结点删除*/voidDelNode(LinkListhead)charcho;ListNode*p,*q;p=ListFind(head);/调用查找函数if(p=NULL)printf(没有查到要删除的通讯者!n);return;elseif(p!=NULL)printf(真的要删除该结点吗?(y/n));cincho;if(cho=y|cho=Y)q=head;while(q!=
23、NULL)&(q-next!=p)q=q-next;q-next=p-next;/删除结点free(p);/释放被删结点空间printf(删除成功!n);/*通讯录链表的输出函数*/voidPrintList(LinkListhead)ListNode*p;p=head-next;printf(编号姓名性别联系电话地址n);printf(-n);while(p!=NULL)printf(%s,%s,%s,%s,%sn,p-data.num,p-data.name,p-data.sex,p-data.phone,p-data.addr);printf(-n);p=p-next;/后移一个结点voidmain()intchoice,j=1;while(j)printf(nnnnn);printf(tttt通信录链表n);printf(nttt*);printf(nttt*1-通信录链表建立*);print
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1