`

一个查当前月库存的算法及详解

    博客分类:
  • JSP
阅读更多
  现在做一个关于库存方面的系统,涉及到查每个月的库存。看来这是一个很简单的问题,但是这里涉及到我要查前面任何一个月的最后库存,我并不一定要查当前月的库存,如果是查当前月的库存,就把现在所有有效的库存记录显示出来就可以了(注:我的库存表是如果有入库数量,对应的原来的记录就设为无效,插入一条总和的记录并设为有效)。
如现在的时间是九月,我要看八月或者是七月甚至是更前面每一种东西的在那个时候的库存,这里就假设为要看八月的吧,但是八月有一种编号为A的物品在七月没有进出库,也就是这个A在八月的库存,其实是七月的库存,有的甚至有几个月都没有进出库的,那就要一直取到与要查看月最接近的那个月的库存作为需要的库存。
我的算法是如下:
如果当前月存在,就直接显示,如果不存在就一直往前面推,直到一直推到数据库第一条记录的日期为止,如果都还同有找到,那就说明不存在该货物的记录,如下图:

相关算法,JAVA源程序如下:
 /******************定义变量**********************/
    privateint smallestBeginYear;
    privateint smalleatBeginMonth;
    privateint currentYear_;
    privateint currentMonth_;
  private DBMS_Conn conn=new DBMS_Conn();
    /**
     *取得指定月结存
     *@parammonthType0表示查看上一个月,1表示这个月
     *@paramcurrentMonth当前月
     *@paramcomponentID元件号
     *@return
     */
    publicint getNumInWareHouseBySpecialMonth(int monthType,int currentYear,int currentMonth,int componentID) {
        if(monthType==0) {
            currentMonth--;
        }
        currentYear_=currentYear;
        currentMonth_=currentMonth;        
        int num=0;
        boolean doOK=false;
        boolean again=false;
        while(!doOK)//循环,直到条件不满足为止
        {
            String sql="SELECT top 1 nowLeft from ku_in_out where ";
            sql+=" deletedOrNot=0 and month(cdate(InOrOutTime))="+currentMonth_;
            sql+=" and year(cdate(InOrOutTime))="+currentYear_;
            sql+=" and componentID="+componentID+" order by InOrOutTime desc,ID DESC";
            ResultSet rs;            
            try {
                rs=conn.executeSQLReturnResult(sql);
                if(rs.next()) {
                    num=rs.getInt(1);
                    doOK=true;
                }else {//如果当前月没有记录,就查看前面几个月的是否有该记录
                    if(!getAProperMonthAndYear(currentYear_,currentMonth_,smallestBeginYear,smalleatBeginMonth)) {
                        doOK=true;
                    }else {
                        again=true;
                    }
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return num;
    }
    /**
     *用该方法取得一个合适的年、月,因为有的记录可能上个月没有操作(如八月,现在九月,
     *但七月就记录),相当于现在的库存记录就是七月的
     *@paramcurrentYear
     *@paramcurrentMonth
     *@paramsamllestYear
     *@paramsmallestMonth
     *@return
     */
    privateboolean getAProperMonthAndYear(int currentYear,int currentMonth,int samllestYear,int smallestMonth) {
        boolean ok=false;//用以确认是否取前面一个月操作OK
        int testI=0;
        if(currentMonth>1) {
            if(currentYear>samllestYear)
            {
                    currentMonth--;
                    ok=true;
            }
            elseif(currentYear==samllestYear && currentMonth>smallestMonth) {
                currentMonth--;
                ok=true;
            }
        }
        else{
            if(currentYear>samllestYear)
            {
                currentYear--;
                currentMonth=12;
                ok=true;
            }
        }
        if(ok) {
            currentYear_=currentYear;
            currentMonth_=currentMonth;
        }
        return ok;
    }

分享到:
评论

相关推荐

    各种背包算法详解

    01背包问题可以通过动态规划来解决,利用状态转移方程构建一个二维数组,记录在当前容量下可以达到的最大价值。 2. **完全背包问题** 与01背包不同,完全背包允许同一种物品可以有无限个。在完全背包中,决策变量...

    数学建模10大算法详解+程序源码打包.rar

    《数学建模10大算法详解+程序源码打包》是一个专门为数学建模初学者准备的资源包,其中包含了丰富的算法解析和实际的程序代码,旨在帮助初学者深入理解和应用数学建模中的核心算法。以下是这十大算法的详细介绍: 1...

    sql进销存算法

    ### SQL进销存算法详解 #### 数据准备阶段 1. **临时表创建与清理**: - 创建临时表`#tmp1`和`#tmp2`用于中间数据存储。 - 清理之前可能存在的同名临时表`##tmp3`,确保每次运行时都是全新的状态。 2. **初始化...

    仓库管理系统c#,仓库管理系统出库算法,C#

    3. **库存查询**:提供实时的库存查询功能,查看当前库存量和历史库存变化。 4. **报表统计**:生成各类库存报表,如出入库统计、库存盘点报告等,辅助决策。 四、出库算法详解 仓库管理系统的出库算法通常设计为...

    用遗传算法解决供应链建立的文献

    #### 一、供应链背景及问题定义 在当前竞争激烈的市场环境中,敏捷性和精益性成为了许多制造企业扩大市场份额的重要战略关注点。随着定制化需求的增长,按订单生产(BTO)制造策略逐渐成为实现大规模定制的一种流行...

    进销存财务算法

    ### 进销存财务算法详解 #### 一、概述 进销存财务算法是一种重要的财务管理方法,主要用于跟踪和管理企业在经营过程中的各项货物交易活动,包括采购、销售、退货、库存变动等,确保企业的财务数据准确无误。本文将...

    C++家电库存管理系统

    总的来说,C++家电库存管理系统是一个结合了数据结构、算法和面向对象编程的综合性项目,它展示了C++在实际应用中的强大能力。通过这个系统,开发者不仅可以学习到C++编程的基础知识,还能了解到如何利用这些知识...

    数据结构与算法课程设计 说明书 图书管理

    图书管理系统是数据结构与算法课程设计中的一个重要实践项目,旨在运用所学知识解决实际问题,提高编程技能。本说明书详细阐述了系统的设计思路、功能实现、调试测试和用户操作指南,旨在提供一个完整的图书管理解决...

    C++代码 商场库存管理系统

    总的来说,C++6.0环境下的商场库存管理系统设计是一个融合了面向对象编程、数据结构、算法和软件工程实践的综合性项目。通过这个系统,不仅可以学习到C++的编程技巧,还可以了解到业务流程管理和系统设计的基本原理...

    MQSF.rar_MQSF、_ZA8_成本优化_猫群算法_群优化

    群优化是猫群算法的另一个重要特点,它利用群体中个体间的交互作用,实现信息共享和协同优化。这种群体智能使得算法能够处理复杂多变的优化问题,尤其在面对成本优化这类多目标、非线性问题时,表现出强大的适应性和...

    算法与数据结构课程设计-家电商场仓库管理.doc

    #### 四、数据结构与算法详解 1. **链表结点结构** ```c typedef struct SNode { ElemType data; // 商品信息 struct SNode *next; // 指向下一个节点的指针 } SNode, *LinkedList; ``` 其中 `ElemType` 定义...

    动态规划.动态规划算法的应用 含代码

    动态规划的基本模型是多阶段决策过程的最优化问题,即存在一个由多个阶段组成的决策过程,每个阶段的决策依赖于当前状态并影响后续状态,所有决策组合成的序列决定整体最优解。记忆化搜索是动态规划中的一项技术,...

    matlab开发-订单3的FrankWolfealgorithm

    《Matlab实现Frank Wolfe算法详解》 在优化领域,Frank Wolfe算法是一种广泛应用的求解凸优化问题的方法,尤其适用于处理大型稀疏问题。本篇将深入探讨如何在Matlab环境中实现这一算法,以及其在订单处理等实际问题...

    人工智能技术详解和应用方案.zip

    2. 深度学习:深度学习是机器学习的一个分支,通过构建多层神经网络模型,模拟人脑神经元结构,对复杂问题进行建模和求解。 3. 自然语言处理(NLP):NLP使得机器能理解和生成人类语言,应用广泛如聊天机器人、机器...

    仓库管理系统(c#)

    3. **库存查询**:实时查询仓库内各货品的库存量,以便了解当前库存状况。这通常需要设计一个查询接口,通过用户输入条件筛选数据。 4. **库存预警**:当某货品库存低于预设阈值时,系统应能自动触发预警,提醒管理...

    生产与运作管理MRP批量问题算法PPT课件.pptx

    ### 生产与运作管理中的MRP批量问题算法 #### 一、概述 ##### 1.1 有关概念和基本思想 - **MRP (Material Requirements Planning)**:是一种用于处理相关需求库存订货和作业计划的计算机信息系统。它通过计算产品...

    Knapsack-problem:一个用Java编写的背包算法的实现

    《Java实现的背包问题算法详解》 背包问题,作为一个经典的优化问题,在计算机科学与运筹学领域具有重要的地位。它通常被用来模拟资源有限时如何最大化收益或价值的问题。在这个问题中,我们有一个容量有限的背包,...

    c语言学习超市管理系统.zip

    总结,C语言学习超市管理系统是一个综合性的实践项目,它涵盖了数据结构、算法、文件操作、输入输出等多个C语言核心知识点。通过这个项目,不仅可以提升C语言编程能力,还能深入了解软件开发流程和业务逻辑处理。

    AI-国内外人工智能产业应用图谱应用层-基础层详解.docx

    人工智能(Artificial Intelligence,AI)作为当前最热门的技术领域之一,已经渗透到我们生活的方方面面。从医疗、家居到驾驶、零售、城市和教育等领域,AI 都正在发挥着越来越重要的作用。那么,AI 的产业应用图谱...

    仓库管理系统WMS专题介绍PPT课件.pptx

    拣选管理中包含两部分:位置信息,通过条码技术记录在数据库中当前库存产品的基本信息中的位置信息,以及最优路径,根据货位布局和系统存储的位置信息,计算出取货时最优路径,减少物流成本。 库存管理系统支持自动...

Global site tag (gtag.js) - Google Analytics