Webfrom --購物車

☆購物車實現的功能: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">
                     &nbsp;查看購物車
                </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>
&nbsp;元 帳戶餘額
                                  <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調用就能夠了。