商业销售系统建模_第1页
商业销售系统建模_第2页
商业销售系统建模_第3页
商业销售系统建模_第4页
商业销售系统建模_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、商业销售系统次分析设计是针对一个商业销售系统中的几个主要业务进行建模。我们的设计对象是一个商场的商业销售系统。商场下设有业务部、仓库、若干柜台组及收银台等,业务部负责组织进货、保管及销售,仓库对购进的商品进行保管,而柜台则是进行商品零售的场所,收银台作为大厦财务出纳的收款点负责零售商品的收款。1. 现有系统描述该商场现有部门如下:家用电器经理部、家用电器大件柜、家用电器小件柜;五金交电经理部、小五金柜、电气材料柜;钟表眼镜经理部、钟表柜、眼镜柜;文化用品经理部、文化用品一柜、文化用品二柜;体育用品经理部、体育器材柜、体育服装柜;服装用品经理部、妇女服装柜、儿童服装柜、男子服装柜;大件商品仓库,

2、服装用品仓库、精细商品仓库、普通商品仓库。该商场的业务目前全部为手工处理,具体业务描述如下:业务部从有关厂家和批发商订购商品;订购商品到货时,由业务部的制单人填写商品入库通知单,通知仓库进行行验收入库;仓库保管员按入库单对到货进行验收入库;无论验收情况如何,都要填写验收单,通知业务部及财务进行做账;柜台需要库存商品上柜销售时,也由业务部的制单人填写商品调拨单分别通知仓库和柜台组;仓库按调拨单发货;柜台按调拨单提货到柜台;商品零售时,由售货员填写交款单给顾客,顾客拿交款单到收银台交钱,收款员按收款单的金额收款,然后在交款单上盖收款章,顾客凭盖章后的交款单到柜台取走商品;而对批发业务来说,顾客直接

3、到业务部进行洽谈,业务部的业务人员根据洽谈结果开售货单,顾客拿售货单到财务部出纳处交款,出纳收款后在售货单各联上加盖收款章;顾客交款后直接到仓库提货;仓库发货时按售货单发货,并将售货单的提货联留底。2. 对新系统要求2.1 经理业务部业务管理业务处理要求:要求新系统能支持各经理业务部通过开具入库单、调拨单、调价单商品批发销售单以及库存调整单来对商品流通各个环节进行管理和控制。数据处理要求:入库单、调拨单、调价单、销售单以及库存调整单都是属于原始凭证,在新系统中应保存这些原始凭证的如下基本信息:凭证号、凭证名称、填制单位、接受单位、日期、制表人;以及,如下明细信息:入库编号、单位、数量、单价、摘

4、要。2.2 仓库业务管理业务处理要求:商品的入库、出库、盘点及查询。商品入库主要是采购商品入库,入库时须按入库通知单对实物进行验收,并填写验收单。出库有两种情况:一种是按商品调拨单将商品调入柜台进行销售,另一种是批发销售,顾客拿提货联来提货。盘点主要是按库存账对实物进行盘查,查出各种实物的盈亏情况。商品入库、出库都要对库存账进行登记,盘点要做出盘点报表数据处理要求:仓库的商品库存账记录了仓库各种商品的库存数量及资金占用量等库存状态,应能反映如下信息:入库编号、商品名称、单位、数量、单价、入库日期、库位库存进出流水账记录仓库商品进出情况,这是一个随时间增加的流水账,应能反映如下信息:凭证编号、进

5、出(借贷)、数量、单位、单价、入库编号、商品名称、日期、摘要。入库验收单记录入库验收情况,应能反映如下信息:验收单编号、商品名称、入库编号、入库数量、验收数量、验收质量、单位、单价、入库单编号、验收日期、验收人、摘要。盘点记录表记录盘点情况,应能反映如下信息:盘点日期、入库编号、商品名称、账面数量、实际盈亏数量、单位、单价、摘要。2.3 柜台业务管理新系统应对以下业务进行处理:商品调柜处理、商品销售及柜台商品的统计查询。商品调入柜台进行销售时,要按商品调拨单从仓库中领取商品,同时要登记柜台商品帐。销售商品时先开售货单给顾客,顾客凭售货单去收银台交款后再将已盏收款章的售货单交给售货员并取走商品,

