网上购物网站设计

目  录

摘  要

关键词

Abstract

Key words

前言

1概 况

1.1背景

1.2当前研究现状

1.3研究思路及创新之处

2系统介绍

2.1系统的结构

2.2开发工具介绍

3需求分析及概要设计

3.1需求分析的意义

3.2目标分析

3.3需求结构分析

3.4功能分析

4详细设计

4.1设计概述

4.2网站结构

4.3系统详细设计

4.4数据库设计

4.5整站流程图

5具体功能实现

5.1公共模块

5.2用户模块设计

5.3浏览、购买商品模块设计

5.4首页设计

5.5用户留言模块设计

5.6后台管理设计

6关键技术分析

6.1系统安全性

6.2使用ADO.NET访问数据库

6.3提高速度

6.4防止SQL注入式攻击

7测试、总结

7.1测试

7.2总结

参考文献

致 谢

附 录

基于ASP.NET的网上购物系统的设计与实现

摘  要

随着计算机技术、通信技术的日益发展和融合,尤其是Internet的普及应用,出现了一种先进的交易方式——购物网站。本文详细介绍了购物网站前后台的设计思想和实现方法。它要求应用程序功能完备,使用方便易懂。网站实现将自己的商品、服务和信息推销给顾客,而顾客根据自己的需要和喜好选择购买商品。本系统基于B/S体系结构,基于ASP.NET平台,使用C#语言编写,用SQL Server 2005作为后台数据库。

关键词

购物网站;ASP.NET;SQL Server 2005;三层结构;C# 

Design and Implement of Line Shopping System Based on ASP. NET

Abstract

Along with the development and amalgamation of computer and communication technology, especially with the popularization application of internet, there appears a sort of advanced trade mode—shopping website. This paper expounds the design and implement of the shopping website. It demands maturity function of the application and the application is easy to use and understand. the web site implement salesmanship its merchandise, service and information to customers.At the same time, customers buy merchandise from the web site with their need and favor. This system based on the B/S system structure,based on ASP.NET, the language is C#,the database is SQL Server 2005.

Key words

Shopping website;ASP;SQL Server 2005;Three-Layer-Model;C#

前言

Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体,它的覆盖面积的庞大使世界从此变小,人们的信息交流也变得简单与方便。作为Internet上一种先进的,易于被人们所接受的信息检索手段,World Wide Web(简称WWW)发展十分迅速,成为目前世界上最大的信息资源宝库。据估计,目前Internet上已有上百万个Web站点,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,这又给了人们一个赚钱的渠道,一个生存的地点,随着经济危机的降临,许多企业面临着倒闭的危险,人们的腰包已不再那么饱满,逛街的热潮也没有以前那么的疯狂,人们购物的方向也就发生了一些偏移,渐渐的网上购物成了人们生活中的一种乐趣,它不仅便宜而且方便是它红火的源泉。

购物网站,简单地说就是利用网络进行的商务交易,它不是传统意义上的通过当面交换和之间面谈方式进行的贸易,而是一种系统的、完整的电子方式的运作,它包括设计方案的提出、分析、设计、实施、维护以及建立在其上的商务应用的各个方面。在一个购物网站中,通过网上购物模块,从服务器发布商品信息,公告,供客户浏览、查询所需要的商品、提交定单、结账等,涉及到企业和顾客两个方面,是一种多技术的集合体,包括提交数据(下订单、客户留言)、交换数据、获得数据(共享数据库、公告栏)等。购物网站除了像传统商店一样,有物质形式的“物流”以外,它还有一个根本的特征是有一个“信息流”二十四小时不间断的流动,因此购物网站需要一个功能比较稳定、安全的数据库来对“信息流”作处理。同时它还是一个动态的网站,所谓动态网站,应该具备以下三个特点:“交互性”即网页根据用户的要求和选择动态地改变和响应;“自动更新”即无须手动地更新html文档,而是自动生成新的页面;“因时因人而变”即当不同的时间、不同的人访问同一网址时产生的页面并不相同。

购物网站给人们带来的好处是很大的。

首先,对于消费者来说:

(1) 可以在家“逛商店”,订货不受时间的限制;

(2) 获得较大量的商品信息,可以买到当地没有的商品;

(3) 网上支付较传统拿现金支付更加安全,可避免现金丢失或遭到抢劫;

(4) 从订货、买货到货物上门无需亲临现场,既省时又省力;

(5) 由于网上商品省去租店面、召雇员及储存保管等一系列费用,总的来说其价格较一般商场的同类商品更便宜;

(6) 提供24小时服务。

其次,对于商家来说:

(1) 由于网上销售没有库存压力、经营成本低、经营规模不受场地限制;

(2) 提高企业的经济效益和参与国际竞争的能力;

(3) 节省了部分开支,如通信、交通和邮费,管理和人员环节的开销;

(4) 提供了交互式的销售渠道。使商家能及时得到市场的反馈,改进工作。

再次,对于整个市场经济来说:

(5) 这种新型的购物模式可在更大的范围内、更多的层面上以更高的效率实现资源配置。

在网络开发的众多语言中,IIS(Internet Information Server Web服务器) +ASP.NET+SQL Server(数据库)的方案组合都是Microsoft公司的产品。传统的Client/Server网络应用系统模式,即客户机/服务器的方式,由于业务逻辑位于客户端,需要频繁地访问数据库,造成网络上数据流量非常大,影响用户的访问。而Browser/Server (浏览器/服务器,简称B/S)网络结构模式作为传统C/S模式的扩展,为网上购物网站系统的建设提供了更为实用的技术手段,开辟了网络建设的新途径。

结合上述的特点,本网上购物商店的设计开发,力求结合实际。开发过程遵循软件开发的步骤。下面的章节将详细介绍实现过程。

1概 况

1.1背景

随着网络经济、知识经济和电子商务等新经济的迅猛发展,不但深刻地改变着人类社会的生产、贸易、生活和学习方式,也促使全球化市场竞争和企业管理发展趋势发生了巨大的变化。

电子商务是运用现代通信技术、计算机和网络技术进行的一种社会经济形态,其目的是通过降低社会经营成本、提高社会生产效率、优化社会资源配置,从而实现社会财富的最大化利用。因此,电子商务是一种新的社会经济形态。

亚马逊的诞生是互联网的重大革命,这是电子商务的“第一春”。非典时期的恐慌,令许多人出门消费产生了顾虑,然而电子商务便捷为他们所推崇,网上购物量大幅度提升。这是电子商务的“第二春”。

如今微软、谷歌、百度、盛大对外宣称涉足电子商务,阿里巴巴强势上市,思科投资约1750万美元入股阿里巴巴。种种迹象表面,互联网巨头都看上了电子商务这块大饼。

2007年7月26日的消息称,中国网游巨头盛大也进电子商务,旗下的B2C交易平台即将上线。

