第1章电子商务网上购书信息管理系统

PPT
  • 阅读 105 次
  • 下载 0 次
  • 页数 171 页
  • 大小 3.233 MB
  • 2023-09-06 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档12.00 元 加入VIP免费下载
此文档由【精品优选】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
第1章电子商务网上购书信息管理系统
可在后台配置第一页与第二页中间广告代码
第1章电子商务网上购书信息管理系统
可在后台配置第二页与第三页中间广告代码
第1章电子商务网上购书信息管理系统
可在后台配置第三页与第四页中间广告代码
第1章电子商务网上购书信息管理系统
第1章电子商务网上购书信息管理系统
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 171
  • 收藏
  • 违规举报
  • © 版权认领
下载文档12.00 元 加入VIP免费下载
文本内容

【文档说明】第1章电子商务网上购书信息管理系统.pptx,共(171)页,3.233 MB,由精品优选上传

转载请保留链接:https://www.ichengzhen.cn/view-332839.html

以下为本文档部分文字说明:

理论实践一体化网上购书信息管理系统第1章电子商务网上购书信息管理系统118理论实践一体化网上购书信息管理系统1.1用户需求的分析与处理学习目标:❑理解需求阶段的目标❑给业务上下文和系统功能建模❑在完整的用例模型中记录系统需求❑建议学时:8学时用户需求的分析与处理8理

论实践一体化网上购书信息管理系统1.1.1任务名称:用户需求的分析与处理1.1.2任务描述依据电子商务的特点与基本流程以及用户需求调查报告,通过理解需求阶段的目标,给业务上下文和系统功能建模,在完整的用例模型中记录系统需求,完

成需求模型报告,最后依据需求模型报告进行产品需求规格说明书的撰写。用户需求的分析与处理8理论实践一体化网上购书信息管理系统1.1.3任务分析需求分析人员要按“初始、细化、构造与移交四步走”的路线,通过“以目标为基础、以用例为中心的三次迭代式需求分析”的过程来完成对用户需求的分析

。(1)第一次迭代(初始):学会进行项目目标分解、进行项目目标可研分析,构造提交项目目标模型,形成项目大纲。(2)第二次迭代(细化):学会进行用例图建模,进行客户需求分析,构造提供软件功能模型,形成客

户需求文档。(3)第三次迭代(构造):学会对用例进行“三位”一体的描述方式,分析软件用例的动态行为,构造提交用例的业务流程图、实体类图、原型图,形成产品需求说明书。需求验证(移交):学会从需求类型与属性角度评

估需求的质量,移交产品需求说明书用户需求的分析与处理8理论实践一体化网上购书信息管理系统1.1.4网上购书业务流程图1.1购书业务流程开始是否是会员登录注册放入购物车下订单支付结束浏览网页查看图书详情是否用户需求的分析与处理8理论实践一体化网上购书信息管理系统1.1.5需求分析人员分

析用户的需求第一步:细化并分析用户需求对比较复杂的用户需求进行建模分析,以帮助软件开发人员更好地理解需求。第二步:撰写产品需求规格说明书需求分析员按照指定的文档模板撰写《产品需求规格说明书》。如果待开发的产品分为软

件和硬件两部分的话,则应当撰写《软件需求规格说明书》和《硬件需求规格说明书》。第三步:进行需求确认用户需求的分析与处理8理论实践一体化网上购书信息管理系统1.需求建模(1)目标模型步骤:第一步:建立业务目标到软件功能目标的转化模型图1-

2功能目标蓝星网上购书信息管理系统后台管理前台销售购物车管理订单管理支付管理会员访问获取图书目录及图书信息目录管理图书管理订单状态管理会员管理用户需求的分析与处理8理论实践一体化网上购书信息管理系统第二步:建立业务限制因素到软件非功能目标的转化图1-3非功能目标自动化处理符合操作习惯事务级数据处

理机制身份和权限认证业务处理效率高便于使用数据处理完整性安全检查项目建设限制因素用户需求的分析与处理8理论实践一体化网上购书信息管理系统第三步:建立软件功能目标与非功能目标之间的双向束定关系经过综合得到如下关系模型:图

1-4束定关系自动化处理符合操作习惯事务级数据处理机制身份和权限认证目录管理图书管理购物车管理订单管理支付管理会员管理用户需求的分析与处理8理论实践一体化网上购书信息管理系统(2)用例模型用例模型是系统既定功能及系统环境的模型,它可以作为客户和开发人员之间的契约。用例是贯穿整个系统开发的一条主线。

一个用例模型包括了系统的所有用例,它是系统所有可能用途的总和。蓝星网上购书信息管理系统用例一览表如表1-1所示:目标角色FG1:目录管理FG2:图书管理FG3:购物车管理FG4:订单管理FG5:支付管理FG6:会员管理管理员FG1:UC1:目录创建FG1:UC2:目录编辑

FG1:UC3:目录撤销FG1:UC4:目录查看FG2:UC1:图书入库FG2:UC2:图书出库FG2:UC3:图书撤销FG2:UC4:图书检索FG2:UC5:图书概要信息查看FG2:UC6:图书详细信息查看FG4:UC3:订单状态编辑FG4:UC4:订单信

息查看FG4:UC5:订单检索FG4:UC6:订单撤销FG4:UC7:订单明细信息查看FG4:UC8:订单状态信息查看FG6:UC1:会员注册FG6:UC2:会员撤销用户需求的分析与处理8理论实践一体化网

上购书信息管理系统会员FG1:UC4:目录查看FG2:UC5:图书概要信息查看FG2:UC5:图书详细信息查看FG3:UC1:购物车图书添加FG3:UC2:购物车图书计价FG3:UC3:购物车图书数量更新FG3:UC4:购物车图书信息浏览FG3:UC5:购物车图书移

除FG3:UC6:购物车图书清空FG4:UC1:订单生成FG4:UC2:个人订单信息查看FG5:UC1:信用卡支付FG6:UC3:个人资料修改FG6:UC4:会员登陆游客FG1:UC4:目录查看FG2:UC5:图书概要信息查看FG2:UC5:图书详细信息查看FG6:UC1:会员注册银

行账户处理系统FG5:UC2:转账表1-1用例列表接上表:用户需求的分析与处理8理论实践一体化网上购书信息管理系统图1-5业务对象模型-目录名称-描述-目录编号目录-图书编号-目录编号-图书名称-描述-图片图书摘要-详细编号-图书编号-售价-成本-名称-图片-数量图书详情-订单编号-订单日期-用户

名-订单发送地址-发送邮编-发送到的国家-商品接收地址-接收的邮编-接收人的国家-接收人的姓名-订单接收人的姓名-订单总价格订单头-订单编号-订单明细编号-图书详情编号-数量-单价订单明细-订单编号-订单明细编号-时

间戳-状态订单状态-个人设置编号-图书详情编号-名称-类型-价格-目录编号-图书编号-数量购物车1*111*0...11111*10...111(3)业务对象模型用户需求的分析与处理8理论实践一体化网上购书信息管理系统2.撰写需求规格说明书《产品需

求规格说明书》的重点是阐述“做什么”,而不是阐述“怎么做”。《产品需求规格说明书》应当正确、清楚、无二义性、一致、完备、可实现以及可验证。“正确”是《产品需求规格说明书》最重要的属性。真正的困难是开发者和用户自己都不明白用户究竟“想要什么”和“不要什么”。为确保需求是正确的,开发方和用户必

须对《需求规格说明书》进行确认;清楚的需求让人易读易懂,不在于文档的厚度;“无二义性”是指每个需求只有唯一的含义。如果一个人说的话,不同的人可能有不同的理解,那么这句话就有二义性。如果需求存在二义性,将会导致人们误解需求而开发出偏离需求的产品。为了使需求无二义性,人们在写《产品

需求规格说明书》时措词应当准确,切勿模棱两可。用户需求的分析与处理8理论实践一体化网上购书信息管理系统“一致”(Consistent)是指《产品需求规格说明书》中各个需求之间不会发生矛盾。矛盾常常潜伏在需求文档的上下文中。“完备”(Complet

e)是指《产品需求规格说明书》中没有遗漏一些必要的需求。人们往往倾向于关注系统的特色功能,而忽视了其它一些不起眼的但却是必需的功能。“可实现”意味着在技术上是可行的,并且满足时间、费用、质量等约束。经过双方

确认的《产品需求规格说明书》相当于商业合同,如果开发方不能够实现《产品需求规格说明书》中的内容,那就是违约,可能会被罚款的。《产品需求规格说明书》中的各项需求对用户方而言应当都是可验证的(Verifiable)。如果需求是不可验证的,那么用户就无法验收软件,可能会发生商业纠纷。

用户需求的分析与处理8理论实践一体化网上购书信息管理系统撰写需求规格说明书后事项:•需求确认•需求跟踪•需求变更(变更申请-审批-更改-重新确认)理论实践一体化网上购书信息管理系统1.2项目计划安排学习目标:理解软件项目计划的作用与主要组成要素初步掌握如何制定中小型软件项目计划建议

学时:4学时项目计划安排4理论实践一体化网上购书信息管理系统1.2.1任务名称:项目计划安排蓝星网上购书管理信息系统项目计划安排1.2.2任务描述编写蓝星网上购书信息管理系统用于协调所有项目计划编制文件、指导项目执行和控制的文件。

要清楚地描述出:–项目划分的各个实施阶段–每个阶段的工作重点和任务是什么–完成本阶段工作和任务的人力、资源需求,时间期限–阶段工作和任务的成果形式–项目实施过程中对风险、疑难、其他不可预见因素等的处理机制–各任务组及开发人

员之间的组织、协调关系等。项目计划安排4理论实践一体化网上购书信息管理系统1.2.3任务分析根据《GB8567-88计算机软件产品开发文件编制指南》中项目开发计划的要求,结合实际情况调整后的《项目计划书》主要内容索引如下:项目概述-项目目标-产品目标与范围-假

设与约束-项目工作范围-应交付成果项目计划安排4理论实践一体化网上购书信息管理系统-协作与沟通-内部协作-外部沟通实施计划支持条件预算(可选)关键问题专题计划要点-需完成的软件-需提交用户的文档-须提交内部的文档-应当提供的服务-项目开发环境-项目验收方式与依

据项目团队组织-组织结构-人员分工项目计划安排4理论实践一体化网上购书信息管理系统1.2.4项目概述本产品应是一个具有灵活性和系统性,可扩充性和可维护性强,可以不断延续发展的电子商务软件,其包括的内容有:❑在对网上购书信息管理系统总体业务进行分析的基础上进行提炼,充分考虑系统性与可扩充性❑遵循各

种国际,国家及行业标准❑综合考虑与外部系统(银行等)的接口❑系统必须实用,友好,稳定,可靠,可移植性好,可扩充性好。❑方便实施与维护,能减轻客户化工作❑建立新型的业务与技术模型,注重业务流程的重用性与可定制性,用户能根据自身的需要方便的定义,采用基于三层框架的内核,并以内核为框架,采用面

向组件对象的方式,建立以面向组件为基础的结构化的综合应用体系。灵活的实现应用对象的重组,降低维护管理的成本;同时基于接口技术的应用可以使得体系更加灵活和便于扩充,具备“平台”的概念。项目计划安排4理论实践一体化网上购书信息管理系统存储程序的媒体光盘程序功能概述主要实现图书信息在线浏览、放

入购物车及在线下订单及完成支付的功能表1-2交付程序2.文件系统名称文件蓝星网上购书信息管理系统需求规格说明书用户手册表1-3交付文件1.程序应交付成果项目计划安排4理论实践一体化网上购书信息管理系统3.服务系统名称服务蓝星网上购书信息

管理系统两年免费售后服务(开发新功能费用另行计算)表1-4提供服务4.非移交的产品蓝星网上购书信息管理系统概要设计说明书数据库设计说明书详细设计说明书模块开发说明测试报告表1-5非移交产品项目计划安排4理论实践一体化网上购书信息管理系统前期的项目计划表使用Project软件制作

