《仓库出库管理任务书[29页].docx》由会员分享,可在线阅读,更多相关《仓库出库管理任务书[29页].docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、最新资料推荐学 号: 课 程 设 计题 目仓库出库管理的设计与实现学 院计算机科学与技术专 业班 级姓 名指导教师巩 晶201年月日目录1.系统描述3 1.1设计题目3 1.2设计目的3 1.3问题说明3 1.4开发环境3 1.5系统分析3 1.6系统设计流程图42.系统设计5 2.1数据文件设计5 2.2输入输出的设计5 2.3用户界面设计10 2.4处理过程设计123.系统测试123.1测试用例描述123.2测试方法描述133.3测试结果134.总结174.1特点与不足174.2收获与体会185.参考文献18附表18评分表27计算机基础强化训练任务书学生姓名: 专业班级: 指导教师: 工作
2、单位: 题 目: 仓库出库管理的设计与实现 初始条件:理论:学完计算机基础知识,掌握C+语言编程基础和VC开发平台的使用。实践:计算机科学系实验中心提供计算机及软件开发环境。要求完成的主要任务: (1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。 (2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。(4)设计报告按格式要求书写。设
3、计报告正文的内容应包括: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
4、+语言、数据结构、离散数学等,对这些知识加以运用。(2) 掌握编写程序的思想方法、技巧,为以后的专业学习打下良好的基础。(3) 培养动手能力,理论联系实际的能力,在实践中掌握理论,深化对计算机科学与技术的认识。1.3. 问题说明随着企事业的发展,以及人们需求的增多,仓库管理已被广泛的应用。而仓库管理系统软件更是大型企业不可缺少的,它使管理变的更加容易,使管理员轻松的掌握仓库物品信息,调整仓库中物品的进出,了解仓库的库存大小,以及对物品进行查找等。本此训练的系统为仓库出库管理系统,针对的是物品的出库,可以实现针对出库的相应的功能。系统使用C+语言开发,利用面向对象的思想,内存数据用链表组织,数据
5、的存储为文本存储。至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。1.4开发环境Visual C+6.0集成开发环境,主要用C+语言,面向对象的思想方法。1.5 系统分析 (1)数据需求仓库的属性有:货物编号、货物名称、货物数量等。数据需求分析结果如下表: 数据名称数据描述数据类型仓库信息number货物的编号int name10入库货物的名称,如“computer”charquantity相对货物的数量,如20int(2)功能需求 本程序要求实现仓库管理中的物品的入库初始化,物品的出库,物品的列表显示,物品相关信息的查找和退出程序的功能。当输入有误时,给以相应的提示信息
6、。函数名称函数功能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)按名称出库函数
7、void display(dlnode *L)显示货物清单void main()主函数,含有操作界面1.6系统设计流程图仓库出库管理系统退出系统货物出库显示列表货物查询货物入库输出所选货物没有该货物2系统设计2.1数据文件设计最新精品资料整理推荐,更新于二二一年一月十九日2021年1月19日星期二20:00:13该程序采用内部数据结构如下:typedef struct dnode /* 定义双向链表结构体 */ int number; /* 货物编号 */ char namemax; /* 货物名称 */ int counter; /* 货物数量 */ struct dnode *prior,
8、 *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 *
9、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(
10、数量:);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-numbernumber) in-next=L; in-prior=L-prior; L-prior-next=in; L-prior=in; isem
11、pty+; /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(
12、);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();p
13、rintf(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减1 printf(编号为%d的货物成功出库,num); getchar();getchar(); return; printf(没有此编号的货物,请
14、查看是否还有货物。nn); 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减1 printf(名称为%s的货物成功出库,na); getchar();ge
15、tchar(); return; printf(没有此名称的货物,请查看是否还有货物。nn); 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
16、(=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
17、 系统测试 3.1用例测试描述在程序中输入如下信息:货物的种类为: 6编号物品名称数量001绿茶300002红茶350003可乐200004果汁400005酸奶1000006牛奶500分别在测试这些数据是否能出库、显示、查找等。 3.2测试方法根据用例反复检测,看调试的过程中是否出现错误的结果,如是否当文件中没有要查找的数据时,程序是否可以正常运行,是否在查找的时候能准确找到物品,其中最核心的方法就是把各种情况都想到,把代码的各个角落都测试到,这样就可以确保程序的准确性和健壮性。3.3测试结果(1) 文本中的内容(2)显示仓库内信息:(3)查找仓库内物品出库:上述出库后,仓库内的剩余货物:4
18、设计总结 4.1设计特点(优缺点)本次设计,由于重点是出库,而出库的前提是入库,即在编写程序的时候还要加上入库的函数。程序的还有一个特点就是如果有需要,能一直循环下去知道所有的货物都输出来。程序的优点是,简洁,易懂。一就实现了出库,出库,并能随时显示仓库内的物品,查找到所需物品。 程序的另一个优点是界面设计精致,虽然是字符界面,但程序相当好用。关于如何使用,屏幕上的输出提示的很清楚,再加上精美的外观,使人爱不释手。设计中也存在着许多不足,如对于数据信息,比较简洁,货物信息也比较少,这点还有待改进,还有就是有些话重复很多次,有点罗嗦。对一些关于格式化输出的函数掌握并不熟练,还需要进一步的学习。
19、4.2收获和体会本次强化训练开放性和综合性很强,要求我们利用以前所学的的所有知识,来开发本次的仓库入库管理系统,虽然本次系统是字符界面,但在思想上和方法上有了一定的提高。首先,对于文件读写的运用,这开始对我来是一个盲点,因为在C+这门课上,我们从未提及过这方面的知识,虽然自己曾经看过,但只是掌握了一些皮毛。而本次训练,是我在原有的基础上,强化了对文本读写操作的理解。在思想方法上,我了解到,一个真正的系统是有一个坚实的数据库的,而我们现在用的文本存储就是一个模拟的数据库。其次,强化面向对象的思想,自从学习数据结构这门课程,为了用C+对文本进行读写,在操作中用到了类、对象等。再次体会封装思想,强化
20、了已有的知识。最后,本次设计的功能较齐全,功能全责要求我们思维有一定的严谨性,本次程序的编写代码的长度有几百行,难免会出现一些错误,不过在更改错误的过程中,让我们深刻的了解了许多不该犯的思维误区,如判断是否相等的语句x=0写成了x=0,这造成了判断语句永远为真。诸如此类的小错误是编写大程序的禁忌。本次强化训练在理论上和时间上巩固了已有的知识,强化了思维,提高了专业的兴趣,使我对以后的专业课程兴趣盎然。5.参考文献1C+程序设计教程,闵联营,何克右编著,出版社:武汉理工大学出版社,出版或修订时间:2005年7月第1版2数据结构(C语言版),严蔚敏,吴伟民编著,出版社:清华大学出版社,出版或修订时
21、间:1997年4月附表:源代码#include#include#include#include#define max 32int isempty=0;/标志,判断链表是无否为空typedef struct dnode /* 定义双向链表结构体 */ int number; /* 货物编号 */ char namemax; /* 货物名称 */ int counter; /* 货物数量 */ struct dnode *prior, *next;/* 定义两指针,分别指向其前驱和后继 */dlnode; void create(dlnode *L);void input(dlnode *L);v
22、oid 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)
23、; 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
24、);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
25、-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();getch
26、ar(); 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!nn); getchar(
27、);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
28、-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(输入你要查找
29、的货物名称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时表示没有找到 printf(没有找到指定编号货物,请查看是否还有货物。nn); getchar();getchar(); void current(dlnode *L)/货物出库函数 in
30、t 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=
31、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-numbernumber) in-next=L; in-prior=L-prior; L-prior-next=in;