网上书店需求设计.docx

上传人:b****5 文档编号:11625664 上传时间:2023-03-29 格式:DOCX 页数:78 大小:1.12MB
下载 相关 举报
网上书店需求设计.docx_第1页
第1页 / 共78页
网上书店需求设计.docx_第2页
第2页 / 共78页
网上书店需求设计.docx_第3页
第3页 / 共78页
网上书店需求设计.docx_第4页
第4页 / 共78页
网上书店需求设计.docx_第5页
第5页 / 共78页
点击查看更多>>
下载资源
资源描述

网上书店需求设计.docx

《网上书店需求设计.docx》由会员分享,可在线阅读,更多相关《网上书店需求设计.docx(78页珍藏版)》请在冰豆网上搜索。

网上书店需求设计.docx

网上书店需求设计

网上书店教案

电子商务,是指在Internet上进行商务活动.具体是指利用各种电子工具和网络,高效率、低成本地从事以商品交换为中心的各种商业贸易活动.电子商务的一个重要技术特征是利用Web技术来传输和处理商业信息,因此有人称:

电子商务=Web+IT.本章将开发一个典型的电子商务系统:

网上书店.

1、系统目标

书籍被认为是最适合在Internet上销售的商品之一,这主要是因为购书的金额比较少,也不用像买衣服那样需要货比三家,用户坐在家中就可以查询到需要的书籍,并决定是否需要购买.

1.11用户行为分析

在实现系统之前,首先需要站在用户的角度上进行行为分析,进而确定系统的目标.网络用户在使用电子商务选购图书时,其典型行为如图1.1所示.

图1.1用户购书流程

1.1系统目标

在用户行为分析的基础上,下一步确定本系统所要实现的基本功能,如下。

●图书查询、浏览功能

●用户购买图书功能

●用户购物篮管理功能

●会员管理功能

另外,除了站在用户的角度上,系统还将以管理者的身份来考虑系统的功能,完成以下功能.

●图书管理功能

●图书销量统计功能

2、系统预览

在开发系统之前,为了给读者一个直观的印象,首先以一个用户的身份,来展现如何使用这个系统,去购买心仪的图书.

1.21浏览、查询图书

就像进入一个普通的书店一样,当进入网上书店后,无需登录,就可以浏览图书.而电子书店还可以提供一个更好的功能:

即通过图书名称、类别等信息从浩瀚的书海中迅速找到喜欢的书,如图1.2所示.

图1.2浏览、查阅图书

1.22查看图书详细信息

通过图书列表找到中意的图书之后,就像逛普通的书店一样,可以查看其详细信息,这可以通过单击图中的"详细信息"超级链接来查看,如图1.3所示.

图1.3查看图书详细信息

单击"返回"按钮,便可以重新回到浏览、查询图书页面.

1.23购买图书

在确定了想要购买的图书之后,可以通过图书前面的复选框"□"

将其选中,并可设置所要购买的数量,然后通过"浏览数量"页面的"放入购物篮"实现购买,如图所示.

如果在没有做任何选择之前就单击"放入购物篮"按钮,系统则会给出警告信息,如图1.5所示.

 

图9.4将图书放入购物篮

 

图9.5未选择图片警告

1.24用户登录、注册

在用户购买图书时,系统将判断其是否已经登录,如果没有,则转向登录页面,如图1.6所示.在登录后,系统还将转向原来用户浏览的页面.

 

图1.6登录系统

1.25购物篮管理

用户登录之后,就可以把图书放入购物篮中了.通过页面上方的"我的购物篮"链接,可以对购物篮进行管理,包括修改所购图书数量、删除图书等,如图1.7所示.

图1.7购物篮管理

 

单击"继续选购"按钮可以回到图书列表,而单击"去结算中心"则将跳转到网络支付模块.网络支付模块涉及到多个方面的协作,如图1.8所示,电子商务系统的开发者可以直接使用银行或者认证机构发行的支付模块,而不必单独开发.因此,本书对网上支付模块也将不作详细的介绍.

图1.8网络支付流程

1.26图书信息管理

上面的几个步骤,是站在用户的角度上,完成了购买图书的步骤.另外,系统将站在系统管理者的角度,实现图书管理功能.