一个前期的项目计划表,随着开发工作的深入,该项目计划表会不断的被加以细化和补充。图1-7甘特图项目计划安排4理论实践一体化网上购书信息管理系统1.3系统设计学习目标:理解系统架构的主要作用初步掌握运用R

UP4+1视图指导完成系统架构的设计建议学时:4学时系统设计4理论实践一体化网上购书信息管理系统软件构架是指一个系统的基础组织,具体体现在系统的组成构件,构件之间、构件和环境之间的关系,以及指导其设计和演化的原则上。1

.3.1任务名称:系统设计1.3.2任务描述设计蓝星网上购书信息管理系统构架1.3.3任务分析RUP的整个分析与设计过程如下图所示,其中Architect即为软件架构师角色,从下图中可见系统架构从分析到设计的全部活动。系统设计4理论实践一体化网上购书信息管理系统图1-8

系统架构分析与设计活动系统设计4理论实践一体化网上购书信息管理系统“4十1”模型•Rational公司的PhilippeKruchten在1995年提出了用于体系结构描述的“4十l”模型。•该模型采用多视图模型的方法描述软件体系结构。为了最终能够处理富于挑战性的、大规模的软件系

统,该模型由5个视图构成。u逻辑视图当采用面向对象的设计方法时,逻辑视图即是对象模型。u开发视图描述软件在开发环境下的静态组织。u处理视图描述系统的并发和同步方面的设计。u物理视图描述软件到硬件之间的映射关系,反映系统在分布方面的设计。理论实践一体化网上购书信息管理系统对

体系结构进行的描述是围绕着以上4个视图展开的。然后,通过选择出的一些用例对体系结构加以说明。这些用例被称作场景(scenarios),它们构成了第5个视图。实际上,体系结构在某种程度上是由场景演化而来的。理论实践一体化网上购书信息

管理系统理论实践一体化网上购书信息管理系统系统工程师先从物理视图,然后从处理视图靠近体系结构;最终使用者、客户、数据专家从逻辑视图看体系结构;项目经理、软件配置人员从开发视图看体系结构。体系结构的概念在每个视图里面都可以独立应用。可以在每个视图里面定义体系结

构的各种组成元素,如构件、连接件等。对于不同的视图,还可以选择不同的体系结构风格,因此在同一个系统结构中可以使用多种风格。此外,在每一种视图里,我们使用该视图特定的符号。这避免了符号用法和意义的混乱。理论实践一体化网上购书信息管理系统要指出的是,不是所有的软件

体系结构都需要完整的“4十1”视图。没有用的视图在体系结构描述中可以被省略.例如对于非常小的系统,逻辑视图和开发视图有可能非常相似以至于没有必要把它们分开描述。场景视图在各种环境下都是有用的。理论实践一体化网上购书信息管理系统表示层ASP.NETWeb窗体Member

shipProviderProfileProvider前台销售窗体后台管理窗体业务逻辑层图书目录管理图书信息管理购物车管理订单管理数据访问层图书目录数据访问购物车数据访问图书信息数据访问订单数据访问业务实体SQL2005数据库MembershipProfile1.3.4层

图(逻辑视图)图1-11层图系统设计4理论实践一体化网上购书信息管理系统WebcomponentsBLLDALMODELCOMMON1.3.5包图(开发视图)图1-12包图系统设计4理论实践一体化网上购书信息管理系统PC服务器Web服务器

IIS应用服务器数据库服务器BlueStarBookShop浏览器图1-13部署图1.3.6部署图(物理视图)系统设计4理论实践一体化网上购书信息管理系统1.3.7选择技术开发环境:MicrosoftVisualStudio2008集成开发环境编程语言:ASP.NET+C#

中间件:MicrosoftDotnetFrameWork3.5数据库:MicrosoftSQLServer20051.3.8安全策略网上书店的实施,其关键是要保证整个商务过程中系统的安全性。实现网上书店的关键是要保证商务活动过

程中系统的安全性,即保证基于互连网的电子交易过程与传统交易的方式一样安全可靠。1.密码技术采用MD5加密。2.访问控制采用授权策略和机制。保护可以从以下几个方面加以考虑:物理隔离、时间隔离、密码隔离。3.防火墙技术采用分组过滤防火墙技术。系统设计4理论实践一体化网上购书信息管理系统1.3.9并发策

略1.对于业务数据低级并发控制由数据库事务和线程监视器自动管理,对业务服务的每一次使用都封装在一个事务中,以正确传送给数据库管理系统。2.会员不可以重复登录,只能登录一次3.在脱线状态下更新数据库数据,在凌晨使更新真正生效系统设计4理论实践一体化网上购书信息管理系统1.4子系统设

计学习目标:理解如何设计类与实现业务服务掌握如何将运行时象映射为可存储对象建议学时:12学时子系统设计12理论实践一体化网上购书信息管理系统1.4.1任务名称:子系统设计1.4.2任务描述完成蓝星网上购书信息管理系统子系统设计,包括类的设计、用

例具体实现、用户界面设计以及数据库设计。1.4.3任务分析通过子系统设计将形成一个可用的、完整的解决方案,并且能够比较容易地将方案转换成程序代码。该任务在.NET标准三层系统架构的基础上,将考虑所有的实现技术问题,对分析阶段的模型进行扩展和细化,并对分析阶段定义的

类进一步扩充,定义新的类来处理技术方面的问题,最终形成最后的解决方案。子系统设计12理论实践一体化网上购书信息管理系统(一)遵循类的设计原则:开闭原则:对扩展开放而对变更封闭;依赖倒置原则:依赖抽象类而非具体类;Li

skov替换原则:子类应当能完全替代其基类;单一职责原则:一个类只应当承担单一和集中的职责,这样引发类进行变更的原因只有一个;接口分离原则:为客户提供多个物定的接口好过一个多种用途集于一身的接口,即客户不被强制依赖于其不需要的操作;组合复用原则:尽可能地使用对象的多态组合而非继承来实现复用所知最少

原则:一个类的操作实现中,只应调用下列对象的操作:它自己、作为参数传入的对象、它创建的对象、它包含的对象。子系统设计12理论实践一体化网上购书信息管理系统(二)实现系统用例实现系统用例的方式通常显示出用例如何通过一系列协

作类进行实现,这是系统内部行为的模型,它可以用两个UML工件来描述:实现类图和顺序图。(三)用户界面的设计在每个用户界面中,都应提供对应各个用例的窗口,在用户界面和用例之间应具有清晰的映射关系。子系统设

计12理论实践一体化网上购书信息管理系统(四)数据库设计面向对象的数据库设计是从对象模型出发的,属于实体主导型设计,数据库设计(模式)是否支持应用系统的对象模型,这是判断是否是面向对象数据库系统的基本出发点。由于应用系统设计在前,数据库设计随后,所以应用系统对象模型向数据库模式

的映射是面向对象数据库设计的关键。由于RDBMS是以二维表为基本管理单元的,所以对象模型最终是由二维表及表间关系来描述的。换言之,对象模型向数据库概念模型的映射就是向数据库表的变换过程。有关的变换规则简单归纳如下:子系统设计12理论实践一体化网上购书信息管

理系统一个对象类可以映射为一个以上的库表,当类间有一对多的关系时,一个表也可以对应多个类。关系(一对一、一对多、多对多以及三项关系)的映射可能有多种情况,但一般映射为一个表,也可以在对象类表间定义相应的外键。对于条件关系的映射,一个表至少应有3个属性。单一继承的泛化关系可以对超类、子类

分别映射表,也可以不定义父类表而让子类表拥有父类属性;反之,也可以不定义子类表而让父类表拥有全部子类属性。对多重继承的超类和子类分别映射表,对多次多重继承的泛化关系也映射一个表。对映射后的库表进行冗余控制调整,使其达到合理

的关系范式。子系统设计12理论实践一体化网上购书信息管理系统1.4.4类的列表包类名说明WebDefault前台首面页面类BookBrief前台图书概要页面类Item前台图书详情页面类ShoppingCart前台购物车页面类CheckOut前台订单页面类UserPro

file前台个人设置页面类Search前台图书检索页面类Register前台会员注册页面类adminDefault后台首页页面类Category后台目录管理页面类Book后台图书管理页面类Order订单管理页面类Login后台登录页面类子系统设计12理论

实践一体化网上购书信息管理系统BLLOrderManager订单管理逻辑类CategoryManager目录管理逻辑类BookBriefManager图书概要管理逻辑类ItemManager图书详情管理逻辑类CartManager购物车管理逻辑类

AccountManager账户设置管理逻辑类DALOrderAccess订单数据访问类CategoryAccess目录数据访问类BookBriefAccess图书概要数据访问类ItemAccess图书详情数据访问类CartAccess购物车数

据访问类接上表:子系统设计12理论实践一体化网上购书信息管理系统ModelOrderInfo订单信息类CategoryInfo目录信息类BookBriefInfo图书概要信息类ItemInfo图书详情信息类CartIn

fo购物车信息类LineItemInfo订单明细信息类OrderStateInfo订单状态信息类AddressInfo账户地址信息类CommonDataBase数据库连接类SQLStringSQL语句构造类接上表:表1-13类的列表子系

统设计12理论实践一体化网上购书信息管理系统属性名称类型说明Totaldecimalpublic,购物车图书总价格Countintpublic,购物车中所选定图书项数CartItemsICollection<CartInfo>public,购物车

中选购信息集合字段名称类型说明cartItemsDictionary<string,CartInfo>private,购物车图书集合dalCartAccessprivatestaticreadonly,CartAccess对象表1-14Car

tManager私有数据成员表1-15CartManager公共属性1.4.5类的规格说明示例CartManager:子系统设计12理论实践一体化网上购书信息管理系统方法名称返回值类型返回值的说明参数参数类型参数的说明概要SetQuantityvoid空BookIdqt

ystringint图书编号购买数量公有方法,设置所购要购买图书的购买数量Addvoid空bookIdstring图书编号公有方法,将选定图书放入购物车Addvoid空cartItemCartInfo购物车明细对象公有方法,将Cart表中一条记录数据添加到购物车中Removevoid空b

ookIdstring图书编号公有方法,从购物车中按书号移除图书Clearvoid空公有方法,清空购物车中所有图书GetCartItemsvoid空usernamestring会员的用户名公有方法,调用Car

tAccess类的同名方法SetCartItemsvoid空usernamecartItemsstringICollection<CartInfo>会员的用户名购物车图书集合公有方法,调用CartAccess类的同名方法GetOrderLineItemsLineIte

mInfo[]订单明细对象数组公有方法,将购物车中图书信息转换成订单明细信息表1-16CartManager类公有方法子系统设计12理论实践一体化网上购书信息管理系统:User:BookItem.aspx:ShoppingCart.aspx:CartManager:Cart

AccessopenputincartBindCart(cartManager)IList<CartInfo>SetCartItems(username)GetCartItems(username)GetCartItems(username)Add(bookId)SetCartItems(use

rname)Add(cartItem){foreach(CartInfocartIteminIList<CartInfo>)}TotalCount1.4.6用例具体实现示例--购物车图书添加(放入图书到购物车):图1-14购物车图书添加序列图子系统

设计12理论实践一体化网上购书信息管理系统放入购物车查看所选图书信息图1-15图书详情页面图1-16购物车页面面子系统设计12理论实践一体化网上购书信息管理系统:User:CheckOut.aspx:CartMan

ager:OrderInfo:OrderManager:OrderAccesslineItems=GetOrderLineItems()order=newOrdersInfo("username",s,b,t,lin

eItems)InsertOrder(order)InsertOrder(order)Clear()SetCartItems(username)CreateOrder:ShippingFormt=Totals=Address:BillingFo

rmb=Address订单生成:图1-17订单生成序列图子系统设计12理论实践一体化网上购书信息管理系统图1-18订单页面订单页面:子系统设计12理论实践一体化网上购书信息管理系统1.4.8数据库设计如在任务分析中所述,面向对象的数据库设计是从对象模型出发的,属于实体主导型设计,我们

