毕业设计(论文)-仿当当网网上图书销售系统的实现.doc_第1页
毕业设计(论文)-仿当当网网上图书销售系统的实现.doc_第2页
毕业设计(论文)-仿当当网网上图书销售系统的实现.doc_第3页
毕业设计(论文)-仿当当网网上图书销售系统的实现.doc_第4页
毕业设计(论文)-仿当当网网上图书销售系统的实现.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

仿当当网网上图书销售系统的实现仿当当网网上图书销售系统的实现 摘摘 要要 随着 internet 的迅速崛起,网络信息化的发展,在线图书销售作为一种典型 的 web 电子商务系统也迅速的发展并深入人们的日常生活中。更多的人更愿意 足不出户就可以挑选购买自己喜欢的各种书籍,这样大大缩短了购书的时间, 提高了效率。可见,网上图书销售系统跨越了时间和空间的限制,给商业流通 领域带来了不一样的变革,也给消费者带来了便捷。本系统采用 b/s 结构进行 设计,是在.net 环境下使用 visual c#.net 语言开发的一个功能完善的网上图书 销售系统。其具有一定的实用性,用户可以在网上浏览图书信息,查找图书资料, 将感兴趣的书籍加入收藏夹,或放入购物车并下订单购买;同时,管理员也可以 对整个系统的信息和数据进行管理,可以管理库存书信息、分类信息、出版社信 息、用户信息和订单信息。此外,本论文采用的分析方法和设计过程具有一定 的普遍性,可以应用到其它系统的开发设计当中。 关键词关键词:网上购书系统;.net;电子商务;数据库 the design and realization of web bookshop management system based on .net abstract with the rapid rise of internet, the development of network information 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. obviously, 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 the 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 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 words: web bookshop system; .net; electronic commerce; database 目目 录录 论文总页数:28 页 1引言1 1.1课题背景1 1.2本课题研究内容1 1.3本课题研究的意义1 2网上图书销售系统相关技术1 2.1.net 开发平台及 c.net 开发语言1 2.2微软企业库2 2.3三层应用程序模型2 2.4信息安全性3 3网上图书销售系统规划设计3 3.1需求分析3 3.2系统基本结构4 3.3系统设计4 3.3.1系统模块设计4 3.3.2数据库设计5 4网上图书销售系统开发实现9 4.1用户功能模块实现9 4.1.1用户注册登录9 4.1.2图书浏览13 4.1.3图书显示14 4.1.4图书搜索15 4.1.5收藏夹15 4.1.6购物车15 4.1.7图书订单19 4.2管理员功能模块实现20 4.2.1图书管理20 4.2.2分类信息管理23 4.2.3出版商信息管理24 4.2.4用户信息管理25 4.2.5订单管理25 结 论26 参考文献26 第 1 页 共 28 页 1 1 引言引言 1.11.1 课题背景课题背景 随着 internet 的迅速崛起,网络信息化的发展,在线图书销售作为一种典型 的 web 电子商务系统也迅速的发展并深入人们的日常生活中。更多的人更愿意 足不出户就可以挑选购买自己喜欢的各种书籍,这样大大缩短了购书的时间, 提高了效率。而且,图书因其具有标识精晰、规格统一、特征容易描述、同种商 品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。可见, 网上图书销售系统跨越了时间和空间的限制,给商业流通领域带来了不一样的 变革,也给消费者带来了便捷。只要网络发展没有停止,网上图书销售的发展 就不会停止。 1.21.2 本课题研究本课题研究内容内容 本系统采用 b/s(browser/server)结构进行设计,使用 sql server 2000 构建数据库,并在.net 环境下使用 visual c#.net 语言开发的一个功能完善的网 上图书销售系统。其具有一定的实用性,用户可以在网上浏览图书信息,查找图 书资料,将感兴趣的书籍加入收藏夹,或放入购物车并下订单购买;同时,管理员 也可以对整个系统的信息和数据进行管理,可以管理库存书信息、分类信息、出 版社信息、用户信息和订单信息。 1.31.3 本课题研究的意义本课题研究的意义 本课题的目标就是是将图书销售由传统的商店模式向在线销售的转变,同时 还对销售的定单和图书的种类等信息进行在线管理,其意义就在于以此来实现 人们不出门就能够便捷的买到自己喜欢的各种书籍,向客户展示出一种新颖的 购书理念。网上购书的方式必将日趋被大家所接受。 2 2网上图书销售系统相关技术网上图书销售系统相关技术 2.12.1 .net 开发平台及开发平台及 c.net 开发语言开发语言 .net 框架是 microsoft 公司推出的一种全新的开发平台,提供了统一的、面 向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的 开发过程,并且具有良好的移植性和安全性。asp.net 是建立在公共语言运行 库上的 web 编程框架,相对于 asp 而言,asp.net 提供了更强的性能、更方 便的工具支持、更好的平台支持和灵活性。其一大革命性进步是可以将应用程 序逻辑与表示代码清楚地分开,这样一来 web 应用程序的开发人员可以使用和 windows 桌面程序开发类似的编程模型,从而大大降低了开发难度。 同时,asp.net 在进行用户界面开发和基础程序结构生成时具有很多优势。 第 2 页 共 28 页 首先,asp.net 是一个已编译的、基于.net 的开发环境,利用整个.net 框架, 开发人员可以方便的进行程序开发;其次,asp.net 可以无缝地与其它 html 编辑器及其编程工具一起工作,使得 web 开发更加方便;再次,在 asp.net 中 利用.net 框架中的 ado.net 的强大功能,可以高效便捷的访问数据库, asp.net 提供了简单的模型,该模型使开发人员能够编写应用程序的运行逻辑, 并且保留了会话状态功能;最后,.net 框架和 asp.net 中提供了默认授权和 验证方案,可以根据需要方便地移除、添加或者替换这些方案。 visual c#.net 语言是.net 平台首推的开发语言,是一种全新的、面向对 象的编程语言。c语言从 c+语言发展而来,它同时吸取了 c/c+和 java 语 言的优点,可以快速地编写各种基于 microsoft .net 平台的应用程序。c#语言 使开发者用更少的代码做更多的事,同时也不易出错,提高了编程效率和安全 性。 2.22.2 微软企业库微软企业库 众所周知,重复编写数据访问的代码是十分繁琐的,实际上很多系统中都 会有类似的模块,比如配置的保存和读取、写日志、异常的处理等,大多数情 况下开发人员需要在每个系统中编写具有类似功能的子模块,因此虽然它们之 间只存在细微的区别,但是代码必须做修改才能够满足要求。微软公司提供的 企业库正是为了解决这些问题而推出的,开发人员无需修改代码,只要修改几 个配置文件,就可以在不同的系统中实现类似的功能。可见,企业库大大减少 了系统连接数据库的代码,带来了方便。 企业库(enterpriselibraryjune2005)是微软推出的开源项目,它为企业级开 发提供了功能强大的多个应用程序块。该企业库的设计思想是为了协助开发商 解决企业级应用开发过程中所面临的一系列共性的问题, 如安全、日志、数据 访问、配置管理等,并将这些广泛使用的应用程序块集成封装至企业库的程序 包中。企业库由七个子模块组成,分别是配置管理应用程序块(configuration application block) 、数据访问应用程序块(data access application block) 、安 全应用程序块(security application block) 、日志及仪表盘管理应用程序块 (logging and instrumentation application block) 、加密应用程序块 (cryptography application block) 、异常处理应用程序块(exception handling application block) 、缓存应用程序块(caching application block) ,这七个应用 程序块几乎覆盖了企业级架构开发的核心环节。可见,企业库具有可选择、可 扩展、实用、强大、易用性和规范性等特性。 2.32.3 三层应用程序模型三层应用程序模型 本课题在系统设计上采用了三层应用程序模型。所谓的“三层应用程序模 第 3 页 共 28 页 型”是将系统按照功能的逻辑层次进行划分的,分别是表示层、业务逻辑层和 数据访问层,以此实现模块化的设计。数据访问层顾名思义是用来处理系统对 数据库的操作,系统中所有数据库的调用都通过数据访问层实现。业务逻辑层 处于表示层和数据访问层之间,它一方面调用数据访问层的类和方法实现系统 中的业务规则,一方面封装相应的调用方法供表示层调用。表示层主要包括了 系统的页面呈现和相关控件的代码。 这种多层的应用程序体系结构具有以下一些优点,首先,程序代码在各个 层次之间实现松耦合和模块化;其次,每个层次的代码可重用,维护性更好; 最后,可以将各个层次在物理上部署到多个层次中,实现部署的可扩展性。 2.42.4 信息安全性信息安全性 在大多数系统中,用户的密码信息在数据库中是以明文的方式存放的,数 据库管理员稍有疏忽就有可能导致用户的隐私泄漏,尤其是对于一些涉及金融、 商业领域的网络应用,这一点漏洞将会导致十分严重的后果。所以,为了加强 本系统信息的安全性,在用户登录模块中,对密码这样的敏感信息进行加密是 十分必要的。本课题使用了一种常见的哈希加密算法md5 加密算法。md5 加密算法是不可逆的,经过哈希加密的数据是没有相应的解密算法回到原状的, 在应用中是通过比较两个数据的哈希值是否相等,从而达到校验的目的。本课 题中,在新客户注册的时候,对客户设置的登录密码用 md5 加密算法进行加密, 那么存入数据库的将是客户登录密码的 md5 哈希值,在登录验证时根据用户输 入的密码计算响应的 md5 哈希值进行比较。 可见,通过 md5 算法实现了数据的加密存储和验证,同时,md5 加密是 不可逆的,即使恶意攻击者获得了数据库的访问权限,也仍然无法得知用户的 密码信息,从而提高了系统的安全性。 3 3网上图书销售系统规划设计网上图书销售系统规划设计 3.13.1 需求分析需求分析 网上图书销售系统首先应该方便用户浏览、购买图书,同时需要由系统管 理员进行管理和维护,由此分为前台用户功能和后台管理员功能两个方面。 前台用户功能: 为了方便用户购买图书,网上图书销售系统应该提供以下几种用户功能。 1) 用户注册登录:用户进行注册,登录。 2) 图书浏览:以列表方式显示图书信息供用户浏览。 3) 图书显示:显示图书的详细信息。 4) 图书搜索:使用搜索功能使用户快速地找到所喜欢的图书。 第 4 页 共 28 页 5) 收藏夹:用户可以先将自己感兴趣的图书收藏起来,以便下次登录后查 看相关信息,如果打算购买时再放入购物车中。 6) 购物车:这是网上图书销售系统的基本元素。用户找到所喜欢的图书时, 可以将其放入购物车中,再继续查看其它图书。 7) 图书订单:用户下订单购买图书,由管理员定期负责处理,根据订单信 息向用户送货。 后台管理员功能: 管理员负责维护整个系统的运行,管理系统所有的信息和数据,应该提供 以下功能。 1) 图书管理:维护网上图书销售系统中的所有图书信息。 2) 分类信息管理:维护系统中的所有分类信息。 3) 出版商信息管理:维护系统中的所有出版商信息。 4) 用户信息管理:显示所有注册用户的信息。 5) 订单管理:定期对用户订单进行处理,向用户送货。 3.23.2 系统基本结构系统基本结构 由于 b/s(browser/server)结构具有较好的独立性、可伸缩性和安全性,适 合于不同数据库之间的互连,并且便于管理维护,因此整个系统采用客户端、 web 服务器及数据库服务器的 b/s 结构进行设计。基本结构如图 2-1 所示。 图 3-1 系统基本结构 利用 iis 架构 web 服务器,用于连接客户端和数据库服务器。对于客户端 发出的需要对数据库进行访问的请求,web 服务器负责客户端与数据库服务器 的网络通信,并将相关数据嵌入返回给客户端的 web 页面;对于客户端发出的 不需要对数据库进行访问的请求,web 服务器将直接处理这些请求,并将最终 生成的 web 页面发往客户端浏览器。 3.33.3 系统设计系统设计 .1 系统模块设计系统模块设计 分为用户功能模块设计和管理员功能模块设计两方面,用户登录后,可以 进行图书浏览、下订单等操作;管理员登录后,可以进行图书管理、分类信息 管理、出版商信息管理、用户信息管理和订单管理等操作。 1. 用户功能模块设计: 普通用户的各个功能模块,具体设计如图 3-2 所示: 第 5 页 共 28 页 用用户户功功能能模模块块 图书搜索收藏夹购物车图书订单 用户注 册登录 图书浏览图书显示 图 3-2 用户功能模块 2. 管理员功能模块设计: 管理员负责管理整个系统所有的信息和数据,并做相应的一些处理。其功 能模块如图 3-3 所示。 管管理理员员功功能能模模块块 库存书的 信息管理 分类信息 管理 用户信息 查询 处理订单 出版商信 息管理 图 3-3 管理员功能模块 .2 数据库设计数据库设计 数据库主要由 9 个数据表组成。books(图书信息表),items(图书项信 息表),categories(图书分类信息表)存储图书的分类信息, itemcategory(图书项与分类关联信息表) ,publishers(出版商信息表)存储出 版商信息,customers(客户信息表)存储用户注册信息,favorites(收藏夹信 息表)存储用户的收藏夹信息,orders(订单信息表)存储订单的各项信息, orderitems(订单项信息表)存储订单具体的购买信息。从而,可详细设计出各 数据库对象,包括数据表和存储过程。 数据表: 第 6 页 共 28 页 图书相关信息表分别如表 3-1、表 3-2、表 3-3、表 3-4、表 3-5 所示。 表 3-1 图书信息表 books books(itemid 为主键,publisherid 为外键) 列(属性)名中文名称类型宽度是否允许为空 itemid 图书项 id 号 int4not null publisherid 出版商 id 号 int4not null author 作者名 nvarchar40not null isbn isbn 号 char10not null salenum 已销售数量 int4not null 表 3-2 图书项信息表 items items(pkid 为主键) 列(属性)名中文名称类型宽度是否允许为空 pkid 图书项唯一 id int4not null name 书名 nvarchar255not null imagefilespace 图书封面图文件地址 nvarchar255null description 说明 nvarchar2000null unitprice 单价 momey8not null 表 3-3 图书分类信息表 categories categories(pkid 为主键) 列(属性)名中文名称类型宽度是否允许为空 pkid 分类唯一 id int4not null description 分类说明 nvarchar255null 表 3-4 图书项与分类关联信息表 itemcategory itemcategory(itemid 为主键,categoryid 为外键) 列(属性)名中文名称类型宽度是否允许为空 itemid 图书项 id 号 int4not null categoryid 分类 id 号 int4not null 表 3-5 出版商信息表 publishers publishers(pkid 为主键) 列(属性)名中文名称类型宽度是否允许为空 pkid 出版商唯一 id int4not null name 出版商名称 nvarchar40not null 用户相关信息表分别如表 3-6、表 3-7 所示。 表 3-6 客户信息表 customers customers(pkid 为主键) 列(属性)名中文名称类型宽度是否允许为空 pkid 客户唯一 id int4not null email 客户 email nvarchar50not null password 客户登录密码 binary24null name 客户名称 nvarchar40null 第 7 页 共 28 页 表 3-7 收藏夹信息表 favorites favorites(pkid 为主键,customerid、itemid 为外键) 列(属性)名中文名称类型宽度是否允许为空 pkid 收藏夹 id 号 int4not null customerid 客户 id 号 int4not null itemid 图书项 id 号 int4not null 订单相关信息表分别如表 3-8、表 3-9 所示。 表 3-8 订单信息表 orders orders(pkid 为主键,customerid 为外键) 列(属性)名中文名称类型宽度是否允许为空 pkid 订单唯一 id int4not null customerid 客户 id 号 int4null status 订单状态 int4null orderdata 订单生成日期 datetime8null shiptoname 收件人名称 nvarchar40null shiptoaddress 送货地址 nvarchar255not null subtotal 总价 momey8null 表 3-9 订单项信息表 orderitems orderitems(orderid 和 itemid 为主键) 列(属性)名中文名称类型宽度是否允许为空 orderid 订单 id 号 int4not null itemid 图书项 id 号 int4not null unitprice 单价 money8not null quantity 购买数量 int4not null 存储过程: 因为存储过程可以在程序中被多次调用,而不必多次重复编写该存储过程 的 sql 语句,所以数据库中建立了大量的存储过程,便于将相关信息加入到数 据库中。 与客户相关的存储过程有:新客户注册(customerregister) ,客户登录 (customerlogin) ,修改客户信息(editcustomer) ,获取所有客户的信息 (getcustomers) ,获取单个用户的信息(getcustomerbyid) 。 与图书相关的存储过程有:新增图书(addbook) ,删除图书(delbook) , 修改图书信息(editbook) ,获取所有图书信息(getallbooks) ,根据图书项 id 获取单本图书信息(getbookbyid) ,根据分类 id 获取图书信息 (getbooksbycategoryid) ,根据分类 id 获取热门书图书信息 (getpopbooksbycategoryid) ,根据书名获取图书信息(getbooksbytitle) ,根 据关键词获取图书信息(getbooksbykeyword) ,根据 isbn 获取图书信息 (getbooksbyisbn) ,根据出版商获取图书信息(getbooksbypublisherid)根 第 8 页 共 28 页 据作者获取图书信息(getbooksbyauthor) 。 与出版商相关的存储过程有:新增出版商(addpublisher) ,删除出版商 (delpublisher) ,修改出版商信息(editpublisher) ,获取所有出版商信息 (getpublishers) 。 与图书分类相关的存储过程有:新增图书分类(addcategory) ,删除图书 分类(delcategory) ,修改图书分类说明(editcategory) ,获取图书分类信息 (getcategories)。 与收藏夹相关的存储过程有:新增收藏记录(addfavorite) ,删除收藏信息 (delfavorite) ,根据客户 id 获取收藏记录(getfavoritesbycustomerid) 。 与订单相关的存储过程有:获取订单信息(getorders) ,获取单条订单信 息(getorderbyid) ,根据客户 id 获取订单信息(getordersbycustomerid) ,根 据状态获取订单信息(getordersbystatus) ,根据日期获取订单信息 (getordersbydate) ,提交订单(submitorder) ,修改订单(editorder) ,取消 订单(cancelorder) ,接受订单(acceptorder) ,确定订单(confirmorder) ,撤 销订单(revokeorder) ,popfirstword ,插入订单明细记录 (insertorderdetailsbylist) ,插入单条订单项(insertorderdetail) 。 由于该系统建立的存储过程很多,所以在此就只列举出一个存储过程的 sql 脚本。 新增图书存储过程 addbook 的 sql 脚本如下: create procedure addbook name nvarchar(255), imagefilespace nvarchar(255), description nvarchar(2000), unitprice money, publisherid int, 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 值 -新增 books 表记录 insert books (itemid, publisherid, author,isbn) select itemid,publisherid,author,isbn -新增 itemcategory 表记录 insert itemcategory (itemid,categoryid) select itemid,categoryid commit tran return 0 go 4 4网上图书销售系统开发实现网上图书销售系统开发实现 4.14.1 用户功能模块实现用户功能模块实现 用户功能模块主要包括注册登录、图书浏览、图书显示、图书搜索、购物 车、收藏夹、图书订单这几个部分。在程序设计中,各模块后台编码部分的设 计实现是重点和难点,因此论文将着重说明模块的后台编码部分,对于页面设 计部分只作了简单说明。 .1 用户注册登录用户注册登录 .2 图书浏览图书浏览 图书浏览使用 2 种方式实现:分类浏览和热门书推荐。页面设计中,两种 方式都使用了 asp.net 中的 datalist 控件来绑定数据,以列表方式显示。因为 datalist 自定义模块比 datagrid 更能够显示丰富多变的数据列表。 分类浏览和热门书推荐的实现都差不多,唯一的差异就是热门书推荐部分 只显示销售量前 4 的图书。 分类浏览图书页面的执行结果如图 4-3 所示。 当用户点击相关类别链接时,就可以实现分类浏览。这些链接包含查询字 符串,在 web 服务器中通过解析这些字符串来确定用户所点击的链接。当点击 “艺术”链接时,页面上半部分显示热门书推荐,下半部分显示全部图书列表, 显示结果如图 4-4 所示。 图 4-3 分类浏览页面 第 10 页 共 28 页 图 4-4 分类浏览显示结果 在分类浏览页面 category.aspx 的实现过程中,“收藏夹”按钮只有在用户 登录的情况下才显示,在 datalist 控件里 itemcreate 事件的相应函数中添加了 相应的代码进行判断。其后台的部分代码如下: private void dlbook_itemcreated(object 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 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.addfavorite(f) 0) response.redirect(“/favorite.aspx“); else response.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 控件来实现数据绑定。同时提供“购物车”和“收藏夹”链接,用于 将图书加入购物车或收藏夹。 点击图书封面图片,如“莲花”,会显示图书相关信息,如图 4-5 所示。 图 4-5 图书详细信息显示页面 如果喜欢该本书,可以通过点击“购物车”或“收藏夹”链接,将当前图 书加入购物车或收藏夹。 .4 图书搜索图书搜索 用户点击“查找”按钮,可以对图书进行快速搜索,该功能也是通过一个 datalist 控件来实现的。图书搜索方式使用控件标识定义, 分别为书名、作者、isbn 和关键词,然后由用户输入搜索条件,程序便执行数 据库中的存储工程在数据表中查找数据并显示出来。如果方式选择作者,输入 条件为“安妮”,搜索结果如图 3-6 所示。 图 4-6 图书搜索结果显示 .5 收藏夹收藏夹 用户收藏夹存储书名、价格等信息。该页面的实现还是通过使用 datalist 控件来显示用户收藏的图书。收藏夹页面执行结果如图 3-7 所示。 图 4-7 收藏夹页面 用户点击“收藏夹”链接,可以先将自己感兴趣的图书放入图书收藏夹。 如果打算购买再从收藏夹中加入购物车,同时也提供了“删除”按钮,如果不 喜欢收藏夹的部分图书,可以点击“删除”按钮删除收藏的图书。 第 12 页 共 28 页 .6 购物车购物车 购物车是本系统的重要组成部分,这部分的设计是重点和难点。在本系统 了主要实现了两个基本功能。用户添加图书,即用户将打算购买的图书添加到 购物车中;和用户管理自己的订单,即用户可以随时查看购物车,更新购物车 中的图书数量,或者删除不想购买的图书。 购物车利用 datagrid 控件来显示用户所选择的图书书名、单价、数量以及 总价格等信息。在 datagrid 中主要使用了模板列 templatecolumn 进行显示和 处理,模板列包括数量 quantity、书名 title、单价 unitprice 和小计 price,其中 用户只可对图书数量进行修改。 购物车的内容通过 session 对象来保存,因为会话状态 session 可以在会话 期间为用户提供单独的数据,不同会话之间的信息是不共享的。其实现的代码 如下: public cart bookcart/通过session对象保存购物车内容 get if (session“cart“ = null) session“cart“ = new cart(); return (cart)session“cart“; set session“cart“ = value; 程序中使用 page_load()调用 bindgrid()函数将购物车中的图书信息 绑定到 datagrid 中。 bindgrid()实现数据绑定,通过使用大小可按需动态增加的数组 arraylist 来记录图书项的 id 和购买数量,然后计算购买图书的总价格,其代 码如下: private void bindgrid() decimal totalprice = 0; bookdata bookdata = new bookdata(); bookdata.tables“books“.columns.add(“quantity“, typeof(system.int32); bookdata.tables“books“.columns.add(“price“, typeof(system.decimal); for (int i = 0;i 0) _quantity_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)/更新购物车 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(); 当用户确定购买图书时,可以单击“提交订单”按钮转到提交订单 submitorder.aspx 页面。数据绑定的方法同购物车页面的方法一样,只是商品编 号 pkid、数量 quantity、书名 title、单价 unitprice 和小计 price 都是绑定列, 且都是只读的,不能修改。其执行结果页面如图 4-9 所示: 图 4-9 提交订单页面 然后,用户可以点击“提交订单”按钮将购物车中的每一项信息加入到数 据库订单信息中,管理员可以根据订单信息向用户送货。 .7 图书订单图书订单 在购买记录页面,用户可以查看到自己所下的所有的订单信息,在管理员 没有处理订单之前,用户可以取消所下的订单。该页面通过使用 datagrid 控件 来实现数据绑定,具体通过 bindgrid()函数来调用执行数据库中的存储工程, 并根据订单状态来判断用户是否可以取消订单,其实现代码如下: private void bindgrid() orderdata orderdata = ordersystem.getordersbycustomerid(customerid); orderdata.tables“orders“.columns.add(“statusname“, typeof(system.string); orderdata.tables“orders“.columns.add(“cancancel“, typeof(system.boolean); foreach (datarow dr in orderdata.tables“orders“.rows) dr“statusname“ = getstatusname(int)dr“status“); dr“cancancel“ = (int)dr“status“ = 0; orderdata.acceptchanges(); dgorder.datasource = orderdata; dgorder.databind(); 用户登录后,购买记录页面执行结果如图 4-10 所示: 第 16 页 共 28 页 图 4-10 购买记录页面 用户可以点击订单编号来查询自己所下订单的相关信息,其执行结果如图 4-11 所示: 图 4-11 订单详细信息页面 4.24.2 管理员功能模块实现管理员功能模块实现 .1 图书管理图书管理 图书管理是网上图书销售系统的重要组成部分。使用 datagrid 控件进行数 据的展示、修改和删除。所有图书的展示通过执行 databind()来实现,其执行 结果如图 4-12 所示: 图 4-12 图书管理页面 点击“添加新图书”,可以增加新图书的相关信息,其部分代码如下: private void lbaddbook_click(object sender, system.eventargs e) /添加图书项 dgbooks.selectedindex = -1; pnldetail.visible = false; pnladdbook.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.columns.add(“publisherlist“, typeof(publisherdata); ds.tables0.rows.add(new object null, null); ds.tables0.rows0“categorylist“ = categorydata; ds.tables0.rows0“publisherlist“ = publisherdata; ds.acceptchanges(); dladdbook.datasource = ds; dladdbook.databind(); private void dladdbook_itemcommand(object source, system.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(“tbisbnadd“).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(dropdownlist)(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.editbook(iitemid, book) = 0) lblmessage.text = add_success;/添加成功 else lblmessage.text = add_fail;/添加失败 uploadimage(iitemid); pnladdbook.visible = false; bindgrid(); 添加图书执行结果如图 4-13 所示: 第 18 页 共 28 页 图 4-13 添加图书 点击“修改”按钮,可对图书相关信息进行修改。该处的难点是如何在点 击“修改”按钮时在分类和出版商的下拉列表中显示全部的分类和出版商列表, 而且默认选中的是图书当前的分类和出版商,该系统采用了数据绑定的方法来 实现该功能。showbookdetail()函数实现了展示图书的当前信息的功能。其部 分代码如下: private void showbookdetail(string

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论