10月2日,微软收购了位于美国威斯康星州Madison的Jellyfish.com比较购物网站。

10月17日,百度正式宣布进军电子商务领域,主要是C2C平台。

网络巨头大规模进军电子商务,迎来的将是电子商务的“第三春”。从他们的动作不难看出,B2C、C2C这两种面向个人消费者的模式将是电子商务的主流,而比较购物又是一种新的模式。

世界经济的全球化,顾客需求的多样化,企业将面临着前所未有的激烈竞争和挑战。为了在竞争中取胜,企业必须以更加灵活有效的方式进行生产和服务,进一步应用信息技术和先进有效的组织管理方法。电子商务正是顺应这一发展趋势的一门崭新技术。简单地说,电子商务就是指利用Internet网络进行的商务交易。在一个电子商务系统中,网上购物模块通过WEB服务器发布商品信息,供客户浏览、采购商品,提交定单等占据很重要的位置。其一是因为界面的友好性,购物的方便性是吸引顾客的一个重要因素;其二是因为该模块是放在Internet上的,如果设计不当商品很容易被非法入侵,造成巨大损失。所以安全性也是很重要的技术环节。电子商务已经成为了新经济的代名词。在未来的商务活动中,“要么电子商务,要么无商可务”已经在商业界形成了共识。

1.2当前研究现状

随着电子商务的飞速发展,网上购物变得越来越普及,在2008年末,无论是国内还是在国外都呈现出一股网上购物(以下简称“网购”)热潮。全球知名网站Amazon在2008年圣诞节期间销售额同比2007年增长44%,为“历年来最旺的圣诞节销售”,并曾经创造过单日280万个订单的纪录(平均每秒32个订单),发往全球217个国家和地区。而国内的情况亦是如此,据淘宝网和艾瑞咨询联合发布的数据,2009年春节黄金周期间,淘宝网交易额比2008年同期增长60%,日均销售额超过3亿元,并创下单日销售4.6亿元的纪录。在目前金融危机尚未有效得到遏制的情况下,金融经济的影响带来经济的衰退,但是国内很多经济学家预测金融危机可能为“网购”的突破发展提供了又一个契机。

“网购”的持续升温显示出:“网店”与物流的配套、网络交易安全等问题已经有了显著的改善,更多的消费者开始接受网上购物。

而天津市网民网上购物的热情也在迅速增长。来自当当网的一份数据显示,8月份天津地区的销售额排名仅次于北京、上海,位列全国第三,天津网上订单的增长率已经连续三年超过100%。

一份来自当当网内部的统计数据显示,天津地区的网上订单量正以超过100%的速度增长。据了解,相比2003年,2004年天津地区订单总量增幅超过142.4%;2005年订单总量增幅达183%;预计2006年订单总量增幅将突破240%。

“天津地区的网上购物热度超乎我的预期。”当当网联合总裁俞渝说,“天津地区网上购物增长率连续三年超过了100%,已经远远超过了当当网的成长速度。”

1.3研究思路及创新之处

任何商业项目的开展,定位是其实操第一步。网站选择定位的时候,同时意味着其面对的目标群体,后期的一切运营手段亦围绕此核心导向展开。

基于网购市场与网购消费的人文属性分析,未来的购物网站必将走向专业化定位道路。以消费群的消费性别划分市场的E家网、妆点网、梦露内衣专卖网等,男性消费群为主的东京商城等;以消费品类定位市场的妆点网、时尚起义、七彩谷等;以区域性定位市场的广州购物网、上海购物网等。

定位明确之后,随即搭建网站运营的整体流程,并在此基础上,不断顺应消费者变化,把握消费需求,完善自身网站。

诸如网站版面的色调搭配,购物车的设计,频道内容的合理性设置,订购发票的开具等网站运营的整体性系统流程必须逐步完善,理顺,形成整个网站一气呵成的系统性顺畅,环环紧扣,专业细致。

在购物网站的整个体系架构当中,我们必须以消费者作为主导,一切均需以带给消费者购物的便利性为出发点,搭建网站系统,让消费者真正体验到网上购物的愉悦。

以E家网为例,即使走的是面向女性消费者,偏向中低端市场,但如仔细分析其消费群特征与热销产品,必定可以更清晰梳理其运营定位。

创新,对于新创公司如此,对于互联网巨人也说也是如此。雅虎公司,已在雅上购物网站内推出了Shoposphere网络服务,为用户提供博客、购物列表服务等。雅虎购物网站的副总裁Rob Solomon称,在雅虎的主页,为用户提供服务的空间很有限。一家叫Yub.com的网站,提供数千种商品的具体信息,如果用户在包括 Macy和化妆品零售网站Sephora上购物,用户最多可以得到10%的现金返回。雅虎计划为用户提供现金回扣,以刺激其它用户加入购物的行列。

2系统介绍 

2.1系统的结构 

本系统采用Browser/Server(浏览器/服务器)三层结构实现。B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。

所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换。

三层应用程序中的三层可以分解为:

(1) 数据层::可以是任何一种类型的数据存储,如数据库,XML文件,Excel工作表格,文本文件等等;

(2) 业务逻辑层:也可称为应用逻辑层,它包含用于查询数据库,管理检索到的数据,把数据传送给用户界面,处理 U I上的任何输入的所有代码;

(3) 表示层:它由所有的用户界面代码组成,包括静态HTML,文本和图形,用户控件和服务器控件。(隋玉磊和张云鹏,2007)

在这个系统中总共分为客户端浏览器(IE 4.0以上),Web服务器(IIS),应用系统,数据库服务器(SQL Server 2005)。

2.2开发工具介绍 

2.2.1IIS简介 

Internet Information Server的缩写为(IIS)是一个World Wide Web Server。Gopher Server和FTP Server全部包容在里面。 IIS意味着你能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,像有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW), 其次,IIS是随Windows NT Server 4.0一起提供的文件和应用程序服务器,是在Windows NT Server上建立Internet服务器的基本组件。它与Windows NT Server完全集成,允许使用Windows NT Server内置的安全性以及NTFS文件系统建立强大灵活的Internet/Intranet站点。

IIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。

2.2.2ASP.NET介绍 

微软的.NET技术目前正是最热门,作为全球软件业最大的公司,微软在.NET技术上投入了大量的人力物力,把公司未来战略重心放在了.NET上,而从目前看来,.NET技术无疑代表了未来Internet技术的方向。

ASP.NET技术就是由微软的.NET技术细化而来的,它跟ASP技术有些关系,然而又不是仅仅是一个继承,可以讲,ASP.NET跟ASP想比较的话,已经是变得面目全非了,当然好得至少是一个量级以上。