由如下图所示之业务实体出发完成向数据库概念模型的映射。1.4.7系统用户界面总览略…..子系统设计12理论实践一体化网上购书信息管理系统-目录名称-描述-目录编号目录-图书编号-目录编号-图书名称-描述-图片图书摘要-详

细编号-图书编号-售价-成本-名称-图片-数量图书详情-订单编号-订单日期-用户名-订单发送地址-发送邮编-发送到的国家-商品接收地址-接收的邮编-接收人的国家-接收人的姓名-订单接收人的姓名-订单总价格订单头-订单

编号-订单明细编号-图书详情编号-数量-单价订单明细-订单编号-订单明细编号-时间戳-状态订单状态-个人设置编号-图书详情编号-名称-类型-价格-目录编号-图书编号-数量购物车1*111*0...11111*10...111图1-26业务实体类子系统设计12理论实践一体化网上购书信息管理系统序号

表名含意初始大小最大增长范围增长方式1Category图书类别表128KB640KB自动计算:增长速率:1行/月2BookBrief图书概要信息表256KB16MB自动计算:增长速率:20行/月3Item图书详情信息表256KB16MB自

动计算:增长速率:20行/月4Cart购物车信息表128KB10MB自动计算:增长速率:1000行/月5Orders订单头信息表256KB51MB自动计算:增长速率:30行/月6LineItem订单明细表128KB16MB自动计算:增长速率:1000行/月7OrderS

tatus订单状态表128KB16MB自动计算:增长速率:1000行/月用户自定义的数据表:表1-17表的概述子系统设计12理论实践一体化网上购书信息管理系统表名说明aspnet_Applications应用程序的基本信息:程序名、程序描述等aspnet_Member

ship用户的详细信息:用户名、邮箱等aspnet_Paths应用程序路径信息aspnet_PersonalizationAllUser存储所有用户的个性化信息aspnet_PersonalizationPerUser存储特定用户的个性化信息aspnet_Profile

个性化配置的内容aspnet_Roles角色表aspnet_SchemaVersions各部分的版本信息aspnet_Users用户表aspnet_UsersInRoles用户与角色的关系表aspnet_WebEvent_Events存

储事件日志信息表1-18ASP.NET成员资格自动生成的数据表ASP.NET自动生成的数据表:子系统设计12理论实践一体化网上购书信息管理系统数据库关系图:图1-27数据库关系图子系统设计12理论实践一体化网上购书信息管理系统1.

5开发前期的解决方案构建学习目标:❑在VS2008中创建包含多个项目的解决方案❑母版页、主题以及站点地图的应用❑业务实体类的实现❑建议学时:16学时解决方案构建16理论实践一体化网上购书信息管理系统1.5.1任务名称:开发前期的解决方案构建1.5.2任务描述创建解决方案:本项目

解决方案由五个项目组成,分别是网站WEB、类库BLL、类库DAL、类库Model、类库COMMON等。1.在类库Model中创建业务实体类2.在类库Common中创建公共类数据库连接类DataBase3.创建网站母版页及设计主题4.创建站点地图解决方

案构建16理论实践一体化网上购书信息管理系统1.5.3任务分析网站WEB对应表示层,主要应包含网页页面、用户控件等,类库BLL中包含所有业务逻辑层中的类,类库DAL中包含所有数据访问层中的类,类库Model中则包含所有业务实体类,类库COMMON包含公共类。各项目中详细内容可参见第四节子系统设计

中的类的列表。如果一个类库中的类要调用另一个类库中的类,则要在该类库中添加对另一个类库的引用。在设计母版页时则要注意,母版页是一个页面模板,包含的是页面的公共部分,因此,在创建母版页之前,必须判断哪些内容是页面的公共部分,比较常见的公共部分通常有片头、页脚、功能侧栏等。解决方案构

建16理论实践一体化网上购书信息管理系统单独的母版页只是一个页面模板,它不能在浏览器中被打开,只有将其应用到具体的某个内容页上,在浏览器中访问该内容页,其才能发挥作用。站点地图的扩展名为.sitemap,是ASP2.0及ASP3.5提供的为站点导航控件--如本项目中使

用的SiteMapPath控件提供站点的层次结构信息的标准XML文件。1.5.4在解决方案中依次创建网站及类库BLL、DAL、类库Model、类库Common,解决方案创建完成如下图所示:图1-33完整的解决方案解决方案构建16理论实践一体化网上购书信息管理系统1.5.5在类库Model中创

建业务实体类1.图书目录实体类CategoryInfo2.图书概要实体类BookBriefInfo3.图书详情实体类ItemInfo4.购物车实体类CartInfo5.订单类OrdersInfo6.订单明细

类LineItemInfo7.地址类AddressInfo解决方案构建16理论实践一体化网上购书信息管理系统1.5.6在类库Common中创建公共类数据库连接类DataBase主要方法:…///<summary>///对数据库进行增删改方法///</summary>///<par

amname="ct">SqlCommand对象的命令类型</param>///<paramname="cmdTxt">SqlCommand对象的文本</param>///<paramname="cmdParms">SqlCo

mmand对象的参数</param>///publicvoidExcuteNonQuery(CommandTypect,stringcmdTxt,SqlParameter[]cmdParms)//对数据库进行增删改方法{SqlCommandcmd=new

SqlCommand();this.Preparecommand(cmd,ct,cmdTxt,cmdParms);cmd.ExecuteNonQuery();cmd.Parameters.Clear();this.Close();}…解决方案构建16理论实践一体化网上购书信息管理系

统…///<summary>///读取数据///</summary>///<paramname="ct">SqlCommand对象的命令类型</param>///<paramname="cmdTxt">SqlCommand对象的文本</p

aram>///<paramname="cmdParms">SqlCommand对象的参数</param>///<returns></returns>publicSqlDataReaderExcuteDataReader(CommandTypect,stringcmdTxt,SqlPar

ameter[]cmdParms)//读取数据{SqlCommandcmd=newSqlCommand();this.Preparecommand(cmd,ct,cmdTxt,cmdParms);retu

rncmd.ExecuteReader(CommandBehavior.CloseConnection);}…解决方案构建16理论实践一体化网上购书信息管理系统母版页效果图:图1-34母版页组成1.5.7设计解决方案中网站Web的母版页活动内容解决方案构建16理论实践一体化网上购书

信息管理系统1.5.8MasterPage.master.cs代码实现母版页中有登录框,和登录注销按钮,以及用来绑定图书类别信息的Repeater控件,所以我们首要介绍.NET身份验证以及Repeater控件应用的相关知识。1.相关知识一:Forms身份验证凭据FormsAuthenticat

ion类:为Web应用程序管理Forms身份验证服务,用于在登录时验证用户的Forms身份验证凭据,可以存储在外部数据源中,也可以存储在应用程序的配置文件中。可通过将authentication配置元素的mode属性设置为Forms来启用Forms身份验证。通过使用a

uthorization配置元素可要求所有对应用程序的请求均需包含有效的用户身份验证票证,从而拒绝任何未知用户的请求。解决方案构建16理论实践一体化网上购书信息管理系统本项目在web.config文件中将authentication配置元素的mode属性设置为Forms来启用

Forms身份验证的代码:<authenticationmode="Forms"><formsname="BlueStarBookShop"loginUrl="Default.aspx"protecti

on="None"/></authentication>在本项目中设身份验证的默认页面为首页"Default.aspx",由于网站前台页面允许匿名用户浏览图书信息,所以将保护protection属性设为"None",对需要身

份验证后才能访问的页面如购物车订单页面、修改会员个人资料页面等,采用增加location配置节来实现要求用户请求需包含有效的用户身份验证票证,从而拒绝任何未知用户的请求,在Web.config文件的<configuration></configura

tion>配置节中增加如下代码:<locationpath="ShoppingCart.aspx"><system.web><authorization><denyusers="?"/>//拒绝任何未知用户的请求</auth

orization></system.web></location>解决方案构建16理论实践一体化网上购书信息管理系统2.相关知识二:ASP.NET成员资格.NET为您提供了一种验证和存储用户凭据的内置方法--ASP.NET成员资格,

它可帮助您管理网站中的用户身份验证。ASP.NET成员资格支持下列功能:创建新用户和密码。将成员资格信息(用户名、密码和支持数据)存储在MicrosoftSQLServer、ActiveDirectory或其他数据存储区。对访问站点的用户进行身份验证。可以以编程方式验证用户,也可以使用A

SP.NET登录控件创建一个只需很少代码或无需代码的完整身份验证系统。解决方案构建16理论实践一体化网上购书信息管理系统管理密码,包括创建、更改和重置密码。根据您选择的成员资格选项不同,成员资格系统还可以提供一个使用用

户提供的问题和答案的自动密码重置系统。公开经过身份验证的用户的唯一标识,您可以在您自己的应用程序中使用该标识,也可以将该标识与ASP.NET个性化设置和角色管理(授权)系统集成。指定自定义成员资格提供程序,这使您可以改为用自

己的代码管理成员资格及在自定义数据存储区中维护成员资格数据解决方案构建16理论实践一体化网上购书信息管理系统FormsAuthentication类与Membership类在MasterPage.master.cs中的应用//用户登录prot

ectedvoidibtnLogin_Click(objectsender,ImageClickEventArgse){if(Membership.ValidateUser(txtUserName.Text,txtPassword.Text)){FormsAuthentication.Redir

ectFromLoginPage(txtUserName.Text,false);}}//登录注销protectedvoidlogout_Click(objectsender,EventArgse){FormsAuthentication.SignOut();Response.

Redirect("Default.aspx");}解决方案构建16理论实践一体化网上购书信息管理系统成员资格信息(用户名、密码和支持数据)存储位置.NETFramework默认的成员资格提供程序为AspNetSqlProvider,它将用户信息存

储在.NET自带的SQL数据库—ASPNETDB.MDF中,如果我们要把用户信息存储在我们自定义的SQL数据库中,则需要在web.config文件<configuration></configuration>配

置节中进行如下配置:<membershipdefaultProvider="SqlProvider"userIsOnlineTimeWindow="10"><providers><removename="AspNetSqlProvider

"/><addname="SqlProvider"type="System.Web.Security.SqlMembershipProvider"connectionStringName="CVITBOOKSHOPConnectionString"enable

PasswordRetrieval="false"enablePasswordReset="true"requiresQuestionAndAnswer="true"passwordFormat="Hashed"app

licationName="/"/></providers></membership>解决方案构建16理论实践一体化网上购书信息管理系统除此之外,还要运行ASP.NETSQLServer安装向导-aspnet_regsql.exe,该工具所在

的路径为c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\,在我们自定义的数据库中创建成员资格的数据表和存储过程等。图1-37ASP.NETSQLServer安装向导解决方案构

建16理论实践一体化网上购书信息管理系统1.5.9为网站Web设置主题主题是属性设置的集合可以用来定义页面和控件的外观,您可以定义单个Web应用程序的主题,也可以定义供Web服务器上的所有应用程序使用的全局主题。定义主题之后,可以使用@Page指令的Theme或Styl

eSheetTheme属性将该主题放置在个别页上;或者通过设置应用程序配置文件中的pages元素(ASP.NET设置架构)元素,将其应用于应用程序中的所有页。如果在Machine.config文件中定义了pages元素(ASP.NET设置架构)元素,主题将应用于服

务器上的Web应用程序中的所有页。解决方案构建16理论实践一体化网上购书信息管理系统主题由外观、级联样式表(CSS)、图像和其他资源元素组成,一个主题至少要包含外观文件。外观文件的文件扩展名为.skin,它用来定义页面中服务器控件的外观。级联样式表扩展名为.css,CSS是Casc

adingStyleSheets(层叠样式表)的简称。在标准网页设计中用来负责网页内容(XHTML)的表现.主题还可以包含图形和其他资源,比如脚本文件或声音文件。图1-39外观文件及样式文件解决方案构建16理论实践一体化