6、售货员须将已售出的货物进行登记。此外,查询主要查询柜台商品情况及销售情况。统计主要统计每天的销售情况,毛利润等信息。数据处理要求:1. 柜台商品的登记应该的两本账;一本是反映柜台商品状态的,另一本是反映柜台商品变动情况的流水账。2. 用于记录柜台现有各商品存货的情况的柜台商品账,应能反映如下信息:入库编号、商品名称、单位、数量、进价。3. 用于记录柜台商品的入库情况的柜台商品入库流水账,应能反映如下信息:凭证编号、入库编号、商品名称、数量、单价、单位、日期、摘要。4. 用于记录柜台商品的销售库情况的柜台商品销售流水账,应能反映如下信息:凭证编号、入库编号、商品名称、销售数量、销售单价、单位、单

7、位毛利、日期、摘要。5. 售货数据:售货单编号、入库编号、商品名称、数量、售价、单位、有效否、柜台名称、日期。6. 商品价格数据:商品名称、单位、价格、实行日期。2.4 收银台管理收银台的主要工作就是按售货单收取现金。系统应提供以下业务处理功能:收款员联机管理、收款登记,收款查询、销售日报表及现金日报表的生成打印。数据处理要求:1. 收款台账,记录了收款流水账,应能反映如下信息:售货单编号、日期、柜台、入库编号、商品名称、数量、单位、单价、收款员、付款方式(现金、支票)。2. 销售日报,记录了每天统计的销售情况,应能反映如下信息:日期、柜台号、入库编号、商品编号、数量、单位、金额。3. 新系统

8、至少应记录收款员如下一些信息:收款员姓名、口令、有效否、登记日期。2.5 商品三级账管理商品三级账管理的主要有:根据仓库验收单在商品账中登记入库记录,填调拨单时须检查库存是否有相应的商品,调拨单填完后要自动对商品账中的库存和柜台商品变动进行登记,根据销售日报表对柜台销售商品登账。数据处理要求:1. 商品存货账,记录商场备部门的存货情况:入库编号、商品名称、存货单位名称、单位、数量、单价。2. 商品变动流水账,记录商场各部门的存货的变动情况:入库编号、商品名称、科目编号、借贷、单位、数量,单价、日期、凭证号、摘要。3. 商品销售流水账,记录商品的销售情况:入库编号、商品名称、销售部门、销售数量、

9、单位、售价、进价、毛利、日期。2.6 编码要求新系统对诸如部门、人员、商品、厂家、各种凭证等分别制定一套简单易行的编码方案,以方便管理和使用。商场方面还要求该系统应是一个多层体系结构的分布式系统。系统设计说明本文档设计中,是把以上部门按功能把他们进行抽象成为四个管理系统。下图是use case diagram view中对系统的一个描述。它虽然是个use case diagram,但里面的内容只是package,不包含具体use case diagram的actor和use case.图1。系统的结构图单据管理系统设计说明use case应该是过程、操作而非一个实体的对象。如图,use cas

10、e 的所有对象(商品入库单、库存入库单、商品调整单、商品批发销售单、商品调拨单)都是实实在在存在的实体。它们不是一个过程,亦不是一个操作。因而use case diagram如下: 图二、单据管理系统用例图。在单据管理系统中要求新系统能支持各经理业务部通过开具入库单、调拨单、调价单商品批发销售单以及库存调整单来对商品流通各个环节进行管理和控制。在画sequence diagram中,为了很好的对类和操作作很好的映射,提高sequence diagram的实际用途,采用了“二步法”来做。如下图,先是对用户所关心的东西作一个描述性的说明。在这里面,不对具体的实体对象任何的描象,也不对类进行映射。图

11、三、“二步法”画sequence diagram (1)图四、“二步法”画sequence diagram (2)图五、“二步法”画sequence diagram (3)和sequence diagram一样,collaboration diagram 也显示使用案例中特定的流程。sequence diagram与collaboration diagram中的信息相同,但collaboration diagram显示了不同的流程视图。在collaboration diagram中,更容易看出对象之间的关系。collaboration diagram表示协作,在collaboration di

