商品库存管理系统需求分析.docx
商 品 库 存 管 理 程序设计报告 课程名称:C语言课程设计程序设计 班 级: 电 气 1401 组 长: 王闯 小组成员:王闯 孟宁 夏涵 胡琛 谢俊良 韩梦成 代仁旺 指导老师: 伊芸芸 目录第1章 引言 (1)第2章 总体设计 (2) 2.1系统的需求分析 (2) 2.2 系统的功能 (2) 2.3 主要用到的函数 (6)第3章 详细设计 (7) 3.1 代码以及对应的备注(9)第4章 界面设计及代码 (17) 4.1 主界面 (17) 4.2录入商品信息 (18) 4.3查看商品信息 (20) 4.4删除商品信息 (22) 4.5修改商品信息 (24) 4.6查询单个商品信息(30) 4.7商品库存系统退出(32) 4.8其他字符输入管理(32)第5章 调试 (34) 5.1测试目的(34) 5.2功能测试(34)第6章 总结与展望 (35)附录 (36) 1 附录A小组成员及其分工情况(36)参考文献(37) 2第1章 引言 商品经济是社会经济的重要组成部分,而作为商品经济最基本的商品,由于其种类繁多,因此其商品管理本身就已经比较复杂,何况作为商品管理最重要的库存管理的复杂性, 可想而知。因此一个完善的商品库存管理系统是一个企业不可缺少的部分,它的内容对于企业的决策者和管理者来说都至关重要,所以商品库存管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:效率低、另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对物资信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套商品库存管理软件成为很有必要的事情。第2章 总体设计2.1 系统的需求分析 伴随着计算机的发展及网络技术的应用,我们正在快速地向信息化社会迈进,信息自动化的作用变得越来越大。 在仓库管理领域中,仓库管理的规模正在不断扩大,仓库管理的复杂度正在急剧地增加,有关仓库管理的各种信息量也成倍地增长。面对庞大的信息量,就需要有商品库存管理系统来提高库存管理工作的效率。通过这样的系统,可以方便的查询、添加和修改商品及供货商的基本情况,掌握入库出库的各种情况,实现信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量,同时避免由于人为因素造成数据遗漏和误报等。2.2 系统功能 本系统主要模块为商品信息管理。仓库管理模块通过此模块来管理商品信息,包括浏览、录入、查询、修改和删除功能。 2.2.1 录入功能 录入功能是向系统中输入数据的一个功能。可以把商品的名称、编号以及数据录入系统中。流程图如图2.1所示 图 2.1 入库流程图 2.2.2 查询功能 查询功能是对于库存中的产品的数据进行查询。流程图如图2.2所示 图2.2 查询功能流程图 首先输入一个商品代码i,然后对i进行判断,如果i正确也就是存在,那么i,执行输出该商品各信息的步骤。如果i不存在i,那么执行没有该商品这个步骤。最后进行循环该步骤查询多个商品. 2.2.3 修改功能 修改功能是应用于对商品信息的修改。出库后的时候对商品库存数目的管理;还有对于一些错误信息的修改。具体流程如图2.3所示 图 2.3 修改功能流程图 2.2.4 删除功能 删除功能主要应用于把不需要的商品进行下架处理。流程图如图2.4所示 图2.1 删除功能流程图 刚开始定义两个变量,然后与商品的属性值进行比较,通过循环达到我们所需的条件,再根据这些与录入的商品信息进行比较,商品信息中有我们要找的商品最后进行删除,没有该商品信息的则退出。2.3 主要用到的函数 1. int main(void);主函数 2.void add_goods(information im , int geshu);录入商品信息 3.check_goods(information im);查询并显示所有商品 4.menu(); 列出对商品所要执行的操作:录入、查询、删除、修改 5.void del_goodsinfor(information im ,int goods_number); 对商品进行删除操作 6. void check_oneGoods(information im , int goods_number); 对商品按编号进行查询 7. void menu1();列出对商品信息修改操作:名称、编号、数目 8. void change_goodsinfor(information im ,int goods_number) 对商品信息进行修改 第三章 详细设计3.1 代码以及对应的备注#include<stdio.h>#define max 100/*给定结构体数组的最大值*/int size = 0;/*显示商品属性的信息*/typedef struct goodsInformation char goods_name20;/*商品的名字*/ int goods_number;/*商品的编号*/ int goods_count;/*商品的数目*/information;/* * Function:void add_goods(information im, int geshu) * Description:存储商品的信息 * Called By: * int main(void) * Input:用户根据相应的提示,输入商品信息 * */void add_goods(information im, int geshu) int i; int count = size + geshu; /*目的是实现商品的多次输入*/ for(i = size; i < count; i+) printf("请录入商品的名称:n"); scanf("%s",imi.goods_name); printf("请录入商品的编号:n"); scanf("%d",&imi.goods_number); printf("请录入商品的数目:n"); scanf("%d",&imi.goods_count); size+; /*end of for*/ printf("添加成功!nn"); /* * Function:void check_goods(information im) * Description:查询所有的商品并显示出来 * Called By: * int main(void) * Output:显示所有的商品 * */void check_goods(information im) int i; /*目的是实现输入多个商品*/ for(i = 0; i < size; i+) printf("库存的商品有:"); printf("商品的名称=%st商品的编号=%dt商品的数目=%dn", imi.goods_name,imi.goods_number,imi.goods_count); /*end of for*/ /* * Function:void menu() * Description:列出对商品所要执行的操作:录入、查询、删除、修改等。 * Called By: * int main(void) * Output:列出对商品所要执行的操作:录入、查询、删除、修改 * */void menu() printf("nttt菜单栏nntt1.录入tt2.查看nntt3.删除tt4.修改nntt5.查询tt退出请按:-1nn");/* * Function:void del_goodsinfor(information im,int goods_number) * Description:删除对应编号的商品信息。 * Called By: * int main(void) * Output:输出提示信息 * */ void del_goodsinfor(information im,int goods_number) int i,j; /*找到给定的编号,并删除对应编号的信息*/ for(i = 0; i < size; i+) /*通过比较找到对应编号,然后删除*/ if(imi.goods_number = goods_number) /*通过移动数组元素来删除信息*/ for(j = i; j < size - 1; j+) imj = imj+1; /*end of for*/ size-; printf("删除成功!n"); return ; /*end of if*/ /*end of for*/ printf("没有该商品n");/* * Function:void check_oneGoods(information im, int goods_number) * Description:根据相应的编号,查询一个商品的信息并显示出来 * Called By: * int main(void) * Output:一个的商品的信息 * */void check_oneGoods(information im, int goods_number) int i; /*是实现一个商品的查询*/ for(i = 0; i < size; i+) if(imi.goods_number = goods_number) printf("商品的名称=%st商品的编号=%dt商品的数目=%dn", imi.goods_name,imi.goods_number,imi.goods_count); return ; /*end of if*/ /*end of for*/ printf("没有该商品n");/* * Function:void menu1() * Description:列出对商品的属性所要执行的操作:名称、编号、数目等。 * Called By: * void change_goodsinfor(information im,int goods_number) * Output:列出对商品所要执行的操作:名称、编号、数目 * */void menu1() printf("nttt选择修改项nntt1.名称tt2.编号nntt3.数目t4.修改所有信息nn");/* * Function:void change_goodsinfor(information im,int goods_number) * Description:根据相应的编号,修改一个商品的信息 * Calls: void menu1() * Called By: * int main(void) * Output:对商品的修改信息进行提示 * */ void change_goodsinfor(information im,int goods_number) int i, choose; /*找到对应的编号,然后根据对应编号的商品信息进行修改*/ for(i=0; i<size; i+) /*通过比较找到修改的编号,进行修改*/ if(imi.goods_number = goods_number) menu1(); /*列出对商品所要执行的操作:名称、编号、数目*/ printf("请选择要修改的信息项目:"); scanf("%d",&choose); /*根据用户选择进行相应的修改*/ switch(choose) case 1: printf("请录入修改的商品的名称:n"); scanf("%s",imi.goods_name); printf("修改成功!n"); break; case 2: printf("请录入修改的商品的编号:n"); scanf("%d",&imi.goods_number); printf("修改成功!n"); break; case 3: printf("请录入修改的商品的数目:n"); scanf("%d",&imi.goods_count); printf("修改成功!n"); break; case 4: printf("请录入修改的商品的名称:n"); scanf("%s",imi.goods_name); printf("请录入修改的商品的编号:n"); scanf("%d",&imi.goods_number); printf("请录入修改的商品的数目:n"); scanf("%d",&imi.goods_count); printf("修改成功!n"); break; default: printf("输入错误!"); /*end of switch*/ return; /*end of if*/ /*end of for*/ printf("没有该商品n");/* * Function:int main(void) Description:主函数 * Calls: * 1.void add_goods(information im, int geshu); * 2.check_goods(information im); * 3.menu(); * 4.void del_goodsinfor(information im,int goods_number); * 5. void check_oneGoods(information im, int goods_number); * 6. void change_goodsinfor(information im,int goods_number) * Input:用户根据需要,输入要选择的功能的编号 * Output:查询并显示所有的商品 * */int main(void) information goodsmax; int geshu; int value = 0; int goods_id; while(value != -1)/当用户不想对商品进行操作时,按"-1"结束操作 menu();/列出操作:录入、查询、删除、修改等 printf("请选择所要执行的操作:n"); scanf("%d",&value); switch(value)/根据value的值来执行相应的操作 case 1: printf("请输入你要录入商品种类的个数:"); scanf("%d",&geshu); add_goods(goods, geshu);/商品的录入 break; case 2: check_goods(goods);/所有商品的查询 break; case 3: printf("请输入要删除的商品的编号:"); scanf("%d",&goods_id); del_goodsinfor(goods,goods_id);/删除商品的信息 break; case 4: printf("请输入要修改的商品的编号:"); scanf("%d",&goods_id); change_goodsinfor(goods,goods_id);/修改商品的信息 break; case 5: printf("请输入要查询的商品的编号:"); scanf("%d",&goods_id); check_oneGoods(goods,goods_id);/商品信息的查询 break; case -1: printf("退出!"); break; default: printf("输入信息错误!"); /*end of switch*/ /*end of while*/ 第四章 平面设计及代码 4.1 主界面 进入后主界面后的界面如图4.1所示。 图4.1 主界面主界面所用到的代码: menu();/列出操作:录入、查询、删除、修改等 printf("请选择所要执行的操作:n"); scanf("%d",&value); switch(value)/根据value的值来执行相应的操作 case 1: printf("请输入你要录入商品种类的个数:"); scanf("%d",&geshu); add_goods(goods, geshu);/商品的录入 break; case 2: check_goods(goods);/所有商品的查询 break; case 3: printf("请输入要删除的商品的编号:"); scanf("%d",&goods_id); del_goodsinfor(goods,goods_id);/删除商品的信息 break; case 4: printf("请输入要修改的商品的编号:"); scanf("%d",&goods_id); change_goodsinfor(goods,goods_id);/修改商品的信息 break; case 5: printf("请输入要查询的商品的编号:"); scanf("%d",&goods_id); check_oneGoods(goods,goods_id);/商品信息的查询 break; case -1: printf("退出!"); break; default: printf("输入信息错误!"); 4.2录入商品信息 录入商品信息时,首先提示录入商品的种类个数,选择过后,然后进行商品信息的名称、编号、数量的录入,最后提示添加成功。如图4.2所示。 图4.2 录入信息这个过程用到的代码:void add_goods(information im, int geshu) int i; int count = size + geshu; /*目的是实现商品的多次输入*/ for(i = size; i < count; i+) printf("请录入商品的名称:n"); scanf("%s",imi.goods_name); printf("请录入商品的编号:n"); scanf("%d",&imi.goods_number); printf("请录入商品的数目:n"); scanf("%d",&imi.goods_count); size+; /*end of for*/ printf("添加成功!nn"); 4.3 查看商品信息 当查看商品信息时,显示的是库存里的所有商品。当没有商品时则什么都不显示,直接继续下一步操作(如图4.3.1所示);有商品的时候 ,则全部商品都显示出来。如图4.3.2所示。 图4.3.1 查看商品信息1 图4.3.2 查看商品信息2这个过程用到的代码:void check_goods(information im) int i; /*目的是实现输入多个商品*/ for(i = 0; i < size; i+) printf("库存的商品有:"); printf("商品的名称=%st商品的编号=%dt商品的数目=%dn", imi.goods_name,imi.goods_number,imi.goods_count); /*end of for*/ 4.4 删除商品信息 删除商品信息时,提示删除该商品的编号是什么。当删除的商品在库存里没有时,提示没有该商品(如图4.4.1所示);当删除的商品在库存里有的时候,则显示删除成功。如图4.4.2所示。 图 4.4.1 删除商品信息1 图4.4.2 删除商品信息2这个过程用到的代码:void del_goodsinfor(information im,int goods_number) int i,j; /*找到给定的编号,并删除对应编号的信息*/ for(i = 0; i < size; i+) /*通过比较找到对应编号,然后删除*/ if(imi.goods_number = goods_number) /*通过移动数组元素来删除信息*/ for(j = i; j < size - 1; j+) imj = imj+1; /*end of for*/ size-; printf("删除成功!n"); return ; /*end of if*/ /*end of for*/ printf("没有该商品n");4.5 修改商品信息 修改商品信息时,输入一个商品的编号,当库存里没有该商品时,则提示没有该商品(如图4.5.1所示);当库存里有该商品时,则提示修改商品的什么内容。修改内容分别为名称、编号、数目以及所有信息。如图4.5.2所示。 图4.5.1 修改商品信息1 图 4.5.2 修改商品信息2选择修改的信息项目后,提示输入对应的商品信息内容,输入后,提示修改成功。如图4.5.3所示。 图4.5.3 修改商品信息3这个过程用到的代码:void menu1() printf("nttt选择修改项nntt1.名称tt2.编号nntt3.数目t4.修改所有信息nn");/* * Function:void change_goodsinfor(information im,int goods_number) * Description:根据相应的编号,修改一个商品的信息 * Calls: void menu1() * Called By: * int main(void) * Output:对商品的修改信息进行提示 * */ void change_goodsinfor(information im,int goods_number) int i, choose; /*找到对应的编号,然后根据对应编号的商品信息进行修改*/ for(i=0; i<size; i+) /*通过比较找到修改的编号,进行修改*/ if(imi.goods_number = goods_number) menu1(); /*列出对商品所要执行的操作:名称、编号、数目*/ printf("请选择要修改的信息项目:"); scanf("%d",&choose); /*根据用户选择进行相应的修改*/ switch(choose) case 1: printf("请录入修改的商品的名称:n"); scanf("%s",imi.goods_name); printf("修改成功!n"); break; case 2: printf("请录入修改的商品的编号:n"); scanf("%d",&imi.goods_number); printf("修改成功!n"); break; case 3: printf("请录入修改的商品的数目:n"); scanf("%d",&imi.goods_count); printf("修改成功!n"); break; case 4: printf("请录入修改的商品的名称:n"); scanf("%s",imi.goods_name); printf("请录入修改的商品的编号:n"); scanf("%d",&imi.goods_number); printf("请录入修改的商品的数目:n"); scanf("%d",&imi.goods_count); printf("修改成功!n"); break; default: printf("输入错误!"); /*end of switch*/ return; /*end of if*/ /*end of for*/ printf("没有该商品n");4.6 查询单个商品信息 查询单个商品信息时,输入商品编号,如果没有该商品,则提示没有该商品(如图4.6.1所示);如果有该商品,则直接显示该商品的名称、编号、以及数目。如图4.6.2所示。 图 4.6.1 查询单个商品信息1 图 4.6.2 查询单个商品信息2这个过程用到的代码:void check_oneGoods(information im, int goods_number) int i; /*是实现一个商品的查询*/ for(i = 0; i < size; i+) if(imi.goods_number = goods_number) printf("商品的名称=%st商品的编号=%dt商品的数目=%dn", imi.goods_name,imi.goods_number,imi.goods_count); return ; /*end of if*/ /*end of for*/ printf("没有该商品n");4.7 商品库存系统退出 在键盘上输入“-1”后,程序将会结束。如图4.7所示。 图 4.7 程序退出这个过程用到的代码: case -1: printf("退出!");break;4.8 其他字符输入管理 如果输入的字符不是主界面定义的,则显示“输入信息有误”。如图4.8所示。 图 4.8 其他字符输入管理这个过程用到的代码: default:printf("输入信息错误!"); 第5章 调试 5.1测试目的 软件的错误是不可避免的,所以必须经过严格的测试。通过对本软件的测试,尽可能的发现软件中的错误,借以减少系统内部各模块的逻辑,功能上的缺陷和错误,保证每个单元能正确地实现其预期的功能。检测和排除子系统(或系统)结构或相应程序结构上的错误,使所有的系统单元配合合适,整体的性能和功能完整。并且使组装好的软件的功能与用户要求一致。 5.2功能测试 入库测试输入商品的数据信息进行登记,最终保存于库存中便于管理。 商品名称 商品编号 商品数目 输入 shupian 1 20 Latiao 2 100最终数据管理正常。查询测试 查询所需要的商品的库存量以及有无情况。 商品编号输入 3结果 没有该商品 商品编号输入 1 商品名称 商品编号 商品数目结果 shupian 1 20删除测试 对于一些用不到的商品进行清除处理。 商品编号输入 3结果 没有该商品 商品编号输入 1结果 已删除成功修改测试 关于商品的名称、编号、数目进行修改。应用于出库管理。对商品数目进行修改 数目输入 18结果 修改成功经过一系列的测试,程序成功运行。第6章 总结与展望通过这个程序设计,查阅了很多知识,也学会了很多内容。同时,团队合作是非常重要的。虽然这个程序有点简单,也有很多的不足,但是我们以后会做的更好的。 本次课程设计,根据任务书要求,实现了添加、修改、删除、录入、查询等商品信息,库存管理较为复杂,光凭人力极难完成,因此需要合理而又简单的程序进行管理,依靠程序可以及时知晓库存商品具体信息,比如商品的名称,编号,数量,有了详细的数据,管理者就免去了复杂的整理过程,只需要根据查询所得到的信息来进行管理,可以做出及时应对措施。