文档库 最新最全的文档下载
当前位置:文档库 › 第32章 电子商务B2C网站实战

第32章 电子商务B2C网站实战

第32章 电子商务B2C网站实

525

电子商务B2C 网站实战

网站分析

本网站系统实现的是一个网上书店售书系统,可以实现商家在线发布商品信息和消费书店销售系统全部采用Web 书店前台功能强大,操作方便(几乎涵盖了国内所有的网上书店的前台功能)前台作为与用户直接交互的界面,在考虑功能的同时也需要考虑操作的简洁和方便性,目的是让大多数的不太懂电脑操作的客户也能轻松地享受电子商务带来的便利。

登录(支持个人和团体用户)介绍、联系方式、图书查询、图书高级查询、新书快递、图书分类浏览、图书展示、畅销书排行榜、打折专区、热门推荐、精品推荐、意见反馈、在线帮助、订单管理、缺书登记、目前电子商务的具体实现模式主要有两类:第2类称为亚马逊模式。两者的流程如下图所示。生产厂商

种直销方式。下面对其做具体的介绍。本章介绍的网上购物系统前台为生成的html 代码。购物流程如下图所示。

32.2创建本地站点

在使用或者建立网站之前,必须通过IIS创建站点并设置好站点主目录,使用SQL Server2005附加或创建相应的数据库,才能够使该站点运行起来。

32.2.1 配置IIS

在本地IIS创建btoc站点,将源文件存放位置D:\ch32\btoc设置为主目录。具体配置步骤可参照22.2.2节中的相关内容。

32.2.2 配置数据库

参照22.6小节将btoc数据库附加到本地SQL Server2005数据库服务器中。

需要附加的数据库文件qiye_2_Data.MDF在ch32\btoc文件夹中。

32.3数据库设计

一个成功的管理系统由50%的业务+50%的软件组成,而50%的成功软件又由25%的数据库+25%的程序组成,所以数据库设计的好坏是一个关键。

32.3.1 数据库需求分析

数据项和数据结构如下。

⑴商品信息表:ID(自动编号)、名称、作者、分类、包装、简介、说明、使用、图

标、定价、售价、标记和时间等。

⑵客户信息表:账号、密码、姓名、住址、电话、妹儿和ID(自动编号)等。

⑶订单内容表:订单号、商品、数量和价格等。

⑷订单管理表:ID(自动编号)、订单号、用户名、配送、付款、填写时间、完成时

间和标记等。

⑸栏目信息表:typeID(自动编号)、栏目名称。

32.3.2 数据库逻辑分析

数据库包括一下几个表单。

⑴商品信息表如下图所示。

526

527

电子商务B2C 网站实战

⑵ 客户信息表如下图所示。

⑶ 订单内容表如下图所示。

⑷ 订单管理表如下图所示。

32.4 网站前台实现

前台为asp 代码生成的html 静态代码。根据ASP 的工作原理可知,当在Web 站点中融入ASP 功能后,将发生如下所列举的事情。

⑴ 用户调出站点内容,默认页面的扩展名是.asp 。 ⑵ 浏览器从服务器上请求ASP 文件。 ⑶ 服务器端脚本开始运行ASP 。

⑷ ASP 文件按照从上到下的顺序开始处理、执行脚本命令,执行HTML 页面内容。 ⑸ 页面信息发送到浏览器。

因为脚本是在服务器端运行的,所以Web 服务器完成所有的处理后就会将标准的HTML 页面送往浏览器。这意味着ASP 只能在可以支持的服务器上运行,并且用户不可能看到原始脚本程序的代码,能看到的仅仅是最终产生的HTML 内容。

前台系统主要包括以下几个页面。 ⑴ index.asp

528

32.4.1 商品列表页面

为商品列表所看到的页面。

页面中商品的个数、名称、价格、图片和商品简介等都是由后台的

529

电子商务B2C 网站实战

相关的asp 代码可以查看后台index.asp 中的asp 代码。

32.4.2 商品分类显示页面