12、agram中包含了一组由对象扮演的角色,以及一个特定的上下文中的关系。对最终得出的sequence diagram作转化,成为如图六所示的collaboration diagram:图六、sequence diagram 转为collaboration diagramc1ass框图显示系统中的类与类包,提供系统组件及其相互关系的静态图形。类是包装信息和行为的项目。习惯上,我们把系统的信息放在数据库”一方,行为放在应用程序一方。面向对象方法的特点之就是将一小组息和影响信息的行为连接在起。我们将一小组信息和影响信息的行为连接在一起,包装成类。一个系统通常要生成几个ciass框图。有些显示类及其关系

13、的子集,有些显示类的子集,包括属性和操作,还有些显尔类包及包之间的关系。接着上面的这个制单例子,对图八中所映射的类添加一些必要的属性和操作,并反相关的类分类后打包为三个包:图七、把类分类后打包图八、包“界面”下属类图九、包“后台数据库”下属类图十、包“中间件”下属类当然,也有对整个单据管理系统所有类及类之间关系的描述:图十一、单据管理系统类及类之间的关系组件是代码的物理模块。组件可以包括代码闸和运行文件。例如,如果使用c+,则每个个.cpp和.h文件是单独的组件。编译代码后生成的exe文件也是组件。生成代码之前,将每个文件映射相应组件。在c+中,每个类映射两个组件,一个表示类的.cpp义件,个

14、表示.h的文件。组件生成之后,加进component dragram中,并画出其间关系:图十二、组件包之间的关系图十三、组件之间的关系其它功能模块设计上面已对单据管理系统的设计进行了详细说明。从技术角度来说,仓库管理系统、销售管理系统、账目管理系统的实现过程、步骤和方法都是一样的。为了避免不必要的冗余,以下部份直接给出图例,不再加于累述。图十四、仓库管理系统用例图图十五、销售管理系统用例图图一六、帐目管理系统用例图图一七、报表管理顺序图商业销售系统类图汇总图一八、后台数据库类图汇总图一九、界面类图汇总图二、中间件类图汇总图二一、商业销售系统类图汇总图二二、商业销售系统类图汇总组件图汇总尚未解决

15、的问题1若此高场有进出口贸易,刚对进出口商品的管理没有细分。 2界面的完全实现。3高级管理者与普通用户拥有优先的权利没有体现出来。附录一、数据库建表代码use mastergoif exists (select * from dbo.sysdatabases where name = vendition) drop database venditiongocreate database venditiongouse venditiongoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice

16、_loan) and objectproperty(id, nzreceiverinfo) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, ndorder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_

17、id(ndbo.travelservice_loan) and objectproperty(id, nccheckorder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, nzgooddailyorder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.s

18、ysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, nsgaintotal) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, ncstorageinfo) = 1)drop table dbo.travelservice_loangoif exi

19、sts (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, ncinstorage) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, ncprepareorder) = 1)drop table dbo.t

20、ravelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, nzmoneydailyorder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, nspay

21、fororder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, nspayfororder) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) an

