ImageVerifierCode 换一换
格式:DOCX , 页数:78 ,大小:1.12MB ,
资源ID:11625664      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11625664.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(网上书店需求设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

网上书店需求设计.docx

1、网上书店需求设计网上书店教案 电子商务,是指在Internet上进行商务活动.具体是指利用各种电子工具和网络,高效率、低成本地从事以商品交换为中心的各种商业贸易活动.电子商务的一个重要技术特征是利用Web技术来传输和处理商业信息,因此有人称:电子商务=Web+IT.本章将开发一个典型的电子商务系统:网上书店.1、系统目标 书籍被认为是最适合在Internet上销售的商品之一,这主要是因为购书的金额比较少,也不用像买衣服那样需要货比三家,用户坐在家中就可以查询到需要的书籍,并决定是否需要购买.1.11用户行为分析在实现系统之前,首先需要站在用户的角度上进行行为分析,进而确定系统的目标.网络用户在

2、使用电子商务选购图书时,其典型行为如图1.1所示.图1.1 用户购书流程1.1系统目标在用户行为分析的基础上,下一步确定本系统所要实现的基本功能,如下。图书查询、浏览功能用户购买图书功能用户购物篮管理功能会员管理功能 另外,除了站在用户的角度上,系统还将以管理者的身份来考虑系统的功能,完成以下功能.图书管理功能图书销量统计功能2、系统预览 在开发系统之前,为了给读者一个直观的印象,首先以一个用户的身份,来展现如何使用这个系统,去购买心仪的图书.1.21浏览、查询图书 就像进入一个普通的书店一样,当进入网上书店后,无需登录,就可以浏览图书.而电子书店还可以提供一个更好的功能:即通过图书名称、类别

3、等信息从浩瀚的书海中迅速找到喜欢的书,如图1.2所示.图1.2 浏览、查阅图书1.22查看图书详细信息 通过图书列表找到中意的图书之后,就像逛普通的书店一样,可以查看其详细信息,这可以通过单击图中的详细信息超级链接来查看,如图1.3所示.图1.3查看图书详细信息 单击返回按钮,便可以重新回到浏览、查询图书页面.1.23购买图书 在确定了想要购买的图书之后,可以通过图书前面的复选框将其选中,并可设置所要购买的数量,然后通过浏览数量页面的放入购物篮实现购买,如图所示. 如果在没有做任何选择之前就单击放入购物篮按钮,系统则会给出警告信息,如图1.5所示.图9.4 将图书放入购物篮图9.5 未选择图片

4、警告1.24用户登录、注册在用户购买图书时,系统将判断其是否已经登录,如果没有,则转向登录页面,如图1.6所示.在登录后,系统还将转向原来用户浏览的页面. 图1.6登录系统1.25购物篮管理 用户登录之后,就可以把图书放入购物篮中了.通过页面上方的我的购物篮链接,可以对购物篮进行管理,包括修改所购图书数量、删除图书等,如图1.7所示.图1.7购物篮管理单击继续选购按钮可以回到图书列表,而单击去结算中心则将跳转到网络支付模块.网络支付模块涉及到多个方面的协作,如图1.8所示,电子商务系统的开发者可以直接使用银行或者认证机构发行的支付模块,而不必单独开发.因此,本书对网上支付模块也将不作详细的介绍

5、. 图1.8网络支付流程1.26图书信息管理 上面的几个步骤,是站在用户的角度上,完成了购买图书的步骤.另外,系统将站在系统管理者的角度,实现图书管理功能. 通过系统菜单的添加图书链接,将跳转到添加图书页面,如图9.9所示.在添加图书时,将进行数据检查,如果输入的数据不满足要求(包括是否必填,以及数据类型是否正确),则给出提示.图9.9添加图书信息另外,添加图书还具有上传图片的功能,通过页面中的浏览按钮,可以选择所要上传的图片,如图9.10所示.图1.10 选择图书上传图片 为图书上传图片后,在查看图书的详细信息时,将会出现这副图片.1.27图书销售统计 作为商家,系统管理者自然非常关心图书的

6、销量统计,了解哪一类的图书是畅销的.本系统实现了图书销量统计功能,并用饼状图的形式直观地显示出来,如图1.11所示. 通过统计方式下拉框,可以 选择根据哪 一项指标进行统计. 图1.11图书销量统计 1.28工程文件一览 整个工程实现后的文件列表以及层次结构,如图1.12所示;命名空间以及各个空间中的类层次结构,如图1.13所示.图1.12 MyBookShop多层体系结构图9.13 MyBookShop 工程文件以及命名空间三 数据库设计下面介绍网上书店系统的数据库设计.1.31设计数据库网上书店数据库(MyBookShop)数据表模式如图1.14所示.图1.14 MyBookShop 数据

7、库模式 包含的数据表如下.(1)【用户表】(用户编号,登录名,用户姓名,口令.联系地址,邮政编码)(2)【图书表】(图书编号,图书名,类别号,单价,出版社,出版日期,作者,页数,图片路径,简介,销售量)(3)【图书分类表】(类别编号,类别名)(4)【购物篮表】(购物篮编号,购买者编号,图书编号,图书数量) 其中,用下划线标出的属性为表的主键属性.各个表的模式如表1.1-1.4所示.表1.1 User(用户)表字段名数据类型备注UserIdInt IDENTITY(11)NOT NULL用户ID,自动增加,主键LoginNameVarchar(50)NOT NULL用户登录名UserNameVa

8、rchar(50)NOT NULL用户姓名PasswordVarchar(50)NOT NULL用户密码AddressVarchar(100)NULL用户地址Zipchar(10)用户邮编 表1.2 Book(图书)表字段名数据类型备注BookIdInt IDENTITY(11)NOT NULL图书ID,自动增加,主键BookNameVarchar(50)NOT NULL图书名CategoryIDint图书类别编号Pricefloat图书价格PublisherVarchar(100)出版社PublishDatedatetime出版日期AuthorVarchar(50)作者PageNumint页

9、数PictureUrlVarchar(50)图片名Descriptiontext简介SaleCountint销售量表1.3 Category(图书类别)表字段名数据类型备注CategoryIDInt IDENTITY(11)NOT NULL类别编号,自动增加,主键CategoryNameVarchar(50)类别名 表1.4 Cart(购物篮)表字段名数据类型备注CartIdInt IDENTITY(11)NOT NULL购物篮ID,自动增加,主键UserIdInt用户编号BookIdInt图书编号AmountInt购买数量1.32实现数据库 下面给出数据库实现的SQL命令(在SQL Serv

10、er2005中执行通过).(1)创建User表CREATE TABLE dbo.User ( UserId int IDENTITY (1, 1) NOT NULL , LoginName varchar (50) COLLATE Chinese_PRC_CI_AS NULL , UserName varchar (50) COLLATE Chinese_PRC_CI_AS NULL , Password varchar (50) COLLATE Chinese_PRC_CI_AS NULL , Address varchar (100) COLLATE Chinese_PRC_CI_AS N

11、ULL , Zip char (10) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY(2)创建Book表CREATE TABLE dbo.Book ( BookId int IDENTITY (1, 1) NOT NULL , BookName varchar (50) COLLATE Chinese_PRC_CI_AS NULL , CategoryID int NULL , Price float NULL , Publisher varchar (100) COLLATE Chinese_PRC_CI_AS NULL , PublishDate

12、datetime NULL , Author varchar (50) COLLATE Chinese_PRC_CI_AS NULL , PageNum int NULL , PictureUrl varchar (50) COLLATE Chinese_PRC_CI_AS NULL , Description text COLLATE Chinese_PRC_CI_AS NULL , SaleCount int NULL ) ON PRIMARY TEXTIMAGE_ON PRIMARY(3)创建Category表CREATE TABLE dbo.Category ( CategoryID

13、int IDENTITY (1, 1) NOT NULL , CategoryName varchar (50) COLLATE Chinese_PRC_CI_AS NULL ) ON PRIMARY初始化一些图书种类数据Insert Into Category(CategoryName) Values (中外文学)Insert Into Category(CategoryName) Values (政治经济)Insert Into Category(CategoryName) Values (学术名著)Insert Into Category(CategoryName) Values (IT

14、技术)(4)创建Cart表CREATE TABLE dbo.Cart ( CartId int IDENTITY (1, 1) NOT NULL , UserId int NULL , BookId int NULL , Amount int NULL ) ON PRIMARY四 数据访问层 同上一章介绍的聊天室的数据访问层类似,本系统只包括一个类Database,但本节给出的类增加了更多的方法,可以完成更强大的数据操作功能.1.41配置数据库连接 本例中,在Web.config文件中指定了数据库连接字符串配置信息,具体实现为,在Web.config文件中添加如下代码: 1.42数据库类实现

15、Database类的类图如图1.15所示.图1.15 Database 类图 五 数据访问接口层 数据访问接口层(DataAccessHelper),包括两个类:GetSafeData和SqlStringFormat.这两个类分别能够完成获取安全数据和构造SQL语句的功能.1.51获取安全数据 GetSafeData类包含一系列从DataRow和SqlDataReader对象中安全获取数据的静态方法,具体如图1.16所示.图1.16 GetSafeData 类的类图 其中,从DataRow中获取安全数据的4个方法ValidateDataRow_*同前面相似,不作重述.从SqlDataReade

16、r中获取安全数据的4个方法ValidateDataReader_*功能如表1.5所示表1.5 GetSafeData类的ValidateDataReader_*方法说明属性/方法功能说明ValidateDataReader_S从SqlDataReader当前行获取字符串,数据为空返回System.String.Empty对象ValidateDataReader_N从SqlDataReader当前行获取整数,数据为空返回System.Int32.MinValue对象ValidateDataReader_F从SqlDataReader当前行获取浮点数,数据为空返回System.Double.Min

17、ValueValidateDataReader_T从SqlDataReader当前行获取时间,数据为空返回System.DateTime.MinValue因为这4个方法的实现非常类似,不必一一重复介绍.下面,就以ValidateDataRow_S为例,说明其实现过程.代码1-1 ValidateDataReader_S:DataAccessHelperGetSafeData.cs/ / 从SqlDataReader中安全获取数据/ / 数据读取器SqlDataReader/ 列名/ 列中的字符串数据,如果为空,则返回System.String.Emptypublic static string

18、ValidateDataReader_S(SqlDataReader reader,string colname)if(reader.GetValue(reader.GetOrdinal(colname)!=DBNull.Value)return reader.GetString(reader.GetOrdinal(colname);elsereturn System.String.Empty;第11行利用了SqlDateReader的两个方法.(1)GetOrdinal:根据SqlDataReader中的列名获取列索引.(2)GetValue:根据列的索引获取SqlDataReader当前行

19、中的数据. 获取了数据之后,利用DBNull类来判断数据源中的数据是否为空,如果不为空,则返回字符串类型的数据;否则,就返回System.String.Empty对象.1.52构造SQL语句 SqlStringConstructor类具有两个方法,如图1.17所示.图 1.17 SqlStringConstructor类图(1)GetQuotedString:将字符串加上SQL语句中常用的单引号“”。(2)GetConditionClause:构造SQL语句中的条件子句,这个方法接收一个哈希参数,利用哈希表中的每一项都是一个DictionaryEntry对象的对的特征,构造SQL语句中的条件子

20、句。GetConditionClause方法的实现流程如图1.18所示。图1.18 SqlStringConstructor.GetConditionClause 方法流程实现代码如下。 代码1-2 GetConditionClause:DataAccessHelperSqlStringFormat.cs1./ 2. / 根据条件哈希表,构造SQL语句中的条件子句3. / 4. / 条件哈希表5. / 条件子句6. public static String GetConditionClause(Hashtable queryItems)7. 8. 9. int Count = 0;10 Str

21、ing Where = ;1112 /根据哈希表,循环生成条件子句13 foreach(DictionaryEntry item in queryItems)14 15 if (Count = 0)16 Where = Where ;17 else18 Where += And ;1920 /根据查询列的数据类型,决定是否加单引号21 if(item.Value.GetType().ToString()=System.String | item.Value.GetType().ToString()=System.DateTime)22 23 Where += + item.Key.ToStri

22、ng() + 24 + Like 25 +SqlStringConstructor.GetQuotedString(%26 + item.Value.ToString()27 + %);28 29 else30 31 Where += + item.Key.ToString() + + = + item.Value.ToString();32 33 Count +;34 35 return Where;36 第1334行循环读取哈希表中的每一项,生成WHERE 子句。1518行,利用计数变量Count.判断所处理的项是否是第一项,如果是,则构造WHERE子句的开头“WHERE”,否则,构造多个

23、“与”查询的“And关键字。 第2032行构造单个查询条件,并根据查询列的数据类型,来判断是否应该用单引号将其括起来。本例中,使用了模糊查询关键字”Like”,以及通过配符“%”。第35行返回构造的WHERE子句。下面给出一个具体的示例,直观说明该方法的功能。假设方法输入的查询哈希表如表9.6所示。表9.6 查询Hashtable示例keyvalueBookName红楼Publisher人民文学出版社CategoryId1.则方法的输入将为WHERE子句,如下。Where BookName Like %红楼梦%And Publisher Like %人民文学出版社%And CategoryId

24、=1利用这个方法,将很容易地根据页面上用户的输入,查询出满足条件的数据,读者将在Book类的Query方法、以及Book List页面的查询功能中体会到这一点。6、业务逻辑层业务逻辑层(BusinessLogicLayer)包括User类、Book类、Category类,以及chart类,下面对其一一介绍。1.61用户类 User用户类模拟了一个电子书店的客户,位于MyBookShop.BussinessLogicLayer空间中,其类图如图1.19所示。 图1.19 User类的类图1.62图书类Book1.Book类的功能Book 类的模拟了图书对象,位于MyBookShop.Bussin

25、essLogicLayer空间中,类图如图1.20所示。其中,各个属性的含义与数据表Book中的含义相似。不再介绍,方法的说明如表1.7所示。图1.20 Book类的类图表1.7 Book类的成员说明属性/方法功能说明Add将一个图书信息添加到数据库中Update修改图书的内容Delete删除掉图书LoadData根据图书编号,获取图书的详细信息QuryBooks静态方法,查询满足一定条件的图书GetSaleByCategory静态方法,根据类别查询销售量GetSaleByPrice静态方法,根据价格查询销售量GetSaleByPulisher静态方法,根据出版社查询销售量2.实现Add、Up

26、date、Delete方法 (1) Add方法向数据库添加一本图书,图书信息都放在一个哈希表对象中,利用Database类的Insert方法来实现数据的插入。代码1-3 Boo.Add方法:BussinessLogicLayerBook.cs1 / 2 / 向数据库添加一本图书3 / 4 / 图书信息哈希表5 public void Add(Hashtable bookInfo)6 7 Database db=new Database();/实例化一个Database类8 db.Insert(Book,bookInfo ); /利用Database类的Inser方法,插入数据9 (2) Upd

27、ate 方法同样接受一个哈希表对象,该对象存储了图书新的信息,然后利用Database类的Update方法实现数据的修改。代码1-4 Book.Update方法:BussinessLogicLayerBook.cs1 / 2 / 修改图书内容 3 / 4 / 新的图书信息哈希 5 / Update的Where子句 6 public void Update(Hashtable newBookInfo) 7 8 Database db=new Database(); 9 string condition = Where BookID = +this._bookId; 10 db.Update(Book,newBookInfo,condition); 11 (3) 删除图书则直接利用Database的ExecuteSQL方法即可。代码1-5 Book.Delete 方法:BussinessLogicLayerBook.cs / / 删除图书 / public v

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1