学 习 2009-11-04 16:56:22 阅读1142 评论2 字号:大中小
进 销存管理系统需求分析<一>
根据以上对进销存管理内容和进销存管理系统的分析, 一个标准的进销存管理系统应该包括如图1.1所示的几大功能。
图1.1 进销存管理系统的基本功能模块
其中每个功能都由若干相关联的子功能模块组成。
1.3.1 资料管理
企 业经营的基础资料是一个企业最基本也是最重要的信息,脱离了基础资料,例如商品资料、供货商资料和客户资料等,进销存系统就无法运行。“资料管理”功能模 块就用于维护这些基础资料,包含的功能模块如图1.2所示。
图1.2 “资料管理”功能模块
“商品编码设置”用于设置商品编码的方式。进销存系统的每条商品信息都具有惟一的一个编码,作为该 商品信息的主键,一般该编码具有一定的规律,例如药品进销存系统,商品的编码可能有两级,第一级为药品的类别(中药、西药、保健品、器械等),第二级为药 品的剂型(针剂、片剂、丸剂等)。该功能设置商品编码分类的方法,从而实现商品资料维护中自动生成编码的功能。例如该商品属于西药的丸剂,而西药的编码是 2,丸剂的编码是02,该商品的编码就是202****,后面部分由系统根据该类别里现有编码的最大值加1自动生成。
“商品资料维护”用于维护(增加、修改、删除、查询)企业所经营的商品的基本信息,内容包括货号、 条形码、品名、拼音编码、规格、单位、产地、类别、进货价、销售价1、销售价2、最低售价等。其中拼音编码是商品名称的拼音简称,目的是在程序中可通过拼 音码方便地查询到所需要的商品。不同行业的进销存商品资料的属性差别很大,我们将在后面说明。
“供货商资料维护”用于维护企业供货商的基本信息,内容包括供货商号、拼音编码、简称、名称、地址、邮编、区号、地区、类型、电话、传真、电 报、开户行、开户行邮编、银行帐号、税号、库房地址、库房电话、业务员、业务部门等。
“客户资料维护”用于维护企业客户的基本信息,内容包括客户编号、拼音编码、简称、名称、联系人、地址、邮编、区号、地区、电话、传真、电 报、开户行、开户行邮编、银行帐号、税号、性质、业务员、业务部门、授信额度等。
“业 务员信息维护”用于维护企业销售业务员的基本信息,内容包括业务员号、姓名、性别、电话、手机、地址、邮编、身份证号、类别等。在销售开票时业务员属性可 以直接从业务员清单表中获取所有业务员的名字作为辞典供用户选择。
“仓库信息维 护”用于维护企业的仓库信息,内容包括仓库号、仓库名、类别、备注等。企业的商品一般都是存放在不同的仓库或同一仓库的不同货位中,这样在在填写商品进货 单和销售单时用户需要指定入库或出库的是哪个仓库的货物。
“采购合同管理”用于维 护企业与供货商签定的采购合同,内容包括供货商号、货号、进价、付款方式、帐期、签订日期、合同期限等。合同的内容对业务可以产生影响,例如合同规定了进 价,在填写采购单时系统会自动生成进价。
“销售合同管理”用于维护企业与客户签订 的的销售合同,内容包括客户编号、货号、售价、付款方式、帐期、签订日期、合同期限等。
小知识 数据库设计范式
数据库的 设计有一定的规范,按照等级划分为1NF、2NF、3NF、BCNF、4NF和5NF六个范式。这些范式主要用来减少数据库中的数据冗余,每个范式都有自 己的严格数学定义,下面我们用通俗的语言解释第一范式和第二范式。1NF指关系中的每个域都必须是原子的,即每个字段都是不可再分的原子数据项,例如业务 员信息表需要记录业务员的地址的邮编,如果使用一个字段Address_Zip,就是不符合第一范式的,应该分两个字段(Address和Zip)存放信 息。2NF定义为:如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。举例来说我们在系统中填写进货单时需要指定进货的商品,如果每次进货我们都填写进货商品的品名、单位等信息,这样就会造成很大的数据冗 余。根据第二范式的要求,可以把商品的信息提炼出来,单独存放在一张表中,将商品的编码(货号)作为关键字,这样进货时我们只需指定进货商品的货号就可以 了,而其他信息可以通过关联的方法从商品表中获取。需要注意的是,并非数据库设计时满足的范式层次越高数据库就越合理,一般满足第二范式就可以了,过于追 求数据的精简就会增加操作的复杂程度。
1.3.2 采 购管理
“采购管理”功能模块用于管理企业的采购业务,其中包含的子功能模块如图 1.3所示。
图1.3 “采购管理”功能模块
各子功能模块实现的功能分别为:
“采购订单”用于录入企业的采购订单。一般都将采购订单、入库单、销售单等单据根据第二范式分为主从两张表来存放数据,主表“采购订单”的内 容包括编号、供货商号、订货日期、有效起日、有效止日、业务员、制单人、税价合计、不含税价、税额等,从表“采购订单明细”的内容包括编号、订单号、货 号、订货数量、进价、税价合计、扣率、税率、不含税价、税额等。
“进货单”用于录 入企业的进货单,也分为主从两张表,主表“进货单”内容包括编号、供货商号、进货日期、业务员、制单人、验收员、保管员、税价合计、不含税价、税额、订单 号等,从表“进货单明细”内容包括编号、进货单号、货号、进货数量、进价、税价合计、扣率、税率、不含税价、税额、仓库、货物质量等。根据企业的规模和管 理方法,可以直接作进货单而不用作采购订单,但对于较大规模的企业,一般采购部门和库房部门是分开的,有采购部门填写采购订单,货物运输到库房后由库房验 收人员填写进货单。填写进货单后商品的库存才会增加并产生应付款。
“进退货管理” 用于录入企业进退货单。进货的退货有两种方法,一是直接在进货单中填写负数的进货数量,另一种是填写进退货单,一般采用前一种方法。
“进货价格调整”用于调整历史进货单的价格,内容包括内部编号、编号、进货数量、原进价、新进价、 调整日期、制单人等。
“进货单位调整”用于调整历史进货单的供货商,内容包括内部 编号、编号、原供货商、新供货商、调整日期、制单人等。
“历史查询”用于查询商品 采购、进货的历史。一般可以让用户根据任何条件查询,如按照供货商、日期、商品货号、商品拼音等。
1.3.3 销售管理
“销 售管理”功能模块用于管理企业的销售业务,包含的子功能模块如图1.4所示。
各子 功能模块实现的功能分别为:
“销售订单”用于录入企业的销售订单。主表“销售订 单”的内容包括编号、客户编号、销售日期、有效起日、有效止日、业务员、制单人、税价合计、不含税价、税额等,从表“销售订单明细”的内容包括编号、订单 号、货号、销售数量、销售价、税价合计、扣率、税率、不含税价、税额等。
图1.4 “销售管理”功能模块
“销售单”用于录入企业的销售单,主表“销售单”内容包括编号、客户编号、销售日期、业务员、制单 人、保管员、税价合计、不含税价、税额、订单号等,从表“销售单明细”内容包括编号、销售单号、货号、销售数量、销售价、税价合计、扣率、税率、不含税 价、税额、仓库等。
“销售退货单”用于录入企业销售退货单,内容包括编号、销售单 编号、货号、退货数量、销售价、税价合计、扣率、税率、不含税价、税额、仓库等。
“调 整历史售价”用于调整历史销售单的价格,内容包括内部编号、编号、销售数量、原销价、新销进价、调整日期、制单人等。
“历史查询”用于查询商品销售的历史。一般可以让用户根据任何条件查询,如按照客户、日期、商品货 号、商品拼音、业务员等信息查询。
1.3.4 库存管理
“库存管理”功能模块用于管理企业的库存信息,包含的子功能模块如图1.5所示。
图1.5 “库存管理”功能模块
各子功能模块实现的功能分别为:
“库存查询”用于查询企业商品的库存,可以查询总库存和分仓库查询。
“库 存转库”用于将一个仓库的商品转移到另一个仓库,或者连锁门店之间的商品调拨,内容包括编号、源部门、目的部门、货号、数量、单价、合计金额、调拨日期、 制单人、调货原因等。
“库存盘点”用于管理企业的库存盘点工作,将实际盘存的商品 数量输入计算机,计算机自动与数据库中的库存数量进行核对并产生盘盈盘亏统计信息。
“报 损报溢”用于管理企业商品库存的损益,内容包括编号、货号、仓库、数量、库存单价、金额、日期、责任人、制单人等。
“上下限设定”用于设置库存的上限和下限,当商品库存的数量超出指定的范围时系统可以自动报警,内 容包括序号、仓库号、货号、上限、下限、最佳存量、备注等。
“库存上下限报警”根 据当前商品库存和指定的库存上下限自动列出低于下限或高出上限的商品,并可以直接根据最佳存量直接生成采购订单。
“历史查询”用于查询各种转库、盘点、损益的历史数据。
1.3.5 应付款管理
“应 付款管理”功能模块用于管理企业的应付款业务,包含的子功能模块如图1.6所示。
图1.6 “应付款管理”功能模块
各子功能模块实现的功能分别为:
“预付款管理”用于管理企业的预付款信息,内容包括供货商号、预付款总额等。填写付款单时可以选择付款的方式,如果是“减预付款”则“预付 款”信息表中的“预付总额”自动减少。
“应付款明细”用于查询企业所有的应付款, 对应到每一笔进货的明细。
“应付款汇总”用于查询企业所有的应付款,对应到每一个 供货商。
“付款单”用于录入企业支付货款的凭证和销应付款,内容包括编号、发票 号、填票日期、进货单号、货号、供货商号、数量、进货单价、金额、付款日期、详细说明、进货日期、状态、减预付等。
“已付款明细”用于查询企业历史的所有已经支付的款项。
“历史查询”用于查询付款单历史。
“应付款帐簿”用于查询应付款科目的明细分录,属于财务上的概念。每一笔进货或者付款系统都会在帐簿中自动产生一笔记录,以借方、贷方、余额 的形式存在,可以直接将查询的结果输出作为财务软件的凭证。
“应付款帐龄”用于分 析应付款的帐龄,即在不同时间段内应付款分部的情况,从而为付款作出依据。
1.3.6 应 收款管理
“应收款管理”功能模块用于管理企业的应收款业务,包含的子功能模块如图 1.7所示。
各子功能模块实现的功能分别为:
“预收款管理”用于管理企业的预收款信息,内容包括客户编号、预收款总额等。填写收款单时可以选择 收款的方式,如果是“减预收款”则“预收款”信息表中的“预收总额”自动减少。
图1.7 “应收款管理”功能模块
“应收款明细”用于查询企业所有的应收款,对应到每一笔销售的明细。
“应收款汇总”用于查询企业所有的应收款,对应到每一个客户。
“收款单”用于录入企业收回货款的凭证和销应收款,内容包括编号、发票号、填票日期、销售单号、货 号、客户编号、数量、销售价、金额、收款日期、详细说明、销售日期、状态、减预收等。
“已收款明细”用于查询企业历史的所有已收回的款项。
“历史查询”用 于查询收款单历史。
“应收款帐簿”用于查询应收款科目的明细分录,每一笔销售或者 收款系统都会在帐簿中自动产生一笔记录,以借方、贷方、余额的形式存在,可以直接将查询的结果输出作为财务软件的凭证。
“应收款帐龄”用于分析应收款的帐龄,即在不同时间段内应收款分部的情况,从而为收款提供依据。
1.3.7 帐务管理
“帐务管理”功能模块用于管理企业的结帐业务,包含的子功能模块如图1.8所示。一般商业企业每个月都要进行一次结帐操作,确定该财务月份所 有商品成本的进、销、结存情况,为财务提供数据。
图1.8 “帐务管理”功能模块
各子功能模块实现的功能分别为:
“结帐日期设定”用于设置企业的每月结帐的日期,内容包括月份、全称、结帐日期等。一般商业单位每个月的结帐日期都是固定的,默认为25号。
“模拟结帐”用于进行模拟结帐操作。因为结帐操作不可逆,也就是说正式结帐后商品进销存汇 总的数据就无法更改了,因此在正式结帐前往往要进行模拟结帐,以查看结帐数据是否正确。
“正式结帐”用于进行结帐操作,计算进销存汇总报表。
“进销存汇总” 用于查询本次结帐的结果,内容包括结帐编号、年月、货号、上期结帐数量、上期结帐金额、借方数量、借方金额、贷方数量、贷方金额、本期结存数量、本期结存 金额、备注等。
“历史查询”用于查询历史的结帐结果。
小知识 财务成本核算方法
财务上为了统计企 业的经营利润和报税,每个月都要对经营商品的成本进行核算,核算方法一般分为加权平均法和先进先出法(或者后进先出法),我们举例说明这两种方法的区别。 例如1月10号进了100双鞋子,每双进价为50元;1月15号销售了其中的80双;1月20号又进了100双,但进价变为每双40元了。采用加权平均法 计算,当月销售的成本为80×(0 + 100×50 + 100×40)/(0+100+100)= 80×45=3600元,当月期末余额为120×45=5400元。其中0表示当月该品种的期初数量和期初金额(上月的期末数量、金额)为0,例如下月计 算时取值为5400。由此可见,加权平均法计算公式为:销售成本=销售数量×(上月期末金额+本月入库金额)/(上月期末数量+本月入库数量)。而用先进 先出法计算,因为销售的80双鞋属于第一批进货中的,故其真实成本应该是80×50=4000元。
由此可见两种不同的计算方法所计算出的当月企业利润是不一样的,后一种增加了400元的成本,利润 就降低了400元。读者会问,这两种方法有什么区别,最终企业的利润总是一样的,只不过是先算还是后算的问题。首先,先进先出法可以更加准确地反映出企业 的实际经营状况;其次,在不同的动机下会产生不同的结果,例如一般商品的价格总是下降的趋势,如果上市公司想增加本年度的利润,采用先进先出法就可以合法 提高公司的利润。
需要注意的是,先进先出法需要大量的运算工作,因此在手工的操作 模式下是不现实的,这也是加权平均法产生的根源。
1.3.8 统计分析
“统计分析”功能模块用于统计和分析企业的经营数据,供企业决策者作为决策依据。常用的子 功能如图1.9所示。
图1.9 “统计分析”功能模块
统计分析的功能就是对企业的历史数据进行统计分析,以直观的形式表现出来,最好可以用图表的形式表 现出来,如图1.10和图1.11所示。以上列举的只是一小部分功能,例如还有商品时段销售对比、门市店时段销售对比等。
图1.10 同一商品时段销售对比
图1.11 门市店销售分析对比
小知识 二八(ABC)分析方法
19世纪意大利经济学家帕列托的发现:社会约80%的财富集中在20%的人手中,而80%的人只拥有20%的社会财富。这种统计的不平衡性在社会经济及生 活中无处不在,这就是二八法则,即80%的结果(例如,产出、酬劳、销售),往往源于20%的原因(投入、努力、商品)。对应到流通企业,就是20%的商 品(客户)大致产生了80%的销售额和毛利,因此需要找出这些重点品种和重点客户,从而更好的发挥它们的优势。ABC分析和二八分析原理是一致的,只不过 ABC分析把结果分为了3个等级,而二八分析只分为两个等级。
1.3.9 零售 管理
流通企业可大致分为批发企业和零售企业,零售企业又分为单门店企业和连锁企 业。对于零售企业,其自身的特点必然导致进销存系统与批发企业的系统不一致。最大的区别就是零售销售的界面,还有连锁门市店的管理。零售管理包括的子功能 模块如图1.12所示。
图1.12 “零售管理”功能模块
各子功能模块实现的功能分别为:
“零售收款”用于门市店的POS收款管理。如前所述,零售企业的销售不管东西卖给了谁,也不会产生应收款。而由于顾客收款排队的原因,需要保 证最快的收款速度,因此“零售收款”的功能要简单便捷,通常只需要输入商品的货号、数量和收款的总金额就可以了。
“班次结帐”用于零售企业的结帐管理。零售企业一般都是分班次销售的,一天一个班次或两个班次,班 次的人员间交班前需要将收款的金额点清,并和计算机统计的金额一致后,选择“班次结帐”功能,确定并清除该班次的收款信息,将其放入历史,从而实现顺利交 班。
“销售日报统计”用于统计零售企业日销售的信息,内容包括日期、部门、组别、 收款机号、货号、班次、销售数量、应收金额、实收金额、库存单价等。
“连锁要货申 请”用于连锁门市店向配送中心请求配货,内容包括编号、部门、组别、货号、数量、日期、申请人、申请说明、回复等。
“连锁来货入库”用于连锁门市店在接收到配送中心的货物时作入库确认处理。
“会员管理”用于管理企业的会员信息,可以增加新会员、维护现有会员信息、查询会员消费明细、设置 会员折扣等。
“数据传输”用于连锁门市店、配送中心和企业总部之间的数据传输,传 输的操作应该简单安全。
1.3.10 系统管理
系统管理是每个系统都必须具备的功能,包括的子功能模块如图1.13所示。由于这部分功能比较通 用,在后面的实例中我们将不再详细介绍。
图1.13 “系统管理”功能模块
各子功能模块实现的功能分别为:
“参数设置”用于设定系统定义的一些基础参数或开关。
“权限设置”用 于设置各操作员使用系统的权限,为了方便设置,一般的应用系统都是可以将操作人员分组的,将通用的权限赋予整个组,个别的权限单独赋予个人,这样可以大大 减少权限管理的工作量。
“数据备份”用于备份系统数据库。
“数据恢复”用于恢复系统数据库。
“日志管理”用于维护系统的使用日志。一个好的应用系统会对任何操作员进行的所有操作进行日志记录,“日志管理”可以查询、导出和删除历史的 日志。
“更改密码”供用户更改自己的密码。
根据以上需求分析,一个基本的进销存管理系统数据库中大致包括60多张数据表,分别存放相应子功能 的数据信息,其中商品清单、供货商清单和客户清单是起关键作用的表,用于存放基础的数据信息。其他涉及商品、供货商和客户信息的表,都只记录这些元素的编 号,根据作为外键的“编号”字段来对应。因此这3张表和其他表间的关系是1:N的关系。
1.4.1 进销存管理系统E-R图
因为整个系统涉及的实体和属性 较多,限于篇幅不能也没有必要逐一列举。图1.14为进销存管理系统关键实体的E-R图。
图 1.14 进销存管理系统E-R图
其他实体与基本信息表间的对应关系都是类似的,同时配书光盘“/chap1/建库脚本/进销存管 理.sql”文件提供了创建数据库所有表的脚本,被省略的实体对象和实体属性读者完全可以参考这些脚本,也可以使用Microsoft Visio 2002自动生成全部实体和属性的E-R图。
1.4.2 进销存管理系统数据表 清单
配书光盘“/chap1/建库脚本/进销存管理.sql”文件提供了创建数据 库所需所有表的脚本,表1.1仅列出一些重要表的名称及其用途供读者参考。其中每张表所包含的字段读者可以自己查看光盘中的建库脚本和本章需求分析。
表1.1 进销存管理系统数据表清单
数据表名称 |
数据表用途 |
用户清单 |
保存系统 使用者的信息 |
权限清单 |
保存系统使用者的权限信息,可以指定到菜单级权限 |
商品清单 |
保存企业 经营商品的资料信息 |
供货商清单 |
保存企业供货商的资料信息 |
客户清单 |
保存企业 客户的资料信息 |
业务员清单 |
保存企业业务员信息 |
仓库清单 |
保存企业 仓库设置信息 |
采购合同 |
保存企业与供货商签订的采购合同 |
销售合同 |
保存企业 与客户签订的销售合同 |
库存库 |
保存企业商品库存的数量、金额等信息 |
采购订单 |
采购订单 主表,填写采购订单时使用 |
采购订单明细 |
采购订单从表 |
采购订单历史 |
保存采购 订单历史,填写采购订单确认后单据导入历史 |
采购订单明细历史 |
保存采购订单明细历史 |
进 货单 |
进货单主表 |
进货单明细 |
进货单从表 |
进货单历史 |
保存进货单历史 |
进 货单明细历史 |
保存进货单明细历史 |
进价调整单 |
作进价调整时保存进 价调整的信息 |
销售订单 |
销售订单主表 |
销售订单明细 |
销售订单从表 |
销 售订单历史 |
保存销售订单历史 |
销售订单明细历史 |
保存销售订单明细历 史 |
销售单 |
销售单主表 |
销售单明细 |
销售单从表 |
销 售单历史 |
保存销售单历史 |
续 表
数据表名称 |
数据表用 途 |
销售单明细历史 |
保存销售单明细历史 |
销退货单 |
填写销售 退货单时使用该表,确定后数据导入销退货单历史 |
销退货单历史 |
保存销售退货单历史 |
调 拨单 |
填写调拨单时使用该表,确定后数据导入调拨单历史 |
调拨单历史 |
保存调拨单历史 |
报 损报溢 |
填写报损报溢单时使用该表,确定后数据导入报损报溢历史 |
报损报溢历史 |
保存报损 报溢历史 |
上下限对照表 |
保存各仓库的库存上、下限数量 |
应付款 |
保存企业 应付款明细数据 |
应收款 |
保存企业应收款明细数据 |
预收款 |
保存企业 预收款数据 |
预付款 |
保存企业预付款数据 |
每月结帐日期表 |
保存每个 月份的结帐日期 |
结帐历史 |
保存每月结帐的历史 |
进销存汇总表 |
保存每月 结帐的结果 |
销售日报 |
保存零售的销售数据 |
调货申请 |
门市店填 写调货申请时使用该表 |
盘点单 |
填写商品盘点单时使用该表,确认后数据导 |