论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

基于.net的网上图书销售系统(论文+程序)

登录模块验证程序根据数据库中已有的注册信息,对客户端发送过来的Email和密码进行验证。判断该Email地址及相应的密码在数据库中是否存在,进而可进行购买图书等操作。输入信息,点击“登录”按钮将执行的部分程序代码如下:

http://www.paper51.com

         private void btnLogin_Click(object sender,System.EventArgs e)

copyright paper51.com

              { http://www.paper51.com

                     intiRet = CustomerSystem.Login(Email, Password); http://www.paper51.com

                     if((Email=="huangjun999@126.com")&&(Password=="admin"))

内容来自www.paper51.com

                     { copyright paper51.com

                            Session["UserName"]="huangjun999@126.com";//通过session验证管理员

copyright paper51.com

                            Response.Redirect("~/admin/Default.aspx");        //进入管理员页面 paper51.com

                     }

http://www.paper51.com

                     else http://www.paper51.com

                     {

paper51.com

                     if(iRet > 0) 内容来自论文无忧网 www.paper51.com

                     FormsAuthentication.RedirectFromLoginPage(iRet.ToString(),false);//重定向               else http://www.paper51.com

                     { copyright paper51.com

                            lblMessage.Visible= true; http://www.paper51.com

                            lblMessage.Text= LOGIN_FAIL_MESSAGE; copyright paper51.com

                     } paper51.com

                     } paper51.com

如果Email为"huangjun999@126.com"并且Password为"admin",就进入后台管理员页面,其它用户成功登录后则进入前台图书销售页面。 copyright paper51.com

4.1.2   图书浏览

内容来自论文无忧网 www.paper51.com

图书浏览使用2种方式实现:分类浏览和热门书推荐。页面设计中,两种方式都使用了ASP.NET中的DataList控件来绑定数据,以列表方式显示。因为datalist自定义模块比datagrid更能够显示丰富多变的数据列表。 内容来自www.paper51.com

分类浏览和热门书推荐的实现都差不多,唯一的差异就是热门书推荐部分只显示销售量前4的图书。

copyright paper51.com

分类浏览图书页面的执行结果如图4-3所示。

内容来自www.paper51.com

当用户点击相关类别链接时,就可以实现分类浏览。这些链接包含查询字符串,在Web服务器中通过解析这些字符串来确定用户所点击的链接。当点击“艺术”链接时,页面上半部分显示热门书推荐,下半部分显示全部图书列表,显示结果如图4-4所示。

http://www.paper51.com

内容来自www.paper51.com

图4-3 分类浏览页面                     内容来自www.paper51.com

paper51.com

图4-4 分类浏览显示结果 http://www.paper51.com

在分类浏览页面Category.aspx的实现过程中,“收藏夹”按钮只有在用户登录的情况下才显示,在DataList控件里ItemCreate事件的相应函数中添加了相应的代码进行判断。其后台的部分代码如下: paper51.com

       private voiddlBook_ItemCreated(object sender,System.Web.UI.WebControls.DataListItemEventArgs e)

paper51.com

              {     //DataList.ItemCreated ,当在 DataList 控件中创建项时在服务器上发生。

内容来自www.paper51.com

                     ImageButtonib = e.Item.FindControl("ibFavorite") as ImageButton;

paper51.com

                     if(ib != null)

http://www.paper51.com

                            ib.Visible= ucHeader.IsLogin; paper51.com

              }

内容来自www.paper51.com

//dlBook_ItemCommand,当单击 DataList 控件中的任一按钮时发生 http://www.paper51.com

private voiddlBook_ItemCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgse) //添加图书到收藏夹或购物车 内容来自论文无忧网 www.paper51.com

              { http://www.paper51.com

                     if(e.CommandName == "AddFavorite")

内容来自论文无忧网 www.paper51.com

                     { paper51.com

                            intiItemId = Convert.ToInt32(e.CommandArgument); http://www.paper51.com

                            intiCustomerId = Convert.ToInt32(User.Identity.Name); http://www.paper51.com

                            Common.Favoritef = new Common.Favorite(iItemId, iCustomerId); http://www.paper51.com

                            if(FavoriteSystem.AddFavorite(f) > 0)

paper51.com

                                   Response.Redirect("~/Favorite.aspx");

paper51.com

                            else copyright paper51.com

                                   Response.Write(ADD_FAVORITE_FAIL);

内容来自www.paper51.com

                     } paper51.com

                     elseif (e.CommandName == "AddCart")

内容来自论文无忧网 www.paper51.com

                     { http://www.paper51.com

                            intiItemId = Convert.ToInt32(e.CommandArgument); copyright paper51.com

                            BookCart.SetItem(iItemId);

内容来自论文无忧网 www.paper51.com

                            Response.Redirect("~/ShoppingCart.aspx"); copyright paper51.com

                     } 内容来自论文无忧网 www.paper51.com

              } copyright paper51.com

4.1.3   图书显示

copyright paper51.com