页面实例中文件book.asp 为商品分类显示所看到的页面。

此页面中的HTML 代码是由book.asp 生成的html 代码,商品的个数、页数、名称、价格、图片和商品简介等都由后台的asp 代码控制显示。相关的asp 代码可以查看后台book.asp 中的asp 代码。

32.4.3 商品介绍页面

页面实例中文件introduce.asp

为商品介绍所看到的页面。

此页面中的HTML 代码是由introduce.asp 生成的html 代码,商品的名称、所属类别、价格、图片和内容介绍以及使用说明等都由后台的asp 代码控制显示。相关的asp 代码可以查看后台introduce.asp 中的asp 代码。

32.4.4 购物车页面

页面实例中文件shopbag.asp 为选购商品时所看到的购物车页面。

530

32.4.5 收藏夹页面

页面实例中文件favorite.asp

为所看到的收藏夹页面。

32.4.6 商品搜查页面

页面实例中文件SearchResult.asp

为搜索“标题”关键字结果信息所看到的页面。

32.4.7 会员注册与会员登陆页面

页面实例中文件member.asp 为会员注册和会员登录所看到的页面。

531

电子商务B2C 网站实战

此页面中的HTML 代码是用户要添加的用户登录信息。 页面中有1个表单和9个元素。

名称 表单元素类型 含义 最大长度

A text 登录帐号 10 P password 登录密码 10 account text 注册帐号 10 key1 password 注册密码 10 key2 password 密码确认 10 myname text 姓名 10 telephone text 电话 10 address text 地址邮编 10

email text email 10

32.4.8 商品收银台页面

页面实例中文件money.asp 为商品收银台所看到的页面,默认的账号和密码均为test 。

532

32.4.9 发送订单请求页面

页面实例中文件mailtome.asp为发送订单请求所看到的页面。

32.5网站后台实现

网站系统的动态页及数据库连接等都需要一种后台的程序去管理和维护。为了增强网站系统的互动性,下面从网站后台编程具体地介绍其实现的过程。

32.5.1 数据库连接文件

数据库连接文件为conn.asp。一开始代码要做的事情即是连接数据库。代码如下。

<% set Conn=Server.CreateObject("ADODB.Connection")

‘本机ip为127.0.0.1,数据库名为qiye_2,用户名为sa,密码为password

Conn.open "Provider=sqloledb;" & "Data Source=(local);Initial Catalog=qiye_2;User Id=sa;Password =password;"

%>

32.5.2 商品列表页面

商品列表页面文件为index.asp。

1. 页面所涉及的数据库表信息

此页面为显示商品信息页面,此页面使用了系统中的商品信息表。

2. 页面代码分析

<%

533

电子商务B2C 网站实战

‘取得最新商品信息

SQL="Select top 4 * from 商品信息 Where 标记='最新' Order by 时间 DESC" set rs=Conn.execute(SQL) Do while not rs.EOF

Ostr="window.open('introduce.asp?P=" + rs.fields("名称") + "&T=" + rs.fields("图标") + "',null,'widt h=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&PP=" + rs.fields("定价") + "&Price=" + rs.fields("售价") + "',null,'width=560,height=360,scrollbars=1,status=0')"

Lstr="window.open('favorite.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") + "&T=" + rs.fields("图标") + "',null,'width=560,height=360,scrollbars=1')"

%>

><%rs.movenext

if%>

end

" alt="详细资料" width="70" height="90" style="CURSOR: hand">商品名:<%=rs.fields("名称")%>(<%=rs.fields("包装")%>)
原始价格: <%=rs.fields("定价")%>

会员价格:<%=rs.fields("售价")%>


<%=rs.fields("简介")%>

详细资料 购买 收藏

<%rs.movenext if not rs.eof then Ostr="window.open('introduce.asp?P=" + rs.fields("名称") + "&T=" + rs.fields("图标") + "',null,'width=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&PP=" + rs.fields("定价") + "&Price=" + rs.fields("售价") + "',null,'width=560,height=360,scrollbars=1,status=0')"

