基于NET的网上图书销售系统的设计与实现—计算机毕业设计.doc_第1页
基于NET的网上图书销售系统的设计与实现—计算机毕业设计.doc_第2页
基于NET的网上图书销售系统的设计与实现—计算机毕业设计.doc_第3页
基于NET的网上图书销售系统的设计与实现—计算机毕业设计.doc_第4页
基于NET的网上图书销售系统的设计与实现—计算机毕业设计.doc_第5页
免费预览已结束,剩余38页可下载查看

下载本文档

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

文档简介

毕毕 业业 设设 计计 论论 文文 基于基于 NET NET 的网上图书销售系统的设计与实现的网上图书销售系统的设计与实现 论文作者姓名 论文作者姓名 申请学位专业 申请学位专业 申请学位类别 申请学位类别 指指导导教教师师姓姓名名 职职称称 论文提交日期 论文提交日期 基于基于 NET 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 people s 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 system s 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 致 谢 27 声 明 28 第 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 系统设计系统设计 3 3 13 3 1 系统模块设计系统模块设计 分为用户功能模块设计和管理员功能模块设计两方面 用户登录后 可以 进行图书浏览 下订单等操作 管理员登录后 可以进行图书管理 分类信息 管理 出版商信息管理 用户信息管理和订单管理等操作 1 用户功能模块设计 普通用户的各个功能模块 具体设计如图 3 2 所示 第 5 页 共 28 页 用用户户功功能能模模块块 图书搜索收藏夹购物车图书订单 用户注 册登录 图书浏览图书显示 图 3 2 用户功能模块 2 管理员功能模块设计 管理员负责管理整个系统所有的信息和数据 并做相应的一些处理 其功 能模块如图 3 3 所示 管管理理员员功功能能模模块块 库存书的 信息管理 分类信息 管理 用户信息 查询 处理订单 出版商信 息管理 图 3 3 管理员功能模块 3 3 23 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 表 3 7 收藏夹信息表 Favorites 第 7 页 共 28 页 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 根 据作者获取图书信息 GetBooksByAuthor 第 8 页 共 28 页 与出版商相关的存储过程有 新增出版商 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 select ItemId IDENTITY 获取数据表中最后一条插入数据的 IDENTITY 值 第 9 页 共 28 页 新增 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 用户功能模块实现用户功能模块实现 用户功能模块主要包括注册登录 图书浏览 图书显示 图书搜索 购物 车 收藏夹 图书订单这几个部分 在程序设计中 各模块后台编码部分的设 计实现是重点和难点 因此论文将着重说明模块的后台编码部分 对于页面设 计部分只作了简单说明 4 1 14 1 1 用户注册登录用户注册登录 用户首先填写相关信息进行注册 之后就可以登录到本系统中购买图书 注册模块的主要功能是把用户的注册信息写到数据库中 同时 为了减少 用户输入错误 注册模块需要对相关信息作必要的验证 利用 ASP NET 提供的 验证控件可以方便的验证用户输入 这里将几个验证控件结合起来实现比较完 整的验证功能 在注册页面设计中 使用 RequiredFieldValidator 控件检查用户 是否在输入框中填写了必要的文字 确保用户不跳过输入 使用 RegularExpressionValidator 控件检查输入是否符合正则表达式 使用 CompareValidator 控件对比两次密码输入是否相同 部分代码如下 Email 密码 第 10 页 共 28 页 重复输入密码 用户注册页面设计如图 4 1 所示 图 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 来实现将注册信 息添加到数据库中去 其中针对用户设置的密码是先通过 MD5 加密算法加密后 再添加到数据库中去的 CustomerSystem Register 类的代码如下 public static bool Register string strEmail string strName string strPassword int iRet 1 try 第 11 页 共 28 页 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 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 public byte Password get return password set password value public string Name get return name set name value 第 12 页 共 28 页 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 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 int iRet CustomerSystem Login Email Password if Email huangjun999 通过session验证管理员 Response Redirect admin Default aspx 进入管理员页面 else 第 13 页 共 28 页 if iRet 0 FormsAuthentication RedirectFromLoginPage iRet ToString false 重定向 else lblMessage Visible true lblMessage Text LOGIN FAIL MESSAGE 如果 Email 为 huangjun999 并且 Password 为 admin 就进入后 台管理员页面 其它用户成功登录后则进入前台图书销售页面 4 1 24 1 2 图书浏览图书浏览 图书浏览使用 2 种方式实现 分类浏览和热门书推荐 页面设计中 两种 方式都使用了 ASP NET 中的 DataList 控件来绑定数据 以列表方式显示 因为 datalist 自定义模块比 datagrid 更能够显示丰富多变的数据列表 分类浏览和热门书推荐的实现都差不多 唯一的差异就是热门书推荐部分 只显示销售量前 4 的图书 分类浏览图书页面的执行结果如图 4 3 所示 当用户点击相关类别链接时 就可以实现分类浏览 这些链接包含查询字 符串 在 Web 服务器中通过解析这些字符串来确定用户所点击的链接 当点击 艺术 链接时 页面上半部分显示热门书推荐 下半部分显示全部图书列表 显示结果如图 4 4 所示 图 4 3 分类浏览页面 图 4 4 分类浏览显示结果 在分类浏览页面 Category aspx 的实现过程中 收藏夹 按钮只有在用户 登录的情况下才显示 在 DataList 控件里 ItemCreate 事件的相应函数中添加了 相应的代码进行判断 其后台的部分代码如下 第 14 页 共 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 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 34 1 3 图书显示图书显示 显示图书详细信息 书名 作者 价格 出版商 ISBN 等信息 通过 DataList 控件来实现数据绑定 同时提供 购物车 和 收藏夹 链接 用于 将图书加入购物车或收藏夹 点击图书封面图片 如 莲花 会显示图书相关信息 如图 4 5 所示 图 4 5 图书详细信息显示页面 如果喜欢该本书 可以通过点击 购物车 或 收藏夹 链接 将当前图 第 15 页 共 28 页 书加入购物车或收藏夹 4 1 44 1 4 图书搜索图书搜索 用户点击 查找 按钮 可以对图书进行快速搜索 该功能也是通过一个 DataList 控件来实现的 图书搜索方式使用控件标识定义 分别为书名 作者 ISBN 和关键词 然后由用户输入搜索条件 程序便执行数 据库中的存储工程在数据表中查找数据并显示出来 如果方式选择作者 输入 条件为 安妮 搜索结果如图 3 6 所示 图 4 6 图书搜索结果显示 4 1 54 1 5 收藏夹收藏夹 用户收藏夹存储书名 价格等信息 该页面的实现还是通过使用 DataList 控件来显示用户收藏的图书 收藏夹页面执行结果如图 3 7 所示 图 4 7 收藏夹页面 用户点击 收藏夹 链接 可以先将自己感兴趣的图书放入图书收藏夹 如果打算购买再从收藏夹中加入购物车 同时也提供了 删除 按钮 如果不 喜欢收藏夹的部分图书 可以点击 删除 按钮删除收藏的图书 4 1 64 1 6 购物车购物车 购物车是本系统的重要组成部分 这部分的设计是重点和难点 在本系统 了主要实现了两个基本功能 用户添加图书 即用户将打算购买的图书添加到 购物车中 和用户管理自己的订单 即用户可以随时查看购物车 更新购物车 中的图书数量 或者删除不想购买的图书 购物车利用 DataGrid 控件来显示用户所选择的图书书名 单价 数量以及 总价格等信息 在 DataGrid 中主要使用了模板列 TemplateColumn 进行显示和 处理 模板列包括数量 Quantity 书名 Title 单价 UnitPrice 和小计 Price 其中 用户只可对图书数量进行修改 第 16 页 共 28 页 购物车的内容通过 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 BookCart Count i 通过数组来实现计算总价格 int iItemId BookCart GetItemId i int iQuantity BookCart GetQuantity i BookData tempdata BookSystem SearchBooks BookSearchType PKId iItemId ToString bookdata Tables Books ImportRow tempdata Tables Books Rows 0 bookdata Tables Books Rows i Quantity iQuantity decimal unitprice Convert ToDecimal tempdata Tables Books Rows 0 UnitPrice bookdata Tables Books Rows i Price iQuantity unitprice 每项书 的总价钱 小计 数量 单价 totalprice iQuantity unitprice 总价格 bookdata AcceptChanges 第 17 页 共 28 页 dgCart DataSource bookdata dgCart DataBind lblTotal Text string Format 总价 0 totalprice 其中 BooCart 是购物车对象 Cart 的一个实例 Cart 类保存了多组图书项 ID 和购物数量的值 并且根据应用的需要实现了 GetItemID GetQuantity SetItem Clear 等方法 部分代码如下 private ArrayList itemid arr private ArrayList quantity arr public int Count get return itemid arr Count public int GetItemId int index 获取图书项ID if index Count return int itemid arr index else return 1 public int GetQuantity int index 获取各类图书的数量 if index 0 quantity arr index 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 sende

温馨提示

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

评论

0/150

提交评论