天天小说网

14.1 进销存管理是这个样子的吗

大家都来自五湖四海,都要生存,于是都找了个靠山——公司,就是给你发薪水的地方。公司要想尽办法赢利赚钱,赢利方法则不尽相同,但是各个公司都有相同的三个环节:

采购、销售和库存。这个怎么说呢?比如一个软件公司,要开发软件,就需要购买开发环境,如Windows操作系统、数据库产品等,这就是采购;开发完产品还要把产品推销出去;有产品就必然有库存,软件产品也有库存,虽然不需要占用库房空间,但也要占用光盘或硬盘,这也是库存。再比如做咨询服务的公司,它要采购什么?采购知识,采购经验,这是这类企业的生存之本,销售的也是知识和经验,库存同样是知识和经验。既然进销存是如此重要,我们今天就来讲讲它的原理和设计,我相信很多人都已经开发过这种类型的软件,基本上都形成了固定套路,不管是单机版还是网络版,一般的做法都是通过数据库来完成相关产品的管理,相对来说这还是比较简单的项目,三个模块的示意图如图14-1所示。

图14-1 进销存示意图

我们从这个示意图上可以看出,三个模块是相互依赖的。我们就以一个终端销售商(以服务最终客户为目标的企业,比如某某超市、某某商店等)为例,采购部门要采购IBM的电脑,它根据以下两个要素来决定采购数量。

● 销售情况

销售部门要反馈销售情况,畅销就多采购,滞销就不采购。

● 库存情况

即使是畅销产品,库存都有1000台了,每天才卖出去10台,也就不需要再采购了!

销售模块是企业的赢利核心,对其他两个模块也有影响:

● 库存情况

库房有货,才能销售,空手套白狼是不行的。

● 督促采购

在特殊情况下,比如一个企业客户要一次性购买100台电脑,库存只有80台,这时需要催促采购部门赶快采购!

同样地,库存管理也对其他两个模块有影响。库房是有容积限制的,不可能无限大,所以就有了清仓处理,那就要求采购部门停止采购,同时销售部门进行打折销售。

从以上分析来看,这三个模块都有自己的行为,并且与其他模块之间的行为产生关联,类似于我们办公室的同事,大家各干各的活,但是彼此之间还是有交叉的,于是彼此之间就产生紧耦合,也就是一个团队。我们先来实现这个进销存,类图如图14-2所示。

图14-2 简单的进销存类图

Purchase负责采购管理,buyIBMComputer指定了采购IBM电脑,refuseBuyIBM是指不再采购IBM了,源代码如代码清单14-1所示。

代码清单14-1 采购管理

public class Purchase {

//采购IBM电脑

public void buyIBMcomputer(int number) {

//访问库存

Stock stock = new Stock();

//访问销售

Sale sale = new Sale();

//电脑的销售情况

int saleStatus = sale.getSaleStatus();

if(saleStatus>80) {

//销售情况良好System.out.println("采购IBM电脑:"+number + "台");

stock.increase(number);

}else {

//销售情况不好int buyNumber = number/2;

//折半采购System.out.println("采购IBM电脑:"+buyNumber+ "台");

//不再采购IBM电脑

public void refuseBuyIBM() {

System.out.println("不再采购IBM电脑");

Purchase定义了采购电脑的标准:如果销售情况比较好,大于80分,你让我采购多少我就采购多少;销售情况不好,你让我采购100台,我就采购50台,对折采购。电脑采购完毕,需要放到库房中,因此要调用库存的方法,增加库存电脑数量。我们继续来看库房Stock类,如代码清单14-2所示。

代码清单14-2 库存管理

public class Stock {

//刚开始有100台电脑

private static int COMPUTER_NUMBER =100;

//库存增加

public void increase(int number) {

COMPUTER_NUMBER = COMPUTER_NUMBER + number;

System.out.println("库存数量为:"+COMPUTER_NUMBER);

//库存降低

public void decrease(int number) {

COMPUTER_NUMBER = COMPUTER_NUMBER - number;

System.out.println("库存数量为:"+COMPUTER_NUMBER);

//获得库存数量

public int getStockNumber()

更多内容加载中...请稍候...

若您看到此段落,代表章节内容加载失败,请关闭浏览器的阅读模式、畅读模式、小说模式,以及关闭广告屏蔽功能,或复制网址到其他浏览器阅读!