Lstr="window.open('favorite.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") +

"&T=" + rs.fields("图标") + "',null,'width=560,height=360,scrollbars=1')"

%>

border="0">

width="55%"

" alt="详细资料" width="70"

height="90" style="CURSOR: hand">

商品名:<%=rs.fields("名称")%> (<%=rs.fields("包装")%>)
原始价格: <%=rs.fields("定价")%>

会员价格:<%=rs.fields("

售价")%>


<%=rs.fields("简介")%>

详细资料 购买 收藏

<%

loop

Conn.close

%>

……

<%

‘取得推荐信息

SQL="Select top 6 * from 商品信息 Where 标记='推荐' Order by 时间DESC"

set rs=Conn.execute(SQL)

Do while not rs.EOF

rs.fields("名称") + "&T=" + rs.fields("图标") +

+

Ostr="window.open('introduce.asp?P="

"',null,'widt h=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") + "',null,'w idth=560,height=360,scrollbars=1')"

rs.fields("名称") + "&Price=" + rs.fields("售价") +

+

Lstr="window.open('favorite.asp?P="

534

535

电子商务B2C 网站实战

"&T=" + rs.fields("图标") + "',null,'width=560,height=360,scrollbars=1')"

%>

3. Functions.asp

Functions.asp文件主要包含了网站常用的函数,页面代码分析如下。

<%

‘定义打开数据库函数

Function OpenOrGet_Database( SessionName )

538

539

电子商务B2C 网站实战

Dim conn If Not IsObject(Session(SessionName)) Then set conn=Server.CreateObject("ADODB.Connection") Conn.open "Provider=sqloledb;" & "Data Source=127.0.0.1;Initial Catalog=qiye_2;User Id=sa;Password =password;"

Set Session(SessionName) = conn End If Set OpenOrGet_Database = Session(SessionName) End Function

‘定义记录OpenOrGet_RsAndPageSize 每页显示的记录数 Function OpenOrGet_RsAndPageSize( conn, sql, SessionName ) Dim rs If Not IsObject(Session(SessionName)) Then Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, conn, adOpenStatic,1,1 Set Session(SessionName) = rs rs.PageSize = 6 End If Set OpenOrGet_RsAndPageSize = Session(SessionName) End Function

‘定义记录Open_RsAndPageSize 每页显示的记录数 Function Open_RsAndPageSize( conn, sql, SessionName ) Dim rs Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, conn, adOpenStatic,1,1 Set Session(SessionName) = rs rs.PageSize = 6 Set Open_RsAndPageSize = Session(SessionName) End Function %>

content="text/html; charset=gb_2312-80">

4. ShowPage.asp

ShowPage.asp 文件包含了显示信息的分页代码函数,代码分析如下。

<%

‘定义分页过程

Sub ShowOnePage( rs, Page ) if Page = 0 then response.write "" end if

rs.AbsolutePage = Page ‘显示商品的记录信息

For iPage = 1 To rs.PageSize Ostr="window.open('introduce.asp?P=" + rs.fields("名称") + "&T=" +

rs.fields("图标") + "',null,'widt h=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&PP=" + rs.fields("定价") + "&Price=" + rs.fields("售价") +

"',null,'width=560,height=360,scrollbars=1,status=1')"

Lstr="window.open('favorite.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") + "&T=" + rs.fields("图标") +

"',null,'width=560,height=360,scrollbars=1')"

RecNo = (Page - 1) * rs.PageSize + iPage

response.write "

" alt="详细资料" width="70" height="90" style="CURSOR: hand">商品名:<%=rs.fields("名称")%>(<%=rs.fields("包装")%>)
原始价格: <%=rs.fields("定价")%>

会员价格:<%=rs.fields("售价")%>


<%=rs.fields("简介")%>

详细资料 购买 收藏