22、d objectproperty(id, nsgoodstotal) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo.travelservice_loan) and objectproperty(id, ndorderitem) = 1)drop table dbo.travelservice_loangoif exists (select * from dbo.sysobjects where id = object_id(ndbo

23、.travelservice_loan) and objectproperty(id, ncpickupgoodsorder) = 1)drop table dbo.travelservice_loangocreate table zreceiverinfo (receiverid integer not null,receivername varchar ( 255 ) not null,receiverpassw smallint not null,gender smallint not null,applydate datetime not null,lastlogindate date

24、time not null,counterid smallint not null,others smallint not null,zreceiverinfo_id integer not null,constraint pk_zreceiverinfo11 primary key (zreceiverinfo_id);create table dorder (ordernumber integer not null,ordername varchar ( 255 ) not null,orderfillunit varchar ( 255 ) not null,orderrequreuni

25、t varchar ( 255 ) not null,orderdate datetime not null,orderfilldate datetime not null,orderlister varchar ( 255 ) not null,dorder_id integer not null,constraint pk_dorder4 primary key (dorder_id);create table ccheckorder (checknumber integer not null,checkperson varchar ( 255 ) not null,checkresult

26、 smallint not null,col_0 smallint not null,dorder_id integer not null,goodname varchar ( 255 ) not null,instorageorderid integer not null,constraint pk_ccheckorder21 primary key (dorder_id);create table zgooddailyorder (zmoneydailyorder_id integer,sgoodstotal_id integer,dorder_id integer not null,co

27、nstraint pk_zgooddailyorder24 primary key (dorder_id);create table sgaintotal (date datetime not null,goodorderid integer not null,orderid integer not null,sgaintotal_id integer not null,totalcash smallint not null,constraint pk_sgaintotal18 primary key (sgaintotal_id);create table cstorageinfo (goo

28、dplace varchar ( 255 ) not null,dorder_id integer not null,cinstorage_dorder_id integer not null,constraint pk_cstorageinfo19 primary key (dorder_id);create table cinstorage (instoragetime smallint not null,cpickupgoodsorder_id integer,dorder_id integer not null,constraint pk_cinstorage20 primary ke

29、y (dorder_id);create table cprepareorder (dorder_id integer not null,constraint pk_cprepareorder22 primary key (dorder_id);create table zmoneydailyorder (orderid integer not null,totalcash double precision not null,date datetime not null,goodorderid integer not null,zmoneydailyorder_id integer not n

30、ull,sgaintotal_id integer,constraint pk_zmoneydailyorder14 primary key (zmoneydailyorder_id);create table spayfororder (dorder_id integer not null,constraint pk_spayfororder25 primary key (dorder_id);create table zgatheringorder (payform varchar ( 255 ) not null,counterid integer not null,zmoneydail

31、yorder_id integer,dorder_id integer not null,constraint pk_zgatheringorder23 primary key (dorder_id);create table sgoodstotal (orderid integer not null,goodname varchar ( 255 ) not null,goodtotal integer not null,sgaintotalid integer not null,goodprice double precision not null,sgoodstotal_id intege

32、r not null,constraint pk_sgoodstotal17 primary key (sgoodstotal_id);create table dorderitem (itemid integer not null,itemunit varchar ( 255 ) not null,itemnumber integer not null,itemprise double precision not null,itemtabloid varchar ( 255 ) not null,dorderitem_id integer not null,dorder_id integer

33、 not null,constraint pk_dorderitem5 primary key (dorderitem_id);create table cpickupgoodsorder (pickupid smallint not null,pickupobject varchar ( 255 ) not null,pickuptime datetime not null,pickupgoodname varchar ( 255 ) not null,pickupgoodprice double precision not null,pickupmoney double precision

34、 not null,cpickupgoodsorder_id integer not null,constraint pk_cpickupgoodsorder10 primary key (cpickupgoodsorder_id);create index tc_zgooddailyorder13 on zgooddailyorder (zmoneydailyorder_id);create index tc_zgooddailyorder15 on zgooddailyorder (sgoodstotal_id);create index tc_cinstorage9 on cinstor

35、age (cpickupgoodsorder_id);create index tc_zmoneydailyorder17 on zmoneydailyorder (sgaintotal_id);create index tc_zgatheringorder11 on zgatheringorder (zmoneydailyorder_id);create index tc_dorderitem5 on dorderitem (dorder_id);alter table ccheckorder add constraint fk_ccheckorder12 foreign key (dord

36、er_id) references dorder (dorder_id) on delete no action on update no action;alter table zgooddailyorder add constraint fk_zgooddailyorder6 foreign key (zmoneydailyorder_id) references zmoneydailyorder (zmoneydailyorder_id) on delete no action on update no action;alter table zgooddailyorder add cons

37、traint fk_zgooddailyorder15 foreign key (dorder_id) references cinstorage (dorder_id) on delete no action on update no action;alter table zgooddailyorder add constraint fk_zgooddailyorder7 foreign key (sgoodstotal_id) references sgoodstotal (sgoodstotal_id) on delete no action on update no action;al

38、ter table cstorageinfo add constraint fk_cstorageinfo10 foreign key (cinstorage_dorder_id) references cinstorage (dorder_id) on delete no action on update no action;alter table cstorageinfo add constraint fk_cstorageinfo9 foreign key (dorder_id) references dorder (dorder_id) on delete no action on u

39、pdate no action;alter table cinstorage add constraint fk_cinstorage4 foreign key (cpickupgoodsorder_id) references cpickupgoodsorder (cpickupgoodsorder_id) on delete no action on update no action;alter table cinstorage add constraint fk_cinstorage11 foreign key (dorder_id) references dorder (dorder_

40、id) on delete no action on update no action;alter table cprepareorder add constraint fk_cprepareorder13 foreign key (dorder_id) references dorder (dorder_id) on delete no action on update no action;alter table zmoneydailyorder add constraint fk_zmoneydailyorder8 foreign key (sgaintotal_id) reference

41、s sgaintotal (sgaintotal_id) on delete no action on update no action;alter table spayfororder add constraint fk_spayfororder16 foreign key (dorder_id) references zgatheringorder (dorder_id) on delete no action on update no action;alter table zgatheringorder add constraint fk_zgatheringorder14 foreig

42、n key (dorder_id) references dorder (dorder_id) on delete no action on update no action;alter table zgatheringorder add constraint fk_zgatheringorder5 foreign key (zmoneydailyorder_id) references zmoneydailyorder (zmoneydailyorder_id) on delete no action on update no action;alter table dorderitem ad

43、d constraint fk_dorderitem2 foreign key (dorder_id) references dorder (dorder_id) on delete no action on update no action;附录二、几个简单的存储过程和触发器的实现/*/create trigger checkgoods on cinstroage /*填调拨单时检查库存是否有相应的商品*/for insertasbegin declare goodsname varchar(20), goodsnum int, mark int,set mark=0 set goodsna

44、me=(select goodsname from inserted) set goodsnum=(select goodsnum from inserted) set mark=(select (*) from cinstroage where cinstroage.goodname=goodsname) ifmark=0 begin insert into cinstroage values(select * from inserted) end else if begin update cinstroage set goodsnum=goodsnum+goodsnum where goo

45、dsname=goodsname endend/*/create trigger pickout on cprepareorder/*调拨单填完后要自动对商品账中的库存和柜台商品变动进行登记*/for insertasbegin declare goodsname varchar(20), goodsnum int, set goodsname=(select goodsname from inserted) set goodsnum=(select goodsnum from inserted) update cinstroage set goodsnum=goodsnum-goodsnum

46、 where goodsname=goodsname delete * from cinstroage where goodsnum=0 update scountstroage set goodsnum=goodsnum-goodsnum where goodsname=goodsname delete * from scountstroage where goodsnum=0 endend/*/create proc cdaily(cdate datetime) /*销售日报表现金日报表的生成*/ascreate table cdailyresult/*创建临时表 cdailyresult

47、*/ (goodname varchar(20), goodprice int, goodnum int, goodcountcash varchar(10),)godeclare goodname varchar(20),/*从收款单和提货单中把名字相同的商品销售信息汇总放在临时表中*/goodprice int,goodnum int,goodcountcash varchar(10),totalcash varchar(15),looptime1 set looptime1=(select count(*) from zgatheringorder),looptime2 set loop

48、time1=(select count(*) from cpicpupgoodsorder)declare dailytotal1 cursor forselect a1.goodname,a1.goodprice+a1.goodprice,a1.goodnum+a2.goodnum,a1.goodcountcash+a2.goodcountcashfrom zgatheringorder as a1,a2where a1.dailydate=cdate a1.goodname=a2.goodnamedeclare dailytotal2 cursor forselect a1.goodname,a1.goodprice+a1.goodprice,a1.goodnum+a2.goodnum,a1.goodcountcash+a2.goodcountcashfrom cpicpupgoodsorder as a1,a2where dailydate=cdateopen zgatheringorderopen cpicpupgoodsorderwhile looptime1!=0 beginfetch next fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论