




免费预览已结束,剩余46页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕 业 设 计 ( 论 文 ) 基于.net 的网上图书销售系统设计与实现 毕业论文 摘 要 随着 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 目 录 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 引言 1.1 课题背景 随着 internet 的迅速崛起,网络信息化的发展,在线图书 销售作为一种典型的 web 电子商务系统也迅速的发展并深入人 们的日常生活中。更多的人更愿意足不出户就可以挑选购买自 己喜欢的各种书籍,这样大大缩短了购书的时间,提高了效率。 而且,图书因其具有标识精晰、规格统一、特征容易描述、同种 商品个体之间无差异等特性而能成为发展电子商务的最为理想 的商品类型。可见,网上图书销售系统跨越了时间和空间的限 制,给商业流通领域带来了不一样的变革,也给消费者带来了 便捷。只要网络发展没有停止,网上图书销售的发展就不会停 止。 1.2 本课题研究内容 本系统采用 b/s(browser/server)结构进行设计,使用 sql server 2000 构建数据库,并在.net 环境下使用 visual c#.net 语言开发的一个功能完善的网上图书销售系统。其具有 一定的实用性,用户可以在网上浏览图书信息,查找图书资料,将 感兴趣的书籍加入收藏夹,或放入购物车并下订单购买;同时, 管理员也可以对整个系统的信息和数据进行管理,可以管理库存 书信息、分类信息、出版社信息、用户信息和订单信息。 1.3 本课题研究的意义 本课题的目标就是是将图书销售由传统的商店模式向在线 销售的转变,同时还对销售的定单和图书的种类等信息进行在线 管理,其意义就在于以此来实现人们不出门就能够便捷的买到 自己喜欢的各种书籍,向客户展示出一种新颖的购书理念。网 上购书的方式必将日趋被大家所接受。 2 网上图书销售系统相关技术 2.1 .net 开发平台及 c.net 开发语言 .net 框架是 microsoft 公司推出的一种全新的开发平台, 提供了统一的、面向对象并且可以扩展的编程类库和完善的集 成开发环境,大大简化了应用程序的开发过程,并且具有良好的 移植性和安全性。asp.net 是建立在公共语言运行库上的 web 第 2 页 共 28 页 编程框架,相对于 asp 而言,asp.net 提供了更强的性能、更 方便的工具支持、更好的平台支持和灵活性。其一大革命性进 步是可以将应用程序逻辑与表示代码清楚地分开,这样一来 web 应用程序的开发人员可以使用和 windows 桌面程序开发类 似的编程模型,从而大大降低了开发难度。 同时,asp.net 在进行用户界面开发和基础程序结构生成 时具有很多优势。首先,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.2 微软企业库 众所周知,重复编写数据访问的代码是十分繁琐的,实际 上很多系统中都会有类似的模块,比如配置的保存和读取、写 日志、异常的处理等,大多数情况下开发人员需要在每个系统 中编写具有类似功能的子模块,因此虽然它们之间只存在细微 的区别,但是代码必须做修改才能够满足要求。微软公司提供 的企业库正是为了解决这些问题而推出的,开发人员无需修改 代码,只要修改几个配置文件,就可以在不同的系统中实现类 似的功能。可见,企业库大大减少了系统连接数据库的代码, 带来了方便。 企业库(enterpriselibraryjune2005)是微软推出的开源项 目,它为企业级开发提供了功能强大的多个应用程序块。该企 业库的设计思想是为了协助开发商解决企业级应用开发过程中 第 3 页 共 28 页 所面临的一系列共性的问题, 如安全、日志、数据访问、配置 管理等,并将这些广泛使用的应用程序块集成封装至企业库的 程序包中。企业库由七个子模块组成,分别是配置管理应用程 序块(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.3 三层应用程序模型 本课题在系统设计上采用了三层应用程序模型。所谓的 “三层应用程序模型”是将系统按照功能的逻辑层次进行划分 的,分别是表示层、业务逻辑层和数据访问层,以此实现模块 化的设计。数据访问层顾名思义是用来处理系统对数据库的操 作,系统中所有数据库的调用都通过数据访问层实现。业务逻 辑层处于表示层和数据访问层之间,它一方面调用数据访问层 的类和方法实现系统中的业务规则,一方面封装相应的调用方 法供表示层调用。表示层主要包括了系统的页面呈现和相关控 件的代码。 这种多层的应用程序体系结构具有以下一些优点,首先, 程序代码在各个层次之间实现松耦合和模块化;其次,每个层 次的代码可重用,维护性更好;最后,可以将各个层次在物理 上部署到多个层次中,实现部署的可扩展性。 2.4 信息安全性 在大多数系统中,用户的密码信息在数据库中是以明文的 方式存放的,数据库管理员稍有疏忽就有可能导致用户的隐私 泄漏,尤其是对于一些涉及金融、商业领域的网络应用,这一 点漏洞将会导致十分严重的后果。所以,为了加强本系统信息 的安全性,在用户登录模块中,对密码这样的敏感信息进行加 密是十分必要的。本课题使用了一种常见的哈希加密算法 md5 加密算法。md5 加密算法是不可逆的,经过哈希加密的数据 第 4 页 共 28 页 是没有相应的解密算法回到原状的,在应用中是通过比较两个 数据的哈希值是否相等,从而达到校验的目的。本课题中,在 新客户注册的时候,对客户设置的登录密码用 md5 加密算法进 行加密,那么存入数据库的将是客户登录密码的 md5 哈希值, 在登录验证时根据用户输入的密码计算响应的 md5 哈希值进行 比较。 可见,通过 md5 算法实现了数据的加密存储和验证,同时, md5 加密是不可逆的,即使恶意攻击者获得了数据库的访问权 限,也仍然无法得知用户的密码信息,从而提高了系统的安全 性。 3 网上图书销售系统规划设计 3.1 需求分析 网上图书销售系统首先应该方便用户浏览、购买图书,同 时需要由系统管理员进行管理和维护,由此分为前台用户功能 和后台管理员功能两个方面。 前台用户功能: 为了方便用户购买图书,网上图书销售系统应该提供以下 几种用户功能。 1) 用户注册登录:用户进行注册,登录。 2) 图书浏览:以列表方式显示图书信息供用户浏览。 3) 图书显示:显示图书的详细信息。 4) 图书搜索:使用搜索功能使用户快速地找到所喜欢的图 书。 5) 收藏夹:用户可以先将自己感兴趣的图书收藏起来,以 便下次登录后查看相关信息,如果打算购买时再放入购 物车中。 6) 购物车:这是网上图书销售系统的基本元素。用户找到 所喜欢的图书时,可以将其放入购物车中,再继续查看 其它图书。 7) 图书订单:用户下订单购买图书,由管理员定期负责处 理,根据订单信息向用户送货。 后台管理员功能: 管理员负责维护整个系统的运行,管理系统所有的信息和 第 5 页 共 28 页 数据,应该提供以下功能。 1) 图书管理:维护网上图书销售系统中的所有图书信息。 2) 分类信息管理:维护系统中的所有分类信息。 3) 出版商信息管理:维护系统中的所有出版商信息。 4) 用户信息管理:显示所有注册用户的信息。 5) 订单管理:定期对用户订单进行处理,向用户送货。 3.2 系统基本结构 由于 b/s(browser/server)结构具有较好的独立性、可伸 缩性和安全性,适合于不同数据库之间的互连,并且便于管理 维护,因此整个系统采用客户端、web 服务器及数据库服务器 的 b/s 结构进行设计。基本结构如图 2-1 所示。 图 3-1 系统基本结构 利用 iis 架构 web 服务器,用于连接客户端和数据库服务 器。对于客户端发出的需要对数据库进行访问的请求,web 服 务器负责客户端与数据库服务器的网络通信,并将相关数据嵌 入返回给客户端的 web 页面;对于客户端发出的不需要对数据 库进行访问的请求,web 服务器将直接处理这些请求,并将最 终生成的 web 页面发往客户端浏览器。 3.3 系统设计 3.3.1 系统模块设计 分为用户功能模块设计和管理员功能模块设计两方面,用 户登录后,可以进行图书浏览、下订单等操作;管理员登录后, 可以进行图书管理、分类信息管理、出版商信息管理、用户信 息管理和订单管理等操作。 1. 用户功能模块设计: 普通用户的各个功能模块,具体设计如图 3-2 所示: 第 6 页 共 28 页 用 户 功 能 模 块 图书 搜索 收藏夹 购物车 图书 订单 用户注 册登录 图书 浏览 图书 显示 图 3-2 用户功能模块 2. 管理员功能模块设计: 管理员负责管理整个系统所有的信息和数据,并做相应的 一些处理。其功能模块如图 3-3 所示。 管 理 员 功 能 模 块 库存书的 信息管理 分类信息 管理 用户信息 查询 处理订单 出版商信 息管理 图 3-3 管理员功能模块 3.3.2 数据库设计 数据库主要由 9 个数据表组成。books(图书信息表), items(图书项信息表),categories(图书分类信息表)存储 图书的分类信息,itemcategory(图书项与分类关联信息表) , publishers(出版商信息表)存储出版商信息,customers(客 户信息表)存储用户注册信息,favorites(收藏夹信息表)存 储用户的收藏夹信息,orders(订单信息表)存储订单的各项 信息,orderitems(订单项信息表)存储订单具体的购买信息。 从而,可详细设计出各数据库对象,包括数据表和存储过程。 数据表: 第 7 页 共 28 页 图书相关信息表分别如表 3-1、表 3-2、表 3-3、表 3-4、 表 3-5 所示。 表 3-1 图书信息表 books books(itemid 为主键,publisherid 为外键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 itemid 图书项 id 号 int 4 not null publisher id 出版商 id 号 int 4 not null author 作者名 nvarchar 40 not null isbn isbn 号 char 10 not null salenum 已销售数 量 int 4 not null 表 3-2 图书项信息表 items items(pkid 为主键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 pkid 图书项唯一 id int 4 not null name 书名 nvarch ar 255 not null imagefile 图书封面图文 nvarch 255 null 第 8 页 共 28 页 space 件地址 ar descripti on 说明 nvarch ar 2000 null unitprice 单价 momey 8 not null 表 3-3 图书分类信息表 categories categories(pkid 为主键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 pkid 分类唯一 id int 4 not null descripti on 分类说明 nvarchar 255 null 表 3-4 图书项与分类关联信息表 itemcategory itemcategory(itemid 为主键,categoryid 为外键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 itemid 图书项 id 号 int 4 not null categoryi d 分类 id 号 int 4 not null 表 3-5 出版商信息表 publishers publishers(pkid 为主键) 第 9 页 共 28 页 列(属性) 名 中文名称 类型 宽度 是否允许 为空 pkid 出版商唯 一 id int 4 not null name 出版商名 称 nvarchar 40 not null 用户相关信息表分别如表 3-6、表 3-7 所示。 表 3-6 客户信息表 customers customers(pkid 为主键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 pkid 客户唯一 id int 4 not null email 客户 email nvarchar 50 not null password 客户登录 密码 binary 24 null name 客户名称 nvarchar 40 null 表 3-7 收藏夹信息表 favorites favorites(pkid 为主键,customerid、itemid 为外键) 列(属性) 中文名称 类型 宽度 是否允许 第 10 页 共 28 页 名 为空 pkid 收藏夹 id 号 int 4 not null customeri d 客户 id 号 int 4 not null itemid 图书项 id 号 int 4 not null 订单相关信息表分别如表 3-8、表 3-9 所示。 表 3-8 订单信息表 orders orders(pkid 为主键,customerid 为外键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 pkid 订单唯一 id int 4 not null customeri d 客户 id 号 int 4 null status 订单状态 int 4 null orderdata 订单生成 日期 datetime 8 null shiptonam e 收件人名 称 nvarchar 40 null shiptoadd 送货地址 nvarchar 255 not null 第 11 页 共 28 页 ress subtotal 总价 momey 8 null 表 3-9 订单项信息表 orderitems orderitems(orderid 和 itemid 为主键) 列(属性) 名 中文名称 类型 宽度 是否允许 为空 orderid 订单 id 号 int 4 not null itemid 图书项 id 号 int 4 not null unitprice 单价 money 8 not null quantity 购买数量 int 4 not null 存储过程: 因为存储过程可以在程序中被多次调用,而不必多次重复 编写该存储过程的 sql 语句,所以数据库中建立了大量的存储 过程,便于将相关信息加入到数据库中。 与客户相关的存储过程有:新客户注册 (customerregister) ,客户登录(customerlogin) ,修改客户 信息(editcustomer) ,获取所有客户的信息(getcustomers) , 获取单个用户的信息(getcustomerbyid) 。 与图书相关的存储过程有:新增图书(addbook) ,删除图 书(delbook) ,修改图书信息(editbook) ,获取所有图书信息 (getallbooks) ,根据图书项 id 获取单本图书信息 (getbookbyid) ,根据分类 id 获取图书信息 (getbooksbycategoryid) ,根据分类 id 获取热门书图书信息 (getpopbooksbycategoryid) ,根据书名获取图书信息 (getbooksbytitle) ,根据关键词获取图书信息 (getbooksbykeyword) ,根据 isbn 获取图书信息 第 12 页 共 28 页 (getbooksbyisbn) ,根据出版商获取图书信息 (getbooksbypublisherid)根据作者获取图书信息 (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), 第 13 页 共 28 页 categoryid int, itemid int = null output -output 可以返回一 个值 as begin tran -事务 -新增 items 表记录 insert items (name, imagefilespace, description, unitprice) select name,imagefilespace,description,unitprice 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.1 用户功能模块实现 用户功能模块主要包括注册登录、图书浏览、图书显示、 图书搜索、购物车、收藏夹、图书订单这几个部分。在程序设 计中,各模块后台编码部分的设计实现是重点和难点,因此论 文将着重说明模块的后台编码部分,对于页面设计部分只作了 简单说明。 4.1.1 用户注册登录 用户首先填写相关信息进行注册,之后就可以登录到本系 统中购买图书。 注册模块的主要功能是把用户的注册信息写到数据库中。 同时,为了减少用户输入错误,注册模块需要对相关信息作必 要的验证。利用 asp.net 提供的验证控件可以方便的验证用户 第 14 页 共 28 页 输入,这里将几个验证控件结合起来实现比较完整的验证功能。 在注册页面设计中,使用 requiredfieldvalidator 控件检查用 户是否在输入框中填写了必要的文字,确保用户不跳过输入, 使用 regularexpressionvalidator 控件检查输入是否符合正则 表达式,使用 comparevalidator 控件对比两次密码输入是否相 同。部分代码如下: email: 密码: 重复输入密码: 用户注册页面设计如图 4-1 所示。 第 15 页 共 28 页 图 4-1 用户注册页面 用户输入相应信息后,单击“注册”按钮,可将用户信息 插入到数据库中的 customers 数据表中。该功能由单击事件处 理函数 btnregister_click()来实现,部分程序代码如下: private void btnregister_click(object sender, system.eventargs e) if ( customersystem.register(tbemail.text, tbusername.text, tbpassword.text) ) lblmessage.visible = true; lblmessage.text = success_message; ltlink.visible = true; ltlink.text = link_string; else lblmessage.visible = true; lblmessage.text = err_message; 程序中调用了业务逻辑层的 customersystem.register( ), 第 16 页 共 28 页 来实现将注册信息添加到数据库中去,其中针对用户设置的密 码是先通过 md5 加密算法加密后再添加到数据库中去的。 customersystem.register( )类的代码如下: public static bool register(string stremail, string strname, string strpassword) int iret = -1; try md5 md5 = md5.create(); /md5加密算法 byte btpassword = md5.computehash(encoding.unicode.getbytes(strpassword); customer c = new customer(stremail, btpassword, strname); iret = _customers.customerregister(c); catch(exception ex) bool rethrow = exceptionpolicy.handleexception(ex, “logging policy“); if (rethrow) throw; 第 17 页 共 28 页 return iret = 0; 程序中又定义了 common 命名空间中的公共类 customer 的 对象,还调用了数据访问层 dataacess 中的 customerregister()方法,以此通过微软企业库连接数据库中 的用户注册存储过程 customerregister。customer 类的代码如 下: public class customer public customer(string stremail, byte btpassword, string strname) _email = stremail; _password = btpassword; _name = strname; private string _email; private byte _password; private string _name; public string email get return _email; set _email = value; 第 18 页 共 28 页 public byte password get return _password; set _password = value; public string name get return _name; set _name = value; customerregister()的代码如下: public int customerregister(customer c) string sqlcommand = “customerregister“; /为执行存储过程进行准备,参数赋值 dbcommandwrapper dbcommandwrapper = _db.getstoredproccommandwrapper(sqlcommand); dbcommandwrapper.addinparameter(“email“, dbtype.string, c.email); dbcommandwrapper.addinparameter(“password“, dbtype.binary, c.password); dbcommandwrapper.addinparameter(“name“, 第 19 页 共 28 页 dbtype.string, c.name); dbcommandwrapper.addparameter(“return_value“, dbtype.int32, parameterdirection.returnvalue, “return“, datarowversion.default, null); _db.executenonquery(dbcommandwrapper); /执 行存储过程 return (int)dbcommandwrapper.getparametervalue(“return_value“); 在数据库设计中,用户注册 email 地址是关键,它的值是 唯一的,不能重复,如果重复,企业库和数据库就会抛出异常, 并且终止执行 sql 语句。根据数据库是否产生异常及异常的代 码,就可以较好的实现模块功能,并且给用户显示友好的提示 信息。 用户注册后,在登录页面输入 email 和密码可以登录到系 统中。登录页面如图 4-2 所示。 图 4-2 登录页面 登录模块验证程序根据数据库中已有的注册信息,对客户 端发送过来的 email 和密码进行验证。判断该 email 地址及相 应的密码在数据库中是否存在,进而可进行购买图书等操作。 输入信息,点击“登录”按钮将执行的部分程序代码如下: private void btnlogin_click(object sender, system.eventargs e) 第 20 页 共 28 页 int iret = customersystem.login(email, password); if(email=““)/ 通过session验证管理员 response.redirect(“/admin/default.aspx“); /进入管理员页面 else if (iret 0) formsauthentication.redirectfromloginpage(iret.tostr ing(), false);/重定向 else lblmessage.visible = true; lblmessage.text = login_fail_message; 第 21 页 共 28 页 如果 email 为““并且 password 为 “admin“,就进入后台管理员页面,其它用户成功登录后则进入 前台图书销售页面。 4.1.2 图书浏览 图书浏览使用 2 种方式实现:分类浏览和热门书推荐。页 面设计中,两种方式都使用了 asp.net 中的 datalist 控件来绑 定数据,以列表方式显示。因为 datalist 自定义模块比 datagrid 更能够显示丰富多变的数据列表。 分类浏览和热门书推荐的实现都差不多,唯一的差异就是 热门书推荐部分只显示销售量前 4 的图书。 分类浏览图书页面的执行结果如图 4-3 所示。 当用户点击相关类别链接时,就可以实现分类浏览。这些 链接包含查询字符串,在 web 服务器中通过解析这些字符串来 确定用户所点击的链接。当点击“艺术”链接时,页面上半部 分显示热门书推荐,下半部分显示全部图书列表,显示结果如 图 4-4 所示。 图 4-3 分类浏览页面 图 4-4 分类浏览显示结果 在分类浏览页面 category.aspx 的实现过程中,“收藏夹” 按钮只有在用户登录的情况下才显示,在 datalist 控件里 itemcreate 事件的相应函数中添加了相应的代码进行判断。其 第 22 页 共 28 页 后台的部分代码如下: 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); 第 23 页 共 28 页 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“); 4.1.3 图书显示 显示图书详细信息,书名、作者、价格、出版商、isbn 等 信息,通过 datalist 控件来实现数据绑定。同时提供“购物车” 和“收藏夹”链接,用于将图书加入购物车或收藏夹。 点击图书封面图片,如“莲花”,会显示图书相关信息, 如图 4-5 所示。 第 24 页 共 28 页 图 4-5 图书详细信息显示页面 如果喜欢该本书,可以通过点击“购物车”或“收藏夹” 链接,将当前图书加入购物车或收藏夹。 4.1.4 图书搜索 用户点击“查找”按钮,可以对图书进行快速搜索,该功 能也是通过一个 datalist 控件来实现的。图书搜索方式使用 控件标识定义,分别为书名、作者、isbn 和关键词,然后由用户输入搜索条件,程序便执行数据库中的 存储工程在数据表中查找数据并显示出来。如果方式选择作者, 输入条件为“安妮”,搜索结果如图 3-6 所示。 图 4-6 图书搜索结果显示 4.1.5 收藏夹 用户收藏夹存储书名、价格等信息。该页面的实现还是通 过使用 datalist 控件来显示用户收藏的图书。收藏夹页面执行 结果如图 3-7 所示。 图 4-7 收藏夹页面 用户点击“收藏夹”链接,可以先将自己感兴趣的图书放 入图书收藏夹。如果打算购买再从收藏夹中加入购物车,同时 也提供了“删除”按钮,如果不喜欢收藏夹的部分图书,可以 点击“删除”按钮删除收藏的图书。 4.1.6 购物车 购物车是本系统的重要组成部分,这部分的设计是重点和 难点。在本系统了主要实现了两个基本功能。用户添加图书, 即用户将打算购买的图书添加到购物车中;和用户管理自己的 第 25 页 共 28 页 订单,即用户可以随时查看购物车,更新购物车中的图书数量, 或者删除不想购买的图书。 购物车利用 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()实现数据绑定,通过使用大小可按需动态增 第 26 页 共 28 页 加的数组 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); 第 30 页 共 28 页 else _itemid_arr.add(iitemid); _quantity_arr.add(iquantity); 购物车执行结果如图 4-8 所示: 图 4-8 购物车页面 如果用户想购买几本同样的图书,可以在购买数量文本框 中输入想要购买的本数,然后单击“更新购物车”来更新购买 数量,其实现代码如下: private void lbupdate_click(object sender, system.eventargs e) /更新购物车 foreach (datagridite
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政法与人权保障的关系试题及答案
- 2025年护士执业特定领域题库及答案
- 行政法学合法性分析试题与答案
- 金属化合物-碳复合材料的制备及电化学性能研究
- 执业护士考试突发情况应对技巧试题及答案
- 考前心理辅导与资源执业医师考试试题及答案
- 自考行政管理的论文素材试题及答案
- 国际房产抵押贷款合同违约责任协议
- 矿产开采成本核算数据补充协议
- 2025年改装汽车项目规划申请报告模范
- 2025租房合同范本:租赁协议模板
- 法律文化-形考作业1-国开(ZJ)-参考资料
- 医院感染管理笔试题及答案
- 10.1 认识民法典 课件-2024-2025学年统编版道德与法治七年级下册
- 中华人民共和国传染病防治法
- 海南旅游演艺融合发展问题探讨
- 初级注册安全工程师课件
- 2025年北京大兴区中考一模数学试卷及答案详解(精校打印)
- 房地产公司2025年度项目开发计划
- 物业保盘计划制作与实施指导
- 2025年北京市海淀区九年级初三一模英语试卷(含答案)
评论
0/150
提交评论