ASP.NET完全基于模块与组件,具有更好的可扩展性与可定制性,数据处理方面更是引入了许多激动人心的新技术,正是这些具有革新意义的新特性,让ASP.NET远远超越了ASP,同时也提供给Web开发人员更好的灵活性,有效缩短了Web应用程序的开发周期。ASP.NET与Windows 2000 Server/Advanced Server的完美组合,为中小型乃至企业级的Web商业模型提供了一个更为稳定,高效,安全的运行环境。

ASP.NET的功能非常强大,它的优点特别多,以下列举其中的8个方面介绍其优点。

(1) 增强的性能。ASP.NET 是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET 可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。

(2) 世界级的工具支持。ASP.NET 框架补充了 Visual Studio 集成开发环境中的大量工具箱和设计器。WYSIWYG 编辑、拖放服务器控件和自动部署只是这个强大的工具所提供功能中的少数几种。

(3) 威力和灵活性。由于 ASP.NET 基于公共语言运行库,因此 Web 应用程序开发人员可以利用整个平台的威力和灵活性。.NET 框架类库、消息处理和数据访问解决方案都可从 Web 无缝访问。ASP.NET 也与语言无关,所以可以选择最适合应用程序的语言,或跨多种语言分割应用程序。另外,公共语言运行库的交互性保证在迁移到 ASP.NET 时保留基于 COM 的开发中的现有投资。

(4) 简易性。ASP.NET 使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET 页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似 Visual Basic 的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。

(5) 可管理性。ASP.NET 采用基于文本的分层配置系统,简化了将设置应用于服务器环境和 Web 应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此“零本地管理”哲学也扩展到了 ASP.NET 框架应用程序的部署。只需将必要的文件复制到服务器,即可将 ASP.NET 框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。

(6) 可缩放性和可用性。ASP.NET 在设计时考虑了可缩放性,增加了专门用于在聚集环境和多处理器环境中提高性能的功能。另外,进程受到 ASP.NET 运行库的密切监视和管理,以便当进程行为不正常(泄漏、死锁)时,可就地创建新进程,以帮助保持应用程序始终可用于处理请求。

(7) 自定义性和扩展性。ASP.NET 随附了一个设计周到的结构,它使开发人员可以在适当的级别“插入”代码。实际上,可以用自己编写的自定义组件扩展或替换 ASP.NET 运行库的任何子组件。实现自定义身份验证或状态服务一直没有变得更容易。

(8) 安全性。借助内置的 Windows 身份验证和基于每个应用程序的配置,可以保证应用程序是安全的。(沃森等,2007)

2.2.3关于SQL Server 2005 

新一版SQL Server的设计目标正是帮助企业单位应对上述挑战。作为Microsoft公司的下一代数据管理与分析软件,SQL Server 2005有助于简化企业数据与分析应用的创建、部署和管理,并在解决方案伸缩性、可用性和安全性方面实现重大改进。

基于SQL Server 2000技术优势构建的SQL Server 2005将提供集成化信息管理解决方案,可帮助任何规模的组织机构:

(1) 创建并部署更具伸缩性、可靠性和安全性的企业级应用。

(2) 降低数据库应用创建、部署与管理的复杂程度,进而实现IT效率最大化。

(3) 凭借可供创建更具安全保障之数据库应用的丰富、灵活、现代化开发环境增强开发人员工作效能。

(4) 跨越多种平台、应用和设备实现数据共享,进而简化内部系统与外部系统连接。

(5) 实现功能强劲的集成化商务智能解决方案,从而在整个企业范围内推进科学决策,提高工作效率。

(6) 在不必牺牲性能表现、可用性或伸缩性的前提下控制成本费用水平。(王亚东,2003)

3需求分析及概要设计

3.1需求分析的意义 

需求分析是调查用户对所开发的系统的范围和规格,结合组织的目标、现状、实力和技术等因素,通过深入细致的分析,确定出合理可行的系统。本系统的开发了为了满足一般用户的上网购物需求。

3.2目标分析 

3.2.1购物系统目标分析 

通过调查,用户对于购物网站的需求有:

(1) 建立对网站信息的管理的系统;

(2) 方便用户对网站商品的浏览,提供更全面、详细的信息;

(3) 及时发布网站的信息,使用户第一时间得到信息;

(4) 提供用户交流的地方;

(5) 提供用户对网站服务的反馈;

(6) 尽量使界面美观、大方;

(7) 让人对购物有比较大的安全感;

(8) 商家可以方便的对网站进行管理。

3.2.2购物系统目标 

通过以上的购物系统目标分析,就很容易得出本购物网站的系统的目标:

总目标:

(1) 系统的功能全面,处理速度快,管理简易;

(2) 商品信息准确;

(3) 提供客户留言系统;

(4) 操作简单;

(5) 界面美观大方。

功能目标:

(1) 首页能够实现:商品的动态显示,分类目录,公告,推荐商品展示,点击率较高商品的展示。商品动态显示是部分商品可以像flash一样在首页显示。分类目录是首页的商品可以按类别显示在不同的地方。公告是管理员提供给用户的信息。推荐商品展示是管理员指定推荐的商品。点击率较高商品的展示是具有较高的点击率的商品按降序排列取前十展示在首页。

(2) 页头能够实现:商品的搜索,最新商品展。商品的搜索是用户可以按照商品的一些属性进行模糊查询。最新商品展示是管理员最近增加的一些商品。

(3) 会员注册和登录:会员可以通过每个页面的页头处点击“登陆”,只有注册用户才可以购买商品,没有注册的用户可以在每个页面的页头处点击“注册”进入注册页面。

(4) 浏览、购买商品:用户可以点击任一商品图片或商品名进入商品详细信息页面,在这个页面上用户可以把商品放入购物车进行购物。放入购物车后,经过确认得到订单,最后确认收货人的的资料,就完成了一次购物。

(5) 用户信息管理:用户可以对自己的信息或密码进行修改。

(6) 用户留言:用户购买完商品后可以在网站上进行留言。

(7) 后台商品管理:实现商品的添加、删除、修改操作。

(8) 后台订单管理:实现订单的查询,给订单发货,退款处理等。

(9) 后台的登录:管理员有一个专门的账号进行后台登陆。

3.3需求结构分析 

本系统可分为多个模块,模块大致可分为:用户中心管理、网站信息管理、商品管理、购物车、订单管理、销售结算管理。系统的需求结构如图1所示:

1 需求结构

Fig. 1 Demand Structure

3.4功能分析 

3.4.1用户中心功能分析

用户中心是用户对自己的信息管理,主要包括:用户密码修改、用户详细信息修改、用户订单管理。用户中心结构图如图2所示:

2 用户中心结构图

Fig. 2 Chart of Users Center

3.4.2网站信息管理功能分析 

网站信息管理功能包括:首页公告管理、商品点击数管理、用户留言管理。网站信息管理结构图如图3所示:

3 网站信息管理结构图

Fig. 3 Chart of Websites Information Management

3.4.3商品管理功能分析 

商品管理包括:添加商品、删除商品、修改商品信息。商品管理结构图如图4。

