已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计报告题目:仓库管理系统学院:计算机与软件学院 班级:2013级软件工程班组员: 完成日期:2014/12/22目 录一:课程设计目标二:问题描述三:需求分析四:概要设计五:详细设计六:源代码清单七:软件说明书八:测试报告 九:课程设计总结一、课程设计目标 学会如何将书本知识灵活运用,增强动手能力。熟练掌握线性表的基本操作在两种存储结构上的实现,其中以双向链表链表的操作和应用为重点内容。 培养我们初步的软件设计及软件测试的能力。 通过此次课程设计,锻炼我们的团队协作能力,合理分工,为以后的多人项目的完成打下了基础。二、问题描述建立一个仓库管理程序,可以按顺序和货物名称查询仓库存储情况,也可以增加或删除货物以及建立新的仓库存储系统。三、需求分析仓库管理是与我们日常生活息息相关的问题,随着改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓库管理的全面自动化、信息化则是其中极其重要的部分。仓库管理信息系统正是基于这样的需求背景下研制开发的。四、概要设计可以采用双向链表的存储结构,如可定义如下的存储结构:typedef struct dnode /*定义双向链表结构体*/ int number; /*货物编号*/ char namemax; /*货物名称*/ int counter; /*货物数量*/ struct dnode *prior,*next; /*定义两指针,分别指向其前驱和后继*/ dlnode;五、详细设计总体操作步骤:(1) 分配存储空间,初始化表;(2) 对表进行插入、删除操作;(3) 完成操作。1.初始化表 (1)申请内存(2)数据置空(3)置表头,完成操作2.仓库管理系统和仓库里链表的建立3. 插入数据(1)申请内存(2)置数据(3)将结点插入,完成操作4.数据查询(仓库链表的查询)5. 删除数据(1)判断相应结点是否存在 (2)从链中取出该结点(3)将结点释放,完成操作6.新的仓库管理系统,仓库链表的输出:7.测试分析白盒:查看代码完整性 黑盒:测试是否可以正确的创建,删除,插入,打印,查找等操作8.使用说明插入删除语句:删除1条内容插入语句:插入一条信息自动打印:打印内容9.测试数据:测试内容测试结果删除一条数据正确插入一条数据正确正常打印数据正确正常查找内容正确六、源程序清单#include#include#include#include#include using namespace std;typedef struct/仓库管理结点类型 char NO10;/商品编号char name30;/商品名称char count5;/商品数量DataType;typedef struct node/结点类型定义 DataType data;/结点数据域struct node *next;/结点指针域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 *)malloc(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.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;/插入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&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(没有查到要删除的商品信息!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) printf(%15s%20s%23sn,p-data.NO,,p-data.count);printf(-n);p=p-next;/后移一个结点 /*主函数*/void main()int choice,j=1;char Choice;int flag1;while(j)printf(nnnnn);printf(tttt仓库管理系统n);printf(nttt*);printf(nttt* 1- 仓库管理链表建立 *);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)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(*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(* 仓库管理链表查询 *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,然后根据提示完善相关信息即可。八、测试报告1.建立带头结点的仓库管理链表函数功能测试(1)输入条件(2)输出结果2有序仓库管理链表的查找函数输入及输出测试3链表结点的插入和删除测试九、课程设计总结通过这次的课程设计,我们真正学习到了线性表的使用方法,使用链表储存结构,将数据域和指针域放在一个结构体中,数据域中又包括商品名称、数量以及编号。经过3天的训练,已经想起了很多有关的C语言的知识,比如我们学习并运用了Sleep函数,其是包含在“windows.h”的头文件中,功能为 执行挂起一段时间。同时我们对文件的读与写有了更全面的了解与应用。一直没有写过超长代码的我们,一直以为直接看着题目敲键盘就可以,没必要进行各种分析,但是在这次课程设计中,我们深深感受到了规划的重要性。没有一个大体规模,会导致思维上的混乱,程序上的错误,既不方便别人读写,也不方便我们发现错误,并改正错误。所以这次我们用了很长时间进行策划,分工我们每人负责几个部分,每个人做好自己的任务之后,再来进行总体的合并整理,这样既不耽误时间,效率也得到了提高。一个好的程序需要强大的编程能力,更需要一个良好
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 多功能厨房沥水盘创新创业项目商业计划书
- 家具生产线安全监控系统创新创业项目商业计划书
- 建筑垃圾破碎与再生利用设备创新创业项目商业计划书
- 复古风格木门拉手设计创新创业项目商业计划书
- 家居五金安全锁具套装创新创业项目商业计划书
- 智慧物流供应链管理平台方案
- 小区透水施工方案
- 过年活动策划方案餐饮
- 班级策划活动方案高中
- 富顺火锅活动方案策划
- 2025年教师考试时事政治考点热点题库含完整答案
- 球馆合伙协议合同模板
- 2024年陕西咸阳杨陵区招聘社区专职工作人员考试真题
- 2025中国光伏组件回收技术发展现状与循环经济战略报告
- 雨课堂在线学堂《军事历史-第二次世界大战史》单元考核测试答案
- 家庭宽带服务质量保障流程规范(2024版)
- 2025年法院书记员招聘考试笔试试题附答案
- 江西洪城水业环保有限公司面向社会公开招聘工勤岗工作人员【28人】考试笔试备考试题及答案解析
- 无锡五四班考试题及答案
- 医院重要事项请示报告制度及流程
- 2025年郑州登封市公共交通运营有限公司社会招聘工作人员35人考试笔试备考试题及答案解析
评论
0/150
提交评论