一.需求分析

仓库管理系统的功能如下:

先读入仓库中已存在的商品的编号、名字、数量

在仓库进货时,读入含进货信息的文件,改变商品的种类以及数量

在仓库出货时,读入含出货信息的文件,减少对应商品的库存量

查询功能:可以根据商品编号或商品名称随时查看当前仓库的库存,包括货品编号、货品名称、原始库存、进货数目、出货数目、最终库存

保存功能:在用户完成入库出库的操作后,可对当前信息进行保存

本仓库管理系统主要分为入库、出库、查询三大模块,分别对进货、出货和查询的操作进行管理。

在入库模块中,首先读入含进货信息的文件,进而对相应的商品信息进行修改

在出库模块中,首先读入含出货信息的文件,进而对相应的商品信息进行修改。其中有两种情况:

如果需求量大于仓库中商品的储存量,则拒绝该请求,保持仓库中该种商品数量不变,并用红色字体标红该商品信息,示意改出货请求失败

如果该商品出货之后的数量为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”文件中,保存该仓库的商品信息。

c++语言仓库管理系统,课内资源 - 利用C++实现仓库管理系统相关推荐

  1. 基于linux的银行管理,课内资源 - 基于Linux的仓库管理系统

    1 需求分析 要求的仓库管理系统的功能如下: 查看仓库库存列表功能 查询功能:可以随时查看当前仓库的库存中的某些商品的一系列信息,包括商品名,剩余量 进货功能:(以下两个功能是根据输入自动选择的) 在 ...

  2. mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统

    一.需求分析 1.1 业务需求 随着社会的发展,学生的人数和课程种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,为此我们开发了学生选课管理系统.本人结合学生选课管理的实际需要,完成了对学生 ...

  3. mysql餐馆点餐系统_课内资源 - 基于Jsp和MySql的餐厅点餐系统

    1 总体概述 本设计主要通过HTML.CSS.JavaScript网页开发技术,会话及其会话技术,过滤器技术,Java语言以及连接mysql数据库来实现一个具有登录注册功能,且登录页面使用验证码技术来 ...

  4. 本系统采用jsp和mysql_课内资源 - 基于Jsp和MySql的汽车租赁系统

    一.引言 汽车租赁管理系统是基于MVC三层架构完成,使用Java语言开发,主要应用Jsp完成前台界面部分,Servlet MVC完成后台逻辑部分. 本系统的设计从现实角度出发,根据实际汽车租赁信息管理 ...

  5. c语言机票座位预定系统_课内资源 - 基于C语言的飞机票预订系统

    1 解题思路 本题需要综合使用数据结构的知识.以此,将航班数据设计成链表形式即定义结构体,其中包含飞机序号,登机口作为数据域,next作为指针域,将此结构体称为Node.将乘客信息设计成特殊的结构体, ...

  6. C语言编程求解圆盘的汉诺塔,课内资源 - 基于80x86汇编的汉诺塔

    一.软件背景介绍 我们今天要陈述的应用叫做汉诺塔,大家可能小时候都接触过类似于鲁班锁,九连环的益智玩具,我们要说的汉诺塔其实也可以说是益智玩具的一种. 下面我们具体介绍一下汉诺塔.汉诺塔有三根杆子A, ...

  7. jsp mysql在线考试系统源码_课内资源 - 基于JSP和MYSQL数据库实现的在线考试系统...

    1 系统概述 1.1 功能模块 教学部需要考试系统,该考试系统需要完成如下功能: 考试系统只针对于Java课程,题目全部为单项选择,共10题 学生注册.登录 后台管理员功能:题库管理.录入试卷.修改试 ...

  8. java实现一元多项式减法,课内资源 - 基于C语言实现的一元多项式的计算

    一.概述 通过C语言使用链式存储结构实现一元多项式加法.减法和乘法的运算.按指数降序排列. 二.需求分析 建立一元多项式并按照指数降序排列输出多项式,将一元多项式输入并存储在内存中,能够完成两个多项式 ...

  9. devccp中c语言输入二维数组,课内资源

    1 概述1.1 项目简介本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅.游戏方式简单,玩起来易于上手的桌面游戏.该飞机大战项目运用的主要技术即是MFC编程中的一些函数.链表思 ...

最新文章

  1. Android提醒微技巧,你真的了解Dialog、Toast和Snackbar吗?
  2. x5内核有什么优点_欧尚X5国产又一黑马SUV,颜值高性能强,顶配仅需10万左右
  3. poj2318 TOYS
  4. apriori算法代码python_Apriori算法的Python实现
  5. MATLAB软件禁用利好,Matlab被禁用?一款国产软件站了出来说:我就是中国的Matlab...
  6. 微信开发之网页授权获取用户基本信息
  7. 华为s5700-SI交换机常用命令
  8. 吴恩达神经网络和深度学习-学习笔记-23-快速搭建你的第一个系统原型,然后迭代
  9. 游戏设计阻力探秘之扩展空间
  10. java中a 和 a_Java中的a++和++a的区别 | 学步园
  11. Android app分享文件到微信
  12. android中生成 PDF,Android PDF生成
  13. 论文阅读笔记|A view-free image stitching network
  14. ffmpeg视频裁剪
  15. 饭后开车的不良习惯要改正
  16. 谷歌浏览器打开标签会把之前的覆盖掉_Chrome浏览器切换到之前打开的标签页会重新加载...
  17. windows切换窗口,取消edge窗口为多个
  18. 【2022年9月】237条微信内置浏览器UA
  19. 语音识别java版demo
  20. 实木地板被机器人弄成坑_如果当初知道这些,就不会在实木地板上被坑了!

热门文章

  1. IP签名档PHP开源版:轻松打造网站个性签名档
  2. 大数据最佳实践-kafka
  3. (HDU2004 c++) 成绩转换
  4. python对excel删除指定行
  5. 解决npm err windows_nt 6.1.7601问题
  6. 关于陪领导出差要注意的那些点
  7. FPGA学习-5:仿真
  8. 螺栓拧紧失效原因与控制方法
  9. 用sopa读取webservice
  10. Android下仿一个优化大师的流量悬浮控件