为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 进销存需求文档(包含表结构设计)

进销存需求文档(包含表结构设计)

2021-03-28 4页 doc 190KB 73阅读

用户头像 个人认证

1383052881

我就是化学老师

举报
进销存需求文档(包含表结构设计)电子商务的发展和市场竞争的加剧将企业推上了风口浪尖,中小企业除了积极迎接挑战之外,别无选择。网络的兴起与电子商务的发展带来了时空界限的突破、贸易方式的变革和经济活动的革命,从某种意义上来讲,这些变化为中小企业创造了与大型企业、国外企业平等竞争的有利条件。然而,管理水平的差异会弱化这种平等的实际意义。具体而言,中小企业在进、销、存等环节的管理上都存在着一定程度的不足,而这些不足无疑将使其在市场竞争中陷入被动的境地。在网络经济的时代背景下,进行有效的进销存管理已经成为中小企业存身立业的头等要事。然而对于一贯疏于管理的中小企业而言,...
进销存需求文档(包含表结构设计)
电子商务的发展和市场竞争的加剧将企业推上了风口浪尖,中小企业除了积极迎接挑战之外,别无选择。网络的兴起与电子商务的发展带来了时空界限的突破、贸易方式的变革和经济活动的革命,从某种意义上来讲,这些变化为中小企业创造了与大型企业、国外企业平等竞争的有利条件。然而,管理水平的差异会弱化这种平等的实际意义。具体而言,中小企业在进、销、存等环节的管理上都存在着一定程度的不足,而这些不足无疑将使其在市场竞争中陷入被动的境地。在网络经济的时代背景下,进行有效的进销存管理已经成为中小企业存身立业的头等要事。然而对于一贯疏于管理的中小企业而言,实现有效的进销存管理必然存在着一定的难度,因此必须借助现代化的管理方法和管理技术——计算机进销存管理系统。5.1 进销存管理在市场经济中,销售是企业运作的重要环节,为了更好地推动销售,不少企业建立分公司或代理制,通过分公司或代理把产品推向最终用户。这些分公司或代理商大多分布在全国各地,甚至是在国外,远距离频繁的业务信息交流构成了这些企业业务活动的主要特点。在传统方式上,公司之间通常采用电传、电报、电话等方式传递订货、发货、到货、压货、换货、退货等信息,总公司的商务部门在接到分公司或代理商传来的订单和银行汇款单据传真件后,开具产品出库通知,然后把相关的进、销、存信息手工存档,再对这些信息进行统计分析,才能了解到整个公司的生产、销售和库存情况。这种信息传递和管理的方式不仅效率低,可靠性、安全性和保密性都无法满足要求,而且数据统计时间严重滞后,往往是当领导了解到企业的“进、销、存”环节出现问题时,就已经远离了问题出现的时间和地点。即便是没有分公司的企业,使用传统的手工方式管理也存在同样的问题。通过进销存管理系统,及时通过网络把决策信息传递给相关决策人,从而可以及时发现问题、解决问题,从而更好地把握机会。5.1.1 进销存管理的任务进销存管理工作的主要任务有:         企业的采购管理         企业的销售管理(批发、零售、连锁)         企业各部门的商品配送管理         企业库存商品的管理         企业应收款、应付款的管理         企业经营状况分析与决策由于企业经营的商品种类经常会很多,例如一个超市可能会经营上万种商品,因此按照传统的人工管理方式,会存在以下问题。(1)  各种物资种类繁多、品种齐全,保管管理困难。有的物资超储备或库存积压现象严重,采购成本居高不下;有的物资严重短缺,导致销售时才发现没有库存;有的商品由于没有及时盘点,到月末时才发现库存缺失,却查不出原因;有的在入库、领用时找不到商品的存放地点等。(2)  无法进行准确及时的成本、毛利核算。成本管理永远是企业管理的主题,特别是现在面对多变的市场环境,如何及时满足用户的多品种需求,进行科学合理的成本预测、成本分析及成本控制,及时、准确地为企业管理者提供经营决策信息,越来越显得至关重要。传统的成本核算方法(加权平均法和移动平均法)及核算工具只是粗放地进行成本核算及成本管理,很难满足管理的需要。至于成本核算到工序、核算到产品的思路(先进先出法),在手工操作方式下更是无从谈起。(3)  管理信息相互独立,市场预测手段、方法落后,严重影响企业科学决策,建立科学的市场信息反馈系统已迫在眉睫。手工财务数据相互独立,财务信息传递也只是通过逐层地统计报表来完成的,因此常常出现数字不符、报表不详的情况,难以满足统计数据的及时性、准确性、相关性要求。集团决策层、领导层很难及时地把握来自市场的准确信息,也就无法快速对市场作出正确的决策和预测。市场反馈信息系统已严重滞后于企业管理的需要。(4)  应收帐款居高不下,占用了大量资金,严重影响了企业资产运作效率,增加了企业的经营风险。手工管理很难适应企业销售规模增大、销售业务复杂的形势,普遍存在着应收帐款管理不细、帐龄分析和催款通知不及时、不到位的问题;催款力度及相应催款政策不够。(5)  在生产和销售环节,不能准确地掌握质量的变化,尤其一些客户投诉或降级使用的产品,无法做到全程跟踪,从而影响市场的销售。自动化程度低,信息不畅通,不能在整个企业共享资源,各种等级的成品的管理不能做到准确无误。缺乏质量跟踪、投诉处理监控机制。(6)  不能有效管理异地仓库和办事处销售业务。办事处一般通过传真或电话的方式每月上报销售数据和异地仓库的收发存数据,工作量大,并且上报的信息存在信息延迟和不准确的现象,严重影响到企业领导层的决策工作。5.1.2 进销存管理系统的作用进销存管理系统是基于先进的软件和高速、大容量的硬件基础上的新型进销存管理模式,通过集中式的信息数据库,将企业的进、销、调、存、转、赚等企业的经营业务有机地结合起来,达到数据共享、降低成本、提高效率、改进服务等目的。一般来说,利用进销存管理系统可以在以下几方面提高企业管理的水平:         提高管理效率降低人工成本。         降低采购成本。         及时调整营销策略,防止价格流失。         防范陈呆死帐,降低应收帐款。         减少仓储面积,提高房产综合利用率。         降低储备资金占用。         加快资金周转实现的经济效益。         强化财务监控制实现的经济效益。         商业数据智能分析。         高效决策。根据以上对进销存管理内容和进销存管理系统的分析,一进销存管理系统包括如图5.1所示的几大功能。图5.1 进销存管理系统应包括的基本功能其中每个功能都由若干相关联的子功能模块组成。下面将对这些模块一一进行介绍。5.2.1 资料管理企业经营的基础资料是一个企业最基本、最重要的信息,脱离了基础资料(包括商品资料、供货商资料和客户资料等),进销存系统就无法运行。“资料管理”功能模块就用于维护这些基础资料,其中所包含的子功能模块如图5.2所示。“商品编码设置”用于设置商品编码的方法。进销存系统的每一条商品信息都具有惟一的一个编码,作为该商品信息的主键,一般来说,该编码具有一定的规律,例如药品进销存系统,商品的编码可能有两级,第一级为药品的类别(中药,西药、保健品、器械等),第二级为药品的剂型(针剂、片剂、丸剂等)。该功能设置商品编码分类的方法,从而实现商品资料维护中自动生成编码的功能。例如该商品属于西药的丸剂,而西药的编码是2,丸剂的编码是02,该商品的编码就是202****,后面部分由系统根据该类别里现有编码的最大值加1自动生成。 图5.2 “资料管理”功能模块“商品资料维护”用于维护(增加、修改、删除、查询)企业经营商品的基本信息,内容包括货号、条形码、商品名、拼音编码、规格、单位、产地、类别、进货价、销售价1、销售价2、最低售价等。其中拼音编码是商品名称的拼音简称,目的是使程序可以通过拼音编码方便地查询到所需要的商品。不同行业的进销存商品资料的属性差别很大,我们将在后面加以说明。“供货商资料维护”用于维护企业供货商的基本信息,内容包括供货商号、拼音编码、简称、名称、地址、邮编、区号、地区、类型、电话、传真、电报、开户行、开户行邮编、银行帐号、税号、库房地址、库房电话、业务员、业务部门等。“客户资料维护”用于维护企业客户的基本信息,内容包括客户编号、拼音编码、简称、名称、联系人、地址、邮编、区号、地区、电话、传真、电报、开户行、开户行邮编、银行帐号、税号、性质、业务员、业务部门、授信额度等。“业务员信息维护”用于维护企业销售业务员的基本信息,内容包括业务员号、姓名、性别、电话、手机、地址、邮编、身份证号、类别等。在销售开票时,业务员属性可以直接从业务员清单中获取所有业务员的名字作为辞典供用户选择。“仓库信息维护”用于维护企业的仓库信息,内容包括仓库号、仓库名、类别、备注等。企业的商品一般都是存放在不同的仓库或同一仓库的不同货位中,这样在填写商品进货单和销售单时用户需要指定入库或出库的是哪个仓库的货物。“采购管理”用于维护企业与供货商签订的采购合同,内容包括供货商号、货号、进价、付款方式、帐期、签订日期、合同期限等。合同的内容对业务可以产生影响,例如合同规定了进价,在填写采购单时系统就会自动生成进价。“管理”用于维护企业与客户签订的销售合同,内容包括客户编号、货号、售价、付款方式、帐期、签订日期、合同期限等。  小知识:数据库设计范式数据库的设计有一定的,按照等级划分为1NF、2NF、3NF、BCNF、4NF和5NF这6个范式。这些范式主要用来减少数据库中的数据冗余,每个范式都有自己严格的数学定义,下面我们用通俗的语言解释第一范式和第二范式。1NF指关系中的每个字数都必须是原子的,即每个字段都是不可再分的原子数据项,例如业务员信息表需要记录业务员的地址和邮编,如果使用字段Address_Zip,这就是不符合第一范式的,应该分两个字段(Address和Zip)存放信息。2NF定义为:如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R属于第二范式。举例来说,在系统中填写进货单时需要指定进货的商品,如果每次进货都填写进货商品的品名、单位等信息,就会造成很大的数据冗余。根据第二范式的要求,可以把商品的信息提炼出来,单独存放在一张表中,将商品的编码(货号)作为关键字,进货时只需要指定进货商品的货号就可以了,而其他信息可以通过关联的方法从商品表中获取。需要注意的是,并不是数据库设计时满足的范式层次越高数据库就越合理,一般满足第二范式就可以了,过于追求数据的精简反而增加操作的复杂程度。5.2.2 采购管理“采购管理”功能模块用于管理企业的采购业务,所包含的子功能模块如图5.3所示。 图5.3 “采购管理”功能模块“采购订单”用于录入企业的采购订单。一般来说,采购订单、入库单、销售单等单据根据第二范式都分为主从两张表来存放数据,主表“采购订单”的内容包括编号、供货商号、订货日期、有效起日、有效止日、业务员、制单人、税价合计、不含税价、税额等,从表“采购订单明细”的内容包括编号、订单号、货号、订货数量、进价、税价合计、扣率、税率、不含税价、税额等。“进货单”用于录入企业的进货单,也分为主从两张表,主表“进货单”内容包括编号、供货商号、进货日期、业务员、制单人、验收员、保管员、税价合计、不含税价、税额、订单号等,从表“进货单明细”内容包括编号、进货单号、货号、进货数量、进价、税价合计、扣率、税率、不含税价、税额、仓库、货物质量等。根据企业的规模和管理方法,可以直接作进货单而不用作采购订单,但对于较大规模的企业,采购部门和库房部门一般是分开的,由采购部门填写采购订单,货物运输到库房后由库房验收人员填写进货单。填写进货单后商品的库存才会增加并产生应付款。“退货管理”用于录入企业进货时的退货单。进货的退货有两种方法,一是直接在进货单中填写负数的进货数量,另一种是填写进退货单,一般采用前一种方法。“进货价格调整”用于调整历史进货单的价格,内容包括内部编号、编号、进货数量、原进价、新进价、调整日期、制单人等。“进货单位调整”用于调整历史进货单的供货商,内容包括内部编号、编号、原供货商、新供货商、调整日期、制单人等。“历史查询”用于查询商品采购、进货的历史。一般可以让用户按照任何条件查询,如按照供货商、日期、商品货号、商品拼音等。5.2.3 销售管理“销售管理”功能模块用于管理企业的销售业务,所包含的子功能模块如图5.4所示。图5.4 “销售管理”功能模块“销售订单”用于录入企业的销售订单。主表“销售订单”的内容包括编号、客户编号、销售日期、有效起日、有效止日、业务员、制单人、税价合计、不含税价、税额等,从表“销售订单明细”的内容包括编号、订单号、货号、销售数量、销售价、税价合计、扣率、税率、不含税价、税额等。“销售单”用于录入企业的销售单,主表“销售单”内容包括编号、客户编号、销售日期、业务员、制单人、保管员、税价合计、不含税价、税额、订单号等,从表“销售单明细”内容包括编号、销售单号、货号、销售数量、销售价、税价合计、扣率、税率、不含税价、税额、出货仓库等。“销售退货单”用于录入企业销售退货单,内容包括编号、销售单编号、货号、退货数量、销售价、税价合计、扣率、税率、不含税价、税额、退货仓库等。“调整历史售价”用于调整历史销售单的价格,内容包括内部编号、编号、销售数量、原销价、新销进价、调整日期、制单人等。“历史查询”用于查询商品销售的历史。一般可以让用户按照任何条件查询,如按照客户、日期、商品货号、商品拼音、业务员等信息查询。5.2.4 库存管理“库存管理”功能模块用于管理企业的库存信息,所包含的子功能模块如图5.5所示。“库存查询”用于查询企业商品的库存,可以查询总库存和各分仓库库存。“库存转库”用于将一个仓库的商品转移到另一个仓库,或者连锁店之间的商品调拨,内容包括编号、源部门、目的部门、货号、数量、单价、合计金额、调拨日期、制单人、调货原因等。 图5.5 “库存管理”功能模块“库存盘点”用于管理企业的库存盘点工作,将实际盘存的商品数量输入计算机,计算机自动与数据库中的库存数量进行核对,并产生盘盈盘亏统计信息。“报损报溢”用于管理企业商品库存的损溢,内容包括编号、货号、仓库、数量、库存单价、金额、日期、责任人、制单人等。“上下限设定”用于设置库存的上限和下限,当商品库存的数量超出指定的范围时系统可以自动报警,内容包括序号、仓库号、货号、上限、下限、最佳存量、备注等。“库存上下限报警”根据当前商品库存和指定的库存上下限自动列出低于下限或高于上限的商品,并可以直接根据最佳库存量直接生成采购订单。“历史查询”用于查询各种转库、盘点、损溢的历史数据。5.2.5 应付款管理“应付款管理”功能模块用于管理企业的应付款业务,包含的子功能模块如图5.6所示。图5.6 “应付款管理”功能模块“预付款管理”用于管理企业的预付款信息,内容包括供货商号、预付款总额等。填写付款单时可以选择付款的方式,如果是“减预付款”,则“预付款”表中的“预付总额”将自动减少。“应付款明细”用于查询企业所有的应付款,对应到每一笔进货的明细。“应付款汇总”用于查询企业所有的应付款,对应到每一个供货商。“付款单”用于录入企业支付货款的凭证和应付款,内容包括编号、发票号、填票日期、进货单号、货号、供货商号、数量、进货单价、金额、付款日期、详细说明、进货日期、状态、减预付等。“已付款明细”用于查询企业历史的所有已经支付的款项。“历史查询”用于查询付款单历史。“应付款帐簿”用于查询应付款科目的明细分录,属于财务上的概念。每一笔进货或者付款发生时,系统都会在帐簿中自动产生一笔记录,以借方、贷方、余额的形式存在,可以直接将查询的结果输出作为财务软件的凭证。“应付款帐龄”用于分析应付款的帐龄,即在不同时间段内应付款分布的情况,作为付款依据。5.2.6 应收款管理“应收款管理”功能模块用于管理企业的应收款业务,包含的功能模块如图5.7所示。 图5.7 “应收款管理”功能模块“预收款管理”用于管理企业的预收款信息,内容包括客户编号、预收款总额等。填写收款单时可以选择收款的方式,如果是“减预收款”则“预收款”信息表中的“预收总额”自动减少。“应收款明细”用于查询企业所有的应收款,对应到每一笔销售的明细。“应收款汇总”用于查询企业所有的应收款,对应到每一个客户。“收款单”用于录入企业收回货款的凭证和应收款,内容包括编号、发票号、填票日期、销售单号、货号、客户编号、数量、销售价、金额、收款日期、详细说明、销售日期、状态、减预收等。“已收款明细”用于查询企业历史的所有已收回的款项。“历史查询”用于查询收款单历史。“应收款帐簿”用于查询应收款科目的明细分录,每发生一笔销售或收款业务,系统都会在帐簿中自动产生一笔记录,以借方、贷方、余额的形式存在。可以直接将查询的结果输出作为财务软件的凭证。“应收款帐龄”用于分析应收款的帐龄,即在不同时间段内应收款分布的情况,作为收款依据。5.2.7 帐务管理“帐务管理”功能模块用于管理企业的结帐业务,所包含的功能模块如图5.8所示。一般商业企业每个月都要进行一次结帐操作,确定该财务月份所有商品成本的进、销、结存情况,为财务管理提供数据。图5.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元。到这里,也许用户会问,这两种方法有什么区别?最终企业的利润总是一样的,只不过是先算还是后算的问题。首先,先进先出法可以更加准确的反映出企业的实际经营状况;其次在不同的动机下会产生不同的结果,例如一般商品的价格总是下降的趋势,如果上市公司想增加本年度的利润,采用先进先出法就可以合法地提高公司的利润。需要注意的是,先进先出法需要大量的运算工作,因此在手工操作模式下是不现实的,这也是加权平均法产生的根本原因。5.2.8 统计分析“统计分析”功能模块用于统计和分析企业的经营数据,供企业决策者作为决策依据。常用的功能如图5.9所示。图5.9 “统计分析”功能模块“统计分析”功能模块对企业的历史数据进行统计分析,并将这些数据的分析结果以直观的形式表现出来,当然最理想的情况是以图表的形式表现出来,如图5.10和图5.11所示。以上列举的只是“统计分析”功能模块的一小部分功能,其他还有商品时段销售对比、门店时段销售对比等功能。图5.10 同一商品不同时段销售对比 图5.11 不同门店销售分析对比 小知识:二八(ABC)分析方法意大利经济学家帕列托于19世纪发现:社会约80%的财富集中在20%的人手里,而其余80%的人只拥有20%的社会财富。这种统计的不平衡性在社会经济及生活中无处不在,这就是二八法则,即80%的结果(如产出、酬劳、销售等),往往源于20%的原因(如投入、努力、商品等)。对应到流通企业,就是20%的商品(客户)大致带来80%的销售额和毛利,因此需要找出这些重点品种和重点客户,从而更好地发挥它们的优势。ABC分析与二八分析原理是一致的,只不过ABC分析把结果分为3个等级,而二八分析只分为两个等级。5.2.9 零售管理流通企业分为批发企业和零售企业,零售企业又分为单门店企业和连锁企业。对于零售企业,其自身的特点必然导致进销存系统与批发企业的系统不一致。最大的区别就是零售销售的界面,还有连锁门店的管理。“零售管理”功能模块包括的子功能模块如图5.12所示。图5.12 “零售管理”功能模块 “零售收款”用于门店的POS收款管理。正如前面所说的,零售企业不管把东西卖给了谁,也不会产生应收款。而由于顾客收款排队,需要保证最快的收款速度,因此“零售收款”的功能要简单便捷,往往只输入商品的货号、数量和收款的总金额即可。“班次结帐”用于零售企业的结帐管理。零售企业一般都是分班次销售的,一天一个班次或两个班次,各班次的人员之间交班前需要将收款的金额点清,并和计算机统计的金额一致后,选择“班次结帐”功能模块,确定并清除该班次的收款信息,将其放入历史记录,从而实现顺利交班。“销售日报统计”用于统计零售企业日销售的信息,内容包括日期、部门、组别、收款机号、货号、班次、销售数量、应收金额、实收金额、库存单价等。“连锁要货申请”用于管理连锁门店向配送中心请求配货,内容包括编号、部门、组别、货号、数量、日期、申请人、申请说明、回复等。“连锁来货入库”用于管理连锁门店在接收到配送中心的货物时进行入库确认。“会员管理”用于管理企业的会员信息,可以增加新会员、维护现有会员信息、查询会员消费明细、设置会员折扣等。“数据传输”用于管理连锁门店、配送中心和企业总部之间的数据传输,传输的操作应该简单安全。5.2.10 系统管理系统管理是每个系统都必须具备的功能,包括的子功能模块如图5.13所示。由于这部分功能比较通用,故在后面的实例中将不再详细加以介绍。图5.13 “系统管理”功能模块“参数设置”用于设置系统定义的一些基础参数或开关。“权限设置”用于设置各操作员使用系统的权限,为了方便设置,一般的应用系统都是可以将操作人员分组的,将通用的权限赋予整个组,个别的权限单独赋予个人,这样可以大大减少权限管理的工作量。“数据备份”用于备份系统数据库。“数据恢复”用于恢复系统数据库。“日志管理”用于维护系统的使用日志。一个好的应用系统会对任何操作员进行的所有操作进行日志记录,“日志管理”可以查询、导出和删除历史的日志。“更改密码”供用户更改自己的密码。根据以上需求分析,一个基本的进销存管理系统数据库中大致包括60多张表,分别存放相应子功能的数据信息,其中商品清单、供货商清单和客户清单都是关键表格,用于存放基础的数据信息。其他涉及商品、供货商和客户信息的表,都只记录这些元素的编号,根据作为外键的编号来对应。因此这三张表和其他表间的关系是1∶N的关系。5.3.1 进销存管理系统E-R图因为整个系统涉及的实体和属性较多,限于篇幅,这里不能也没有必要一一列举。图5.14为进销存管理系统关键实体的E-R图(即实体—关系图)。图5.14 进销存管理系统E-R图其他实体与基本信息表间的对应关系都是类似的,同时配光盘的“\Chap5\建库脚本\进销存管理.sql”文件提供了创建数据库所有表的脚本,被省略的实体对象和实体属性用户完全可以参考这些脚本,也可以使用MicrosoftVisio2002自动生成全部实体和属性的E-R图。5.3.2 进销存管理系统表清单配书光盘中“\Chap1\建库脚本\进销存管理.sql”文件提供了创建数据库所有表的脚本,下面我们仅列出一些重要表的名称及其用途供用户参考(如表5.1所示)。关于各表所包含的字段,用户可以自己查看建库脚本和前面的需求分析。表5.1 进销存管理系统表清单表名称表用途用户清单保存系统使用者的信息权限清单保存系统使用者的权限信息,可以指定到菜单级权限商品清单保存企业经营商品的资料信息供货商清单保存企业供货商的资料信息客户清单保存企业客户的资料信息业务员清单保存企业业务员信息仓库清单保存企业仓库设置信息采购合同保存企业与供货商签订的采购合同库存库保存企业商品库存的数量、金额等信息采购订单采购订单主表,填写采购订单时使用采购订单明细采购订单从表采购订单历史保存采购订单历史,填写采购订单确认后单据导入历史采购订单明细历史保存采购订单明细历史进货单进货单主表进货单明细进货单从表进货单历史保存进货单历史进货单明细历史保存进货单明细历史进价调整单进价调整时保存进价调整的信息销售订单销售订单主表销售订单明细销售订单从表销售订单历史保存销售订单历史销售订单明细历史保存销售订单明细历史销售单销售单主表销售单明细销售单从表销售单历史保存销售单历史销售单明细历史保存销售单明细历史销退货单填写销售退货单时使用该表,确定后数据导入销退货单历史                                                                                   续表       表名称表用途销退货单历史保存销售退货单历史调拨单填写调拨单时使用该表,确定后数据导入调拨单历史调拨单历史保存调拨单历史报损报溢填写报损报溢单时使用该表,确定后数据导入报损报溢历史报损报溢历史保存报损报溢历史上下限对照表保存各仓库的库存上、下限数量应付款保存企业应付款明细数据应收款保存企业应收款明细数据预收款保存企业预收款数据预付款保存企业预付款数据每月结帐日期表保存每个月份的结帐日期结帐历史保存每月结帐的历史进销存汇总表保存每月结帐的结果销售日报保存零售的销售数据调货申请门店填写调货申请时使用该表盘点单填写商品盘点单时使用该表,确认后数据导入盘点单历史盘点单历史保存商品盘点单历史5.3.3 利用MicrosoftVisio2002获取系统E-R图本书所有E-R图都是使用MicrosoftVisio2002绘制的,利用MicrosoftVisio2002可以快速获取全系统E-R图。首先利用配书光盘中提供的创建数据库所有对象的脚本创建数据库,并建立一个指向该数据库的ODBC连接(不知道如何建立数据库和ODBC连接的用户参看随书光盘“\程序运行所需文件”目录下的文档);然后进入MicrosoftVisio2002,选择【新建】|【数据库】|【数据库模型图】命令,新建文档,如图5.15所示。图5.15 新建数据库模型图文档 随后选择【数据库】|【反向工程…】命令,弹出【反向工程向导】对话框,如图5.16所示。按照向导操作,选择前面的建立的ODBC数据连接、需要反向工程的对象类型和E-R图的实体,如图5.17和5.18所示,经过确认后就可以得到指定实体的E-R图了。图5.16 【反向工程向导】对话框图5.17 选择所需对象类型图5.18 选择所需实体基于以上需求分析和数据库分析,用户对标准的进销存管理系统应该有了一个全面的认识。下面将通过实例说明如何利用Delphi完成系统的开发。 5.4.1 实例功能由于篇幅有限,本实例将详细介绍如图5.19所示功能的开发过程,并简化其中各功能模块所包含的属性,其他功能用户完全可以参照这些功能的开发方法去实现。需要强调的是,由于用户登录和权限管理的功能各个系统实现的方法是一致的,故在后面的实例中,将不再包含权限管理的功能。    图5.19 详细介绍的功能模块5.4.2 系统流程图系统流程图如图5.20所示。图5.20 系统流程图根据5.4节的介绍,本实例系统共需要17张表,用途分别如表5.2所示。表5.2 实例系统表及其用途表名称表用途用户清单保存系统使用者的信息权限清单保存系统使用者的权限信息,可以指定到菜单级权限商品清单保存企业经营商品的资料信息供货商清单保存企业供货商的资料信息客户清单保存企业客户的资料信息仓库清单保存企业库房的分类信息,可以用于数据辞典业务员清单保存企业的业务员信息,可以用于数据辞典进货单进货单主表进货单明细进货单从表进货单历史保存进货单历史进货单明细历史保存进货单明细历史销售单销售单主表销售单明细销售单从表销售单历史保存销售单历史销售单明细历史保存销售单明细历史库存单保存企业商品库存的数量、金额等信息应付款、应收款保存企业应付款明细、应收款明细 各表之间的E-R图可以参考前面的图5.14。5.5.1 创建数据库打开SQLServer2000企业管理器,新建一个数据库,名称为jxcbook。利用配书光盘中的脚本代码“进销存管理.sql”(位于“\Chap5\建库脚本”目录下)文件创建数据库对象,完成数据库的设计。在后面几小节中,将列出几个重点的表的建库脚本,其他表的脚本参考脚本文件。  小知识:使用SQLServer创建数据库SQLServer对一个数据库采用两个文件来管理,一个是数据文件,扩展名为.mdf;另一个是日志文件,扩展名为.ldf。新建数据库的方法有多种,一般使用SQLServer企业管理器来操作。通过Windows的【开始】菜单运行SQLServer的企业管理器,如图5.21所示。 图5.21 运行SQLServer的企业管理器进入企业管理器后单击服务器名称左边的+号,一直将树型结构展开。在【数据库】项目上右击,在弹出的快捷菜单中选择【新建数据库】命令,如图5.22所示。图5.22 新建数据库在随后出现的对话框中填写数据库的名称等信息,如图5.23所示。也可以在该对话框中修改数据文件和日志文件的存放位置。完成后单击【确定】按钮,即可完成数据库的创建工作。图5.23 设置新建数据库信息 通过上面的步骤,只是建立了一个空的数据库,还需要设计数据库中的表、存储过程等数据库元素。最简单的方法是利用SQLServer2000的查询分析器打开建库脚本,直接运行它,系统的相关元素就可以自动创建。5.5.2 创建“商品清单”表创建“商品清单”表的SQL脚本如下: CREATETABLE[dbo].[商品清单](    [货号][char](14)NOTNULLPrimaryKey,    [条码][char](14)NULL,    [拼音编码][char](40)  NULL,    [品名][varchar](80)  NULL,    [规格][varchar](40)  NULL,    [单位][char](6) NOTNULL,    [产地][varchar](50)  NULL,    [类别][char](20)NULL,    [进货价][decimal](28,6)   NULLdefault(0),    [销售价1][decimal](28,6)  NULLdefault(0),    [销售价2][decimal](28,6)  NULLdefault(0),    [最低售价][decimal](28,6) NULLdefault(0))GO5.5.3 创建“供货商清单”表创建“供货商清单”表的SQL脚本如下: CREATETABLE[dbo].[供货商清单](    [供货商号][char](10)  NOTNULLPrimaryKey,    [拼音编码][char](40)  NOTNULL,    [简称][varchar](80)  NULL,    [名称][varchar](80)  NULL,    [地址][varchar](80)  NULL,    [邮编][char](6) NULL,    [区号][char](6) NULL,    [地区][varchar](12)  NULL,    [类型][char](10)NULL,    [电话][varchar](20)  NULL,    [传真][varchar](20)  NULL,    [电报][varchar](20)  NULL,    [开户行][varchar](40)NULL,    [开户行邮编][char](6) NULL,    [银行帐号][varchar](20)   NULL,    [税号][varchar](20)  NULL,    [库房地址][varchar](40)   NULL,    [库房电话][varchar](20)   NULL,    [业务员][char](10)   NULL,    [业务部门][varchar](20)   NULL,)GO5.5.4 创建“客户清单”表创建“客户清单”表的SQL脚本如下: CREATETABLE[dbo].[客户清单](    [客户编号][char](10)  NOTNULLPrimaryKey,    [拼音编码][char](20)  NOTNULL,    [简称][varchar](80)  NULL,    [名称][varchar](80)  NULL,    [联系人][varchar](30)NULL,    [地址][varchar](80)  NULL,    [邮编][char](6) NULL,    [区号][char](6) NULL,    [地区][varchar](12)  NULL,    [电话][varchar](20)  NULL,    [传真][varchar](20)  NULL,    [电报][varchar](20)  NULL,    [开户行][varchar](40)NULL,    [开户行邮编][char](6) NULL,    [银行帐号][varchar](20)   NULL,    [税号][varchar](20)  NULL,    [性质][varchar](10)  NULL,    [业务员][char](10)   NULL,    [业务部门][varchar](20)   NULL,    [授信额度][decimal](28,6) NULL,)GO5.5.5 创建“进货单”和“进货单明细”表创建“进货单”表的SQL脚本如下: CREATETABLE[dbo].[进货单](    [编号][char](14)NotNULLPrimarykey,    [供货商号][char](10)  NOTNULL,    [进货日期][datetime]NULL,    [业务员]  [char](10)  NULL,    [制单人]  [char](10)  NULL,    [验收员][char](10)   NULL,    [保管员][char](10)   NULL,    [税价合计][decimal](28,6) NULL,    [不含税价][decimal](28,6) NULL,    [税额][decimal](28,6)NULL,    [订单号][char](14)   NULL)GO 创建“进货单明细”表的SQL脚本如下: CREATETABLE[dbo].[进货单明细](    [编号][char](14)NotNULLPrimarykey,    [进货单号][char](14)  NotNULL,    [货号][char](14)NOTNULL,    [进货数量][decimal](28,6) NOTNULL,    [进价][decimal](28,6)NULL,    [税价合计][decimal](28,6) NULL,    [扣率][decimal](28,6)NULL,    [税率][decimal](28,6)NULL,    [不含税价][decimal](28,6) NULL,    [税额][decimal](28,6)NULL,    [仓库][char](20)NULL,    [货物质量][varchar](50)   NULL)GO5.5.6 创建“销售单”和“销售单明细”表创建“销售单”表的SQL脚本如下: CREATETABLE[dbo].[销售单](    [编号][char](14)NotNULLPrimarykey,    [客户编号][char](10)  NOTNULL,    [销售日期][datetime]NULL,    [业务员]  [char](10)  NULL,    [制单人]  [char](10)  NULL,    [保管员][char](10)   NULL,    [税价合计][decimal](28,6) NULL,    [不含税价][decimal](28,6) NULL,    [税额][decimal](28,6)NULL,    [订单号][char](14)   NotNULL)GO 创建“销售单明细”表的SQL脚本如下: CREATETABLE[dbo].[销售单明细](    [编号][char](14)NotNULLPrimarykey,    [销售单号][char](14)  NotNULL,    [货号][char](14)NOTNULL,    [销售数量][decimal](28,6) NOTNULL,    [销售价][decimal](28,6)   NULL,    [税价合计][decimal](28,6) NULL,    [扣率][decimal](28,6)NULL,    [税率][decimal](28,6)NULL,    [不含税价][decimal](28,6) NULL,    [税额][decimal](28,6)NULL,    [仓库][char](20)NULL)GO5.5.7 创建其他重要表创建“库存库”表的SQL脚本如下: CREATETABLE[dbo].[库存库](    [货号][char](14)NOTNULL,    [仓库][varchar](20)  NOTNULL,    [库存数量][decimal](28,6) NOTNULL,    [库存金额][decimal](28,6) NOTNULL,    [库存单价][decimal](28,6) NOTNULL,    [最新进价][decimal](28,6) NULL)GO 创建“权限清单”表的SQL脚本如下: CREATETABLE[dbo].[权限清单](    [权限序号][int]IDENTITY(1,1) NOTNULL,    [用户编号][char](6)   NULL,    [部门][char](20)NULL,    [权限名称][char](6)   NOTNULL)GO5.5.8 创建外部关键字以下为脚本代码为需要特别注意的外部关键字,其他外部关键字参考脚本文件。 --外键关联字段ALTERTABLE[dbo].[进货单]ADD    CONSTRAINT[进货单_供货商_fk]FOREIGNKEY    (        [供货商号]    )   REFERENCES[dbo].[供货商清单](        [供货商号]    )GOALTERTABLE[dbo].[进货单明细]ADD    CONSTRAINT[FK_进货单明细_进货单]FOREIGNKEY    (        [进货单号]    )   REFERENCES[dbo].[进货单](        [编号]    ),    CONSTRAINT[进货单明细_货号_fk]FOREIGNKEY    (        [货号]    )   REFERENCES[dbo].[商品清单](        [货号]    )GOALTERTABLE[dbo].[销售单]ADD    CONSTRAINT[销售单_客户编号_fk]FOREIGNKEY    (        [客户编号]    )   REFERENCES[dbo].[客户清单](        [客户编号]    )GOALTERTABLE[dbo].[销售单明细]ADD    CONSTRAINT[FK_销售单明细_销售单]FOREIGNKEY    (        [销售单号]    )   REFERENCES[dbo].[销售单](        [编号]    ),    CONSTRAINT[销售单明细_货号_fk]FOREIGNKEY    (        [货号]    )   REFERENCES[dbo].[商品清单](        [货号]    )GO5.5.9 创建存储过程系统使用了两个存储过程,分别实现进货时加大库存、产生应付款和销售时减少库存、产生应收款的功能。 --存储过程CREATEPROCEDUREsf_进货单@记帐人char(10)=NULLASbegintransaction    --库存库中没有,增加记录    INSERTINTO库存库(货号,仓库,库存数量,库存金额,库存单价)              SELECTDISTINCTj.货号,j.仓库,0,0,0             FROM进货单明细ASJleftjoin库存库askon(j.仓库=k.仓库andj.货号=k.货号)             wherek.货号isnull    --修改库存信息    UPDATE库存库SET库存单价=casewhen库存数量<=0or(库存数量+数量ALL)<=0then进价                      else(库存金额+税价合计ALL)/(库存数量+数量ALL)    end,             库存数量=库存数量+数量ALL,             库存金额=casewhen库存数量<=0or(库存数量+数量ALL)<=0                  then进价*(库存数量+数量ALL)  else(库存金额+税价合计ALL)  end,             最新进价=进价        FROM        (SELECT仓库,货号,'数量ALL'=sum(进货数量),'进价'=sum(税价合计)/sum(进货数量),             '税价合计ALL'=sum(税价合计)  FROM进货单明细GROUPBY仓库,货号)ASLSJ        WHERE 库存库.仓库=LSj.仓库AND库存库.货号=LSj.货号    --加入应付款    INSERTINTO应付款(编号,进货单号,货号,供货商号,数量,进货单价,金额,进货日期,状态)        SELECT  '付'+a.编号,b.编号,a.货号,b.供货商号,进货数量,进价,a.税价合计,进货日期,'应付'        FROM进货单明细asa,进货单asb        wherea.进货单号=b.编号    --加入历史    insertinto进货单历史select*from进货单    insertinto进货单明细历史select*from进货单明细    --清除进货单    deletefrom进货单明细    deletefrom进货单commitgo CREATEPROCEDUREsf_销售单@记帐人char(10)=NULLASbegintransaction    --修改库存信息    UPDATE库存库SET库存数量=库存数量-数量ALL,库存金额=库存单价*(库存数量-数量ALL)        FROM(SELECT仓库,货号,'数量ALL'=sum(销售数量)   FROM销售单明细        GROUPBY仓库,货号)ASLSJ        WHERE 库存库.仓库=LSj.仓库AND库存库.货号=LSj.货号    --加入应收款    INSERTINTO应收款(编号,销售单号,货号,客户编号,数量,销售价,金额,销售日期,状态)        SELECT'收'+a.编号,b.编号,a.货号,b.客户编号,销售数量,销售价,a.税价合计,销售日期,'应收'        FROM销售单明细asa,销售单asb        wherea.销售单号=b.编号    --加入历史    insertinto销售单历史select*from销售单    insertinto销售单明细历史select*from销售单明细    --清除销售单    deletefrom销售单明细    deletefrom销售单commit本系统采用多窗体程序,包括登录、资料管理、进货管理、销售管理、库存管理和权限管理窗体,另外还有一个主窗体,每个窗体实现一个相应的功能。
/
本文档为【进销存需求文档(包含表结构设计)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索