显示图书详细信息,书名、作者、价格、出版商、ISBN等信息,通过DataList控件来实现数据绑定。同时提供“购物车”和“收藏夹”链接,用于将图书加入购物车或收藏夹。 内容来自www.paper51.com

点击图书封面图片,如“莲花”,会显示图书相关信息,如图4-5所示。 paper51.com

copyright paper51.com

图4-5 图书详细信息显示页面 内容来自www.paper51.com

如果喜欢该本书,可以通过点击“购物车”或“收藏夹”链接,将当前图书加入购物车或收藏夹。

copyright paper51.com

4.1.4   图书搜索 内容来自www.paper51.com

用户点击“查找”按钮,可以对图书进行快速搜索,该功能也是通过一个DataList控件来实现的。图书搜索方式使用<asp:DropDownList>控件标识定义,分别为书名、作者、ISBN和关键词,然后由用户输入搜索条件,程序便执行数据库中的存储工程在数据表中查找数据并显示出来。如果方式选择作者,输入条件为“安妮”,搜索结果如图3-6所示。

copyright paper51.com

内容来自www.paper51.com

图4-6 图书搜索结果显示 内容来自www.paper51.com

4.1.5   收藏夹

内容来自论文无忧网 www.paper51.com

用户收藏夹存储书名、价格等信息。该页面的实现还是通过使用DataList控件来显示用户收藏的图书。收藏夹页面执行结果如图3-7所示。

内容来自www.paper51.com

图4-7 收藏夹页面

copyright paper51.com

用户点击“收藏夹”链接,可以先将自己感兴趣的图书放入图书收藏夹。如果打算购买再从收藏夹中加入购物车,同时也提供了“删除”按钮,如果不喜欢收藏夹的部分图书,可以点击“删除”按钮删除收藏的图书。

copyright paper51.com

4.1.6   购物车

内容来自论文无忧网 www.paper51.com

购物车是本系统的重要组成部分,这部分的设计是重点和难点。在本系统了主要实现了两个基本功能。用户添加图书,即用户将打算购买的图书添加到购物车中;和用户管理自己的订单,即用户可以随时查看购物车,更新购物车中的图书数量,或者删除不想购买的图书。

paper51.com

购物车利用DataGrid控件来显示用户所选择的图书书名、单价、数量以及总价格等信息。在DataGrid中主要使用了模板列TemplateColumn进行显示和处理,模板列包括数量Quantity、书名Title、单价UnitPrice和小计Price,其中用户只可对图书数量进行修改。

paper51.com

购物车的内容通过Session对象来保存,因为会话状态Session可以在会话期间为用户提供单独的数据,不同会话之间的信息是不共享的。其实现的代码如下: paper51.com

              publicCart BookCart            //通过Session对象保存购物车内容

paper51.com

              { paper51.com

                     get http://www.paper51.com

                     {

内容来自论文无忧网 www.paper51.com

                            if(Session["Cart"] == null) paper51.com

                                   Session["Cart"]= new Cart();

paper51.com

                            return(Cart)Session["Cart"]; 内容来自www.paper51.com

                     }

内容来自www.paper51.com

                     set

内容来自论文无忧网 www.paper51.com

                     {

内容来自论文无忧网 www.paper51.com

                            Session["Cart"]= value; 内容来自论文无忧网 www.paper51.com

                     }

copyright paper51.com

        }

copyright paper51.com

程序中使用Page_Load()调用BindGrid()函数将购物车中的图书信息绑定到DataGrid中。 paper51.com

BindGrid()实现数据绑定,通过使用大小可按需动态增加的数组ArrayList来记录图书项的ID和购买数量,然后计算购买图书的总价格,其代码如下:

http://www.paper51.com

              privatevoid BindGrid() 内容来自www.paper51.com

              {

内容来自www.paper51.com

                     decimaltotalprice = 0;

copyright paper51.com

                     BookDatabookdata = new BookData(); paper51.com

                     bookdata.Tables["Books"].Columns.Add("Quantity",typeof(System.Int32));

内容来自www.paper51.com

                     bookdata.Tables["Books"].Columns.Add("Price",typeof(System.Decimal)); copyright paper51.com

                     for(int i = 0;i < BookCart.Count;i++)   //通过数组来实现计算总价格

copyright paper51.com

                     {

内容来自www.paper51.com

                            intiItemId = BookCart.GetItemId(i); copyright paper51.com

                            intiQuantity = BookCart.GetQuantity(i);

内容来自论文无忧网 www.paper51.com

                            BookDatatempdata = BookSystem.SearchBooks(BookSearchType.PKId, iItemId.ToString());

http://www.paper51.com

                            bookdata.Tables["Books"].ImportRow(tempdata.Tables["Books"].Rows[0]);

内容来自论文无忧网 www.paper51.com

                            bookdata.Tables["Books"].Rows[i]["Quantity"]= iQuantity; http://www.paper51.com

                            decimalunitprice = Convert.ToDecimal(tempdata.Tables["Books"].Rows[0]["UnitPrice"]);                内容来自www.paper51.com

                            bookdata.Tables["Books"].Rows[i]["Price"]= iQuantity * unitprice;   //每项书的总价钱(小计=数量×单价)

内容来自www.paper51.com

                            totalprice+= iQuantity * unitprice;              //总价格 copyright paper51.com

                     } 内容来自论文无忧网 www.paper51.com

                     bookdata.AcceptChanges(); 内容来自www.paper51.com

                     dgCart.DataSource= bookdata;

copyright paper51.com

                     dgCart.DataBind();

paper51.com

                     lblTotal.Text= string.Format("总价:{0}",totalprice);

内容来自论文无忧网 www.paper51.com

              }