4 商品管理结构图

Fig. 4 Chart of Commodity Management

3.4.4购物车功能分析

购物车的功能包括:添加商品、选择商品、修改商品数量、查看商品详细信息、生成订单五大功能。结构图如图5所示:

   

5 购物车功能结构

Fig. 5 Chart of Trolley

3.4.5订单管理功能分析

订单管理功能包括:用户订单管理、管理员订单管理。

用户订单管理包括:删除未结帐订单、对已结账订单收货处理、对已结账订单退款处理、对已结账订单投诉处理。

管理员订单管理包括:对已结账订单发货处理、对已结账退款订单处理、查看已结账订单详细信息。结构图如图6所示:

6 订单管理功能结构图

Fig. 6 Chart of Order Management

3.4.6销售结算功能分析 

销售结算功能包括:用户详细信息输入、用户信息提交。结构图如图7所示:

7 销售结算功能结构图

Fig. 7 Chart of Clearing Sales

4详细设计 

4.1设计概述 

 本系统主要实现的是购物网站的前台的购物功能和后台的管理功能,要求前台功能和后台功能都比较完善,有严格的用户认证功能,信息加密功能。

前台功能主要包括:用户登陆、注册,用户信息修改,用户密码修改,购物车,生成订单并管理,付款,已结订单管理,商品展示,商品详细信息显示,网站公告显示,商品点击率排行榜,最新商品排行榜,网站推荐商品展示,商品搜索,用户留言等功能。

后台功能主要包括:管理员登陆,管理员账户密码修改,首页公告管理,商品管理,订单管理等功能。

本系统前台后台页面均在VS 2005 中设计,基于 C#、JavaScript语言,利用SQL Server 2005数据库支持,将整个购物网站系统设计成为动态的交互式的Web站点。

功能的实用性:本系统的设计是以实际应用为前提,因此实用性成为一个关键的问题,所以在设计过程中,尽量使各种功能操作简单方便。

功能的扩展性:本系统具有一定的扩展性,可以增加新功能以及更新原有的功能。

系统的安全性和保密性:该购物网站是面向所有大众开放的网站,Internet是一个开放的系统,从资料传送的起点到目的地在交易中的不安全问题主要有:拦截、篡改、伪装、中断和SQL注入。针对以上问题可以通过以下五个方面实现:信息加密;身份认证;可靠性/不可否认性;不可修改性 ;SQL使用传参进行插入、修改和查询数据库操作。

4.2网站结构 

 在运行本系统时,需要将网站源码生成网站后复制到IIS的根目录下,或者将IIS的主目录改成网站源码生成的网站所在的目录下。生成的网站包含以下子模块:

(1) CheckImage:用于当用户或管理员登陆时验证的图片,目的是为了增加账户的安全性;

(2) Entry:用户登陆页面,当用户选择登陆或未登录而进行购物时会自动跳转到此页面,要求用户输入用户名、密码及验证码;

(3) LoginSuccess:用户注册成功后自动跳转到的页面,显示用户成册成功;

(4) Pay:用户购物生成订单后付款的页面;

(5) UserCEditInfo:用户修改基本信息的的页面;

(6) Item:显示商品详细信息的页面;

(7) MessWord:用户留言的页面;

(8) PaySuccess:用户购物付款成功后显示的页面,提示用户付款成功;

(9) SearchItem:用户查询商品后跳转到的页面;

(10) Trolley:购物车的页面;

(11) UserCPass:用户修改登录密码的页面;

(12) CategoryItem:用户选择商品类别后跳转到的页面;

(13) Default:网站饿首页;

(14) Login:用户注册页面;

(15) Order:显示用户未结帐订单的页面;

(16) UserC用户中心页面,能修改用户基本信息及密码,查看、修改已结订单;

(17) Admin:登陆后台的首页;

(18) AdminLogin:后台的登录页面;

(19) EditItems:后台编辑商品信息的页面;

(20) EditPass:后台修改密码的页面;

(21) InsertItems:后台增加商品的页面;

(22) ManageCategory:后台商品类别管理页面;

(23) ManageOrders:后台订单管理页面;

(24) ManageTalk:后台首页公告管理页面;

(25) ShowAllItems:后台商品管理页面;

(26) ShowItem:后台查看单件商品信息页面;

(27) ShowOrders:后台单个订单管理页面;

(28) Image:存储网站图片;

(29) Img:存储货物图片。

系统模块图如图8所示。

4.3系统详细设计 

4.3.1会员注册、登陆

用户注册:

(1) 用户输入注册信息;

(2) 系统检查用户输入的密码长度是否大于4位小于16位;并检查两次输入密码是否一致;

(3) 若两次输入密码一致,系统查询用户输入的用户名是否重复;

(4) 如果用户名重复,提醒用户重新输入用户名,没有重复,检查是否将带*的项填写完整;

(5) 若信息都填写完整,则在数据库中增加一条注册用户信息;

(6) 系统提示客户注册成功,可以进行登陆。

登陆:

(1) 用户输入登陆信息(用户名与密码);

(2) 系统检查登陆信息是否正确;

(3) 如果错误要求用户重新输入,正确则显示用户基本资料。

该模块流程图如图9,10所示。 

                                                                          

8  系统模块图

Fig. 8 System Block Diagram

9 用户登陆流程

Fig. 9 Loading Flowchart

4.3.2修改用户信息和密码

用户的信息是一直在变化的,为了更好的满足用户的需求,使用户购物更加便捷,需要修改用户的信息,需要修改的信息包括:用户邮箱、电话号码、手机号码、用户详细地址。

(1) 用户输入修改信息。

(2) 判断用户信息是否符合规范。

(3) 若以上都正确则修改数据,显示修改成功,若有一项不正确则提示输入错误。

会员密码修改是为了增加用户密码的安全性。

(4) 用户输入原始密码。

(5) 用户输入两次新密码。

(6) 判断两次新密码是否一致,并且是大于4位,小于16位。

(7) 判断原始密码是否正确

(8) 若以上都正确,则提示修改成功,否则提示修改失败。

以上流程图如图11,12所示:

   

10 用户注册流程

Fig. 10 Login Flowchart

4.3.3查询订单 

这里的查询订单主要是用户查询未结帐的订单。

(1) 订单具有结账功能;

(2) 订单具有删除功能;

(3) 订单具有查看商品功能。

11 用户信息修改流程

Fig. 11 Edit Users Information Flowchart

12 用户密码修改流程

Fig. 12 Edit Users Password Flowchart

4.3.4浏览用户留言与发表评论 

用户留言具有编辑文字与表情功能。

(1) 用户可以查看其他用户的留言并显示其他用户的用户名;

(2) 用户可以发表文字与表情混合的留言;

(3) 用户留言需要输入用户名(登录用户不输入则为默认用户名,其他为空用户名),用户名长度为2-10位;