网上购书信息管理系统SkinFile.skin文件代码示例:<asp:HyperLinkrunat="server"Font-Size="Small"Font-Underline="false"></a

sp:HyperLink><asp:Labelrunat="server"Text=""Font-Size="Small"></asp:Label>在上面的外观文件中,为HyperLink控件和Label控件设置了外观,这种设置属于“默认外观”,也就是说这两种控件的外观适用

于应用本主题的页面上的所有的HyperLink控件和Label控件。解决方案构建16理论实践一体化网上购书信息管理系统如果要想为应用程序中同一类型的控件的不同实例应用不同的外观,就要设置“已命名外观”,要在外观文件中为设置的控件指定“SkinID”属性:<asp:HyperLin

kSkinID=”hlDiff”runat="server"Font-Size="Small"Font-Underline="false"></asp:HyperLink><asp:LabelSkinID=”lblDiff”runat="server"Text=""

Font-Size="Small"></asp:Label>已命名外观不会自动适用于同类型的所有控件,而是在应用主题的页面控件上通过设置该控件的SkinID属性(如SkinID=”hlDiff”)将已命名外观应用于控件。解决方案构建16理论实践一体化网

上购书信息管理系统应用主题本项目中所有的网页均应用同一主题,这需要如下设置web.config文件中的pages配置节。<pagesstyleSheetTheme="mytheme"></pages>如果只是在单个页面应用主题,那需要在该页的页面头部的<%@Page%>中做如下设

置<%@PageLanguage="C#"…(略)StylesheetTheme=”mytheme”%>解决方案构建16理论实践一体化网上购书信息管理系统1.5.10创建站点地图在解决方案资源管理器中右击网站Web,选择“添加新项”,在弹出的对话框的模板

窗格中选择“站点地图”。代码清单如下:<?xmlversion="1.0"encoding="utf-8"?><siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"><siteMapNodeurl="~/Defaul

t.aspx"title="首页"description=""><siteMapNodeurl="~/Search.aspx"title="图书检索"description=""/><siteMapNo

deurl="~/ShoppingCart.aspx"title="购物车"description=""/><siteMapNodeurl="~/UserProfiles.aspx"title="修改个人资料"description=""/><siteMapN

odeurl="~/MyOrder.aspx"title="我的订单"description=""/><siteMapNodeurl="~/Register.aspx"title="会员注册"description=""/><s

iteMapNodeurl="~/BookBrief.aspx"title="图书概要"description=""><siteMapNodeurl="~/BookItem.aspx"title="图书详情"descriptio

n=""/></siteMapNode>解决方案构建16理论实践一体化网上购书信息管理系统1.6前台图书信息浏览、检索实现学习目标:❑母版页应用、Web用户控件的定义与应用❑应用程序如何调用存储过程❑如何动态生成SQL语句,完

成复合条件查询❑建议学时:24学时图书信息浏览检索实现24理论实践一体化网上购书信息管理系统1.6.1任务名称:前台图书信息浏览、检索实现1.6.2任务描述此模块使用网站的访问者可以匿名浏览图书概要信息、图书详情信

息,或者进行图书检索。前台图书信息浏览、检索实现包括以下几个方面:1.首页对图书信息分三个栏目进行显示,这三个栏目分别是:新书上架、热点推荐、经典书目2.可以按照栏目或图书类别查看图书概要信息3.查看图书详情信息4.设置复合条件完成图书

检索图书信息浏览检索实现24理论实践一体化网上购书信息管理系统1.6.3任务分析(一)首页对图书信息分新书上架、热点推荐、经典书目三个栏目进行显示,按照图书的添加时间排序,分别显示前四位图书,按三个栏目显示图书的差别只是栏目条件不同,这也

就意味着对不同栏目的前四位图书的显示要重复三次,我们是将绝大部分雷同的代码复制粘贴三次,还是定义一个用户控件调用三次,显然应该选择后者。(二)可以按照栏目或图书类别查看图书概要信息,如前面所述按三个栏目显示图书的差别只是栏目条件不同,同理,按图书类别显示图书只是类别编号不同。图书信息浏览检索实现

24理论实践一体化网上购书信息管理系统在完成任务时数据源我们使用SqlDataSoruce控件,如果我们将不同的查询条件定义成参数,使用时传不同的值过去,就会非常灵活的实现按照栏目或图书类别查看图书概要信息,实际上我们是通过定义

一个存储过程来帮助实现该功能。(三)复合条件查询的关键是按照用户选定的条件动态生成SQL语句,我们在公共类类库中编写SqlStringConstructor类来完成对SQL语句的构造。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统1.6.4首页分栏目显示图书信息1.效果图图1

-40首页图书信息浏览检索实现24理论实践一体化网上购书信息管理系统控件类型控件名称用途DlBook.ascxDlBook显示“新书上架”栏目信息DlHot显示“热点推荐”栏目信息DlClassic显示“经典书目”栏目信息SqlDataSourceSqldsBook“新书上架”数据源Sq

ldsHot“热点推荐”数据源SqldsClassic“经典书目”数据源表1-32Default.aspx页面中主要控件及其用途2.Default.aspx页面中主要控件及其用途图书信息浏览检索实现24理论实践一体化网上购书信息管理系统3.相关知识:使用Web用户控

件显示栏目图书信息如任务分析中所述,我们要把对栏目前四位图书的显示通过定义一个用户控件来实现,然后在首页面中三次调用该控件。用户控件是能够在其中放置标记和Web服务器控件的容器。然后,可以将用户控件作为一个单元对待,

为其定义属性和方法。ASP.NETWeb用户控件与完整的ASP.NET网页(.aspx文件)相似,同时具有用户界面页和代码。可以采取与创建ASP.NET页相似的方式创建用户控件,然后向其中添加所需的标记和子控件。用户控件

可以像页面一样包含对其内容进行操作(包括执行数据绑定等任务)的代码。用户控件与ASP.NET网页有以下区别:用户控件的文件扩展名为.ascx。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统用户控件中没有@Page指令,而是包含@Control

指令,该指令对配置及其他属性进行定义。用户控件不能作为独立文件运行。而必须像处理任何控件一样,将它们添加到ASP.NET页中。用户控件中没有html、body或form元素。这些元素必须位于宿主页中。4.创建DlBook.ascx我们将创建用户控件DlBo

ok.ascx,并在其中放置绑定数据源的控件DataList,该DataList控件用于显示栏目前四位的图书:在解决方案资源管理器中右击网站Web,选择“新建文件夹”项,将文件夹命名为UserCtrl。右击文件夹Use

rCtrl,选择“添加新项”菜单项,在弹出的对话框的模板窗格选择“Web用户控件”,将控件命名为“DlBook.ascx”,点“确定”按钮创建该控件。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统

5.在首页中应用母版页及用户控件(1)应用母版页:在网站Web中添加新项,模板类型选择Web窗体,命名为Default.aspx,勾选“选择母版页”复选框,在弹出的“选择母版页”对话框中选择MasterPage.

master。点击“确定”按钮。图1-41勾选“选择母版页”图1-42选择母版页图书信息浏览检索实现24理论实践一体化网上购书信息管理系统(2)应用Web用户控件:切换到首页的设计视图,在解决方案资源管理器里将UserCtrl文件中的DlBook.asc

x控件拖放到首页的相应位置,在本实例中应拖放三次,用来显示三个栏目的前四位图书信息。拖放完成后将在页面自动生成<%@Registersrc="UserCtrl/DlBook.ascx"tagname="DlBoo

k"tagprefix="uc1"%>及<uc1:DlBookID="DlBook"runat="server"/>等,如果不用拖放的方法,也可以直接在源视图中将上面生成的语句添加到HTML代码中,以完成Web用户控件的调用。(

3)从工具箱拖放三个SqlDataSource控件做为数据源备用。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统6.Default.aspx.cs代码实现protectedvoidPage_Load(objectsender,EventArgse

){if(!IsPostBack){DlBook.Sqlds=SqldsBook;//绑定数据源为新书上架栏目信息DlHot.Sqlds=SqldsHot;//绑定数据源为热点推荐栏目信息DlClassic.Sqlds=Sq

ldsClassic;//绑定数据源为经典书目信息//Default.aspx是默认的登录页,当匿名用户访问需要身份验证的网页时,会自动跳转到该页登录,使用以下代码片断显示要求登录的提示信息if(Request.Url.AbsoluteUri.ToSt

ring().Contains("ReturnUrl")&&Request.Url.AbsoluteUri.ToString().Contains("admin"))this.ClientScript.RegisterStartupScript(this.GetT

ype(),"","<script>window.alert('您尚未以管理员身份登陆,请登陆后进行此操作!')</script>");elseif(Request.Url.AbsoluteUri.ToString().Contains("ReturnUrl")){this.

ClientScript.RegisterStartupScript(this.GetType(),"","<script>window.alert('您尚未以会员身份登陆,请登陆后进行此操作!')</script>");}}}图书信息浏览

检索实现24理论实践一体化网上购书信息管理系统1.6.5按栏目或者图书类别显示图书概要信息1.图书概要页BookBreif效果图图1-43图书概要页BookBrief.aspx图书信息浏览检索实现24理论实践一体化网上购书信

息管理系统2.BookBrief.aspx页面中各个控件的属性设置及其用途控件类型控件名称主要属性设置用途PS.ascxLocation站点导航GridViewgvBriefDataSourceID="sql

dsBrief"显示图书概要信息LabellblBriefText属性设置为“”显示记录条数SqlDataSourcesqldsBriefSelectCommandType="StoredProcedure"执行存储过程数据源表

1-33:BookBrief.aspx页面中各个控件的属性设置及其用途图书信息浏览检索实现24理论实践一体化网上购书信息管理系统3.相关知识:SqlDataSource数据源控件调用数据库存储过程(1)首先在数据库中创建存储过程GetBookBriefByCID以供应用程序调用:CREA

TEPROCEDURE[dbo].[GetBookBriefByCID](@CategoryIdsmallint,@optsmallint)ASif@CategoryId=-1and@opt=-1select*fromBookBriefelseif@CategoryI

d=-1and@opt=1selecttop100*fromBookBrieforderbyAddTimedescelseif@CategoryId=-1and@opt=2select*fromBookBriefwhereIsHeadLine='true'order

byAddTimedescelseif@CategoryId=-1and@opt=3select*fromBookBriefwhereIsClassic='true'orderbyAddTimedescelsese

lect*fromBookBriefwhereCategoryId=@CategoryId图书信息浏览检索实现24理论实践一体化网上购书信息管理系统(2)SqlDataSource控件设置:当在首页上点击栏目“更多”的链接时,会向BookBrief.aspx

页面传递参数opt,同理当点击图书某类别的链接时,会向BookBrief.aspx页面传递参数CategoryId,因此我们设置SqlDataSource控件时要做如下选择:图1-44选择“存储过程”图书信息浏览检索实现24理论实践一体化网

上购书信息管理系统图1-45设置参数源5.BookBrief.aspx.cs代码实现publicpartialclassBookBrief:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventAr

gse){if(!IsPostBack){lblBrief.Text="当前共有"+((DataView)this.sqldsBrief.Select(DataSourceSelectArguments.Empty)).Count.ToString()+

"条记录";}}}图书信息浏览检索实现24理论实践一体化网上购书信息管理系统1.6.6图书详情信息查看1.图书详情页BookItem.aspx效果图图1-46图书详情页BookItem.aspx图书信息浏览检索实现24理论实践一体化网上购书信息管理系统2.BookIt

em.aspx页面中各个控件的属性设置及其用途控件类型控件名称主要属性设置用途PS.ascxLocation站点导航DetailsViewdvItemDataSourceID="sqldsBrief"显示图书概要信息SqlDataSources

qdsItemSelectCommandType="StoredProcedure"执行存储过程数据源表1-34BookItem.aspx页面中各个控件的属性设置及其用途图书信息浏览检索实现24理论实践一体化网上购书信息管理系统3.相关知识:使用DetailsView控件显示数据源的单个

