收藏 分销(赏)

仓库出库管理任务书.docx

上传人:pc****0 文档编号:8798578 上传时间:2025-03-02 格式:DOCX 页数:29 大小:168.33KB
下载 相关 举报
仓库出库管理任务书.docx_第1页
第1页 / 共29页
仓库出库管理任务书.docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述
学 号: 课 程 设 计 题 目 仓库出库管理的设计与实现 学 院 计算机科学与技术 专 业 班 级 姓 名 指导教师 巩 晶 201 年 月 日 目录 1.系统描述……………………………………………………3 1.1设计题目……………………………………………………3 1.2设计目的……………………………………………………3 1.3问题说明………………………………………………………3 1.4开发环境………………………………………………………3 1.5系统分析………………………………………………………3 1.6系统设计流程图………………………………………………4 2.系统设计……………………………………………………5 2.1数据文件设计………………………………………………………5 2.2输入输出的设计……………………………………………………5 2.3用户界面设计……………………………………………………10 2.4处理过程设计……………………………………………………12 3.系统测试………………………………………………12 3.1测试用例描述………………………………………………12 3.2测试方法描述……………………………………………13 3.3测试结果…………………………………………………13 4.总结……………………………………………………17 4.1特点与不足………………………………………………17 4.2收获与体会…………………………………………………18 5.参考文献………………………………………………18 附表………………………………………………………18 评分表………………………………………………………27 计算机基础强化训练任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 仓库出库管理的设计与实现 初始条件: 理论:学完计算机基础知识,掌握C++语言编程基础和VC开发平台的使用。 实践:计算机科学系实验中心提供计算机及软件开发环境。 要求完成的主要任务: (1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。 (2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。 (2)编制好程序后,设计若干测试用例,上机测试所设计的程序。 (4)设计报告按格式要求书写。设计报告正文的内容应包括: 1)系统描述 包括问题说明、数据需求和功能需求。 2)系统设计 包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。 3)系统测试 包括测试用例的描述、测试方法和测试结果。 4)设计的特点、不足、收获和体会。 时间安排: 1、第20周(7月4日至7月8日)完成。 2、7月8日8:00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)。 指导教师签名: 2011年 月 日 系主任(或责任教师)签名: 2011年 月 日 1 系统描述 1.1设计题目 仓库出库管理的设计与实现 1.2 设计目的 (1) 通过设计,强化计算机专业基础知识,如C++语言、数据结构、离散数学等,对这些知识加以运用。 (2) 掌握编写程序的思想方法、技巧,为以后的专业学习打下良好的基础。 (3) 培养动手能力,理论联系实际的能力,在实践中掌握理论,深化对计算机科学与技术的认识。 1.3. 问题说明 随着企事业的发展,以及人们需求的增多,仓库管理已被广泛的应用。而仓库管理系统软件更是大型企业不可缺少的,它使管理变的更加容易,使管理员轻松的掌握仓库物品信息,调整仓库中物品的进出,了解仓库的库存大小,以及对物品进行查找等。 本此训练的系统为仓库出库管理系统,针对的是物品的出库,可以实现针对出库的相应的功能。系统使用C++语言开发,利用面向对象的思想,内存数据用链表组织,数据的存储为文本存储。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。 1.4开发环境 Visual C++6.0集成开发环境,主要用C++语言,面向对象的思想方法。 1.5 系统分析 (1)数据需求 仓库的属性有:货物编号、货物名称、货物数量等。数据需求分析结果如下表: 数据名称 数据描述 数据类型 仓库信息 number 货物的编号 int name[10] 入库货物的名称,如“computer” char quantity 相对货物的数量,如20 int (2)功能需求 本程序要求实现仓库管理中的物品的入库初始化,物品的出库,物品的列表显示,物品相关信息的查找和退出程序的功能。当输入有误时,给以相应的提示信息。 函数名称 函数功能 void create(dlnode *L) 创建链表头节点 void search(dlnode *L) 查找主要菜单 void searchnum(dlnode *L) 按编号查找函数 void searchname(dlnode *L) 按名称查找函数 void current(dlnode *L) 货物出库函数 void print( dlnode *L) 输出函数 void input(dlnode *L) 定义入库函数 void output(dlnode *L) 定义出库函数 void outnum(dlnode *L) 按编号出库函数 void outname(dlnode *L) 按名称出库函数 void display(dlnode *L) 显示货物清单 void main() 主函数,含有操作界面 1.6系统设计流程图 仓库出库管理系统 退出系统 货物出库 显示列表 货物查询 货物入库 输出所选货物 没有该货物 2系统设计 2.1数据文件设计 该程序采用内部数据结构如下: typedef struct dnode /* 定义双向链表结构体 */ { int number; /* 货物编号 */ char name[max]; /* 货物名称 */ int counter; /* 货物数量 */ struct dnode *prior, *next; /* 定义两指针,分别指向其前驱和后继 */ }dlnode; void create(dlnode *L);//创建链表头结点 void input(dlnode *L);//定义入库函数 void output(dlnode *L);//定义出库函数 void outnum(dlnode *L);//按编号出库函数 void outname(dlnode *L);//按名称出库函数 void current(dlnode *L);//货物出库函数 void search(dlnode *L);//查找主菜单 void print(dlnode *L);//输出函数 void searchnum(dlnode *L);//按编号查找函数 void searchname(dlnode *L);//按名称查找函数 void display(dlnode *L) ; // 显示货物清单 2.2输入输出的设计 (1)输入 输入,即时入库的实现 void input(dlnode *L)//定义入库函数 { dlnode *in,*head; head=in=(dlnode *)malloc(sizeof(dlnode));//分配空间 head=L; printf("\n请输入货物数据:\n"); printf("编号:");scanf("%d",&in->number); printf("名称:");scanf("%s",&in->name); printf("数量:");scanf("%d",&in->counter); if(L->next==NULL) //如果只有头节点, { //把刚输入的in节点 L->next=in; //跟在头节点后面 L->prior=in; // in->next=L; // in->prior=L; // isempty++; //isempty加1 } else {//如果当前L的下一个节点不是头节点 while((L=L->next)!=head) {//如果输入的数大于L->number,则插到L的前面 if(L->number<in->number) { in->next=L; in->prior=L->prior; L->prior->next=in; L->prior=in; isempty++; //isempty加1 return; } } //输入的编号比其它编号都小,则插到最后个节点,并首尾相连 head->prior->next=in; in->prior=head->prior; head->prior=in; in->next=head; isempty++; //isempty加1 } } (2)输出 即程序中的出库函数,实现了对信息进行分类输出及删除操作,其主要设计代码: 1)选择出库函数类型: void output(dlnode *L)//出库的函数 { int y; dlnode *head=L; if(isempty==0)//检测是否有货物输入 { printf("没有货物输入系统\n"); getchar();getchar(); return ; } while(1) { printf("=============\n"); printf("1.按编号出库\n"); printf("2.按名称出库\n"); printf("0.返回上一层\n"); printf("==============\n"); printf("选择0--2:");scanf("%d",&y); switch(y) { case 1:outnum(L);break;//调用按编号出库函数 case 2:outname(L);break;//调用按名称出库函数 case 0:return; default:printf("enter error!Please input 0--2!"); getchar();getchar();printf("\n\n"); } } } 2)按编号输出函数 void outnum(dlnode *L)//按编号出库函数 { int num; dlnode *head=L; printf("请输入出库货物的编号:"); scanf("%d",&num); while((L=L->next)!=head) {//如果找到就删除节点 if(L->number==num) { L->prior->next=L->next; L->next->prior=L->prior; isempty--; //isempty减1 printf("编号为%d的货物成功出库",num); getchar();getchar(); return; } } printf("没有此编号的货物,请查看是否还有货物。\n\n"); getchar();getchar(); } 3)按名称输出函数: void outname(dlnode *L)//按名称出库函数 { char na[32]; dlnode *head=L; printf("请输入出库货物的名称:"); scanf("%s",&na); while((L=L->next)!=head) {//如果找到就删除节点 if(strcmp(L->name,na)==0) { L->prior->next=L->next; L->next->prior=L->prior; isempty--; //isempty减1 printf("名称为%s的货物成功出库",na); getchar();getchar(); return; } } printf("没有此名称的货物,请查看是否还有货物。\n\n"); getchar();getchar(); } 2.3用户界面设计 void create(dlnode *L)//创建链表头节点 { int i; printf("*******欢迎使用仓库出库管理的设计与实现*******\n"); isempty=0; ///////初始化头节点的值//////// L->next=NULL;L->prior=NULL; L->number=L->counter=0; strcpy(L->name," "); printf("货物库存初始化\n"); printf("============================\n"); printf(" 1.继续增加库存\n"); printf(" 0.结束\n"); printf("============================\n"); scanf("%d",&i); while(i==1) { input(L); printf("\n============================\n"); printf(" 1.继续增加库存\n"); printf(" 0.结束\n"); printf("============================\n"); scanf("%d",&i); } } 初始化: 输入1时: 输入0时: 2.4处理过程设计 程序整体的处理过程描述如下: 实验要求是仓库出库管理的设计与实现,然而,出库的前提就是入库,所以还需要写一个入库的程序,输入货物及其信息。首先是增加库存,再接下来有5个选择分别是货物出库、查找货物表、显示仓库货物表,输出到文件和退出,运用这5个操作,实现对出库管理的操作,在程序设计中,运用到了对数据的增加,删除(即出库)、查找、输出等 。 3 系统测试 3.1用例测试描述 在程序中输入如下信息: 货物的种类为: 6 编号 物品名称 数量 001 绿茶 300 002 红茶 350 003 可乐 200 004 果汁 400 005 酸奶 1000 006 牛奶 500 分别在测试这些数据是否能出库、显示、查找等。 3.2测试方法 根据用例反复检测,看调试的过程中是否出现错误的结果,如是否当文件中没有要查找的数据时,程序是否可以正常运行,是否在查找的时候能准确找到物品,其中最核心的方法就是把各种情况都想到,把代码的各个角落都测试到,这样就可以确保程序的准确性和健壮性。 3.3测试结果 (1) 文本中的内容 (2)显示仓库内信息: (3)查找仓库内物品 出库: 上述出库后,仓库内的剩余货物: 4 设计总结 4.1设计特点(优缺点) 本次设计,由于重点是出库,而出库的前提是入库,即在编写程序的时候还要加上入库的函数。程序的还有一个特点就是如果有需要,能一直循环下去知道所有的货物都输出来。程序的优点是,简洁,易懂。一就实现了出库,出库,并能随时显示仓库内的物品,,查找到所需物品。 程序的另一个优点是界面设计精致,虽然是字符界面,但程序相当好用。关于如何使用,屏幕上的输出提示的很清楚,再加上精美的外观,使人爱不释手。 设计中也存在着许多不足,如对于数据信息,比较简洁,货物信息也比较少,这点还有待改进,还有就是有些话重复很多次,有点罗嗦。对一些关于格式化输出的函数掌握并不熟练,还需要进一步的学习。 4.2收获和体会 本次强化训练开放性和综合性很强,要求我们利用以前所学的的所有知识,来开发本次的仓库入库管理系统,虽然本次系统是字符界面,但在思想上和方法上有了一定的提高。 首先,对于文件读写的运用,这开始对我来是一个盲点,因为在C++这门课上,我们从未提及过这方面的知识,虽然自己曾经看过,但只是掌握了一些皮毛。而本次训练,是我在原有的基础上,强化了对文本读写操作的理解。在思想方法上,我了解到,一个真正的系统是有一个坚实的数据库的,而我们现在用的文本存储就是一个模拟的数据库。 其次,强化面向对象的思想,自从学习数据结构这门课程,为了用C++对文本进行读写,在操作中用到了类、对象等。再次体会封装思想,强化了已有的知识。 最后,本次设计的功能较齐全,功能全责要求我们思维有一定的严谨性,本次程序的编写代码的长度有几百行,难免会出现一些错误,不过在更改错误的过程中,让我们深刻的了解了许多不该犯的思维误区,如判断是否相等的语句x==0写成了x=0,这造成了判断语句永远为真。诸如此类的小错误是编写大程序的禁忌。本次强化训练在理论上和时间上巩固了已有的知识,强化了思维,提高了专业的兴趣,使我对以后的专业课程兴趣盎然。 5.参考文献 [1]《C++程序设计教程》,闵联营,何克右编著,出版社:武汉理工大学出版社,出版或修订时间:2005年7月第1版 [2]《数据结构(C语言版)》,严蔚敏,吴伟民编著,出版社:清华大学出版社,出版或修订时间:1997年4月 附表: 源代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #define max 32 int isempty=0;//标志,判断链表是无否为空 typedef struct dnode /* 定义双向链表结构体 */ { int number; /* 货物编号 */ char name[max]; /* 货物名称 */ int counter; /* 货物数量 */ struct dnode *prior, *next; /* 定义两指针,分别指向其前驱和后继 */ }dlnode; void create(dlnode *L); void input(dlnode *L); void output(dlnode *L); void outnum(dlnode *L); void outname(dlnode *L); void current(dlnode *L); void search(dlnode *L); void print(dlnode *L); void searchnum(dlnode *L); void searchname(dlnode *L); void display(dlnode *L) ; void main() { int x; dlnode *L; if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空间 { printf("\n"); exit(1); } create(L);///调用函数,创建头节点,并完成库存初始化 while(1) {////////////////////////主菜单/////////////////////////// printf(" ============================\n"); printf(" 1. 货物出库\n"); printf(" 2. 查找货物表\n"); printf(" 3. 显示仓库货物表\n"); printf(" 4. 输出到文件\n"); printf(" 0. 退出\n"); printf(" =============================\n"); printf(" 选择0--4:"); scanf("%d",&x); switch(x) { case 1:current(L);break;//调用出库函数 case 2:search(L);break;//调用查找函数 case 3:display(L);break;//调用显示输出函数 case 4:print(L);break;//调用打印函数 case 0:printf("\n bye!see you!\n"); getchar();getchar();exit(0);//退出程序 default:printf("\n Enter erreor!please input 0--4!"); getchar();getchar(); } } } void create(dlnode *L)//创建链表头节点 { int i; printf("*******欢迎使用仓库出库管理的设计与实现*******\n"); isempty=0; ///////初始化头节点的值//////// L->next=NULL;L->prior=NULL; L->number=L->counter=0; strcpy(L->name," "); printf("货物库存初始化\n"); printf("============================\n"); printf(" 1.继续增加库存\n"); printf(" 0.结束\n"); printf("============================\n"); scanf("%d",&i); while(i==1) { input(L); printf("\n============================\n"); printf(" 1.继续增加库存\n"); printf(" 0.结束\n"); printf("============================\n"); scanf("%d",&i); } } void search(dlnode *L) ///查找的主要菜单 { int y; if(isempty==0) { printf("没有输入货物!\n"); getchar();getchar(); return; } else { while(1) { printf("=====================\n"); printf("1.按编号查询\n"); printf("2.按货物名称查询\n"); printf("0.返回上一层\n"); printf("====================\n"); printf("选择0--2:"); scanf("%d",&y); switch(y) { case 1:searchnum(L);break;//调用按编号查找的函数 case 2:searchname(L);break;//调用按名称查找的函数 case 0:return;//返回 default:printf("enter error!Please input 0--2!\n\n"); getchar();getchar();printf("\n\n"); } } } } void searchnum(dlnode *L)///按编号查找的函数 { int num,flag=0;//flag为是否找到的标志 dlnode *head=L; if(isempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物编号:\n"); scanf("%d",&num); while((L=L->next)!=head) { if(L->number==num) { flag=1;//flag为1时表示找到 printf("找到指定编号货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。\n"); getchar();getchar(); } void searchname(dlnode *L)//按名称查找的函数 { int flag=0;//flag为是否找到的标志 char na[32]; dlnode *head=L; if(isempty==0) { printf("没有货物被输入\n"); getchar();getchar(); return; } printf("输入你要查找的货物名称\n"); scanf("%s",&na); while((L=L->next)!=head) { if(strcmp(L->name,na)==0) { flag=1;//flag为1时表示找到 printf("找到指定名称货物 \n"); printf("\n编号:%d\n",L->number); printf("名称:%s\n",L->name) ; printf("数量:%d\n\n",L->counter); } } if(flag==0)//flag为0时表示没有找到 printf("没有找到指定编号货物,请查看是否还有货物。\n\n"); getchar();getchar(); } void current(dlnode *L)//货物出库函数 { int y; while(1) { printf("========================\n"); printf(" 1.货物出库\n"); printf(" 0.返回上一层\n"); printf("========================\n"); printf(" 选择1--2:"); scanf("%d",&y); switch(y) { case 1:output(L);break;//调用出库函数 case 0:return;//返回上一层 default:printf("enter error!Please input 0--2!"); getchar();getchar(); printf("\n\n"); } } } void input(dlnode *L)//定义入库函数 { dlnode *in,*head; head=in=(dlnode *)malloc(sizeof(dlnode));//分配空间 head=L; printf("\n请输入货物数据:\n"); printf("编号:");scanf("%d",&in->number); printf("名称:");scanf("%s",&in->name); printf("数量:");scanf("%d",&in->counter); if(L->next==NULL) //如果只有头节点, { //把刚输入的in节点 L->next=in; //跟在头节点后面 L->prior=in; // in->next=L; // in->prior=L; // isempty++; //isempty加1 } else {//如果当前L的下一个节点不是头节点 while((L=L->next)!=head) {//如果输入的数大于L->number,则插到L的前面 if(L->number<in->number) { in->next=L; in->prior=L->prior; L->prior->next=in; L->prior=in; isempty++; //isempty加1 return; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服