(4) 用户提交留言前需要输入验证码。

流程图如图13所示:

 

13 用户留言流程

Fig. 13 Users Message Flowchart

4.3.5购物车管理 

 购物车存储的是用户临时需要或以后需要购买的商品,可以从中选择部分购买也可以全部购买。

(1) 购物车具有查看商品信息功能。

(2) 购物车具有删除商品功能。

(3) 购物车具有选择商品生成订单功能。

(4) 购物车具有修改商品数量功能。

流程图如图14所示:

4.3.6货物搜索

货物搜索需要完成按货物的类别,由用户输入货物信息字符串进行模糊查询。例如:用户选择摸个品牌,在输入框中输入“篮球”,按下搜索键后就会把这个类别中所有货物名包含“篮球”字符串的货物查询出来,并显示在页面上。

4.3.8后台登陆及密码修改

后台登陆与前台登陆方式一样。

4.3.7货物分类显示

 货物分类显示是指把首页展示货物的模块分为多个小块,每块展示一类别的货物,有多少类别就显示多少块。每小块显示的货物样式为:前5种货物为图片加货物名显示样式,之后15种为只显示货物名样式。要查看所有该类别货物,则点击该小模块横条上的“more”按钮。

14 购物车流程

Fig. 14Trolley Flowchart

4.3.9后台订单管理

后台订单管理管理的是用户已结账订单,需要:

(1) 按管理员需求查询用户订单;

(2) 查看订单详细信息;

(3) 确定订单已发货;

(4) 如是申请退款订单,则确认退款或拒绝退款。

流程图如图15所示:

  

15 后台订单管理流程

Fig. 15 Backstage’s Order Management Flowchart

4.3.10后台货物管理

货物管理包括添加货物,修改货物信息,查看货物信息和删除货物四大主要功能。

(1) 货物管理首页可以显示所有货物,货物列表具有查看、修改和删除该货物功能;

(2) 货物管理首页具有添加货物功能;

(3) 编辑货物需要编辑货物的名称、所属类别、原价、会员价、剩余数量、是否为推荐商品、所属地区、品牌、商品新度和商品图片;

(4) 添加货物需要输入货物的名称、所属类别、原价、会员价、剩余数量、是否为推荐商品、所属地区、品牌、商品新度和商品图片;

(5) 查看货物可以查看货物的名称、所属类别、原价、会员价、剩余数量、是否为推荐商品、所属地区、品牌、商品新度和商品图片;

(6) 查询货物需要管理员选择查询条件,条件有:货物名,类别,原价和剩余数量,再输入查询字符串既可查询。

流程图如图16所示。

4.3.11后台公告管理

 后台公告管理包括公告修改功能,公告都是由纯文字组成的,信息保存后存储在一个名为“talk. txt”的文件中,前台显示的公告就是由这文件中读取的。

4.4数据库设计 

本系统采用SQL Server 2005作为基础数据库, 包括一个数据库,数据库名为Basketball,其中包含了购物系统的7张表:系统用户表User、商品类别表Category、用户留言表UserMess、商品信息表Item、订单表Order、购物车表Trolley、管理员账户表 Admin。数据库E-R图如图17所示:

16 货物管理流程

Fig. 16 Cargo Management Flowchart

17 数据库E-R图

Fig. 17 Database E-R Diagram

(1) 用户实体图如图18所示:

18 用户实体图

Fig. 18 User Physical Map

(2) 订单实体图如图19所示:

19 订单实体图

Fig. 19 Order Physical Map

(3) 商品实体图如图20所示:

20 商品实体图

Fig. 20 Commodities Physical Map

(4) 类别实体图如图21所示:

21 类别实体图

Fig. 21 Category Physical Map

(5) 留言实体图如图22所示:

22 留言实体图

Fig. 22 Message Physical Map

(6) 购物车实体图如图23所示:

23 购物车实体图

Fig. 23 Trolley Physical Map

(7) 管理员实体图如图24所示:

24 管理员实体图

Fig. 24 Admin Physical Map

我们在数据库中建立了7张表,分别为留言表、管理员账户表、订单表、用户信息表、商品信息表、购物车表、商品类别表,留言表存储的是用户的留言见表1,管理员账户表存储的是管理员账户信息见表2,订单表存储的是订单的信息见表3,用户信息表存储的是用户详细信息见表4,商品信息表存储的是商品详细信息见表5,购物车表存储的是用户临时购买的商品见表6,商品类别表存储的是商品的类别的信息见表7。