通过系统菜单的"添加图书"链接,将跳转到添加图书页面,如图9.9所示.在添加图书时,将进行数据检查,如果输入的数据不满足要求(包括是否必填,以及数据类型是否正确),则给出提示.

图9.9添加图书信息

另外,添加图书还具有上传图片的功能,通过页面中的"浏览"按钮,可以选择所要上传的图片,如图9.10所示.

图1.10选择图书上传图片

为图书上传图片后,在查看图书的详细信息时,将会出现这副图片.

1.27图书销售统计

作为商家,系统管理者自然非常关心图书的销量统计,了解哪一类的图书是畅销的.本系统实现了图书销量统计功能,并用饼状图的形式直观地显示出来,如图1.11所示.通过"统计方式"下拉框,可以选择根据哪一项指标进行统计.

图1.11图书销量统计

1.28工程文件一览

整个工程实现后的文件列表以及层次结构,如图1.12所示;命名空间以及各个空间中的类层次结构,如图1.13所示.

图1.12MyBookShop多层体系结构

 

图9.13MyBookShop工程文件以及命名空间

 

三数据库设计

下面介绍网上书店系统的数据库设计.

1.31设计数据库

网上书店数据库(MyBookShop)数据表模式如图1.14所示.

 

图1.14MyBookShop数据库模式

包含的数据表如下.

(1)【用户表】(用户编号,登录名,用户姓名,口令.联系地址,邮政编码)

(2)【图书表】(图书编号,图书名,类别号,单价,出版社,出版日期,作者,页数,图片路径,简介,销售量)

(3)【图书分类表】(类别编号,类别名)

(4)【购物篮表】(购物篮编号,购买者编号,图书编号,图书数量)

其中,用下划线标出的属性为表的主键属性.各个表的模式如表1.1--1.4所示.

表1.1User(用户)表

字段名

数据类型

备注

UserId

IntIDENTITY(11)NOTNULL

用户ID,自动增加,主键

LoginName

Varchar(50)NOTNULL

用户登录名

UserName

Varchar(50)NOTNULL

用户姓名

Password

Varchar(50)NOTNULL

用户密码

Address

Varchar(100)NULL

用户地址

Zip

[char](10)

用户邮编

表1.2Book(图书)表

字段名

数据类型

备注

BookId

IntIDENTITY(11)NOTNULL

图书ID,自动增加,主键

BookName

Varchar(50)NOTNULL

图书名

CategoryID

int

图书类别编号

Price

float

图书价格

Publisher

Varchar(100)

出版社

PublishDate

datetime

出版日期

Author

Varchar(50)

作者

PageNum

int

页数

PictureUrl

Varchar(50)

图片名

Description

text

简介

SaleCount

int

销售量

表1.3Category(图书类别)表

字段名

数据类型

备注

CategoryID

IntIDENTITY(11)NOTNULL

类别编号,自动增加,主键

CategoryName

Varchar(50)

类别名

表1.4Cart(购物篮)表

字段名

数据类型

备注

CartId

IntIDENTITY(11)NOTNULL

购物篮ID,自动增加,主键

UserId

Int

用户编号

BookId

Int

图书编号

Amount

Int

购买数量

1.32实现数据库

下面给出数据库实现的SQL命令(在SQLServer2005中执行通过).

(1)创建User表