<%rs.movenext if not rs.eof then Ostr="window.open('introduce.asp?P=" + rs.fields("名称") + "&T=" + rs.fields("图标") + "',null,'width=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&PP=" + rs.fields("定价") + "&Price=" + rs.fields("售价") + "',null,'width=560,height=360,scrollbars=1,status=0')"

Lstr="window.open('favorite.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") + "&T=" + rs.fields("图标") + "',null,'width=560,height=360,scrollbars=1')"

%>

><%rs.movenext

if%>

end

" alt="详细资料" width="70" height="90" style="CURSOR: hand">商品名:<%=rs.fields("名称")%>

(<%=rs.fields("包装")%>)

原始价格: <%=rs.fields("定价")%>

会员价格:<%=rs.fields("售价")%>


<%=rs.fields("简介")%>

详细资料

color="#0000FF">

购买

border="0" src="/image/favo r.gif">收藏

<%

loop

Conn.close

%>

……………..

<%

‘取得清仓商品信息

SQL="Select * from 商品信息 Where 标记='清仓' Order by 时间 DESC"

set rs=Conn.execute(SQL)

Do while not rs.EOF

+

rs.fields("名称") + "&T=" + rs.fields("图标") + Ostr="window.open('introduce.asp?P="

"',null,'widt h=520,height=400,scrollbars=1')"

Mstr="window.open('shopbag.asp?P=" + rs.fields("名称") + "&Price=" + rs.fields("售价") + "',nu ll,'width=560,height=360,scrollbars=1')"

rs.fields("名称") + "&Price=" + rs.fields("售价") +

+

Lstr="window.open('favorite.asp?P="

"&T=" + r s.fields("图标") + "',null,'width=560,height=360,scrollbars=1')"

%>

536

537

电子商务B2C 网站实战

" alt="详细资料" width="70" height="90" style="CURSOR: hand" border="0">商品名:<%=rs.fields("名称")%>

(<%=rs.fields("包装")%>)

原始价格: <%=rs.fields("定价")%>

会员价格:<%=rs.fields("售价")%>元


<%=rs.fields("简介")%>

详细资料购买

收藏

<% rs.movenext loop

‘关闭数据库连接对象 Conn.close %>

32.5.3 商品分类显示页面

商品分类显示页面文件为book.asp 。 1. 页面所涉及的数据库表信息

此页面为显示商品信息页面,此面页使用了系统中的商品信息表。 2. 页面代码分析

<%

if request("P") <> "" then

作者like '" + request("P") + "%'"

"where

T=

else

分类='" + request("C") + "'"

T=

"where

if

end

%>

…………..

<%

‘取得商品信息

SQL="Select * from 商品信息 " + T

Set conn = OpenOrGet_Database("MyOffers")

If Request("Page") <> "" Then

Set rs = OpenOrGet_RsAndPageSize( conn, sql, "Offer_rs" )

Else

Set rs = Open_RsAndPageSize( conn, sql, "Offer_rs" )

If

End

Page = CLng(Request("Page"))

‘如果分页的页数小于1默认为第一页

If Page <1 Then Page= 1

‘如果分页的页数大于最大页数默认为最大页数

If Page> rs.PageCount Then Page = rs.PageCount

%>

<%

If Page <> 1 Then

Response.Write "第一页"

Response.Write "  上一页"

End If

If Page <> rs.PageCount Then

Response.Write " 下一页"

Response.Write "  最末页 "

End If

%>

输入

页数<%=Page%>/<%=rs.PageCount%>

<% ‘调用分页函数

ShowOnePage rs, Page

%>

cellspacing=""0"">"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

width=""16%"">

