一.需求分析
仓库管理系统的功能如下:
- 先读入仓库中已存在的商品的编号、名字、数量
- 在仓库进货时,读入含进货信息的文件,改变商品的种类以及数量
- 在仓库出货时,读入含出货信息的文件,减少对应商品的库存量
- 查询功能:可以根据商品编号或商品名称随时查看当前仓库的库存,包括货品编号、货品名称、原始库存、进货数目、出货数目、最终库存
- 保存功能:在用户完成入库出库的操作后,可对当前信息进行保存
本仓库管理系统主要分为入库、出库、查询三大模块,分别对进货、出货和查询的操作进行管理。
- 在入库模块中,首先读入含进货信息的文件,进而对相应的商品信息进行修改
- 在出库模块中,首先读入含出货信息的文件,进而对相应的商品信息进行修改。其中有两种情况:
- 如果需求量大于仓库中商品的储存量,则拒绝该请求,保持仓库中该种商品数量不变,并用红色字体标红该商品信息,示意改出货请求失败
- 如果该商品出货之后的数量为0,则删除该商品,在查询时显示“该商品库存为0,已被清除!”
- 在查询模块中,可以根据商品编号或商品名称随时查看当前仓库的库存,包括货品编号、货品名称、原始库存、进货数目、出货数目、最终库存
- 在保存模块中,待用户选择保存并退出的请求后,系统将当前信息写入文件保存,并退出
二.数据设计
我们定义了一个名为goods的结构体,其中n代表货品编号,name是一个char类型的数组,用于储存货品的名字,stock是物品原始库存量,in、out分别是进货和出货量,将会分别在入库和出库环节从文件中读入。amount是货品在进货出货操作后的最终数量。state是为了判断货品数量的状况,避免出现库存量小于0(即出货量大于总库存的情况)。copy则作为一个数据保存库存量小于零情况下原来库存量。
三.函数设计
3.1 主函数
在主函数中,首先,我们通过Readfile()函数读入原有仓库中的货品信息。继而我们定义了一个名为select的int型变量,用于进行系统功能的选择。下图就是进入系统后的选择界面。我们通过读入用户的select数据调用不同的函数,进而进入不同的模块。
3.2 Input()函数
这是读入含进货信息文件的函数。系统打开含有进货信息的名为“stockin.txt”的文件,并且只需要读入货品编号和进货数量两个数据。进而遍历原始库存中的货品编号,当两个货品编号相等时,就把存放进货信息结构体中的in变量赋值给存放原始库存结构体中的in变量。等读入所有的进货信息后,再把存放原始库存信息的结构体中的in变量与stock变量相加,即可得到现存量。
3.3 Output()函数
这是读入含出货信息文件的函数。系统打开含有出货信息的名为“stockout.txt”的文件,并且只需要读入货品编号和出货数量两个数据。进而遍历原始库存中的货品编号,当两个货品编号相等时,就把存放出货信息结构体中的out变量赋值给存放原始库存结构体中的out变量。等读入所有的进货信息后,再用存放原始库存信息的结构体中的stock变量减去in变量,即可得到现存量。其中copy变量保存了在出货前的库存量,避免出现出货失败的情况。
3.4 Judge()函数
该函数主要用于判断库存是否小于0。当库存量小于0时,将该结构体中定义的state为1,用于后面显示时使该操作失败的货品信息用红字标出,并且当state变量为1时,应用copy变量来显示现库存量。
3.5 Inquire()函数
在查询模块当中,在显示界面中,我们可以通过货品编号或货品名称对商品进行查询。系统通过读取货品编号或货品名称,再遍历仓库当中所有商品的编号及名称,当两者匹配时,再对该商品的state进行判断,如果商品的state=1,则用红色字体输出商品信息,说明该商品的出货操作失败。如果state=0,说明该商品状态正常,正常输出商品信息即可。
在查询模块中,假设该商品的数目在出货之后为0,我们利用条件语句进行判断。
3.6 Display()函数
Display()函数用于入库和出库模块中。在仓库系统读入含进货信息和出货信息的文件后,我们需要Display()函数显示仓库系统中货品信息的变化。并且我们通过判断变量j是否能被10整除,控制显示信息时以十行为一个单位显示信息,按任意键后可以显示下一个十行的信息,避免数据过多导致的难以清楚看清商品信息的问题。
而当出现商品出库后库存为0的情况,在进行判断之后,该商品将从系统中删除,不予输出。如下图中的编号为2,名称为A2的商品就因为库存为0,没有输出。
3.7 Printf_back()函数
该函数通过取得任一字符,即用户按下任意键即可返回主菜单。从main()函数继续开始运行。
四.输入与输出
4.1 Readfile()函数
这是读入原始库存数据的函数,首先打开保存有库存信息的“goods.txt”的文件,我们定义了一个初始值为0的int型变量,用于通过自增不停地读入文件的数据。在读取完所有数据之后,我们关闭该文件,并且用变量P储存货品数量。
4.2 Writefile()函数
这是写输出文件的函数,该函数将仓库系统一系列操作之后的数据写入“amount.txt”文件中,保存该仓库的商品信息。