1、(完整word版)网上书店需求分析.网上书店一、 需求分析1、业务需求及处理流程业务需求分析是根据现实世界对象需求,描述应用的具体业务处理流程,并分析哪些业务室计算机可以完成的,而哪些业务是不能由计算机完成。网上书店主要业务包括:图书信息发布与查询,订购图书,处理订单并通知配送公司送书等。本节给出了网上书店的核心业务“订单生成”及“订单受理”处理流程,如图所示:会员登录选择图书放入购物出填写配送信息选购结束开始选择支付方式在线支付财务结算订单生成结束YYNN职员登录订单审核正确?开始有库存?生成配送单生成发票结束YYNN有订单?YN退回订单通知进货2、功能需求及数据需求分析功能需求分析是描述系
2、统应提供的功能和服务。根据上述需求描述和业务流程,通过网上书店人员的沟通与交流,网上书店主要功能和数据需求分析如下。1. 注册管理(1)、会员注册。会员注册时要求填写基本信息,包括姓名,登录密码,性别,出生日期,地址,邮政编码,电话,电子邮件,单位等信息。系统检查所有信息填写正确后提示会员注册成功,并返回会员编号。(2)、职员注册。书店工作人员以职员身份注册并填写基本信息,包括姓名,登录密码,性别,出生日期,部门,薪水,住址,电话,电子邮箱等信息。系统检查所有信息填写正确后提示职员注册成功,并返回职员编号。2. 图书管理(1)、图书信息维护。图书需维护ISBN,书名,作者,版次,类别,出版社,
3、出版年份,库存数量,定价,图书折扣,内同简介,目录等信息。(2)、图书采购。当库存数量不足或出版社有新书出版时,书店职员负责图书采购。采购单包括采购单号(按时间顺序生成),出版社,采购日期,采购人,采购明细(包括ISBN,书名,采购数量,单价)等。(3)图书入库。当订购的图书到货后办理图书入库,并增加新图书信息,更新图书库存数量。入库单包括入库单号,出版社,入库日期,入库人,入库明细(包括ISBN,书名,入库数量)等。(4)、图书发布。书店职员负责及时在网上发布新书信息,图书推荐信息,促销信息等,并及时更新,删除就信息。3. 在线订书会员登录网站后,将需订购的图书放入购物车中并填写购买数量。购
4、物车内的图书可以随时增加、删除和修改数量,并能及时统计购物车内的图书总价格。选书完成后,会员还需要选择支付方式(在线支付或上门付款)并填写发票单位等。确认所填信息无误后,则提交生成订单。每张订单要求记录订单号(按时间顺序生成)、订购日期、应收总金额、会员折扣、实收总金额、付款方式、订单状态、订单明细(包括ISBN、书名、订购数量、定价、应收金额、图书折扣、实收金额、配送状态等)和发票信息(如发票单位等)。如果选择了在线支付方式,则还需进行网上结算。若余额不足,则取消订单(本设计不考虑)。4. 配送状态假如一张订单所订购的图书可拆分成不同的配送单发货,但一个配送单不能包含不同订单的图书。因此,会
5、员在生成订单之后还需要进一步进行配送设置,包括填写配送信息,定义配送明细,同时还需要选择:如果一个配送单中的所有图书不是同时有货,是否需要自动拆送,每张配送单要记录配送单号、配送日期、配送信息(收货人、送货地址、邮政编码、联系电话等)配送明细(包括ISBN、书名、配送数量等)、是否拆送、发票编号、配送状态等。配送信息默认从会员注册信息中获取,也可以重新填写。配送状态记录了改配送单的当前配送状态,也包括“未发货”、“已发货”、“已送到”等状态。5. 订单管理(1)订单查询。订单提交后,会员可以随时查询订单的最新状态及全部历史订单。(2)订单取消及更新。订单为审核前,允许会员取消订单及更新订单信息
6、。(3)订单受理。订单生成后,职员对订单进行审核。如发现订单及配送单信息填写不正确,则退回客户重新填写。如果通过审核,则检查所订购图书是否有库存。如一个配送单中所购图书均库存,则生成该配送单的发票,更新库存数量,安排配送。 如一个配送单中的部分图书库存不足(通知尽快进货),且会员选择是否拆送为“Y”,则系统自动对该配送单进行拆分配送(先配送有库存的图书),生成拆分的配送单及发票,更新库存数量,安排配送。6. 出版社管理网上书店直接从出版社采购图书。为方便管理,要求保存和维护出版社信息,包括出版社编号、出版社名称、出版社地址、邮政编码、联系人、联系电话、传真、电子邮箱等信息。7. 配送公司管理网
7、上书店通过配送公司将图书送到会员手中。要求保存和维护配送公司信息:公司编号、公司名称、公司地址、邮政编码、联系人、电话、传真、电子邮箱等信息。8. 留言管理(1)发布留言。会员可以在网站发表留言或评论。留言需要记录留言人、留言日期、留言内容等信息。(2)回复留言。书店职员可回复留言,并记录回复人、回复日期、回复内容等信息。9.用户管理(1)会员升级。系统可对会员进行分级,即当会员订书总金额到达一定数额后成为不同等级的用户,享受相应的优惠折扣。(2)会员信息维护。系统管理员及会员可修改、删除和更新会员信息。(3)职员信息维护。系统管理与及职员可修改、删除和更新职员信息。3、业务规则分析业务规则分
8、析主要是分析数据之间的约束及数据库约束。基于上述功能需求,通过进一步了解,网上书店业务规则如下:(1) 所有用户均可搜索图书信息,但只有注册会员才能在网上提交订单;只有注册职员才能维护图书信息及受理订单。(2) 每位会员由会员编号唯一标识,会员编号由系统按时间顺序生成。(3) 每位职员由职员编号唯一标识,职员编号由系统按时间顺序生成。(4) 当普通会员购书总额达到10000元,即升级为三级VIP会员,享受9.5折优惠;购书总额达到20000元后,升级为二级VIP会员,享受9折优惠;购书总额达到30000元,升级为一级VIP会员,享受8.5折优惠。(5) ISBN唯一标识一种图书。系统记录每种图
9、书的当前库存数量,当某图书的库存数量低于某一阈值时,则通知该图书补货。(6) 选购的图书必须放入购物车后才能生成订单。(7) 订单受理前允许会员删除所选图书,修改购书数量、配送信息和发票单位,甚至取消订单。但是订单审核通过后,则不允许再做任何修改。(8) 每个订单用订单编号唯一标识。订单编号由系统按时间顺序生成,后提交的订单具有更大的订单号。(9) 同一订单可订购多种图书,且订购数量可以不同。因此,一张订单的订单明细包括:ISBN、图书名称、订购数量、定价、应收金额、图书折扣、实收金额、配送状态。每种图书的实收金额=订购数量*定价*图书折扣*会员折扣。(10) 每个订单可分多个配送单进行配送,
10、配送单的配送明细信息由会员设置。配送单编号唯一标识配送单。每个订单的配送单编号由订单编号加上系统按时间顺序生成的配送单流水号组成。(11) 假设一张订单的每一个配送单对应开一张发票,但一张订单的所有发票的发票单位都相同。发票用发票编号唯一标识。(12) 配送单中的图书采取先到先发货原则进行配送。若一个配送单中的图书未同时有货,且会员选择可以拆送,则系统会自动拆分成不同配送单发货;但是,配送单中的某种图书只有库存足够时才能安排配送。(13) 一个配送单只能由一个配送公司进行配送(不同配送单可以由不同配送公司配送);一个配送公司可以承接多次配送业务。(14) 配送单中的配送状态记录了该配送单的当前
11、配送状态,包括“未发货”、“已发货”、“已送达”等状态。(15) 订单中的订单状态记录了该订单的当前处理状态,包括“未审核”、“退回”、“已审核”、“已部分配送”、“已全部配送”、“已处理结束”等状态。(16) 订单明细的配送状态记录了该图书的当前配送情况,包括“未配送”、“已部分配送”、“已全部配送”等状态。(17) 当订单中的某种图书全部送到后,则更新该图书的配送状态为“已全部送到”。当订单内全部图书的配送状态为“已全部送到”时,则更新该订单的订单状态为“已处理结束”。(18) 一种图书由一个出版社出版,而一个出版社可出版多种图书。(19) 一个会员可发表多条留言,一个职员可回复多条留言,
12、但假设一条会员发布的留言至多只回复一次。完成需求分析后,接下来的任务就是根据上述分析结果设计数据库的概念模型,即E-R模型,包括确定实体集、联系集及属性。二、E-R模型设计1、订单生成与订单审核会员订购职员审核订单图书订购订购数量配送状态图书ISBN书名订单号订购日期订单状态2、配送设置与图书配送职员会员职员订购审核订单订单号订购日期订单状态配送单配送单号收货人分派职员配送配送公司配送图书配送数量订购图书图书ISBN号书名3、图书采购与图书入库职员采购出版社供应采购单是否入库入库单拥有入库单号采购单号入库验收职员图书入库图书组成采购明细参照ISBN号书名序号 4、总体E-R图设计会员等级引用会
13、员订购审核职员订单包含配送单图书订购图书采购参照采购明细组成采购单属于出版社供应拥有入库单图书入库图书配送分派职员入库验收配送配送公司回复1留言回复指向会员发布回复2回复日期回复内容留言三、数据字典1、职员实体集数据字典属性名 含义 类别 域及约束 employeeNo职员编号主码char(10),不允许取空值empPassword登录密码char(10),不能少于6位empName姓名varchar(20),不允许取空值sex性别char(2),取值范围:男, 女birthday出生日期datetimedepartment部门varchar(30)title职务varchar(20)sala
14、ry薪水numericaddress住址varchar(40)telephone电话char(13),由数字字符加连字符-组成email电子邮箱varchar(20)2、会员实体集数据字典属性名 含义 类别 域及约束 memberNo会员编号主码char(10),不允许取空值memPassword登录密码char(10),不能少于6位memName姓名varchar(20),不允许取空值sex性别char(2),取值范围:男, 女birthday出生日期datetimetelephone电话char(13),由数字字符加连字符-组成email电子邮箱varchar(20)address住址va
15、rchar(40),不允许为空zipCode邮政编码char(6),不允许为空unit单位varchar(20),不允许取空值totalAmount购书总额numeric,从订单实体集中统计得到memLevel会员等级char(1),取值范围:1,2,3,分别代表一级、二级、三级VIP会员levelSum等级购书额定numericmemDiscount会员折扣float3、订单实体集数据字典属性名含义类别域及约束orderNo订单号主码char(15),不允许取空值orderDate订购日期datetime,不允许取空值amountReceivable应收总金额派生numeric,从图书订购联
16、系集中统计得到paidAmount实收总金额派生numeric,从图书订购联系集中统计得到memDiscount会员折扣派生float,取会员实体集中该会员对应属性的当前值payWay付款方式char(1),取值范围:L,S,分别表示在线支付,上门付款paidFlag是否付款char(1),取值范围:Y,NorderState订单状态char(1),取值范围:A,B,C,D,E,F分别代表“未审核”、“退回”、“已审核”、“以部分配送”、“已全部配送”、“已处理结束”invoiceUnit发票单位varchar(40),默认取会员实体集的unit属性当前值,并允许修改4、配送单弱实体集属性名含
17、义类别域及约束shipNO配送单号部分码char(4),不允许空值receiver收货人varchar(20),默认取会员实体集中该会员的memName属性当前值,并允许修改shipAddress送货地址varchar(40),默认取会员实体集中该会员的address属性当前值zipCode邮政编码char(6),默认取会员实体集中该会员的zipCode属性当前值,并允许修改shipTel联系电话varchar(15),默认取会员实体集中该会员的telephone属性当前值,并允许修改separateFlag是否拆送char(1),取值范围Y,NinvoiceNo发票编号varchar(20)
18、shipDate配送日期联系datetime,它是实体集配送单与配送公司之间多对一联系集配送的联系属性shipState配送状态联系char(1),取值范围A,B,C,分别代表“未发货”、“已发货”、“以送达”。它是实体集配送单与配送公司之间的多对一联系集配送的联系属性5、采购单实体集数据字典属性名含义类别域及约束purchaseNo采购单号主码char(15),不允许为空值purDate采购日期datetimepurAmount采购总金额numericstoredFlag是否入库char(1),取值范围Y,N,不允许为空值employeeNo采购员外码char(10),不允许为空值press
19、No出版社编号外码char(12),不允许为空值6、采购明细弱实体集数据字典属性名含义类别域及约束serialNo序号部分码char(4),不允许为空值purQuantity采购数量intpupPrice采购单价numeric7、入库单弱实体集数据字典属性名含义类别域及约束storeNo入库单号部分码char(4),不允许为空值storeDate入库日期date8、图书实体集数据字典属性名含义类别域及约束ISBN书号主码char(17),不允许为空值bookTitle书名varchar(30)author作者varchar(40)publishDate出版日期dateversion版次intc
20、ategory类别varchar(20),不允许为空值stockNumber库存数量int,不允许为空值price定价numeric,不允许为空值bookDiscount图书折扣float,不允许取空值introduction内容简介varchar(500)catalog目录varchar(500)9、出版社实体集数据字典属性名含义类别域及约束pressNo出版社编号主码char(12),不允许取空值pressTitle出版社名称varchar(20)address出版社地址varchar(40)zipCode邮政编码char(6),不允许为空值contactPerson联系人varchar(
21、12)telephone联系电话varchar(15)fax传真varchar(15)email电子邮箱varchar(20)10、配送公司实体集属性名含义类别域及约束companyNO公司编号主码char(12),不允许取空值companyTitle公司名称varchar(20)address公司地址varchar(40)zipCode邮政编码char(6)contactPerson联系人varchar(12)telephone联系电话varchar(15)fax传真varchar(20)email电子邮箱varchar(20)11、留言实体集数据字典属性名含义类别域及约束messageNo
22、留言编号主码char(10),不允许取空值messageDate留言日期datetimemessageContent留言内容varchar(100)replyDate回复日期datetimereplyContent回复内容varcahar(100)四、数据库逻辑设计1、注册管理 2、用户管理3、图书管理4、出版社管理 5、配送公司管理 6、订单管理7、留言管理8、配送管理9、五、数据库表在数据库中建立名称为Shop的数据库1、 职员Employee表的建立USE ShopGO/* 对象: Table dbo.Employee 脚本日期: 06/18/2013 20:52:41 */SET AN
23、SI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Employee(employeeNo char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,empPassword char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,empName varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,sex char(2) COLLATE Chinese_PRC_CI_AS NOT NULL,b
24、irthday datetime NOT NULL,department varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL,title varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,salary numeric(18, 0) NOT NULL,address varchar(40) COLLATE Chinese_PRC_CI_AS NOT NULL,telephone varchar(15) COLLATE Chinese_PRC_CI_AS NOT NULL,email varchar(20) CO
25、LLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (employeeNo ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFF2、 会员Member表的建立USE ShopGO/* 对象: Table dbo
26、.Member 脚本日期: 06/18/2013 21:04:01 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Member(memberNo char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,memPassword char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,memName varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,sex char(2
27、) COLLATE Chinese_PRC_CI_AS NOT NULL,birthday datetime NOT NULL,telephone varchar(15) COLLATE Chinese_PRC_CI_AS NOT NULL,email varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,address varchar(40) COLLATE Chinese_PRC_CI_AS NOT NULL,zipCode char(6) COLLATE Chinese_PRC_CI_AS NOT NULL,unit varchar(20) COL
28、LATE Chinese_PRC_CI_AS NOT NULL,totalAmount numeric(18, 0) NOT NULL,memLevel char(1) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Member PRIMARY KEY CLUSTERED (memberNo ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON
29、 PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFFGOALTER TABLE dbo.Member WITH CHECK ADD CONSTRAINT FK_Member_MemClass FOREIGN KEY(memLevel)REFERENCES dbo.MemClass (memLevel)GOALTER TABLE dbo.Member CHECK CONSTRAINT FK_Member_MemClass3、 会员等级MemClass表的建立USE ShopGO/* 对象: Table dbo.MemClass 脚本日期: 06/18/2013 2
30、1:05:14 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.MemClass(memLevel char(1) COLLATE Chinese_PRC_CI_AS NOT NULL,levelSum numeric(18, 0) NOT NULL,memDiscount float NOT NULL, CONSTRAINT PK_MemClass PRIMARY KEY CLUSTERED (memLevel ASC)WITH (PAD_INDEX = OFF, STA
31、TISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFF4、 图书Book表的建立GO/* 对象: Table dbo.Book 脚本日期: 06/18/2013 21:13:32 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Book(ISBN char
32、(17) COLLATE Chinese_PRC_CI_AS NOT NULL,bookTitle varchar(30) COLLATE Chinese_PRC_CI_AS NOT NULL,author varchar(40) COLLATE Chinese_PRC_CI_AS NOT NULL,publishDate datetime NOT NULL,version int NOT NULL,category varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,stockNumber int NOT NULL,price numeric(18,
33、 0) NOT NULL,bookDiscount float NOT NULL,introduction varchar(500) COLLATE Chinese_PRC_CI_AS NOT NULL,catalog varchar(500) COLLATE Chinese_PRC_CI_AS NOT NULL,pressNo char(12) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Book PRIMARY KEY CLUSTERED (ISBN ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORE
34、COMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFFGOALTER TABLE dbo.Book WITH CHECK ADD CONSTRAINT FK_Book_Press FOREIGN KEY(pressNo)REFERENCES dbo.Press (pressNo)GOALTER TABLE dbo.Book CHECK CONSTRAINT FK_Book_Press5、 出版社Pr
35、ess表的建立USE ShopGO/* 对象: Table dbo.Press 脚本日期: 06/18/2013 21:14:41 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Press(pressNo char(12) COLLATE Chinese_PRC_CI_AS NOT NULL,pressTitle varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,address varchar(40) COLLATE Chine
36、se_PRC_CI_AS NOT NULL,zipCode char(6) COLLATE Chinese_PRC_CI_AS NOT NULL,contactPerson varchar(12) COLLATE Chinese_PRC_CI_AS NOT NULL,telephone varchar(15) COLLATE Chinese_PRC_CI_AS NOT NULL,fax varchar(15) COLLATE Chinese_PRC_CI_AS NOT NULL,email varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL, CONS
37、TRAINT PK_Press PRIMARY KEY CLUSTERED (pressNo ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFF6、 配送公司Company表的建立USE ShopGO/* 对象: Table dbo.Company 脚本日期: 06/18/2013 21:22:28 */SET
38、ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Company(companyNo char(12) COLLATE Chinese_PRC_CI_AS NOT NULL,companyTitle varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,address varchar(40) COLLATE Chinese_PRC_CI_AS NOT NULL,zipCode char(6) COLLATE Chinese_PRC_CI_AS NO
39、T NULL,contactPerson varchar(12) COLLATE Chinese_PRC_CI_AS NOT NULL,telephone varchar(15) COLLATE Chinese_PRC_CI_AS NOT NULL,fax varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL,email varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Company PRIMARY KEY CLUSTERED (companyNo ASC)WITH (PAD_I
40、NDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARYGOSET ANSI_PADDING OFF7、 留言Message表的建立USE ShopGO/* 对象: Table dbo.Message 脚本日期: 06/18/2013 21:25:44 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE dbo.Message(messageNo char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,memberNo char(10) COLLATE Chinese_PRC_CI_AS NOT NULL,releaseDate datetime NOT NULL,messageContent varchar(100) COLLATE Chinese_PRC_CI_AS NOT NULL, CONSTRAINT PK_Message PRIMARY KEY CLUSTERED (messa