记录DetailsView控件显示数据源的单个记录,其中每个数据行表示记录中的一个字段。使用DetailsView控件,您可以从它的关联数据源中一次显示、编辑、插入或删除一条记录。默认情况下,DetailsView控件将记录的每个字段显

示在它自己的一行内。DetailsView控件提供了以下用于绑定到数据的选项:使用DataSourceID属性进行数据绑定,此选项使您能够将DetailsView控件绑定到数据源控件。建议使用此选项,因为它允许DetailsView控件利用数据源控件的功能并提供了内置的更新和分页功

能。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统publicpartialclassBookItem:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArg

se){//为转到购物车页面防刷新设置Session对象初始值Session["flag"]="";}}4.BookItem.aspx.cs代码实现使用DataSource属性进行数据绑定,此选项使您能够绑定到包括ADO.NET数据集和数据读取器在

内的各种对象。此方法需要您为任何附加功能(如更新和分页等)编写代码。当使用DataSourceID属性绑定到数据源时,DetailsView控件支持双向数据绑定。除可以使该控件显示数据之外,还可以使它自动

支持对绑定数据的插入、更新和删除操作。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统在解决方案资源管理器网站Web中创建图书检索页Search.aspx,勾选应用母版页。1.效果图图1-51图书检索页Search.aspx1.6.7复合条件图书检索图书信息浏览检索实现24理论实践

一体化网上购书信息管理系统2.在Common类库中创建公共类SqlStringConstructor类构造SQL语句3.在DAL类库中创建图书详情数据访问类ItemAccess类publicclassItemAccess{///<summary>///图书检索

方法///</summary>///<paramname="sql">SQL语句</param>///<returns>DataSet</returns>publicDataSetSearch(stringsql){DataSetds=newDataSet(

);//创建数据集对象SqlDataAdapterda=null;//创建数据适配器对象DataBasedb=newDataBase();//创建数据库连接类实例da=db.CreateDataAdapter(C

ommandType.Text,sql,null,1);//获得用于查询的数据适配器对象da.Fill(ds);//将查询结果填充到数据集中returnds;//返回数据集}}图书信息浏览检索实现24理论实践一体化网上购书信息管理系统4.在BLL类库中创建图书详情业务逻辑类ItemM

anager类添加对DAL类库的引用,在BLL类库中创建图书详情业务逻辑类ItemManager类namespaceBookShop.BLL{[Serializable]publicclassItemManager{//私有成员图书详情

数据访问类对象privatestaticreadonlyItemAccessdal=newItemAccess();//图书检索方法publicDataSetSearch(stringsql){returndal.Search(sql);/

/调用数据访问类的图书检索方法}}}编写代码后,在解决方案资源管理器中右击BLL,选择“生成”菜单项。图书信息浏览检索实现24理论实践一体化网上购书信息管理系统5.在网站Web中创建图书检索页Search.aspx控件类型控件名称主要属性设置用途P

S.ascxLocation站点导航CheckBoxcbTitleText属性设置为“按书名查找记录”设置查询关键字cbAuthorText属性设置为“按作者查找记录”设置查询关键字cbPressText属性设置为“按出版社查找记录”设置查询关键字TextBoxtxtTitl

eText属性设置为“”设置关键字的值txtAuthorText属性设置为“”设置关键字的值txtPressText属性设置为“”设置关键字的值ButtonbtnOkText属性设置为“确定”执行查询btnResetText属性设置为“重置条件”重置条件Gr

idViewgvSearchAllowPaging="True"PageSize="4"显示符合条件的图书信息LabellblShowText属性设置为“”显示符合条件的记录条数表1-35Search.aspx页面中各个控件的属性设置及其用

途图书信息浏览检索实现24理论实践一体化网上购书信息管理系统Search.aspx.cs代码实现publicpartialclassSearch:System.Web.UI.Page{protectedvoidPage_Load(objectsender,Ev

entArgse){if(!IsPostBack){stringgsql="";//该变量的值为构造的SQL语句if(ViewState["gsql"]!=null){gsql=ViewState["gsql"].ToString();BindGrid(g

sql);}}}//点击确定按钮执行查询protectedvoidbtnOk_Click(objectsender,EventArgse){gvSearch.Visible=true;stringgsql="select*fr

omItem";Hashtableht=newHashtable();//创建哈希表对象,保存查询条件的关键字与值图书信息浏览检索实现24理论实践一体化网上购书信息管理系统if(cbTitle.Checked)//如果按书名查询被勾选ht.Add("ItemName",txtTitle.

Text.Trim());if(cbAuthor.Checked)//如果按作者查询被勾选ht.Add("BookAuthor",txtAuthor.Text.Trim());if(cbPress.Checked)//如果按出版社查询被勾选{ht.A

dd("Publisher",txtPress.Text.Trim());}//构造SQL语句gsql=gsql+SqlStringConstructor.GetConditionClause(ht)+"orderbyPu

blishDateDesc";ViewState["gsql"]=gsql;BindGrid(gsql);}//点击重置条件按钮,将查询条件设置为默认状态protectedvoidbtnReset_Click(objectsender,EventArgse){cbTitle.Checked=f

alse;cbTitle_CheckedChanged(cbTitle,e);cbAuthor.Checked=false;cbAuthor_CheckedChanged(cbAuthor,e);cbPress.Checked=false;cbPress_Ch

eckedChanged(cbPress,e);gvSearch.Visible=false;lblShow.Text="";}图书信息浏览检索实现24理论实践一体化网上购书信息管理系统1.7前台用户的注册、修改个人资料实现学习目标:❑CreateUse

rWizard控件的应用❑.Net角色权限管理❑MemberShip类的应用❑建议学时:8学时用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统1.7.1任务名称:前台用户的注册、修改个人

资料实现1.7.2任务描述创建或管理角色,管理角色的访问权限,注册为会员,并能够修改个人资料1.7.3任务分析本应用程序的使用者角色为后台管理员及会员,首先要在ASP.NET配置工具中创建角色,并在web.config文件中进行配置

存储到自定义的SQL数据库中,不同的角色有不同的访问权限,会员不能访问后台管理页面,要在ASP.NET配置工具进行角色权限设置。注册的会员还可以修改个人资料,应用MembershipUser类及Membership

类实现。用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统1.7.4创建或管理角色及设置角色的访问权限(1)打开ASP.net网站管理工具,选择“安全”选项卡,选择“创建或管理角色”链接(2)创建管理员角色admin与会员角色norm

al(3)管理角色权限,在“安全”选项卡下选择“创建访问规则”链接(4)添加访问规则,选择“Web”根目录,在角色下拉框中选择admin,权限设置为“允许”(5)同上添加访问规则,选择“admin”目录(包含后台管理页面),分别为会员角色normal及匿名用户设置“拒绝”权限用户注册

、修改个人资料实现8理论实践一体化网上购书信息管理系统在网站Web中新建Web窗体,命名为Register.aspx,从工具箱中拖放CreateUserWizard控件到该页面,并展开设置面板自动套用格式“专业型”。图1-59会员注册页Register.aspx1.7.5会员注册用户注册、修改个

人资料实现8理论实践一体化网上购书信息管理系统1.Register.aspx.cs代码实现:protectedvoidCreateUserWizard1_ContinueButtonClick(objectsender,EventArgse){CreateUserWizard1.Acti

veStepIndex=0;CreateUserWizard1.UserName="";CreateUserWizard1.Email="";CreateUserWizard1.Question="";}protectedvoidCreateUserWizard1_Creatin

gUser(objectsender,LoginCancelEventArgse){try{//将创建的用户加入到普通会员normal角色中Roles.AddUserToRole(CreateUserWizard1.UserName,"normal");}

catch(Exceptionex){//显示错误信息lblMeg.Text=ex.Message;lblMeg.ForeColor=Color.Red;lblMeg.Font.Size=8;//注册取消e

.Cancel=true;}}用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统2.web.config配置在web.config文件中同membership配置节一样对角色管理roleManager做如下配置,将把用户角色信息保存到用户自定义的SQL数据库中。<rol

eManagerdefaultProvider="SqlProvider"enabled="true"cacheRolesInCookie="true"cookieName=".ASPROLES"cookieTim

eout="20"cookiePath="/"cookieRequireSSL="false"cookieSlidingExpiration="true"cookieProtection="All"><providers><addna

me="SqlProvider"type="System.Web.Security.SqlRoleProvider"connectionStringName="CVITBOOKSHOPConnectionSt

ring"applicationName="/"/></providers></roleManager>用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统1.7.6修改会员个人资料1.效果图图1-60修改个人资料页UsersProfile.aspx用户

注册、修改个人资料实现8理论实践一体化网上购书信息管理系统2.UserProfiles.aspx页面中各个控件的属性设置及其用途控件类型控件名称主要属性设置用途PS.ascxLocation站点导航TextBoxtxtF

PwdText属性设置为“”输入原密码txtNPwdText属性设置为“”输入新密码txtCPwdText属性设置为“”确认新密码ButtonbtnUpdateText属性设置为“修改”执行修改btnResetText属性设置为“重置”重置LabellblTitleText属性设置为“”显示说明信

息CompareValidatorcvPwdErrorMessage属性设置为"二次密码输入不一致"ControlToCompare属性值"txtNPwd"ControlToValidate属性值"txtCPwd"比较验证Valid

ationSummaryValidSummaryShowMessageBox="True"ShowSummary="False"显示错误信息提要表1-36UserProfiles.aspx页面中各个控件的属性设置及其用途用户注册、修改个人资料实现8理论实践一体化网

上购书信息管理系统3.UserProfiles.aspx.cs代码实现publicpartialclassSheZhi:System.Web.UI.Page{stringname="";MembershipUsermu

=null;protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){//将母版页验证控件关闭RequiredFieldValidatorrv=(RequiredFieldValid

ator)(this.Master.FindControl("rfvName"));RequiredFieldValidatorrv2=(RequiredFieldValidator)(this.Master.Find

Control("rfvPwd"));rv.Enabled=false;rv2.Enabled=false;//获取当前通过身份验证的用户标识name=HttpContext.Current.User.Identity.Name;ViewState["name"]=name

;lblTitle.Text="修改用户["+name+"]的个人信息";lblTitle.Font.Size=10;lblTitle.ForeColor=Color.Red;lblTitle.Font.Name="新宋体";用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系

统//获取用户标识为当前通过验证的用户标识的MembershipUser对象mu=Membership.GetUser(name);ViewState["mu"]=mu;txtEmail.Text=mu.Email;}Response.

CacheControl="no-cache";}//修改个人资料protectedvoidbtnUpdate_Click(objectsender,EventArgse){name=ViewState["name"];mu=ViewState["mu"];tr

y{//验证原密码正确if(Membership.ValidateUser(name,txtFPwd.Text.Trim())){//更改用户密码mu.ChangePassword(txtFPwd.Text.Trim(),txtNPw

d.Text.Trim());//设置电邮地址为新值mu.Email=txtEmail.Text.Trim();用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统else{this.ClientScript.RegisterStartupScript(this.G

etType(),"","<Script>window.alert('您输入的原密码错误!请重新输入')</Script>");}}catch(Exceptiond){Response.Write(d.Message);}}//重置protectedvoidbtnR

eset_Click(objectsender,EventArgse){txtEmail.Text="";}}//更新用户个人资料Membership.UpdateUser(mu);this.ClientScript.RegisterStartupSc

ript(this.GetType(),"","<Script>window.alert('修改成功')</Script>");}用户注册、修改个人资料实现8理论实践一体化网上购书信息管理系统1.8前台购物车管理学习目

标:❑购物车管理功能模块的技术分析和实现方法❑.netTransaction-SQL事务处理机制❑泛型集合类Dictionary应用方法❑如何使用Profile实现个性化配置❑建议学时:8学时前台购物车管理24理论实践一体化网上购书信息管理系统1

.8.1任务名称:前台购物车管理1.8.2任务描述以网上购书商务网站会员资格登录的用户在浏览某种图书详细信息的过程中,如果想要购买该种图书,可以单击图书详情下方的“放入购物车”链接,即可将该图书的信息添加到购物车中,同时,用户可以通过单击导航栏中的“我的购物车