内容来自论文无忧网 www.paper51.com

其中BooCart是购物车对象Cart的一个实例,Cart类保存了多组图书项ID和购物数量的值,并且根据应用的需要实现了GetItemID、GetQuantity、SetItem、Clear等方法。部分代码如下:

paper51.com

            privateArrayList _itemid_arr; copyright paper51.com

        privateArrayList _quantity_arr;

内容来自www.paper51.com

              publicint Count

内容来自论文无忧网 www.paper51.com

              {

paper51.com

                     get{return _itemid_arr.Count;} paper51.com

              } 内容来自论文无忧网 www.paper51.com

              publicint GetItemId(int index)    //获取图书项ID 

copyright paper51.com

              {

内容来自论文无忧网 www.paper51.com

                     if(index < Count)

copyright paper51.com

                            return(int)_itemid_arr[index]; paper51.com

                     else

http://www.paper51.com

                            return-1; 内容来自论文无忧网 www.paper51.com

              }

内容来自www.paper51.com

              publicint GetQuantity(int index)           //获取各类图书的数量 内容来自www.paper51.com

              { 内容来自www.paper51.com

                     if(index < Count)

内容来自www.paper51.com

                            return(int)_quantity_arr[index];

copyright paper51.com

                     else 内容来自www.paper51.com

                            return-1; 内容来自论文无忧网 www.paper51.com

        } copyright paper51.com

              publicvoid SetItem(int iItemId)           //购买图书,系统自动设置数量为1本 http://www.paper51.com

              { copyright paper51.com

                     intindex = _itemid_arr.IndexOf(iItemId);

内容来自论文无忧网 www.paper51.com

                     if(index != -1)

内容来自www.paper51.com

                     { 内容来自论文无忧网 www.paper51.com

                            _quantity_arr[index]= (int)_quantity_arr[index] + 1; copyright paper51.com

                     }

内容来自www.paper51.com

                     else 内容来自www.paper51.com

                     { paper51.com

                            _itemid_arr.Add(iItemId);

内容来自www.paper51.com

                            _quantity_arr.Add(1);

内容来自www.paper51.com

                     } copyright paper51.com

              } http://www.paper51.com

              publicvoid SetItem(int iItemId, int iQuantity) //(重载函数)购买图书,用户设置数量

内容来自论文无忧网 www.paper51.com

              {

内容来自www.paper51.com

                     intindex = _itemid_arr.IndexOf(iItemId); copyright paper51.com

                     if(index != -1)

paper51.com

                     { http://www.paper51.com

                            if(iQuantity > 0) paper51.com

                                   _quantity_arr[index]= iQuantity; 内容来自论文无忧网 www.paper51.com

                            else 内容来自论文无忧网 www.paper51.com

                            { paper51.com

                                   _itemid_arr.RemoveAt(index);

http://www.paper51.com

                                   _quantity_arr.RemoveAt(index);

paper51.com

                            }

http://www.paper51.com

                     }

http://www.paper51.com

                     else 内容来自论文无忧网 www.paper51.com

                     { http://www.paper51.com

                            _itemid_arr.Add(iItemId);

http://www.paper51.com

                            _quantity_arr.Add(iQuantity);

copyright paper51.com

                     }

http://www.paper51.com

        }

http://www.paper51.com

购物车执行结果如图4-8所示:

paper51.com

图4-8 购物车页面 copyright paper51.com

如果用户想购买几本同样的图书,可以在购买数量文本框中输入想要购买的本数,然后单击“更新购物车”来更新购买数量,其实现代码如下:

copyright paper51.com

         private voidlbUpdate_Click(object sender, System.EventArgs e)              //更新购物车 copyright paper51.com

              { 内容来自论文无忧网 www.paper51.com

                     foreach(DataGridItem item in dgCart.Items)

内容来自www.paper51.com

                     { 内容来自www.paper51.com

                            intiQuantity = Convert.ToInt32(((TextBox)item.FindControl("tbQuantity")).Text); http://www.paper51.com

                            intiItemId =Convert.ToInt32(((HtmlInputHidden)item.FindControl("hidItemId")).Value);

内容来自www.paper51.com

                            BookCart.SetItem(iItemId,iQuantity); 内容来自www.paper51.com

                     }

http://www.paper51.com

                     BindGrid();

内容来自www.paper51.com

        }

内容来自论文无忧网 www.paper51.com

------分隔线----------------------------
联系方式