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