仓库出库管理的设计与实现DOC 29页.docx
- 文档编号:25638499
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:35
- 大小:165.09KB
仓库出库管理的设计与实现DOC 29页.docx
《仓库出库管理的设计与实现DOC 29页.docx》由会员分享,可在线阅读,更多相关《仓库出库管理的设计与实现DOC 29页.docx(35页珍藏版)》请在冰豆网上搜索。
仓库出库管理的设计与实现DOC29页
仓库出库管理的设计与实现(DOC29页)
学号:
课程设计
题目
仓库出库管理的设计与实现
学院
计算机科学与技术
专业
班级
姓名
指导教师
巩晶
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开发环境
VisualC++6.0集成开发环境,主要用C++语言,面向对象的思想方法。
1.5系统分析
(1)数据需求
仓库的属性有:
货物编号、货物名称、货物数量等。
数据需求分析结果如下表:
数据名称
数据描述
数据类型
仓库信息
number
货物的编号
int
name[10]
入库货物的名称,如“computer”
char
quantity
相对货物的数量,如20
int
(2)功能需求
本程序要求实现仓库管理中的物品的入库初始化,物品的出库,物品的列表显示,物品相关信息的查找和退出程序的功能。
当输入有误时,给以相应的提示信息。
函数名称
函数功能
voidcreate(dlnode*L)
创建链表头节点
voidsearch(dlnode*L)
查找主要菜单
voidsearchnum(dlnode*L)
按编号查找函数
voidsearchname(dlnode*L)
按名称查找函数
voidcurrent(dlnode*L)
货物出库函数
voidprint(dlnode*L)
输出函数
voidinput(dlnode*L)
定义入库函数
voidoutput(dlnode*L)
定义出库函数
voidoutnum(dlnode*L)
按编号出库函数
voidoutname(dlnode*L)
按名称出库函数
voiddisplay(dlnode*L)
显示货物清单
voidmain()
主函数,含有操作界面
1.6系统设计流程图
仓库出库管理系统
2系统设计
2.1数据文件设计
该程序采用内部数据结构如下:
typedefstructdnode/*定义双向链表结构体*/
{
intnumber;/*货物编号*/
charname[max];/*货物名称*/
intcounter;/*货物数量*/
structdnode*prior,*next;
/*定义两指针,分别指向其前驱和后继*/
}dlnode;
voidcreate(dlnode*L);//创建链表头结点
voidinput(dlnode*L);//定义入库函数
voidoutput(dlnode*L);//定义出库函数
voidoutnum(dlnode*L);//按编号出库函数
voidoutname(dlnode*L);//按名称出库函数
voidcurrent(dlnode*L);//货物出库函数
voidsearch(dlnode*L);//查找主菜单
voidprint(dlnode*L);//输出函数
voidsearchnum(dlnode*L);//按编号查找函数
voidsearchname(dlnode*L);//按名称查找函数
voiddisplay(dlnode*L);//显示货物清单
2.2输入输出的设计
(1)输入
输入,即时入库的实现
voidinput(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->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)选择出库函数类型:
voidoutput(dlnode*L)//出库的函数
{
inty;
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)
{
case1:
outnum(L);break;//调用按编号出库函数
case2:
outname(L);break;//调用按名称出库函数
case0:
return;
default:
printf("entererror!
Pleaseinput0--2!
");
getchar();getchar();printf("\n\n");
}
}
}
2)按编号输出函数
voidoutnum(dlnode*L)//按编号出库函数
{
intnum;
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)按名称输出函数:
voidoutname(dlnode*L)//按名称出库函数
{
charna[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用户界面设计
voidcreate(dlnode*L)//创建链表头节点
{
inti;
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
#include
#include
#include
#definemax32
intisempty=0;//标志,判断链表是无否为空
typedefstructdnode/*定义双向链表结构体*/
{
intnumber;/*货物编号*/
charname[max];/*货物名称*/
intcounter;/*货物数量*/
structdnode*prior,*next;
/*定义两指针,分别指向其前驱和后继*/
}dlnode;
voidcreate(dlnode*L);
voidinput(dlnode*L);
voidoutput(dlnode*L);
voidoutnum(dlnode*L);
voidoutname(dlnode*L);
voidcurrent(dlnode*L);
voidsearch(dlnode*L);
voidprint(dlnode*L);
voidsearchnum(dlnode*L);
voidsearchname(dlnode*L);
voiddisplay(dlnode*L);
voidmain()
{
intx;
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)
{
case1:
current(L);break;//调用出库函数
case2:
search(L);break;//调用查找函数
case3:
display(L);break;//调用显示输出函数
case4:
print(L);break;//调用打印函数
case0:
printf("\nbye!
seeyou!
\n");
getchar();getchar();exit(0);//退出程序
default:
printf("\nEntererreor!
pleaseinput0--4!
");
getchar();getchar();
}
}
}
voidcreate(dlnode*L)//创建链表头节点
{
inti;
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);
}
}
voidsearch(dlnode*L)///查找的主要菜单
{
inty;
if(isempty==0)
{
printf("没有输入货物!
\n");
getchar();getchar();
return;
}
else
{
while
(1)
{
printf("=====================\n");
printf("1.按编号查询\n");
printf("2.按货物名称查询\n");
printf("0.返回上一层\n");
printf("=================
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仓库出库管理的设计与实现DOC 29页 仓库 出库 管理 设计 实现 DOC 29