”进入该用户自己的购物车管理界面,从而对购物车中的图书信息进行查看、编辑、移除等操作,只有当用户进行提交生成订单的操作,用户购物车中的图书信息才会被清空。前台购物车管理功能的实现是网上购书商务网站的关键,因为购物车中的图书信息是用户的个性化选择的结果,同时又是生成订单与结算支付的来源与依据。前台购

物车管理24理论实践一体化网上购书信息管理系统前台购物车管理包括的主要功能有:1.放入图书到购物车2.查看购物车中的图书信息3.修改购物车中的图书数量,并重新计算总价格4.移除购物车中的图书5.清空购物车中的全部图书1.8.3任务分析如前面章节所

述,本系统架构采用标准的三层架构,前台购物车管理功能的内部设计也主要为数据访问层的购物车数据访问类、业务逻辑层的购物车业务逻辑类及表示层的购物车管理页,而这三层又都可以调用购物车实体类。在实现前台购物车管理功能时要解决好三个主要问题:前台购物车管理24理论实践一体化网上购书信

息管理系统一、如何实现每个用户拥有自己的购物车?每个用户拥有自己的个性化的购物车,并且只要用户不提交生成订单,购物车中的数据就要为用户一直保留,依据这个业务特点,在ASP.Net3.5架构下,可以采用

个性化配置(profile)来实现,Profile可以自动在多个Web应用程序的访问之间存储用户信息。一个UserProfile中可以存储各种类型的信息,这些信息既可以是简单的string和integer类型,也可以是复杂的自定义类

型。例如,你可以存储用户的姓、购物车、用户属性或网站使用情况统计等。前台购物车管理24理论实践一体化网上购书信息管理系统Profile对象与Session对象十分相似,但是功能更强。与Session相似的地方在于,Profile也是相对于一个特定的用户的,

也就是说,每个Web应用程序的用户都有他们自己的profile对象。与Session不同的是,Profile对象是持久对象。如果你向Session中添加一个项,在你离开网站时,该项就会消失。而Profile

则完全不同,它为每个用户存储配置信息是强类型,能够长期保存,并且它还支持匿名用户。二、如何确定购物车中的图书存放的数据结构?向购物车中放入图书的实质是增加一个(图书书号,图书信息实例)的(键,值)对,实现该结构则前台购物车管理24理论实践一体化网上

购书信息管理系统最好采用泛型集合类Dictionary<TKey,TValue>,所以我们使用Dictionary集合类来存放用户的购物车中的图书信息。如何保持购物车中的图书信息与数据库中存放购物车图书信息的数据表的一致性?用户可以通过单击导

航栏中的“我的购物车”进入该用户自己的购物车管理界面,从而对购物车中的图书信息进行查看、编辑、移除等操作,而当用户对前台购物车中的图书信息做了更改,则对数据库中存放购物车图书信息的数据表也要做相应的改变,这时需要将数据表中的

原有数据删除,然后插入最新的购物车中的图书信息,对这一数据表所做的这两项操作一定要符合事务机制。前台购物车管理24理论实践一体化网上购书信息管理系统1.8.4Model层:购物车实体类CartInfo类实现程序开发步骤如下:(1)在Model类库中添加新项,选择类,取名为CartInfo,定义

所属命名空间为namespaceBookShop.Model,并标记为可序列化[Serializable],访问修饰符设为public。(2)主要程序代码:购物车实体类包含4个内部变量,分别对应数据库中购物车Cart表中除UserId之外的4个放入购物车中的图书信息字段。

1.8.5DAL层:购物车数据访问类CartAccess类实现在DAL类库中添加新类购物车数据访问类CartAccess,所属命名空间为namespaceBookShop.DAL,访问权限为public该类的功能是对购物车Cart表进行数据访问,它包含前台购物车管理24理论实践一

体化网上购书信息管理系统两个主要的方法,使用GetCartItems方法能够通过登录的用户名称获得该用户保存在Cart表中的所要购买的图书信息,使用SetCartItems方法则用来设置Cart表中的数据,如果用户在前台清空了购

物车,它就会删除掉该用户在Cart表中的记录,如果用户改变了购物车中的图书购买信息,它则通过删除掉该用户在Cart表中的原有记录,然后再添加更新后的图书信息来保持与用户在购物车管理页所作操作的一致性。1.相关知识:事务购物车数据访问类的SetCartItems方法在设置Cart

数据表时要先后执行两个操作,首先是删除掉该用户原有的记录,然后添加最新的购物车中现存的图书记录,而这两个操作必须保持一致性,也就是说或者两个操作都完成,或者两个都不做,这就要用到事务。前台购物车管理24理论实践一体化网上购书信息管理系统(1)创建SqlTransaction对象

SqlTransaction类没有公共构造函数,我们不能用SqlTransactionmyTran=newSqlTransaction();来新建一个SqlTrancaction类型的变量。而是需要使用SqlConnection类的Beg

inTranscation()方法:SqlTransactiontrans;trans=myConn.BeginTransaction();//myConn为SqlConnection类对象SqlTransaction类型的对象。在调

用BeginTransaction()方法以后,所有基于该数据连接对象的SQL语句执行动作都将被认为是事务trans的一部分。同时,你也可以在该方法的参数中指定事务隔离级别和事务名称,如:前台购物车管理24理论实践一体化网上购书信息管理系统SqlTransactiontran

s;trans=myConn.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");(2)事务的提交方式:使用(1)里创建

的trans对象,则为trans.Commit();该语句执行后,事务针对数据库所作的一系列操作将生效,并且为数据库事务的持久性机制所保持--即使系统在这以后发生致命错误,该事务对数据库的影响也不会消失。使用Try/Catch进

行异常处理,捕获异常则令事务发生回滚。(3)事务的回滚:使用(1)里创建的trans对象,则为trans.RollBack();该语句执行后,将撤销trans这个事务启动之后对数据表中的数据所作的所有修改。前台购物车管理24理论实践一体化网上购书信息管理系统2.在CartAccess类中使用事务的

准备工作在CVITBOOKSHOP数据库中分别创建两个存储过程:存储过程DeleteCartItems实现依据用户名称删除Cart表中该用户的购物车图书记录CREATEPROCEDURE[dbo].[Dele

teCartItems](@UserNamevarchar(256))ASDeletefromCartwhereUserName=@UserName存储过程InsertCart实现向Cart表中添加新的购物车图书记录CreatePROCEDURE[dbo].[Inse

rtCartItems](@UserNamevarchar(256),@BookIdvarchar(10),@ItemNamevarchar(80),@Pricedecimal(10,2),@Quantityint)ASi

nsertintoCartvalues(@UserName,@BookId,@ItemName,@Price,@Quantity)前台购物车管理24理论实践一体化网上购书信息管理系统在自定义数据库连接类DataBase中添加GetConnection()方法获得一打开的

SqlConnection对象。(3)编写Preparecommand方法完成对SqlCommand对象Transaction属性的设置,将SqlCommand对象与事务关联起来,使得SqlCommand对象对数据库所做的操作成为事务初始化SqlCommand对象。编写ExcuteNo

nQuery方法,传入事务对象参数。3.在CartAccess类的SetCartItems方法中使用事务4.购物车数据访问类CartAccess中获得用户购物车中图书信息的GetCartItems方法实现前台购物车管理24理论实践

一体化网上购书信息管理系统程序开发步骤:(1)在CVITBOOKSHOP数据库中创建GetCartItems存储过程:CREATEPROCEDURE[dbo].[GetCartItems]@Usernamevarchar

(256)ASSELECTdbo.Cart.BookId,dbo.Cart.ItemName,dbo.Cart.Price,dbo.Cart.QuantityFROMCartwhereUsername=@Username(2)在

DAL类库中的CartAccess类中编写如下代码:namespaceBookShop.DAL{publicclassCartAccess{///<summary>///获取Cart表中购物车图书记录///</summary>///<paramna

me="userid">用户名称</param>前台购物车管理24理论实践一体化网上购书信息管理系统publicIList<CartInfo>GetCartItems(stringusername){//定义获

取用户购物车信息存储过程所需要的参数SqlParameter[]sp={newSqlParameter("@UserName",SqlDbType.VarChar)};//给参数赋值sp[0].Value=username;DataBasedb=newDataBase

();//执行存储过程SqlDataReadersdr=db.ExcuteDataReader(CommandType.StoredProcedure,"GetCartItems",sp);IList<CartInfo>car

tItems=newList<CartInfo>();while(sdr.Read()){//用带参构造方法构造购物车实体类对象CartInfocartItem=newCartInfo(sdr.GetStri

ng(0),sdr.GetString(1),sdr.GetDecimal(2),sdr.GetInt32(3));//添加到Ilist<CartInfo>中cartItems.Add(cartItem);}前台购物车管理24理

论实践一体化网上购书信息管理系统sdr.Close();//返回查询信息returncartItems;}publicvoidSetCartItems(stringuserid,ICollection<CartInfo>cartItems){…..代码略,详见在SetCartItems方法

中使用事务}}}1.8.6BLL层:购物车业务逻辑类CartManager类实现1.相关技能、知识:Dictionary<TKey,TValue>集合类该泛型集合类所属命名空间为System.Collections.Generic,使用它可以提

供更高的类型安全性,获得更高的性能,能够避免非泛型集合重复的装箱和拆箱操作。前台购物车管理24理论实践一体化网上购书信息管理系统2.Dictionary<TKey,TValue>集合类在购物车业务逻辑类Car

tManager中的应用//定义Dictionary<string,CartInfo>对象cartItems存放购物车图书信息privateDictionary<string,CartInfo>cartItems=newDictionary<st

ring,CartInfo>();。。。//foreach包含在Dictionary中的值的集合的CartInfo对象。foreach(CartInfocartItemincartItems.Values){total=total+cartItem.Price*cart

Item.Quantity;}。。。//获取包含在Dictionary中的键/值对的数目returncartItems.Count;。。。//获取包含Dictionary中的值的集合returncartItems.Value

s;。。。//将指定的键和值添加到Dictionary中cartItems.Add(bookId,newcartitem);。。。前台购物车管理24理论实践一体化网上购书信息管理系统1.8.7购物车表示层代码实现控件类型控件名称主要属性设置用途LabellblShowText

属性设置为“您购物车中的商品”显示说明文字lblTotalText属性设置为“0.00Y”显示购物车图书总价格RepeaterrepShoppingCart显示购物车中的图书详细购买信息ImageButtonbtnDeleteCom

mandName属性设置为"Del"CommandArgument属性设置为'<%#Eval("BookId")%>'执行从购物车中移除图书的操作TextBoxtxtQyText属性设置为'<%#Eval("Qua

ntity")%>'显示购买图书的数量ButtonbtnTotalText属性设置为结算执行计算购物车总价格的操作btnClearText属性设置为“清空购物车”执行清空购物车所有图书的操作PanelplhTotalVisible属性设

置为false购物车总价格显示区域HyperLinkhlDefaultNavigateUrl属性设置为"~/Default.aspx"执行继续购物的网页定向hlOrderNavigateUrl属性设置为"~/CheckOut.aspx"执行生成

订单的网页定向表1-40ShoppingCart.aspx页面中各个控件的属性设置及其用途前台购物车管理24理论实践一体化网上购书信息管理系统2.代码文件ShoppingCart.aspx.cs实现为了满足每个用户

拥有自己的个性化的购物车,并且只要用户不提交生成订单,购物车中的数据就要为用户一直保留的业务特点,在ASP.Net3.5架构下,我们采用个性化配置(profile)来实现,Profile可以自动在多个Web应用程序的访问之间存储用

户信息。一个UserProfile中可以存储各种类型的信息,这些信息既可以是简单的string和integer类型,也可以是复杂的自定义类型。例如,你可以存储用户的姓、购物车、用户属性或网站使用情况统计等。3.相关技能与知识:profile(个性化配置)前

