网上书店系统可行性分析报告
1. 可行性分析
? 经济可行性
⑴ 图书发行量不断增大
2009年底,新闻出版署公布了《2009年全国新闻出版业基本情况》,其中指出,2009年全国共出版图书301719种,其中新版图书168296种,重版、重印图书133423种,与上年相比图书品种增长10.07%,新版图书品种增长12.97%,重版、重印图书品种增长6.61%,总印张增长0.78%,定价总金额增长5.68%。图书发行量不断增加实际上是读者对图书的需求不断扩大的反映。
⑵ 书店增多,售书网点普及
普通书店的发展是大家有目共睹的,尤其在城市,除了新华书店,各种国有、私营、个体的书店比比皆是,综合书店、专业书店、精品书店、工具书店、电子书店应有尽有。书店规模也越办越大,如北京图书大厦、北京海淀图书城、上海图书城等等。此外,还有国外图书业巨头的介入,如贝塔斯曼。这些国外公司的加入,不仅带来了更多的图书,还引入了诸如会员制这样的图书营销新理念,图书市场一片繁荣。在这种情况下,网上书店的加入无疑将使得竞争更加激烈,但从另一个方面看,只有在这种激烈的竞争下,网上书店的优势才能得以体现。
? 技术可行性
⑴ 在网络技术方面,早期用于电子商务的网络多为较封闭的,现在的网络使用Internet技术来构建,为电子商务的发展提供了一个统一的平台。
⑵ 在软件方面,以IBM、HP为首的众多IT厂商纷纷推出自己的电子商务产品,有的还提出了“一揽子解决方案”。对于人们最关心的支付与安全问题,也提出了一些相应的解决方案,例如各种卡的技术,如信用卡、电子现金卡等;各种安全技术,如防火墙、时间戳业务、公钥证书认证等。
⑶ 在硬件方面,企业或商家构建服务器有非常宽广的可选择面,因此,国内计算机和网络发展非常迅猛。虽然,中国的网络基础比较薄弱,但据中国互联网络信息中心2011年最新统计数据表明,截止到2010年底,我国上网用户已经突破4.5亿人,达到4.57亿人,较2009年底增加7330万人;互联网普及率攀升至34.3%,较2009年提高5.4个百分比。这是中国计算机网络发展的现实,也是发展电子商务、经营网上书店的基础。
2. 需求分析
网上书店的主要功能和数据需求包括: (1) 注册管理
? 会员注册 ? 职员注册 (2) 图书管理
? 增加图书信息
? 图书信息查询
? 图书信息更新及删除 (3) 在线订书 (4) 订单管理
? 订单查询
? 订单取消及更新 ? 订单受理 (5) 配送管理 (6) 出版社管理 (7) 配送公司管理 (8) 留言管理
? 发布留言 ? 回复留言 (9) 用户管理
? 会员升级 ? 会员信息维护 ? 职员信息维护
网上书店的业务规则包括:
(1) 所有用户均可搜索图书信息,但只有注册会员才能在网上提交订单;只有
注册职员才能维护图书信息及受理订单。
(2) 每位会员由会员编号唯一标识,会员编号由系统按时间顺序生成。 (3) 每位职员由职员编号唯一标识,职员编号由系统按时间顺序生成。 (4) 当普通会员购书总额达到1000元,即升级为三级VIP会员,享受售价9.5
折优惠;购书总额达到2000元,升级为二级VIP会员,享受售价9折优惠;购书总额达到3500元,升级为一级VIP会员,享受售价8.5折优惠。
(5) ISBN是图书的唯一标识。系统需记录每种图书的当前库存数量,当库存
量低于某一值时,则通知补货。
(6) 选购的图书必须放入购物车后才能生成订单。 (7) 每个订单用订单编号唯一标识。订单编号由系统按时间顺序生成,后提交
的订单有更大的订单号。
(8) 订单需记录当前状态,包括未审核、退回、已审核和已处理结束等状态。 (9) 同一订单可购多种图书,且订购数量可以不同。因此,一张订单可包括多
个数目明细,包括ISBN、图书名称、订购数量、订购价格。订单中的每种图书需记录其状态,包括未送货、已送货和已送到等状态。 (10) 订单受理前允许会员删除所选图书,修改购书数量、配送信息和发票单位,
甚至取消订单。但是订单审核通过之后,则不允许再做任何修改。 (11) 订单中的图书采取先到先发货的原则。若一订单中的图书未同时有货,可
拆分成不同配送单发货;但是,一订单中的某种图书只有库存有足够存书时才能安排配送。
(12) 配送单由配送单编号标识。每个订单的配送单编号由订单编号加上系统按
时间顺序生成的流水号组成。
(13) 每张配送单对应一张发票。发票用发票实际编号唯一标识。 (14) 当订单中的某种图书送到后,则更新该书的状态为“已送到”。当订单内
全部图书状态为“已送到”时,则更新该订单状态为“已处理结束”。 (15) 一种图书只由一个出版社出版,而一个出版社可出版多种图书。 (16) 一个会员可发表多条留言,一个职员可回复多条留言。
网上书店的主要业务流程
开始 会员登录 选择图书 放入购物N 选购结束? Y 填写配送信息 选择支付方式 在线支付 N Y 财务结算 订单生成 结束 订单生成 数据流图
开始 职员登陆 有订单? N Y 订单审核 退回 N 正确? Y 发票生成 配送单生结束 订单受理
库存 顾客 订单 处理订单 管理员 书籍
3. 确定实体集及属性
(1) 职员(Employee)实体集。其属性有:职员编号(employeeNo)、登录密码(empPassword)、姓名(empName)、性别(sex)、出生年月(birthday)、部门(department)、职务(title)、薪水(salary)、住址(address)、电话(telephone)和电子邮箱(email)等,其E-R图如下:
empPassword empName address sex employeeNo Employee birthday department salary email telephone title
(2) 会员(Menber)实体集。其属性有:会员编号(memberNo)、登录密码(memPassword)、姓名(memName)、性别(sex)、出生年月(birthday)、电话(telephone)、电子邮箱(email)、邮编(zipCode)、购书总额(totalAmount)、会员等级(memLevel)和享受折扣(discount)等,其E-R图如下:
mempassWord menName sex address birthday Member memberNo telephone email discount memLevel totalAmount zipCode
(3) 图书(Book)实体集。其属性有:书号(ISBN)、书名(bookTitle)、作者(author)、出版年份(publishYear)、版次(version)、类别(category)、库存数量(stockNumber)、单价(price)、售价(salePrice)、内容简介(introduction)和目录(catalog),其E-R图如下:
bookTitle author catalog stockNumber Book version publishYear ISBN introduction catagory salePrice price
(4) 出版社(Press)实体集。其属性有:出版社编号(pressNo)、出版社名称(pressTitle)、地址(address)、邮编(zipCode)、联系人(contactPerson)、联系电话(telephone)、传真(fax)和电子邮箱(email)等,其E-R图如下:
pressNo pressTitle address fax Press zipCode telephone email contactPerson
(5) 配送公司(Company)实体集。其属性有:公司编号(companyNo)、公司名称(companyTitle)、公司地址(address)、邮编(zipCode)、联系人(contactPerson)、电话(telephone)、传真(fax)和电子邮箱(email)等,其E-R图如下:
companyNo companyTitle contactPerson fax Company zipCode telephone address email
(6) 留言(Message)实体集。其属性有:留言编号(messageNo)、内容(messagecontent)和发布时间(releaseDate)等,其E-R图如下:
messageContmessageNo releaseDate Message
(7) 发票(Invoice)实体集。其属性有:发票号(invoiceNo)、发票单位(invoiceUnit)和发票总金额(invoiceSum)等,其E-R图如下:
invoiceNo invoiceUnit invoiceSum Invoice
4. 确定实体集及E—R图
根据以上的实体集,可确定如下联系集:
会员和图书之间的“订书(Order)”联系集。它是一个多对多联系,其描述属性有:订单号(orderNo)、订书日期(orderDate)、订购数量(quantity)、订书总金额(orderMoney)、订单状态(orderState)、收货人(receiver)、送货地址(shipAddress)、邮政编码(zipCode)、联系电话(shipTel)、付款方式(payWay)、是否付款(payFlag)和发票单位(invoiceUnit)等。
配送公司与图书之间的“配送(Ship)”联系集。它是多对多联系,其描述性属性有:配送单号(shipNo)和配送日期(shipDate)等。
出版社与图书之间的“供应(Supply)”联系集。它是一对多联系。
会员与留言之间的“发布(Release)”联系集。它是一对多i,其描述性属性是:发布日期(releaseDate)。
职员与留言之间的“回复(Reply)”联系集。它是一对多联系,其描述性属性有:回复日期(replyDate)和回复内容(replyContent)等。
发票与图书之间的“包含(Include)”联系集。它是多对多联系。
sgipTel orderNo zipCode replyContent replyDate Employee orderDatMessage Release Reply quantity Member orderMoney Order releaseDate orderState Book Include Invoice invoiceUnit Supply Press payWay Ship payFlag shipDate receiver shipAdress Express shipNo 图3.1 网上书店总E-R图
5. 检查是否满足需求
仔细分析图3.1可知,该E-R图存在如下问题:
(1) 会员不能在不同订单里面订购同一种图书; (2) 配送公司不能在不同配送单中配送同一种书; (3) 当一次订购多种图书时,联系集Order中存在大量信息冗余; (4) 未反映配送单对订单的依赖关系; (5) 未反映配送单与发票之间的一对一联系;
因此可以考虑将订单建模为实体集OrderSheet,将配送单建模为依赖于订单的弱实体集ShipSheet。
订单实体集OrderSheet属性克确定为:订单号(orderNo)、订单日期(orderDate)、订单总金额(orderMoney)、收货人(receiver)、送货地址(shipAdress)、邮编(zipCode)、联系电话(shipTel)、付款方式(payWay)、是否付款(payFlag)、订单状态(orderState)和发票单位(invoiceUnit)等,其E-R图如下
orderState orderMoney invoiceUnit orderDate OrderSheet orderNo payWay payFlag Receiver zipCode shipTel shipAdress
配送单弱实体集shipSheet的属性有:配送单号(shipNo)、配送日期(shipDate)等。配送单时依赖于订单编号生成的流水号,不能唯一标识任一配送单,因此shipSheet应建模为弱实体集。其E-R图如下
shipNo shipDate ShipSheet
基于新增实体集,联系集也重新调整如下:
? 图书与订单之间建立多对多联系集Order; ? 会员与订单之间建立一对多联系集Sale; ? 职员与订单之间建立一对多联系集Deal; ? 订单与配送单之间建立标识联系集Have;
? 配送公司与配送单之间建立一对多联系集Take; ? 发票与配送单之间建立一对一联系集Own; ? 配送单与图书之间建立多对多联系集Ship。
修改后,完整的网上书店E-R图如下 replyContent replyDate Press Employee Reply Message Supply bookState Deal releaseDate Release Book Sale OrderSheet Order Member quantity Have orderDate Ship ShipSheet Own Invoice Take Company 6. 逻辑数据库设计
将E-R模型图转化为数据库模式。通常每个实体集对应一个关系表。
职员表Employee 属性名称 employeeNo empPassword empName sex birthday department title 数据类型 char(8) varchar(10) varchar(12) char(1) datetime varchar(30) varchar(10) 属性描述 员工编号 登录密码 员工姓名 员工性别 出生日期 所属部门 职务 薪水 员工住址 员工电话 员工邮箱
Sql源代码:
CREATE DATABASE bookshop on (
name=bookshop,
filename='g:\\数据库课程设计\\bookshop.mdf', size=5, maxsize=10, filegrowth=1 ) log on (
name=bookshoplog,
filename='g:\\数据库课程设计\\bookshoplog.ldf', size=2, maxsize=5, filegrowth=1 )
CREATE TABLE Employee (
employeeNo char(8) PRIMARY KEY , empPassword varchar(10) , empName varchar(12), sex char(1), birthday datetime,
department varchar(30) , title varchar(10), salary numeric, address varchar(40), telephone varchar(20), email varchar(20) );
CREATE TABLE Member (
memberNo char(9) PRIMARY KEY, memPassword varchar(10), memName varchar(12),
sex char(1),
birthday datetime , telephone varchar(15), email varchar(20), address varchar(40), zipCode char(6), totalAmount numeric, memLevel char(1), diacount float, PRIMARY KEY(memberNo) );
CREATE TABLE Book (
ISBN char(17) PRIMARY KEY , bookTitle varchar(30), author varchar(40), publishDate datetime , version int , stockNumber int , price numeric, salePrice numeric, category varchar(20), introduction varchar(500), catalog varchar(500), PressNo char(12) );
CREATE TABLE Press (
pressNo char(12) PRIMARY KEY , pressName varchar(20), address varchar(40) , zipCode char(6),
contactPerson varchar(12), telephone varchar(15), fax varchar(15), email varchar(20) );
CREATE TABLE Message (
messageNo char(10) PRIMARY KEY ,
employeeNo char(8), memberNo char(9), releaDate datetime,
messageContent varchar(100), pelyContent varchar(100), relyDate datetime );
CREATE TABLE OrderSheet (
orderNo char(15) PRIMARY KEY, memberNo char(9), employeeNo char(8), orderMoeny numeric, payWay char(1), payFlag char(1), orderState char(1), invoiceUnit varchar(40), receiver varchar(20), zipCode char(6),
shipaddress varchar(40), shipTel varchar(15) );
CREATE TABLE Sale (
orderNo char(15) PRIMARY KEY, ISBN char(17), quantity int , bookState char(1) );
CREATE TABLE Company (
companyNo char(12) PRIMARY KEY, companyName varchar(20), address varchar(40), zipCode char(6),
contactPerson varchar(12), telephone varchar(15), fax varchar(20), email varchar(20));
CREATE TABLE ShipSheet (
shipNo char(12), orderNo char(15), shipDate datetime, companyNo char(12), invoiceNo char(10) );
CREATE TABLE Ship (
shipNo char(3), orderNo char(15), ISBN char(17) );
CREATE TABLE Invoice (
invoiceNo char(10) PRIMARY KEY, invoiceUnit varchar(40), invoiceSum numeric );