6.2用户登录与注册
当已经注册过的用户输入其用户名以及密码单击登录按钮便可以登录,但如果为新用户,单击注册按钮,在下一个页面中输入信息后再单击注册按钮后便可成为注册用户。
内容来自www.paper51.com
用户登录主要实现过程:通过spUserLogin存储过程获得UserID,作为用户ID,在通过GetShoppingCartID()获得TempCartID,之后再调用一个存储过程spShoppingCartMigrate将购物车合并。用户注册的实现过程与用户登录的实现过程基本上一样。 http://www.paper51.com
主要代码如下:
内容来自论文无忧网 www.paper51.com
用户登录
http://www.paper51.com
if (Page.IsValid)
内容来自论文无忧网 www.paper51.com
{
内容来自www.paper51.com
String ID = da.spUserLogin(tbUserName.Text.Trim(),tbPassword.Text.Trim()); paper51.com
if (ID != null)
paper51.com
{ paper51.com
String TempCartID = da.GetShoppingCartID(); copyright paper51.com
// 将当前临时的购物车清单转换到登录用户名下 内容来自论文无忧网 www.paper51.com
da.spShoppingCartMigrate(TempCartID, ID);
copyright paper51.com
// 保存登录用户Cookies copyright paper51.com
Response.Cookies["ShoppingCartUser"].Value = tbUserName.Text.Trim(); paper51.com
// 重定向浏览器到目标页面 copyright paper51.com
FormsAuthentication.RedirectFromLoginPage(ID, false); 内容来自www.paper51.com
}
http://www.paper51.com
else
paper51.com
{ paper51.com
da.Alert("用户名或密码错误!"); paper51.com
} paper51.com
}
内容来自论文无忧网 www.paper51.com
其中调用了两个存储过程:spUserLogin, spShoppingCartMigrate
copyright paper51.com
CREATE PROCEDURE dbo.spUserLogin http://www.paper51.com
(
内容来自论文无忧网 www.paper51.com
@UserName CHAR(10), 内容来自www.paper51.com
@Password CHAR(10), http://www.paper51.com
@UserID INT OUTPUT
paper51.com
) paper51.com
AS
内容来自www.paper51.com
SELECT @UserID = UserID FROM Users http://www.paper51.com
WHERE UserName = @UserName 内容来自www.paper51.com
AND Password = @Password copyright paper51.com
IF @@Rowcount < 1 http://www.paper51.com
SELECT @UserID = 0 paper51.com
GO
paper51.com
CREATE PROCEDURE dbo.spShoppingCartMigrate
内容来自论文无忧网 www.paper51.com
(
内容来自论文无忧网 www.paper51.com
@OldCartID VARCHAR(50), paper51.com
@NewCartID VARCHAR(50)
内容来自论文无忧网 www.paper51.com
) 内容来自www.paper51.com
AS
内容来自论文无忧网 www.paper51.com
UPDATE ShoppingCart
copyright paper51.com
SET CartID = @NewCartID WHERE CartID = @OldCartID 内容来自论文无忧网 www.paper51.com
GO
copyright paper51.com
用户注册的实现代码:
内容来自www.paper51.com
if (Page.IsValid) copyright paper51.com
{
paper51.com
//保存旧的购物车编号,以便注册后合并购物车
http://www.paper51.com
StringTempCartID = da.GetShoppingCartID();
内容来自www.paper51.com
//添加用户信息到数据库
内容来自论文无忧网 www.paper51.com
String UserID = da.AddUser(tbUserName.Value,tbPassword.Value, copyright paper51.com
tbAddress.Value, tbPostCode.Value, tbTelephone.Value); paper51.com
if (UserID != "")
内容来自论文无忧网 www.paper51.com
{
内容来自www.paper51.com
//将用户ID指定为通过安全登录的信息 paper51.com
FormsAuthentication.SetAuthCookie(UserID,false); 内容来自www.paper51.com
//合并购物车 paper51.com
da.spShoppingCartMigrate(TempCartID,UserID); 内容来自www.paper51.com
//将用户姓名保存到Cookies中 http://www.paper51.com
Response.Cookies["UserName"].Value= Server.HtmlEncode(tbUserName.Value.Trim()); paper51.com
//重定向到购物车界面 内容来自论文无忧网 www.paper51.com
Response.Redirect("shopcart.aspx"); paper51.com
}
http://www.paper51.com
else
内容来自www.paper51.com
{
http://www.paper51.com
da.Alert("该用户名已被注册!"); http://www.paper51.com
}
copyright paper51.com
} copyright paper51.com
调用了一个存储过程spShoppingCartMigrate. 内容来自www.paper51.com
CREATE PROCEDURE dbo.spShoppingCartMigrate http://www.paper51.com
( 内容来自论文无忧网 www.paper51.com
@OldCartID VARCHAR(50), @NewCartIDVARCHAR(50)
copyright paper51.com
) 内容来自论文无忧网 www.paper51.com
AS http://www.paper51.com
UPDATE ShoppingCart paper51.com
SET CartID = @NewCartID WHERE CartID = @OldCartID
内容来自www.paper51.com
GO copyright paper51.com
在用户注册的时候需要输入电话号码,电话号码采用了一个正则表达式,只有输入正确的格式才能注册,否则将提示错误信息。
copyright paper51.com
主要代码如下: 内容来自www.paper51.com
ValidationExpression="\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8} paper51.com
|\(0\d{3}\)[- ]?\d{7}|0\d{3}[- ]?\d{7} 内容来自论文无忧网 www.paper51.com
|13\d{9}|159\d{8}” 内容来自www.paper51.com
6.3注销
内容来自www.paper51.com
用户可以变化身份登录,主要采取的方法是用户注销,再重新以另外一种身份登录。 http://www.paper51.com
注销的实现过程:通过调用.NET的一个控件FormsAuthentication.SignOut()来完成。
内容来自www.paper51.com
主要代码如下: 内容来自www.paper51.com
protectedvoid btnLogout_Click(object sender, EventArgs e)
paper51.com
{
paper51.com
FormsAuthentication.SignOut();
内容来自www.paper51.com
Response.Redirect("index.aspx"); copyright paper51.com
}
http://www.paper51.com
6.4下订单 内容来自www.paper51.com
客户在购物车的页面中填完送货地址、邮编及电话后按保存按钮可以下订单,在管理页面中点击查看订单详情可以查看所下订单,如图10,11所示。 copyright paper51.com
主要实现过程:1)获取当前用户的OrderID
paper51.com
2)利用ShoppingCart表和Flower表的内联接,将当前用户的当前购物车复制到当前所产生的订单详情中 内容来自论文无忧网 www.paper51.com
3)利用OrderDetails表和Flower表的内联接,扣除Flower表中的鲜花库存 内容来自论文无忧网 www.paper51.com
4)调用另一存储过程spShoppingCartEmpty将购物车清空
http://www.paper51.com
copyright paper51.com
图10 下订单 内容来自论文无忧网 www.paper51.com
paper51.com
图11 订单详情
http://www.paper51.com
主要代码如下: 内容来自www.paper51.com
CREATE PROCEDURE dbo.spOrdersInsert
paper51.com
(
http://www.paper51.com
@UserID INT, @CartID NVARCHAR(50), copyright paper51.com
@Address VARCHAR(50), @PostCode CHAR(10), http://www.paper51.com
@Telephone VARCHAR(50),@OrderID INT OUTPUT
copyright paper51.com
)
http://www.paper51.com
AS 内容来自论文无忧网 www.paper51.com
BEGIN TRAN OrdersInsert /* 产生订单 */ paper51.com
INSERT INTO Orders
copyright paper51.com
( 内容来自论文无忧网 www.paper51.com
UserID, Address, PostCode, Telephone, OrderDate paper51.com
) 内容来自www.paper51.com
VALUES
内容来自www.paper51.com
(
copyright paper51.com
@UserID,@Address, @PostCode, @Telephone
http://www.paper51.com
GETDATE()
copyright paper51.com
)
内容来自www.paper51.com
-- 返回当前所产生的OrderID
内容来自www.paper51.com
SELECT @OrderID = @@Identity 内容来自论文无忧网 www.paper51.com
/* 将当前用户的当前购物车复制到当前所产生的订单详情中*/
copyright paper51.com
INSERT INTO OrderDetails
内容来自www.paper51.com
( http://www.paper51.com
OrderID, FlowerID, Quantity 内容来自www.paper51.com
)
paper51.com
SELECT OrderID, ShoppingCart.FlowerID, Quantity
copyright paper51.com
FROM ShoppingCart INNER JOIN
paper51.com
Flower ON ShoppingCart.FlowerID = Flower.FlowerID
paper51.com
WHERE CartID = @CartID 内容来自www.paper51.com
/*扣除相应的库存鲜花数量*/ 内容来自www.paper51.com
UPDATE Flower
paper51.com
SET FlowerStock = FlowerStock - OrderDetails.Quantity http://www.paper51.com
FROM OrderDetails INNER JOIN 内容来自论文无忧网 www.paper51.com
Flower ON OrderDetails.FlowerID =Flower.FlowerID
内容来自www.paper51.com
WHERE OrderDetails.OrderID = @OrderID
内容来自论文无忧网 www.paper51.com
/* 完成后, 调用另一存储过程spShoppingCartEmpty
paper51.com
清空当前购物车ID的所有明细*/
内容来自www.paper51.com
EXEC spShoppingCartEmpty @CartID http://www.paper51.com
COMMIT TRAN OrdersInsert
paper51.com
GO 内容来自论文无忧网 www.paper51.com
其中调用了一个存储过程spShoppingCartEmpty paper51.com
主要代码如下: paper51.com
CREATE Procedure spShoppingCartEmpty
paper51.com
( paper51.com
@CartID nvarchar(50) 内容来自论文无忧网 www.paper51.com
)
内容来自论文无忧网 www.paper51.com
AS
内容来自论文无忧网 www.paper51.com
DELETE FROM ShoppingCart
paper51.com
WHERE CartID = @CartID
内容来自论文无忧网 www.paper51.com
GO
http://www.paper51.com
6.5撤消订单
paper51.com
客户可以在规定的时间内将自己所下的订单撤消,如图12。 paper51.com
主要实现过程:将Orders表中的Dispatched值设置为1,因为系统的默认为0,0表示未发货,1代表已发货,如果已经发了货,自然就相当于将订单删除。 paper51.com
http://www.paper51.com
图12 撤消订单
copyright paper51.com
paper51.com