1、AbstractAlong with the development of network information, network application in people life more and more widely. People are more and more want to in the shortest possible time to buy the books you need. Various, give people the proviso purpose in the busy work life acquisition has caused problems
2、, hence online bookstores became people yearning thing, this system development for people bring great convenience, that they never leave home can simply breezed buy the books they want, already save time and effort. In e-commerce sites, online bookstore is the most widely used, one of the most succ
3、essful model. Through its users can networks in Internet, the breakthrough time and space restrictions and the realization of online acquisition. The rise of online bookstore to traditional book circulation system produced strong impact, effectively shorten the book circulation issue link, will read
4、ers, books, publishers, issuers closely together, greatly improving the book circulation rate. It has low cost, inventory management is a virtual, user retrieval convenient, regional restriction less etc. Characteristics. This system to ASP as the main production tools, which realizes user register,
5、 login, and user data collection, books, books preview inquires purchase through the shopping cart realization, orders, the administrator can use of commodities, commodities, customer information and order information content maintenance and thus realizes the website and the communication between cl
6、ients. Key words:online bookstore; Asp; Microsoft SQL Server 20051. 绪论1.1系统的来源和背景概述随着全球经济一体化的逐步发展和深入,网上书店已成为传统书店必不可少的经营策略之一。目前,网上书店在国际互联网上可以实现的商务已经多样化,可以完成从最基本的信息展示、信息发布功能到在线交易、在线客户服务、在线网站管理功能等,可以说,传统书店所具备的功能几乎都可以在互联网上进行电子化的高效动作。虽然传统书店规模有所不同,随着网上交易的开展,都将有力地改变企业的发展空间,会对企业的竞争力产生不可忽视的影响。这次我所设计的课题正是互联网与
7、社会生活之间的紧密关系的体现,现今的社会,人们已经离不开了网络,网络已经成为人与人之间交流的一种形式,他能够把事情的复杂化转为简单化。本系统希望通过构建一个电子商务网站,利用日益繁荣的互联网,为传统的书店打造一个新的销售平台。本系统仅仅提供网上书店购买的基本功能,主要包括顾客浏览、购买、查看订单以及注册和修改个人资料等。用户注册并登陆后,可以浏览或搜索系统提供的各种商品,并将自己喜欢的商品放入购物车,购物后,系统提供结账功能,保存购物车中的订单。如果是系统管理员,还可以对商品、商品种类、顾客信息以及订单信息等内容进行维护。1.2 需求分析根据图书销售的基本需求,本系统可以完成如下任务:(1)会
8、员登录功能:会员登陆后才可以实现购物车功能,以及查看订单功能。购物车功能:方便记载用户购买的商品。(2)商品查找功能:用户可以直接搜索所需的产品,当产品数量很多时该项功能对用户来说是非常方便的。(3)订单查询功能:该功能是方便查询会员的所有订单情况。(4)商品分类列表:一般商品会有好多品种,为了分门别类而使得这项功能非常有用。当用户需要某种类型的商品时,只需要使用该功能就可以看到所有属于该类的商品。(5)最受欢迎商品:该功能是为了提高网站对用户的吸引力而设定的。(6)会员评论:当用户搜索到某产品时,可以看到会员对该产品的评价。但是,普通用户不能发表评论。管理员可以删除会员的评价。1.3相关技术
9、介绍和环境的配置1998年,微软公司发布了ASP2.0。ASP1.0和ASP2.0的主要区别是外部组件。有了ASP 2.0,就可以建立ASP 主要运用ASP.NET AJAX无页面刷新技术可以方便地创建更具交互性的支持AJAX的WEB运用程序应用了。微软公司接着开发了Windows2000操作系统。这个Windows版本带上了IIS5.0及ASP3.0。虽然到目前Windows已经发展到比较高的版本,但是开发领域中依然采用Windows2000 Server.Windows2000包括三个不同的版本即Professional、Server和Advanced Server.按照默认设置安装Win
10、dows2000 Server,安装时不用做任何改动,就配置好了ASP的运行环境。ASP可以使用两中脚本语言:VBScript和Jscript。所谓的Jscript语言就是微软版本的JavaScript语言。ASP包括内置对象,最常用的是五大对象、一个集合和一个文件。五大对象分别是Response、Request、Session、Application和Server,一个集合是Cookies,一个文件是Global. asa.ASP最常用的内置组件是操作文件的组件和操作广告的组件。ASP最强大的功能还是使用外置组件,比如使用外置组件实现文件上传,发送E-mail,等等。 通过ADO数据访问接口
11、可以方便地操作各种数据库。通过ADO访问数据库有三种标准的访问格式。此应用程序可广泛运行于国际互联网即Internet,也可适用于内部的局域网。其运行要求和逻辑结构分别如下:(1)客户端:Windows95/98/2000/XP,Internet Explorer(IE)等。(2)服务器端:Windows NT/Windows2000,Internet Information Server (IIS)4.0及其以上版本,IE等;或者Windows98,Personal Web Server(PWS),IE等。(3)数据库:采用access,运行于服务器端。2.功能实现方向2.1功能实现要求网上
12、书店系统分两个部分,第一部分是面向用户的部分,用户可是实现在线注册、登陆、购书、提交订单等操作,都在这一部分完成;另一部分是书店管理部分,这部分的内容包括:管理员对图书的添加、删除、查询、图书种类的管理、订单的处理、管理员的管理、注册用户的管理等。对于网民,能吸引住他们的先决条件是网站的整体构思,所以网站的首页提供了一个简洁明快的界面,分为三个模块:用户管理模块、图书销售系统模块、在线管理系统,以让浏览者能一目了然的知道,自己想要的内容放在哪里,这些内容可以提供给所有的浏览者,内容包括图书查询,热点图书,新书推荐等,这里可以查看所有所需图书信息。对于用户界面管理模块,根据系统功能的分析,它具有
13、的功能应该包括网站页面的查看、图书列表的查看、购物车的使用、和用户功能的具体内容等,对于管理员管理界面而言,根据系统功能的分析,它有的功能应该包括:对用户的管理(注册会员管理、后台用户管理),对图书管理,对订单的管理等功能。该图书销售系统主要实现会员管理、图书搜索、购物车、订单查询、图书分类列表、推荐图书和会员评论等功能。(1)会员管理模块包括会员登录、注册及个人信息修改。(2)购物车功能模块如果会员对某图书感兴趣就可以通过该功能将书放入自己的购物车,这与超市中的购物车有同样的功能。用户也可以在购物车中查看、添加、删除图书。(3)订单查询功能模块通过订单查询功能,会员可以查找到自己的所有订单信
14、息。(4)图书查找功能模块通过输入要查询的图书名称就可以查询图书的详细信息(可以增加高级查询功能)。(5)图书分类列表模块通过分类商品列表,用户可以很方便地在某类商品列表中查看该类所有的商品信息。(6)推荐图书模块通过推荐图书模块,用户可以根据图片链接到图书信息页面进行购买。3. 系统设计3.1系统架构设计虽然网上书店系统只实现了网上购书的基本功能,业务也并不复杂,系统是以分层的体系架构形成来实现。图3-1所示为系统的架构图。在这个系统架构中,最底层为数据层,即数据库,用于储存系统中用到的数据,本系统使用SQL Server 2005来存储数据。数据访问层从业务层接收请求,利用存储过程或者其他
15、方法从数据层获取数据传回业务层或向数据库写入数据。该层的实现代码全部封装到DataAccess类中,所有对数据库的操作都由它来完成。业务层位于用户层和数据库之间,起到桥梁的作用,该层的实现代码全部封装到BusinessFacade类中,该层响应用户层的用户请求,检验用户数据库的合法性,将请求发送到数据访问层,并将数据访问层返回的数据传送给用户层,从而把业务逻辑与用户界面分开。用户层是提供给用户操作的界面,用户可填写数据,发送请求以及查看需要的信息等。如获取数据时不对数据库进行数据更新,用户层可以不经过业务层而直接访问数据层获取数据;如果需要对数据库进行更新,可以通过业务层来实现。用户层业务层数
16、据访问层数据库 图3-1系统架构3.2 系统功能模块划分从大的方面来说,该系统分为顾客和管理员两大块。顾客可以访问的页面有首页(商品展示页面)、商品详细信息页面、购物车页面、注册维护个人资料页面、使用帮助和注销等;管理员使用的页面包括商品类型维护、商品维护、顾客信息维护、订单处理等。系统功能页面结构图如图3-2所示。首页 default.aspx顾客注册/维护个人资料regCustomer.aspx商品详细信息页面goodsDetail.aspx管理员登录adminLogin.aspx购物车shoppingCar.aspx商品种类维护goodsTypeEdit.aspx商品维护goodsedi
17、t.aspx结账account.aspx顾客信息维护customerEdit.aspx顾客订单处理dealOrder.aspx 图3-2系统功能结构如图所示,是在VS2005运行下的效果图3-3商品排行搜索功能管理员登陆口图3-3效果图3.3 系统数据库设计网上书店商城的主要功能就是让顾客在网上卖到所需要的商品。系统数据库首先要有商品表,用来存储商品的相关信息。商品过多的时候不便于选择和查询,为了对商品进行分类管理,还需要一个商品类型表。顾客登录到网上书店后,系统需要知道所登录顾客的信息,因此需要一个记录顾客信息的顾客表。顾客如果选择了某商品,确认购买时,就要下订单,因此用订单表来记录顾客所确
18、认的订单。叮当的纤细信息即顾客具体买了几种商品,以及每种商品的数量等,需要一个订单详细表。除此之外,从系统维护和安全性的角度看,只有具有管理权限的用户才能进入系统进行维护和管理,因此需要有一个管理人员表记录管理员的信息。根据以上分析,制定每个表格的结构信息如下。3.3.1商品类型表记录商品类型的相关信息,见表3-1:表3-1商品类型表 3.3.2商品表记录商品的相关信息,表3-2:表3-2商品表 3.3.3顾客信息表记录顾客登陆名、密码等相关信息,如下表3-3表示:表3-3顾客信息表 3.3.4 订单表记录顾客购物时所下的订单,如表3-4:表3-4订单表 3.3.5 订单详细表记录顾客所订下订
19、单的详细信息,即订单里包含的商品,如表3-5所示:表3-5订单详细表 3.3.6 管理员信息表记录网上书店管理员的登陆名和密码,如表3-6: 表3-6管理员信息表 在系统所建立的表之间,存在一定的联系,如图3-4关系组图所表示。从图中可以看出各自的关联。图3-4关系组图4. 系统实现4.1 基本类文件的实现创建存储过程之后,需要实现调用它们的方法。系统的架构采用多层模型,包括数据访问层和业务处理层。本系统面向的对象是所有在线的网上用户,目的是让用户了解本系统如何更直接、更方便的去浏览,去实现购物时所必须要做的流程,实现网上书店员购书的整个过程。4.2后台系统详细设计4.2.1总体设计实际采用的
20、系统图如下图4-1所示:直接查找查看商品查找需要的书(搜索)用户登录、注册查看,比较作出决定放到购物车检查购物车考虑增删除下订单将一些书重新放回书架管理员处理用户资料,并对商品进行管理管理员对订单的处理,形成购书的一些列流程图4-1系统设计图这里还有非常重要的一点就是网站的后台管理,现在来看看书店的管理所需要的一些操作,它们是:新建图书类别;新增供货商;新书入库;增加在库书信息;改变在库书信息;查询在库书信息;查询销售情况;查询顾客情况;管理员更改。 注意到上面的分析中有两点:(1)前台(购书者的角度)的活动与后台(书店管理员角度)的活动是相对独立而且也理应是独立的(2)后台管理本身的各个活动
21、之间是相对独立的。因此在画系统图时不必将后台活动考虑进去。并不是一个活动对应一个页面,要使整个系统运行起来还需要一些支持的页面。事实上,为了使逻辑和便于管理和修改,也为了避免出现各种微小错误,提倡尽量将各个功能分割开来,写成不同的页面,因此在最后完成的系统中还有很多支持页面。4.2.2后台系统的实现在网上书店系统中作为系统的设计者,首先面对的客户就是书店的管理者。购书者的需求实际上是书店需求的一部分-因此帮助他们分析了这部分需求,也是最主要的,但是先决的需求是管理者对书店系统管理的需求。在做好后台管理子系统后,在这个基础上来做前台系统,由于数据库里已经有了各种实际的资料(图书),会更加直观;另
22、外,正如所看到的,后台管理的各个活动之间比较独立,因此从较容易的地方入手。后台系统的实现的流程图4-2如下所示:后台系统的实现后台管理控制台(管理员登陆)新建图书类别新增图书新书相关介绍增加新书的相关图片改变最受欢迎商品查询在库书信息管理会员资料处理订单情况修用户资料图4-2后台流程图 4.2.3建立数据库的连接这是一开始写代码就要做的事情;连接数据库。其流程图4-3如下:定义变量调用openDB()打开数据库数据库操作过程操作完成关闭数据库调用closeDB() 图4-3连接数据流程图 4.2.4后台管理的控制台虽然在最后的完成步骤中,要加入一小段代码是否已经登录,现在大可不去管它,先实现管
23、理系统的功能实现再说。它的界面很简单,如图4-4所示:通过系统首页下方的“管理入口”连接可以进入到后台管理登陆界面 图4-4后台登陆界面后台管理的任务基本上都是对数据的维护和处理,包括商品种类维护、商品维护、顾客信息维护、订单处理等。对每类数据的维护一般都有列表显示、新增、修改、删除等。为了便于操作,本系统将这4个功能集中在一个页面上,而不是为4个页面单独实现。 页面上方显示的是商品列表,数据比较多的信息允许翻页并提供搜索功能。在每行数据的最后一列放置一个图片按钮,单击后显示数据的详细信息,此时可以修改该条记录的内容,然后单击“保存”按钮则增加一条记录。当需要删除某条记录时,先单击图片按钮使该
24、条记录显示在下方,然后单击“删除”按钮即可删除该记录。 页面上的GridView 用来显示商品列表,在GridView中增加一个按钮列,单击对应行的按钮将修行记录显示到页面下方的区内。在GridView属性设置代码,在商品维护页(goodsEdit.aspx)中包含了上传商品图片的FileUpload控件,为了使其能正常使用,需要将UpdatePanel2控件的UpdataMode 属性设置为Conditional。 商品维护页面运行效果如图4-5:图4-5商品维护界面效果图4.3母版页与系统登陆在实现具体功能之前,应该考虑网站的整体效果,即页面的布局方式。网上书店采用的是拐角型布局。在网页的
25、上方显示标题“网上书店”,标题以下左侧窄栏是登录窗口和销售排行榜,右侧是主要的功能区域,页面下方是版权信息和联系方式等。在选定布局方式之后,系统采用母版页来统一整个网站中页面的风格,将所有公用栏目放在母版页上实现,其他需要这些栏目的页面都使用此母版页。这样可以使栏目得到重用,并且也不需要再去设计页面上公用栏目的布局。整个系统页面布局采用div和CSS结合的方式来控制,其中的table主要用来显示格式化的数据。4.3.1 母版页页面设计在项目中添加新项,选择为母版页,修改文件名字为“MasterPage.Master”。在母版页内添加一个ScriptMaster控件,这是一个很重要的步骤。因为系
26、统中很多页面用到ASP.NET AJAX技术实现局部刷新,直接把该控件添加到母版页中,其他使用母版也的页面不需要在单独添加ScriptManager控件。利用div和CSS来设计母版页的布局,在母板页上有几个重要的div,分别为标题图片、中间内容和底部信息。新建一个样式表文件style.css,定义系统中用到的所用样式。页面中部左侧的登录窗口及其下方的欢迎文字,运行时不会同时显示,而是根据用户是否登录选择显示,该部分的HTML代码如下: 用户名: 密码: 忘记密码 ,欢迎您光临! 我是店小二,我非常感谢您能光临本店,我将以最优质的产品和公道的价
27、格,竭诚为您服务!最后祝您购物愉快! 在“”之间的是C#代码,使用if语句来控制显示哪段HTML代码,起到如果登录则显示登录信息,没有登录则显示登录窗口的效果。这段代码用到了“success”变量,该变量是在母板页对应的.cs文件内声明的一个布尔变量,true表示顾客已经登录到购书商城,false表示还没有登录。具体的母版设计界面如图4-6:图4-6母版设计图 4.3.2 系统登录在介绍一个功能时我们总是从数据库设计到页面实现,按照从下到上的方式来说明。在前面的小节中已经给出存储过程和类文件的实现,但是为了介绍一个完整的功能的实现方式,这里依然个给出了涉及系统登录的存储过程和类中方法的实现。后
28、面在介绍其他功能实现时,不再重复描述底层的实现内容,而只给出页面实现。在DataAccess中实现对数据库的访问。CustomerLogin方法是根据指定的用户名和密码去数据库中查找是否存在该顾客,如果存在返回包含顾客信息的DataSet,如果不存在则返回null。在顾客输入用户名和密码后,单击“登陆”按钮出发事件,然后调用DataAccess类中的CustomerLogin方法去数据库中查找顾客,根据返回结果来判断是否登录成功。4.3.3销售排行榜在登录窗口的下方显示了销量最多的5种商品,称为销售排行榜。类似于系统登录实现先建立存储过程,然后分别实现DataAccess.cs和Busines
29、sFacade.cs中关于获取销售排行的方法,最后通过在母版页中调用BusinessFacade.cs中的方法在页面上显示排行榜信息。该功能在页面上展示的排行榜信息是在BusinessFacade.cs中用GetPopGoodsList方法来实现的。该方法代码如下:public static string GetPopGoodsList() /调用DataAccess中的GetPopGoods()访问数据库 DataAccess myData = new DataAccess(); DataSet ds = myData.GetPopGoods(); StringBuilder strBuil
30、der = new StringBuilder(); if (ds = null | ds.Tables0.Rows.Count = 0) return ; /拼写列表HTML字符串 for (int i = 0; i ds.Tables0.Rows.Count; i+) DataRow dr = ds.Tables0.Rowsi; strBuilder.Append(); strBuilder.AppendFormat(1,drgoodsID,drgoodsName); return strBuilder.ToString(); 图4-4-1所表示为母版的设计效果图,由于母版页不能单独运行,
31、因此只能在引用模板页的其他页面上来观察运行效果。设计好母版页的界面之后,新建其他基于此母版页的页面时,只需要将Content区域内填充上各自的内容即可。4.4首页商品展示在系统首页上实现商品展示的功能,并提供多种查询商品的方式。新建项目时系统自动生成了default.aspx页面,但是我们的页面要基于母版页来实现,所以删除已有的default.aspx,新建基于MasterPage.Master的Web窗体,名称修改为“default.aspx”。在首页上方提供了检索功能,下方是商品展示。由于每个商品显示的信息较多,并且需要按照一定的格式显示,因此选择了用Datalist控件来显示。商品的分页
32、则使用了PagedDataSource,该类封装了数控绑定控件的分页属性,以允许控件执行分页操作。整个页面的设计如图4-7所示:图4-7 商品展示设计图4.5查看商品详细顾客在首页上浏览商品时,如果想了解某种商品的详细信息,可以通过单击商品的图片进入到goodsDetail.aspx页面。在该页面上有一个“放人购物车”按钮,当用户单击按钮时将商品放人到购物车,同时页面转到购物车页面shoppingCart.aspx.该页面主要Page_Load事件,当页面加载时根据URL中的参数goodsID来获取指定商品,并将其信息展示顾客。其运行图如图4-8:图4-8运行效果图4.6购物车购物车页面sho
33、ppingCart.aspx是显示顾客初步选定的商品,在这里可以修改购买数量或者将某种商品从购物车中删除,本页上提供3个按钮,分别为“继续购物”、“结账”和“清空购物车”。如果要继续购物则转到商品展示页面,结束购物车进入到结账页面,清空购物车将购物车中的商品全部清除。在购物车页面中除了几个按钮之外,最重要的是添加一个GridView控件,通过它来完成已选商品的展示,数量的修改,商品的删除等。实现购物车的方式有多种,包括利用数据库、Cookie、Session等。利用数据库实现购物车的方法是将购物车的信息存储在数据库中一个表内,它需要用户在进行购物前先登录系统,以确定购物车上哪位顾客的。这种方法
34、的优点在于用户如果购物中断,下次还可以继续购物;其弊端在于需要频繁地操作数据库,并且顾客以后不再使用上次购物车的信息会造成数据库中存储了大量的无用数据本系统在使用Session来实现购物车,不要求用户在购物前登录系统,只要结账前登录即可。另外,不需要频繁地操作数据库,购物过程中数据都存储在Session中,只有顾客结账后才会把订单写入数据库。在shoppingCart.aspx.cs文件中实现向购物车中添加商品,从购物车中移除商品以及修改商品数量等。当首次进入购物车时,Session“shoppingcart”不存在,需要创建一个表来存放购物信息,然后将该表存放在Session“shoppin
35、gcart”中。顾客在此页查看自己准备买的商品,可以修改数量。如果想继续购物,单击【继续购买】按钮就可以转到商品展示页面浏览查看商品。单击【结账】按钮进入结账页面,单击【清空购物车】按钮则将放入购物车中的商品信息全部删除。我用图4-9简单表达下效果:查看购物车检查确认购物YES/NO取消订单清空购物车确认下订单输入确认订单并保存打印定单清空购物车图4-9购物车实现流程图4.7结账顾客把选定的商品都放入购物车后,要结账才算确定购买这些商品,系统要提供一个结账的功能。结账页面account.aspx具有对目前选购商品价格汇总的功能,当顾客单击“确定结账”按钮后会讲购物车中的商品信息存到数据库中,同
36、时清空购物车。结账后,顾客再选购商品时就是一个新的订单。account.aspx主要功能是通过GridView来实现,通过它来列出顾客已选商品,同时在GridView的footer(底部)来显示总金额。代码编译中,可以通过数据绑定将购物车session中的数据绑定到GridView中,并按照一定的格式显示。在GridView属性中还有一个事件OnRowDataBound=”GridViewAccount_RowDataBount”,该事件的功能是在数据绑定时计算商品的总金额。在account.aspx中实现事件的代码如下:protected void GridViewAccount_RowDa
37、taBound(object sender, GridViewRowEventArgs e) /计算出订单的总金额 if (e.Row.RowType = DataControlRowType.DataRow) int saleCount = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, goodsCount, 0:d); double unitPrice = Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, goodsUnitPrice); total += saleCount * unitPr
38、ice; else if (e.Row.RowType = DataControlRowType.Footer) e.Row.Cells.Clear(); e.Row.Cells.Add(new TableCell(); e.Row.Cells0.ColumnSpan = 3; e.Row.Font.Bold = true; e.Row.ForeColor = System.Drawing.Color.Red; e.Row.Cells0.Text = 总金额:+string.Format(total.ToString(),0:c); e.Row.Cells0.HorizontalAlign = HorizontalAlign.Right; Sessiontotal = total; 在GridViewAccoun