CREATETABLE[dbo].[User](

[UserId][int]IDENTITY(1,1)NOTNULL,

[LoginName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[UserName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[Password][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[Address][varchar](100)COLLATEChinese_PRC_CI_ASNULL,

[Zip][char](10)COLLATEChinese_PRC_CI_ASNULL

)ON[PRIMARY]

(2)创建Book表

CREATETABLE[dbo].[Book](

[BookId][int]IDENTITY(1,1)NOTNULL,

[BookName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[CategoryID][int]NULL,

[Price][float]NULL,

[Publisher][varchar](100)COLLATEChinese_PRC_CI_ASNULL,

[PublishDate][datetime]NULL,

[Author][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[PageNum][int]NULL,

[PictureUrl][varchar](50)COLLATEChinese_PRC_CI_ASNULL,

[Description][text]COLLATEChinese_PRC_CI_ASNULL,

[SaleCount][int]NULL

)ON[PRIMARY]TEXTIMAGE_ON[PRIMARY]

(3)创建Category表

CREATETABLE[dbo].[Category](

[CategoryID][int]IDENTITY(1,1)NOTNULL,

[CategoryName][varchar](50)COLLATEChinese_PRC_CI_ASNULL

)ON[PRIMARY]

初始化一些图书种类数据

InsertIntoCategory(CategoryName)Values('中外文学')

InsertIntoCategory(CategoryName)Values('政治经济')

InsertIntoCategory(CategoryName)Values('学术名著')

InsertIntoCategory(CategoryName)Values('IT技术')

(4)创建Cart表

CREATETABLE[dbo].[Cart](

[CartId][int]IDENTITY(1,1)NOTNULL,

[UserId][int]NULL,

[BookId][int]NULL,

[Amount][int]NULL

)ON[PRIMARY]

四数据访问层

同上一章介绍的聊天室的数据访问层类似,本系统只包括一个类Database,但本节给出的类增加了更多的方法,可以完成更强大的数据操作功能.

1.41配置数据库连接

本例中,在Web.config文件中指定了数据库连接字符串配置信息,具体实现为,在Web.config文件中添加如下代码:

1.42数据库类实现

Database类的类图如图1.15所示.

图1.15Database类图

五数据访问接口层

数据访问接口层(DataAccessHelper),包括两个类:

GetSafeData和SqlStringFormat.这两个类分别能够完成获取安全数据和构造SQL语句的功能.

1.51获取安全数据

GetSafeData类包含一系列从DataRow和SqlDataReader对象中安全获取数据的静态方法,具体如图1.16所示.

图1.16GetSafeData类的类图

其中,从DataRow中获取安全数据的4个方法ValidateDataRow_*同前面相似,不作重述.从SqlDataReader中获取安全数据的4个方法ValidateDataReader_*功能如表1.5所示

表1.5GetSafeData类的ValidateDataReader_*方法说明

属性/方法

功能说明

◆ValidateDataReader_S

从SqlDataReader当前行获取字符串,数据为空返回System.String.Empty对象

◆ValidateDataReader_N

从SqlDataReader当前行获取整数,数据为空返回System.Int32.MinValue对象

◆ValidateDataReader_F

从SqlDataReader当前行获取浮点数,数据为空返回System.Double.MinValue

◆ValidateDataReader_T

从SqlDataReader当前行获取时间,数据为空返回System.DateTime.MinValue

因为这4个方法的实现非常类似,不必一一重复介绍.下面,就以ValidateDataRow_S为例,说明其实现过程.

代码1-1ValidateDataReader_S:

\DataAccessHelper\GetSafeData.cs

///

///从SqlDataReader中安全获取数据

///

///数据读取器SqlDataReader

///列名

///列中的字符串数据,如果为空,则返回System.String.Empty

publicstaticstringValidateDataReader_S(SqlDataReaderreader,stringcolname)

{

if(reader.GetValue(reader.GetOrdinal(colname))!

=DBNull.Value)

returnreader.GetString(reader.GetOrdinal(colname));

else

returnSystem.String.Empty;

}

第11行利用了SqlDateReader的两个方法.

(1)GetOrdinal:

根据SqlDataReader中的列名获取列索引.

(2)GetValue:

根据列的索引获取SqlDataReader当前行中的数据.

获取了数据之后,利用DBNull类来判断数据源中的数据是否为空,如果不为空,则返回字符串类型的数据;否则,就返回System.String.Empty对象.

1.52构造SQL语句

SqlStringConstructor类具有两个方法,如图1.17所示.

 

图1.17SqlStringConstructor类图

(1)GetQuotedString:

将字符串加上SQL语句中常用的单引号“'”。

(2)GetConditionClause:

构造SQL语句中的条件子句,这个方法接收一个哈希参数,利用哈希表中的每一项都是一个DictionaryEntry对象的对的特征,构造SQL语句中的条件子句。

GetConditionClause方法的实现流程如图1.18所示。

 

图1.18SqlStringConstructor.GetConditionClause方法流程

实现代码如下。

代码1-2GetConditionClause:

\DataAccessHelper\SqlStringFormat.cs

1.///

2.///根据条件哈希表,构造SQL语句中的条件子句

3.///

4.///条件哈希表

5.///条件子句

6.publicstaticStringGetConditionClause(HashtablequeryItems)

7.{

8.

9.intCount=0;

10StringWhere="";

11

12//根据哈希表,循环生成条件子句

13foreach(DictionaryEntryiteminqueryItems)

14{

15if(Count==0)

16Where="Where";

17else

18Where+="And";

19

20//根据查询列的数据类型,决定是否加单引号

21if(item.Value.GetType().ToString()=="System.String"||item.Value.GetType().ToString()=="System.DateTime")

22{

23Where+="["+item.Key.ToString()+"]"

24+"Like"

25+SqlStringConstructor.GetQuotedString("%"

26+item.Value.ToString()

27+"%");

28}

29else

30{

31Where+="["+item.Key.ToString()+"]"+"="+item.Value.ToString();

32}

33Count++;

34}

35returnWhere;

36}

第13—34行循环读取哈希表中的每一项,生成WHERE子句。

15—18行,利用计数变量Count.判断所处理的项是否是第一项,如果是,则构造WHERE子句的开头“WHERE”,否则,构造多个“与”查询的“And"关键字。

第20—32行构造单个查询条件,并根据查询列的数据类型,来判断是否应该用单引号将其括起来。

本例中,使用了模糊查询关键字”Like”,以及通过配符“%”。

第35行返回构造的WHERE子句。

下面给出一个具体的示例,直观说明该方法的功能。

假设方法输入的查询哈希表如表9.6所示。

表9.6查询Hashtable示例

key

value

BookName

红楼

Publisher

人民文学出版社

CategoryId

1

.....................

............................

则方法的输入将为WHERE子句,如下。

Where

BookNameLike'%红楼梦%'

AndPublisherLike'%人民文学出版社%'

AndCategoryId=1

利用这个方法,将很容易地根据页面上用户的输入,查询出满足条件的数据,读者将在Book类的Query方法、以及BookList页面的查询功能中体会到这一点。

6、业务逻辑层

业务逻辑层(BusinessLogicLayer)包括User类、Book类、Category类,以及chart类,下面对其一一介绍。

1.61用户类User

用户类模拟了一个电子书店的客户,位于MyBookShop.BussinessLogicLayer空间中,其类图如图1.19所示。

 

图1.19User类的类图

 

1.62图书类Book

1.Book类的功能

Book类的模拟了图书对象,位于MyBookShop.BussinessLogicLayer空间中,类图如图1.20所示。

其中,各个属性的含义与数据表Book中的含义相似。

不再介绍,方法的说明如表1.7所示。

 

 

图1.20Book类的类图

表1.7Book类的成员说明

属性/方法

功能说明

◆Add

将一个图书信息添加到数据库中

◆Update

修改图书的内容

◆Delete

删除掉图书

◆LoadData

根据图书编号,获取图书的详细信息

◆QuryBooks

静态方法,查询满足一定条件的图书

◆GetSaleByCategory

静态方法,根据类别查询销售量

◆GetSaleByPrice

静态方法,根据价格查询销售量

◆GetSaleByPulisher

静态方法,根据出版社查询销售量

2.实现Add、Update、Delete方法

(1)Add方法向数据库添加一本图书,图书信息都放在一个哈希表对象中,利用Database类的Insert方法来实现数据的插入。

代码1-3Boo.Add方法:

\BussinessLogicLayer\Book.cs

1///

2///向数据库添加一本图书

3///

4///图书信息哈希表

5publicvoidAdd(HashtablebookInfo)

6{

7Databasedb=newDatabase();//实例化一个Database类

8db.Insert("[Book]",bookInfo);//利用Database类的Inser方法,插入数据

9}

(2)Update方法同样接受一个哈希表对象,该对象存储了图书新的信息,然后利用Database类的Update方法实现数据的修改。

代码1-4Book.Update方法:

\BussinessLogicLayer\Book.cs

1///

2///修改图书内容

3///

4///新的图书信息哈希

5///Update的Where子句

6publicvoidUpdate(HashtablenewBookInfo)

7{

8Databasedb=newDatabase();

9stringcondition="WhereBookID="+this._bookId;

10db.Update("[Book]",newBookInfo,condition);

11}

(3)删除图书则直接利用Database的ExecuteSQL方法即可。

代码1-5Book.Delete方法:

\BussinessLogicLayer\Book.cs

///

///删除图书

///

publicv

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 学科竞赛

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

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