资源描述
毕业设计说明书学生姓名学生姓名学学 号号院院 (系系)计算机科学系专专 业业计算机科学与技术题题 目目网上书店系统指导教师指导教师 (姓 名) (专业技术职称/学位)2007年5月摘摘 要要: 网上书店系统属于典型的电子商务系统,具有一定的实用价值。本文描述了一个功能较完善的网上书店系统的开发过程,它集在线销售和后台管理功能为一体。文中主淮阴师范学院毕业论文(设计)1要描述了该系统的设计与实施方案,并对系统中关键技术作了较详细的介绍;最后针对该系统提出了改进方向。关键词关键词:网上书店,ASP.NET,C#,SQL Server 2000,B/S 结构,购物车淮阴师范学院毕业论文(设计)2Abstract: On-line bookstore system is a typical e-commerce system .It is very practical. This paper describes a development process of an on-line bookstore. This system includes online sales and background administration. The article mainly introduces the design and implementation schema, and explains the pivotal technology. At last, it points out the way to improve the systems performance.Keywords: online bookstores, asp. net, C#, SQL server 2000, B/S structure, cart 淮阴师范学院毕业论文(设计)3 目录目录1 1 引言引言.5 51.11.1 项目背景项目背景.5 51.21.2 研究意义研究意义.5 51.31.3 本文所做的工作本文所做的工作.5 5 系统解决方案系统解决方案.6 62.12.1 相关技术相关技术.6 62.22.2 体系结构体系结构.8 82.32.3 技术开发方案技术开发方案.10102.42.4 系统技术平台系统技术平台.10103 3 系统设计说明系统设计说明.10103.13.1 系统框架系统框架.10103.23.2 消费客户使用案例消费客户使用案例.11113.33.3 系统管理员使用案例系统管理员使用案例 .12123.43.4 系统的其他功能模块介绍系统的其他功能模块介绍 .14144 4 数据库设计数据库设计 .14144.14.1 数据模型数据模型.14144.24.2 数据表设计数据表设计.16164.34.3 存储过程设计存储过程设计.18185 5 网上书店系统主要网上书店系统主要/ /关键技术关键技术.20205.15.1 数据库连接模块设计数据库连接模块设计 .20205.25.2 销售模块设计销售模块设计 .22225.35.3 其它模块设计其它模块设计 .29296 6 测试运行情况测试运行情况.32326.16.1 测试运行情况测试运行情况.32326.26.2 程序有待改进方面程序有待改进方面.3434结论结论.3535淮阴师范学院毕业论文(设计)4参考文献参考文献.3636致致 谢谢.3737淮阴师范学院毕业论文(设计)51 1 引言引言1.11.1 项目背景项目背景随着互联网的迅速发展,人们对网上购物的兴趣和热情也日益提升,与此同时,网上书店作为最适合网上销售图书的销售方式,也逐渐得到人们的青睐。越来越多的人直接从网上书店获取所需的图书,自 1995 年 7 月全球第一个网上书店亚马逊书店()在美国开业以来,网上书店如雨后春笋般地涌现。专家估计 2006 年或更早,成人消费图书市场份额中,网上书店约占 50%。网上书店作为一种新的图书发行主体,随着数字图书的出版而占据越来越重要的地位。网上书店在我国起步较晚,但因其众多优势而发展很快。目前国内具有代表性的网上书店有当当网()和卓越网()。1.21.2 研究意义研究意义21 世纪是个以网络为核心的信息时代,数字化、网络化与信息化是 21 世纪的时代特征。随着互联网的不断发展以及全球经济一体化的逐步深入,网上销售已成为现代传统书店必不可少的经营策略之一。网上书店系统具有传统书店无法比拟的优点,主要体现为:1.具有极强的方便性和快捷性,顾客可以足不出户购买到所需图书;2.加快图书流通、交易的速度,从而能够迅速开拓目标市场,实现投入和回报效益的最大化;3.加快顾客信息反馈,有利于提高服务质量,扩大消费群,并最终获取更高的收益。随着我国互联网的更加普及和网上书店的日趋成熟,在线购买书籍的消费群体将会越来越大,网上书店的市场潜力将会得到充分发挥。1.31.3 本文所做的工作本文所做的工作网上书店系统是集在线销售和后台管理为一体的电子商务系统,也是基于 B/S 体系结构的网络应用系统,其中牵涉到网站设计、网络数据库的连接和基于 WEB 应用程序开发等相关技术。为了开发该网上书店系统,并且使系统能够真正达到“适用、好用”的标准,本人认真学习了 ASP.NET 程序设计(基于 C#语言) 、数据库搭建、软件工程等诸多相关教程以及构建网站所需技术的理论知识。对于以下网页制作工具:Dreamweaver、 Flash、 淮阴师范学院毕业论文(设计)6SwishMX 以及图像处理工具 Photoshop 做了深入的学习,基本掌握其使用方法与技巧,为网上书店系统的站点设计做好技术的支持。熟练掌握 SQL Server 中数据库的建立、管理与维护;利用 ASP.NET(Active Server Pages)技术访问后台数据库;借助 IIS(Internet Information Server)在网上进行信息发布以及对系统性能进行优化等相关技术。另外,为了增强系统的实用性,使之能尽量与实际的应用系统相吻合,本人对许多同类网站的内容、功能进行了分析与对比。吸取了它们的可取之处,并在借鉴前人经验的基础上有所创新,挖掘自己的独特之处,构建出目前较为流行的基于三层体系结构技术的网上书店系统,它能够很好地反映并模拟在线电子商务的运作过程。 系统解决方案系统解决方案2.12.1 相关技术相关技术2.1.12.1.1 VisualVisual Studio.NETStudio.NET 20032003 平台和平台和 C#C#语言介绍语言介绍Visual Studio.NET 2003 是一个功能强大、高效并且可扩展的编程环境。有许多激动人心的新功能,它提供统一的集成开发环境,支持在同样的开发环境里用 Visual Basic、Visual C+、Visual C#、Visual J#和其他数十种编程语言,可以编写、调试和部署各种应用程序。它充分展现了应用程序的开发潜能、并提供了生成应用程序的所需要的工具和技术。这些应用程序给当今的企业、机构提供了强大的支持,为开发下一代以 XML Web 服务为中心的应用程序而设计,并推动下一代基于 XML Web 服务软件的发展,是有始以来功能最强大、最受欢迎的软件开发工具。C#(发音为“C Sharp”)是一门简单、现代、优雅、面向对象、类型安全、平台独立的一门新型组件编程语言。它虽然是一种新语言,但却很难在这种语言中找到新的概念,其语法风格不仅源自 C/C+家族,而且融合了 Visual Basic 的高效和 C/C+强大,因此是微软为奠定其下一互联网霸主地位而打造的 Microsoft.NET 平台的主流语言。依本人看来,优点不外乎以下两方面:其一,对于花费很多时间学会 C、C+语言的程序员来说,可以不必丢弃以前的知识,就可以使用这种新的语言开发程序,尽管 C#中有一些新概念、新技术和新函数,但一般而言它的语言及其语法是跟 C、C+类似的,而且对于用 C+编写好的代码也可被重用,主要原因是 C#具有调用已有代码和系统库中的库函数的机制;其二,组件编程已经成为当今世界软件业面向下一代程序开发的一致选择,是 90 年代面向对象编程的深度发展。C#生逢其时,占尽天时地利, “第一等的面向组件编程的支淮阴师范学院毕业论文(设计)7持”也决不是简单说说那么轻松。实际上,组件特性已经深深植入 C#语言的各个层面,可为是 C#锐利(Sharp)之处。2.1.22.1.2 ASP.NETASP.NET 简介简介ASP.NET 是 M 的一部分,作为战略产品,不仅仅是 Active Server Page (ASP) 的下一个版本,它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。ASP.NET 可以用已编译的基于 .NET 环境的可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和 JScript .NET.)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework,开发人员可以方便地获得这些技术,其中包括托管的公共语言运行库环境、类型安全、继承等等。ASP.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。因此,对于程序员来说,可以更方便地开发 Web 应用程序,这些是跟微软为 ASP. NET 设计的以下策略分不开的:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等。 2.1.32.1.3 SQLSQL ServerServer 20002000 简介简介 SQL Server 2000 是 Microsoft 公司 2000 年推出的 SQL Server 数据库管理系统,它是一个杰出的数据库平台,可用于大型联机事务处理、数据仓库以及电子商务等。 其特点有如下几点: 1真正的客户机/服务器体系结构。 2图形化用户界面。 3丰富的编程接口工具。 4SQL Server 与 Windows NT 完全集成。 5具有很好的伸缩性。 淮阴师范学院毕业论文(设计)86对 Web 技术的支持。7SQL Server 提供数据仓库功能。2.1.42.1.4 ADO.NETADO.NET 简介简介ADO.NET 是由.NET framework 为与数据库中的数据进行交互而提供的一组对象类的名称。我们知道,面向对象编程的有关主要优点是可以把各种复杂的功能封装在一个自包含的单元中,接着要处理的就是个定义好的接口中,它由一些方法和属性组成。在 ADO.NET 中,我们将处理断开连接的数据集,在网站的访问者请求数据时,首先建立连接,传送数据,之后关闭连接;接着,访问者就可以修改数据,但这些修改不会在数据源中立即更新(如果需要对访问者所做的修改更新到数据库,必须重新打开连接) 。这种断开连接进行访问数据库的最大优点是效率高、可伸缩性好。在以往的数据库访问中必须为用户一直保持连接,直到该用户的会话结束为止,而 Web 中可能同时处理上千个并行用户,可想而知,如果为每个用户同时保持连接在需要的系统资源是非常昂贵的。因此,使用断开式连接数据可以提高应用程序的执行效率,并能处理更多的工作负载(即它们的伸缩性更好) 。2.22.2 体系结构体系结构2.2.12.2.1 B/SB/S 系统介绍系统介绍B/S(browser/server,简称 B/S)模式,即浏览器/服务器模式,它是基于Intranet 的需求而出现并发展的。2.2.22.2.2 三层体系结构介绍三层体系结构介绍B/S 模式,是一种从传统的二层 C/S 模式发展起来的新的网络结构模式,它通常采用三层结构, 三层体系结构将应用程序划分为三个逻辑层面,这三个逻辑层如下:(1)用户服务层(User Services Tier),也称为表现服务(Presebtation Services),是用户与应用程序进行交互的端点。通常由 WIN32 或者基于浏览器的图形用户界面应用构成。在该层用户可以查看、输入和处理数据。从用户的角度来看,用户服务层就是整个应用。在该电子商务系统中,用户服务层由 ASP.NET Web Forms 构成,它可以让消费客户浏览和搜索图书,向他们的购物车增加图书,并且下订单。(2)应用服务层,也称为中间层,它负责封装事务处理、商务规则、数据访问及其他的核心应用逻辑。应用服务层可以有效地作为前台用户服务层与后台数据服务和数据淮阴师范学院毕业论文(设计)9存储之间的桥梁。在电子商务系统中,应用服务层将由在 windows 组件服务中执行的事务处理和非事务处理.net 服务组件构成。(3)数据服务层,该层负责检索和操作在一个或者多个数据存储中存储的数据。通过将数据访问和操作分离到独立的逻辑层中,就可以将商品服务层从附属数据存储的细节中抽象出去。在该电子商务系统中。数据服务层将实现为一组封装了 sql 数据访问逻辑,并向商务组件返回结果集的存储过程。商务服务组件通过这些存储过程访问数据库中的数据。整个电子商务系统的逻辑体系结构如图 2_1 所示。用户服务用户交互页面导航数据表现业务服务事务处理逻辑业务规则定义数据访问数据服务数据检索数据操作数据验证数据存储数据存储数据关系数据完整性图 2_1 电子商务系统的逻辑体系结构图2.2.32.2.3 Browser/ServerBrowser/Server 模型工作模型工作步骤步骤B/S 模型的工作步骤一般包括以下七步:1用户打开浏览器。2输入或自动启动主页的 URL (Uniform Resource Locator),浏览器生成一个HTTP 请求并把它发给指定的 Internet 服务器。3服务器发回主页的 HTML (Hypertext Markup Language)页面。浏览器将其显示在屏幕上。数据库.NET 的服务器组件 ASP.NET 的 web 服务SQL Server 的存储过程ASP.NET 的 Web Forms淮阴师范学院毕业论文(设计)104用户在主页面上进行操作(如:点击、键入等)。5浏览器生成相应的 HTTP 要求,发送给相应的服务器。6服务器收到请求后,查看本站点是否拥有这个文档。如果有,就将它放入响应信息中返回给浏览器。7浏览器收到响应,查看头文件的格式,判断能否直接显示。否则,调用对应的帮助应用程序或外挂程序处理显示。2.32.3 技术开发方案技术开发方案我们根据应用系统的有关规范标准和具体业务需求,结合软件开发技术发展状况,选择了以下相应系统软件或工具软件,以确定科学、合理的开发方案。具体如下表所述:类别软件名称软件用途数据库SQL Server 2000后台数据库Web 服务IIS后台服务器开发工具Visual Studio.NET 2003后台编码,页面设计2.42.4 系统技术平台系统技术平台硬件:WEB 服务器 1 台、客户机若干台、网卡、集线器等。软件:WEB 服务器为 Windows2000 及以上版本,安装有 IIS。客户机安装 Internet Explorer 或 Netscape Communicator。相关软件,如:IE、SQL Server 2000、VS.NET 等等。3 3 系统设计说明系统设计说明3.13.1 系统框架系统框架3.1.13.1.1 系统主要功能模块系统主要功能模块网上书店系统主要包括两大模块:一是系统管理模块(管理员登陆),二是系统的销售模块(顾客登陆)。在前两个模块下又各自包括分若干小模块,具体功能模块结构图如图淮阴师范学院毕业论文(设计)113_1 所示:图 3_1 网上书店系统功能模块结构图3.23.2 消费客户使用案例消费客户使用案例根据销售模块的基本功能,可以用图 3_2 表示消费客户进入网上书店后系统提供的服务流程。 图 3_2 网上书店系统提供的服务流程具体模块功能解释如下:注册模块:建立账号,如果顾客以前没有建立账号,则只可以浏览图书基本信息和进行图书的高级搜索,相应的该用户没有权限进入购物车管理以及查看购物记录等页面。所以要求用户在下订单之前必须建立账号,同时在用户创建新账号的时候,必须输入用户名(系统会自动检查该用户名是否已存在) 、联系方式以及发货地址。用户在建立新账号之后就可以具有合法登录系统的身份,可以进行相关的购书活动。浏览图书查看图书搜索图书选择图书创建账号登录管理购物车注册查看订单网上书店系统添加新书管理模块销售模块修改书目信息删除书目客户管理图书搜索订单管理销售统计图书浏览购物车管理订单信息浏览淮阴师范学院毕业论文(设计)12登录模块:如果消费客户在没有登录情况下,想要查看购物车,下订单或者访问其过去的购买记录,系统会转到一个提示页面,要求顾客先要登录。如果是没有注册的用户,需要注册建立新账号。如果登录成功,系统将会重新刷新首页,并且提示该用户已经成功登录的欢迎信息,使用者可以在购物会话期间的任何时候进行各项操作。图书浏览模块:为了让客户购买图书,我们必须让客户了解该图书的相关信息,然后再作出购买的决定。在首页我们提供了有限的最新上架的图书信息,消费者可以通过浏览图书目录,查看和选择图书。当用户浏览目录的时候,可以遍历图书类别的层次,查看属于各个类别的图书列表,并且客户可以针对某项具体的书目查看更详细的信息,以便决定是否购买或者放入购物车以供将来的选择参考。查看图书模块:当消费者通过浏览图书类别的目录或者执行高级搜索搜索到某一图书之后,就可以查看该图书的所有相关信息,包括书名、作者、出版社、原来价格、打折情况、实际价格、图书的描述等更为详细的信息,以便决定是否购买或者放入购物车以供将来的选择参考。高级搜索模块:后台管理模块和销售模块中都提供了高级搜索功能。在销售模块中,图书的高级搜索是出于购买的目的,紧接高级搜索的下一个功能是对图书的预定操作。对于图书的高级搜索系统提供了多条件组合查询、逻辑组配、限定范围,包括按书类、作者、出版社等内容任意一项或几项的内容进行查询,同时支持模糊查找功能。选择图书模块:当查看完图书之后,选择要购买的图书,消费用户就能够将其放到他们的虚拟购物车中。管理购物车模块:电子商务的核心是购物车,消费客户能够查看虚拟购物车内的所有图书,并且可以删除所选择的订单或者修改该订单购买图书的数量。当客户删除订单或者修改数量之后,系统会重新计算各订单的价格以及总价格,如果顾客的购物车为空,就不能够执行购买操作,此时会弹出一个友好的警告信息。查看购物记录模块:在查看和管理了购物车之后,顾客就可以为选择的图书作出购买的决定。客户能够浏览购买记录上的所有有关图书信息,如购买日期、是否配送、应付总额等(应付总额是未配送图书价格之和)。3.33.3 系统管理员使用案例系统管理员使用案例在网上书店系统需要强大的后台管理功能,而且只有具有系统管理员权限的用户才可以使用该功能。后台管理主要是对书籍和客户资料的管理,具体包括:对书目的查询、添加、修改、删除;对图书销售的统计、客户的管理、订单的管理等。网上书店系统后淮阴师范学院毕业论文(设计)13台管理流程如图 3_3 所示:订单管理客户管理添加新书高级搜索销售统计简单搜索删除书目更新修改图 3_3 网上书店系统后台管理流程具体模块功能解释如下:搜索模块:搜索分为简单搜索和高级搜索两种,它们都是为了更新对书目信息而提供的。简单搜索只能通过书号进行的搜索(如果输入的格式不正确,将会弹出提示信息);高级搜索提供了多条件组合查询、逻辑组配、限定范围,具体包括:按书类、作者、出版社等内容任意一项或几项的内容进行查询。另外,为了增强查询能力系统还提供模糊查询功能,即把符合模糊条件的书目一一列出。一般情况下,高级搜索的下一个链接功能是更新对书目信息的修改以及删除该书的两个功能。添加新书模块:把最新出版的书上架,添加该书的详细信息。订单管理模块:把所有的未配送的书对应的顾客联系方式等详细信息列出,其下一个链接是列出某一顾客所定购所有书的书名、数量、定购日期、所需的金额等详细信息,便于管理员配送出去。本模块实现根据客户的订单,把图书配送出去。销售统计模块:为了了解书店的销售业绩,我们必须对所有的图书销售情况进行汇总,销售统计模块将完成此项功能,系统可以按照图书分类、作者、出版社、销售日期等内容或任意几项内容的多条件组合查询、逻辑组配、限定范围来对所销售的图书情况进行统淮阴师范学院毕业论文(设计)14计(同时支持模糊查找功能),包括销售数量以及销售总额,是一个比较完整的模块。客户管理模块:该模块是管理员负责管理本网上书店的所有用户信息。主要功能包括查找(支持模糊查找)、删除用户信息。用户被分为两类:管理员和普通用户(在线注册的新用户默认是普通用户) 。3.43.4 系统的其他功能模块介绍系统的其他功能模块介绍在线统计模块:该模块是为了统计本网站访问的历史总人数和当前的在线人数,这也是很大商业性网站使用的模块之一。新闻组模块:此模块的主要功能是为客户提供最新的有关业内新闻,社会焦点新闻,如何时将有何种新书将与读者见面,以及文化出版界有关新闻。在线投票模块:该模块的主要功能是让顾客投票表决,了解本书店的运行情况。以上这些模块也是很多商业性网站经常使用的模块,主要是为了提高网站的服务质量,以提高用户对网站的忠诚度。4 4 数据库设计数据库设计该系统采用 SQL Server2000 作为后台数据库进行存储所有与系统相关的数据。根据系统功能需要主要包括以下数据表:图书基本信息数据表(book)、图书价格数据表(bookprice)、用户信息数据表(Users)、用户订单数据表(Orders)、在线人数统计数据表(CountPeople)、在线投票数据表(Vote)以及新闻组数据表(NewsType、NewsDetails)。4.14.1 数据模型数据模型数据模型是对现实世界数据的抽象表示,其主要目的是规划具体事务处理使用到的数据,建立相应的数据库,保持与应用程序开发之间的简洁性,有利于数据库的规范化、性能优化以及数据的简洁性。4.1.14.1.1 E_RE_R 模型模型ER 模型是数据进行第一层抽象的表示方法。它的主要成分包括:实体、联系和属性。使用这三种成分,我们可以建立许多数据库应用系统的 E_R 模型。对于网上书店系统中使用到的实体和属性可以定义如下(其中带下划线的属性为主属性):淮阴师范学院毕业论文(设计)15图书基本信息数据表(图书编号,ISBN 号,书名,作者,出版社,图书类别,图书描述);图书价格数据表(价格编号,原价,折扣价);用户信息数据表(用户名,用户类型,密码,电话,家庭住址,邮政编码);用户订单数据表(订单号,图书编号,用户名,定购数量,定购日期,购买日期,是否购买,是否配送);在线人数统计数据表(人数);在线投票数据表(投票编号,投票项,得票数);新闻类型数据表(类型编号,类型名称);新闻详细信息数据表(新闻编号,标题, 类型编号,点击率 ,作者, 更新时间,详细内容)。4.1.24.1.2 联系定义联系定义E_R 模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是 1:N,M:N,还是 1:1 等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系等等。本系统的部分实体与联系的 E_R 模型如图 4_1 所示:淮阴师范学院毕业论文(设计)16nm用户信息图书信息定购邮政编码用户名密码书名家庭住址电话用户类型图书编号作者出版社ISBN 号图书描述图书类别定购数量用户名图书编号订单号是否购买是否配送定购日期购买日期拥有图书价格价格编号折扣价原价114.24.2 数据表设计数据表设计根据系统分析和功能的说明,可以将该系统的逻辑数据结构划分为六个基本逻辑块。4.2.14.2.1 图书信息模块图书信息模块 该模块主要用于存放系统中网站销售的所有的书目基本信息,是本系统关键的数据部分。图书基本信息数据表(book):图书价格数据表(bookprice):图 4_1 网上书店系统 ER 图淮阴师范学院毕业论文(设计)174.2.24.2.2 用户信息模块用户信息模块用户信息模块模块用来存储普通用户和管理员的信息,只构造一个非常简单的用户信息数据表(Users),具体如下: 4.2.34.2.3 订单模块订单模块用户订单数据表(Orders)存储了订单上的各项图书的购买详细记录,其详细设计参数如下:4.2.44.2.4 新闻组模块新闻组模块新闻类别数据表(NewsType)用于存储新闻的类别数据,其详细设计参数如下:新闻详细信息数据表(NewsDetails),参数如下:淮阴师范学院毕业论文(设计)184.2.54.2.5 在线人数统计模块在线人数统计模块在线人数统计数据表(CountPeople),其参数如下:4.2.64.2.6 在线投票模块在线投票模块在线投票数据表(Vote), 其参数如下:4.34.3 存储过程设计存储过程设计通过封装数据访问逻辑,数据服务层中的存储过程就可以在应用服务类和数据存储之间提供一个抽象层,应用服务类型只需要执行存储过程,并传递所需的参数,即可以得到存储过程返回的预期返回值或者结果集。其主要的优点是:一是提高系统的性能,提高代码的执行效率;二是增强数据库系统的安全性;三是提高代码的重用度。4.3.14.3.1 书目管理书目管理书目管理的存储过程主要包括查询、更新和删除网上书店系统数据库中的图书基本信息数据表(book)、图书价格数据表(bookprice)中的数据,具体存储过程定义如下:增加图书基本信息,其存储过程代码如下:CREATE PROCEDURE BookAdd (BID int, BISBN varchar(16), BName varchar(50),BAuthor varchar(50), BPress varchar (50), BGroup 淮阴师范学院毕业论文(设计)19int,BDescribe varchar(300) ) AS insert into Book(BID, BISBN, BName, BAuthor, BPress, BGroup, BDescribe ) values (BID, BISBN, BName, BAuthor, BPress, BGroup, BDescribe)删除图书基本信息,其存储过程代码如下:CREATE PROCEDURE BookDelete (BID int)AS delete book where BID=BID查询图书基本信息,其存储过程代码如下:CREATE PROCEDURE BookList AS Select PID, PPrice, PDiscount, BID, BName, BAuthor, BPressfrom BookPrice,Book where BookPrice.pid=Book.bid 更新图书基本信息,其存储过程代码如下:CREATE PROCEDURE BookModify (BID int, BISBN varchar(16), BName varchar(50),BAuthor varchar(50), BPress varchar (50), BGroup int,BDescribe varchar(300) )AS update Book set BISBN=BISBN, BName=BName, BAuthor=BAuthor,BPress=BPress, BGroup=BGroup, BDescribe =BDescribe Where BID=BID增加图书价格信息,其存储过程代码如下:CREATE PROCEDURE BookPriceAdd (PID int, PID int, PPrice money, PDiscount float )AS insert into BookPrice(PID, PPrice, PDiscount) values(PID, PPrice, PDiscount )删除图书价格信息,其存储过程代码如下:CREATE PROCEDURE BookPriceDelete (PID int )AS delete BookPrice where PID=PID更新图书价格信息,其存储过程代码如下:CREATE PROCEDURE BookPriceModify (PID int, PPrice money, PDiscount float) AS update BookPrice set PPrice=PPrice, PDiscount=PDiscountWhere PID=PID淮阴师范学院毕业论文(设计)20获取当前图书的最大的编号, 其存储过程代码如下:CREATE PROCEDURE GetBookMaxBID maxbid int outputAs select maxbid=max(bid) from Book4.3.24.3.2 用户信息用户信息用户信息的存储过程主要包括查询、添加、删除网上书店系统数据库中的用户信息数据表(Users)中的数据。有如下存储过程:增加用户信息,其存储过程代码如下:CREATE PROCEDURE UserAdd(UID varchar (50) , UPassword varchar (50), UPower int,UPhoneNumber varchar(50), UHomeAdress varchar(50),UPostalCode varchar(50) )as insert into Users (UID, UPassword, UPower, UPhoneNumber, UHomeAdress, UPostalCode) values(UID, UPassword, 2, UPhoneNumber, UHomeAdress, UPostalCode)删除用户信息,其存储过程代码如下:CREATE PROCEDURE UserDelete(UID varchar (50) )as delete Users where UID=UID查询用户信息,其存储过程代码如下:CREATE PROCEDURE UserList As select UID, UPassword,UPhoneNumber, UHomeAdress, UPostalCode, UPower from Users用户登录身份验证,其存储过程代码如下:CREATE PROCEDURE UserLoginUid varchar(50), UPassword varchar(50)As select * from users where uid=Uid and UPassword=UPassword4.3.34.3.3 订单管理订单管理订单处理存储过程主要包括选择、插入和更新系统数据库中的用户订单数据表(Orders)的数据,其存储过程有:插入新订单, 其存储过程代码如下:CREATE PROCEDURE OrderAdd (OBID int, OUID varchar(50), OQuantity int, 淮阴师范学院毕业论文(设计)21ODate datetime)as insert into Orders (OBID , OUID , OQuantity , ODate , OBuy)values (OBID , OUID , OQuantity , ODate , 0)删除订单, 其存储过程代码如下:CREATE PROCEDURE OrderDelete(OID int)as delete Orders where OID=OID更新订单, 其存储过程代码如下:CREATE PROCEDURE OrderModify(OID int, OQuantity int)as update Orders set OQuantity=OQuantity where OID=OID以上是网上书店系统的数据库设计的基本过程,主要包括数据模型的建立,数据表的定义以及存储过程的定义。5 5 网上书店系统主要网上书店系统主要/ /关键技术关键技术本章节介绍了系统实现过程中的关键技术,主要包括:数据库连接模块的设计、销售模块的设计及其它模块的设计三部分内容,具体如下:5.15.1 数据库连接模块设计数据库连接模块设计5.1.15.1.1 实现与数据库连接常用的四种方法实现与数据库连接常用的四种方法本设计尝试使用了连接数据库的常用的以下四种方法:(1)建立一个数据库连接类(DB.cs) ,主要代码如下:public static SqlConnection CreateCon()/建立连接字符串 SqlConnection con=new SqlConnection(server=.;uid=sa;pwd=;database=BookShopping); return con; /返回值是连接字符串每当需要连接数据库时调用(DB.cs)即可,主要代码如下:private void Page_Load(object sender, System.EventArgs e)/调用连接字符串,建立连接对象,数据适配器 SqlDataAdapter 对象,本地数据集,把数据绑定到 DataList 上 if(!this.IsPostBack ) SqlConnection con=DB.CreateCon ();/调用连接字符串淮阴师范学院毕业论文(设计)22 con.Open ();/打开连接SqlDataAdapter sda=new SqlDataAdapter(select * from book ,bookprice where book.bid=bookprice.pid and BGroup=1,con);DataSet ds=new DataSet ();/创建并填充 DataSetsda.Fill (ds);this.dlt_class1 .DataSource =ds;this.dlt_class1 .DataBind ();con.Close (); /使用后关闭连接此种方法的好处是建立一个数据库连接类,每当需要连接数据库时调用(DB.cs)即可,方便、快捷。(2)在 Web 配置文件中(Web.config)自定义一个连接字符串,该字符串作为常量被使用,主要代码如下: /在 XML 文档中定义连接字符串每当需要连接字符串时,从文件 Web.config 中读取连接字符串。主要代码如下:private void Page_Load(object sender, System.EventArgs e) if(!this.IsPostBack )string strcon=ConfigurationSettings.AppSettings dsn;/获得连接字符串SqlConnection con=new SqlConnection(strcon);con.Open (); 使用时需要调用域名空间 using System.Configuration ;(3)在 Global.asax 文件的 Application 对象中定义一个数据库连接字符串,该字符串作为常量被调用,主要代码如下:protected void Application_Start(Object sender, EventArgs e)Applicationsqlconstr=server=.;uid=sa;pwd=;database=BookShopping;private void DataBindToDg() SqlConnection con=new SqlConnection (string)Applicationsqlconstr);/首先把Application对象类型强制转换为字符串类型 ,淮阴师范学院毕业论文(设计)23获得连接字符串con.Open (); (4)在需要连接数据库时,每次都直接编写连接字符串的代码,无需调用。主要代码如下:private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)SqlConnection con=new SqlConnection (server=.;database=bookshopping;uid=sa;pwd=;);con.Open ();此种方法虽然较为麻烦,但是很直观明了。5.25.2 销售模块设计销售模块设计5.2.15.2.1 新用户注册模块的实现新用户注册模块的实现在同一个页面使用控件 Panel 是否隐藏来控制注册的流程界面的显示(页面采用流式布局)主要实现代码如下:private void btn_next1_Click(object sender, System.EventArgs e) if(this.RadioButtonList1.SelectedValue=同意)/ this.Panel1 .Visible =false;this.Panel2 .Visible =true; if(this.RadioButtonList1 .SelectedValue =不同意)Response.Write ( confirm(您真的不同意该协议吗 ?);/ 使用本地脚本语言,弹出确认信息对话框为了防止用户注册的用户名相同,造成混乱。本人采用了自定义验证控件,功能是在该页面提交时,新用户注册时使用的用户名,系统将会查询数据库中是否存在,如果存在,该页面无效,提交不成功,主要实现代码如下:private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args) string struid=args.Value ;SqlConnection con=new SqlConnection (server=.;database=BookShopping;uid=sa;pwd=;);淮阴师范学院毕业论文(设计)24con.Open ();SqlCommand cmd=new SqlCommand (select count(*) from users where uid=+struid+,con);int count=Convert.ToInt32(cmd.ExecuteScalar ();if(count0)args.IsValid =false; /验证未能通过else args.IsValid =true; /验证通过使用存储过程,提高系统性能,先定义参数类型,然后给参数赋值;其中的密码使用 MD5 算法进行加密,提高了系统的安全性,关键技术的实现代码如下:private void btn_done_Click(object sender, System.EventArgs e)if(this.Page .IsValid ) SqlConnection con=DB.CreateCon (); con.Open ();SqlCommand cmd=new SqlCommand (UserAdd,con); /调用存储过程cmd.CommandType =CommandType .StoredProcedure ; /将命令类型转化为存储过程cmd.Parameters .Add (UID,SqlDbType.VarChar ); /添加参数,定义参数类型cmd.Parameters .Add (UPassword,SqlDbType.VarChar );cmd.Parameters .Add (UPower,SqlDbType.Int );cmd.Parameters .Add (UPhoneNumber,SqlDbType.VarChar );cmd.Parameters .Add (UHomeAdress,SqlDbType.VarChar );cmd.Parameters .Add (UPostalCode,SqlDbType.VarChar );cmd.Parameters UID.Value =this.tbx_uid .Text .ToString ();/给参数赋值cmd.ParametersUPassword.Value=System.Web .Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.tbx_pwd .Text,MD5);/ 使用 MD5 算法进行加密cmd.Parameters UPower.Value =2;cmd.ParametersUPhoneNumber.Value=this.tbx_phonenumber.Text .ToString ();cmd.ParametersUHomeAdress.Value=this.tbx_homeadress .Text .ToString ();淮阴师范学院毕业论文(设计)25cmd.Parameters UPostalCode.Value =this.tbx_postalcode.Text .ToString ();cmd.ExecuteNonQuery ();con.Close (); 5.2.25.2.2 用户登陆模块的实现用户登陆模块的实现用户登陆时,用 Sessionuid记录用户的用户名,它贯穿于应用程序的整个生命周期,作用是标记某一用户的定购及购买记录。并且根据用户的权限的不同,赋予不同的 Sessionflag标记,是顾客或管理员进入各自的页面的凭据,其它非法用户则不可进入。主要实现代码如下:if(dr.Read ()/保存当前用户名及用户权限 Sessionuid=drUID;Sessionupower=drUPower;this.lbl_hy.Text =欢迎您!+Sessionuid;if(drUPower.ToString ()=1) Sessionflag1=well;Response.Redirect (BookManage.aspx); /进入管理员界面else Sessionflag2=ok; /普通用户,界面不变 5.2.35.2.3 高级搜索模块的实现高级搜索模块的实现这里提供了多条件组合查询、逻辑组配、限定范围,包括按书类、作者、出版社等内容的任意一项或几项的内容进行查询,同时支持模糊搜索功能。主要实现代码如下:public void DataBindToDg() SqlConnection con=DB.CreateCon ();con.Open ();string strsearch=select * from book ,bookprice where book.bid=bookprice.pid;if(this.tbx_bid.Text .ToString ()!=)/如果“书号”有输入 strsearch=strsearch+ and bid= +Convert.ToInt16 (this.tbx_bid .Text .ToString ();淮阴师范学院毕业论文(设计)26if(this.tbx_bname .Text .ToString() !=) /如果“书名”有输入strsearch=strsearch+ and bname like %+this.tbx_bname .Text .ToString ()+%;if(this.tbx_isbn .Text .ToString ()!=)/如果“ISBN 号”有输入strsearch=strsearch+ and bisbn=+this.tbx_isbn .Text .ToString ()+;if(this.tbx_press .Text .ToString ()!=)/如果“书出版社”有输入strsearch=strsearch+ and bpress like %+this.tbx_press .Text .ToString ()+%;if(this.tbx_author.Text .ToString ()!= ) /如果“书作者”有输入 strsearch=strsearch+ and bauthor like %+this.tbx_author .Text .ToString ()+%;if(this.ddl_class.SelectedItem .Value .ToString() !=-1)/如果“书类型”有输入,1 为未选 strsearch=strsearch+ and BGroup=+(Convert.ToInt32 (this.ddl_class .SelectedItem .Value .ToString ();SqlDataAdapter sda=new SqlDataAdapter (strsearch,con);DataSet ds=new DataSet ();sda.Fill (ds);this.dg_searchresult .DataSource =ds;淮阴师范学院毕业论文(设计)27this.dg_searchresult.DataBind (); con.Close ();为了增强个性化,使界面美观、友好,在 DataGrid 上实现一般项与交替项出现颜色交替的效果。主要实现代码如下:private void dg_searchresult_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)if(e.Item.ItemType=ListItemType.Item|e.Item.ItemType=ListItemType.AlternatingItem ) /实现一般项与交替项出现颜色交替的效果e.Item.Attributes.Add(onmouseover,c=this.style.backgroundColor,this.style.backgroundColor=9966ff);/保存现有颜色,赋予新的颜色e.Item .Attributes .Add (onmouseout,this.style.backgroundColor=c);/恢复原有颜色5.2.45.2.4 购物车模块的实现购物车模块的实现根据用户登陆时记录的 Sessionflag标记,检测该用户是否有权限进入该页面,如果是非法用户,则跳转到提示为登陆错误的页面。实现的主要代码如下:private void Page_Load(object sender, System.EventArgs e)/判断用户是否是合法用户,即已成功登陆的用户,且为普通用户,非管理员if(Sessionflag2=null|Sessionflag2.ToString ()!=ok) Response.Redirect (LoginFail.aspx); 针对常用的代码,采用代码封装技术,减少代码的冗余度,提高代码的重用度。public SqlDataAdapter resda()/返回 SqlDataAdap
展开阅读全文