网上购物电子商务系统
【摘 要】 所谓电子商务就是在网上开展商务活动,当企业将它的主要业务通 过企业内部网 Intranet 、外部网(Extranet 以及 Internet 与企业的职员、客 户供销商以及合作伙伴直接相连时,其中发生的各种活动就是电子商务。电子商务 是基于 Internet 或局域网、 广域网、 包括了从销售、 市场到商业信息管理的全过程。 本系统的开发正符合了这一要求。论文中详细阐述了系统的设计目标、总体架构及 各功能模块的详细设计。
【关键字】 ASP.NET2.0; C#; SQL Server2000;电子商务; 电子商务网站;电子 商务系统
目 录 1 引言 2 1.1 项目背景 2 1.2 研究意义 3 1.3 建设目标 3 1.4 论文内容 4 2 系统分析 4 2.1 需求分析 4 2.2 可行性分析 4 3 总体设计 4 3.1 项目规划 4 3.2 系统功能结构图 5
4 系统设计 5 4.1 系统设计 5 4.2 开发及运行环境 9 4.3 数据库设计 9
5 相关技术及系统解决方案 10 5.1 ASP.NET 简介 10 5.2 SQL Server 2000 简介 10 5.3 ADO.NET 简介 10 5.4 系统体系结构 11 图 5-1 11
5.5 技术开发方案 11 5.6 系统技术平台 12 6 网站设计 12
6.1 网站前台首页设计 12 6.2 商品展示模块设计 14 6.3 商品查询模块设计 17 6.4 会员管理模块设计 19 6.5 购物车管理模块 22 附录 A 数据表 28
7.结束语 33 参考文献 33 1 引言 1.1 项目背景
随着信息技术在国际贸易和商业领域的广泛应用, 利用计算机技术、 网络通信技术 和 Internet 来实现商务活动的国际化、 信息化和无纸化, 已成为各国商务发展的— 大趋势。
电子商务 (Electronic Commerce正是为了适应这种以全球为市场的变化而出现和 发展起来的。它可以使销售商与供应商更紧密地联系起来,以更快地满足客户的需 求,也可以让商家在全球范围内选择最佳供应商,在全球市场上销售产品。电子商 务基于网络技术.网络技术提供了实现电子商务的技术平台,而电子商务是网络技 术的最新应用和最终目标
随着中国市场经济的日趋成熟, 中国企业面对的竞争压力也越来越大, 企业要想生 存,就必须充分利用信息化手段来提高管理效率及市场响应速度。电子商务是在互 联网开放的网络环境下, 基于浏览器 /服务器应用方式, 实现消费者的网上购物、 商 户之间的网上交易和在线电子支付的一种新型的商业运营模式。电子商务做为一种 独立的经济形态,已初具规模,一些电子商务网站的成立,给人们的生活带来了巨 大的影响。
如何建立企业的电子商务,如何把企业业务建在 Internet 上,涉及到建立电子商 务网站、 开发符合 Internet 特点的有效的业务应用、 管理网上的交易信息、 保证网 上数据安全、 快速反映市场变化以及充分满足 Internet 业务进一步发展的要求等等。 对一个运营商业企业来说,电子商务网站是其生存的理由和基础,同时也是企业对 外展示信息、 从事商务活动的窗口和界面。 如何设计、 建立一个经济、 实用、 安全、 高效、稳定的网站是每个电子商务网站必须考虑的问题。
而要解决好这些问题, 就必须在提高企业内部管理效率、 充分利用企业内部资源的 基础上,从整体上降低成本,加快对市场的响应速度,提高服务质量,提高企业的 竞争力。但是企业在利用信息化技术时,必须要考虑成本、技术难度、创造的价值 等几个方面。
1.2 研究意义
21世纪是—个以网络为核心的信息时代,数字化、网络化与信息化是 21世纪的时 代特征。电子商务作为信息时代的一种新的商贸形式,不仅对商务的运作过程和方 法产生巨大的影响,实际上也带来了一场革命,其影响将远远超出商务的本身,将
对社会的生产和管理、人们的生活和就业、政府职能、法律制度以及文化从多方面 改变人类的观念、思维和相互交往的方式。
作为一种现代商务模式, 电子商务利用计算机网络检索和获取信息, 对个人和公司 提供决策服务,解决了组织、商家和客户的需求,减少了用于改善货物和服务质量 的投入,加快了商品交易的速度。电子商务可以应用于制造到零售,从银行、金融 机构到出版娱乐以及其他的任何企业。 Internet 正在将不同形式的电子商务结合起 来,产生出许多创新的、混合的电子商务形式。
从电子商务的目标上看, 电子商务能够扩大顾客群, 获取更高收益, 开拓目标市场, 节省费用和开支,加速商品流通,加快顾客信息反馈,并提高服务质量。在过去的 几年间, 随着 Internet 的迅速发展, 通过网络使在家庭办公的个人用户也积极投入 到了电子商务中。由于激烈的市场竞争和对成本的关注,大量企业正在改进原有的 电子商务系统来支持新兴的网络经济。
1.3 建设目标
设计网上购物系统电子商务系统目标如下:
1 能让消费者浏览想查找的产品,通过注册能够在网上进行交易。
2 有一定的安全性、 隐密性, 各个模块要相对透明, 在对不同模块进行修改时不会 对系统造成损害,能方便地进行模块组装等
3 实现不同的登录者用不同浏览器可以访问的目的,并且能交互地解决一些具体的 问题
1.4 论文内容
本论文详细介绍了整个网上购物系统的数据模型设计以及数据库设计,在设计中把 本系统的数据库根据其功能划分 4个基本的模块, 即产品展示模块, 商品查询模块 , 会员中心模块,订单处理和购物车模块,然后利用存储过程创建了数据服务层来提 供用户应用层和商务层的数据交换。
2 系统分析 2.1 需求分析
通过对一些典型电子商务网站的考察、 分析以及实际的市场调查, 要求本系统具有 以下功能:
统一友好的操作界面,能保证系统的易用性。 规范、完善的基础信息设置。
商品分类详尽,可按不同类别查看商品信息。
按商品大类型及通过商品名称,商品编号或商品描述进行模糊查询。 实现网上购物。
新品及特价商品、热门商品展示。 热销商品按销售量排行展示。 2.2 可行性分析
商业企业在运营过程中,经常会受到以下一些条件的限制:
产品的宣传受到限制,采购商或顾客只能通过上门咨询、电话沟通等方式进行各种 信息的获取,受一定的时间与物理空间的局限并且成本较高。
庞大的商业经济周转。
复杂的产品周转渠道。从看样品、谈价格到支付货款等一系列的产品周转渠道过于 复杂,企业与顾客之间缺乏全面的沟通与快捷运营的平台。
商业企业中根据季节的变化,热销商品在销售高峰到来时货源紧张,企业需要实时 了解商品的销售情况,保证热销商品的要货满足率。
因此,企业需要重新认识市场、消费者以及自身市场定位,正确认识电子商务技术 在企业中的重要地位,以少量的时间和资金建立企业信息门户网站并架设一定范围 的商务网络,以此来制定长远发展战略,使企业与顾客间的经济活动变得更灵活、 更主动。
3 总体设计 3.1 项目规划
该电子商务系统是一个典型的 asp.net2.0数据库开发应用程序,由前台商品展示 及销售、后台管理部分组成。
前台商品展示及销售
该部分主要包括最新商品上架、特价商品、热销商品、购物车、会员中心、购物清 单、商品新闻公告及订单查看、商品查询(通过商品名称,商品编号和商品描述 等。
后台管理
该部分主要对商城内的一些基础数据进行有效管理, 包括商品管理、 会员管理、订 单管理、新闻消息公告管理等。
3.2 系统功能结构图
电子商务系统前台功能结构如图 3-1所示。 图 3-1 系统前台功能结构图
电子商务系统后台功能结构如图 2所示。 图 3-2 系统后台功能结构图 4 系统设计
4.1 系统设计 4.1.1 设计目标
本系统在设计时应该满足以下几个目标:
采用人机对话的操作方式, 界面设计美观友好、 信息查询灵活、 方便、 快捷、 准确、 数据存储安全可靠。
全面展示商城内所有商品,并可展示最新商品及特价商品。
为顾客提供一个方便、快捷的商品信息查询功能。采用模糊查询查询数据。 会员可以随时修改自己的会员资料。 实现网上购物。
商品销售排行,以方便顾客了解本商城内的热销商品及帮助企业领导者做出相应的 决策。
查看商城内的新闻公告信息。 用户随时都可以查看自己的订单。
对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。 系统最大限度地实现了易维护性和易操作性。 系统运行稳定、安全可靠。 4.1.2 消费客户的使用案例
基于该系统的基本功能。 从逻辑上将本系统中的整个电子商务系统划分 4个子系统, 这四个子系统分别为:产品目录浏览系统、客户账号管理系统、订单处理系
统和库 存管理系统。这里采用统一模型语言(United Model Language 简称 UML 来分析 图 4-1 消费客户的使用案例图
浏览目录,消费者可以通过浏览产品目录或者搜索特定产品,查看和选择产品。当 用户浏览目录的时候,可以遍历产品类别的层次,并且查看属于各个类别的产品列 表
查看产品,当消费者通过浏览产品目录或者执行搜索到一个产品之后,就可以查看 所有产品的信息,包括产品名称、产品描述、图片及价格。
选择产品,当查看完产品之后,消费用户就能够将其放到他们的虚拟购物车中,并 选择要购买的产品。
搜索目录,消费客户也能够通过在产品目录中搜索特定的产品,查看和选择产品。 用户能够输入包括产品名称、描述和 SKU (库存管理在内的各种条件,与搜索条 件相匹配的产品列表将得到显示。
管理购物车,消费客户能够查看虚拟购物车内的所有产品,并且可以删除或者更 新各项的数量。当客户删除产品项或者改变了项的数量之后,系统会从新计算订货 的估价以及小价,如果顾客的购物车为空,就显示一个友好的警告信息。因为购物
车没有与客户的账号相关联,岁消费客户不必首先登陆到系统就可以管理购物车。 付款,在查看和管理了购物车之后,消费客户就可以执行付款过程,为选择的产 品下订单。如果用户还没有登陆到站点,系统会在继续处理付款过程之前,要求他 们进行登陆或者建立新账号。在登录或者建立新账号之后,系统就会要求消费客户 输入其信用卡信息。 接下来, 客户就能够查看其订单细节, 提交或者取消付款过程。 在查看订单的时候,客户能够浏览订单上的所有产品项,也能够查看各项的小价、 运费、税收、以及订单的总费用。
登录,如果消费客户想要下订单或者访问其过去的订单,系统会自动提示其登录 到站点。使用者可以在购物会话期间的任何时候进行登录。登录到站点需要输入创 建客户账号的时候规定的电子邮件地址和密码的组合。如果客户输入了不正确的组
合,系统就会要求他们重新登录。如果用户没有客户账户,就要建立新账户。 建立账号,如果使用者以前没有建立客户账户,则会要求在订单之前建立账号, 当使用者创建了新账号的时候,必须输入姓名以及联系信息和帐单地址以及发货地 址。建立新的账号之后就可以回到商务系统,并且使用规定的电子邮件地址和密码 组合进行登录。
管理账号,登录到商务系统,或者建立新账号之后,使用者就可以管理其的账号, 该
系统的账号管理功能只限于查看过去的订货历史。 4.1.3 商务客户的使用案例
在商务系统中商务客户所进行的活动比消费客户的简单,这主要是商务客户不需要 用户接口与系统交互,其用例图描述如下
图 4 商务客户的使用案例图
提交订单,商务客户进行的主要活动就是提交 XML 格式的电子订单,订单所包括 的信息与商务可以付款过程中收集的信息相同。当商务客户提交订单的时候,必须 提供用于登录系统的主要联系电子邮件地址和密码信息
登录活动就是商务客户提交订单过程中的组成部分,商务客户在提交了订单后, 就可以定期的请求订单状态,当商务客户请求订单状态的时候,也会要求提供主要 的电子邮件联系方式和密码。并对这些信息进行检验。
4.1.4 系统活动序列
定义了系统终端用户所进行的活动之后, 后台的商务过程可以使用下图所示的 UML 来描述
图 5 系统活动序列图
4.15 系统模块
购物流程的模块如下图所示 图 6 购物流程的模块图 客户管理模块如下图所示 图 7 客户管理模块图 4.2 开发及运行环境 硬件平台: CPU:P41.8GHz ; 内存:256MB 以上。 软件平台:
操作系统:Windows 2000 Server,Windows 2003 Server 数据库:SQL Server 2000;
开发工具包:Visual Studio.NET 2005 WEB服务器:IIS
浏览器:IE5.0及以上版本,推荐使用 IE6.0; 分辨率:最佳效果 1024×768。 4.3 数据库设计
本系统数据库采用 SQL Server 2000数据库,系统数据库名称为 EBusiness ,共包含 11张表。关于数据库中的数据表请参见附录 A 。
5 相关技术及系统解决方案 5.1 ASP.NET 简介
ASP.net是 Microsoft VisualStudio.NET的一部分,作为战略产品,不仅仅是 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 和完全集成的调试支持。
微软为 ASP.net 设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和 共享、可用编译类语言编写等等,目的是让程序员更容易开发出 Web 应用,满足计 算向 Web 转移的战略需要。
5.2 SQL Server 2000 简介
SQL Server 2000 是 Microsoft 公司 2000年推出的 SQL Server 数据库管理系统的版 本。它是一个杰出的数据库平台,可用于大型联机事务处理、数据仓库、以及电子 商务等。 其特点有如下几点 :
真正的客户机 /服务器体系结构。
图形化用户界面。 3. 丰富的编程接口工具。
4.SQL Server与 Windows NT完全集成。 5. 具有很好的伸缩性。 6. 对 Web 技术的支持。
7.SQL Server提供数据仓库功能。 5.3 ADO.NET 简介
ADO.NET是由 .NET framework为与数据库中的数据进行交互而提供的一组对象类 的名称。我们知道,面向对象编程的有关主要优点是可以把各种复杂的功能封装在 一个自包含的单元中,接着要处理的就是 — 个定义好的接口中,它由一些方法和属 性组成
在 ADO.NET 中,我们将处理断开连接的数据集,在网站的访问者请求数据时,就 要建立连接,传送数据,之后关闭连接。接着,访问者就可以修改数据,但这些修 改不会在数据源中立即更新--在用访问者所做的修改更新数据库之前,必须重新 打开连接。其优点是效率高,可伸缩性好。如果不使用这种断开连接的模型,就意 味着必须一直打开连接,直到每个用户的会话结束为止。在 Web 上,有上千个并行 用户,给每个用户打开连接在系统资源上是非常昂贵的。使用断开连接的数据可以 使应用程序的效率高得多,并能处理更多的工作负载,即它们的伸缩性更好。 5.4 系统体系结构
该系统采用三层体系结构将应用程序划分为三个逻辑层面,这三个逻辑层如下: (1用户服务层(User Services Tier , 也称为表现服务(Presebtation Services , 是用户与应用程序进行交互的端点。 通常由 WIN32或者基于浏览器的图形用户界面 应用构成。在该层用户可以查看、输入和处理数据。从用户的角度来看,用户服务 层就是
整个应用。在该电子商务系统中,用户服务层由 asp.net web forms构成,它 可以让消费客户浏览和搜索产品,向他们的购物车增加产品,并且下订单。
(2商务服务层,也称为中间层或者应用服务层,它负责封装事务处理、商务规 则、数据访问及其他的核心应用逻辑。商务服务层可以有效地作为前台用户服务层 和后台数据服务和数据存储之间的桥梁。在电子商务系统中,商务服务层将由在
windows 组件服务中执行的事务处理和非事务处理 .net 服务组件构成。 (3数据服务层,该层负责检索和操作在一个或者多个数据存储中存储的数据。 通过将数据访问和操作分离到独立的逻辑层中,就可以将商品服务层从附属数据存 储的细节中抽象出去。在该电子商务系统中。数据服务层将实现为一组封装了 sql 数据访问逻辑,并向商务组件返回结果集的存储过程。商务服务组件通过这些存储 过程访问数据库中的数据。
整个电子商务系统的逻辑体系结构如图 5-1所示。 用户服务 用户交互 页面导航 数据表现 业务服务 事务处理逻辑 业务规则定义 数据访问 数据服务
数据检索 数据操作 数据验证 数据存储 数据存储 数据关系 数据完整性 图 5-1
5.5 技术开发方案
我们根据应用系统的有关规范标准和具体业务需求,结合软件开发技术发展状况, 选择了以下相应系统软件或工具软件,以确定科学、合理的开发方案。
具体如下表所述: 类别 软件名称 软件用途
数据库 SQL Server 2000 后台数据库 Web 服务 IIS 后台服务器
开发工具 VS.NET2005(ASP.NET,C# 后台编码,页面设计 5.6 系统技术平台 (1 硬件:
WEB服务器 1台、客户机若干台、网卡、集线器等。
(2 软件:
WEB服务器为 Windows2000及以上版本,安装有 IIS 。 客户机安装 Internet Explorer或 Netscape Communicator。 相关软件,如:IE 、 SQL Server 2000、 VS.NET 等等。 6 网站设计
本系统的结构包括数据存储层、商务服务器组件及应用服务层。在应用服务层中主
要采用 ASP.NET 技术来构建动态网页来支持整个面向服务对象的应用。 整个电子商务系统的网站设计是整个消费客户和商务客户进行交互的页面, 服务对 象通过访问网站来获得所需要的信息,该网站的设计提供以下功能:
(1各种功能的连接。包括注册,登录,购物和查看以及结帐 (2内容简洁明了
(3各种商品的分类提示、商品的详细信息以及购物车信息的查询 (4各种以往订单纪录的查询、统计和显示 6.1 网站前台首页设计
在 Go 购电子商城的首页中, 用户不但可以在第 1时间内掌握商城推出的特价商品、 上架新品、最新新闻公告信息等,还可以查看热销商品展示、搜索指定商品、商品 分类查询等。 Go 购电子商城前台首页的运行结果如图 6.1.1所示。
图 6-1 网站前台首页的运行结果
下面以列表形式给出前台页面各部分的说明信息,如表 1所示。网站面页主要由七 个 WEB 用户控件
(Header.ascx,SiteInfo.ascx,Bulletin.ascx,Commend.ascx,ProductsTopDateTimed, ProductsSaleTop.ascx,Footer.ascx. 组成。
表 5-1 前台首页页面说明
区域 名称 说明 相关用户 WEB 控件
1 网站导航 主要展示网站的站内导航条 Header.ascx
2 商品搜索 主要用于按商品的大分类模糊查询商品信息 Header.ascx 3 商城新闻 主要用于显示网站最新新闻公告信息 Bulletin.ascx 4 特价商品 用于显示最新推荐的特价商品的信息 Commend.ascx 5 商品分类 按类别展示商品信息 Header.ascx
6 热销展示 显示商城中销售量最好的 10种商品 ProductsClicksSaleTop.ascx 7 新品展示 用于显示最新上架的 10种商品信息 ProductsTopDateTimed.ascx 8 版权信息 显示网站版权信息及其它站点服务信息等 Footer.ascx., SiteInfo.ascx, 6.2 商品展示模块设计
6.2.1 商品展示设计
商品展示模块共有两个入口, 一个是网站导航条中的 【特价商品】 、 【热销商品】 、 【热门商品】导航按钮,另一个是网站前台的居中位置,分栏列出了商城中特价商 品中最新的特价商品信息,单击首页热门商品展区中的 “More…” 超链接可以进入到 特价商品页面,在该页面中将列出商城中的全部特价商品。主要包括商品图片、名 称、原价、现价等信息。同时设置了【 】按钮和图片链接,分别用于将商
品信息添 加至购物车和查看商品详细信息。特价商品模块在网站首页的设计效果如图 6.2.1所示。
图 6-2 特价商品模块在网站首页的设计效果
(1 查询数据表中的特价商品。 特价商品信息同商品基本信息同时保存在商品信息 表中,以字段 Discount 标识,通过对商品表的 Discount 字段进行排序。在网站首页 中查询特价商品的存储过程 spProductsTop 代码如下:
/****** Object: Stored Procedure dbo.spProductsTop ******/ CREATE PROCEDURE dbo.spProductsTop (
@TOP VARCHAR(25, -- TOP 子句
@ORDERBY VARCHAR(50, -- ORDER BY 子句
@CategoryID VARCHAR(25 -- 是否显示指定目录下的记录 AS
SET NOCOUNT ON
DECLARE @sSQL VARCHAR(500 SELECT @sSQL = 'SELECT TOP ' + @TOP
SELECT @sSQL = @sSQL + ' O.*, S.Name AS CategoryName, ' SELECT @sSQL = @sSQL + ' P.Name AS Vendor'
SELECT @sSQL = @sSQL + ' FROM dbo.Products O INNER JOIN'
SELECT @sSQL = @sSQL + ' dbo.Categories S ON O.CategoryID = S.ID INNER JOIN'
SELECT @sSQL = @sSQL + ' dbo.Customers P ON O.VendorID = P.ID' IF CAST(@CategoryID AS INT >= 0 BEGIN
SELECT @sSQL = @sSQL + ' WHERE O.CategoryID = ' + @CategoryID END IF @ORDERBY <> 'DateTimed'
SELECT @sSQL = @sSQL + ' ORDER BY O.' + @ORDERBY + ' DESC, O.DateTimed DESC'
ELSE SELECT @sSQL = @sSQL + ' ORDER BY O.' + @ORDERBY + ' DESC' --PRINT @sSQL
EXEC(@sSQL SET NOCOUNT OFF GO
(2 查询数据表中的热门商品。 热门商品信息同商品基本信息同时保存在商品信息 表中,以字段 Clicks 标识,通过对商品表的 Clicks (点击次数字段进行排序。在 网站首页中查询特价商品的存储过程 spProductsTop 代码如上。
图 6.2.1.2 特价商品模块在网站首页的设计效果
(3用户单击网站导航条中的 “ 热销商品 ” 超链接,将进入到热销商品页面。 查询数据表中的热销商品。 热销商品信息同商品基本信息同时保存在商品信息表中, 按统计后的销售数量降序排列,最后再使用 SQL 语句中的 top 关键字取出销售量最 高的前 10种商品。通过对商品表的 Sales (销量字段进行排序。如图所示
图 6.2.1.3 热销商品页面展示结果 6.2.2 商品概览设计
在网站首页中的右侧的【所有最新商品】按钮,列出了商城中上架新品中的最新上 市的商品信息,单击新品上架展区中的 “More…” 超链接可以进入到新产品页面,在 该页面中将列出商城中的全部上架新品。主要包括商品图片、名称、现价等信息。 同时设置了 【 】 按钮和图片链接, 分别用于将商品信息添加至购物车和查看商品详 细信息。设计效果如图 6所示。还有【所有热门商品】、【所有热销商品】概览设 计如下:
图 6.2.2.1 商品概览模块在网站首页中的设计效果 6.3 商品查询模块设计 6.3.1 商品分类查询
为了方便用户查询所需商品信息,在网站中设置了商品分类显示模块。在网站商品 首页的以列表菜单的形式列出了商品各分类名字信息,用户单击类别名称可以显示 出该类的所有商品信息,在分类商品显示页面中,单击商品名称可以查看相应商品 的详细信息。如果用户已经登录,还可以直接将商品信息添加至购物车中。商品分 类模块的页面设计效果如图 7所示。
图 6.3.1.1 商品分类模块的页面设计效果 关键代码如下:
if (Request.Params[\"CategoryID\"] != null {
sStr = Request.Params[\"CategoryID\"]; if (Int32.Parse(sStr >= 0
{
int iID = int.Parse(sStr;
string sSQL = \"SELECT O.*, S.Name AS CategoryName, P.Name AS Vendor FROM dbo.Products O INNER JOIN dbo.Categories S ON O.CategoryID = S.ID INNER JOIN dbo.Customers P ON O.VendorID = P.ID WHERE O.CategoryID = \" + iID + \" ORDER BY O.ModelName, O.ModelNumber\";
pub.Fill(sSQL;
this.DisPage1.Open(pub.DataSet1;
pub.sTitle = pub.sTitle + \" -- 商品浏览 -- 所有 \" + Request.Params[\"CategoryName\"].ToString( + \" 的商品 \"; } else {
pub.sTitle = pub.sTitle + \" -- 商品浏览 -- 指定查询条件无效 \"; DisPage1.Visible = false; }
lbMsg.Text = pub.sTitle; } else
Response.Redirect(\"ErrorPage.aspx?sStr=非法页面访问 \
6.3.2 商品快速查询
商品快速查询主要是通过用户在文本框内 , 然后调用一个存储过程 spProductsSearch 代码如下:
/****** Object: Stored Procedure dbo.spProductsSearch ******/ CREATE PROCEDURE dbo.spProductsSearch (
@Search VARCHAR(255, @SearchType BIT AS
IF @SearchType = 0 BEGIN
SELECT O.*, S.Name AS CategoryName, P.Name AS Vendor
FROM dbo.Products O INNER JOIN
dbo.Categories S ON O.CategoryID = S.ID INNER JOIN dbo.Customers P ON O.VendorID = P.ID
WHERE
O.ModelNumber LIKE '%' + @Search + '%' OR
O.ModelName LIKE '%' + @Search + '%' OR
O.Description LIKE '%' + @Search + '%' ORDER BY O.ModelName, O.ModelNumber END ELSE BEGIN
SELECT O.*, S.Name AS CategoryName, P.Name AS Vendor
FROM dbo.Products O INNER JOIN
dbo.Categories S ON O.CategoryID = S.ID INNER JOIN dbo.Customers P ON O.VendorID = P.ID WHERE
O.CategoryID = CAST(@Search AS INT ORDER BY
O.ModelName, O.ModelNumber END GO
6.4 会员管理模块设计
在前台的会员管理模块中主要包括会员注册、会员登录、会员资料修改 3部分。由 于会员资料修改同会员注册的实现方法类似, 只是调用的 SQL 语句不同, 所以此处 只给出会员注册和会员登录进行介绍。
6.4.1.会员注册
会员注册的入口位于网站首页的左侧。用户单击【注册】按钮即可进入到会员注册 页面,该页面的设计效果如图 8所示。
图 6.4.1.1 会员注册页面设计效果
会员注册页面主要由表单元素组成,比较简单。
将会员注册信息保存到数据表中,根据用户输入的会员信息,再通过调用系的存储 过程 spInsertRegUser 将会员信息保存到会员信息表中。在保存会员信息时,还需要 判断会员名是否存在, 必须保证会员名称的惟一性。 保存会员信息的完整代码如下: /****** Object: Stored Procedure dbo. spInsertRegUser ******/
CREATE PROCEDURE DBO.spInsertRegUser (
@UserName varchar(255, @Pssword varchar(100, @Email varchar(100, @Company varchar(255, @tel varchar(50, @fax varchar(50,
@mobile varchar(50, @postalcode varchar(50, @address varchar(255, @NetSite varchar(50, @IsEmp bit, --是否员工 @IsVendor bit, --是否厂商 @IsFriend bit, --是否伙伴 @Photo varchar(50 , --相片地址 @OICQ varchar(50, --OICQ @ICQ varchar(50, --ICQ @MSN varchar(50 --MSN AS
INSERT INTO Customers
([Name],[IsDel],[Email],[Password],[公司名称 ],[电话号码 ],[传真号码 ],[移动电话 ],[邮 政编码 ],[详细地址 ],[互联网
站 ],[AreaID],IsEmp,IsVendor,IsFriend,Photo,OICQ,ICQ,MSN VALUES
(@UserName,0,@Email,@Pssword,@Company,@tel,@fax,@mobile,@postalcode, @address,@NetSite,1,@IsEmp,@IsVendor,@IsFriend,@Photo,@OICQ,@ICQ,@MSN GO
6.4.2.会员登录
会员登录用于网站会员登录本网站进行购物或查看订单情况。 会员登录入口位于网 站首页的左侧,页面运行结果如图 4所示。下面给出会员登录页面的设计效果图和 会员登录后的会员登录页面的运行结果,分别如图 9、图 10所示。
图 6.4.2.1 会员登录页面的设计效果
当用户在登录窗口中输入电子邮件和登录密码后,单击【开始登录】按钮,系统将 对输入的电子邮件和密码进行验证, 如果用户输入的电子邮件存在 , 则判断用户输入 的密码是否正确, 如果密码正确, 则进入网站 【贵宾休憩厅】 , 显示登录用户的 【我 的信息】、【我的订单】按钮、【统计信息】的按钮、【注销退出】以及【修改密 码】按钮,否则提示登录失败。会员登录的调用的存储过程 spCustomersLogin 代码 如下:
/****** Object: Stored Procedure dbo.spCustomersLogin ******/ CREATE PROCEDURE dbo.spCustomersLogin (
@Email VARCHAR(100, @Password VARCHAR(50, @ID INT OUTPUT AS SELECT @ID = ID FROM
Customers WHERE Email = @Email AND
Password = @Password IF @@Rowcount < 1 SELECT @ID = 0 GO
图 6.4.2.2 会员登录后的会员登录页面的运行结果 修改密码的存储过程如下 :
/****** Object: Stored Procedure dbo.spCustomersUpdatePassword ******/ CREATE PROCEDURE dbo.spCustomersUpdatePassword
(
@Email VARCHAR(100, @PasswordOld VARCHAR(50, @PasswordNew VARCHAR(50, @Result VARCHAR(100 OUTPUT AS
UPDATE Customers SET Password = @PasswordNew WHERE (IsEmp = 1 AND (Email = @Email AND (Password = @PasswordOld IF @@ROWCOUNT = 1
SELECT @Result = \"※ 数据库提示 : 更新密码成功 , 修改已经保存 \" ELSE
SELECT @Result = \"※ 数据库提示 : 更新密码失败 ,, 请检查各项输入是否准确 \" PRINT @Result
GO
6.5 购物车管理模块
购物车管理是所有表单中访问次数最多也是最频繁的, 因此它涉及了较多的存储过 程,这些存储过程主要是对购物车进行管理、选择和更新商品信息,这些存储过程 有:
6.5.1 购物车页面(shoppingcart.aspx
可以查询目前购物车中的商品数目以及其他统计信息。 图 6.5.1.1 购物车页面
购物车条目添加页面(AddToCart.aspx 。收集用户信息,并且更新购物车,最后 重新定向到购物车的显示页面。 代码如下 :
protected void Page_Load(object sender, System.EventArgs e {
// 在此处放置用户代码以初始化页面 if (Request.Params[\"ProductID\"] != null {
String CartId = pub.GetShoppingCartID(;
pub.spShoppingCartAddItem(CartId, Int32.Parse(Request.Params[\"ProductID\"], 1; } Response.Redirect(\"ShoppingCart.aspx\"; }
把当前商品加入指定的购物车里调用存储过程如下 spShoppingCartAddItem : /****** Object: Stored Procedure dbo.spShoppingCartAddItem ******/ CREATE Procedure spShoppingCartAddItem (
@CartID VARCHAR(50, @ProductID INT, @Quantity INT
DECLARE @CountItems int SELECT
@CountItems = Count(ProductID FROM ShoppingCart
WHERE
ProductID = @ProductID AND
CartID = @CartID
IF @CountItems > 0 /* 如果已经存在购物车 , 那么只需要更新数量 */ UPDATE ShoppingCart SET
Quantity = (@Quantity + Quantity WHERE
ProductID = @ProductID AND
CartID = @CartID
ELSE /* 否则 , 新开一个购物车 */ INSERT INTO ShoppingCart CartID, Quantity, ProductID, DateTimed VALUES
( @CartID, @Quantity, @ProductID, getdate( GO
购物车 . 更新数量存储过程代码如下 :
/****** Object: Stored Procedure dbo.spShoppingCartUpdateQty ******/ CREATE PROCEDURE dbo.spShoppingCartUpdateQty
(
@CartID VARCHAR(50, @ProductID INT, @Quantity INT AS
UPDATE ShoppingCart SET
Quantity = @Quantity WHERE CartID = @CartID
AND
ProductID = @ProductID GO
购物车 . 删除所选项存储过程代码如下 :
/****** Object: Stored Procedure dbo.spShoppingCartRemoveItem ******/ CREATE PROCEDURE dbo.spShoppingCartRemoveItem
(
@CartID VARCHAR(50, @ProductID INT AS
if @ProductID is NOT NULL DELETE FROM ShoppingCart WHERE CartID = @CartID AND
ProductID = @ProductID else
DELETE FROM ShoppingCart WHERE
CartID = @CartID GO
获取指定购物车 ID 的总金额存储过程代码如下 :
/****** Object: Stored Procedure dbo.spShoppingCartTotal******/ CREATE PROCEDURE dbo.spShoppingCartTotal
(
@CartID VARCHAR(50, @TotalCost money OUTPUT AS
SELECT @TotalCost = SUM(B.UnitCost * A.Quantity FROM dbo.ShoppingCart A INNER JOIN dbo.Products B ON A.ProductID = B.ProductID WHERE (A.CartID = @CartID GO
显示指定购物车 ID 的记录里调用存储过程如下
/****** Object: Stored Procedure dbo.spShoppingCartList******/ CREATE PROCEDURE dbo.spShoppingCartList (
@CartID VARCHAR(50
AS
SELECT A.ProductID, A.ModelName, A.ModelNumber, B.Quantity, A.UnitCost, CAST(A.UnitCost * B.Quantity AS money AS ExtendedAmount FROM dbo.Products A INNER JOIN
dbo.ShoppingCart B ON A.ProductID = B.ProductID WHERE (B.CartID = @CartID
ORDER BY A.ModelName, A.ModelNumber GO
6.5.2 结帐页面(checkout.axpx 提供用户查询自己的确认订单。 图 6.5.2.1 订单确认页面 调用存储过程如下
/****** Object: Stored Procedure dbo.spShoppingCartList ******/ CREATE PROCEDURE dbo.spShoppingCartList (
@CartID VARCHAR(50 AS
SELECT A.ProductID, A.ModelName, A.ModelNumber, B.Quantity,
A.UnitCost, CAST(A.UnitCost * B.Quantity AS money AS ExtendedAmount FROM dbo.Products A INNER JOIN
dbo.ShoppingCart B ON A.ProductID = B.ProductID WHERE (B.CartID = @CartID
ORDER BY A.ModelName, A.ModelNumber GO
将购物车确认为订单并返回所生成的订单 ID 给客户的存储过程如下 : /****** Object: Stored Procedure dbo.spOrdersInsert ******/ CREATE PROCEDURE dbo.spOrdersInsert (
@CustomerID INT, @CartID VARCHAR(50, @Memo VARCHAR(2000, @OrderID INT OUTPUT AS
-- 确保数据的一致性 , 因而起用事务 BEGIN TRAN OrdersInsert /* 产生订单 */ INSERT INTO Orders
(
CustomerID, Memo, ShipDate VALUES (
@CustomerID, @Memo, getdate(
-- 返回当前所产生的 OrderID SELECT
@OrderID = @@Identity
/* 将当前用户的当前购物车 COPY 到当前所产生的 ORDER 明细中 */ INSERT INTO OrderDetails
( OrderID, ProductID, Quantity, UnitCost
SELECT @OrderID,
ShoppingCart.ProductID, Quantity, Products.UnitCost FROM ShoppingCart
INNER JOIN Products ON ShoppingCart.ProductID = Products.ProductID WHERE CartID = @CartID
/* 完成后 , 清空当前购物车 ID 的所有明细 */ EXEC spShoppingCartEmpty @CartId COMMIT TRAN OrdersInsert GO
附录 A 数据表
(1 Categories (商品分类信息表
商品分类信息表主要用来保存商品类别中的类别信息。 表 Categories 的结构如表 B.1所示。
表 B.1 表 Categories 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 类别 ID Name varchar 50 类别名称 ParentID int 父级 ID IsDel bit 1 删除标记 Memo varchar 255 备注 (2 Area (地区分类信息表
地区分类信息表主要用来连接客户所在地的信息。表 Area 的结构如表 B.2所示。 表 B.2 表 Area 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 类别 ID Name varchar 4 地区名称 ParentID int 父类 ID IsDel bit 1 删除标记 (3 Stores (商品存储表
商品存储表用来保存商品时的存储表信息。表 Stores 的结构如表 B.3所示。 表 B.3 表 Stores 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 等级
Name varchar 50 消费额 ParentID int 折扣 IsDel bit 1
(4 OrderDetails (订单明细表
订单明细表用来保存订单的详细信息。表 OrderDetails 的结构如表 B.4所示。 表 B.4 表 OrderDetails 的结构
字段名 数据类型 长度 是否主键 描述 OrderID bigint 8 是 定单 ID ProductID bigint 8 商品 ID Quantity bigint 8 数量 UnitCost money 8 产品单价 (5 Orders (订单信息主表
订单信息主表用来保存订单的概要信息。表 Orders 的结构如表 B.5所示。 表 B.5 表 Orders 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 订单编号
DateTimed smalldatetime 8 品种数 CustomerID int 用户名
ShipDate smalldatetime 8 真实姓名
HasView bit 1 联系地址 HasCheck bit 1 邮政编码 HasSend bit 1 电话 HasReceive bit 1 付款方式 IsDel bit 1 运送方式 Memo varchar 2000 备注 (6 Customers (会员信息表
会员信息表主要用来存储所注册的会员的信息。所示。 表 B.6 表 Customers 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 会员 ID Name varchar 255 用户名 Email varchar 100 Email地址 passWord varchar 50 登录密码 公司名称 varchar 255 公司名称 电话号码 varchar 50 电话号码 传真号码 varchar 50 传真号码 移动电话 varchar 50 移动电话 互联网站 varchar 20 互联网站
表 Customers 的结构如表 B.6
AreaID int 地区 ID 号 邮政编码 char 6 邮政编码 详细地址 varchar 255 详细地址 IsEmp bit 1 是否员工 IsVendor bit 1 是否厂商 IsFriend bit 1 是否伙伴 IsDel bit 1 删除标记 Photo varchar 50 相片 OICQ varchar 50 OICQ ICQ varchar 50 ICQ MSN varchar 50 MSN (7 News (新闻信息表
新闻信息表用来保存商城最新的公告新闻信息。表 News 的结构如表 B.7所示。 表 B.7 表 News 的结构
字段名 数据类型 长度 是否主键 描述 ID int 是 消息 ID Name varchar 50 消息主题 Memo varchar 8000 详细信息 DateTimed smalldatetime 8 发表时间
UserID smallint 用户 ID IsDel bit 1 是否删除 (8 Products (商品信息表
商品信息表主要用来保存商品信息。表 Products 的结构如表 B.8所示。 表 B.8 表 Products 的结构
字段名 数据类型 长度 是否主键 描述
ProductID int CategoryID int VendorID int 是 商品 ID 类别 ID 卖主 ID 模型号 ModelNumber varchar 50 ModelName varchar 50 模型名称 ProductImage varchar 50 UnitCost money 100 Discount money 8 产品图片 产品单价 产品折扣价 产品描述 Description varchar 2000 DateTimed datetime 4 登记时间 Clicks int 4 Sales int 点击次数 销售数量 是否受欢迎 Commend bit 1 Isdel bit 1 是否删除 (9)ShoppingCart(购物车商品信息表) 购物车商品信息表主要用来保存客户要购买的商品信息。表 ShoppingCart 的结构如 表 B.9 所示。 表 B.9 表 ShoppingCart 的结构 字段名 数据类型 长度 是否主键 描述 ID int 是 ID 号 购物车 ID CartID varchar 50 ProductID int 产品 ID
Quantity int 数量 购物时间 DateTimed smalldatetime 8 (10)Onhand(客户拥有商品信息表) 客户拥有商品信息表主要用来保存客户已经购买的商品信息内容。表 Onhand 的结 构如表 B.10 所示。 表 B.19 表 Onhand 的结构 字段名 数据类型 长度 是否主键 描述 StoreID int 是 购物车 ID ProductID varchar 50 产品 ID Quantity int 产品数量 (11)SiteMenu(友情链接信息表) 购物车商品信息表主要用来保存客户要购买的商品信息。表 SiteMenu 的结构如表 B.11 所示。 表 B.11 表 SiteMenu 的结构 字段名 数据类型 长度 是否主键 描述 ID int 是 网址 ID Name varchar 255 页面名称 ParentID int 父页面 ID 备注 页面地址 目标页 定单 ID Memo varchar 255 URL varchar 255 Target varchar 255 OrderID smallint
该系统采用 SQL Server2000 作为后台数据库去存储所有与系统 关的数据。这些数 据包括产品信息、客户账号以及订单信息等。数据模型的最终目的就是规划能够有 效地处理事务,并且保持应用开发的简洁性的关系数据库,并在数据库的规范话、 性能优化以及数据的简洁性之间达到平衡。 7.结束语 本系统从构想到功能需求以及数据库设计和实现方法,创建了一个电子商务系统, 本电子商务系统最核心的部分是提供购物功能,出于安全和身份验证的需要,需要 对客户进行管理,本系统提供了用户注册和登录页面。 在电子商务中最重要的就是提供个购物服务,在本系统中创建了一个网络虚拟商场, 客户可以对商品进行分类浏览和详细浏览每件商品的详细信息,并把自己选中的商 品存放到电子购物车中,本系统还提供了对购物车的各种操作,并提供了结帐退出 系统的功能。 当然本系统还有很多不足之处,对很多实际中会出现的问题还没有加以考虑,对整 个系统的模型也做了很大的简化,还有网络安全方面的技术也没有涉及很多。
因篇幅问题不能全部显示,请点此查看更多更全内容