台购物车管理24理论实践一体化网上购书信息管理系统Profile对象与Session对象十分相似,但是功能更强大。与Session相似的地方在于,Profile是相对于一个特定的用户的,也就是说,每个Web应用程序的用户都有他们自己的profile对象。与Session不同的是,

Profile对象是持久对象。如果你向Session中添加一个项,在你离开网站时,该项就会消失。而Profile则完全不同,当你修改Profile的状态时,修改在多个访问之间均有效。另外,Profile是强类型的,而Session对象仅仅是一个项集合而已,使用强类型的好

处在于你可以在MicrosoftVisualWebDeveloper中使用智能感知技术,当你键入Profile和一个点的时候,智能感知会弹出你已经定义过的profile属性列表。前台购物车管理24理论实践一体

化网上购书信息管理系统profile使用provider模式来存储信息,默认情况下,userprofile的内容会保存在SQLServerExpress数据库中,该数据库位于网站的App_Data目录下。你也可以自定义其他数据提供者(dataprovide

r)来存储信息,如完整版的SQLServer中的一个数据库或者一个Oracle数据库。4.使用profile实现每个用户拥有自己的购物车在电子商务网上购书WebUI网站的web.config文件中添加<profile>配置节<profile><prop

erties><addname="ShoppingCart"type="BookShop.BLL.CartManager"allowAnonymous="false"/></properties></profile>p

rofile属性的名称是ShoppingCart,它的类型是复杂类型购物车业务逻辑类CartManager,注意在配置的时候一定要前台购物车管理24理论实践一体化网上购书信息管理系统指出它所属的命名空间。Profile会为每个用户保存ShoppingCart的值,从而Car

tManager对象中用来存放购物车图书信息的成员Dictionary<string,CartIno>集合类对象cartItems也将为每个用户保存,每个用户还可以使用CartManager对象的放入图书到购物车、

移除图书等方法来操作自己的购物车,从而实现每个用户拥有自己的购物车。ShoppingCart.aspx.cs主要代码:protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){/**使

用Profile属性ShoppingCart,其类型为CartManager,调用GetCartItems方法获得用户购物车数据,Profile.UserName获得与该Profile关联的用户名**/Profile.ShoppingCart

.GetCartItems(Profile.UserName);stringBookId=Request.QueryString["BookId"];if(!string.IsNullOrEmpty(BookId)){前台购物车管理24理论实践一体化网上购书信息管理系统i

f(Session["flag"].ToString().Equals("")){//使用Profile属性ShoppingCart,调用Add方法添加图书到购物车中Profile.ShoppingCart.Add(BookId);Session

["flag"]=BookId;}}//绑定数据源到repShoppingCart控件BindCart(profile.ShoppingCart);/**使用Profile属性ShoppingCart,调用SetCartItems方法设置用户购物车数据,保存用户购物车信息的变化**/

Profile.ShoppingCart.SetCartItems(Profile.UserName);}}//处理在repShoppingCart中单击移除按钮事件protectedvoidrepShoppingCart_ItemCommand(objectsource,Repea

terCommandEventArgse){Profile.ShoppingCart.GetCartItems(Profile.UserName);switch(e.CommandName.ToString()){//依据CommandName属性识别事件源case"Del":profil

e.ShoppingCart.Remove(e.CommandArgument.ToString());break;default:break;}Profile.ShoppingCart.SetCartItems(

Profile.UserName);BindCart(Profile.ShoppingCart);}}前台购物车管理24理论实践一体化网上购书信息管理系统5.购物车管理页面ShoppingCart.aspx运

行效果图图1-61购物车管理页面ShoppingCart.aspx运行效果图前台购物车管理24理论实践一体化网上购书信息管理系统1.9前台订单管理实现学习目标:❑Wizard控件的应用❑对数据库触发器的应用❑建议学时:16学

时前台订单管理实现16理论实践一体化网上购书信息管理系统1.9.1任务名称:前台订单管理实现1.9.2任务描述会员将选定的图书放入购物车之后,点击“生成订单”链接,转至CheckOut.aspx页,在该页面设定订单发送地址

与货物接收地址,最后提交订单。会员还可以查看自己的订单。1.9.3任务分析生成订单的过程需要分步骤实现二类地址的设定等,所以最好采用Wizard控件来实现,提交订单的过程要保证事务的完整性机制,不能存在没有订单明细的订

单数据,同时每一项订单明细都要有订单状态表示值。订单的查看则主要通过主从表来实现。前台订单管理实现16理论实践一体化网上购书信息管理系统1.9.4在Model类库中创建OrdersInfo、LineItemInfo等业务实体类代码参见5

.5在Model类库中创建业务实体类。1.9.5在数据库中创建存储过程与触发器1.创建存储过程插入订单CreatePROCEDURE[dbo].[InsertOrder]@UserIdvarchar(256),@ShipToNamevarchar(80)

,@ShipEmailvarchar(80),@ShipAddrvarchar(80),@ShipCityvarchar(80),@ShipStatevarchar(80),@ShipZipvarchar(20),@ShipCountryvarchar(20)

,@ShipPhonevarchar(80),@BillToNamevarchar(80),@BillEmailvarchar(80),@BillAddrvarchar(80),@BillCityvarchar(80),@BillSt

atevarchar(80),@BillZipvarchar(20),@BillCountryvarchar(20),@BillPhonevarchar(80),@TotalPricedecimal(10,2)AS前台订单管理

实现16理论实践一体化网上购书信息管理系统insertintoOrders(UserId,ShipToName,ShipEmail,ShipAddr,ShipCity,ShipState,ShipZip,ShipCountry,ShipPhone,BillToName,BillEmail

,BillAddr,BillCity,BillState,BillZip,BillCountry,BillPhone,TotalPrice)values(@UserId,@ShipToName,@ShipEmail,@ShipAddr,@Ship

City,@ShipState,@ShipZip,@ShipCountry,@ShipPhone,@BillToName,@BillEmail,@BillAddr,@BillCity,@BillState,@BillZip,@BillCountry,@Bil

lPhone,@TotalPrice)return@@identity2.创建存储过程插入订单明细CreatePROCEDURE[dbo].[InsertLineItem]@OrderIdint,@LineNumint,@BookIdvar

char(10),@Quantityint,@UnitPricedecimal(10,2)ASinsertintoLineItemvalues(@OrderId,@LineNum,@BookId,@Qua

ntity,@UnitPrice)前台订单管理实现16理论实践一体化网上购书信息管理系统3.创建触发器当插入明细时向订单状态表中插入订单状态CreateTRIGGER[dbo].[TriLineItem]ON[dbo].[LineItem]AFTERinser

tASdeclare@OrderIdintdeclare@LineNumintselect@OrderId=OrderId,@LineNum=LineNumfrominsertedinsertintoOrde

rStatus(OrderId,LineNum)values(@OrderId,@LineNum)1.9.6在DAL类库中创建OrdersAccess类…略1.9.7在BLL类库中创建OrdersManager类前台订单管理实现16理论实践一体化网上购书信息管理系统[Serial

izable]publicclassOrderManager{//创建私有数据成员订单数据访问类OrderAccess对象dalpublicstaticreadonlyOrderAccessdal=newOrderAccess();//插入订

单publicvoidInsertOrder(OrdersInfoorder){dal.InsertOrder(order);}//依据用户标识获取该用户已生成订单publicDataSetGetOrdersByUserId(stringuserId){returndal.Get

OrdersByUserId(userId);}//依据订单编号获取该订单明细publicDataSetGetLineItemsByOrderId(intorderId){returndal.GetLineItemsByOrderId(orderId

);}}1.9.8表示层CheckOut.aspx页面的实现1.相关知识:Wizard控件的应用前台订单管理实现16理论实践一体化网上购书信息管理系统使用Wizard控件可以简化许多与生成一系列窗体以收集用户输入的操作关联的任务。通过使用窗体收集用户输入是Web开发中一个要

反复涉及的任务。用来完成某个任务的一组窗体通常称为“向导”。Wizard控件使用多个步骤来描绘用户数据输入的不同部分。该控件内的每个步骤均会给定一个StepType,用以指示这一步骤是开始步骤、中间步骤还是完成步骤。向导可以根据需要带有任意数量的中间步骤。您可以添

加不同的控件(如TextBox或ListBox控件)来收集用户输入。当到达Complete步骤时,所有数据都可供访问。下面的代码示例演示带有两个步骤的Wizard控件。前台订单管理实现16理论实践一体化网上购书信息管理系统<a

sp:WizardID="Wizard1"Runat="server"><WizardSteps><asp:WizardStepRunat="server"Title="第一步"></asp:WizardStep><asp:WizardStepRunat="server"Title="第二步"><

/asp:WizardStep></WizardSteps></asp:Wizard>在每个步骤中都可以添加控件和标签,并可接受用户数据。Wizard控件可帮助管理要显示哪个步骤以及维护所收集的数据。Wizard控件具有线性导航和非线性导航的功能。该控件的状态管理功能允许用户在

各个步骤之间前后移动,并且在显示有侧栏的情况下,还允许用户在任何时候任意选择步骤。前台订单管理实现16理论实践一体化网上购书信息管理系统2.AddressForm用户控件创建在解决方案资源管理器中右击UserCtrl文件夹,添加新项,创建AddressForm用户控件来实现

订单接收地址和货物接收地址的填写3.CheckOut.aspx页面效果图图1-62生成订单页CheckOut.aspx前台订单管理实现16理论实践一体化网上购书信息管理系统4.CheckOut.aspxHTML代码(略)5.CheckOut.aspx.cs主要代码实现//订单提

交protectedvoidWizard1_FinishButtonClick(objectsender,WizardNavigationEventArgse){//创建订单业务逻辑类对象OrderManagerom=newOrderManager();//创建地址类对象并初始化为货物

接收地址AddressInfoship=ShippingForm.Address;//创建地址类对象并初始化为订单接收地址AddressInfobill=BillingForm.Address;if(Profile.ShoppingCart!=null){if(Profile.Shop

pingCart.count>0){//将购物车数据转化为订单明细对象数组LineItemInfo[]lineItems=Profile.ShoppingCart.GetOrderLineItems();//构造订

单实体类对象OrdersInfoorder=newOrdersInfo(HttpContext.Current.User.Identity.Name,ship,bill,Profile.ShoppingCart.Total,lineItems);try

前台订单管理实现16理论实践一体化网上购书信息管理系统{//插入订单om.InsertOrder(order);//清空用户购物车商品集合Profile.ShoppingCart.Clear();//保存至

Cart表Profile.ShoppingCart.SetCartItems(HttpContext.Current.User.Identity.Name);this.ClientScript.RegisterStartupScript(th

is.GetType(),"","<script>window.alert('订单生成成功')</script>");}catch{this.ClientScript.RegisterStartupScript(this.GetType(),"","<script>

window.alert('订单生成失败')</script>");}}elseif(Profile.ShoppingCart.count==0){this.ClientScript.RegisterStartupS

cript(this.GetType(),"","<script>window.alert('您的购物车为空不能生成订单,请您选择商品')</script>");}}}protectedvoidcbAddr

ess_CheckedChanged(objectsender,EventArgse){//如果订单发送地址与货物接收地址相同if(cbAddress.Checked){ShippingForm.Address=BillingFo

rm.Address;}}前台订单管理实现16理论实践一体化网上购书信息管理系统1.9.9会员查看自己的订单实现会员可以查看自己已生成的订单,当选择具体某一订单项,会显示相应的订单明细数据。1.效果图图1-63我的订单页

面MyOr前台订单管理实现16理论实践一体化网上购书信息管理系统2.MyOrder.aspx页面中各个控件的属性设置及其用途控件类型控件名称主要属性设置用途PS.ascxLocation站点导航GridViewGridOrdersDa

taKeyNames="OrderId"订单列表GridLineItems订单明细列表表1-41MyOrder.aspx页面中各个控件的属性设置及其用途前台订单管理实现16理论实践一体化网上购书信息管理系统3.MyOrder

