)
AS
SELECT A.ProductID, A.ModelName, A.ModelNumber, B.Quantity,
A.UnitCost, CAST(A.UnitCost * B.Quantity AS money) AS ExtendedAmount
FROM dbo.Products A INNER JOIN
dbo.ShoppingCart B ON A.ProductID = B.ProductID
WHERE (B.CartID = @CartID)
ORDER BY A.ModelName, A.ModelNumber
GO
6.5.2 结帐页面(checkout.axpx)
提供用户查询自己的确认订单。
图 6.5.2.1 订单确认页面
调用存储过程如下
/****** Object: Stored Procedure dbo.spShoppingCartList ******/
CREATE PROCEDURE dbo.spShoppingCartList
(
@CartID VARCHAR(50)
)
AS
SELECT A.ProductID, A.ModelName, A.ModelNumber, B.Quantity,
A.UnitCost, CAST(A.UnitCost * B.Quantity AS money) AS ExtendedAmount
FROM dbo.Products A INNER JOIN
dbo.ShoppingCart B ON A.ProductID = B.ProductID
WHERE (B.CartID = @CartID)
ORDER BY A.ModelName, A.ModelNumber
GO
将购物车确认为订单并返回所生成的订单ID给客户的存储过程如下:
/****** Object: Stored Procedure dbo.spOrdersInsert ******/
CREATE PROCEDURE dbo.spOrdersInsert
(
@CustomerID INT,
@CartID VARCHAR(50),
@Memo VARCHAR(2000),
@OrderID INT OUTPUT
)
AS
-- 确保数据的一致性, 因而起用事务
BEGIN TRAN OrdersInsert
/* 产生订单 */
INSERT INTO Orders
(
CustomerID,
Memo,
ShipDate
)
VALUES
(
@CustomerID,
@Memo,
getdate()
)
-- 返回当前所产生的OrderID
SELECT
@OrderID = @@Identity
/* 将当前用户的当前购物车COPY到当前所产生的ORDER明细中*/
INSERT INTO OrderDetails
(
OrderID,
ProductID,
Quantity,
UnitCost
)
SELECT
@OrderID,
ShoppingCart.ProductID,
Quantity,
Products.UnitCost
FROM
ShoppingCart
INNER JOIN Products ON ShoppingCart.ProductID = Products.ProductID
WHERE
CartID = @CartID
/* 完成后, 清空当前购物车ID的所有明细*/
EXEC spShoppingCartEmpty @CartId
COMMIT TRAN OrdersInsert
GO
附录A 数据表
(1)Categories(商品分类信息表)
商品分类信息表主要用来保存商品类别中的类别信息。表Categories的结构如表B.1所示。
表B.1 表Categories的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 类别ID
Name varchar 50 类别名称
ParentID int 父级ID
IsDel bit 1 删除标记
Memo varchar 255 备注
(2)Area(地区分类信息表)
地区分类信息表主要用来连接客户所在地的信息。表Area的结构如表B.2所示。
表B.2 表Area的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 类别ID
Name varchar 4 地区名称
ParentID int 父类ID
IsDel bit 1 删除标记
(3)Stores(商品存储表)
商品存储表用来保存商品时的存储表信息。表Stores的结构如表B.3所示。
表B.3 表Stores的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 等级
Name varchar 50 消费额
ParentID int 折扣
IsDel bit 1
(4)OrderDetails(订单明细表)
订单明细表用来保存订单的详细信息。表OrderDetails的结构如表B.4所示。
表B.4 表OrderDetails的结构
字段名 数据类型 长度 是否主键 描述
OrderID bigint 8 是 定单ID
ProductID bigint 8 商品ID
Quantity bigint 8 数量
UnitCost money 8 产品单价
(5)Orders(订单信息主表)
订单信息主表用来保存订单的概要信息。表Orders的结构如表B.5所示。
表B.5 表Orders的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 订单编号
DateTimed smalldatetime 8 品种数
CustomerID int 用户名
ShipDate smalldatetime 8 真实姓名
HasView bit 1 联系地址
HasCheck bit 1 邮政编码
HasSend bit 1 电话
HasReceive bit 1 付款方式
IsDel bit 1 运送方式
Memo varchar 2000 备注
(6)Customers(会员信息表)
会员信息表主要用来存储所注册的会员的信息。表Customers的结构如表B.6所示。
表B.6 表Customers的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 会员ID
Name varchar 255 用户名
Email varchar 100 Email地址
passWord varchar 50 登录密码
公司名称 varchar 255 公司名称
电话号码 varchar 50 电话号码
传真号码 varchar 50 传真号码
移动电话 varchar 50 移动电话
互联网站 varchar 20 互联网站
AreaID int 地区ID号
邮政编码 char 6 邮政编码
详细地址 varchar 255 详细地址
IsEmp bit 1 是否员工
IsVendor bit 1 是否厂商
IsFriend bit 1 是否伙伴
IsDel bit 1 删除标记
Photo varchar 50 相片
OICQ varchar 50 OICQ
ICQ varchar 50 ICQ
MSN varchar 50 MSN
(7)News(新闻信息表)
新闻信息表用来保存商城最新的公告新闻信息。表News 的结构如表B.7所示。
表B.7 表News的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 消息ID
Name varchar 50 消息主题
Memo varchar 8000 详细信息
DateTimed smalldatetime 8 发表时间
UserID smallint 用户ID
IsDel bit 1 是否删除
(8)Products(商品信息表)
商品信息表主要用来保存商品信息。表Products的结构如表B.8所示。
表B.8 表Products的结构
字段名 数据类型 长度 是否主键 描述
ProductID int 是 商品ID
CategoryID int 类别ID
VendorID int 卖主ID
ModelNumber varchar 50 模型号
ModelName varchar 50 模型名称
ProductImage varchar 50 产品图片
UnitCost money 100 产品单价
Discount money 8 产品折扣价
Description varchar 2000 产品描述
DateTimed datetime 4 登记时间
Clicks int 4 点击次数
Sales int 销售数量
Commend bit 1 是否受欢迎
Isdel bit 1 是否删除
(9)ShoppingCart(购物车商品信息表)
购物车商品信息表主要用来保存客户要购买的商品信息。表ShoppingCart的结构如表B.9所示。
表B.9 表ShoppingCart的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 ID号
CartID varchar 50 购物车ID
ProductID int 产品ID
Quantity int 数量
DateTimed smalldatetime 8 购物时间
(10)Onhand(客户拥有商品信息表)
客户拥有商品信息表主要用来保存客户已经购买的商品信息内容。表Onhand的结构如表B.10所示。
表B.19 表Onhand的结构
字段名 数据类型 长度 是否主键 描述
StoreID int 是 购物车ID
ProductID varchar 50 产品ID
Quantity int 产品数量
(11)SiteMenu(友情链接信息表)
购物车商品信息表主要用来保存客户要购买的商品信息。表SiteMenu的结构如表B.11所示。
表B.11 表SiteMenu的结构
字段名 数据类型 长度 是否主键 描述
ID int 是 网址ID
Name varchar 255 页面名称
ParentID int 父页面ID
Memo varchar 255 备注
URL varchar 255 页面地址
Target varchar 255 目标页
OrderID smallint 定单ID
该系统采用SQL Server2000作为后台数据库去存储所有与系统 关的数据。这些数据包括产品信息、客户账号以及订单信息等。数据模型的最终目的就是规划能够有效地处理事务,并且保持应用开发的简洁性的关系数据库,并在数据库的规范话、性能优化以及数据的简洁性之间达到平衡。
7.结束语
本系统从构想到功能需求以及数据库设计和实现方法,创建了一个电子商务系统,本电子商务系统最核心的部分是提供购物功能,出于安全和身份验证的需要,需要对客户进行管理,本系统提供了用户注册和登录页面。
在电子商务中最重要的就是提供个购物服务,在本系统中创建了一个网络虚拟商场,客户可以对商品进行分类浏览和详细浏览每件商品的详细信息,并把自己选中的商品存放到电子购物车中,本系统还提供了对购物车的各种操作,并提供了结帐退出系统的功能。
当然本系统还有很多不足之处,对很多实际中会出现的问题还没有加以考虑,对整个系统的模型也做了很大的简化,还有网络安全方面的技术也没有涉及很多。
参考文献
[1] Ollie Cornes,崔洪斌 译 . ASP.NET入门经典.清华大学出版社,2002-3.
[2] Threaron Willis 杨浩 译 . VB.NET 入门经典 . 清华大学出版社, 2005-3
[3] 钟永生 . VB.NET程序设计案例教程. 冶金工业出版社, 2004-3
[4] 廖信彦. ASP.NET交互式Web数据库程序设计 .中国铁道出版社, 2004-10
[5] 张海藩. 软件工程. 人民邮电出版社 , 2005-1
[6] 王国辉,牛强,李南南,等.JSP 信息系统开发实例精选.机械工业出版社,2005年7月.
[7] 宋昆、李严等 .SQL Server数据库开发实例解析 .机械工业出版社, 2006年1月
[8] 李严、于亚芳、王国辉. ASP数据库开发实例解析. 机械工业出版社,2004年12月
[9] 陈威、白伟明、李楠. JSP工程应用与项目实践. 机械工业出版社 ,2005年2月
[10] 王国辉、牛强、李南南. ASP工程应用与项目实践 .机械工业出版社,2005年4月