第一篇:案例—网上书店系统分析
实验案例—某网上书店系统分析
实验案例—某网上书店系统分析
– 实验简介
– 建立需求模型概述
– 建立需求模型详细步骤 – 建立分析模型概述 – 建立分析模型详细步骤
实验简介
· 本实验本实验在“实验案例—某网上书店系统规划 报告”的基础上,对要实现的电子商务系统进行需 求调查,使用UML用例图和活动图来描述调查得 到的需求。然后,对调查得到的需求进行详细的 分析和描述,以掌握需求调查的方法和技巧,学 会编写需求模型报告。
· 本实验还要根据形成的需求模型一步步得到分析 模型,使用类图和协作图来分析各个用例,画出 系统的分析类和用例实现过程,学会编写需求模
型报告。
建立需求模型概述
–建立用例模型的体系结构图 –用例图的画法
–创建“图书选购”活动图 –对用例进行描述
建立用例模型的体系结构图
根据对实验案例—某网上书店系统规划报告中功 能模块的分析,结合对实际电子商务系统的调 查,最终得出系统的体系结构图。网上书店体系 结构图如下图所示。
建立需求模型概述
建立用例模型的体系结构图
在UML中,这种体系结构的表现方式是通过 分组元素(即包元素)来实现的,在
Rational Rose中应该按如下步骤建立该需求 体系结构。
首先在Rational Rose的Use Case View中的 Main用例图中使用 建立“网上书店系统” 包,如下图所示。
建立需求模型概述
建立用例模型的体系结构图
然后双击该包图,进 入下一级用例图中,建立“管理员子系统 ” 和“用户子系统 ”两个 包,再分别双击两个 包,进入相应的包以 建立下一级结构,最 终得到系统的体系结 构。用例模型的体系
结构图如左图所示。
建立需求模型概述
用例图的画法
· 建立了用例模型的体系结构图之后,下面以用户 子系统的“图书选购”功能为例介绍用例图的画法。在“图书选购”上单击右键,建立“图书选购”用例 图,如下图所示。
建立需求模型概述
用例图的画法
· 在这个用例中,有一 个参与者(即顾客)和一个用例(即图书 选购),根据分析可 知,“图书选购”用例 可以分解成两个用 例,即“浏览图书”和 “加入购物车”,最终 得到用例图“图书选
购”,如左图所示。
建立需求模型概述
创建―图书选购‖活动图
· 在上述步骤中仅仅画出“图书选购”的用例图,是不能够准 确地表达“图书选购”这一用例的商业流程的,还需要对这 一用例进行解释和说明,活动图就是一个对用例进行解释 说明的很好的工具,下面是创建“图书选购”活动图的过程。首先在“图书选购”包中通过单击右键创建“图书选购”活动 图,如下图所示。
建立需求模型概述
创建―图书选购‖活动图
· 然后根据需求调查的结果,画出活动图。使用泳 道来区分活动的发出者,如下图所示。
图中的 和 分别表 示用例的启动和终止。要注意区分图中状态 机的图标 和活动图 中活动图标 的不 同,用来表示一个
个的活动。
建立需求模型概述
对用例进行描述
· 接下来的工作是对用例进行描述,也就是对需求 进行文档化描述。事实上有许多种描述方法,既 可以只用一段自然文字和使用结构化的一段文字 描述,也可以使用图形进行描述(事实上,活动 图就是对用例的一种描述)。下面通过使用 usecase.org给出的用例的文档化模版对用例进 行描述。
建立需求模型概述
对用例进行描述 “图书选购” 3.1 简单描述
本用例允许用户在线选购图书。3.2 前置条件
用户选书前必须登录。3.3 后置条件
用户选择自己需要的图书,并将其添加到购物车中。3.4 事件流
3.4.1 基流
当用户想要进行图书选购时,用例启动。
(1)用户单击选择选书页面。(2)系统显示图书列表。(3)用户提出选购某书。
(4)系统检查是否缺货(E-1),购物车中加入相应的图书信息。
3.4.2 替代流
E-1:缺货时,屏幕显示缺货信息页面。用户选择缺货策略(放
弃还是等待直到有货)。
建立需求模型概述
对用例进行描述
· 在usecase.org给出的用例文档化模版 中,前置条件说明了用例开始前应该使 系统所处的状态,后置条件说明了用例 结束后对系统的改变。基流也叫做事件 的成功流,说明了在整个过程中没有任 何错误的情况下用例的事件流程。
建立需求模型概述
对用例进行描述
· 实际上,作为用例 描述,应该可以在 用例模型中显示,Rational Rose在用 例中添加了用例描 述的功能。用户双 击用例“图书选购” 图标,得到它的细
建立需求模型概述
节界面,如左图所 示。
对用例进行描述
· 在Documentation文本框中添加用例的描 述和非功能性需求。
· 对体系结构中的每个包的每个元素都做完 以上几项(即用例图、活动图和用例)描 述之后,就基本完成了需求模型的建立。这里说基本并不是完全的意思,即在系统 的开发进程中发现一些新的需求和描述不 正确的需求时,可继续在此基础上对其进
行修改和维护。
建立需求模型概述
建立需求模型详细步骤
1.用户注册
2.用户登录
3.图书选购
4.购物车管理
5.查看订单 6.图书管理 7.订单管理
····
···
建立需求模型详细步骤
1.用户注册—使用用例图
建立需求模型详细步骤
1.用户注册—使用活动图
建立需求模型详细步骤
1.用户注册——进行需求描述 “用户注册” 1.1 简单描述
本用例用于用户的注册和个人信息的填写。1.2 前置条件 无。
1.3 后置条件
用例成功后,添加一名新用户。1.4 事件流 1.4.1 基流
当用户希望注册个人信息以使用本系统时,用例启动。
(1)系统转到用户注册页面,提示用户输入个人信息。(2)用户输入个人信息。
(3)系统检查信息是否有效(E-1)(是否已注册,邮箱是否可用,密码是否过于简单),将信息存入数据库。1.4.2 替代流
E-1:如果用户输入的注册信息无效,系统显示错误信息并转到 错误页面,用户重新填写信息,或者取消注册,用例结束。
建立需求模型详细步骤
2.用户(管理员)登录—使用用例
图
建立需求模型详细步骤
2.用户(管理员)登录—使用活动
图
建立需求模型详细步骤
2.用户(管理员)登录—进行用例
描述 “用户(管理员)登录 2.1 简单描述
本用例用于用户登录系统。
2.2 前置条件
无。2.3 后置条件
用例成功后,用户登录进入系统。
2.4 事件流 2.4.1 基流
当用户提出登录进入系统请求时,用例启动。
(1)系统转到用户登录页面,提示用户输入用户名和密码。(2)用户填写用户名和密码信息。
(3)用户验证输入的用户名和密码,若正确(E-1),则转到首页,系统激活这一用户。
2.4.2 替代流
E-1:如果输入无效的用户名和(/或)密码,系统显示错误信息,用户 可以选择返回基硫的起始点,重新输入正确的用户名和(/或)密码;或者 取消登陆,用例结束。建立需求模型详细步骤
3.图书选购—使用用例图
建立需求模型详细步骤
3.图书选购—使用活动图
建立需求模型详细步骤
3.图书选购—进行用例描述 “图书选购” 3.1 简单描述
本用例允许用户在线选购图书。3.2 前置条件
用户选书前必须登录。3.3 后置条件
用户选择自己需要的图书,并将其添加到购物车中。3.4 事件流 3.4.1 基流
当用户想要进行图书选购时,用例启动。(1)用户单击选择选书页面。(2)系统显示图书列表。(3)用户提出选购某书。
(4)系统检查是否缺货(E-1),购物车中加入相应的图书信息。3.4.2 替代流
E-1:缺货时,屏幕显示缺货信息页面。用户选择缺货策 略(放弃还是等待直到有货)。
建立需求模型详细步骤
4.购物车管理—使用用例图
第二篇:网上书店-系统分析设计文档
网上书店系统analysis & design 目录:
1.登录包
1.1 class diagram
LoginForm为boundary class CheckAndReadFrormUserList为control class UserList 为 entity class
在登录界面中 点击登录 调用CheckAndReadFrormUserList()函数,该函数作用:在数据库中搜索登录用户名和密码若存在则能登陆,否则登陆失败。1.2 sequence diagram
1.3 collaboration diagram 注册包
2.1 class diagram
UserRegrist为boundary class CheckAndSaveIntoUserList为control class UserList为 entity class
在注册界面中 点击注册 调用CheckUserList()函数,该函数作用:在数据库中搜索登录用户名若不存在则继续,否则提示该用户名以存在。继续则调用SaveIntoUserList(),该函数作用:将用户信息存入数据库中 2.2 sequence diagram
2.3 collaboration diagram 订购图书包 3.1 class diagram
BookList为boundary class CheckAndSaveIntoOrderList为control class OrderList为 entity class
在物品界面中 点击订购 调用SaveIntoOrderList()函数,该函数作用:将该图书信息存入数据库中,继续调用showMybook()函数,该函数作用:将该用户订购的所有图书列表显示。3.2 sequence diagram
3.3 collaboration diagram 订单及送货管理 4.1 class diagram
OrderForm为boundary class DoWithOrderList为control class OrderList为 entity class
进入订单及送货管理页面 调用showorderList()函数,该函数作用:显示所有订单,若要删除订单,调用delorderinfo()函数,该函数作用:将选定列订单删除。
4.2 sequence diagram
4.3 collaboration diagram
5.进书、库存管理
5.1 class diagram
StockForm为boundary class DoWithStockList为control class StockList为 entity class
进入订单及送货管理页面 调用showall()函数,该函数作用:显示所有进书信息,若要修改信息,调用changeinfo()函数,该函数作用:将选定列重新更新到数据库中。
5.2 sequence diagram
5.3 collaboration diagram
6.客户信息管理
6.1 class diagram
UserForm为boundary class DoWithUserList为control class UserList为 entity class
进入客户信息管理页面 调用showUserList()函数,该函数作用:显示所有用户信息,若要修改信息,调用alterUserinfo()函数,该函数作用:将选定列重新更新到数据库中。
6.2 sequence diagram
6.3 collaboration diagram
7.账目管理
7.1 class diagram
AccountForm为boundary class DoWithAccountList为control class AaccountList为 entity class
进入账目管理页面 调用showaccountlist()函数,该函数作用:显示所有图书账目信息,若要修改信息,调用alteraccountlist()函数,该函数作用:将选定列重新更新到数据库中。
7.2 sequence diagram
7.3 collaboration diagram
第三篇:网上书店系统分析与设计(定稿)
系统分析与设计大作业
学号:090300235 班级: 09信管1班 姓名: 伍恒 1系统的功能和结构说明:
功能要求
本系统主要分为管理员,工作人员,会员和游客四大模块。
管理员: 进入管理页面,可以维护客户注册信息、维护图书信息、处理订单信息、报表维修、商品销售。
工作人员: 进入工作管理页面,可以对图书(或商品)信息进行录入、删除、浏览、查询、修改(商品销售)、维护个人信息、维护订单信息(接收订单并发货、拒绝订单、查询库存)。
会员: 进入登入页面,可以对图书信息进行查询、浏览,并可以维护个人信息,维护订单信息(订单状态查询、订单删除或增加)。
游客: 进入网站后,只能进行基本的信息浏览和查询。
管理员可以维护客户注册信息、维护图书信息、处理订单信息、报表维修、商品销售。工作人员的相对权限下可以对图书(或商品)信息进行录入、删除、浏览、查询、修改(商品销售)、维护个人信息、维护订单信息(接收订单并发货、拒绝订单、查询库存)。游客身份只能进行基本的信息浏览和查询,但是游客可以在线注册为会员,成为会员后在相对权限下可以对图书信息进行查询、浏览,并可以维护个人信息,维护订单信息(订单状态查询、订单删除或增加)。
2系统需求分析和设计文档:
本系统描述通过包含因特网在内的计算机网络来购买、销售和交换商品、服务信息的进程。随着社会的发展,网络的普及,网上购物已成为在线业务的首要载体。B2C可以绕过中介(如批发商、销售商或经销商)建立与客户的直接关系。网站还能够为用户提供商品的具体信息,用户能够在线购买商品,确信自己的订单。同时网站还提供关于商品或电子零售商的选择建议和评级。网站来源信息,为网络销售人员从不同地方分析网站运营的效果提供方便,至少能够看出部分常用网站推广措施所带来的访问量,如分类目录、搜索引擎自然检索、投放于网站上的在线显示类网络广告等。网上销售为人们提供更广阔的环境:人们不受时间的限制,不受空间的限制,不受传统购物的诸多限制,能够随时随地在网上交易。更广阔的市场:在网上这个世界将会变得很小,一个商家能够面对全球的消费者,而一个消费者能够在全球的任何一家商家购物。更快速的流通和低廉的价格:电子商务减少商品流通的中间环节,节省大量的开支,从而也大大降低商品流通和交易的成本。更符合时代的要求:如今人们越来越追求时尚、讲究个性,注重购物的环境,网上购物,更能体现个性化的购物进程。
系统可行性分析及功能和操作环境:
伴随着Internet正向我们大踏步走来,电子商务将成为21世纪主流的商业模式。网上书店将是随着这些网络技术的发展而出现的一种新型图书销售渠道。它通过人与电子通信方式的结合,依靠计算机网络,以通讯技术为基础,实现图书销售的网上交易。网上书店同传统的店面书店相比,网上书店的经营 方式和销售渠道是全新的;它24小时的全天候和全方位服务是店面书店所不能比及的;成本低廉更是开设网上书店的主要原因。而与其他商品相比,书籍运送几乎不怕碰撞碎裂,不具时效性;同时书本具有功能单一,形式简单,易于判断和选择而独具优势,最适合于网上交易;再次是单价低,降低了消费者第一次在网络购物的门槛,所以网上书店成了电子商务的先锋。对现有系统的分析
由于假定目前还未开设网上书店,所以没有原型系统,则: 处理流程和数据流程 :暂时不考虑 工作负荷 :暂时不考虑
费用支出:如人力、设备、空间、支持性服务、材料等项开支 :暂时不考虑 人员:列出所需人员的专业技术类别和数量 :暂时不考虑 设备 :暂不考虑
局限性:暂时不考虑 需求调查和分析
网上书店同传统的店面书店相比,网上书店的经营方式和销售渠道是全新的,它解决了许多传统书店的局限性:它24小时的全天候和全方位服务是店面书店所不能比及的;成本低廉更是开设网上书店的主要原因。而与其他商品相比,书籍运送几乎不怕碰撞碎裂,不具时效性;同时书本具有功能单一,形式简单,易于判断和选择而独具优势,最适合于网上交易;再次是单价低,降低了消费者第一次在网络购物的门槛,所以开设网上书店为广大读者提供了很大的便利性,具有很大的发展潜力。需求预测
为了是经营者实现更有效的的管理,要求网站具有如下功能:
功能 :对书店的图书信息和用户(书店工作人员,网站注册用户即潜在购书者)信息的进行有效的管理;对图书的进存销等环节进行信息化管理;实现读者网上浏览图书,网上购书的可能;通过论坛同读者进行有效的沟通;通过聊天室实现作者和读者的实时交流;处理读者网上的投诉和建议。
性能:数据库的录入;图书检索;用户信息查询;图书信息查询;论坛和bbs互动;网上购书;
安全与保密要求 :书店中所有的图书能够供用户随时查阅;用户的个人信息可以由用户自己修改,添加;书店图书的信息只能由书店管理人员添加,修改;所有注册用户信息只能由书店管理人员查询。可行性分析
技术可行性分析 对系统的简要描述
随着计算机、网络通讯和信息技术,特别是Java技术的发展。电子商务在国际上得到广泛的应用,取得了巨大的成功。我国也不例外,特别是各大电子商务网站从无到有,得到很大的发展,并取得成功。为了适应新环境下的新的销售模式和顾客销售方式的改变,开发的这个网上书店电子商务网站是基于Internet/Intranet 及Web技术,建立以Browser/Server 为结构模式、以数据库为后台核心应用、以服务,销售为目的信息平台。
功能 :对书店的图书信息和用户(书店工作人员,网站注册用户即潜在购书者)信息的进行有效的管理;对图书的进存销等环节进行信息化管理;实现读者网上浏览图书,网上购书的可能;通过论坛同读者进行有效的沟通;通 过聊天室实现作者和读者的实时交流;处理读者网上的投诉和建议。
性能:数据库的录入;图书检索;用户信息查询;图书信息查询;论坛和bbs互动;网上购书;
安全与保密要求 :书店中所有的图书能够供用户随时查阅;用户的个人信息可以由用户自己修改,添加;书店图书的信息只能由书店管理人员添加,修改;所有注册用户信息只能由书店管理人员查询。
运行环境 服务器端 :
操作系统 :WINDOWS,LINUX/UNIX及任何能运行Java虚拟机的平台;
Java Runtime Environment :version5.0以上。
Web Server:Tomcat 5.0以上。
客户端操作系统 :任何pc平台;
浏览器 :Internet Explorer,Netscape Navigator。
目标
本系统希望通过构建一个J2EE架构的电子商务网站,利用日益繁荣的互联网,为传统的书店打造一个新的销售平台。本系统希望通过电子信息化的手段对书店的进存销等环节进行管理,以达到人力与设备费用的减少,服务能力的提高,管理信息服务的改进,工作人员利用率的提高等目标。
3系统分析相关模型图
3.1用例图
用例图(管理员)
用例图(游客,会员)
用例图(员工)
用例描述
用例名:登录(权限管理——管理员、工作人员、会员、游客)角色:管理员、工作人员、会员、游客 目标:实现管理权限
前置条件:对具有不同权限的用户分配一定的权限管理 用例描述:用户登陆并进行相应的权限操作
用例名:信息管理(录入、删除、浏览、查询、修改)——管理员
(个人信息维护)——工作人员、管理员 角色:管理员,工作人员
目标:对员工信息进行录入、删除、浏览、查询、修改等基本操作 前置条件:对具有不同权限的用户分配一定的权限管理 用例描述:管理员和工作人员进行相应的权限操作
用例名:商品信息管理(销售及商品信息维护)——管理员
(订单)——工作人员
(浏览、查询)——会员、游客 角色:管理员、工作人员、会员、游客
目标:对商品销售、下订单及商品信息和库存进行录入、删除、浏览、查询、修改等基本操作
前置条件:对具有不同权限的用户分配一定的权限管理 用例描述:用户对图书信息进行和相应的权限操作
用例名:查询(管理员对商品销售及相关信息的情况查询、员工对订单的库存信息的查询、会员和游客对图书的相关信息的查询)角色:管理员、工作人员、会员、游客
目标:管理员对商品销售及相关信息的情况查询、员工对订单的库存信息的查询、会员和游客
对图书的相关信息的查询
前置条件:1.对具有不同权限的用户分配一定的权限管理 2.查询信息必须是确实存在的 用例描述:用户在相应的权限操作下对信息进行查询
用例名:订单信息管理(订单信息管理)——管理员
(订单信息处理——接收订单并发货、拒绝订单、查询库存)——工作人员
(订单信息处理——订购货品、订单增加、订单删除、订单信息查询)——会员
角色:管理员、工作人员、会员
目标:对订单信息进行维护和处理(包括:接收订单并发货、拒绝订单、查询库存、订购货品、订单增加、订单删除、订单信息查询)前置条件:1.对具有不同权限的用户分配一定的权限管理 2.游客是不能下订单的
用例描述:用户在相应的权限操作下对订单信息进行管理或处理
用例名:维护(商品信息维护、员工信息维护、报表维护)——管理员
(个人信息维护、订单维护)——会员 角色:管理员、会员
目标:管理员对商品信息维护、员工信息和报表进行维护操作,而会员对个人信息维护和订单信息维护
前置条件:1.对具有不同权限的用户分配一定的权限管理 2.维护信息必须是确实存在的
用例描述:用户在相应的权限操作下对信息进行查询
3.2活动图
工作人员工作活动图
3.3域模型类图
系统域模型类图
4系统设计相关的模型图
4.1设计类图
系统设计类图
类图说明:
1、Tourist类是游客的类,其属性只有name,有注册(enroll)、图书查询(book_search),l浏览(browsing)三个操作。
2、Customers类是会员的类,其属性有用户名(username)、密码(password),其中操作有个人信息维护(person_search)、书籍订单(book_order)、订单维护(list_service)、图书查询(book_search),订单状态查询(list_search)。
3、Orders类是订单类,包裹订单名(order_id)、用户名(user_id)、图书名(good_id)、订货日期(data_id)等属性。其中操作有增加(add)、删除(delete)、订单查询(list_search)。
4、Staff类是工作人员的类,其属性有员工姓名(staff_name)、员工数量(staff_num)、其操作有缺货拒绝(good_refuse)、图书入库(good_in)、库存查询(stock_search)。
5、Manager类是管理员的类,其属性只有姓名(name)。其中操作有图书信息维护(good_service)、员工信息维护(staff_service)、销售查询(sale_search)、报表维修(list_service)。
6、Book类是图书类,其属性有图书编号(book_id),书名(book_name),书的价格(book_price),书的摘要(book_digest)。其操作有,图书查询(book_search)。
协作图和序列图都可以表示各对象间的交互关系,但它们的侧重点不同。序列图用消息的几何排列关系来表达消息的时间顺序,各角色之间的相关关系是隐含的。协作图用各个角色的几何排列图形来表示角色之间的关系,并用消息来说明这些关系。在实际中可以根据需要选用这两种图。
一个协作图描述了系统中为实现某些服务所涉及的对象扮演的角色及其相互之间的交互。协作图着重于有协作关系的对象之间的交互和链接(指对象实例之间的物理或概念上的链接,一个链接是某关联的一个实例)。它可用于图示系统中的操作执行、用例执行或一个简单的交互场景。协作图描述了对象及其之间的链接,还描述了链接的对象之间如何发送消息
4.2协作图
会员网上订书协作图
4.3系统顺序图
会员订书顺序图
注册顺序图
4.4包图
系统包图
通过这次实践,我学到了很多东西,用例图描述了希望用户如何使用一个系统。用例图显示了谁将是相关用户、用户希望系统提供什么服务,以及用户需要为系统提供的服务,使系统的用户更容易的理解这些元素的用途。在创建之前确定参与者是有:管理员、工作人员、会员、游客。
通过分析用例和问题域,得到相关的类。类图描述了类、接口、协作以及它们之间关系的图。用来显示系统中各个类的静态结构,描述了类之间的联系,还包过了类的属性和操作。
在描述对象之间的交互时,用到了时序图,以时间为序,来描述对象及对象之间传递消息的时间顺序,表示用例之间行为顺序,当执行一个用例行为时,时序图中每条消息对应了一个类操作中引起转换的触发事件。
系统权限及功能:管理员可以维护客户注册信息、维护图书信息、处理订单信息、报表维护、商品销售。工作人员在相对权限下可以对图书(或商品)信息进行录入、删除、浏览、查询、修改(商品销售)、维护个人信息、维护订单信息(接收订单并发货、拒绝订单、查询库存)。游客身份只能进行基本的信息浏览和查询。但是游客可以在线注册为会员,成为会员后在相对的权限 下对图书信息进行图书信息进行查询、浏览,并且可以维护个人信息,维护订单信息(订单状态查询、订单删除或增加)。
参考资料
1.《系统分析设计》
(美)John W.Satzinger 2.《软件工程(第二版)》
张海潘 3.《面向对象设计UML实践》(英)Mark Priestley
第四篇:网上书店信息系统分析设计报告
网上书店网站实验报告
1、项目说明
网上书店:顾名思义,网站式的书店。是一种高质量,更快捷,更方便的购书方式。网上书店不仅可用于图书的再线销售,也有音碟、影碟的在线销售。而且网站式的书店对图书的管理更加合理化,信息化。售书的同时还具有书籍类商品管理、购物车、订单管理、会员管理等功能,非常灵活的网站内容和文章管理功能。但网上书店的真实性是消费者的最大顾虑,这也是网上书店还不被大多数消费者所接受的原因之一。
在网上书店买书,可以查到所买图书的更多信息,因为网上书店是一个网站,它有它独特的售书方式和功能。如用户注册会员功能等,会员类型有:高级会员、金牌会员等。有的网上书店有会员积分设置,如达到一定积分时自动成为高级会员,高级会员会有优惠和特别的服务。还有就是支付方式了,一般网上书店都有三种类型的支付方式:汇款类支付、在线支付、其他支付方式,其中在线支付只要到支付平台开户后,将所获开户信息填入即可。当在网上书店购书后,用户所购图书都在网站上有记录,方便用户查询。
2、需求分析
网上书店和现实书店区别比较:
网上书店的优势:涉及范围广,经营成本低,劣势:信用度如果低,影响
生意;
现实书店的优势:直观,信用度高。劣势:涉及范围有限,经营成本高;
现在有部分现实书店已经开始从网上书店进货了。本系统开发的目的是为 了学习这样去做一个交互式的网页以及了解这种强大的网络编程工具,方 便客户端和浏览器端之间的交流。
数据库采用实用,易学的SQL Sever 2000,以Tomcat作为JSP的WEB服务器,XP作为系统运行平台。
3、总体设计
(1)实验目的:
1.利用本次机会来了解JSP一般的技术及使用模式,并能够使用这种技术,建立
一个简单的论坛网站。
2.通过本次学习,使自己巩固所学过的书本理论知识,加深对相关内容的理解。
(2)实验要求:
要基本了解JSP编程技术,学会使用JSP开发一个小型网站的基本知识,巩固数据库基本理论,并用于开发一个小型的网站。
三技术简介
JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种,总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。(3)系统设计特点:
网上书店具有:
(1)提供了全面,详细的图书购物入口,轻松实现快捷购买。
(2)可以通过不同分类进行导航,用最方便,最快捷的方式找到你需要的图书。
(3)提供了图书购物所需的各种工具与网站,满足你的图书购买需求。
(4)公正性很强(大站.专站.小站)排列顺序分明.公平公正的图书网址TOP排行
4、数据库设计
本系统使用数据库引擎为HSQLDB。数据库文件SIMS(student information management system)。该系统表: 1 图书基本信息表(book)图书分类基本信息表(bookcat)客户基本信息表(storeuser)订单信息表(orders)订单条目详细信息表(orderdetails)
== 1 =========================================== 字段名 描述
类型
id 图书编号
int catid 图书分类编号 int
name 图书名称
varchar price 图书价格
int saleprice 销售价格
int descript 图书介绍
varchar author 图书作者
varchar contents 图书目录
varchar image 图书封面图片存放路径 varchar
== 2 =========================================== 字段名 描述
类型
id 图书分类编号 int
catname 图书分类名称 varchar
== 3 =========================================== 字段名 描述
类型
username 用户名
varchar password 密码
varchar name 客户姓名
varchar tel 客户电话
varchar
address 客户地址
varchar email 客户电子邮件地址 varchar
== 4 =========================================== 字段名 描述
类型
id 订单编号 int
username 订单对应用户名 varchar time 产生订单的时间 smalldatetime delivery 订单对应送货方式 varchar payment 订单对应付款方式 varchar
== 5 =========================================== 字段名 描述
类型
orderid 订单编号
int bookid 图书编号
int count 订购数量
int price 该条目对应价格 int 建立数据库1、2、数据库连接
package s2jsp.lg.dao.impl;import java.sql.*;public class BaseDao {
public final static String DRIVER = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;
// 数据库驱动
public final static String URL
= “jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=bbs”;
// url
public final static String DBNAME = “";
// 数据库用户名
public final static String DBPASS = ”sa“;
// 数据库密码
/**
* 得到数据库连接
* @throws ClassNotFoundException
* @throws SQLException
* @return 数据库连接
*/
public Connection getConn()throws ClassNotFoundException, SQLException{
Class.forName(DRIVER);
//注册驱动
Connection conn = DriverManager.getConnection(URL,DBNAME,DBPASS);
//获得数
据库连接
return conn;
//返回连接
}
/**
* 释放资源
* @param conn 数据库连接
* @param pstmt PreparedStatement对象
* @param rs 结果集
*/
public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs){
/* 如果rs不空,关闭rs */
if(rs!= null){
try { rs.close();} catch(SQLException e){e.printStackTrace();}
}
/* 如果pstmt不空,关闭pstmt */
if(pstmt!= null){
try { pstmt.close();} catch(SQLException e){e.printStackTrace();}
}
/* 如果conn不空,关闭conn */
if(conn!= null){
try { conn.close();} catch(SQLException e){e.printStackTrace();}
}
}
/**
* 执行SQL语句,可以进行增、删、改的操作,不能执行查询
* @param sql 预编译的 SQL 语句
* @param param 预编译的 SQL 语句中的‘?’参数的字符串数组
* @return 影响的条数
*/
public int executeSQL(String preparedSql,String[] param){
Connection
conn = null;
PreparedStatement pstmt = null;
int
num
= 0;
/* 处理SQL,执行SQL */
try {
conn = getConn();
// 得到数据库连接
pstmt = conn.prepareStatement(preparedSql);
// 得到PreparedStatement对象
if(param!= null){
for(int i = 0;i < param.length;i++){
pstmt.setString(i+1, param[i]);
// 为预编译sql设置参数
}
}
num = pstmt.executeUpdate();
// 执行SQL语句
} catch(ClassNotFoundException e){
e.printStackTrace();
// 处理ClassNotFoundException异常
} catch(SQLException e){
e.printStackTrace();
// 处理SQLException异常
} finally {
closeAll(conn,pstmt,null);
// 释放资源
}
return num;
} }
5.详细设计
(1)JSP概述
网上书店系统中把数据库的连接参数写在dbconn.properties文件中,再用一个Java类来生成一个数据库连接对象以供其他程序使用。网上书店的首页显示的内容最多,但源代码并不长,原因是:一是因为一些多个页面共用的代码被放入另一个文本文件或JSP文件中,在需要的地方包含进来,减少了代码量,提高了代码的可复用程度;二是系统较好地进行了模块化的设计与开发,在JSP页面中很少用到Java代码,所有业务逻辑都用Java类来完成,JSP页面中只是简单的展现数据。JSP是Sun公司在Java和Servlet技术基础上推出的一种新型的服务器端动态脚本技术。它已经逐渐成为架设电子商务网站的主流技术。它的以下特点决定了本系统为什么采用JSP作为Web应用程序的开发工具。⒈JSP将内容的生成和显示进行分离 2.JSP程序运行在服务端
3.高性能的编译运行机制 4.继承了Java的跨平台特性 5.可重用组件 6.可扩展标签库 7.强大的数据库支持
(2)封装的操作;
*/ public class bookTypeOPBean extends dbOpertaion{ public ArrayList bookTypeArray=new ArrayList();public String bookTypeIdStr=new String(”“);/**。
(3)构造函数,将所有书藉类型信息查询出来:
*/
public bookTypeOPBean(){ String sqlString=”select * from book_type“;ResultSet rs=this.executeQuery(sqlString);try{ int i=0;while(rs.next()){ bookTypeBean bookType=new bookTypeBean();bookType.setBookTypeId(rs.getInt(”type_id“));bookType.setBookTypeName(rs.getString(”type_name“));bookTypeArray.add(i,bookType);i++;} } catch(SQLException e){ e.printStackTrace();bookTypeArray=null;} } /**
(4)通过书藉分类名称查找类型信息:
*/
public bookTypeBean selectBookTypeByName(String bookTypeName){ if(bookTypeName==null)return null;bookTypeBean bookType=new bookTypeBean();String sqlString=”select * from book_type where type_name= '“+bookTypeName+”'“;ResultSet rs=this.executeQuery(sqlString);try{ int i=0;if(rs.next()){ bookType.setBookTypeId(rs.getInt(”type_id“));bookType.setBookTypeName(rs.getString(”type_name“));} } catch(SQLException e){ e.printStackTrace();}
return bookType;} /**
(5)根据属性bookTypeIdStr查找书藉类型信息:
*/ public bookTypeBean selectBookTypeId(){ int bookTypeId=0;if(bookTypeIdStr!=null&&bookTypeIdStr.length()>1)try{ bookTypeId=Integer.parseInt(bookTypeIdStr);}catch(Exception e){ e.printStackTrace();} if(bookTypeId==0)return null;bookTypeBean bookType=new bookTypeBean();String sqlString=”select * from book_type where type_id=“+bookTypeId;ResultSet rs=this.executeQuery(sqlString);try{ if(rs.next()){ bookType.setBookTypeId(rs.getInt(”type_id“));bookType.setBookTypeName(rs.getString(”type_name“));} } catch(SQLException e){ e.printStackTrace();}
return bookType;} /**
(6)更新书藉分类:
* @param bookTypeId:类型ID号
* @param bookTypeName:类型名称
* @return int:返回更新的行数
*/ public int updateBookType(int bookTypeId,String bookTypeName){ if(bookTypeId==0||bookTypeName==null||bookTypeName.length()<=0)return 0;//------构造SQL语句------String sqlString=”update book_type set type_name='“+bookTypeName + ”' where type_id=“+bookTypeId;//------执行SQL语句------int i=this.executeUpdate(sqlString);return i;} /**
(7)新增一个书藉类型:
*/ public int insertBookType(String bookTypeName){ int i=0;//------构造SQL语句------String sqlString=”insert into book_type(type_name)values('“+bookTypeName+”')“;//------执行SQL语句------i=this.executeUpdate(sqlString);return i;} /**
(8)删除一个书藉类型:
* @param bookTypeId:要删除的类型ID号
* @return int:返回删除的类型个数
*/ public int deleteBookType(int bookTypeId){ int i=0;//------构造SQL语句------String sqlString=”delete book_type where type_id="+bookTypeId;
//------执行SQL语句------i=this.executeUpdate(sqlString);return i;} public ArrayList getBookTypeArray(){ return bookTypeArray;} public void setBookTypeArray(ArrayList bookTypeArray){ this.bookTypeArray = bookTypeArray;} public String getBookTypeIdStr(){ return bookTypeIdStr;} public void setBookTypeIdStr(String bookTypeIdStr){ this.bookTypeIdStr = bookTypeIdStr;} }(9)网上书店系统中所有的报错信息都保存在一个“.properties”文件中,文件内容如下:book.bookNameNull=书藉名没有输入!
book.typeIdNull=书藉所属类型没有选择!
book.priceNotFloat=价格不为数字!
book.priceRebateNotFloat=折扣输入不正确!
book.publishDateError=出版日期输入有误!
book.pageCountError=页数不为数字!
addbook.insertError=插入新书时出错!
updatebook.updateError=更新书藉信息时出错!
bookType.bookTypeHaved=书藉类型已存在!
bookType.insertError=插入新的书藉类型时出错!
booktype.updateError=更新书藉类型信息时出错!
user.userNameNull=用户名输入为空!
user.userPasswordNull=用户密码输入为空!
user.passwordNotEqual=两次输入的密码不一致!
user.insertError=插入新的用户时出错!
user.certCodeError=验证码不对!
user.userError=用户名或密码输入有误!
user.sessionError=用户会话已失效!
orderform.newError=生成新的订单时出错!
orderform.saveError=保存订单时出错!
(10):CREATE TABLE members(member_id
int auto_increment primary key,member_login
varchar(20)NOT NULL,member_password
varchar(20)NOT NULL,member_level
int NOT NULL DEFAULT 1,first_name
varchar(50)NOT NULL,last_name
varchar(50)NOT NULL,email
varchar(50)NOT NULL,phone
varchar(50)NULL,address
varchar(50)NULL,notes
text NULL,card_type_id
int NULL,card_number
varchar(50)NULL);(11):CREATE TABLE items(item_id
int auto_increment primary key,category_id
int NOT NULL,name
varchar(255)NOT NULL,author
varchar(100)NULL,price
float NOT NULL,product_url
varchar(255)NULL,image_url
varchar(100)NULL,notes
text NULL,is_recommended
tinyint NULL DEFAULT 0,rating
int default 0,rating_count
int default 0);用户手册:
(1)本程序运行环境为JDK1.4.2,可在windows98/windows2000/windows XP下运行。
(2)为了发布应用程序,我把本JAVA应用程序中涉及到的类文件压缩成一个JAR文件,名为StudentManager.jar,现在只要将StudentManager.jar文件拷贝到任何一个安装了JAVA运行环境(版本应为1.4.0及以上)的计算机上,双击鼠标就可以运行JAVA应用程序了。但如果计算机上安装了中文版的WinRAR解压缩软件并将该JAR文件与压缩软件做了关联,WinRAR解压缩软件会自动运行进行解压缩操作,使的JAVA程序无法运行。因此,创建了一个StudentManager.bat的批处理文件。所以,只要双击这个批处理文件就可以直接运行本程序了,省去了每次运行程序都要运行JDK软件的麻烦。
7.参考书籍
1.java面向对象程序设计(清华大学出版社)2.java课程设计(清华大学出版社)
3.java信息系统设计与开发实例(机械工业出版社)
8.心得体会:
通过这次课程设计我对JAVA面向对象的编程语言有了深刻的了解,对JAVA语言的简洁性和高效性有了自己进一步的体会,同时对JAVA的一些设计模式也有了一个大致的认识与了解,这门语言对于异常的控制非常有用,写出来的程序有更高的容错能力,系统稳定性也很好。
在整个程序的设计过程中,对软件编程的流程,包括需求分析、概要设计、详细设计等步骤又有了一个新的认识,尤其是需求分析的好坏在整个程序的设计中有着举足轻重的作用。需求分析没有做好,后面的步骤很容易受到负面的影响。
另外,在程序设计过程中,我们加强了团队的合作,了解了团队精神对于程序设计是至关重要的,这将会对我们以后的工作有很大的启发。
八.教师评语
第五篇:网上书店文档说明
ASP.NET程序设计教程
根据自己的内容填写题目
院系: 班级: 学号: 姓名:
目 录
一.
需求分析...........................................................................................................................3 二.
详细设计...........................................................................................................................3
2.1 修改配置文件...................................................................................................................3 2.2 连接数据库.......................................................................................................................3 2.3 程序调试...........................................................................................................................4 2.4 查看书籍...........................................................................................................................5 2.5.搜索书籍...........................................................................................................................6 2.6.收藏书籍.........................................................................................................................8 2.7.缺书的处理.....................................................................................................................9 三. 四.
心得体会...........................................................................................................................9 参考文献.........................................................................................................................10 一. 需求分析
此次我做的作业名字是网上书城。由于时间较短,写出来的程序并不多,实现的功能也有限。我能实现的功能有以下几个: 1.查看书籍
2.收藏书籍 3.添加到购物车
4.对书籍进行评论 5.按类别查找书籍
6.可以查看订单记录 7.输入书名可以搜索相关的书籍 8.可以将缺书的信息反馈出来。
二.详细设计
2.1 修改配置文件
对于整个网上书城程序来说,首先应该修改Web.config里面的内容,以便用于在连接数据库是减少不必要的麻烦。具体的修改如下:
这是在Web.config里面加入了一个连接字符串和一个appsettings节。为了连接数据库用的。
2.2 连接数据库
通过添加新的数据连接,将一个数据库文件进行测试连接,如果连接成功,则会看到下面的界面:
2.3 程序调试
按F5键进行程序的调试,出现主界面:
在首页的左上方是一个登录窗口。如果你已经有账号和密码了,就可以直接登录。如果没有,点击下面的注册,跳转到注册页面。注册一个新的账号,就可以登陆了。
注册成功后,登录才能使用其他的一些功能。比如修改个人资料和密码等。
2.4 查看书籍
在首页可以在分类浏览和热销书目中查看各种相关的书籍。在书籍的详细页面,有一个添加到购物车的超链接。点击它就会将这本书加入到购物车中。然后我们会在购物车里查看到我们选购的书籍。
2.5.搜索书籍
在首页点击搜索,弹出一个搜索窗口
这里的搜索可以只输入其中的任意一项进行搜索,也可以不输入任何条件直接搜索,在搜索完成后会给出总共的数目:
2.6.收藏书籍
在首页点击任意一本书籍,会出现对这本书的详细描述。如果你喜欢这本书,我们可以在这个界面对这本书进行购买和收藏。另外还可以对这本书进行评论,说出自己的看法。
2.7.缺书的处理
如果你喜欢的书籍没在这里面,你可以将信息反馈给我们,将书名和出版社的信息记录下来:
三. 心得体会
此次写的程序是以前没有练习过得,不仅用到了数据库,而且还把相关的类进行了分离。把类放在了App_code文件夹下,这样在操作时既明了又方便!
此外本程序还用到了许多CSS样式,为了增加程序的界面风格,使界面看起来更加美观。在这次所做的大作业中,不仅增强了我的动手能力,而且也增强了我对程序的改错能力。通过这次网上书城的程序编写,我对ASP.NET的认识更加的深刻了,对程序的理解也更深了。此次的大作业真的是一个很好地锻炼机会。相信以后再碰到这样的问题就会迎刃而解了!详细的代码请参考附件里的程序。
四. 参考文献
Asp.net程序设计教程