网上书店系统实验报告
- 格式:doc
- 大小:300.50 KB
- 文档页数:22
引言 (2)一、需求分析与可行性分析 (2)1.1 需求分析 (3)1.1.1网上书店的现状 (3)1.1.2网上购书的优势 (3)1.2 可行性分析 (6)二、系统基本功能设计 (6)2.1用户管理功能 (6)2.2客户能实现的功能 (7)2.3商家能实现的功能 (7)三系统软硬件环境的选择与说明 (7)3.1:网络环境的设置 (7)3.1.1:网络环境设计 (7)3.1.2服务器主机设计与选择 (8)3.2:系统软件平台设计 (8)3.2.1操作系统的选择 (8)3.2.2 数据库管理系统的选择 (8)3.3:应用服务器的选择与配置 (8)四、电子商务系统的总体规划与系统体系结构图 (12)4.1开发使用的技术 (12)4.2开发的软件环境 (12)4.3该系统的体系结构 (13)五、电子商务系统的功能模块和业务流程 (13)5.1本站基本功能 (13)5.2整体操作流程图 (14)5.3功能模块描述 (15)5.3.1销售模块 (15)5.3.2会员操作模块 (16)5.3.3 后台操作模块 (16)六、主要界面设计风格 (17)七、数据库说明,表、字段等的关系。
(17)八.主要功能的开发和说明 (20)8.1购物车功能代码 (20)8.2添加书籍主功能代码 (21)8.3修改书籍信息主功能代码 (21)8.4购买的代码 (22)8.5订单管理代码 (23)七、总结 (25)引言Internet的发展,为改变传统的商业运作模式提供了一种技术上的可行性的方案:利用Internet的技术和协议,建立各种企业内部网(Intranet),企业外部网(Extranet),通过廉价的通讯手段,将买家与卖家、厂商和合作伙伴紧密结合在了一起,消除时间与空间带来的障碍,从而大大的节约了交易成本,扩大了交易范围。
而在实际的生活中,这种方案已经被广泛的运用到了实际的商业活动中了,人们将这种交易模式称为:电子商务。
网上书店系统分析设计报告
一、引言
随着互联网的快速发展,网上购物已经成为人们日常生活中不
可或缺的一部分。
在这种背景下,网上书店系统应运而生。
网上书
店系统为用户提供了一个方便快捷的购书平台,使用户可以随时随
地浏览和购买各种图书。
本报告将对网上书店系统进行分析和设计,以确保其功能和性能的优化。
二、系统分析
1. 系统需求分析
(1)功能需求:用户注册与登录、图书浏览与搜索、购物车管理、订单管理、用户评价与推荐等。
(2)性能需求:系统应具备高并发能力、响应时间快、稳定性强等。
(3)安全需求:用户数据要保密,支付过程要安全可靠。
2. 系统结构分析
网上书店系统可以分为前端和后端两个主要部分。
(1)前端:包括用户界面和用户交互,用户可以在前端进行注册、登录、搜索图书、加入购物车和下订单等操作。
(2)后端:包括数据管理和业务逻辑处理,包括用户数据管理、图书数据管理、订单数据管理、支付处理等。
3. 数据库设计
(1)用户数据表:包括用户ID、用户名、密码、手机号、邮
箱地址等信息。
(2)图书数据表:包括图书ID、图书名称、图书作者、图书
价格、库存数量等信息。
(3)订单数据表:包括订单ID、用户ID、下单时间、订单状
态等信息。
三、系统设计
1. 前端设计
前端设计应注重用户友好性和可用性,包括以下关键设计要素:。
实习报告一、实习背景与目的随着互联网的普及和发展,网上书店逐渐成为人们购买图书的主要渠道之一。
为了深入了解网上书店的运营模式,提高自己的实践能力,我选择了在网上书店进行为期一个月的实习。
本次实习的主要目的是了解网上书店的运营流程,学习电子商务的基本知识,提高自己的网络营销和客户服务技能。
二、实习内容与过程在实习期间,我参与了网上书店的日常工作,主要包括以下几个方面:1. 商品管理:协助整理图书信息,上传新书信息,更新库存状态,确保商品信息的准确性和及时性。
2. 网站维护:参与网站页面的设计和修改,优化网站布局和功能,提高用户体验。
3. 网络营销:参与制定网络营销策略,进行微博、微信等社交媒体的宣传推广,提高店铺知名度和销售额。
4. 客户服务:负责解答客户咨询,处理订单和售后问题,提供优质的客户服务。
5. 数据分析:收集和分析销售数据,了解顾客需求和购买习惯,为营销策略提供依据。
三、实习收获与反思1. 了解了网上书店的运营流程和电子商务的基本知识,对电子商务有了更深入的认识。
2. 提高了自己的网络营销和客户服务技能,学会了如何通过社交媒体推广产品和提供优质的服务。
3. 学会了使用数据分析工具,掌握了数据分析的基本方法,能够根据数据提出营销建议。
4. 意识到电子商务市场竞争激烈,需要不断创新和提升自身能力才能在市场中立足。
四、实习总结通过本次实习,我对网上书店的运营模式有了更深入的了解,也积累了宝贵的实践经验。
我认识到,作为一名电子商务专业的学生,需要不断学习和提升自己的专业知识和技能,以适应不断变化的市场环境。
同时,我也明白了实践是检验真理的唯一标准,只有通过实践才能真正掌握所学知识,并将知识运用到实际工作中。
在今后的学习和工作中,我将继续努力,不断提高自己的实践能力,为将来的职业发展打下坚实的基础。
实验四软件概要设计实验目的和任务目的:完成系统的体系结构的建立和概要设计,并给出相应的规格说明书。
任务:认真分析实验三的结果,给出系统合理的体系结构,描绘系统结构图,并合理划分系统的各组成模块,最后给出系统的各部分设计规格说明书。
预习内容参考资料和阅读相关的国家有关软件开发的标准文档。
实验内容及要求功能结构图设计,软件处理流程设计,输出设计,存储文件格式设计(数据库结构设计),输入设计。
实验结果1功能结构图本软件具有如下主要功能:●图书管理数据添加数据删除数据修改●会员管理会员注册会员查询图书查询●查询管理条件查询模糊查询●购物车管理图书添加图书查询图书修改●订单管理订单查询订单修改功能描述●身份验证功能对登录用户的身份进行验证,通过者才可以进入系统;●条件查询功能(1)如按书名、名号、作者、出版社等(2)模糊查询●数据添加功能增加一条新记录●数据删除功能删除一条记录,并且提供确认机制。
●数据修改功能修改任意一条记录的所有域,其中书名不能为空●用户管理功能添加用户功能删除用户功能修改用户功能2处理流程系统启动后,进入主界面,然后通过身份验证进入系统里,根据系统配置文件将数据库导入,并设置各全局变量;由退出系统事件激活退出系统模块,退出系统;系统总体结构如图s3.1所示。
图s3.1 系统总体结构和模块外部设计功能分配系统控制功能初始化模块(M1)会员验证模块(M2)游客模块(M3)管理员验证模块(M4)图书查询(M21)购物车(M22)订单(M23)退出(M24)会员管理(M41)图书管理(M42)订单管理(M43)退出(M44)(1)图书查询功能条件查询模块(M211)模糊查询模块(M212)(2)购物车功能添加图书模块(M221)查询图书模块(M222)修改图书模块(M223)(3)订单功能订单查询模块(M231)订单修改模块(M232)(4)会员管理会员登陆模块(M411)会员注册模块(M412)会员注销模块(M413)(5)图书管理图书添加模块(M421)图书删除模块(M422)图书修改模块(M423)(6)订单管理执行订单模块(M431)查看订单模块(M432)3数据结构设计逻辑结构设计(1) 全局变量<1>记录总数RecordTotal: Int<2>浏览顺序数组Browse: INt Browse[max]<3>焦点记录FocusRecord: Int<4>表From: Action=”.link.jsp” method=”post”<5>内存记录缓冲区RecordBuffer: NameAdd RecordBufferNameAdd=: [max]Struct{ INt Index;Char Name[20];Char Company[80];Char Telnump[40];}NameAdd;(2)文件名adminlist.aspx 管理员首页addbook.aspx 添加图书信息bookdetail.spx 图书详情Booklist.aspx 管理员图书列表Cartok.aspx 填写购物车客户信息Headad.aspx 管理员登录首页头部Index.aspx 主页面Login.aspx 用户登录页面Morebookin.aspx 更多图书页面Reg.aspx 用户注册页面Tail.aspx 首页底部页面Updatesearchbook.aspx 修改查询图书(管理员)Userlist.aspx 用户信息列表(3)数据库Name-CarD Tabel 定义思考题1系统设计与需求分析的关系是什么?两者必须前后关联吗?2怎样描绘系统的体系结构?3怎样绘制符合规范的流成图?1在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
本科实验报告课程名称:系统分析与设计实验项目:《网上书店系统》实验实验地点:逸夫楼402专业班级:学号:学生姓名:指导教师:**2013年10月21、28日2013年11月4、11日目录1.实验准备:熟悉UML建模环境2.实验一用例图3.实验二类图4.实验三顺序图及通信图5.实验四活动图、状态图、组件图及部署图实验一用例图一、实验目的初步掌握UML用例图的创建方法及其用例的描述。
二、实验要求1.结合工具StartUML,熟悉UML用例图的模型元素。
2.使用StartUML工具建模网上书店系统的用例图。
三、实验主要设备:HP6460b四、实验内容:根据下面给出的网上书店问题陈述,分析该系统总体需求,建模网上书店系统的用例图并提供一个主要用例的事件流文档。
网上书店陈述:书店经理:我们原本是一个传统的实体书店,顾客要买书都是亲自到书店里来的,这样挺不方便。
面且随着书店销售图书种类和数量的增加以及顾客的增长,尤其是大量顾客到书店选购图书,使得书店场地不足,工作人员也很忙碌。
其实,还有一点就是,有不少人进入书店后并不买书,只是查找一些资料。
有的甚至会在这呆上很长的时间直到把书免费看完。
这种行为,工作人员一般是不阻止的,结果最后这些被看过的书会因为有阅读过的痕迹而影响销售。
而且现在电子商务已经发展起来了,所以我们想到借助网络,让顾客通过网上书店购买图书。
这样我们书店可以省掉大量的场地维护和工作人员成本支出,同时计算机可以方便的检索图书信息,让顾客可以足不出户以更优惠的价格买到需要的书。
系统分析员:能谈谈您对网上书店的要求吗?书店经理:网上书店要能实现对外和对内的功能,对外是顾客能在网上书店订购图书,提交订单。
对内,书店工作人员能够通过网上书店及时的看到这些订单,并进行处理。
为了把书送到顾客手里,我们已经联系了快递公司,初步达成协议,由他们往返场客和书店之间把图书送到顾客手里。
书店管理员受理订单后,就会通知快递公司送货。
第一章系统概述
目前,网上书店在国际互联网上可以实现的商务已经多样化,可以完成从最基本的信息展示、信息发布功能到在线交易、在线客户服务、在线网站管理功能等,可以说,传统书店所具备的功能几乎都可以在互联网上进行电子化的高效动作。
虽然传统书店规模有所不同,随着网上交易的开展,都将有力地改变企业的发展空间,会对企业的竞争力产生不可忽视的影响。
本实验所采用的开发环境主要是基于数据库系统的SQL Server 2008 和MyEclipse开发环境。
利用SQL Server 2008创建网上书店表,利用MyEclipse创建网上书店解决方案。
开发一套网上书店购书系统,可以让顾客通过浏览器浏览网站售书目录,从而挑选自己满意的图书,并下订单购买。
而网站后台人员需要维护网站会员信息、书籍信息以及订单信息等。
不过本实验我并没有成功的区分开普通用户和会员,所以在没买书的时候,必须要输入一个Id,没有Id的必须去注册,其实用一个session
模块功能说明
第三章数据库设计
数据库表概念结构设计
用户表:
管理员表:
购物车中表单表:
最终表单表(提交到管理员):
图书表:
数据库表概念关系模型1)管理员实体的E-R图:
4)订单实体(购物车)的E-R图
5)最终订单的E-R图
6)总实体E-R图
N
1 1 1
第四章系统实现功能
用户模块
购物车购买用户信息
管理员模块:
第五章程序订单
,,,LastOrserBean
, , , alterServlet,, , , , ......
, , , , ,....。
第1篇一、实验目的本次实验旨在通过设计与实现一个网络书城系统,掌握以下技能:1. 理解电子商务网站的基本架构和功能模块。
2. 掌握使用Java编程语言进行Web开发。
3. 熟悉SSM(Spring、SpringMVC、MyBatis)框架在Web开发中的应用。
4. 学习使用MySQL数据库进行数据存储和管理。
5. 提高团队协作能力和项目管理能力。
二、实验环境1. 开发工具:IntelliJ IDEA/Eclipse2. 服务器:Tomcat 9.03. 数据库:MySQL 5.74. 版本控制:Git三、系统需求分析网络书城系统主要面向广大读者,提供图书浏览、购买、评论、搜索等功能。
系统分为前台和后台两个部分。
前台功能模块:1. 首页:展示最新图书、热销图书、新品推荐等信息。
2. 商品分类:按图书类别展示图书信息。
3. 图书详情:展示图书详细信息,包括封面、简介、价格、评论等。
4. 购物车:用户可以将图书添加到购物车,进行结算。
5. 订单管理:用户可以查看订单状态、取消订单、申请退款等。
6. 个人中心:用户可以查看个人信息、修改密码、查看历史订单等。
7. 搜索:用户可以通过关键词搜索图书。
后台功能模块:1. 管理员登录:管理员登录系统进行管理。
2. 商品管理:管理员可以添加、修改、删除图书信息。
3. 订单管理:管理员可以查看、处理订单,包括发货、取消、退款等。
4. 用户管理:管理员可以查看、修改、删除用户信息。
5. 评论管理:管理员可以查看、删除用户评论。
四、系统设计1. 技术选型:采用SSM框架进行开发,数据库使用MySQL。
2. 系统架构:采用B/S架构,前端使用HTML、CSS、JavaScript等技术,后端使用Java编程语言。
3. 数据库设计:根据系统需求,设计图书、用户、订单、评论等数据表。
4. 功能模块设计:根据需求分析,将系统划分为多个功能模块,如首页模块、商品模块、购物车模块等。
本科实验报告课程名称:系统分析与设计实验项目:《网上书店系统》实验实验地点:逸夫楼402专业班级:学号:学生姓名:指导教师:**2013年10月21、28日2013年11月4、11日目录1.实验准备:熟悉UML建模环境2.实验一用例图3.实验二类图4.实验三顺序图及通信图5.实验四活动图、状态图、组件图及部署图实验一用例图一、实验目的初步掌握UML用例图的创建方法及其用例的描述。
二、实验要求1.结合工具StartUML,熟悉UML用例图的模型元素。
2.使用StartUML工具建模网上书店系统的用例图。
三、实验主要设备:HP6460b四、实验内容:根据下面给出的网上书店问题陈述,分析该系统总体需求,建模网上书店系统的用例图并提供一个主要用例的事件流文档。
网上书店陈述:书店经理:我们原本是一个传统的实体书店,顾客要买书都是亲自到书店里来的,这样挺不方便。
面且随着书店销售图书种类和数量的增加以及顾客的增长,尤其是大量顾客到书店选购图书,使得书店场地不足,工作人员也很忙碌。
其实,还有一点就是,有不少人进入书店后并不买书,只是查找一些资料。
有的甚至会在这呆上很长的时间直到把书免费看完。
这种行为,工作人员一般是不阻止的,结果最后这些被看过的书会因为有阅读过的痕迹而影响销售。
而且现在电子商务已经发展起来了,所以我们想到借助网络,让顾客通过网上书店购买图书。
这样我们书店可以省掉大量的场地维护和工作人员成本支出,同时计算机可以方便的检索图书信息,让顾客可以足不出户以更优惠的价格买到需要的书。
系统分析员:能谈谈您对网上书店的要求吗?书店经理:网上书店要能实现对外和对内的功能,对外是顾客能在网上书店订购图书,提交订单。
对内,书店工作人员能够通过网上书店及时的看到这些订单,并进行处理。
为了把书送到顾客手里,我们已经联系了快递公司,初步达成协议,由他们往返场客和书店之间把图书送到顾客手里。
书店管理员受理订单后,就会通知快递公司送货。
管理信息系统实训报告课题: 网上书店管理系统班级:信息管理二班姓名:王平博学号:7一.开发环境与项目目标(1)开发背景目前社会上信息管理系统发展飞速,越来越多的企事业单位都引入了信息管理软件来管理自己日益增长的各种信息。
各种网店也相继采用了不同的管理系统来管理商品信息,取得了很大的成效,网上书店管理系统也在功能上不但完善和加强,为了使书店管理更加规范化,程序化,科学化,我们研发了这次的网上书店管理系统。
(2)开发目的本系统的功能是为管理者提供方便的管理、为顾客提供快捷的购买。
系统的主要子模块有图书管理,顾客管理等,可实现日常图书进货、发货业务,最终达到提高工作效率的目的。
顾客可以进入图书查询界面通过图书类别、图书名称、图书编号、折扣额度等四种方式查询图书,查到满意的图书后可点击购买。
管理者可以通过登录管理界面实现对图书的添加、修改、删除操作以及发货和查看顾客信息,管理员可以维护客户注册信息、维护图书信息、处订定单信息、维护系统公告、网上售书。
二.开发的可行性分析可行性报告可行性分析是在进行初步调查后所进行的对系统开发必要性和可行性的研究,所以也称为可行性研究。
本系统的功能是为管理者提供方便的管理、为顾客提供快捷的购买。
(1)性能可行性网上书店不断发展,为了适应新环境,网上书店信息系统利用asp技术,解决图书各个流程的控制,提供一个良好的,易操作的,直观的用户界面,从而实现对网上书店信息的更优化管理。
(2) 技术可行性随着计算机、网络通讯和信息技术,特别是编程语言技术的发展。
电子商务在国际上得到广泛的应用,取得了巨大的成功。
我国也不例外,特别是各大电子商务网站从无到有,得到很大的发展,并取得成功。
为了适应新环境下的新的销售模式和顾客销售方式的改变,开发的这个网上书店电子商务网站是基于Internet/Intranet 及Web技术,建立以Browser/Server 为结构模式、以数据库为后台核心应用、以服务,销售为目的信息平台。
网上书店实验报告网上书店实验报告一、引言随着互联网的快速发展,电子商务成为了人们购物的一种方便而受欢迎的方式。
其中,网上书店作为电子商务的一种形式,为读者提供了更加便捷的购书体验。
本实验旨在探讨网上书店的优势和不足之处,以及对传统实体书店的影响。
二、实验设计1. 实验对象:本实验选择了一家知名的网上书店作为研究对象,以其为基础进行实验设计。
2. 实验方法:通过对网上书店进行深入调研和用户体验分析,了解其优势和不足之处。
三、网上书店的优势1. 便捷的购书体验:网上书店提供了24小时不间断的购书服务,无论何时何地,用户都可以随时购买自己喜欢的图书。
这种便捷性使得用户不再受时间和地点的限制,大大提高了购书的便利度。
2. 丰富的图书资源:相比传统实体书店,网上书店拥有更为庞大的图书资源。
用户可以轻松搜索到各种类型的图书,包括畅销书、学术著作、小众读物等。
这种丰富性为读者提供了更多的选择空间,满足了不同人群的阅读需求。
3. 个性化推荐系统:网上书店通过用户的浏览和购买记录,利用智能算法进行个性化推荐。
这种推荐系统能够根据用户的兴趣和偏好,提供更加准确的推荐结果。
用户可以更快地找到自己感兴趣的图书,提高了购书的效率。
四、网上书店的不足1. 无法亲身感受图书:与实体书店相比,网上书店无法让用户亲身感受图书的纸质质感和味道。
对于一些喜欢翻阅书页、品味纸张的读者来说,网上书店的购书体验可能无法完全取代传统书店。
2. 物流速度和服务质量:虽然网上书店提供了便捷的购书方式,但是物流速度和服务质量也是用户关注的重点。
一些用户反映,网上书店的物流速度不够快,而且在售后服务方面存在一定的问题。
这些问题需要网上书店进一步改进,提高用户的购书体验。
五、网上书店对传统实体书店的影响1. 竞争压力加大:随着网上书店的兴起,传统实体书店面临着巨大的竞争压力。
一些用户更倾向于选择网上购书,导致实体书店的销售额下降。
传统实体书店需要寻找创新的方式,吸引更多的读者前来购书。
JSP网上书店系统实验报告一、引言随着互联网的普及,电子商务逐渐深入人们生活中的各个领域。
传统的实体书店面临着越来越大的市场压力,越来越多的人选择在网上购买书籍。
因此,网上书店系统逐渐成为了现代书店的一种主要经营方式。
本次实验旨在设计并实现一款JSP网上书店系统。
通过该系统,用户可以在网上浏览、购买、评论书籍,完成对书籍的全方位了解;管理员可以对网上书店的内容进行管理并生成订单。
二、需求分析1. 用户系统用户需求是网上书店系统的核心。
网上书店系统需要支持用户登录和注册,并保证账户安全。
同时,用户需要可浏览、搜索、评价、购买书籍。
网站还要根据用户书籍评价生成用户评分和热门书籍推荐。
2. 管理员系统网上书店系统还需要管理员,通过管理员功能,可以实现对网上书店的内容管理。
管理员需要实现书籍、分类的增删查改,订单的管理等功能。
3. 交互界面用户和管理员都需要一个友好的交互界面,书籍分类需要图文展示,购物车和支付功能需要简单易用。
三、系统设计1. 架构设计网上书店系统采用B/S架构,前端使用JSP、HTML、CSS等技术,后端使用Java技术,采用MySQL数据库,Tomcat服务器进行部署。
2. 功能模块划分网上书店系统主要分为用户模块和管理员模块。
具体模块如下:•用户模块:登录、注册、书籍浏览、书籍搜索、评价、购买、个人信息管理等。
•管理员模块:登录、添加书籍、删除书籍、修改书籍信息、订单管理等。
•其他功能模块:购物车、订单管理。
3. 系统流程图系统流程图系统流程图四、实现步骤1. 开发环境准备开发环境:JDK8.0、MySQL5.7、Tomcat8.5、Eclipse。
2. 前端页面设计使用JSP、HTML、CSS等技术实现前端页面设计。
其中,书籍分类展示使用Bootstrap框架实现。
3. 后端代码实现后端代码采用基于MVC模式的Servlet和JSP技术实现。
基于JavaBean实现模型层,采用DAO设计模式进行数据库访问操作。
数据库课程设计实验报告网上书店目录1.引言 (2)1.1实验目的 (2)1.2 问题描述 (2)2.系统概述 (2)2.1 功能简述 (2)2.2 性能需求 (2)2.3 数据库中的关系模型 (2)3.整体设计 (3)4.软件环境和高级语言的使用 (3)5.详细设计 (4)5.1数据库的建立 (4)5.1.1 建立客户账户信息的表 (4)5.1.2 建立出版商的表 (4)5.1.3 建立图书表 (4)5.1.4 建立用户登录的表 (4)5.1.5 插入图书信息 (5)5.2 功能实现的部分代码 (5)6.系统测试 (17)7.实验总结 (20)1.引言1.1实验目的巩固复习曾经学习过的数据库课程,并通过实际的实验对所学的知识加以巩固以达到模拟现实生活中实际用例的目的。
1.2问题描述设计一个网上书店系统,满足用户需求。
2.系统设计2.1功能简述网上书店主要分为前台浏览和后台管理两个部分。
前台浏览部分,主要由普通的顾客进行操作,主要功能有浏览图书、查看图书详细信息,添加购物车和结账。
后台管理部分的用户是系统管理员,主要功能包括图书的增、删、改、查。
网上书店功能结构图2.2 性能需求网上书店应该能够提供友好的用户界面,使各类用户的工作量最大限度减少。
同时系统需要具有良好的运行效率,响应时间要尽可能短。
2.3数据库中的关系模型数据库中的关系主要有图书(ISBN号,书名,版权,版本号,出版商,价格),订单信息(书籍名称,数量,价格,小计),客户账户信息(客户名,邮编,电话,信用卡号,购书总额)。
E-R图如下:3.整体设计进入网上书店系统,首先是登陆页面,输入正确的用户名和密码后进入首页。
这时,可以选择“浏览图书”或者“书架维护”。
“浏览图书”是普通顾客操作的页面,进入后会出现所有图书的信息。
点击图书的ISBN,可以进入每本图书的详细信息页面,之后可以选择“放入购物车”和“查看购物车”。
点击“放入购物车”之后,可以选择“继续购物”或者“结账”,点击“继续购物”则回到“浏览图书”的页面,点击“结账”则显示订单处理页面。
网上购书系统实验报告网上购书系统实验报告一、引言随着互联网的迅速发展,网上购物已经成为人们生活中不可或缺的一部分。
网上购书系统作为其中的一种形式,为人们提供了便捷、快速的购书方式。
本实验旨在通过设计和搭建一个网上购书系统,探讨其功能和用户体验,并分析其优势和不足之处。
二、实验设计1. 系统功能设计网上购书系统应具备以下基本功能:- 用户注册与登录:用户可以通过注册账号并登录系统。
- 图书浏览与搜索:用户可以浏览系统中的图书信息,并通过关键词搜索特定图书。
- 购物车管理:用户可以将心仪的图书添加到购物车,并进行管理和结算。
- 订单管理:用户可以查看已购买的图书订单,并进行评价和退款。
- 用户评价与推荐:用户可以对购买过的图书进行评价,并根据系统推荐的相关图书进行购买。
2. 界面设计为了提高用户体验,网上购书系统的界面设计应简洁、直观,并符合用户习惯。
主要包括以下几个方面:- 首页:展示图书分类、热门图书、新书推荐等信息,吸引用户浏览。
- 图书详情页:展示图书的详细信息,包括封面、作者、出版社、简介等。
- 购物车页面:展示用户已添加的图书,提供结算和管理功能。
- 订单页面:展示用户已购买的图书订单,并提供评价和退款功能。
- 个人中心:展示用户的个人信息,包括账号、地址、联系方式等。
三、实验过程1. 系统搭建通过使用编程语言和数据库技术,我们成功搭建了一个网上购书系统。
系统采用了前后端分离的架构,前端使用HTML、CSS和JavaScript进行界面设计,后端使用Java编写业务逻辑并与数据库进行交互。
2. 功能测试在系统搭建完成后,我们对各项功能进行了测试。
首先,我们注册了几个测试账号,并进行了登录测试。
通过输入账号和密码,系统能够正确验证用户身份,并跳转到用户的个人中心页面。
接下来,我们进行了图书浏览和搜索功能的测试。
通过在搜索框中输入关键词,系统能够返回相关的图书信息,并正确显示在界面上。
同时,我们也对购物车管理和订单管理功能进行了测试,包括添加图书到购物车、结算订单和评价图书等。
实验报告一、实验题目编程实现“网上书店系统”二、题目分析1、需求分析要开发一个系统,首先要了解该系统到底想做什么,需要实现怎样的功能,这就是需求分析。
网上书店从大的需求方面看,就是要实现通过互联网能够进行书籍的购买及相关的管理等功能,大致需要提供下面的一系列功能:*浏览书籍(模糊查询)*选择需要购买的书籍*可以继续选择别的书籍,并且可以购买该书籍*选择了需要购买的书籍后,进行购买书籍操作*保存选中的图书和数量UML图:2、数据分析图书信息数据库购物车本次会话有效1、页面转移关系再次查询2、对象模型(1)界面对象(View)*查询页Search.jsp*图书目录页Directory.jsp*购物车页Cart.jsp*定单页Order.jsp(2)控制器(Control)*CtrlServlet 负责响应输入命令*包括:模糊查询key、查看购物车cart、结算order 、继续选书continue、再次查询search(3)业务模型*图书信息:BookBean 实体类的会话Bean*购物车信息:CartBean 会话Bean(1)图书信息(数据库表、查询结果)*书号ISBN char[24] 主键*书名Title char[64]*作者Author char[32]*出版社Press char[32]*价格Price double(2)购物车信息*书号ISBN char[24]*数量Number integer(3)共享数据*查询结果和选中的图书信息*作为session参数4、动态模型5、EJB接口设计(1)BookBean 管理图书信息(封装数据库)*find( string key )*根据关键字从数据库中查找出图书信息记录(数组)条件:书名、作者、出版社名中包含关键字get( string isbn )*根据书号,找出图书信息记录(2)CartBean 管理购物车信息(本次会话有效)*add( string isbn ) 添加记录*gest( ) 获得记录数组*set( string isbn, integer num ) 设置购买数量5、控制器(1)CtrlServlet 的输入*来自查询页page=“search”&key=关键字*来自图书目录页page=“directory”&submit=“cart”&choose=书号数组page=“directoty”&submit=“search”*来自购物车页page=“cart”&submit=“order”page=“cart”&submit=“continue”page=“cart”&submit=“search”(2)算法概要*模糊查询search按照key 从BookBean 查询图书,转交图书目录页*查看购物车将选定图书存入CartBean,转交购物车页*结算计算CartBean中的图书总价,从BookBean获得图书信息,连同地址,转交定单页*继续选书返回图书目录页*再次查询转向查询页*异常处理直接生成错误信息页面四、实现技术1、采用MVC 模式(1)JSP 实现页面视图View(2)Servlet 实现控制Control(3)EJB 实现业务模型Model2、交互关系(1)JSP 表单动作(form)⎝ CtrlServlet(2)Servlet 转发⎝ JSP 页面3、数据传输(1)Servlet 调用EJB 对象获得数据(2)Servlet 通过session 参数传递给JSP 页面五、实验源代码1、BooksOnline-ejb(1)Books①Books.java:import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;dQueries;import dQuery;import javax.persistence.Table;@Entity@Table(name = "BOOKS")@NamedQueries({@NamedQuery(name = "Books.findByIsbn", query = "SELECT b FROM Booksb WHERE b.isbn = :isbn"), @NamedQuery(name = "Books.findByTitle", query = "SELECTb FROM Books b WHERE b.title = :title"), @NamedQuery(name = "Books.findByAuthor",query = "SELECT b FROM Books b WHERE b.author = :author"), @NamedQuery(name = "Books.findByPress", query = "SELECT b FROM Books b WHERE b.press = :press"), @NamedQuery(name = "Books.findByPrice", query = "SELECT b FROM Books b WHERE b.price = :price")})public class Books implements Serializable {private static final long serialVersionUID = 1L;@Id@Column(name = "ISBN", nullable = false)private String isbn;@Column(name = "TITLE")private String title;@Column(name = "AUTHOR")private String author;@Column(name = "PRESS")private String press;@Column(name = "PRICE")private Double price;public Books() {}public Books(String isbn) {this.isbn = isbn;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn = isbn;}public String getTitle() {return title;}public void setTitle(String title) { this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) { this.author = author;}public String getPress() {return press;}public void setPress(String press) {this.press = press;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}@Overridepublic int hashCode() {int hash = 0;hash += (isbn != null ? isbn.hashCode() : 0);return hash;}@Overridepublic boolean equals(Object object) {// TODO: Warning - this method won't work in the case the id fields are not setif (!(object instanceof Books)) {return false;}Books other = (Books) object;if ((this.isbn == null && other.isbn != null) || (this.isbn != null && !this.isbn.equals(other.isbn))) {return false;}return true;}@Overridepublic String toString() {return "Books.Books[isbn=" + isbn + "]";}}②BooksFacade.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;@Statelesspublic class BooksFacade implements BooksFacadeRemote {@PersistenceContextprivate EntityManager em;public void create(Books books) {em.persist(books);}public void edit(Books books) {em.merge(books);}public void remove(Books books) {em.remove(em.merge(books));}public Books find(Object id) {return em.find(Books.class, id);}public List<Books> findAll() {return em.createQuery("select object(o) from Books as o").getResultList(); }public ArrayList<Books> search(String key) {List<Books> all = this.findAll();if(all.isEmpty()) {return null;}ArrayList<Books> result = new ArrayList<Books>();for(Books current : all) {if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerC ase().contains(key)||current.getPress().toLowerCase().contains(key)) {result.add(current);}}return result;}}③BooksFacadeRemote.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Remote;@Remotepublic interface BooksFacadeRemote {void create(Books books);(2)Cart①Cart.javaimport java.io.Serializable;public class Cart implements Serializable {private String isbn;private String title;private double price;private int number;public Cart(String isbn,String title,double price,int number) { this.isbn = isbn;this.title = title;this.price = price;this.number = number;}public String getIsbn() {return this.isbn;}public String getTitle() {return this.title;}public double getPrice() {return this.price;}public int getNumber() {return this.number;}public void setIsbn(String isbn) {this.isbn = isbn;}public void setTitle(String title) {this.title = title;}public void setPrice(double price) {this.price = price;}public void setNumber(int number) {this.number = number;}}②CartBean.javaimport javax.ejb.Stateful;import java.util.ArrayList;@Statefulpublic class CartBean implements CartRemote {private ArrayList<Cart> record;private boolean initialed = false;public void add(String isbn,String title,double price){ record.add(new Cart(isbn,title,price,1));}public void set(String isbn,int number){for(Cart current : record) {if(current.getIsbn().equals(isbn)) {current.setNumber(number);}}}public boolean exist(String isbn) {for(Cart current : record) {if(current.getIsbn().equals(isbn)) {return true;}}return false;}public ArrayList<Cart> get(){ArrayList<Cart> result = new ArrayList<Cart>();for(Cart current : record){ result.add(newCart(current.getIsbn(),current.getTitle(),current.getPrice() ,current.getNumber()));}return result;}public boolean initialed() {return this.initialed;}public void create(){record = new ArrayList<Cart>();initialed = true;}}void edit(Books books);void remove(Books books);Books find(Object id);List<Books> findAll();ArrayList<Books> search(String key);}③CartRemote.javaimport javax.ejb.Remote;import java.util.ArrayList;@Remotepublic interface CartRemote {public void add(String isbn,String name,double price);public void set(String isbn,int number);public boolean exist(String isbn);public ArrayList<Cart> get();public boolean initialed();public void create();}2、BooksOnline-warControlServlet.javaimport Books.BooksFacadeRemote;import Cart.CartRemote;import java.util.Enumeration;import java.io.IOException;import java.io.PrintWriter;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ControlServlet extends HttpServlet {@EJBprivate CartRemote cartBean;@EJBprivate BooksFacadeRemote booksFacade;/*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.* @param request servlet request* @param response servlet response*/protected void processRequest(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();try {if(request.getParameter("page").equals("search")) {request.getSession().setAttribute("directory",booksFacade.search(request.getParameter("key").toLowerCase()));response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("cart")) {if(!cartBean.initialed()) {cartBean.create();}Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")) {if(!cartBean.exist(request.getParameter(name))) {cartBean.add(request.getParameter(name),booksFacade.find(request.getParameter (name)).getTitle(),booksFacade.find(request.getParameter(name)).getPrice()); }}}request.getSession().setAttribute("cart",cartBean.get());response.sendRedirect("Cart.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("search")) {response.sendRedirect("Search.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("order")) {double sum = 0;Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")&&!name.equals("address")) {cartBean.set(name,Integer.parseInt(request.getParameter(name)));sum +=booksFacade.find(name).getPrice()*Integer.parseInt(request.getParameter(name) );}}request.getSession().setAttribute("cart",cartBean.get());request.getSession().setAttribute("fee",sum);request.getSession().setAttribute("address",request.getParameter("address")); response.sendRedirect("Order.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("continue")) {response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("search")) {response.sendRedirect("Search.jsp");}} finally {out.close();}}// <editor-fold defaultstate="collapsed" desc="HttpServlet 方法。
网上书店系统分析报告一、引言随着互联网的高速发展,人们购书的方式也发生了巨大变化。
传统的实体书店逐渐衰退,而网上书店凭借其便利和多样化的选择成为人们购书的首选。
本文将对网上书店系统进行分析,探讨其功能、特点和优势,以及在市场竞争中的地位和发展前景。
二、系统概述网上书店系统是基于互联网平台构建的一个线上购书平台。
用户可以通过网上书店系统方便地搜索、浏览和购买各类图书。
系统通过在线支付和快速配送,实现了购书的便捷化和时效性。
三、功能分析1. 用户注册与登录:用户可以通过注册账号获得个人信息并登陆系统。
2. 图书搜索与浏览:用户可以通过关键词搜索、分类浏览等方式查找所需图书。
3. 购书与支付:用户可以将选中的图书添加到购物车并进行在线支付。
4. 个人信息管理:用户可以管理个人信息、查看和修改订单信息。
5. 社区互动功能:用户可以在系统内参与图书评论、评分等社区活动。
6. 客服与售后服务:系统提供在线客服和售后服务,用户可以咨询问题和提交退换货申请。
四、特点与优势1. 多样化的图书选择:网上书店系统集合了大量的图书资源,用户可以从全球范围内选择各类图书。
2. 便利的购书体验:用户可以随时随地通过互联网进行选购,免去了传统实体书店的时间和地点限制。
3. 实时更新和推荐:系统根据用户的浏览历史和购买记录,推荐相关的图书,提高用户的购书体验。
4. 安全的支付和配送:系统采用安全的在线支付和高效的配送体系,保证用户的支付和图书送达的安全性和时效性。
5. 个性化的服务:用户可以管理个人信息和订单,系统可以根据用户的需求和偏好提供个性化的服务。
五、市场竞争与前景随着互联网的普及,网上书店市场竞争日趋激烈。
大型的电商平台如亚马逊、京东等已经布局了网上书店系统并拥有庞大的用户基础。
然而,网上书店系统仍有巨大的发展潜力。
随着人们眼界的开阔和消费观念的转变,对图书的需求将会进一步增加。
未来,网上书店系统可以通过不断创新和服务优化,提升用户体验和降低成本,进一步拓宽市场份额。
实习报告一、实习背景及目的随着互联网技术的飞速发展和人们生活水平的不断提高,网上购物已经成为日常生活中不可或缺的一部分。
在众多商品中,书籍作为一种传承知识和文化的载体,其销售方式也逐渐从传统的实体书店转向在线书城。
为了适应这一趋势,许多电商平台纷纷推出了网上购书系统。
本次实习旨在通过参与网上购书系统的开发与运营,了解并掌握电子商务平台的基本运作模式,提高自己在实际工作中的动手能力和团队协作能力。
二、实习内容与过程1. 系统需求分析在实习的第一阶段,我们对网上购书系统进行了需求分析。
通过查阅相关资料和与团队成员讨论,我们明确了系统的功能需求,包括用户注册、登录、图书浏览、搜索、分类、评论、购物车、订单管理、支付结算等。
2. 系统设计与开发在需求分析的基础上,我们进行了系统的设计与开发。
前端采用HTML、CSS、JavaScript等技术构建用户界面,使用Vue.js框架实现前后端分离;后端采用Java、Spring、MyBatis等技术,搭建基于Maven的工程结构。
同时,我们使用了MySQL数据库存储用户、图书、订单等数据。
3. 系统测试与优化在系统开发完成后,我们进行了功能测试、性能测试和安全性测试,确保系统满足用户需求并具备良好的使用体验。
在测试过程中,我们发现并修复了一些bug,对系统进行了优化,提高了系统的稳定性和可靠性。
4. 系统运营与推广为了提高网上购书系统的市场竞争力,我们进行了运营与推广活动。
通过社交媒体、网络广告等多种渠道宣传系统,吸引用户注册和使用。
同时,我们积极与出版社、图书商家合作,扩大图书品种,提高用户购书体验。
5. 数据分析与反馈在实习过程中,我们对用户行为进行了数据分析,了解用户需求和购买习惯,为系统优化和运营策略提供依据。
我们还收集用户反馈,及时调整和改进系统功能,提高用户满意度。
三、实习收获与反思通过本次实习,我深刻认识到网上购书系统的设计与运营是一个复杂而又有挑战性的过程。
网上书店实验数据分析报告实验一网上书店数据库的创建及其查询实验类型:验证性实验学时:2实验目的:理解数据库的概念;理解关系(二维表)的概念以及关系数据库中数据的组织方式;了解数据库创建方法。
实验步骤:步骤1:选择“bookstore”数据源,进入“查询设计”窗口。
步骤2:选择查询中需要使用的表。
在“添加表”对话框的“表”列表中分别选择“书”和“出版社”表,并单击“添加” 按钮将它们添加至表窗格。
查询设计4—低价图书信息查询步骤1:选择数据源并添加表。
选择“bookstore”数据源,进入“查询设计”窗口。
在“添加表”对话框中选择“书”表,将其添加到“表”窗格中。
步骤2:选择字段。
在“查询设计”窗口的“表”窗格中,双击“书”表的“书名”、“出版年份”和“单价” 字段。
步骤3:设置查询条件,显示查询结果。
在“条件”窗格的“条件字段”行的第一列中选择“单价”,并在下一行中输入“<10 ”查询设计5—新书信息查询步骤1:选择“bookstore”数据源并添加“书”和“作者”表。
步骤2:选择字段。
在“查询设计”窗口的“表”窗格中,双击“书”表的“书名”、“单价”,以及“作者”表的“姓名”字段。
步骤3:设置查询条件,显示查询结果。
在“条件”窗格的“条件字段”行的第一列中选择“出版年份”,并在下一行中输入“2007”实验1-3 “响当当”网上书店会员分布和图书销售信息查询实验目的•掌握复杂的数据查询方法:多表查询、计算字段和汇总查询步骤1:选择“bookstore”数据源并添加“会员”表。
步骤2:选择分类字段、汇总字段和汇总方式。
本查询的分类字段是会员的城市,汇总字段是会员号,汇总方式是计数。
在“查询设计”窗口的“表”窗格中,双击“会员”表的“城市”和“会员号”字段。
然后双击“会员号”字段的列标,在“编辑列”对话框中输入列标“会员人数”,并选择汇总方式:“计数”,步骤3:设置查询条件。
若仅仅想了解上海和北京的会员人数,可以在条件窗格中设置相应的条件,二、查询设计2—图书总订购量和总销售金额查询步骤1:选择“bookstore”数据源,并添加“订单”、“订单明细”和“书”表。
信息学院软件工程课程设计-----小组报告2011年12月20科技大学课程设计题目:科大网上书店学院:信息科学与工程学院班级:计算机09-1班组长:春生同组其他成员:王东升恒德新课程教师:红梅实验指导教师:红梅实验地点:信息学院软件实验室完成起止日期:2011年9月27----2011年12月20日[正文]目录第一章:课程设计概述1-1 实验目的1-2 实验容概述1-3 实验要求1-4 参考文献第二章:系统设计模型2-1 需求分析2-2 系统总体设计2-2-1 功能结构2-2-2 架构设计2-2-3 运行环境2-3 数据流图2-3-1 前台用户数据流图2-3-2 后台管理员数据流图2-4 系统E—R图2-4-1 系统总E-R图2-4-2 系统管理员实体图2-4-3 商品信息实体图2-4-4 用户信息实体图2-4-5 订单信息实体图第三章:实现项目的过程与步骤3-1系统数据库的设计3-2 系统数据库表关系图3-3 功能总体说明3-3-1 系统流程图3-3-2 目录结构说明3-4 各功能模块的实现3-4-1 数据库的连接3-4-2 的首页3-4-3 用户注册管理3-4-4 购物车管理3-4-5 图书管理3-4-6 订单管理3-4-7 用户登陆管理3-4-8 系统数据管理第四章:遇到的困难与获得的主要成果第五章:测试运行记录5-1 系统运行环境的搭建5-2 系统的测试5-2-1 系统关键部分测试分析5-2-2 测试结果分析与说明5-2-3 系统安全与性能分析5-3 系统中存在的问题及解决方法第一章系统设计概述1-1实验目的1. 通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。
特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。
2. 为学生适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识(例如,软件工程、程序设计语言、操作系统、数据库、网络编程等)创造实践机会。
网上书店实验报告一、实验背景随着互联网技术的飞速发展,电子商务在各个领域得到了广泛的应用,网上书店作为其中的一个重要组成部分,逐渐改变了人们的购书方式和阅读习惯。
为了深入了解网上书店的运营模式、用户体验和市场竞争力,我们进行了本次实验。
二、实验目的本次实验旨在通过对多家网上书店的实际操作和分析,研究以下几个方面:1、网上书店的页面设计和功能布局对用户体验的影响。
2、不同网上书店的图书种类、价格和促销策略。
3、网上书店的配送服务和售后服务质量。
4、用户对网上书店的满意度和忠诚度的影响因素。
三、实验对象我们选取了以下几家具有代表性的网上书店作为实验对象:1、网上书店 1 名称2、网上书店 2 名称3、网上书店 3 名称四、实验过程(一)页面设计和功能布局评估1、首先,我们对每家网上书店的首页进行了浏览,观察其整体布局、色彩搭配、导航栏设置等方面。
2、然后,我们对图书分类页面、搜索功能、购物车页面和结算页面进行了详细的操作和体验。
3、重点关注页面的加载速度、信息展示的清晰度、操作的便捷性和用户引导的有效性。
(二)图书种类、价格和促销策略分析1、对每家网上书店的图书分类进行了详细的查看,比较不同类别图书的丰富程度和更新速度。
2、随机抽取了一些热门图书和经典图书,对比它们在不同网上书店的价格。
3、关注了各家网上书店的促销活动,如满减、折扣、优惠券等,并分析其优惠力度和适用范围。
(三)配送服务和售后服务体验1、在每家网上书店购买了一本图书,选择不同的配送方式,记录配送的时间、费用和包裹的包装质量。
2、在收到图书后,模拟出现质量问题或不满意的情况,联系售后服务,评估其响应速度、解决问题的态度和能力。
(四)用户满意度和忠诚度调查1、通过在线问卷的方式,收集了用户对各家网上书店的评价和意见。
2、对问卷数据进行了统计和分析,了解用户对网上书店的满意度和忠诚度的整体情况。
五、实验结果(一)页面设计和功能布局1、网上书店 1 名称的页面设计简洁大方,色彩搭配舒适,导航栏清晰明确,用户能够快速找到自己想要的图书。
实验报告一、实验题目编程实现“网上书店系统”二、题目分析1、需求分析要开发一个系统,首先要了解该系统到底想做什么,需要实现怎样的功能,这就是需求分析。
网上书店从大的需求方面看,就是要实现通过互联网能够进行书籍的购买及相关的管理等功能,大致需要提供下面的一系列功能:*浏览书籍(模糊查询)*选择需要购买的书籍*可以继续选择别的书籍,并且可以购买该书籍*选择了需要购买的书籍后,进行购买书籍操作*保存选中的图书和数量UML图:2、数据分析图书信息数据库购物车本次会话有效1、页面转移关系再次查询2、对象模型(1)界面对象(View)*查询页Search.jsp*图书目录页Directory.jsp*购物车页Cart.jsp*定单页Order.jsp(2)控制器(Control)*CtrlServlet 负责响应输入命令*包括:模糊查询key、查看购物车cart、结算order 、继续选书continue、再次查询search(3)业务模型*图书信息:BookBean 实体类的会话Bean*购物车信息:CartBean 会话Bean(1)图书信息(数据库表、查询结果)*书号ISBN char[24] 主键*书名Title char[64]*作者Author char[32]*出版社Press char[32]*价格Price double(2)购物车信息*书号ISBN char[24]*数量Number integer(3)共享数据*查询结果和选中的图书信息*作为session参数4、动态模型5、EJB接口设计(1)BookBean 管理图书信息(封装数据库)*find( string key )*根据关键字从数据库中查找出图书信息记录(数组)条件:书名、作者、出版社名中包含关键字get( string isbn )*根据书号,找出图书信息记录(2)CartBean 管理购物车信息(本次会话有效)*add( string isbn ) 添加记录*gest( ) 获得记录数组*set( string isbn, integer num ) 设置购买数量5、控制器(1)CtrlServlet 的输入*来自查询页page=“search”&key=关键字*来自图书目录页page=“directory”&submit=“cart”&choose=书号数组page=“directoty”&submit=“search”*来自购物车页page=“cart”&submit=“order”page=“cart”&submit=“continue”page=“cart”&submit=“search”(2)算法概要*模糊查询search按照key 从BookBean 查询图书,转交图书目录页*查看购物车将选定图书存入CartBean,转交购物车页*结算计算CartBean中的图书总价,从BookBean获得图书信息,连同地址,转交定单页*继续选书返回图书目录页*再次查询转向查询页*异常处理直接生成错误信息页面四、实现技术1、采用MVC 模式(1)JSP 实现页面视图View(2)Servlet 实现控制Control(3)EJB 实现业务模型Model2、交互关系(1)JSP 表单动作(form)⎝ CtrlServlet(2)Servlet 转发⎝ JSP 页面3、数据传输(1)Servlet 调用EJB 对象获得数据(2)Servlet 通过session 参数传递给JSP 页面五、实验源代码1、BooksOnline-ejb(1)Books①Books.java:import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;dQueries;import dQuery;import javax.persistence.Table;@Entity@Table(name = "BOOKS")@NamedQueries({@NamedQuery(name = "Books.findByIsbn", query = "SELECT b FROM Booksb WHERE b.isbn = :isbn"), @NamedQuery(name = "Books.findByTitle", query = "SELECTb FROM Books b WHERE b.title = :title"), @NamedQuery(name = "Books.findByAuthor",query = "SELECT b FROM Books b WHERE b.author = :author"), @NamedQuery(name = "Books.findByPress", query = "SELECT b FROM Books b WHERE b.press = :press"), @NamedQuery(name = "Books.findByPrice", query = "SELECT b FROM Books b WHERE b.price = :price")})public class Books implements Serializable {private static final long serialVersionUID = 1L;@Id@Column(name = "ISBN", nullable = false)private String isbn;@Column(name = "TITLE")private String title;@Column(name = "AUTHOR")private String author;@Column(name = "PRESS")private String press;@Column(name = "PRICE")private Double price;public Books() {}public Books(String isbn) {this.isbn = isbn;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn = isbn;}public String getTitle() {return title;}public void setTitle(String title) { this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) { this.author = author;}public String getPress() {return press;}public void setPress(String press) {this.press = press;}public Double getPrice() {return price;}public void setPrice(Double price) {this.price = price;}@Overridepublic int hashCode() {int hash = 0;hash += (isbn != null ? isbn.hashCode() : 0);return hash;}@Overridepublic boolean equals(Object object) {// TODO: Warning - this method won't work in the case the id fields are not setif (!(object instanceof Books)) {return false;}Books other = (Books) object;if ((this.isbn == null && other.isbn != null) || (this.isbn != null && !this.isbn.equals(other.isbn))) {return false;}return true;}@Overridepublic String toString() {return "Books.Books[isbn=" + isbn + "]";}}②BooksFacade.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;@Statelesspublic class BooksFacade implements BooksFacadeRemote {@PersistenceContextprivate EntityManager em;public void create(Books books) {em.persist(books);}public void edit(Books books) {em.merge(books);}public void remove(Books books) {em.remove(em.merge(books));}public Books find(Object id) {return em.find(Books.class, id);}public List<Books> findAll() {return em.createQuery("select object(o) from Books as o").getResultList(); }public ArrayList<Books> search(String key) {List<Books> all = this.findAll();if(all.isEmpty()) {return null;}ArrayList<Books> result = new ArrayList<Books>();for(Books current : all) {if(current.getTitle().toLowerCase().contains(key)||current.getAuthor().toLowerC ase().contains(key)||current.getPress().toLowerCase().contains(key)) {result.add(current);}}return result;}}③BooksFacadeRemote.javaimport java.util.List;import java.util.ArrayList;import javax.ejb.Remote;@Remotepublic interface BooksFacadeRemote {void create(Books books);(2)Cart①Cart.javaimport java.io.Serializable;public class Cart implements Serializable {private String isbn;private String title;private double price;private int number;public Cart(String isbn,String title,double price,int number) { this.isbn = isbn;this.title = title;this.price = price;this.number = number;}public String getIsbn() {return this.isbn;}public String getTitle() {return this.title;}public double getPrice() {return this.price;}public int getNumber() {return this.number;}public void setIsbn(String isbn) {this.isbn = isbn;}public void setTitle(String title) {this.title = title;}public void setPrice(double price) {this.price = price;}public void setNumber(int number) {this.number = number;}}②CartBean.javaimport javax.ejb.Stateful;import java.util.ArrayList;@Statefulpublic class CartBean implements CartRemote {private ArrayList<Cart> record;private boolean initialed = false;public void add(String isbn,String title,double price){ record.add(new Cart(isbn,title,price,1));}public void set(String isbn,int number){for(Cart current : record) {if(current.getIsbn().equals(isbn)) {current.setNumber(number);}}}public boolean exist(String isbn) {for(Cart current : record) {if(current.getIsbn().equals(isbn)) {return true;}}return false;}public ArrayList<Cart> get(){ArrayList<Cart> result = new ArrayList<Cart>();for(Cart current : record){ result.add(newCart(current.getIsbn(),current.getTitle(),current.getPrice() ,current.getNumber()));}return result;}public boolean initialed() {return this.initialed;}public void create(){record = new ArrayList<Cart>();initialed = true;}}void edit(Books books);void remove(Books books);Books find(Object id);List<Books> findAll();ArrayList<Books> search(String key);}③CartRemote.javaimport javax.ejb.Remote;import java.util.ArrayList;@Remotepublic interface CartRemote {public void add(String isbn,String name,double price);public void set(String isbn,int number);public boolean exist(String isbn);public ArrayList<Cart> get();public boolean initialed();public void create();}2、BooksOnline-warControlServlet.javaimport Books.BooksFacadeRemote;import Cart.CartRemote;import java.util.Enumeration;import java.io.IOException;import java.io.PrintWriter;import javax.ejb.EJB;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ControlServlet extends HttpServlet {@EJBprivate CartRemote cartBean;@EJBprivate BooksFacadeRemote booksFacade;/*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.* @param request servlet request* @param response servlet response*/protected void processRequest(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();try {if(request.getParameter("page").equals("search")) {request.getSession().setAttribute("directory",booksFacade.search(request.getParameter("key").toLowerCase()));response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("cart")) {if(!cartBean.initialed()) {cartBean.create();}Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")) {if(!cartBean.exist(request.getParameter(name))) {cartBean.add(request.getParameter(name),booksFacade.find(request.getParameter (name)).getTitle(),booksFacade.find(request.getParameter(name)).getPrice()); }}}request.getSession().setAttribute("cart",cartBean.get());response.sendRedirect("Cart.jsp");}if(request.getParameter("page").equals("directory")&&request.getParameter("su bmit").equals("search")) {response.sendRedirect("Search.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("order")) {double sum = 0;Enumeration names = request.getParameterNames();while(names.hasMoreElements()) {String name = (String)names.nextElement();if(!name.equals("page")&&!name.equals("submit")&&!name.equals("address")) {cartBean.set(name,Integer.parseInt(request.getParameter(name)));sum +=booksFacade.find(name).getPrice()*Integer.parseInt(request.getParameter(name) );}}request.getSession().setAttribute("cart",cartBean.get());request.getSession().setAttribute("fee",sum);request.getSession().setAttribute("address",request.getParameter("address")); response.sendRedirect("Order.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("continue")) {response.sendRedirect("Directory.jsp");}if(request.getParameter("page").equals("cart")&&request.getParameter("submit" ).equals("search")) {response.sendRedirect("Search.jsp");}} finally {out.close();}}// <editor-fold defaultstate="collapsed" desc="HttpServlet 方法。