仓库出库管理任务书

上传人:jin****ng 文档编号:53627261 上传时间:2022-02-10 格式:DOC 页数:32 大小:474KB
返回 下载 相关 举报
仓库出库管理任务书_第1页
第1页 / 共32页
仓库出库管理任务书_第2页
第2页 / 共32页
仓库出库管理任务书_第3页
第3页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
仓库出库管理任务书学号:课程设计仓库出库管理的设计与实 题 目现学 院计算机科学与技术专 业班 级姓 名指导教师巩晶201年 月日目录1. 系统描述 31.1 设计题目 31.2 设计目的 31.3 问题说明 31.4开发环境 31.5系统分析 31.6系统设计流程图 42. 系统设计 52.1 数据文件设计 52.2 输入输出的设计 52.3用户界面设计 102.4 处理过程设计 123. 系统测试 123.1 测试用例描述 123.2 测试方法描述 133.3 测试结果 134. 总结 174.1 特点与不足 174.2 收获与体会 185. 参考文献 18附表 18评分表 27计算机基础强化训练任务书专业班级:学生姓名:指导教师:工作单位:题目:仓库出库管理的设计与实现初始条件:理论:学完计算机基础知识,掌握 C+语言编程基础和VC开发平台的使用。 实践:计算机科学系实验中心提供计算机及软件开发环境。要求完成的主要任务:(1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。(2) 系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设 计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用 户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据 项进行)。(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。(4)设计报告按格式要求书写。设计报告正文的内容应包括:1) 系统描述包括问题说明、数据需求和功能需求。2) 系统设计包括内存数据结构设计、数据文件设计、代码设计、输入 /输出设 计、用户界面设计、处理过程设计。3) 系统测试包括测试用例的描述、测试方法和测试结果。4)设计的特点、不足、收获和体会。时间安排:1、第20周(7月4日至7月8日)完成。2、7月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货物的编号intname10入库货物的名 称,如ag力computercharquantily相对货物的数量,如20int(2)功能需求本程序要求实现仓库管理中的物品的入库初始化,物品的出库,物品的列表显示,物 品相关信息的查找和退出程序的功能。当输入有误时,给以相应的提示信息。函数名称函数功能void create(dlnode *L)创建链表头节点void search(dlnode *L)查找主要菜单void searchnum(dlnode *L)按编号查找函数void searchname(dlnod e *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 displav(dlnode *L)显示货物清单void main()主函数,含有操作界面1.6系统设计流程图入 查 列 出 系2系统设计2.1数据文件设计该程序采用内部数据结构如下:typedef struct dnode /*定义双向链表结构体 */int number;char namemax;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);/ 货物出库函数voidsearch(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)L-next=in;L-prior=in; in-next=L; in-prior=L;/如果只有头节点,/把刚输入的 in 节点/跟在头节点后面 /isempty+; /isempty 力卩 1else /如果当前 L 的下一个节点不是头节点while(L=L-next)!=head)/如果输入的数大于 L-number ,则插到 L 的前面 if(L-numbernumber)in-next=L;in-prior=L-prior;L-prior-next=in;L-prior=in;isempty+; /isempty 力卩 1return;/输入的编号比其它编号都小,则插到最后个节点,并首尾相连 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(nn);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 减 1printf(编号为%d的货物成功出库,num); getchar();getchar();return;nn);printf( 没有此编号的货物 ,请查看是否还有货物。getchar();getchar();3) 按名称输出函数:void outname(dlnode *L)/按 名称出库函数char na32;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 减 1printf(名称为%s的货物成功出库,na); getchar();getchar();return;nn);printf( 没有此名称的货物 ,请查看是否还有货物 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时:2.4处理过程设计程序整体的处理过程描述如下:实验要求是仓库出库管理的设计与实现,然而,出库的前提就是入库,所以还需要写 一个入库的程序,输入货物及其信息。首先是增加库存,再接下来有 5个选择分别是货物 出库、查找货物表、显示仓库货物表,输出到文件和退出,运用这 5个操作,实现对出库 管理的操作,在程序设计中,运用到了对数据的增加,删除(即出库) 、查找、输出等。3系统测试3.1用例测试描述在程序中输入如下信息:货物的种类为:6编号物品名称数量001绿茶300002红茶350003可乐200004果汁400005酸奶1000006牛奶500分别在测试这些数据是否能出库、显示、查找等。3.2测试方法根据用例反复检测,看调试的过程中是否出现错误的结果,如是否当文件中没有要查 找的数据时,程序是否可以正常运行,是否在查找的时候能准确找到物品,其中最核心的 方法就是把各种情况都想到,把代码的各个角落都测试到,这样就可以确保程序的准确性 和健壮性。3.3测试结果(1)文本中的内容O 4-49620 3 3 8-520 2 2 7 4 2 1水 茶茶彖雷 绿红酿可果纯12 3 4 5 6 o o o o o O o o o o o O(2)显示仓库内信息:狞库存12340货锄出库显示仓库鬟审输申割文*退岀选择04:3屠慕纯净水(3)查找仓库内物品界库到出货鍊输12 3 4 0卻-询称层查名一壽上邂貝回n到指定编号货物囂乍龜找的货物名称戋到扌曰定名称货物出库:上述出库后,仓库内的剩余货物:0可乐456和茶123显示,选择04:3纯净水10004设计总结4.1设计特点(优缺点)本次设计,由于重点是出库,而出库的前提是入库,即在编写程序的时候还要加上入 库的函数。程序的还有一个特点就是如果有需要,能一直循环下去知道所有的货物都输出 来。程序的优点是,简洁,易懂。一就实现了出库,出库,并能随时显示仓库内的物品, 查找到所需物品。程序的另一个优点是界面设计精致,虽然是字符界面,但程序相当好用。关于如何使 用,屏幕上的输出提示的很清楚,再加上精美的外观,使人爱不释手。设计中也存在着许多不足,如对于数据信息,比较简洁,货物信息也比较少,这点还 有待改进,还有就是有些话重复很多次,有点罗嗦。对一些关于格式化输出的函数掌握并 不熟练,还需要进一步的学习。4.2收获和体会本次强化训练开放性和综合性很强,要求我们利用以前所学的的所有知识,来开发本 次的仓库入库管理系统, 虽然本次系统是字符界面, 但在思想上和方法上有了一定的提高。首先,对于文件读写的运用,这开始对我来是一个盲点,因为在C+这门课上,我们从未提及过这方面的知识,虽然自己曾经看过,但只是掌握了一些皮毛。而本次训练,是 我在原有的基础上,强化了对文本读写操作的理解。在思想方法上,我了解到,一个真正 的系统是有一个坚实的数据库的,而我们现在用的文本存储就是一个模拟的数据库。其次,强化面向对象的思想,自从学习数据结构这门课程,为了用 C+对文本进行读 写,在操作中用到了类、对象等。再次体会封装思想,强化了已有的知识。最后,本次设计的功能较齐全,功能全责要求我们思维有一定的严谨性,本次程序的 编写代码的长度有几百行,难免会出现一些错误,不过在更改错误的过程中,让我们深刻 的了解了许多不该犯的思维误区,如判断是否相等的语句 x=0写成了 x=0,这造成了判断 语句永远为真。诸如此类的小错误是编写大程序的禁忌。本次强化训练在理论上和时间上 巩固了已有的知识,强化了思维,提高了专业的兴趣,使我对以后的专业课程兴趣盎然。5.参考文献1 C+程序设计教程,闵联营,何克右编著,出版社:武汉理工大学出版社,出 版或修订时间: 2005年7月第1版2 数据结构 (C 语言版 ) ,严蔚敏,吴伟民编著,出版社:清华大学出版社,出版 或修订时间: 1 997年4月附表:源代码#include#include#include#include#define max 32int isempty=0;/标志,判断链表是无否为空*/typedef struct dnodeint number; char namemax; 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(nbye!see you!n);getchar();getchar();exit(0);/退出程序default:printf(nEnter 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;elsewhile(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!nn); getchar();getchar();printf(nn);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 编号:%dn,L-number);printf(名称:%sn,L-name); printf(数量:dnn,L-counter);if(flag=0)/flag 为 0 时表示没有找到printf( 没有找到指定编号货物 ,请查看是否还有货物。 n); getchar();getchar();void searchname(dlnode *L)/按名称查找的函数int flag=0;/flag 为是否找到的标志char na32;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 编号 :%dn,L-number);printf(名称:sn,L-name); printf(数量:dnn,L-counter);if(flag=0)/flag 为 0 时表示没有找到nn);printf( 没有找到指定编号货物 ,请查看是否还有货物 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(nn);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 加 1else/如果当前 L 的下一个节点不是头节点while(L=L-next)!=head)/如果输入的数大于L-number,则插到L的前面if(L-numbernumber)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 力卩 1void 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(nn);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( 没有此编号的货物 ,请查看是否还有货物 getchar();getchar();void outname(dlnode *L)/按 名称出库函数char na32;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( 没有此名称的货物 ,请查看是否还有货物 getchar();getchar();void display(dlnode *L)显示货物清单dlnode *head=L;if(isempty=0)printf( 没有货物可显示 n); getchar();getchar();return;L=L-next;doprintf(n 编号 :%dn,L-number); printf(名称:sn,L-name); printf(数量:dnn,L-counter);nn);nn);while(L=L-next)!=head); getchar();getchar();void print(dlnode *L)dlnode *head=L;L=L-next;char filenamemax;FILE *out;if(isempty=0)printf( 没有货物可输出 n);getchar();getchar();return;printf( 请输入文件名称 :);scanf(%s,filename); if(out=fopen(filename,w)=NULL) printf( 打开文件失败 !n);getchar();getchar();return;dofprintf(out,编号:dn 名称:sn 数 量:dnn,L-number,L-name,L-counter);while(L=L-next)!=head);printf( 输出成功 n);getchar();getchar(); fclose(out);本科生课程设计成绩评定表班级:计算机0909班 姓名: 学号:序号评分项目满分实得分1学习态度认真、遵守纪律102设计分析合理性103设计方案正确性、可行性、创造性204设计结果正确性405设计报告的规范性106设计验收10总得分/等级评语:注:最终成绩以五级分制记。优(90-100分)、良(80-89分)、中(70-79分)、 及格(60-69分)、60分以下为不及格指导教师签名:年 月曰
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!