




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 仿当当网网上图书销售系统的实现仿当当网网上图书销售系统的实现摘摘 要要随着 internet 的迅速崛起,网络信息化的发展,在线图书销售作为一种典型的 web 电子商务系统也迅速的发展并深入人们的日常生活中。更多的人更愿意足不出户就可以挑选购买自己喜欢的各种书籍,这样大大缩短了购书的时间,提高了效率。可见,网上图书销售系统跨越了时间和空间的限制,给商业流通领域带来了不一样的变革,也给消费者带来了便捷。本系统采用 b/s 结构进行设计,是在.net 环境下使用 visual c#.net 语言开发的一个功能完善的网上图书销售系统。其具有一定的实用性,用户可以在网上浏览图书信息,查找图书资料,将
2、感兴趣的书籍加入收藏夹,或放入购物车并下订单购买;同时,管理员也可以对整个系统的信息和数据进行管理,可以管理库存书信息、分类信息、出版社信息、用户信息和订单信息。此外,本论文采用的分析方法和设计过程具有一定的普遍性,可以应用到其它系统的开发设计当中。关键词关键词:网上购书系统;.net;电子商务;数据库 the design and realization of web bookshop management system based on .netabstractwith the rapid rise of internet, the development of network infor
3、mation technology, web bookshop system as a typical electronic commerce system also develops rapidly and deeps into peoples life. more and more people could be willing to select and buy their favorite books at home, so that is greatly reducing the time of shopping, and improving the efficiency. obvi
4、ously, the web bookshop management system has crossed the constraint of the time and the space, it not only brings a different change to the commercial domain, but also brings convenient to the consumers. the system used b/s structure and developed a well-functioning online book sales system with th
5、e use of visual c#.net language based on .net. also, the system has some practicality, customers can browse the details of books on internet, search information of books, and add the books which they like to the favorites, or put them to the shopping cart and place an order to buy them. at the same
6、time, administrators can manage the entire systems information and data, as the information of inventory, category, publishers, customers and orders. in addition, the analysis method and design process in the thesis have some universality, and can be applied to design other application system.key wo
7、rds: web bookshop system; .net; electronic commerce; database 目目 录录论文总页数:28 页1引言.11.1课题背景.11.2本课题研究内容.11.3本课题研究的意义.12网上图书销售系统相关技术.12.1.net 开发平台及 c.net 开发语言.12.2微软企业库.22.3三层应用程序模型.22.4信息安全性.33网上图书销售系统规划设计.33.1需求分析.33.2系统基本结构.43.3系统设计.43.3.1系统模块设计.43.3.2数据库设计.54网上图书销售系统开发实现.94.1用户功能模块实现.94.1.1用户注册登录.9
8、4.1.2图书浏览.134.1.3图书显示.144.1.4图书搜索.154.1.5收藏夹.154.1.6购物车.154.1.7图书订单.194.2管理员功能模块实现.204.2.1图书管理.204.2.2分类信息管理.234.2.3出版商信息管理.244.2.4用户信息管理.254.2.5订单管理.25结 论.26参考文献.26第 1 页 共 28 页1 1 引言引言1.11.1 课题背景课题背景随着 internet 的迅速崛起,网络信息化的发展,在线图书销售作为一种典型的 web 电子商务系统也迅速的发展并深入人们的日常生活中。更多的人更愿意足不出户就可以挑选购买自己喜欢的各种书籍,这样大
9、大缩短了购书的时间,提高了效率。而且,图书因其具有标识精晰、规格统一、特征容易描述、同种商品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。可见,网上图书销售系统跨越了时间和空间的限制,给商业流通领域带来了不一样的变革,也给消费者带来了便捷。只要网络发展没有停止,网上图书销售的发展就不会停止。1.21.2 本课题研究本课题研究内容内容本系统采用 b/s(browser/server)结构进行设计,使用 sql server 2000构建数据库,并在.net 环境下使用 visual c#.net 语言开发的一个功能完善的网上图书销售系统。其具有一定的实用性,用户可以在网上浏览图书
10、信息,查找图书资料,将感兴趣的书籍加入收藏夹,或放入购物车并下订单购买;同时,管理员也可以对整个系统的信息和数据进行管理,可以管理库存书信息、分类信息、出版社信息、用户信息和订单信息。1.31.3 本课题研究的意义本课题研究的意义本课题的目标就是是将图书销售由传统的商店模式向在线销售的转变,同时还对销售的定单和图书的种类等信息进行在线管理,其意义就在于以此来实现人们不出门就能够便捷的买到自己喜欢的各种书籍,向客户展示出一种新颖的购书理念。网上购书的方式必将日趋被大家所接受。2 2网上图书销售系统相关技术网上图书销售系统相关技术2.12.1 .net 开发平台及开发平台及 c.net 开发语言开
11、发语言.net 框架是 microsoft 公司推出的一种全新的开发平台,提供了统一的、面向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的开发过程,并且具有良好的移植性和安全性。asp.net 是建立在公共语言运行库上的 web 编程框架,相对于 asp 而言,asp.net 提供了更强的性能、更方便的工具支持、更好的平台支持和灵活性。其一大革命性进步是可以将应用程序逻辑与表示代码清楚地分开,这样一来 web 应用程序的开发人员可以使用和windows 桌面程序开发类似的编程模型,从而大大降低了开发难度。同时,asp.net 在进行用户界面开发和基础程序结构生成时具有很多
12、优势。第 2 页 共 28 页首先,asp.net 是一个已编译的、基于.net 的开发环境,利用整个.net 框架,开发人员可以方便的进行程序开发;其次,asp.net 可以无缝地与其它 html编辑器及其编程工具一起工作,使得 web 开发更加方便;再次,在 asp.net 中利用.net 框架中的 ado.net 的强大功能,可以高效便捷的访问数据库,asp.net 提供了简单的模型,该模型使开发人员能够编写应用程序的运行逻辑,并且保留了会话状态功能;最后,.net 框架和 asp.net 中提供了默认授权和验证方案,可以根据需要方便地移除、添加或者替换这些方案。visual c#.ne
13、t 语言是.net 平台首推的开发语言,是一种全新的、面向对象的编程语言。c语言从 c+语言发展而来,它同时吸取了 c/c+和 java 语言的优点,可以快速地编写各种基于 microsoft .net 平台的应用程序。c#语言使开发者用更少的代码做更多的事,同时也不易出错,提高了编程效率和安全性。2.22.2 微软企业库微软企业库众所周知,重复编写数据访问的代码是十分繁琐的,实际上很多系统中都会有类似的模块,比如配置的保存和读取、写日志、异常的处理等,大多数情况下开发人员需要在每个系统中编写具有类似功能的子模块,因此虽然它们之间只存在细微的区别,但是代码必须做修改才能够满足要求。微软公司提供
14、的企业库正是为了解决这些问题而推出的,开发人员无需修改代码,只要修改几个配置文件,就可以在不同的系统中实现类似的功能。可见,企业库大大减少了系统连接数据库的代码,带来了方便。企业库(enterpriselibraryjune2005)是微软推出的开源项目,它为企业级开发提供了功能强大的多个应用程序块。该企业库的设计思想是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全、日志、数据访问、配置管理等,并将这些广泛使用的应用程序块集成封装至企业库的程序包中。企业库由七个子模块组成,分别是配置管理应用程序块(configuration application block) 、数
15、据访问应用程序块(data access application block) 、安全应用程序块(security application block) 、日志及仪表盘管理应用程序块(logging and instrumentation application block) 、加密应用程序块(cryptography application block) 、异常处理应用程序块(exception handling application block) 、缓存应用程序块(caching application block) ,这七个应用程序块几乎覆盖了企业级架构开发的核心环节。可见,企业库具有
16、可选择、可扩展、实用、强大、易用性和规范性等特性。2.32.3 三层应用程序模型三层应用程序模型本课题在系统设计上采用了三层应用程序模型。所谓的“三层应用程序模第 3 页 共 28 页型”是将系统按照功能的逻辑层次进行划分的,分别是表示层、业务逻辑层和数据访问层,以此实现模块化的设计。数据访问层顾名思义是用来处理系统对数据库的操作,系统中所有数据库的调用都通过数据访问层实现。业务逻辑层处于表示层和数据访问层之间,它一方面调用数据访问层的类和方法实现系统中的业务规则,一方面封装相应的调用方法供表示层调用。表示层主要包括了系统的页面呈现和相关控件的代码。这种多层的应用程序体系结构具有以下一些优点,
17、首先,程序代码在各个层次之间实现松耦合和模块化;其次,每个层次的代码可重用,维护性更好;最后,可以将各个层次在物理上部署到多个层次中,实现部署的可扩展性。2.42.4 信息安全性信息安全性在大多数系统中,用户的密码信息在数据库中是以明文的方式存放的,数据库管理员稍有疏忽就有可能导致用户的隐私泄漏,尤其是对于一些涉及金融、商业领域的网络应用,这一点漏洞将会导致十分严重的后果。所以,为了加强本系统信息的安全性,在用户登录模块中,对密码这样的敏感信息进行加密是十分必要的。本课题使用了一种常见的哈希加密算法md5 加密算法。md5加密算法是不可逆的,经过哈希加密的数据是没有相应的解密算法回到原状的,在
18、应用中是通过比较两个数据的哈希值是否相等,从而达到校验的目的。本课题中,在新客户注册的时候,对客户设置的登录密码用 md5 加密算法进行加密,那么存入数据库的将是客户登录密码的 md5 哈希值,在登录验证时根据用户输入的密码计算响应的 md5 哈希值进行比较。可见,通过 md5 算法实现了数据的加密存储和验证,同时,md5 加密是不可逆的,即使恶意攻击者获得了数据库的访问权限,也仍然无法得知用户的密码信息,从而提高了系统的安全性。3 3网上图书销售系统规划设计网上图书销售系统规划设计3.13.1 需求分析需求分析网上图书销售系统首先应该方便用户浏览、购买图书,同时需要由系统管理员进行管理和维护
19、,由此分为前台用户功能和后台管理员功能两个方面。前台用户功能:为了方便用户购买图书,网上图书销售系统应该提供以下几种用户功能。1) 用户注册登录:用户进行注册,登录。2) 图书浏览:以列表方式显示图书信息供用户浏览。3) 图书显示:显示图书的详细信息。4) 图书搜索:使用搜索功能使用户快速地找到所喜欢的图书。第 4 页 共 28 页5) 收藏夹:用户可以先将自己感兴趣的图书收藏起来,以便下次登录后查看相关信息,如果打算购买时再放入购物车中。6) 购物车:这是网上图书销售系统的基本元素。用户找到所喜欢的图书时,可以将其放入购物车中,再继续查看其它图书。7) 图书订单:用户下订单购买图书,由管理员
20、定期负责处理,根据订单信息向用户送货。后台管理员功能:管理员负责维护整个系统的运行,管理系统所有的信息和数据,应该提供以下功能。1) 图书管理:维护网上图书销售系统中的所有图书信息。2) 分类信息管理:维护系统中的所有分类信息。3) 出版商信息管理:维护系统中的所有出版商信息。4) 用户信息管理:显示所有注册用户的信息。5) 订单管理:定期对用户订单进行处理,向用户送货。3.23.2 系统基本结构系统基本结构由于 b/s(browser/server)结构具有较好的独立性、可伸缩性和安全性,适合于不同数据库之间的互连,并且便于管理维护,因此整个系统采用客户端、web 服务器及数据库服务器的 b
21、/s 结构进行设计。基本结构如图 2-1 所示。图 3-1 系统基本结构利用 iis 架构 web 服务器,用于连接客户端和数据库服务器。对于客户端发出的需要对数据库进行访问的请求,web 服务器负责客户端与数据库服务器的网络通信,并将相关数据嵌入返回给客户端的 web 页面;对于客户端发出的不需要对数据库进行访问的请求,web 服务器将直接处理这些请求,并将最终生成的 web 页面发往客户端浏览器。3.33.3 系统设计系统设计.1 系统模块设计系统模块设计分为用户功能模块设计和管理员功能模块设计两方面,用户登录后,可以进行图书浏览、下订单等操作;管理员登录后,可以进行图书管
22、理、分类信息管理、出版商信息管理、用户信息管理和订单管理等操作。1. 用户功能模块设计:普通用户的各个功能模块,具体设计如图 3-2 所示:第 5 页 共 28 页用用户户功功能能模模块块图书搜索收藏夹购物车图书订单用户注册登录图书浏览图书显示图 3-2 用户功能模块2. 管理员功能模块设计:管理员负责管理整个系统所有的信息和数据,并做相应的一些处理。其功能模块如图 3-3 所示。管管理理员员功功能能模模块块库存书的信息管理分类信息管理用户信息查询处理订单出版商信息管理图 3-3 管理员功能模块.2 数据库设计数据库设计数据库主要由 9 个数据表组成。books(图书信息表),
23、items(图书项信息表),categories(图书分类信息表)存储图书的分类信息,itemcategory(图书项与分类关联信息表) ,publishers(出版商信息表)存储出版商信息,customers(客户信息表)存储用户注册信息,favorites(收藏夹信息表)存储用户的收藏夹信息,orders(订单信息表)存储订单的各项信息,orderitems(订单项信息表)存储订单具体的购买信息。从而,可详细设计出各数据库对象,包括数据表和存储过程。数据表:第 6 页 共 28 页图书相关信息表分别如表 3-1、表 3-2、表 3-3、表 3-4、表 3-5 所示。表 3-1 图书信息表
24、booksbooks(itemid 为主键,publisherid 为外键)列(属性)名中文名称类型宽度是否允许为空itemid图书项 id 号int4not nullpublisherid出版商 id 号int4not nullauthor作者名nvarchar40not nullisbnisbn 号char10not nullsalenum已销售数量int4not null表 3-2 图书项信息表 itemsitems(pkid 为主键)列(属性)名中文名称类型宽度是否允许为空pkid图书项唯一 id int4not nullname书名nvarchar255not nullimagefi
25、lespace图书封面图文件地址nvarchar255nulldescription说明nvarchar2000nullunitprice单价momey8not null表 3-3 图书分类信息表 categoriescategories(pkid 为主键)列(属性)名中文名称类型宽度是否允许为空pkid分类唯一 idint4not nulldescription分类说明nvarchar255null表 3-4 图书项与分类关联信息表 itemcategoryitemcategory(itemid 为主键,categoryid 为外键)列(属性)名中文名称类型宽度是否允许为空itemid图书项
26、 id 号int4not nullcategoryid分类 id 号int4not null表 3-5 出版商信息表 publisherspublishers(pkid 为主键)列(属性)名中文名称类型宽度是否允许为空pkid出版商唯一 idint4not nullname出版商名称nvarchar40not null用户相关信息表分别如表 3-6、表 3-7 所示。表 3-6 客户信息表 customerscustomers(pkid 为主键)列(属性)名中文名称类型宽度是否允许为空pkid客户唯一 idint4not nullemail客户 emailnvarchar50not nullp
27、assword客户登录密码binary24nullname客户名称nvarchar40null第 7 页 共 28 页表 3-7 收藏夹信息表 favoritesfavorites(pkid 为主键,customerid、itemid 为外键)列(属性)名中文名称类型宽度是否允许为空pkid收藏夹 id 号int4not nullcustomerid客户 id 号int4not nullitemid图书项 id 号int4not null订单相关信息表分别如表 3-8、表 3-9 所示。表 3-8 订单信息表 ordersorders(pkid 为主键,customerid 为外键)列(属性)
28、名中文名称类型宽度是否允许为空pkid订单唯一 idint4not nullcustomerid客户 id 号int4nullstatus订单状态int4nullorderdata订单生成日期datetime8nullshiptoname收件人名称nvarchar40nullshiptoaddress送货地址nvarchar255not nullsubtotal总价momey8null表 3-9 订单项信息表 orderitemsorderitems(orderid 和 itemid 为主键)列(属性)名中文名称类型宽度是否允许为空orderid订单 id 号int4not nullitemi
29、d图书项 id 号int4not nullunitprice单价money8not nullquantity购买数量int4not null存储过程:因为存储过程可以在程序中被多次调用,而不必多次重复编写该存储过程的 sql 语句,所以数据库中建立了大量的存储过程,便于将相关信息加入到数据库中。与客户相关的存储过程有:新客户注册(customerregister) ,客户登录(customerlogin) ,修改客户信息(editcustomer) ,获取所有客户的信息(getcustomers) ,获取单个用户的信息(getcustomerbyid) 。与图书相关的存储过程有:新增图书(ad
30、dbook) ,删除图书(delbook) ,修改图书信息(editbook) ,获取所有图书信息(getallbooks) ,根据图书项 id获取单本图书信息(getbookbyid) ,根据分类 id 获取图书信息(getbooksbycategoryid) ,根据分类 id 获取热门书图书信息(getpopbooksbycategoryid) ,根据书名获取图书信息(getbooksbytitle) ,根据关键词获取图书信息(getbooksbykeyword) ,根据 isbn 获取图书信息(getbooksbyisbn) ,根据出版商获取图书信息(getbooksbypublishe
31、rid)根第 8 页 共 28 页据作者获取图书信息(getbooksbyauthor) 。与出版商相关的存储过程有:新增出版商(addpublisher) ,删除出版商(delpublisher) ,修改出版商信息(editpublisher) ,获取所有出版商信息(getpublishers) 。与图书分类相关的存储过程有:新增图书分类(addcategory) ,删除图书分类(delcategory) ,修改图书分类说明(editcategory) ,获取图书分类信息(getcategories)。与收藏夹相关的存储过程有:新增收藏记录(addfavorite) ,删除收藏信息(delf
32、avorite) ,根据客户 id 获取收藏记录(getfavoritesbycustomerid) 。与订单相关的存储过程有:获取订单信息(getorders) ,获取单条订单信息(getorderbyid) ,根据客户 id 获取订单信息(getordersbycustomerid) ,根据状态获取订单信息(getordersbystatus) ,根据日期获取订单信息(getordersbydate) ,提交订单(submitorder) ,修改订单(editorder) ,取消订单(cancelorder) ,接受订单(acceptorder) ,确定订单(confirmorder) ,
33、撤销订单(revokeorder) ,popfirstword ,插入订单明细记录(insertorderdetailsbylist) ,插入单条订单项(insertorderdetail) 。由于该系统建立的存储过程很多,所以在此就只列举出一个存储过程的sql 脚本。新增图书存储过程 addbook 的 sql 脚本如下:create procedure addbook name nvarchar(255), imagefilespace nvarchar(255), description nvarchar(2000), unitprice money, publisherid int,
34、author nvarchar(40), isbn nchar(13), categoryid int, itemid int = null output -output 可以返回一个值as begin tran -事务 -新增 items 表记录 insert items (name, imagefilespace, description, unitprice) select name,imagefilespace,description,unitprice第 9 页 共 28 页 select itemid = identity -获取数据表中最后一条插入数据的 identity 值-新
35、增 books 表记录 insert books (itemid, publisherid, author,isbn) select itemid,publisherid,author,isbn-新增 itemcategory 表记录 insert itemcategory (itemid,categoryid) select itemid,categoryid commit tran return 0go4 4网上图书销售系统开发实现网上图书销售系统开发实现4.14.1 用户功能模块实现用户功能模块实现用户功能模块主要包括注册登录、图书浏览、图书显示、图书搜索、购物车、收藏夹、图书订单这几个
36、部分。在程序设计中,各模块后台编码部分的设计实现是重点和难点,因此论文将着重说明模块的后台编码部分,对于页面设计部分只作了简单说明。.1 用户注册登录用户注册登录.2 图书浏览图书浏览图书浏览使用 2 种方式实现:分类浏览和热门书推荐。页面设计中,两种方式都使用了 asp.net 中的 datalist 控件来绑定数据,以列表方式显示。因为datalist 自定义模块比 datagrid 更能够显示丰富多变的数据列表。分类浏览和热门书推荐的实现都差不多,唯一的差异就是热门书推荐部分只显示销售量前 4 的图书。分类浏览图书页面的执行结果如图 4-3 所示。当用户点
37、击相关类别链接时,就可以实现分类浏览。这些链接包含查询字符串,在 web 服务器中通过解析这些字符串来确定用户所点击的链接。当点击“艺术”链接时,页面上半部分显示热门书推荐,下半部分显示全部图书列表,显示结果如图 4-4 所示。图 4-3 分类浏览页面 第 10 页 共 28 页图 4-4 分类浏览显示结果在分类浏览页面 category.aspx 的实现过程中,“收藏夹”按钮只有在用户登录的情况下才显示,在 datalist 控件里 itemcreate 事件的相应函数中添加了相应的代码进行判断。其后台的部分代码如下:private void dlbook_itemcreated(objec
38、t sender, system.web.ui.webcontrols.datalistitemeventargs e)/datalist.itemcreated ,当在 datalist 控件中创建项时在服务器上发生。imagebutton ib = e.item.findcontrol(ibfavorite) as imagebutton;if (ib != null)ib.visible = ucheader.islogin;/dlbook_itemcommand,当单击 datalist 控件中的任一按钮时发生private void dlbook_itemcommand(object
39、 source, system.web.ui.webcontrols.datalistcommandeventargs e)/添加图书到收藏夹或购物车if (e.commandname = addfavorite)int iitemid = convert.toint32(e.commandargument);int icustomerid = convert.toint32(user.identity.name);common.favorite f = new common.favorite(iitemid, icustomerid);if (favoritesystem.addfavori
40、te(f) 0)response.redirect(/favorite.aspx);elseresponse.write(add_favorite_fail);else if (e.commandname = addcart)int iitemid = convert.toint32(e.commandargument);bookcart.setitem(iitemid);response.redirect(/shoppingcart.aspx);.3 图书显示图书显示显示图书详细信息,书名、作者、价格、出版商、isbn 等信息,通过第 11 页 共 28 页datalist
41、控件来实现数据绑定。同时提供“购物车”和“收藏夹”链接,用于将图书加入购物车或收藏夹。点击图书封面图片,如“莲花”,会显示图书相关信息,如图 4-5 所示。图 4-5 图书详细信息显示页面如果喜欢该本书,可以通过点击“购物车”或“收藏夹”链接,将当前图书加入购物车或收藏夹。.4 图书搜索图书搜索用户点击“查找”按钮,可以对图书进行快速搜索,该功能也是通过一个datalist 控件来实现的。图书搜索方式使用控件标识定义,分别为书名、作者、isbn 和关键词,然后由用户输入搜索条件,程序便执行数据库中的存储工程在数据表中查找数据并显示出来。如果方式选择作者,输入条件为“安妮”,搜索
42、结果如图 3-6 所示。图 4-6 图书搜索结果显示.5 收藏夹收藏夹用户收藏夹存储书名、价格等信息。该页面的实现还是通过使用 datalist控件来显示用户收藏的图书。收藏夹页面执行结果如图 3-7 所示。图 4-7 收藏夹页面用户点击“收藏夹”链接,可以先将自己感兴趣的图书放入图书收藏夹。如果打算购买再从收藏夹中加入购物车,同时也提供了“删除”按钮,如果不喜欢收藏夹的部分图书,可以点击“删除”按钮删除收藏的图书。第 12 页 共 28 页.6 购物车购物车购物车是本系统的重要组成部分,这部分的设计是重点和难点。在本系统了主要实现了两个基本功能。用户添加图书,
43、即用户将打算购买的图书添加到购物车中;和用户管理自己的订单,即用户可以随时查看购物车,更新购物车中的图书数量,或者删除不想购买的图书。购物车利用 datagrid 控件来显示用户所选择的图书书名、单价、数量以及总价格等信息。在 datagrid 中主要使用了模板列 templatecolumn 进行显示和处理,模板列包括数量 quantity、书名 title、单价 unitprice 和小计 price,其中用户只可对图书数量进行修改。购物车的内容通过 session 对象来保存,因为会话状态 session 可以在会话期间为用户提供单独的数据,不同会话之间的信息是不共享的。其实现的代码如下
44、:public cart bookcart/通过session对象保存购物车内容getif (sessioncart = null)sessioncart = new cart();return (cart)sessioncart;setsessioncart = value;程序中使用 page_load()调用 bindgrid()函数将购物车中的图书信息绑定到 datagrid 中。bindgrid()实现数据绑定,通过使用大小可按需动态增加的数组arraylist 来记录图书项的 id 和购买数量,然后计算购买图书的总价格,其代码如下:private void bindgrid()de
45、cimal totalprice = 0;bookdata bookdata = new bookdata();bookdata.tablesbooks.columns.add(quantity, typeof(system.int32);bookdata.tablesbooks.columns.add(price, typeof(system.decimal);for (int i = 0;i bookcart.count;i+)/通过数组来实现计算总价格int iitemid = bookcart.getitemid(i);第 13 页 共 28 页int iquantity = book
46、cart.getquantity(i);bookdata tempdata = booksystem.searchbooks(booksearchtype.pkid, iitemid.tostring();bookdata.tablesbooks.importrow(tempdata.tablesbooks.rows0);bookdata.tablesbooks.rowsiquantity = iquantity;decimal unitprice = convert.todecimal(tempdata.tablesbooks.rows0unitprice); bookdata.tables
47、books.rowsiprice = iquantity * unitprice; /每项书的总价钱(小计数量单价)totalprice += iquantity * unitprice;/总价格bookdata.acceptchanges();dgcart.datasource = bookdata;dgcart.databind();lbltotal.text = string.format(总价:0, totalprice);其中 boocart 是购物车对象 cart 的一个实例,cart 类保存了多组图书项 id和购物数量的值,并且根据应用的需要实现了getitemid、getqua
48、ntity、setitem、clear 等方法。部分代码如下:private arraylist _itemid_arr;private arraylist _quantity_arr;public int countget return _itemid_arr.count;public int getitemid(int index) /获取图书项idif (index count)return (int)_itemid_arrindex;elsereturn -1;public int getquantity(int index)/获取各类图书的数量if (index 0)_quantit
49、y_arrindex = iquantity;else_itemid_arr.removeat(index);_quantity_arr.removeat(index);else_itemid_arr.add(iitemid);_quantity_arr.add(iquantity);购物车执行结果如图 4-8 所示:图 4-8 购物车页面如果用户想购买几本同样的图书,可以在购买数量文本框中输入想要购买的本数,然后单击“更新购物车”来更新购买数量,其实现代码如下:private void lbupdate_click(object sender, system.eventargs e)/更新购
50、物车foreach (datagriditem item in dgcart.items)int iquantity = convert.toint32(textbox)item.findcontrol(tbquantity).text);int iitemid = 第 15 页 共 28 页convert.toint32(htmlinputhidden)item.findcontrol(hiditemid).value);bookcart.setitem(iitemid, iquantity);bindgrid();当用户确定购买图书时,可以单击“提交订单”按钮转到提交订单submitord
51、er.aspx 页面。数据绑定的方法同购物车页面的方法一样,只是商品编号 pkid、数量 quantity、书名 title、单价 unitprice 和小计 price 都是绑定列,且都是只读的,不能修改。其执行结果页面如图 4-9 所示:图 4-9 提交订单页面然后,用户可以点击“提交订单”按钮将购物车中的每一项信息加入到数据库订单信息中,管理员可以根据订单信息向用户送货。.7 图书订单图书订单在购买记录页面,用户可以查看到自己所下的所有的订单信息,在管理员没有处理订单之前,用户可以取消所下的订单。该页面通过使用 datagrid 控件来实现数据绑定,具体通过 bindgr
52、id()函数来调用执行数据库中的存储工程,并根据订单状态来判断用户是否可以取消订单,其实现代码如下:private void bindgrid()orderdata orderdata = ordersystem.getordersbycustomerid(customerid);orderdata.tablesorders.columns.add(statusname, typeof(system.string);orderdata.tablesorders.columns.add(cancancel, typeof(system.boolean);foreach (datarow dr i
53、n orderdata.tablesorders.rows)drstatusname = getstatusname(int)drstatus);drcancancel = (int)drstatus = 0;orderdata.acceptchanges();dgorder.datasource = orderdata;dgorder.databind();用户登录后,购买记录页面执行结果如图 4-10 所示:第 16 页 共 28 页图 4-10 购买记录页面用户可以点击订单编号来查询自己所下订单的相关信息,其执行结果如图4-11 所示:图 4-11 订单详细信息页面4.24.2 管理员功
54、能模块实现管理员功能模块实现.1 图书管理图书管理图书管理是网上图书销售系统的重要组成部分。使用 datagrid 控件进行数据的展示、修改和删除。所有图书的展示通过执行 databind()来实现,其执行结果如图 4-12 所示:图 4-12 图书管理页面点击“添加新图书”,可以增加新图书的相关信息,其部分代码如下:private void lbaddbook_click(object sender, system.eventargs e) /添加图书项dgbooks.selectedindex = -1;pnldetail.visible = false;pnladdboo
55、k.visible = true;categorydata categorydata = categorysystem.getcategories();publisherdata publisherdata = publishersystem.getpublishers();dataset ds = new dataset();datatable dt = new datatable();第 17 页 共 28 页ds.tables.add(dt);ds.tables0.columns.add(categorylist, typeof(categorydata);ds.tables0.colu
56、mns.add(publisherlist, typeof(publisherdata);ds.tables0.rows.add(new object null, null);ds.tables0.rows0categorylist = categorydata;ds.tables0.rows0publisherlist = publisherdata;ds.acceptchanges();dladdbook.datasource = ds;dladdbook.databind();private void dladdbook_itemcommand(object source, system
57、.web.ui.webcontrols.datalistcommandeventargs e)/添加新图书if (e.commandname = canceladd) else if (e.commandname = submitadd)string strname = (textbox)(e.item.findcontrol(tbbooknameadd).text;string strauthor = (textbox)(e.item.findcontrol(tbauthoradd).text;string strisbn = (textbox)(e.item.findcontrol(tbi
58、sbnadd).text;string strdescription = (textbox)(e.item.findcontrol(tbdescriptionadd).text;string strunitprice = (textbox)(e.item.findcontrol(tbunitpriceadd).text;int icategoryid = convert.toint32(dropdownlist)(e.item.findcontrol(ddlcategoryadd).selectedvalue);int ipublisherid = convert.toint32(dropdo
59、wnlist)(e.item.findcontrol(ddlpublisheradd).selectedvalue);common.book book = new common.book(strname, , strdescription, strunitprice, ipublisherid, strauthor, strisbn, icategoryid);int iitemid = booksystem.addbook(book);book.imagefilespace = string.format(bookimages/0.jpg, iitemid);if (booksystem.e
60、ditbook(iitemid, book) = 0)lblmessage.text = add_success;/添加成功elselblmessage.text = add_fail;/添加失败uploadimage(iitemid);pnladdbook.visible = false;bindgrid();添加图书执行结果如图 4-13 所示:第 18 页 共 28 页图 4-13 添加图书点击“修改”按钮,可对图书相关信息进行修改。该处的难点是如何在点击“修改”按钮时在分类和出版商的下拉列表中显示全部的分类和出版商列表,而且默认选中的是图书当前的分类和出版商,该系统采用了数据绑定的方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司合规管理与战略风险试题及答案
- 法学概论独特视角试题及答案
- 公司目标达成过程中的战略风险管理策略试题及答案
- 2025年政治经济风险试题及答案
- 整体架构设计原则试题及答案
- 风险识别与应对能力试题及答案
- 行政管理新政策试题及答案
- 计算机软件考试个人复习轨迹试题及答案
- 设计符合人机交互的界面原则试题及答案
- 2025年软考网络管理员备考秘籍试题及答案
- 高校学生资助诚信教育主题活动
- 跨国公司海外人力资源外包与派遣管理合同
- LNG 加气站防雷安全培训与应急演练记录 202505
- 普惠金融专员试题及答案
- 【课件】认识民法典+课件统编版道德与法治七年级下册
- 2025年航天知识竞赛题库及答案
- 2025年人教版小学小升初科学模拟试卷(含答案解析)
- 肠易激综合征中西医结合诊疗专家共识(2025)解读课件
- 《金属疲劳与断裂》课件
- 2025年《民法典》应知应会知识竞赛题库(含各题型)
- 灸法完整版本
评论
0/150
提交评论