网上图书销售系统分析与设计1.项目背景跟着Internet的兴起,收集已经成为当代人糊口中的一部分,越来越多的人喜欢在网上生意。本系统便是一个基于B/S模式的收集化的图书发卖打点系统,授与的是ASP.NET妙技,实现了用户注册信息打点、用户信息打点、图书发卖点打点、图手札息打点、客户订单打点、购物信息打点,库存打点,动静打点等模块。通过测试,根基实现了这个集成书籍打点、网上定购等功效于一体的图书发卖打点系统。在Internet上通过它用户可以打破时刻和空间的限定来实现网上购书,有效地收缩了图书通顺发行枢纽,将泛博读者、图书、出版者、发行者严密地联络在一路,年夜年夜提高了图书通顺率。它有着策划本钱低、库存是假造的、用户检索便利、地域限定少等特点。2.系统功能结构根据网上图书销售系统的特点,可以将其分为订购人信息管理模块,书籍信息管理模块,供应商信息管理模块,管理者信息管理模块和付款接收银行管理模块5个部分,其中各部分及其包括的具体功能如图1所示。图1网上图书销售系统功能结构图3.数据库设计(1)概念结构设计根据网上图书销售系统分析和设计,确定数据库的实体主要有管理员、书、仓库、供应商、订单、客户、银行等,各实体之间的管理系统如图2所示。借阅信息维护网上图书销售系统订购人信息管理模块书籍信息管理模块供应商信息管理模块管理者信息管理模块付款接收银行管理模块订购人信息订购人信息维护书籍信息书籍信息维护供应商供应情况管理者信息管理者信息维护银行管理表管理表维护图2网上图书销售系统E-R图(2)表设计经过E-R向关系模型转化并进行范式优化后,得到如下的数据库表设计,如表1-8,图3_1-3_3所示。表1管理员字段名称数据类型长度备注管理员IDchar10主键姓名varchar6notnull登录密码char10notnull表2书字段名称数据类型长度备注书号char8主键管理员书客户银行订单供应商管理订单生成包含供应付款管理员ID姓名登录密码客户ID客户名联系地址密码电话邮编银行编号电话厂号地址负责人名称订单状态数目定价作者书名书号出版社订购日期出版日期订单号总数付款日期付款数书籍简介书籍类型期电话管理包含仓库库存量ian厂名联系人地址作者varchar6notnull出版社char10notnull书籍类型char8notnull书籍介绍varchar40notnull出版日期datetime默认定价int4notnull管理员IDchar10外键表3供应商字段名数据类型长度备注厂号char4主键厂名varchar20notnull联系人varchar6notnull电话char11notnull地址char20notnull表4客户字段名数据类型长度备注客户IDchar10主键客户名varchar6notnull密码char10notnull电话char11notnull联系地址char20notnull邮编char6notnull表5订单字段名数据类型长度备注订单号char4主键订单状态char3notnull订购日期datetime默认notnull付款数int4notnull付款日期datetime默认客户IDchar10外键银行编号char10外键表6银行字段名数据类型长度备注银行编号char10主键名称varchar20notnull负责人varchar6notnull电话char11notnull地址char20notnull表7订书字段名类型长度备注IDint4主键,标识订单号char4外键书号char8外键数目int4notnull表8供应字段名类型长度备注IDint4主键,标识书号char8外键厂号char4外键总数int4notnull表9仓库字段名类型长度备注IDint4主键,标识书号char8外键库存量int4notnull管理员IDchar10外键(表设计)图3_1书(表设计)图3_2订单(表设计)图3_3银行(3)视图设计视图功能:使用查询分析器在网上图书销售系统数据库中建立一个有客户名,书名,订购日期,数目的客户购书情况的视图客户购书情况。视图定义,如图4_1所示:createview客户购书情况ASselecttop100percent客户名,书名,订购日期,数目from客户,订单,订书,书where客户.客户ID=订单.客户IDand订单.订单号=订书.订单号and订书.书号=书.书号orderby客户名(视图)4_1客户购书情况视图功能:使用查询分析器在网上图书销售系统数据库中建立一个有客户名,订单号,订单状态,订购日期,付款数,付款日期,银行编号的客户订单情况的视图客户订单信息。视图定义,如图4_2所示:createview客户订单信息ASselecttop100percent客户名,订单号,订单状态,订购日期,付款数,付款日期,银行编号from客户,订单where客户.客户ID=订单.客户IDorderby客户名(视图)4_2客户订单信息视图功能:使用查询分析器在网上图书销售系统数据库中建立一个有书名,厂名,总数的图书供应情况的视图图书供应情况查询。视图定义,如图4_3所示:createview图书供应情况查询ASselecttop100percent书名,厂名,总数from书,供应,供应商where供应商.厂号=供应.厂号and供应.书号=书.书号orderby书名(视图)4_3图书供应情况查询(4)默认约束规则外键约束定义:建立书表和供应表之间的参照关系,如图5_1_1所示(外键约束)图5_1_1外键约束定义:建立订单表和客户表之间的参照关系,如图5_1_2所示(外键约束)图5_1_2外键约束定义:建立订单表和银行表之间的参照关系,如图5_1_3所示(外键约束)图5_1_3Check约束定义:设置书表中的数目字段取值在0-1000之间,如图5_2_1所示(Check约束)图5_2_1Check约束定义:设置订单表中的付款数字段取值在0-10000之间,如图5_2_2所示(Check约束)图5_2_2Check约束定义:设置订单表中的订单状态字段的值为‘完成’或‘未完成’,如图5_2_3所示(Check约束)图5_2_3Default约束定义:设置订单表中的订单状态默认值为‘未完成’,如图5_3_1所示(Default约束)图5_3_1Default约束定义:设置订单表中的付款数默认值为0,如图5_3_2所示(Default约束)图5_3_2Default约束定义:设置管理员表中的登录密码默认值为‘123456’,如图5_3_3所示(Default约束)图5_3_3(5)存储过程设计存储过程功能:用CREATEPROCEDURE语句创建存储过程图书价格查询,要求根据书的书号返回书名和定价。存储过程定义,如图6_1所示:/*createprocedure图书价格查询@书号char(8),@书名varchar(20)output,@定价intoutputASifexists(select*from书where书号=@书号)select@书名=书名,@定价=定价from书where书号=@书号elseprint'没有这本书!'*/declare@书名varchar(20),@定价intexecute图书信息查询'0012',@书名output,@定价outputselect书名=@书名,定价=@定价(存储过程)图6_1图书价格查询存储过程功能:用CREATEPROCEDURE语句创建存储过程订单人查询,要求根据订单号返回订单人姓名和联系电话。存储过程定义,如图6_2所示:/*createprocedure订单人查询@订单号char(4),@客户名varchar(6)output,@电话char(11)outputASifexists(select*from订单where订单号=@订单号)select@客户名=客户名,@电话=电话from客户,订单where订单号=@订单号and订单.客户ID=客户.客户IDelseprint'没有这个订单!'*/declare@客户名varchar(6),@电话char(11)execute订单人查询'0001',@客户名output,@电话outputselect订单人=@客户名,联系电话=@电话(存储过程)图6_2订单人查询存储过程功能:用CREATEPROCEDURE语句创建存储过程图书库存量查询,要求输入书号,返回书名和库存量情况。存储过程定义,如图6_3所示:/*createprocedure图书库存量查询@书号char(8),@书名varchar(20)output,@库存量intoutputASifexists(select*from仓库where书号=@书号)select@书名=书名,@库存量=库存量from书,仓库where仓库.书号=@书号and书.书号=仓库.书号elseprint'仓库里没有这本书!'*/declare@书名varchar(20),@库存量intexecute图书库存量查询'0022',@书名output,@库存量outputselect书名=@书名,库存量=@库存量(存储过程)图6_3图书库存量查询(6)触发器设计触发器功能:使用T-SQL的CREATETRIGGER语句在网上图书销售系统数据库的书表上创建一个更新触发器书作者修改提醒,当在书表中更新作者姓名时,激活该触发器,显示被更改书的作者的更变信息。触发器定义如图7_1所示。/*createtrigger书作者修改提醒on书forupdateasifupdate(作者)begindeclare@书名char(8),@旧作者char(6),@新作者char(6)declare@msgchar(50)select@书名=书名,@旧作者=作者fromdeletedselect@新作者=作者frominsertedset@msg='《'+@书名+'》'+'的作者'+@旧作者+'被更名为'+@新作者print@msgend*/update书set作者='王明'where书号='0011'(触发器)图7_1书作者修改提醒触发器功能:使用T-SQL的CREATETRIGGER语句在网上图书销售系统数据库的书表上创建一个更新触发器图书库存更新,当在供应表中增加了一条记录时,激活该触发器,更新仓库表里的对应记录,并显示相关信息。触发器定义如图7_2所示。/*createtrigger图书库存更新on供应forinsertasbegindeclare@总数int,@书号char(8),@书名varchar(20),@库存量intselect@总数=总数,@书号=书号frominsertedselect@书名=书名from书where书号=@书号update仓库set库存量=库存量+@总数where书号=@书号select@库存量=库存量from仓库where书号=@书号declare@msgchar(50)set@msg='新入库《'+@书名+'》'+cast(@总数asvarchar)+'本,目前库存量为'+cast(@库存量asvarchar)+'本'print@msgend*/insertinto供应values('0012','2',200)(触发器)图7_1图书库存更新触发器功能:使用T-SQL的CREATETRIGGER语句在网上图书销售系统数据库的书表上创建一个更新触发器新增图书入库,当在书表中增加了一条记录时,激活该触发器,在仓库表中新增一条记录,把新书自动更新入库,并显示相关信息。触发器定义如图7_3所示。/*createtrigger新增图书入库on书forinsertasbegindeclare@书号char(8),@书名varchar(20),@管理员IDchar(10)select@书名=书名,@书号=书号,@管理员ID=管理员IDfrominsertedinsertinto仓库values(@书号,0,@管理员ID)declare@msgcha