基于ASP.NET的网上书店系统的设计与实现计算机论文.doc_第1页
基于ASP.NET的网上书店系统的设计与实现计算机论文.doc_第2页
基于ASP.NET的网上书店系统的设计与实现计算机论文.doc_第3页
基于ASP.NET的网上书店系统的设计与实现计算机论文.doc_第4页
基于ASP.NET的网上书店系统的设计与实现计算机论文.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文(设计)目 录绪论(1)1 课题概述(1)1.1 课题背景(1)1.2 课题主要研究意义(1)2 asp.net相关技术综述(3)2.1 asp.net(3)2.2 ado.net的优点及其对象的简介(3)2.2.1 ado.net的优点(3)2.2.2 ado.net的对象简介(5)2.3 xml的优点与缺点(5)2.3.1 xml的优点(5)2.3.2 xml的缺点(6)2.4 三层模式的结构及其优点(6)3 网上书店系统的需求分析(7)4 网上书店系统的设计方案(8)4.1 网上书店系统的系统流程(8)4.2 网上书店系统的数据库的设计(8)4.3 网上书店系统的三层模式的设计(10)4.3.1 网上书店系统的数据层设计(11)4.3.2 网上书店系统的应用层设计(11)4.3.3 网上书店系统的表示层设计(13)4.4 本系统三层模式中三层之间的交互举例(14)参考文献(18) iii 基于asp.net的网上书店系统的设计与实现摘 要20世纪末,随着计算机科学的发展,数据库技术在internet中的应用越来越广泛。随着互联网和基于它的网上书店的流行,会有越来越大的消费群体,市场潜力会得到充分发挥。 本文中所要建立的网上书店就是当前流行的网上商店的一种形式。当前的网上书店不少,但是采用asp.net开发的书店系统还是廖若晨星。本文将介绍使用asp.net开发一个比较完善的网上书店系统的过程。这个系统将集成书籍管理、网上订购等功能于一体。 在介绍这个系统实现的过程中,本文中所做的主要工作如下:本文将介绍一些与asp.net相关的技术,例如ado.net、xml;介绍现在比较流行三层架构;对网上书店进行系统分析;完成相应的系统流程和数据库设计,基于3层架构提出设计方案,并实现用户管理、图书类别管理、各个类别中的书籍管理、图书评论管理、图书展示功能、购物车功能、订单管理等功能。【关键词】asp.net ado.net 数据库 xmlanalysis and implementation of the on-line bookstore system based on asp.netabstractby the end of the 20th century, along with the development of the computer science, the database technology got to be more and more extensive in the application of internet. along with the spread of the internet and the on-line bookstore on it, there will be a large of consumption community, and the market potential will get full exertive. the on-line bookstore that to be described in this paper is a kind of the current popular on-line store .there are a lot of on-line bookstores, but the on-line bookstore with asp.net technology is still not enough. this paper will introduce a process which is more perfect using the asp.net to develop on-line bookstore system. this system will gather the book management, on-line order and other functions in whole. in the process of analyses and implement of this system, the main work to do in this paper is as follows: this paper will introduce some technology related to asp.net, such as ado.net and xml; introduce the three layers structure which is popular at present ; carry on the system analysis to this on-line bookstore; complete the homologous system process and database design, and take out the designing solution of the project according to the 3 layers structure, and carry out the function of the customer management, the book category management, the book within each category management, the book comment management, the book display function, the shopping car function, the order management etc.【key words】asp.net ado.net database xml湖北大学本科毕业论文(设计)绪论近年来随着internet技术的飞速发展及用户需求的不断升级,web页面技术也不断的推陈出新,使得web站点的功能越来越强大,能够提供的服务种类越来越繁多。从html、client script和cgi到asp、jsp和php,从java的诞生到activex, web页面设计人员不断受到冲击,微软公司在总结了以往技术后在2000年正式提出了.net。新一代asp.net将前台的html与后台的代码分离,从而使做静态页面和美工的、写页面后台代码的更专注于自己熟悉的工作,更有利于在系统中应用多层的架构,使web程序的开发与维护更方便。本论文将asp.net、xml、ado.net、c#等.net相关的技术应用的这个系统的实现中,也将利用asp.net提供的新的安全解决方案。通过对实现过程中的一些重要环节的讲解,来介绍asp.net中的一些相关技术、好的与不好的一些方面。1 课题概述1.1 课题背景internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。作为internet上一种先进的,易于被人们所接受的信息检索手段,world wide web(简称www)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前internet上已有上百万个web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,建设一个好的web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在internet中的广泛应用,web站点向用户提供的服务将越来越丰富,越来越人性化。网上销售系统就是目前 internet 上广泛使用的在线系统之一。网上售书这是信息社会发展的必然要求。国际互联网的开通,为信息社会的飞速发展创造了条件。据美国电脑工业年鉴公司1999年底公布的报告说,全球因特网使用者到1999年底已达2.59亿,2002年将上升到4.9亿,2005年可达到7.65亿。在全球范围内每千人中的因特网使用者1999年为43人,2002年将达到79人,2005年将达到118人。网民队伍的迅速扩充,无疑为网上售书的发展提供了巨大的市场空间。加上图书因其具有标识清晰、规格统一、特征容易描述、同种商品个体之间无差异等特性而能成为发展电子商务的最为理想的商品类型。因此,网上售书成为各国发展电子商务的首选目标,国际互联网开通后,各国最大的电子商务网站也大都是网上书店。只要网络发展没有停止,网上售书的发展就不会停止。其次,网上售书因其自身具有的经营上的优势对读者具有强大的吸引力,这也是刺激网上售书发展的重要原因。网上售书对于读者而言,其魅力主要表现在三个方面:一是品种丰富,读者选书的余地大。凡属稍具规模的网上书店,一般都具有良好的网络购书界面,由于不受实物陈列空间的限制,网上书店向读者提供的选书品种往往能数十倍于实物书店,读者可以通过分类查找方式选择自己所需购买的图书。二是购买方便。读者在网上查找到自己所需要的图书后,可立即发出购书信息,网上书店接到订购信息后即可确认,不几天就可收到送达的所购图书。亚马逊书店只需几十秒钟即可向顾客发出确认信息,一小时之内就可将书送到购书者手中。三是售价便宜。1.2 课题主要研究意义微软公司的asp.net技术1已经广泛的应用与创建动态web站点和基于web的分布式应用,是广大windows程序员开发web应用程序的有效工具。它是一个用于web开发的全新框架,其中包含了许多新的特性。例如,页面事件、web控件、缓冲技术以及服务器控件和对数据捆绑的改进,在数据处理方面更是引入许多激动人心的新技术。本文所开发的系统采用asp.net技术,并在开发中以三层架构的思想为指导。这样读者可以将采用asp.net技术和asp技术做web开发的过程做一个比较,便会发现asp.net技术本身就体现着三层架构的思想,能与三层架构更好的结合。读者更会发现asp.net使web表单开发更为直观,并且面向对象技术促进了组件的再利用。读者也会感到asp.net是完全基于模块与组件,尤其是它的code-behind2特性使其更易于编写结构清晰的代码,这些代码很容易进行再利用和共享,具有更好的可扩展性和可定制性。这些优点让asp.net远远超越了asp,同时也提供给web开发人员更多的灵活性,有效的缩短了web应用程序的开发周期。2 asp.net相关技术综述2.1 asp.net 什么是asp.net? asp.net是一种建立在通用语言上的程序构架,能被用于一台web服务器来建立强大的web应用程序。asp.net提供许多比现在的web开发模式强大的优势。执行效率的大幅提高 。asp.net是把基于通用语言的程序在服务器上运行。不像以前的asp即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。下面是它的优势:.世界级的工具支持。asp.net构架是可以用microsoft(r)公司最新的产品 visual s开发环境进行开发,wysiwyg(what you see is what you get所见即为所得)的编辑。这些仅是asp.net强大化软件支持的一小部分。 .强大性和适应性。因为asp.net是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在web应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到asp.net的web应用中。asp.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有c#(c+和java的结合体),vb,jscript。将来,这样的多种程序语言协同工作的能力保护您现在的基于com+开发的程序,能够完整的移植向asp.net。.简单性和易学性。asp.net是运行一些很平常的任务如表单的提交客户端的身份验证、分布系统和网站配置变得非常简单。例如asp.net页面构架允许你建立你自己的用户分界面,使其不同于常见的vb-like界面。另外,通用语言简化开发使把代码结合成软件简单的就像装配电脑。.高效可管理性。asp.net使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为zero local administration的哲学观念使asp.net的基于应用的开发更加具体和快捷。一个asp.net的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。 .多处理器环境的可靠性。asp.net已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的asp.net应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的asp确做不到这一点。.自定义性和可扩展性。asp.net设计时考虑了让网站开发人员可以在自己的代码中自己定义plug-in的模块。这与原来的包含关系不同,asp.net可以加入自己定义的如何组件。网站程序的开发从来没有这么简单过。.安全性。基于windows认证技术和应用程序配置,你可以确性你的应用程序绝对安全的。2.2 ado.net的优点及其对象的简介2.2.1 ado.net的优点ado.net是由.net framework为与数据库中的数据进行交互而提供的一组对象类的名称,是对microsoft activex data objects (ado)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是xml格式的,因此任何能够读取xml格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ado.net组件,它可以是基于一个microsoft visual studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。其优点如下:1. 可交互的数据更广泛ado.net可以与许多类型的对象交互,不仅有存储在数据库中的数据,还有存储在电子邮件服务器文本文件应用程序文档(例如excel电子表格)和xml中的数据。ado.net允许从源中选择相当抽象的数据,数据库管理员只需授予使用数据的一个视图的权限接口,即使没有访问数据源其他内容的权限,也可以使用ado.net把数据放在asp.net页面上。asp.net还提供了一种比传统asp更容易格式化页面上的数据格式:datagrid,它可以创建大多数的html标记,它与ado.net的对象相结合,可以轻松地把各种数据以多种形式上传到页面上。而且,ado.net还提供了以xml格式处理数据的工具。2. 托管的处理断开连接的数据集在ado.net中,我们将处理断开连接的数据集,将打开连接的时间降至最低。在网站的访问者请求数据时就要建立连接,传送数据,之后关闭连接。接着,访问者就可以修改数据,但这些修改不会在数据源中立即更新在用访问者所做的修改更新数据库之前,必须重新打开连接。例如选择(select)或更新(update),你就可以将行读入数据集(dataset)对象中,然后在不保持与数据源的连接的情况下使用它们。在ado中,记录集可以提供不连接的访问,但ado主要是为连接的访问设计的。ado和ado.net中的不连接处理数据之间存在一个显著的差异。在ado中,使用ole db供应程序和odbc驱动程序来与数据库通信。在ado.net中,是托管的数据供应程序完成这个任务。.net提供了两个托管的供应程序:managed provider for sql server,仅能于sql server通信。因为这个供应程序只需要于一个数据库通信,所以它是最优的,速度很快;managed provider for ole db基于ole db,可以于有ole db 供应程序的数据仓库通信,但它不是专用的托管的供应程序。3. ado.net可以在应用程序间共享数据在应用程序间传输ado.net数据集比传输ado不连接的记录集要容易得多。若要将ado不连接的记录集从一个组件传输到另一个组件,应使用com。若要在ado.net中传输数据,应使用数据集,它可以传输xml流。相对于com,xml文件的传输提供以下便利之处:更丰富的数据类型:com封送提供一组有限的数据类型。由于ado.net中的数据传输是基于xml格式,所以对数据类型没有限制。因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型。性能:传输大型ado记录集或大型ado.net数据集会使用网络资源,随着数据量的增长,施加于网络的压力也在增加。ado和ado.net都可以最大限度地降低所传输的数据但ado.net还提供另一个性能优势:ado.net不需要数据类型转换而需要com封送来在组件间传输记录集的ado,则需要将ado数据类型转换为com数据类型。穿透防火墙:防火墙可以影响试图传输不连接的ado记录集的两个组件防火墙通常配置为允许html文本通过,但防止系统级请求(如com封送)通过因为组件使用xml交换ado.net数据库,所以防火墙可以允许数据集通过。4. 可编程性利用visual studio.net,你可以对你的对象进行编程,而不是某一个数据表或某一个数据列。ado.net采用强类型编程,可以更好的表述业务对象。例如,在以下的代码行中采用了传统的程序设计(不是强类型的):if totalcost table(customer).column(availablecredit)。在这个例子中,采用的是关联的、抽象的方式对ado表和列进行编程。如果采用强类型编程,事情就变得简单多了:if totalcost customer.availablecredit。除了能够方便阅读,强类型代码也更加容易编写。特别是依靠语句自动补写功能,你编写的对象也能够识别。在下图2.1中可以看到,利用intellisense(智能感应)技术,可以方便的找到与customers相关的表。图2.1 强类型编程和intellisense此外,强类型数据集有的执行速度,因为应用程序不必在每次访问数据成员时都去ado对象集合中查找了。5. 运用dataset(数据集)任何采用ado.net的应用方案中最重要的就是数据集(dataset)了。数据集是指数据库数据在内存中的拷贝。一个数据集可以包含任意多个数据表,每一个一般都对应于数据库中的表或视图。数据集组成了一个非连接的数据库数据视图。也就是说,它在内存中,并不和包含对应表或视图的数据库维持一个活动连接。这种非连接的结构体系使得只有在读写数据库时才需要使用数据库服务器资源,因而提供了更好的可伸缩性。由于数据集可以保存多个独立的表并能维护有关表之间的关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和具有多对多关系的表。在运行时,数据会从数据库中取出并先传给一个中间层业务对象,然后传至用户界面。为了适应这种数据交换,ado.net采用了基于xml的持续的传递格式。也就是说,当数据从一个层传向另一个层时,ado.net的方案是将内存中的数据(即数据集)表述为xml,然后以xml格式传递给其他组件。2.2.2 ado.net的对象简介ado.net具有丰富的对象,为我们操纵数据提供了极大的方便,基本的ado.net工具是connection对象,command对象,和dataset或datareader对象。connection对象:用于连接数据源,它表示数据源和数据使用者之间的连接。连接字符串为connection对象提供信息,指定要使用的数据源,以及如何使用该数据源。command对象:仅仅连接一个数据源是不够的,还要能读取和修改它,这就是ado.net的 command对象的任务了。该对象包含了可应用于数据库的所有指令,如select、delete、 insert、update等,还可以使用它的executereader()方法创建一个datareader,在表中显示查询的结果。dataset对象:它表示数据库中的数据,是处理数据的核心对象,它可以包含多个表,并建立它们之间的关系,这些关系把一个表中的一行与另一个表中的一行关联起来。dataadapter对象:用于把结果从connection传送给dataset对象,它的fill()方法把数据拷贝到dataset中,update()方法把dataset中的数据拷贝回数据源。dataview对象:表示dataset中存储的datatables的特定视图。这是要从整个dataset中读取的记录和列的描述。2.3 xml的优点与缺点2.3.1 xml的优点使用xml来交换信息3有很多好处,包括下列方面:使用人的语言而不是计算机语言。xml 便于阅读(且容易理解,即使是初学者亦如此),且与 html 编码相比并不难;与java 完全兼容,且完全可以移植。(在任何平台上)可以处理 xml 的任何应用程序都可以使用您的信息;可扩展。创建您自己的标记(或使用别人创建的标记),这些标记使用您的域的本机语言、具有您需要的属性,且对您和您的用户都很有意义。许多html标记都是只取首字母的缩写词,所以它们不如普通语言那么易读。html标记将数据(以上示例中,这些数据为城市名和人口)表示为要显示的项,例如,列表中的定义或者表中的单元。这使得处理数据或者在应用程序之间交换数据变得不易; xml标记名便于阅读,且表达了数据的含义。每个 xml 标记就位于相关联数据的前面,这样人和计算机都可以容易地识别信息结构。数据结构遵循显而易见且有用的模式,使得处理和交换数据更容易。 2.3.2 xml的缺点但是xml也有它的一些缺点:以xml格式储存的数据要比以其他数据库格式储存占有的空间要大的多,因为它除了要保存原始数据外还需要保存元数据进行描述。 xml+xslt的缺点主要是成本和复杂性。由于缺乏所见即所得的(wysiwyg)页面编辑器的支持,对于实现相同显示效果的复杂页面,xml+xslt的工作量要比html+css大得多。而且页面制作人员完全不能适应xml+xslt的工作方式(这是程序员的工作方式),强求他们采用xml+xslt是不现实的。dreamweaver目前已经可以非常好地支持css了。所以在可预测的未来很长一段时间,html+css仍然是web页面开发的主流技术。2.4 三层模式的结构及其优点三层模式的每一层对应着一个体系结构4中三个相应的元素:交互、业务规则以及数据提取、处理及存储。这三层是:表示层,也叫用户界面层:用户与应用程序的操作、交互的接口;业务逻辑层,也叫应用层:将一些业务处理的逻辑与规则经过封装,它提供一些接口与用户层和数据层进行交互;数据层:主要是提供业务逻辑层的数据接口和后台的数据管理,比较典型的数据库管理系统有:sql server 2000/2005 、orcale 8i/9idb2等。三层/多层应用开发架构的优点:三层结构是应用最多的多层结构,它包括客户端服务层(表示层)、业务服务和其他“中间”服务层(业务逻辑层)、数据服务(数据层)。在三层的应用程序模型中,业务逻辑层与用户界面层和数据层明显地分离出来,将客户端的用户界面与服务器端数据存取隔离开来,极大地改善了应用程序的可维护性。这种更多更细的分层不但提高了系统的维护性能,而且也增加了系统的重用性和分布式系统概念融合的可能性。三层/多层应用的应用场合:目前使用范围较广的协同应用程序开发模型。将客户/服务器架构中各种模块划分为三层服务结构,它们架构在网络平台上,共同组成一个完整的应用程序。3 网上书店系统的需求分析本系统要解决的问题是使售书交易进行网络化管理,使图书销售工作更加容易,从而提高工作效率、降低管理的成本。本网上书店系统是有用户使用的选购商品、生成订单、订单状态查询等的模块和后台管理员使用的商品管理、用户管理、订单管理等模块组成的。比较起来,前台用户使用的模块的程序代码量要远远小于后台管理员使用的管理模块。所以本系统应该提供如下功能:.书籍类别的增加、查询和修改功能。所有的书籍都可以按照一定的方式实现分类,不过在本系统中建立的分类比较简单。.各个类别中书籍的增加、查询和修改功能。每个分类中的图书都应该可以在这个系统中进行图书的增加、查询和修改。另外,由于存在部分图书在经过一段时间的出版、再版之后不再印刷;或者某种图书因为某种原因不允许销售的状况,因此在给用户展示图书时不应该展示这部分图书。但是如果采用在数据库中删除这些图书信息的方法则会导致大量的数据的丢失,并破坏其他数据标语表示图书的数据表之间的联系,所以在这个系统中不存在删除图书的功能,而是通过使一种图书有效/无效的方法来满足前述要求。.图书评论管理功能。在用户系统中,注册用户可以对某一本图书进行评论。由于用户能评论图书,而且所有的评论都保存在数据库系统中,因此应该让管理员能够管理这些评论,还应该允许管理员根据一定的标准把不符合发布标准的评论删除。.图书展示功能。当管理员在上面的3种功能中建立好图书的分类和各个类别中的图书之后,就可以使用图书展示程序把书店中的图书按照一定的方式展示给用户。这部分的程序分为5种:一种是最受欢迎的即按照图书的购买次数进行排序展示;一种是根据图书的分类进行展示;一种是根据图书的入库时间进行展示,展出最新图书;一种是展示推荐书目;最后一种是根据用户的某种条件进行查询并对查询结果进行展示。用户可以通过这些功能进行书籍的挑选。.购物车功能。当用户选定一种商品后,就可以把这种商品放入到购物车中。可以使用session对象来实现这种功能,但是本系统通过建立一个临时数据表来实现。需要注意的是,在购物车中的商品并不是用户最终的要买的商品,只是一个购物意向。.订单的生成、查找功能。当用户挑选好商品之后,可以把购物车中的商品形成一张订单提交给系统。除了提交购买的图书之外,还应该提交用户的电话和送货地点等相关信息。用户在提交订单后,可以通过订单查询程序来查询自己订单的处理情况。.订单处理功能。当管理员得到一个订单后,可以开始处理订单。首先管理员要看用户订购的图书是否有足够的货,如果有,就可以把这个订单的实际交付数量修改为用户的订购数量,并把这个订单中该书的状态修改为“已处理”,如果不能满足用户的要求,应该输入相关的原因。在对订单中所有的图书都处理完后,如果有一种图书的状态是“已处理”,就把该订单的状态修改为“未送货”;如果所有的图书的状态都是“未处理”,或可以判断出用户提交的送货地点是无法送达的,或无效的,就可以把该订单的状态修改为“无法完成” 。当送货员把货物送到用户手中,并把书款收回之后,就可以把该订单的状态修改为“已完成”,并修改相应图书的库存。管理员通过完成订单的数量(书籍总金额、送货费及送货时间)可以查询一段时间内某个送货员完成的销售数量。当然,本系统简化了这一系列属于物流管理方面的操作过程,而直接由管理员统一进行这些状态的修改设置。4 网上书店系统的设计方案 根据上面所提出的需求分析5,可以设计出相应的几个功能模块。下面具体设计本系统的解决方案。4.1 网上书店系统的系统流程图4.1展示了该系统所有功能模块之间的逻辑关系,其中的各个功能模块并不一定代表一个独立的页面或类。loginif no city informationget passwordis common userenter citylost passwordregisterif not registerbooksupdate register informationordersearchis managermanager usermanager bookdeal with ordersreply to lack book recordsadd to cartordercan find the bookrecord a lackbookadd to inventory图4.1 系统功能模块关系图4.2 网上书店系统的数据库的设计前面已经详细分析了本系统所要的功能和系统流程,下面开始设计本系统的数据库。图4.2为本系统的数据库模型6。commentpk idfk1 bookid username email caption content publishdatebooktypepk id name memotempstorepk,fk1 bookidpk,fk2 useridlackrecordpk idfk1 userid name publisher replybookpk idfk1 type name author translator publisher price discount cover description hits sales statususerinfopk id name passwordmailcityorderdetailspk idfk1 orderidfk2 bookid quantityorderspk idfk1 userid orderdate status图4.2 系统的数据库模型在上面的数据库模型中不仅列出各个表中的字段,同时也列出了各表7的主键、外键等信息。下面将对每一个数据表进行简单的描述:booktype表,用于保存书籍分类信息的数据表。它的主键是id字段,由book表引用。该表包含的信息包括书籍分类的名称及内容描述;book表,用于保存书籍详细信息的数据表。它的主键是id字段,由comment、orderdetails和tempstore表引用该表包含的信息包括书名、作者、出版社等;comment表,用于保存读者对某一本书的评论信息的数据表。它的主键是id字段。该表包含的信息包括评论的标题、内容和作者等;uerinfo表,用于保存用户的信息。它的主键是id字段,由tempstore、lackrecord和orders表引用。该表包含的信息包括用户的名字、密码和电子邮件地址等;orders表,用于保存某订单的信息。它的主键是id字段,有orderdetails表引用。该表包含的信息包括下订单的信息、状态及下订单的用户;orderdetails表,用于保存订单中某一本书的详细订单信息。它的主键是id字段。该表包含的信息包括订单号、书号和订购数量等;tempstore表,这是用于交叉引用用户和书籍的映射表。它实际上在用户选购商品的时候保存一些临时的记录。注意,由于主键是bookid和userid组合成的,用户有可能拥有多本书,这样做可以利用一些比较高级的安全技术;lackrecord表,用于保存书库中缺少而用户提出需求的书籍信息。它的主键是id字段。该表包含的信息包括提出需求的用户id、书名和出版社、管理员的回复等。为了提高系统的性能,我们还需要为系统在数据库中提供一些存储过程。存储过程是web应用程序的后台数据存储的组成部分。可以让数据层的代码直接调用它们来访问数据库表。在数据库中使用存储过程可以让数据层变得简单并易于维护,同时可以很大程度上减少网络流量。可以将大部分的有关数据库的操作都编写为存储过程,然后再在数据层组件中的方法中调用。下面列出本系统中将会用到的存储过程:addbook,用于添加书籍信息;insertcomment,用于添加评论信息;updatebook,用于更新书籍信息。为了更好地保证本系统数据库的完整性和独立性,设计了4个视图,如图4.3所示:ordersviduseridnameorderdatestatusbookvidtypedidnameauthortranslatorpublisherpricestatusmemodetailsvorderiduseridorderdateidbookidquantitynamepriceauthortranslatorpublisherdiscounttempstorevbookiduseridnameexpr1priceauthortranslatorpublisherdiscountstatus图4.3 系统视图4.3 网上书店系统的三层模式的设计 前面已经介绍过三层模式的结构和优点了,下面开始设计本系统的三层架构,即数据层、应用层和表示层。4.3.1 网上书店系统的数据层设计有了前面已经设计好的数据库,现在可以设计数据层了。数据层8由一组包装了对数据库进行各种操作(如数据库的连接、获取数据、关闭连接等)的类组成。本系统的数据层中有以下这些的类。base类,该类主要提供一些基本的数据库操作方法,下面列出该类中的方法的定义和描述:protected static int executesql(string strsql),执行sql命令。通过使用sqlcommand对象的executenonquery方法来判断执行结果;protected static int executesqlex(string strsql),执行sql命令的另一种方法。通过sqldatareader.read方法来判断执行结果;protected static dataset executesql4ds(string strsql),将sql命令执行结果填充到一个数据集中,并返回该数据集;protected static int executesql4value(string strsql),返回一个单一的值。使用sqlcommand对象的executescalar方法执行查询,并返回查询所返回的结果集中的第一行的第一列。忽略额外的列或行。返回值被强制转换为整型;protected static object executesql4valueex(string strsql),与executesql4value类似,返回值为object类型对象;protected static int executesqls(string strsql),批量执行sql语句。4.3.2 网上书店系统的应用层设计对于管理数据库来说数据层已经足够了,但是要处理更复杂的商务规则,或者需要更加面向对象的方法来访问数据库,这时候,数据层只能提供基本功能,而不能提供描述对象与其他对象之间关系的属性。因此,需要创建另一些类来提供这些功能,并且把商务逻辑层9与数据层分开。应用层是基于数据层之上的,并且有提供实体的完整的面向对象的描述的类,也有操作它们的方法。它能隐藏数据层的详细信息,并能防止直接访问被保护的记录。本系统的应用层在以下这些类中实现:book类,该类定义了与书籍操作相关的各种数据库操作方法,例如添加、删除和查询书籍等。下面列出该类中的方法的定义和描述:public void addbook(arraylist temparr),添加新书;public void deletebookbyid(int bookid),通过书的id来删除该书;public dataview getbook(),返回所有书的记录;public dataview getbooktop10(),返回销售榜前十;public sqldatareader getbookbyhits(),返回点击率最高的十本书;public dataview getbookcover(int bookid),返回一本书的封面;public dataview getbookdetail(int bookid),返回一本书的详细信息;public dataset getbookmessage(int booktypeid),返回一类书中所有书的基本信息;public dataview getnewbook(),返回新到书目;public dataset getorderdetail(string name,string pwd,int orderid),返回某一个订单条目的详细信息;public static void hits(string bookid),点击次数加1;public static dataset search(string strcondition),在bookv视图中利用用户输入的任意搜索条件进行书籍的搜索;public dataset searchbook(string msg),为搜索引擎提供的书记搜索。booktype类,该类定义了与书籍种类操作相关的各种数据库操作方法,例如添加、删除书籍种类等。下面列出该类中的方法的定义和描述:public void add(string name,string memo),添加新种类;public dataview getbooktype(),获得所有种类;public bool isexist(string btname),判断这个种类是否已经存在;public void delete(int id),删除该种类。comment类,该类定义了与书籍评论相关的各种数据库操作方法,例如添加、删除评论等。下面列出该类中的方法的定义和描述:public dataview getcommentbybookid(int bookid),返回某一本书的所有评论;public dataview getcommenttop10(),返回前10个评论;public void insertcomment(arraylist arr),添加一条评论。user类,该类定义了与用户操作相关的各种数据库操作方法,例如添加、删除用户等。下面列出该类中的方法的定义和描述:public static void add(string name,string password,string mail),添加用户;public static void changepassword(string name,string oldpwd,string newpwd),更改密码;public static bool check(string name,string mail),忘记密码时,检查是否存在该用户;public static void delete(int id),通过用户id删除用户;public static void delete(string name),通过用户名删除用户;public static void deletegroup(string names),同时删除多个用户;public static string getpassword(string name),获取密码;public bool getuserinfo(),获取用户信息;public static dataset getusers(),返回所有用户;public static bool isexist(string name),查询是否存在该用户;public static bool issupervisor(string name),判断登陆者是否是管理员;public static bool login(string name,string password),处理用户登陆;public static update(string mail,string name,string password),更新用户信息。lackrecord类,该类定义了与登记库存中所没有的书籍信息相关的各种数据库操作方法,例如添加、删除这些书籍信息等。下面列出该类中的方法的定义和描述:public static void add(int userid,string name,string publisher),添加书籍信息。public static void delete(int id),删除某条书籍信息;public static void deletegroup(string ids),删除多条书籍信息;public static dataset getlackrecords(),返回没有管理员回复的所有书籍;public static dataset getlackrecords(int userid),返回某个用户希望增加的那些书籍;public static bool isexist(string name,string publisher),确认库存中是否有该书;public static void setreply(int id,string reply),添加回复;public static bool update(int id,string name,string publisher),更改书籍信息。orderdetails类,该类定义了与订单中具体条目相关的数据库操作方法,主要是获取某订单条目中所购书的数量。下面列出该类中的方法的定义和描述:public void orderdetails(int bookid,int qty),获取某订单条目中的书的id和数量。or

温馨提示

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

评论

0/150

提交评论