表1 留言表(UserMess

Table 1 Message Tables UserMess

字段名

数据类型

是否可以为空

中文描述

[Id]

[int]

留言编号

[Name]

[nvarchar](30)

留言用户名

[Content]

[nvarchar](1000)

留言内容

[MeTime]

[datetime]

留言时间

表2 管理员账户表(Admin)

Table 2 Administrator’s Account Tables(Admin

字段名

数据类型

是否可以为空

默认值

[admin]

[varchar](50)

管理员账户名

[password]

[varchar](50)

密码

表3 订单表(Order

Table 3 Order Tables(Order

字段名

数据类型

是否可以为空

默认值

中文描述

[Id]

[int]

订单编号

[UserId]

[int]

用户编号

[Price]

[decimal](182)

订单价格

[CreateDate]

[datetime]

getdate()

创建时间

[Items]

[nvarchar](max)

商品代码

[CarryMode]

[nchar](20)

寄送方式

[Adress]

[nvarchar](50)

详细地址

[Postalcode]

[int]

邮编

[Phone]

[nvarchar](30)

电话

[TelePhone]

[bigint]

手机号码

[IsPay]

[bit]

0

是否付款

[IsSendItem]

[bit]

0

是否发货

[IsReceived]

[bit]

0

是否收货

[IsRefundingmoney]

[bit]

0

是否退款

[IsAgreeRefundingmoney]

[nvarchar](5)

“未处理”

退款是否同意

表4 用户信息表(User)

Table 4 Users Information Tables (User)

字段名

数据类型

是否可以为空

中文描述

[Id]

[int]

编号

[Name]

[varchar](30)

用户名

[Pass]

[varchar](30)

用户密码

[Email]

[varchar](50)

用户邮箱

[Phone]

[varchar](30)

用户电话

[Telephone]

[bigint]

用户手机号码

[Adress]

[nvarchar](50)

用户详细地址

[IP]

[varchar](30)

用户上次登录ip

表5 商品信息表(Item)

Table 5 The Information of Goods Tables(Item)

字段名

数据类型

是否可以为空

默认值

中文描述

[Id]

[int]

商品编号

[Name]

[nvarchar](50)

商品名称

[CategoryId]

[varchar](30)

类别编号

[AgoraPrice]

[decimal](182)

市场价

[MemberPrice]

[decimal](182)

会员价

[Area]

[nchar](10)

地区

[Fresh]

[nchar](10)

“全新”

新鲜度

[Brand]

[nvarchar](30)

品牌

[ClickTime]

[int]

0

点击数

[Sale]

[int]

0

销售数量

[Remant]

[int]

0

剩余数量

[SmallImg]

[nvarchar](50)

小图片地址

[BitImg]

[nvarchar](50)

大图片地址

[Commend]

[nchar](10)

“是”

是否推荐

表6 购物车表(Trolley

Table 6 Trolley Tables(Trolley

字段名

数据类型

是否可以为空

中文描述

[id]

[int]

购物车编号

[userid]

[int]

用户编号

[itemid]

[int]

商品编号

[itemcount]

[int]

商品数量

表7 商品类别表(Category

Table 7 Type of goods Tables Category

字段名

数据类型

是否可以为空

中文描述

[Id]

[varchar](30)

类别编号

[Name]

[nvarchar](50)

类别名

[Descriptions]

[nvarchar](50)

类别描述

数据库表关系图如图25所示:

25 数据库表关系

Fig. 25 Relationship between Database Tables

4.5整站流程图

(1) 整站流程图用户图如图26所示:

26 整站流程用户图

Fig. 26 The whole Flowchart of the User Stations Map

(2) 整站流程图后台管理图如图27所示:

27 整站流程后台管理图

Fig. 27 The whole Flowchart of the Admin Map

5具体功能实现 

5.1公共模块 

本系统公共模块包括:面向用户的页面的页头与页尾,面向管理员的菜单栏。

(1) 面向用户的页头主要包括:页面标题、商品分类、商品搜索、用户登录按钮、用户注册按钮、用户查看购物车按钮、用户查看订单按钮、用户查看会员中心连接、用户留言连接、最新商品展示栏等。

其中关键难点代码主要为最新商品展示中让商品移动显示,要让商品移动显示需要前台与后台功能的结合,有后台绑定商品,再由前台控制商品移动。

后台商品绑定代码见附录。

前台由JavaScript函数控制商品的移动,这里作具体介绍,代码如下:

var speed=30//定义刷新时间为30毫秒

demo2.innerHTML=Header1_demo1.innerHTML//把demo1中的展示货物的Html代码复制给demo2

function   Marquee(){   

if(demo2.offsetWidth-demo.scrollLeft<=0)   //如果demo的左边界到浏览器显示网页的左边界的距离大于demo2的绝对宽度

demo.scrollLeft-=Header1_demo1.offsetWidth   //demo的左边界到浏览器显示网页的左边界的距离还原到初始值

else{   

demo.scrollLeft++   //移动demo

}   }

var   MyMar=setInterval(Marquee,speed)   

demo.οnmοuseοver=function()   {clearInterval(MyMar)}   //停止执行MyMar

demo.οnmοuseοut=function()   {MyMar=setInterval(Marquee,speed)} //执行MyMar

(2) 面向用户的页尾功能主要显示网站的联系方式等信息。

(3) 面向管理员的菜单栏功能主要是引导管理员管理网站信息,主要是一些连接的按钮,包括:管理首页页面链接,退出后台链接,密码修改链接,首页公告管理链接,订单管理链接,货物管理链接,货物添加链接,货物类别管理链接。链接按钮都是用控件LinkButton实现的。

5.2用户模块设计 

5.2.1用户注册模块

用户注册模块主要是由控件TextBox和控件Label结合错误验证控件CompareValidator与RequiredFieldValidator实现的,用户需要输入用户名、密码、确认密码、邮箱、电话号码、手机号码、详细地址来实现注册,其中除电话号码外其他的输入都不能为空,这就需要用到控件RequiredFieldValidator,设定此控件所指向的TextBox控件的ID就可以在提交注册前检测此控件所指向的TextBox控件的内容是否为空,然后用控件CompareValidator来实现检测两次输入的密码是否一致,不一致则提示错误,一致则不做任何操作。最后再由代码检测输入格式的正确性,只要有一项不正确则提示错误,否则提交注册请求至服务器。

用户注册页面核心代码主要在于用户名的验证,用户名的验证使用手写Ajax实现的,具体Ajax代码讲解如下所示所示,其他的代码见附录。

Ajax代码:

var xmlHttp;

function createXMLHttpRequest()//创建XMLHttpRequest对象,用来发送和接受请求

{

    if(window.ActiveXObject)

    {

       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

    }

    else if(window.XMLHttpRequest)

    {

        xmlHttp = new XMLHttpRequest();

    }}

function AjaxCheckName()//发送和接收数据,并处理接受的数据。

{

createXMLHttpRequest();

var getName=document.getElementById("UserName").value;

var url="CheckNameHandler.ashx?userName="+getName;//发送用户名

xmlHttp.open("POST",url,true);//向CheckNameHandler.ashx请求文件

xmlHttp.onreadystatechange=resultCheckName;//设定触发函数

xmlHttp.send(null);

}

function resultCheckName()//处理检测结果

{

var txtRound=document.getElementById("RoundName");//

if(xmlHttp.readystate==4)

{

if(xmlHttp.status==200)

{

var txtGetResponse=xmlHttp.responseText;

if(txtGetResponse=="0")

{

  txtRound.className="Login_ErroRound";

  txtRound.innerHTML="错误";

}

else if(txtGetResponse=="1")

{

  txtRound.className="Login_ErroRound";

  txtRound.innerHTML="已被注册";

}

else

{

 txtRound.className="Login_RightRound";

 txtRound.innerHTML="正确";

}

}

}

}

5.2.2用户登陆模块 

用户登录页面主要是通过用户输入的用户名和密码到数据库进行核对,核对结果一致则允许登陆,否则拒绝登陆,但为了防止他人恶意破解密码,在此引进图片验证功能,增加账号的安全性。图片验证代码见附录。

5.2.3更改密码模块 

更改密码模块嵌入于用户中心页面中,在用户中心点击“更改密码”按钮即可进行密码修改,更改用户密码需要用户输入原始密码和新密码,原始密码只需输入一次,新密码需要输入两次(防止密码输入错误),点击提交后由后台验证用户输入数据的正确性,首先检测两次密码是否输入一致,输入错误则返回错误提示,输入正确则接着验证原始密码的正确性,如果正确则提示修改密码成功,并在数据库中修改密码,否则提示相应错误。

5.2.4更改用户信息模块 

更改用户信息的前提是用户已经登陆,该模块也嵌入于用户中心页面中,在用户中心点击“修改资料”按钮即可进行信息修改。用户信息修改需要用户输入新的邮箱、新的电话号码、新的手机号码、新的详细地址,然后提交修改信息,由后台验证所输入数据格式的正确性,如有一项或以上的输入数据格式错误则提示输入错误,否则进入数据库修改信息,如修改成功则提示修改成功,否则提示修改失败。

5.3浏览、购买商品模块设计 

5.3.1浏览商品信息 

商品信息页面的实现主要用的是FormView控件,显示的信息来自数据库表Item,显示的信息包括:商品名称、市场价、会员价、地区、新鲜度、品牌、点击次数、出售总量、剩余、是否为推荐的商品及商品图片,商品图片的显示用Image控件实现,商品信息的显示用代码“<%# Eval("")%>”实现,其中引号内部填写绑定的数据源的字段的名称。点击放入购物车按钮即可把商品放入购物车,即在对应该用户的购物车中添加该商品相应数据。

5.3.2购物车模块设计

购物车页面的现实主要是利用GridView控件实现,该控件中包含8列数据,分别是:选择、编号、图片、商品名称、原价、会员价、数量、删除。点击图片列中的图片具有连接到该商品详细信息页面功能,数量列的修改数量是用手写Ajax实现的,原理与5.2.1的用户注册相似。只有在选择列选择商品时才可以点击购买商品按钮,否则相应错误,购买商品按钮随时会变,当修改数量不符时,按钮上显示“请稍后。。。”,且无法点击;当允许购买时显示“立刻购买”,且允许点击,实现的代码见附录。删除列具有删除相应商品功能,且删除的商品不可还原。实现代码比较简单在此不作说明。

5.3.3前台订单模块设计

订单的显示也是用到了控件 GridView。该控件中包含6列,分别为:订单编号、订单日期、订单价格、查看商品、删除订单及结账。点击查看货物的触发函数是用ajax写的,实现了无刷新功能,当点击后该GridView控件下面会自动显示一张表,表中具有该订单所含商品的信息,包括商品编号、商品名称、商品图片、原价、会员价及商品数量,其中点击商品图片会链接到该商品的详细信息页面。点击删除订单列中的删除按钮将会删除相应的订单,如果删除成功则提示删除成功,否则提示删除失败。结账列是在模版中加入Button控件实现的,点击Button控件会把该订单信息传送到结账页面,并对此订单实现结账功能。

5.3.4订单结账模块设计

在订单结账页面中可以显示要结账订单的具体信息,实现原理和前台订单模块设计的原理一样,只是少了删除和结账功能。订单的送货地点等的信息的输入是用FormView控件实现的。用户输入的信息的格式的验证都是在后台实现的。

5.4首页设计

5.4.1首页商品分类显示模块设计

首页商品分类显示实现方法是先由后台从数据库获取商品类别数据,商品数据包括商品名称、商品编号、会员价、原价及商品图片。然后把商品数据绑定到每个商品类别里,每个类中的前5个商品是显示图片、商品名称、会员价及原价,图片在Image控件中显示,第6-20个商品只显示商品名称,其他的商品不显示。显示该类别商品的地方具有一个显示为“more”的连接按钮,可链接到该类别商品的显示页面。

5.4.2首页点击排行榜模块与推荐的商品模块设计

首页点击排行榜商品数据是从表Item中的商品的点击属性按从高到底排序取前15获得的,获得每条数据中的信息包括商品编号和商品名称,显示在首页上的是商品名称,点击该商品名称即可链接到该商品的详细信息页面。

首页推荐商品数据是从表Item中的商品的是否为推荐属性默认排序取前10获得的,获取的每条数据的信息包括:商品编号、商品名称、商品图片、原价及会员价。图片是由Image控件显示的。

5.4.3首页公告模块设计

首页公告模块比较简单,公告内容是从文件talk.txt中读取出来的,读取文件的功能是放在后台实现的。读取文件代码见附录。

5.5用户留言模块设计

用户留言显示栏用的是Repeater控件,绑定的数据包括:留言人、留言内容及留言时间。编辑留言栏用的是Table控件,需要输入用户名、留言内容及验证码,用户名的初始值是绑定的,如果用户已经登陆,则默认值为当前用户名,否则用户名默认为空,需要手动输入。留言内容可编辑表情和文本,表情包括愤怒、开心、无语等。验证码与用户登录的验证码用的是同一个控件。

5.6后台管理设计

5.6.1商品管理模块设计

商品管理功能包括:商品列表页、商品查看页、商品修改页及商品添加页四大子模块组成。

(1) 商品列表页是用GridView控件显示商品信息,并在GridView控件上方增加商品搜索功能。商品显示的内容包括:编号、货物名、类别、原价、会员价、点击数、是否为推荐商品及操作。操作列中共有三个功能分别为查看、编辑及删除,点击按钮即会进入相应页面。

商品搜索功能需要用户选择搜索范围和匹配的值,显示搜索范围用的是控件DropDownList实现的,范围包括:货物名、类别、剩余数量及原价,由TextBox控件获取用户输入的匹配的值,进入数据库进行模糊搜索。该模块执行查询的的SQL语句如下所示:

SELECT [Item].[Id], [Item].[Name], [CategoryId], [AgoraPrice], [MemberPrice], [VipPrice], [Area], [Fresh], [Brand], [ClickTime], [Sale], [Remant], [SmallImg], [BitImg], [Commend], [Item].[Vis],[Category].[Name]  FROM [dbo].[Item] join [dbo].[Category] on [CategoryId]=[Category].[Id] where " + RowName + " like '%" + Value + "%'.

其中RowName为列名,Value为模糊查询的匹配字符串。

(2) 商品查看页是用TextBox控件、Label控件及Image控件实现的,显示的内容包括:货物名、类别、原价、会员价、剩余数量、图片、地区、品牌、是否为推荐商品及商品新度。其中所有的TextBox控件的值都不允许修改。

(3) 商品修改和商品添加页是两个相似度比较高的页面,都用到了商品图片添加或修改功能,该功能主要原理是由控件FileUpload获取用户选择的图片的信息,然后检测图片是否符合要求,再把图片传到服务器中的一个文件夹中,并生成一张小图把图片存在同一目录下,最后把图片的在服务器上的虚拟地址记录下来,以便存入数据库。

其他的与商品查看页面相似,只是这里的TextBox控件的只读属性为false。

5.6.2订单管理模块设计

订单管理模块包括:订单列表管理和具体订单管理。

(1) 订单列表管理包括:订单搜索和订单列表展示。订单搜索功能与5.6.1中的商品搜索功能原理相同,在此不做具体说明。订单列表展示所展示的订单信息包括:订单编号、用户账号、订单时间、金额、是否已结账、是否已发货、是否退款及退款是否同意,用户可以操作的功能是对每条订单进行查看,此功能位于订单表的最后一列。订单表是由GridView控件实现的,数据源来自数据库中的表Order。

(2) 具体订单管理是管理具体某个订单的,页面上显示的订单信息包括:订单编号、用户账号、订单时间、邮寄方式、金额、邮编、电话、手机、货运地址、是否已结账、是否已发货、是否退款、退款是否同意及货物表。除货物表外其他的信息的显示都是用控件TextBox实现,货物表是用控件GridView实现的。

5.6.3首页公告管理设计

首页的公告的信息来自于文件talk.txt,要管理其显示的内容我们只需要修改文件talk.txt里面的信息即可,所以此模块程序比较简单,见附录。

5.6.4管理员密码修改

管理员密码修改与用户密码修改原理相同,只是参考的数据库不同,具体信息请参考5.2.3的用户密码修改模块。

5.6.5退出登陆

退出登陆即把用来证明用户已登陆的Session清空即可,具体代码如下:

Session.Clear();

Session是针对具体用户的,所以不同用户执行这个函数产生的效果是不同的,它只会清空该用户的所有session。

6关键技术分析

6.1系统安全性

如何使系统的运行更为安全是系统设计中的一个非常重要的问题。本系统是通过Internet上的网页形式进行管理的系统,又存放着大量的敏感数据,必然会遇到数据可能会被非法入侵和修改的问题。对安全的威胁主要是由通信欺骗、不适当的资源访问、未经许可的局域网访问、数据泄密和局域网通信泄密组成。当网站用户执行未登录用户无法执行的操作时就说明网站正在被入侵,为此本系统做了如下措施:(赵强,张红忠.2008)

(1) Windows  server 2000操作系统和SQL Server 2005都打上最新的安全补丁,堵住系统漏洞,设置好防火墙,装上杀毒软件。

(2) 数据库服务器设置登录权限,需要进行用户身份验证,防止数据库被非法入侵。

(3) 用户或管理员登录时,输入的密码经过md5加密后在网络中传输,防止密码被截获。(贺红,2005)

6.2使用ADO.NET访问数据库 

Microsoft在开始设计.NET 框架时,对于数据访问的技术,没有进一步扩展 ADO,而是设计了一个新的数据访问框架ADO.NET,只是保留了ADO这个缩写词。ADO.NET相对ADO来说,具有如下3个方面的优点:

(1) 提供了断开的数据访问模型,这对 Web 环境至关重要。

(2) 提供了与 XML 的紧密集成。

(3) 提供了与 .NET 框架的无缝集成(例如,兼容基类库类型系统)。

.NET数据提供程序(.NET Data Provider)。.NET数据提供程序根据需要交互的特定数据库系统实现ADO.NET所规定的接口。一个.NET数据提供程序又包含4个主要组件:

(1) Connection 对象,用于连接数据源。

(2) Command 对象,对数据源执行命令。

(3) DataReader 对象,在只读和只写的连接模式下从数据源读取数据。

(4) DataAdapter 对象,从数据源读取数据并使用所读取的数据填充数据集对象

6.3提高速度

本系统限制其运行速度的主要因素在于数据库数据的读取和写入,为此本系统使用了存储过程。

所谓存储过程就是:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令。

它的优点如下:

(1) 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度;

(2) 当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用;

(3) 存储过程可以重复使用,可减少数据库开发人员的工作量;

(4) 安全性高,可设定只有某此用户才具有对指定存储过程的使用权。

本系统存储过程几乎有50个,实现了数据的查询、修改、插入和删除四大功能。

6.4防止SQL注入式攻击

SQL注入式攻击是指利用设计上的漏洞,在目标服务器上运行SQL命令以及进行其他方式的攻击。动态生成SQL命令时没有对用户输入的数据进行验证是SQL注入攻击得逞的主要原因。比如:如果你的查询语句是"select * from user where name ="+user+" and password="+pwd,那么,如果我的用户名是:1 or 1 = 1那么,你的查询语句将会变成:"select * from user where name =1 or 1 = 1 and password="+pwd这样你的查询语句就通过了,从而就可以进入你的管理界面。(赵强,2008)

为此本系统引入了传参的概念,就是数据库的语句不是通过字符串的拼接来实现的,而是通过传参数来传进去的,例如:

先通过SqlParameter 设置参数

SqlParameter[] paras = { new SqlParameter("@Name", SqlDbType.VarChar, 30), new SqlParameter("@Pass", SqlDbType.VarChar, 30) };

paras[0].Value = nName;

paras[1].Value = nPass;

再编写SQL语句如下,其中@Name和@Pass为上面语句定义的参数

string sqlText = "SELECT count(*) FROM [User] WHERE Name=@Name AND Pass=@Pass";

最后执行SQL语句即可,这样安全度就上去了,因为不管参数的值是什么,他都以值的形式传入的。

7测试、总结 

7.1测试 

本系统完成后我对此网站进行了全面的运行查错,发现了很多小问题,比如输入错误数据导致网站崩溃,网站显示错误等,对此我也一一做了调试修改,最后也都修正了,在压力测试上也对服务器允许的最大并发用户数和交易数进行了测试。在持续测试上证明了本网站在实际环境下能够持续工作。对数据库联接也进行了测试,数据库联接测试是用来确定数据库服务器是否能够支持期望的连接数。

部分模块的测试用例见附录。

7.2总结 

经过了2个多月的努力总算能把购物网站给写出来了,代码量相当的的大,所以花的时间比较多,在公司实习了一个多月,几乎大部分时间都在搞我的毕业设计,所花的精力是很大的。

刚开始着手这个设计时是无从下手,不知道先开始什么好,怎样才能以最少的时间设计出最好用的网站,于是我在网上查了很多的资料,渐渐的明了了购物网站的一般的框架结构,我就以最常用的最流行的最新的框架三层架构来设计网站。

架构解决后就要开始需求分析了,需求分析刚开始也不知道怎样的才算是需求,需求的度把握多少,所以开始还是很困难的,再参考了无数的别人的需求和看法后,我花了整整半个月的时间总算把一个大致的需求写了出来,当然其中导师对我的帮助无疑是最大的。

需求出来后其他的一切的工作就变得比较明朗了,我的思路也渐渐的清晰了,经过了一个月的详细设计和代码编写,一个简单的购物网站就很快的展示在我的面前,虽然不是很美观,但是至少能购物了,大部分的功能也实现了,有前台的购物和后台的管理,由于时间也比较仓促,后台的页面中的美观性没有前台做得好。有经过一段时间的代码修改和页面调整后完整的网站就出来了。

整个系统使用ASP.NET编写的,由于ASP.NET用的不是很多,用的时间也比较短,所以整个网站肯定有许多的缺陷,我相信在这次的经验教训后,以后的编程道路会相对平坦的多,毕竟这次是我花的时间最大,用的精力最多的一次编程之旅,学的东西也是最多的一次。

总的来说,毕业设计虽然结束了,所编写的网站肯定还有很多的漏洞,相信在老师眼里还有很多幼稚和不足的地方,但这次毕业设计确实起到了很大的效果,它是对我们整个大学生涯中所学到的知识的大检查,也对我们将来从事的工作有了个一新的认识。我觉得设计得出的结果并不重要,最重要的是总结出来的经验以及在制作过程中所学会的知识。

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等天晴i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值