rs.fields("图标") + """ width=""70"" height=""90"">

color=""#660000"">商品名:

color=""#990000"">"

response.write rs.fields("名称") + "(

color=""#000066"">" + rs.fields("包装") + "

color=""#000066"">)

color=""#660000"">原始价格:

color=""#660000"">" + rs.fields("定价") + "

元 "

response.write "会员价格:" + rs.fields("售价") + "

color=""#660000"">


" + rs.fields("简介") + "
"

response.write "

"

response.write "详细资料 "

response.write "购买

"

response.write "收藏

"

response.write "

"

response.write "

"

response.write "

width=""573"" height=""10"">

"

‘取下一条记录

rs.MoveNext

‘如果没有下条记录就退出循环

540

541

电子商务B2C 网站实战

If rs.EOF Then Exit For Next End Sub %>

32.5.4 商品介绍页面

商品介绍页面文件为introduce.asp 。 1. 页面所涉及的数据库表信息

此页面为显示商品信息页面,此页面使用了系统中的商品信息表。 2. 页面代码分析

<%’ 接收提交的表单数据 pro = request("P") pic = request("T") ‘取得商品信息 SQL = "select * from 商品信息 where 名称='" + pro + "' and 图标='" + pic + "'" SET Conn=Server.CreateObject("ADODB.Connection")

Conn.open "Provider=sqloledb;" & "Data Source=127.0.0.1;Initial Catalog=qiye_2;User Id=sa;Passwor d=password;"

‘打开记录集对象 set rs=Conn.execute(SQL) %>

………..

商品名称:<%=rs.fields("名称")%>" width="70" height="90">
所属类别:<%=rs.fields("分类")%>
商品价格:定价 <%=rs.fields("定价")%>元    

售价 <%=rs.fields("售价")%>元

内容介绍:

<%=rs.fields("说明")%>

使用说明:

<%=rs.fields("使用")%>

返回主窗口

32.5.5 购物车页面

购物车页面文件为shopbag.asp。

1. 页面所涉及的数据库表信息

此页面为显示商品信息页面,此页面使用了系统中的商品信息表。

2. 页面代码分析

<%

dim Nstr(20)

‘是否全部清空购物车

if request("Clear") <> "" then

Response.Cookies("times")=0

end if

if request("P") <> "" then

Mstr=Request("P")

Mstr=Mstr+"/"+Request("Price") +"/1"

T=Request.Cookies("times")

if T <> "" then

Times=Clng(T)+1

else

Times=1

if

end

Response.Cookies("times")=cstr(Times)

Response.Cookies("MYShopBag"+ cstr(Times))=Mstr

end if

‘如果要删除购物车中的商品

if request("D") <> "" then

Position=Request("D")

Times=Clng(Request.Cookies("times"))

If

then

Times=Position

Response.Cookies("times")=0

Else

Times-1

to

for

i=Position

Response.Cookies("MYShopBag"+cstr(i))=Request.Cookies("MYShopBag"+cstr(i+1))

next

‘减少商品个数

Response.Cookies("times")=Times-1

if

end

end if

C=request("C")

‘如果修改商品购买的数量

if C <> "" then

Tstr=Request.Cookies("MYShopBag"+C)

N=Request("ALLS"+C)

542

543

电子商务B2C 网站实战

Tstr=Left(Tstr,instrrev(Tstr,"/"))+N

Response.Cookies("MYShopBag"+Request("C"))=Tstr end if

Total=Request.Cookies("times") if cstr(Total) = 0 then Total = 1 Nstr(1) = "无/0/0/0" else for i = 1 to Clng(Total)

Nstr(i)=Request.Cookies("MYShopBag"+cstr(i)) next end if %>

…………. <%

dim S dim CC

‘显示购物车内的商品 for i = 1 to Total S=split(Nstr(i),"/") CC=CC+Clng(S(1))*Clng(S(2)) %>

<%=S(0)%> <%=S(1)%> " size="4" value="<%=S(2)%>" onChange="<%=" MyShopbag.C.value=" + cstr(i) + "; MyShopbag.action='shopbag.asp'; MyShopbag.submit()"%>">

<%=Clng(S(1))*Clng(S(2))%>

<% next %>

32.5.6 收藏夹页面

收藏夹页面文件为favorite.asp 。 1. 页面所涉及的数据库表信息

此页面为显示商品信息页面,此页面使用了系统中的商品信息表。 2. 页面代码分析

相关文档