.aspxHTML代码(略)4.MyOrder.aspx.cs代码实现protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){//创建订单业务逻辑类对象OrderManagerom=newOrderMa

nager();//获取当前通过身份验证的用户标识stringuserId=HttpContext.Current.User.Identity.Name;//获取该用户订单数据做为GridOrders的数据源GridOrders.Dat

aSource=om.GetOrdersByUserId(userId);GridOrders.DataBind();GridOrders.Font.Size=10;GridLineItems.Font.Size=10;}}//选取

订单列表中某行时显示与该行订单编号对应的订单明细数据protectedvoidGridOrders_SelectedIndexChanged(objectsender,EventArgse){intid=Int32.Parse(GridOrders.SelectedD

ataKey.Value.ToString());//获取每一行的DataKey,Web页的DataKeyNames="OrderId"OrderManagerom=newOrderManager();//依据订单编号获取订单明细数据做为GridLineItems的数据源GridLin

eItems.DataSource=om.GetLineItemsByOrderId(id);GridLineItems.DataBind();}前台订单管理实现16理论实践一体化网上购书信息管理系统1.10后台图书类别管理实现学习目标:❑存储过程的用法❑存储过程参数的定义及使

用❑建议学时:8学时后台图书类别管理实现8理论实践一体化网上购书信息管理系统1.10.1任务名称实现图书类别管理1.10.2任务描述一个书店里经营的图书种类繁多,内容涵盖面也比较广泛,通常要包含十几个类别,然而这些类别并不总是一成不变

的,为了快速适应图书市场的变化,灵活多样的图书类别管理可以使图书的分类管理更为有效.图书类别管理主要保护两个功能:1.添加图书目录2.修改图书目录3.删除图书目录后台图书类别管理实现8理论实践一体化网上购书信息管理系统1.10.3任务分析添加图书目录环节的实现方法大致为:通过在页面上部署一

个GridView控件,三个文本框和两个按钮,其中GridView控件用来显示当前目录情况,文本框收集用户输入的新的目录编号,目录名称,目录描述等信息,然后在通过按钮条件提交数据到业务访问层的具体方法更新数据库信息。1.10.4MODEL层目录实体类Cate

goryInfo实现:参见1.5.5节代码后台图书类别管理实现8理论实践一体化网上购书信息管理系统1.10.5DAL层:目录添加数据访问类CategoryAccess类实现publicboolAddCategory(Int16CategoryId,strin

gname,stringdesc){//首先判断目录编号是否重复//创建参数,并赋值SqlParameter[]parm={newSqlParameter("@CategoryId",SqlDbType.Int)};parm[0].Value=CategoryId;/

/执行查询Databasedb=newDatabase();//验证Category表是否存待插入目录数据行SqlDataReaderrdr=db.ExecuteReader(CommandType.StoredProcedure,"Sele

ctCategoryById",parm);if(rdr.Read())returnfalse;//获取参数SqlParameter[]param={newSqlParameter("@CategoryId",SqlDbType.Int),

newSqlParameter("@CategoryName",SqlDbType.VarChar,50),newSqlParameter("@CategoryDesc",SqlDbType.VarChar,50)};//设置参数的值param[0].Value=C

ategoryId;param[1].Value=name;param[2].Value=desc;db.ExecuteNonQuery(CommandType.StoredProcedure,"AddCategory",param);returntrue;}后台图书类别管理实现8

理论实践一体化网上购书信息管理系统//编辑Category选中行,并更新publicvoidEditCategory(CategoryInfoinfo){Databasedb=newDatabase();SqlParameter[]parm={newSqlParameter("@Ca

tegoryId",SqlDbType.Int),newSqlParameter("@CategoryName",SqlDbType.NVarChar,50),newSqlParameter("@Des

c",SqlDbType.NVarChar,50)};parm[0].Value=info.Id;parm[1].Value=info.Name;parm[2].Value=info.Description;db.ExecuteNonQuery(CommandType.Store

dProcedure,"UpdateCategoryById",parm);}}//目录删除publicboolDelCategory(intCategoryId){returnca.DelCategor

y(CategoryId);}//目录修改//根据CategoryId更新目录publicvoidUpdateCategoryById(CategoryInfoinfo){ca.EditCategory(info);}}后台图书类别管理实现8理

论实践一体化网上购书信息管理系统新的图书目录到数据库中,对数据库中Category表的操作,该类会调用目录数据访问类CategoryAccess来完成。privatestaticreadonlyCategoryAccessca=newCategoryAcces

s();publicIList<CategoryInfo>GetCategoryInfos(){returnca.GetCategorys();}//添加目录publicboolAddCategory(In

t16CategoryId,stringname,stringdesc){returnca.AddCategory(CategoryId,name,desc);}}1.10.6BLL层:目录添加管理业

务逻辑类CategoryManager类实现在BLL类库中添加新类,命名为CategoryManager,定义所属命名空间为namespaceBookShop.BLL,标记为可序列化[Serializable

],访问权限为public,该类负责添加后台图书类别管理实现8理论实践一体化网上购书信息管理系统1.10.7表示层:目录管理实现//添加目录信息到Category表,protectedvoidbtnAddOk_Click(objectsen

der,EventArgse){stringid=txtboxCategoryId.Text.Trim();stringname=txtboxCategoryName.Text.Trim();stringdesc=tx

tboxCategoryDesc.Text.Trim();//添加之前保证等待插入的数据项不能包含空串if(id!=“”&&name!=“”&&desc!=“”){Int16CategoryId=Int16.Parse(id);CategoryManagercm=newCategoryMana

ger();//调用DAL包的AddCategory(CategoryId,name,desc)boolb=cm.AddCategory(CategoryId,name,desc);//添加成功,lblmsg显示成功if(b){lblmsg.Text=“添加目录:“+name+“成功”;thi

s.Bind();txtboxCategoryId.Text=“”;txtboxCategoryName.Text=“”;txtboxCategoryDesc.Text=“”;}后台图书类别管理实现8理论实践一体化网上购书信息管理系统else{lblmsg.Text=“已经存在该目录,添加

:”+name+”失败”;}}else{this.ClientScript.RegisterStartupScript(this.GetType(),””,”<script>alert(‘输入数据不完整!’)</script>

”);}}protectedvoidbtnDel_Click(objectsender,EventArgse){intCategoryId=int.Parse(DropDownList1.SelectedValue);CategoryMana

gercm=newCategoryManager();boolb=cm.DelCategory(CategoryId);if(b){lblmsg.Text="删除成功!";this.Bind();}else{lblmsg.Tex

t="抱歉,目录中可能存在图书,删除失败!";}}后台图书类别管理实现8理论实践一体化网上购书信息管理系统protectedvoidbtnOK_Click(objectsender,EventArgse){stringname=txtCategoryName.Text.Trim();stri

ngdesc=txtCategoryDesc.Text.Trim();if(name!=""&&desc!=""){CategoryInfoinfo=newCategoryInfo();info.Id=Int16.Parse(

GridView1.SelectedRow.Cells[1].Text);info.Name=txtCategoryName.Text.Trim();info.Description=txtCategoryDesc.Text.Trim

();cm.UpdateCategoryById(info);}else{this.ClientScript.RegisterStartupScript(this.GetType(),"","<script>w

indow.alert('请先点击【选择】!')</script>");}this.myDataBind();}后台图书类别管理实现8理论实践一体化网上购书信息管理系统1.11后台图书信息管理学习目标:

❑更新多个具有外键关联的表的方法❑存储过程的应用❑存储过程参数的定义及使用❑建议学时:8学时后台图书信息管理8理论实践一体化网上购书信息管理系统1.11.1任务名称:后台图书信息管理1.11.2任务描述用户通过网上购书系统所看到的各种图书信息最终来源于用来保存图书信息的数据

库,对于数据库信息的更新通常情况下是由程序自动完成的,而这个程序一般情况下被设计成后台管理程序的一部分,对于图书信息管理功能模块而言,主要应该提供两个功能:1.添加图书2.修改概要3.删除图书4.返回系统后台图书信息管理8

理论实践一体化网上购书信息管理系统1.11.3任务分析添加图书时需要后台操作人员提供图书编号,图书名称,图书售价,图书数量,所属目录类别,是否为热点推荐,是否为经典推荐等信息,这些内容可以通过文本框和下拉列表框来进行收集,在更新开始时需要注意的是,要先更新BookBrief

表,然后再更新Item表,这是因为两个表之间存在外键关系,Item表中的BookId来源与BookBrief表的BookId。修改概要环节则较为简单根据输入的图书编号,修改图书的热点和经典类型。其中涉及一个文本框

和两个下拉列表框。后台图书信息管理8理论实践一体化网上购书信息管理系统1.11.4Model层:图书信息BookBreifInfo类实现参见1.5.5节代码1.11.5DAL层:图书信息访问类Book

BriefAccess类实现在DAL类库下添加新类图书详情访问类BookBriefAccess类所属命名空间为namespaceBookShop.DAL,访问权限为public。该类功能为对图书详情表BookBrief表进行访问,它保括两个主要方法,使用Add

BookBrief添加新书的各种信息,使用UpdateBookBriefByBookId根据图书编号修改图书的热点和经典类型。后台图书信息管理8理论实践一体化网上购书信息管理系统1.11.6BLL层:图书信息BookBriefManager类实现在BLL类库中添加新类,命名为B

ookBriefManager,定义所属命名空间为namespaceBookShop.BLL,标记为可序列化[Serializable],访问权限为public,该类负责收集用于添加新书时的各种图书详情及修改图书热点和经典推荐时的信息,并执行响应的添加图书详情和修改图书热点和经典类型

的操作,以及显示当前BookBrief表中的图书信息,并根据选中的图书项进行删除操作。1.11.7图书信息管理表示层代码实现代码略。。。后台图书信息管理8理论实践一体化网上购书信息管理系统1.12生成及发布网站学习目标:❑生成及发布网站

❑在本机上试运行❑建议学时:2学时生成及发布网站2理论实践一体化网上购书信息管理系统1.12.1任务名称:生成及发布网站1.12.2任务描述生成网站、发布网站以及在本机上试运行。1.12.3任务分析VS2008提供了“生成网站”和“发布网站”

的命令,在本机上试运行则需要在IIS进行相应的设置。生成及发布网站2理论实践一体化网上购书信息管理系统1.12.4生成网站及发布网站(1)在解决资源管理器中右击网站Web,首先生成网站,生成成功后执行发布网站

的命令。图1-75选择位置生成及发布网站2理论实践一体化网上购书信息管理系统(2)发布完成后,要在本机上试运行可以右击“我的电脑”,选择“管理”,在计算机管理的窗口的树状目录中选择“Internet信息服务”,以XP系统为例,如下图新建虚拟目录。图1-76新建虚拟

目录生成及发布网站2理论实践一体化网上购书信息管理系统(3)因连接数据库服务器采用的是“Windows身份验证”,所以还要在SQLServer2005数据库中做如下设置:首先在对象资源管理器中展开“安全性”目录,再展开下级的“登

录名”目录,右击“XXX\ASPNET”,选择“属性”,在登录属性对话框中“选择页”窗格,选择“用户映射”,在右侧对应页上映射勾选自定义数据库CVITBOOKSHOP,身份勾选“db_owner”,点击“

确定”按钮。其次在对象资源管理器中展开数据库“CVITBOOKSHOP”目录,再展开下级的“安全性”目录,继续展开“用户”目录,这时可以看到由刚才操作添加的用户“XXX\ASPNET”,右击“XXX\ASPNET”,选择“属性”,在弹出的对话框中,设置数据库角色成员身份,勾选“db_owner

”生成及发布网站2理论实践一体化网上购书信息管理系统(4)打开IE,在地址栏键入“http://localhost/BlueStarBookShop”,完成在本机上的试运行。图1-82在浏览器中试运行生成及发布网站2

精品优选
精品优选
该用户很懒,什么也没有留下。
  • 文档 34925
  • 被下载 0
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?