☆購物車實現的功能:css
(1)鏈接數據庫登陸,密碼錯誤會彈窗提示,密碼正確能夠進入到購物車的界面。jquery
(2)點擊購買,上面會自動累計您買的物品和花費的金額。web
(3)點擊購物車能夠查看您買的物品,單價和數量,能夠刪除。數據庫
(4)點擊提交訂單,下面會顯示出來您花費的金額和餘額。ui
(5)點擊返回轉到購物車界面。 this
★ 添加一個AppCode的文件夾,裏面能夠存放SQl表和數據庫的方法。url
(1)水果表的數據庫操做方法《FruitBF》spa
public class FruitBF { private MyDBDataContext Context = new MyDBDataContext(); public List<Fruit> Select()//所有查詢 { return Context.Fruit.ToList(); } public void Update(OrderDetails ff) { var query = Context.Fruit.Where(p => p.Ids == ff.FruitCode); if (query.Count() > 0) { Fruit fr = query.First(); fr.Numbers -= ff.Count; Context.SubmitChanges(); } } public void Delete(string code)//刪除 { var query = Context.Fruit.Where(p => p.Ids == code); if (query.Count() > 0) { Fruit a = query.First(); Context.Fruit.DeleteOnSubmit(a); Context.SubmitChanges(); } } }
(2)登錄註冊的操做方法《LoginBF》3d
namespace webfrom_購物車 { public class LoginBF { private MyDBDataContext Context = new MyDBDataContext(); public bool CheckID(string id,string pwd) { var p = Context.Login.Where(r=>r.UserName==id&&r.Password==pwd); if (p.Count()>0) { return true; } else { return false; } } public bool LogInCheck(string uid, string pwd) { var query = Context.Login.Where(p => p.UserName == uid && p.Password == pwd); if (query.Count() > 0) { return true; } return false; } public bool LogInCheckUid(string uid) { var query = Context.Login.Where(p => p.UserName == uid); if (query.Count() > 0) { return true; } return false; } public Login Select(string id) { Login p1 = new Login(); var query = Context.Login.Where(p => p.UserName == id); if (query.Count() > 0) { p1 = query.First(); return p1; } return p1; } public void UpdateRmb(string name, decimal rmb) { var query = Context.Login.Where(p => p.UserName == name); if (query.Count() > 0) { Login l = query.First(); l.Account -= rmb; Context.SubmitChanges(); } } } }
(3) 鏈接使用帳戶表的方法《OrderDetails》code
public partial class OrderDetails { private MyDBDataContext Context = new MyDBDataContext(); public string FruitName { get { var query = Context.Fruit.Where(p => p.Ids == this.FruitCode); if (query.Count() > 0) { return query.First().Name; } return ""; } } public decimal FruitPrice { get { var query = Context.Fruit.Where(p => p.Ids == this.FruitCode); if (query.Count() > 0) { return query.First().Price.Value; } return 0; } } }
(二)先添加一個登錄註冊界面Webfrom窗口
效果圖:
《aspx 界面圖》:
<title></title> <script src="Script/jquery-1.7.1.min.js"></script> <style type="text/css"> #a { background-image: url(/圖片/3.jpg); } </style> </head> <body> <form id="form1" runat="server"> <div id="a"> <center> <table > <tr> <td colspan="2">購物車登陸</td> </tr> <tr> <td>用戶名:</td> <td> <asp:TextBox ID="txtid" runat="server"></asp:TextBox> </td> </tr> <tr> <td>密碼:</td> <td> <asp:TextBox ID="txtpwd" runat="server"></asp:TextBox> </td> </tr> <tr> <td colspan="2"><span id="ss"></span></td> </tr> <tr> <td colspan="2"> <asp:Button ID="btlogin" runat="server" OnClick="btlogin_Click" Text="登陸" /> </td> </tr> </table> </center> </div> </form>
《查看代碼》:
namespace webfrom_購物車 { public partial class Login1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btlogin_Click(object sender, EventArgs e) { bool isok = new LoginBF().CheckID(txtid.Text, txtpwd.Text); if (isok) { Session["user"] = txtid.Text.Trim(); //Response.Write("<script>alert('登陸成功')</script>"); //Response.End(); Response.Redirect("Index.aspx"); } else { Response.Write("<script>alert('賬號或密碼不正確')</script>"); } //UpdatePanel1.Update(); } } }
(二)添加一個購物車商品的主頁面{Index.aspx}
效果圖:
《aspx代碼》:
<title></title> <style type="text/css"> #a { background-image: url(圖片/6.jpeg); } </style> </head> <body> <form id="form1" runat="server"> <div align="center" id="a"> <asp:Literal ID="Literal1" runat="server"></asp:Literal> <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> <table class="tb" cellpadding="4" cellspacing="1" border="0" > <tr style="background-color:#FFB5C5"> <td>商品名</td> <td>單價</td> <td>庫存量</td> <td>操做</td> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Eval("Name") %></td> <td><%#Eval("Price") %></td> <td><%#Eval("Numbers") %></td> <td><a href="buy.aspx?id=<%#Eval("Ids") %>">購買</a></td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr style="background-color:#FFE4E1"> <td><%#Eval("Name") %></td> <td><%#Eval("Price") %></td> <td><%#Eval("Numbers") %></td> <td><a href="buy.aspx?id=<%#Eval("Ids") %>">購買</a></td> </tr> </AlternatingItemTemplate> <FooterTemplate> <tr style="background-color: #7FFFD4"> <td colspan="4"> <a href="查看購物車.aspx">查看購物車</a> </td> </tr> </table> </FooterTemplate> </asp:Repeater> </div> </form>
《查看代碼》:
namespace webfrom_購物車 { public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List<Fruit> list = new FruitBF().Select(); Repeater1.DataSource = list; Repeater1.DataBind(); int Count; decimal cost; if (Session["cart"] == null) //若是購物車裏面爲空 { Count = 0; //購買的數量便爲0 cost=0; } else //若是不爲空 { //用Session來存放數量 List<OrderDetails> temp = Session["cart"] as List<OrderDetails>;//看看Session裏面有多少個數據 Count = temp.Count;//購買的數量即是Session裏面的數據 cost = temp.Sum(P => P.Count * P.FruitPrice).Value; } Literal1.Text = "購物車中有" + Count + "種商品,總共花費"+cost+"元"; //Session["count"] = Count; } } }
(三)查看購物車
效果圖:
《aspx代碼》:
<title></title> <style type="text/css"> #a { background-image: url(/圖片/5.jpg); } .index { width:100%; height:1000px; } </style> </head> <body> <form id="form1" runat="server"> <div class="index" align="center" > <div class="change" id="a"> <h1 align="center"> 查看購物車 </h1> <h2> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </h2> <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> <table> <tr style="background-color:#E066FF"> <td>商品名稱</td> <td>商品單價</td> <td>購買數量</td> <td>操做</td> </tr></HeaderTemplate> <ItemTemplate> <tr style="background-color: #7FFFD4"> <td><%#Eval("FruitName") %></td> <td><%#Eval("FruitPrice") %></td> <td><%#Eval("Count") %></td> <td><a href="Delete.aspx?id=<%#Eval("FruitCode") %>">刪除</a></td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater> <p style="margin-left: 120px"> <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="返回" /> <a href="提交訂單.aspx"> <asp:Button ID="Button1" runat="server" Text="提交訂單" OnClick="Button1_Click" /></a> </p> <table class="tb" cellspacing="1" cellpadding="4" border="0"> <tr style="background-color: #ccffff"> <td>您一共消費了<asp:Label ID="Label1" runat="server" Text=""></asp:Label> 元 帳戶餘額 <asp:Label ID="Label2" runat="server" Text=""></asp:Label> 元 </td> </tr> </table> </div> </div> </form>
《查看代碼》:
namespace webfrom_購物車 { public partial class 查看購物車 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { decimal cost; if (Session["cart"] == null) //若是是空的,就給Session賦一個空的訂單 { List<OrderDetails> temp = new List<OrderDetails>(); //造一個新的訂單集合 Session["cart"] = temp;//給Session賦值 空的訂單 cost = 0; } //若是購物車不是空的,那麼訂單就是Session List<OrderDetails> list = Session["cart"] as List<OrderDetails>; //點擊一下購買,那麼Session便存了一個信息,而後放到了訂單集合裏面 cost = list.Sum(P =>P.FruitPrice* P.Count).Value; Session["cost"] = cost; Repeater1.DataSource = list; Repeater1.DataBind(); Literal1.Text = "總共消費" + cost + "元"; if (list.Count > 0) { Session["bianhao"] = list[0].FruitCode; Session["shuliang"] = list[0].Count; } } protected void Button1_Click(object sender, EventArgs e) { List<OrderDetails> list1 = Session["Cart"] as List<OrderDetails>; Repeater1.DataSource = list1; Repeater1.DataBind(); //計算商品總價,計算每一個對象的單價*數量,累加 decimal cost1 = list1.Sum(p => p.Count * p.FruitPrice).Value;//花費的金額 Label1.Text = cost1.ToString(); string listLog = (string)Session["user"]; Login l = new LoginBF().Select(listLog);//總價 decimal a =Convert .ToDecimal( l.Account); decimal yue = a - cost1;//用總價減去花費的金額=他剩下的餘額。 Label2.Text = yue.ToString(); } protected void Button2_Click(object sender, EventArgs e) { Response.Redirect("Index.aspx");//跳轉回主頁 } } }
(四) 提交訂單
效果圖:
《aspx代碼》:
namespace webfrom_購物車 { public partial class 提交訂單 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["user"] == null) { Response.Redirect("Login.aspx"); } if (Session["Cart"] != null) { try { List<OrderDetails> list = Session["Cart"] as List<OrderDetails>; decimal cost = list.Sum(p => p.Count * p.FruitPrice).Value; string listLog = (string)Session["user"]; Login l = new LoginBF().Select(listLog); if (l.Account > cost) { Session["BuyedCart"] = list; foreach (OrderDetails item in list) { new FruitBF().Update(item); } new LoginBF().UpdateRmb(l.UserName, cost); } else { Response.Write("<script>alert('餘額不足!')</script>"); } } catch (Exception) { Response.Write("<script>alert('提交失敗')</script>"); } } Response.Redirect("Index.aspx"); } } }
(五)添加一個刪除的窗口《Delete.aspx》
《查看代碼》:
namespace webfrom_購物車 { public partial class Delete : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["cart"] == null) //若是購物車是空的 { List<OrderDetails> temp = new List<OrderDetails>(); //造一個空的訂單 Session["cart"] = temp; //給Session賦值 } //不管是否是空的,都要執行下面的 List<OrderDetails> list = Session["cart"] as List<OrderDetails>; //訂單就是Session string id = Request["id"].ToString(); //開始執行刪除 var query = list.Where(P => P.FruitCode == id); if (query.Count() > 0) { OrderDetails data = query.First(); if (data.Count > 1) //證實之前買過,數量減減就好了 { data.Count--; } else { list.Remove(data); } } Response.Redirect("查看購物車.aspx"); } } }
(六)添加一個購買的窗口《Buy.aspx》
namespace webfrom_購物車 { public partial class Buy : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["user"] == null) { Response.Redirect("LogIn.aspx"); } string code = Request["id"].ToString(); if (Session["Cart"] == null) { List<OrderDetails> listOrder = new List<OrderDetails>(); Session["Cart"] = listOrder; } List<OrderDetails> list = Session["Cart"] as List<OrderDetails>; //查看Session["Cart"]中有沒有這個水果,若是沒有就添加進來一個,有就Count加一 var query = list.Where(p => p.FruitCode == code); if (query.Count() <= 0) { OrderDetails data = new OrderDetails(); data.FruitCode = code; data.Count = 1; list.Add(data); } else { OrderDetails data = query.First(); data.Count += 1; } Response.Redirect("Index.aspx"); } } }
(七) 添加一個JS的文件
(八)若是往DIV裏添加圖片的話,新建一個文件夾,把圖片放進這個文件夾裏,而後寫CSS調用就能夠了。