第1章 电子商务网上购书信息管理系统.docx
《第1章 电子商务网上购书信息管理系统.docx》由会员分享,可在线阅读,更多相关《第1章 电子商务网上购书信息管理系统.docx(69页珍藏版)》请在冰点文库上搜索。
![第1章 电子商务网上购书信息管理系统.docx](https://file1.bingdoc.com/fileroot1/2023-6/24/f91dd6bc-0e85-4712-a953-d0bea894b8a8/f91dd6bc-0e85-4712-a953-d0bea894b8a81.gif)
第1章电子商务网上购书信息管理系统
第1章电子商务网上购书信息管理系统
1.1用户需求的分析与处理
1.1.1任务名称:
用户需求的分析与处理
1.1.2任务描述
依据电子商务的特点与基本流程以及用户需求调查报告,通过理解需求阶段的目标,给业务上下文和系统功能建模,在完整的用例模型中记录系统需求,完成需求模型报告,最后依据需求模型报告进行产品需求规格说明书的撰写。
1.1.3任务分析
需求分析人员要按“初始、细化、构造与移交四步走”的路线,通过“以目标为基础、以用例为中心的三次迭代式需求分析”的过程来完成对用户需求的分析。
(1)第一次迭代(初始):
学会进行项目目标分解、进行项目目标可研分析,构造提交项目目标模型,形成项目大纲。
(2)第二次迭代(细化):
学会进行用例图建模,进行客户需求分析,构造提供软件功能模型,形成客户需求文档。
(3)第三次迭代(构造):
学会对用例进行“三位”一体的描述方式,分析软件用例的动态行为,构造提交用例的业务流程图、实体类图、原型图,形成产品需求说明书。
需求验证(移交):
学会从需求类型与属性角度评估需求的质量,移交产品需求说明书
1.1.4网上购书业务流程
1.1.5需求分析人员分析用户的需求
第一步:
细化并分析用户需求
对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。
第二步:
撰写产品需求规格说明书
需求分析员按照指定的文档模板撰写《产品需求规格说明书》。
如果待开发的产品分为软件和硬件两部分的话,则应当撰写《软件需求规格说明书》和《硬件需求规格说明书》。
第三步:
进行需求确认
1.需求建模
(1)目标模型
步骤:
第一步:
建立业务目标到软件功能目标的转化模型
第二步:
建立业务限制因素到软件非功能目标的转化
第三步:
建立软件功能目标与非功能目标之间的双向束定关系
经过综合得到如下关系模型:
2)用例模型
用例模型是系统既定功能及系统环境的模型,它可以作为客户和开发人员之间的契约。
用例是贯穿整个系统开发的一条主线。
一个用例模型包括了系统的所有用例,它是系统所有可能用途的总和。
蓝星网上购书信息管理系统用例一览表如表1-1所示:
(3)业务对象模型
2.撰写需求规格说明书
《产品需求规格说明书》的重点是阐述“做什么”,而不是阐述“怎么做”。
《产品需求规格说明书》应当正确、清楚、无二义性、一致、完备、可实现以及可验证。
“正确”是《产品需求规格说明书》最重要的属性。
真正的困难是开发者和用户自己都不明白用户究竟“想要什么”和“不要什么”。
为确保需求是正确的,开发方和用户必须对《需求规格说明书》进行确认;清楚的需求让人易读易懂,不在于文档的厚度;
“无二义性”是指每个需求只有唯一的含义。
如果一个人说的话,不同的人可能有不同的理解,那么这句话就有二义性。
如果需求存在二义性,将会导致人们误解需求而开发出偏离需求的产品。
为了使需求无二义性,人们在写《产品需求规格说明书》时措词应当准确,切勿模棱两可。
“一致”(Consistent)是指《产品需求规格说明书》中各个需求之间不会发生矛盾。
矛盾常常潜伏在需求文档的上下文中。
“完备”(Complete)是指《产品需求规格说明书》中没有遗漏一些必要的需求。
人们往往倾向于关注系统的特色功能,而忽视了其它一些不起眼的但却是必需的功能。
“可实现”意味着在技术上是可行的,并且满足时间、费用、质量等约束。
经过双方确认的《产品需求规格说明书》相当于商业合同,如果开发方不能够实现《产品需求规格说明书》中的内容,那就是违约,可能会被罚款的。
《产品需求规格说明书》中的各项需求对用户方而言应当都是可验证的(Verifiable)。
如果需求是不可验证的,那么用户就无法验收软件,可能会发生商业纠纷。
1.2项目计划安排
1.2.1任务名称:
项目计划安排
蓝星网上购书管理信息系统项目计划安排
1.2.2任务描述
编写蓝星网上购书信息管理系统用于协调所有项目计划编制文件、指导项目执行和控制的文件。
要清楚地描述出:
–项目划分的各个实施阶段
–每个阶段的工作重点和任务是什么
–完成本阶段工作和任务的人力、资源需求,时间期限
–阶段工作和任务的成果形式
–项目实施过程中对风险、疑难、其他不可预见因素等的处理机制
–各任务组及开发人员之间的组织、协调关系等。
1.2.3任务分析
根据《GB8567-88计算机软件产品开发文件编制指南》中项目开发计划的要求,结合实际情况调整后的《项目计划书》主要内容索引如下:
项目概述
-项目目标
-产品目标与范围
-假设与约束
-项目工作范围
-应交付成果
--需完成的软件
-需提交用户的文档
-须提交内部的文档
-应当提供的服务
-项目开发环境
-项目验收方式与依据
项目团队组织
-组织结构
-人员分工
-协作与沟通
-内部协作
-外部沟通
实施计划
支持条件
预算(可选)
关键问题
专题计划要点
1.2.4项目概述
本产品应是一个具有灵活性和系统性,可扩充性和可维护性强,可以不断延续发展的电子商务软件,其包括的内容有:
❑在对网上购书信息管理系统总体业务进行分析的基础上进行提炼,充分考虑系统性与可扩充性
❑遵循各种国际,国家及行业标准
❑综合考虑与外部系统(银行等)的接口
❑系统必须实用,友好,稳定,可靠,可移植性好,可扩充性好。
❑方便实施与维护,能减轻客户化工作
❑建立新型的业务与技术模型,注重业务流程的重用性与可定制性,用户能根据自身的需要方便的定义,采用基于三层框架的内核,并以内核为框架,采用面向组件对象的方式,建立以面向组件为基础的结构化的综合应用体系。
灵活的实现应用对象的重组,降低维护管理的成本;同时基于接口技术的应用可以使得体系更加灵活和便于扩充,具备“平台”的概念。
应交付成果
1.程序
2.文件
表1-3交付文件
3.服务
表1-4提供服务
4.非移交的产品
表1-5非移交产品
前期的项目计划表
使用Project软件制作一个前期的项目计划表,随着开发工作的深入,该项目计划表会不断的被加以细化和补充。
图1-7甘特图
1.3系统设计
软件构架是指一个系统的基础组织,具体体现在系统的组成构件,构件之间、构件和环境之间的关系,以及指导其设计和演化的原则上。
1.3.1任务名称:
系统设计
1.3.2任务描述
设计蓝星网上购书信息管理系统构架
1.3.3任务分析
RUP的整个分析与设计过程如下图所示,其中Architect即为软件架构师角色,从下图中可见系统架构从分析到设计的全部活动。
图1-8系统架构分析与设计活动
1.3.4层图(逻辑视图)
图1-11层图
1.3.5包图(开发视图)
图1-12包图
1.3.6部署图(物理视图)
图1-13部署图
1.3.7选择技术
开发环境:
MicrosoftVisualStudio2008集成开发环境
编程语言:
ASP.NET+C#
中间件:
MicrosoftDotnetFrameWork3.5
数据库:
MicrosoftSQLServer2005
1.3.8安全策略
网上书店的实施,其关键是要保证整个商务过程中系统的安全性。
实现网上书店的关键是要保证商务活动过程中系统的安全性,即保证基于互连网的电子交易过程与传统交易的方式一样安全可靠。
1.密码技术
采用MD5加密。
2.访问控制
采用授权策略和机制。
保护可以从以下几个方面加以考虑:
物理隔离、时间隔离、密码隔离。
3.防火墙技术
采用分组过滤防火墙技术。
1.3.9并发策略
1.对于业务数据低级并发控制由数据库事务和线程监视器自动管理,对业务服务的每一次使用都封装在一个事务中,以正确传送给数据库管理系统。
2.会员不可以重复登录,只能登录一次
3.在脱线状态下更新数据库数据,在凌晨使更新真正生效
1.4子系统设计
1.4.1任务名称:
子系统设计
1.4.2任务描述
完成蓝星网上购书信息管理系统子系统设计,包括类的设计、用例具体实现、用户界面设计以及数据库设计。
1.4.3任务分析
通过子系统设计将形成一个可用的、完整的解决方案,并且能够比较容易地将方案转换成程序代码。
该任务在.NET标准三层系统架构的基础上,将考虑所有的实现技术问题,对分析阶段的模型进行扩展和细化,并对分析阶段定义的类进一步扩充,定义新的类来处理技术方面的问题,最终形成最后的解决方案。
(一)遵循类的设计原则:
开闭原则:
对扩展开放而对变更封闭;
依赖倒置原则:
依赖抽象类而非具体类;
Liskov替换原则:
子类应当能完全替代其基类;
单一职责原则:
一个类只应当承担单一和集中的职责,这样引发类进行变更的原因只有一个;
接口分离原则:
为客户提供多个物定的接口好过一个多种用途集于一身的接口,即客户不被强制依赖于其不需要的操作;
组合复用原则:
尽可能地使用对象的多态组合而非继承来实现复用
所知最少原则:
一个类的操作实现中,只应调用下列对象的操作:
它自己、作为参数传入的对象、它创建的对象、它包含的对象。
(二)实现系统用例
实现系统用例的方式通常显示出用例如何通过一系列协作类进行实现,这是系统内部行为的模型,它可以用两个UML工件来描述:
实现类图和顺序图。
(三)用户界面的设计
在每个用户界面中,都应提供对应各个用例的窗口,在用户界面和用例之间应具有清晰的映射关系。
(四)数据库设计
面向对象的数据库设计是从对象模型出发的,属于实体主导型设计, 数据库设计(模式)是否支持应用系统的对象模型,这是判断是否是面向对象数据库系统的基本出发点。
由于应用系统设计在前,数据库设计随后,所以应用系统对象模型向数据库模式的映射是面向对象数据库设计的关键。
由于RDBMS是以二维表为基本管理单元的,所以对象模型最终是由二维表及表间关系来描述的。
换言之,对象模型向数据库概念模型的映射就是向数据库表的变换过程。
有关的变换规则简单归纳如下:
一个对象类可以映射为一个以上的库表,当类间有一对多的关系时,一个表也可以对应多个类。
关系(一对一、一对多、多对多以及三项关系)的映射可能有多种情况,但一般映射为一个表,也可以在对象类表间定义相应的外键。
对于条件关系的映射,一个表至少应有3个属性。
单一继承的泛化关系可以对超类、子类分别映射表,也可以不定义父类表而让子类表拥有父类属性;反之,也可以不定义子类表而让父类表拥有全部子类属性。
对多重继承的超类和子类分别映射表,对多次多重继承的泛化关系也映射一个表。
对映射后的库表进行冗余控制调整,使其达到合理的关系范式。
1.4.4类的列表
表1-13类的列表
1.4.5类的规格说明示例
CartManager:
字段名称类型说明
表1-14CartManager私有数据成员
表1-15CartManager公共属性
1.4.6用例具体实现示例--购物车图书添加(放入图书到购物车):
图1-14购物车图书添加序列图
订单生成:
订单页面:
1.4.7系统用户界面总览
略…..
1.4.8数据库设计
如在任务分析中所述,面向对象的数据库设计是从对象模型出发的,属于实体主导型设计,我们由如下图所示之业务实体出发完成向数据库概念模型的映射。
用户自定义的数据表:
ASP.NET自动生成的数据表:
数据库关系图:
图1-27数据库关系图
1.5开发前期的解决方案构建
1.5.1任务名称:
开发前期的解决方案构建
1.5.2任务描述
创建解决方案:
本项目解决方案由五个项目组成,分别是网站WEB、类库BLL、类库DAL、类库Model、类库COMMON等。
1.在类库Model中创建业务实体类
2.在类库Common中创建公共类数据库连接类DataBase
3.创建网站母版页及设计主题
4.创建站点地图
1.5.3任务分析
网站WEB对应表示层,主要应包含网页页面、用户控件等,类库BLL中包含所有业务逻辑层中的类,类库DAL中包含所有数据访问层中的类,类库Model中则包含所有业务实体类,类库COMMON包含公共类。
各项目中详细内容可参见第四节子系统设计中的类的列表。
如果一个类库中的类要调用另一个类库中的类,则要在该类库中添加对另一个类库的引用。
在设计母版页时则要注意,母版页是一个页面模板,包含的是页面的公共部分,因此,在创建母版页之前,必须判断哪些内容是页面的公共部分,比较常见的公共部分通常有片头、页脚、功能侧栏等。
单独的母版页只是一个页面模板,它不能在浏览器中被打开,只有将其应用到具体的某个内容页上,在浏览器中访问该内容页,其才能发挥作用。
站点地图的扩展名为.sitemap,是ASP2.0及ASP3.5提供的为站点导航控件--如本项目中使用的SiteMapPath控件提供站点的层次结构信息的标准XML文件。
1.5.4在解决方案中依次创建网站及类库BLL、DAL、类库Model、类库Common,解决方案创建完成如下图所示:
图1-33完整的解决方案
1.5.5在类库Model中创建业务实体类
1.图书目录实体类CategoryInfo
2.图书概要实体类BookBriefInfo
3.图书详情实体类ItemInfo
4.购物车实体类CartInfo
5.订单类OrdersInfo
6.订单明细类LineItemInfo
7.地址类AddressInfo
1.5.6在类库Common中创建公共类数据库连接类DataBase
主要方法:
…
///
///对数据库进行增删改方法
///
///SqlCommand对象的命令类型
///SqlCommand对象的文本
///SqlCommand对象的参数
///
publicvoidExcuteNonQuery(CommandTypect,stringcmdTxt,SqlParameter[]cmdParms)//对数据库进行增删改方法
{
SqlCommandcmd=newSqlCommand();
this.Preparecommand(cmd,ct,cmdTxt,cmdParms);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
this.Close();
}…
///
///读取数据
///
///SqlCommand对象的命令类型
///SqlCommand对象的文本
///SqlCommand对象的参数
///
publicSqlDataReaderExcuteDataReader(CommandTypect,stringcmdTxt,SqlParameter[]cmdParms)//读取数据
{
SqlCommandcmd=newSqlCommand();
this.Preparecommand(cmd,ct,cmdTxt,cmdParms);
returncmd.ExecuteReader(CommandBehavior.CloseConnection);
}
…
1.5.7设计解决方案中网站Web的母版页
母版页效果图:
图1-34母版页组成
1.5.8MasterPage.master.cs代码实现
母版页中有登录框,和登录注销按钮,以及用来绑定图书类别信息的Repeater控件,所以我们首要介绍.NET身份验证以及Repeater控件应用的相关知识。
1.相关知识一:
Forms身份验证凭据
FormsAuthentication类:
为Web应用程序管理Forms身份验证服务,用于在登录时验证用户的Forms身份验证凭据,可以存储在外部数据源中,也可以存储在应用程序的配置文件中。
可通过将authentication配置元素的mode属性设置为Forms来启用Forms身份验证。
通过使用authorization配置元素可要求所有对应用程序的请求均需包含有效的用户身份验证票证,从而拒绝任何未知用户的请求。
本项目在web.config文件中将authentication配置元素的mode属性设置为Forms来启用Forms身份验证的代码:
在本项目中设身份验证的默认页面为首页"Default.aspx",由于网站前台页面允许匿名用户浏览图书信息,所以将保护protection属性设为"None",对需要身份验证后才能访问的页面如购物车订单页面、修改会员个人资料页面等,采用增加location配置节来实现要求用户请求需包含有效的用户身份验证票证,从而拒绝任何未知用户的请求,在Web.config文件的配置节中增加如下代码
"/>//拒绝任何未知用户的请求
2.相关知识二:
ASP.NET成员资格
.NET为您提供了一种验证和存储用户凭据的内置方法--ASP.NET成员资格,它可帮助您管理网站中的用户身份验证。
ASP.NET成员资格支持下列功能:
创建新用户和密码。
将成员资格信息(用户名、密码和支持数据)存储在MicrosoftSQLServer、ActiveDirectory或其他数据存储区。
对访问站点的用户进行身份验证。
可以以编程方式验证用户,也可以使用ASP.NET登录控件创建一个只需很少代码或无需代码的完整身份验证系统。
管理密码,包括创建、更改和重置密码。
根据您选择的成员资格选项不同,成员资格系统还可以提供一个使用用户提供的问题和答案的自动密码重置系统。
公开经过身份验证的用户的唯一标识,您可以在您自己的应用程序中使用该标识,也可以将该标识与ASP.NET个性化设置和角色管理(授权)系统集成。
指定自定义成员资格提供程序,这使您可以改为用自己的代码管理成员资格及在自定义数据存储区中维护成员资格数据
FormsAuthentication类与Membership类在MasterPage.master.cs中的应用
//用户登录
protectedvoidibtnLogin_Click(objectsender,ImageClickEventArgse)
{
if(Membership.ValidateUser(txtUserName.Text,txtPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text,false);
}
}
//登录注销
protectedvoidlogout_Click(objectsender,EventArgse)
{
FormsAuthentication.SignOut();
Response.Redirect("Default.aspx");
}
成员资格信息(用户名、密码和支持数据)存储位置
.NETFramework默认的成员资格提供程序为AspNetSqlProvider,它将用户信息存储在.NET自带的SQL数据库—ASPNETDB.MDF中,如果我们要把用户信息存储在我们自定义的SQL数据库中,则需要在web.config文件配置节中进行如下配置:
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="CVITBOOKSHOPConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
passwordFormat="Hashed"
applicationName="/"/>
除此之外,还要运行ASP.NETSQLServer安装向导-aspnet_regsql.exe,该工具所在的路径为c:
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\,在我们自定义的数据库中创建成员资格的数据表和存储过程等。
图1-37ASP.NETSQLServer安装向导
1.5.9为网站Web设置主题
主题是属性设置的集合可以用来定义页面和控件的外观,您可以定义单个Web应用程序的主题,也可以定义供Web服务器上的所有应用程序使用的全局主题。
定义主题之后,可以使用@Page指令的Theme或StyleSheetTheme属性将该主题放置在个别页上;或者通过设置应用程序配置文件中的pages元素(ASP.NET设置架构)元素,将其应用于应用程序中的所有页。
如果在Machine.config文件中定义了pages元素(ASP.NET设置架构)元素,主题将应用于服务器上的Web应用程序中的所有页。
主题由外观、级联样式表(CSS)、图像和其他资源元素组成,一个主题至少要包含外观文件。
外观文件的文件扩展名为.skin,它用来定义页面中服务器控件的外观。
级联样式表扩展名为.css,CSS是CascadingStyleSheets(层叠样式表)的简称。
在标准网页设计中用来负责网页内容(XHTML)的表现.
主题还可以包含图形和其他资源,比如脚本文件或声音文件。
图1-39外观文件及样式文件
SkinFile.skin文件代码示例:
HyperLinkrunat="server"