毕业设计(论文)-基于java的网上书店系统设计.doc_第1页
毕业设计(论文)-基于java的网上书店系统设计.doc_第2页
毕业设计(论文)-基于java的网上书店系统设计.doc_第3页
毕业设计(论文)-基于java的网上书店系统设计.doc_第4页
毕业设计(论文)-基于java的网上书店系统设计.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 目目 录录 第第 1 章章 绪论绪论2 1.1 开发背景.2 1.2 网上书店设计概览.2 第第 2 章章 系统分析系统分析3 2.1 可行性分析.3 2.2 需求分析.3 2.3 系统的运行环境和开发平台.3 2.3.1 硬件设备及操作系统.3 2.3.2 系统开发平台.4 第第 3 章章 总体分析总体分析5 3.1 系统结构图.5 3.2 系统模块图.5 3.3 系统主要处理流程.5 第第 4 章章 详细设计详细设计7 4.1 uml设计7 4.1.1用例图7 4.1.2 子模块序列图.7 4.2 数据库设计.11 4.2.1 e-r图.11 4.2.2关系图11 4.2.3 物理结构.12 4.3 界面设计.14 第第 5 章章 测试测试16 5.1 测试过程.16 第第 6 章章 结论结论17 附录附录 参考文献参考文献.18 附录附录 源代码源代码.19 2 第第 1 1 章章 绪论绪论 1.11.1 开发背景开发背景 随着 internet 国际互联网的发展,越来越多的企业开始建造自己的网站。基于 internet 的信息服务,商务服务已经成为现在企业的一项不可缺少的内容。很多企业都已 经不满足于建立一个简单的,仅仅能够发布信息的静态网站。现代企业需要的是一个功能 强大的,能够提供完善的电子商务服务的动态商务网站。同时人们的生活方式也在随着发 生改变,人们对于互联网技术的要求已不单单是浏览一下网页,收发电子邮件,日益忙碌 的人们开始追求足不出户的利用互联网这个强大的平台来实现网上购物。对于企业来说, 无论是企业之间还是企业与客户之间的交易,如果能够实现网上交易将大大提高交易速度 节约交易成本。近几年,随着网络数据库技术的进一步发展,使得这一设想逐渐成为了现 实。基于 b/s 的系统开发开始已经是当今的总趋势。 jsp 是十分流行的一种技术,它主要是运行在开发服务器端的脚本程序和动态生成网 站的内容。jsp 技术有 j2ee 平台支持,发展前途不可限量。总所周知,j2ee 平台提供了 java 企业应用编程接口,为企业计算以及电子商务应用系统提供了有关的技术和强大的类 库支持,j2ee 平台包含十几种技术,jsp 技术正是其中的一种核心的技术。 1.21.2 网上书店设计概览网上书店设计概览 按照用户类型区分的话,通常电子商务网站可以分为会员模块、后台管理模块。电子 商务网站是以商务活动为中心进行的。书店的定义不外乎展示图书的信息,与其他销售通 路并无不同,从这样的角度来看,网络书店的基本功能也是如此,不过是出版品另一种形 态的宣传或者销售通路,甚至传统店面的辅助。网络书店所能与传统书店服务的真正不同 之处在于打破了销售或出版的界限。以目前的网络书店形态而言,最后销售的仍然是一本 本印制完成的出版品,消费者从网站上得到的,只是这些出版物的信息,而不是“书” ,也 就是说,网络书店本身只是一个出版物与消费者的中介,而不是被消费的主体。 3 第第 2 2 章章 系统分析系统分析 2.12.1 可行性分析可行性分析 可行性分析也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备 必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投 资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间 确定问题是否能够解决。该系统的可行性分析包括了以下几个方面的内容。 (1)经济可行性:主要是对项目的经济效益进行评价,由于系统所使用的服务器是免 费的,可以从网上免费下载,用的免费的数据库管理软件,本系统开发经费对于作者在经 济上是可以接收的。所以本系统在经济上是可行的。 (2)技术可行性:技术上的可行性分析主要是分析技术条件是否顺利完成开发工作, 软硬件是否满足开发者的需要等。该管理系统采用当前新兴的 brower/server 模式开发。 三层的 brower/server 体系结构具有很多传统的 client/server 体系结构不具备的优点, 它把应用系统带入了一个崭新的发展时代。数据库服务器选用 mysql,能够处理我们这个 小型的网站的数据。它的灵活易用性为数据库编程提供了很好的条件。因此,系统的软件 开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新速度越来越快,容量越 来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此系统的需要。 综上所述,此系统开发目标已明确,在技术和经济等方面都可行,并且投入少、见效 快。因此系统的开发是完全可行的。 2.22.2 需求分析需求分析 为了准确的确定目标系统必须做什么,了解用户的明确需求,进一步实现子系统的功 能。 功能描述: 1.展示图书:展示的方式有多种,可以按图书分类、按销售排行榜、按上架时间等, 有层次的展示图书,提高用户的购买兴趣。对于某本图书,除显示图书信息以外, 还可以附加书评、插图、试读部分章节,并进行相关图书的推荐。 2.图书查询:根据多种条件来查询,比如图书名,作者名,出版社名,出版年月。 能进行模糊匹配,包含关键字的图书都能查到。 3.购书:只有注册用户才能购书。为用户提供购物车,购物车内图书的数量可以修 改,也可以删除购物车里已有的图书。最终通过订单确认,附加用户的邮寄地址, 生成有效的订单,订单一旦生成,用户无权限再修改。 4.评价图书:只有注册用户才能对图书进行评价,能够对自己的评价进行增删改。 5.后台管理: 用户管理:为用户提供注册和登录服务。不同角色的用户拥有不同的访问权 限。比如登录用户能修改自己的个人信息,查询订单历史记录,订单的状态。 而管理员则能进行后台管理。 图书信息管理:录入、修改和删除图书信息。 库存管理:每天都集中进行一次入库和出库的操作。 销售管理:包括售书、销售明细、销售排行、销售报表。 订单管理:管理客户提交的订单,客户“已确认”的订单可修改状态为“正 在配货” , “正在配货”的订单可修改状态为“缺货”或“已发货” 。 2.32.3 系统的运行环境和开发平台系统的运行环境和开发平台 .1 硬件设备及操作系统硬件设备及操作系统 4 服务器:intel celeron(或与此相当的 cpu)以上配置的高性能 pc 机,有网络接口卡 (nic),内存应在 512m 以上,硬盘在 80g 以上。确认该计算机已经安装了 web 服务器软件 tomcat5.0,数据库软件 mysql5.2。 操作系统:windows xp/2000 客户端:intel celeron2.53(或与此相当的 cpu)以上配置的 pc 机,有网络接口卡 (nic),内存应在 512m 以上,硬盘在 10g 以上,windowsxp/2000 操作系统,安装 web 浏 览器。 网络:服务器和客户端应有网络连通,配置 tcp/ip 协议。 .2 系统开发平台系统开发平台 电脑配置:cpu:intel celeron2.53 内存:ddr 512m 硬盘:80g 操作系统:microsoft windows xp 中文版 开发环境:myeclipse6.0 web 服务平台:tomcat5.0 数据库:mysql5.2 5 第第 3 3 章章 总体分析总体分析 3.13.1 系统结构图系统结构图 经过需求分析阶段的工作,系统必须“做什么”已经清楚了,总体设计阶段将站在全 局高度上,通过成本、可行性方案的比较,选择最佳的软件结构,从而用较低成本开发出 较高质量的软件系统。 系统结构图采用三层结构模型,它的工作原理如图 3.1 所示。 用户界面层 业务处理层数据存储层 数据库 图 3.1 三层结构原理图 采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的 逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式返回 给用户界面层。这样用户界面层甚至可以不知道数据库的结构,它只要维护与业务层之间 的接口即可。 3.23.2 系统模块图系统模块图 根据需求分析及三层架构设计的思想,设计出系统功能模块如图 4.2 所示。 图 3.2 系统功能模块图 3.33.3 系统主要处理流程系统主要处理流程 本系统的系统流程图如图 3.3 所示。 网上书店操作界面service 网上书店 书店客户 管理员 注册 用户管理 库存管理 图书信息管理 浏览图书 修改个人信息 选购图书 评价图书 销售管理 订单管理 评价管理 6 图 3.3 系统流程图 7 第第 4 4 章章 详细设计详细设计 通过系统分析,对网站的建设有了整体的认识,详细设计这一块主要是对各个功能细 节的处理和设计,包括 uml 建模中的系统用例,类图,以及各个子模块的顺序图,数据库 详细设计中的实体 e-r 图,物理结构的设计,以及网站的形象设计。这一块结束后,对整 个网站实现的内容就有了清楚的认识。 4.14.1 umluml 设计设计 .1 用例图用例图 网上书店的用例图如图 4.1 所示。 游客 会员 管理员 系系统统 浏览图书 浏览/搜索图书 管理购物车 管理帐号 评价图书 管理图书 订单管理 注册 登录 信息修改 查看订单 用户管理 库存管理 销售管理 评价管理 * * * * * * * * * * * * * * * * * * * * * * * 图 4.1 系统用例图 .2 子模块序列图子模块序列图 1.会员下订单 该用例是客户端下在客户登录后可以将浏览选中的图书放入购物车,根据需要选择图 书并下订单,该用例的流程如下: (1)用户指定相应的图书种类进行搜索,得到相应的图书信息; (2)选中自己需要的图书并选择其定购的数量放入购物车; (3)提交下订单请求,系统检查用户是否登录,若用户未登录转(4),否则返回个人 信息由用户确认,转(5); (4)用户登录系统,重新进入购物车页面,转(3); (5)顾客确认自己的信息后,由系统数据库记录订单信息更新订单表; (6)数据库更新成功后,返回顾客下订单成功的消息。 8 时序图如图 4.2 所示。 顾客 系统图书表 下订单 订单 2.返回登录成功界面 5.返回搜索到的信息 6.显示搜索到的信息 11.返回确认个人信息界面 14.返回添加成功消息 15.显示订单信息 1.登录系统 3.提交搜索的图书的信息 4.查询图书表 7.选择图书及数量放入购物车 10.提交下订单请求 12.确认个人信息 13.更新订单表 购物车 8.更新购物车 9.返回更新之后的购物车界面 图4.2 下订单时序图 2.会员评价 该用例是客户可以对图书的使用、性价比等进行评价,该用例执行的流程如下: (1)用户提交评价的请求,系统检查用户是否登录本系统,若登录,由系统返回评 价界面,转(3),否则,进入提示登录页面,转(2); (2)用户登录系统,转(1); (3)用户填写并提交评价信息; (4)由系统更新数据库中的评价信息表; (5)数据库返回数据添加成功的消息,系统将评价信息返回给顾客。 时序图如图4.3 所示。 9 顾客 系统评价表 2.确认是否登录 5.更新成功信息 6.显示图书的评价 图书评价 1.提交评价请求 3.确认登录 4.更新评价 图 4.3 会员评价时序图 3.管理员修改图书 该用例是管理员可以根据图书信息的变动情况可以修改图书的相关信息,该用例的执行流 程如下: (1)管理员登录系统后,提交要搜索的图书信息,系统搜索数据库中的图书表,向管 理员返回符合要求的图书信息; (2)管理员选择要修改的图书,向系统提交修改请求,系统返回修改图书信息的页 面; (3)管理员修改图书信息,并提交给系统处理; (4)系统更新数据库中图书表的信息,并返回修改成功的页面。 时序图4.3 所示。 10 管理员 系统 管理员修改商品 图书表 1.提交要搜索的图书信息 2.搜索图书表信息 3.返回已经搜索到的信息 4.显示满足记录 5.提交修改申请 6.返回修改界面 7.提交修改信息 8.更新数据库 9.返回数据修改成功信息 10.返回修改成功信息 图4.3 管理员修改图书时序图 .3 类图类图 如图 4.4 类图 user,purview,distribute 为基础类,userdao 为接口,声明了访问数据库的所有方法, userdaoimpl 实现了 userdao,为 userdao 里面的方法书写了具体的实现。userservice 也是 接口,提供了实现业务的方法,userserviceimpl 实现了 userservice,为 userservice 书写了 具体的实现。loginframe 类建立登录的界面,registerframe 类建立注册界面,在 loginframe 面板上点击“登录”按钮进入的都是为普通用户注册。userframe 是用户登录 进去的界面。manageblock 是用户管理员分配权限。 11 +getpurviewid() : int +setpurviewid(int)() : void +getuserid() : int +setuserid(int)() : void +getusername() : string +setusername(string)() : void +getuserpass() : string +setuserpass(string)() : void +getuseremail() : string +setuseremail(string)() : void +getuseraddress() : string +setuseraddress(string)() : void +getusertele() : string +setusertele(string)() : void -userid : int -username : string -userpass : string -useremail : string -useraddress : string -usertele : string -purviewid : int user +adduser(user)() : bool +finduser(user)() : user userdao userdaoimpl +judgeuser(string, string)() : user +adduser(user)() : bool userservice -dao : userdao userserviceimpl +loginframe() +actionperformed(actionevent)() : void +finduser() : void loginframe +registerframe() +actionperformed(actionevent)() : void +registeruser() : void registerframe +manageblock() manageblock +userframe(user, list)() userframe +getpurviewid() : int +getpurviewname()() : string +getpurviewdetail()() : string +setpurviewid(int)() : void +setpurviewname(string)() : void +setpurviewdetail(string)() : void -purviewid : int -purviewname : string -purviewdetail : string purview +getdistributeid()() : int +getblockid()() : int +getpurviewid()() : int +setdistributeid(int)() : void +setblockid(int)() : void +setpurviewid(int)() : void -distributeid : int -blockid : int -purviewid : int distribute 4.24.2 数据库设计数据库设计 .1 e-re-r 图图 e-r 图表示了实体之间的联系,每个顾客可以订购 n 本图书,1 本图书也可以被 n 个顾 客订购,所以顾客与图书之间的是多对多的联系。每个顾客可以对 n 本书进行评价,一本 图书对应 n 个评价,因此,顾客与图书之间又有了“评价”这个联系表。多本图书对应一 个类型,图书与图书类型之间是 n 对 1 的关系。e-r 图如图 4.4。 图 4.4 e-r 图 .2关系图关系图 顾客 图书 评价 图书类型 订货 属于 n n n n n n 1 权限 模块 1 n 分配权限 属于 n 12 如图 4.5 图 4.5 关系图 .3 物理结构物理结构 在服务器上创建一个名为 book 的数据库。包括以下表: 表 1 图书表(book) 字段名字段类型长度 null 说明备注 bookidint 否图书编号主键 booknamevarchar30 否图书名称 bookauthorvarchar20 否图书作者 bookpubdatedatetime 否图书出版日期 bookpublishervarchar30 图书出版社 bookpicvarchar20 图书封面 bookoldpricefloat5 图书原价 booknewpricefloat5 否图书现价 bookdetailvarchar200 图书详情 13 表 2 顾客表(custom) 字段名字段类型长度 null 说明备注 customidint 否顾客编号主键 customnamevarchar10 否顾客帐号 custompassvarchar20 否顾客密码 customemailvarchar30 顾客邮箱 customaddressvarchar60 顾客地址 customtelevarchar15 顾客联系号码 表 3 订单表(ordera) 字段名字段类型长度 null 说明备注 orderidint 否订单编号主键 ordercountint 否订购的商品的数量 orderstatusint 否订单的状态存于购物车为 1,已 付款为 2,已发货为 3 orderdatedatetime 订货日期默认为编辑日期 ordersolvedatedatetime 送货日期默认为编辑日期 ordertozipint 联系人的地区邮编 ordertotelevarchar15 联系人号码 ordertonamevarchar20 联系人姓名 ordertoaddressvarchar30 联系人地址 表 4 评价表(say) 字段名字段类型长度 null 说明备注 sayidint 否评价编号主键 saycontentvarchar200 否评价内容 saytimedatetime 否评价日期默认为编辑日期 sayyesint 否支持数目默认为 0 saynoint 否否定数目默认为 0 saymoodint 读书心情 sayplaceint 读书地点 表 5 图书类型表(catagory) bookindatedatetime 否图书入库日期默认为编辑日期 bookoutdatedatetime 图书出库日期默认为编辑日期 bookstatusint 图书的状态用于管理员设置 首页显示的图书 字段名字段类型长度 null 说明备注 catagoryidint 否图书种类编号主键 catagorynamevarchar20 否图书种类名称 catagorydetailvarchar200 图书种类的描述 14 表 6 权限表(purview) 字段名字段类型长度 null 说明备注 purviewidint 否权限编号主键 purviewnamevarchar10 否权限名称 puriviewdetailvarchar50 权限描述 表 7 分配权限表(distribute) 字段名字段类型长度 null 说明备注 distributeidint 否分配表的编号主键 表 8 模块表(block) 字段名字段类型长度 null 说明备注 blockidint 否模块编号主键 blocknamevarchar20 否模块名称 blockdetailvarchar100 模块描述 4.34.3 界面设计界面设计 .1 登录模块登录模块 登录模块主要对管理员登录信息的验证,查询管理员表确认账号和密码无误后即可登 录,登录后对相应的模块可以进行管理,例如书籍管理、书籍类别管理、 订单管理、会员 管理、系统管理等。 .2 书籍管理书籍管理 管理员登陆系统之后,点击书籍管理,再点击书籍列表就可以看到以分页形式出现的 书籍表,在操作一栏中,可以对书籍进行修改或删除操作,点击添加书籍即可添加新的书 籍。 添加图书添加图书 管理员可以增加一条书籍信息并发布。 删除图书删除图书 管理员可以点击进入书籍列表后,点击删除按钮并确认,即可删除书籍。 .3 订单管理订单管理 管理员登陆系统之后,点击订单管理,再点击订单列表就可以看到以分页形式出现的 订单记录,在操作一栏中,点击查看订单内容详细信息,查看用户购买的物品,管理员完 成相应的业务操作(配送物品) ,再进行订单状态的修改。 15 第第 5 5 章章 测试测试 5.15.1 测试过程测试过程 在进行软件测试时,遇到了不少的问题,下面举出几个例子: 1.启动项目,访问服务器报 http400 客户端错误 解决方法:删掉直接在工作空间复制粘贴的项目,必须使用 import 导入项目。 2.严重: ioexception while loading persisted sessions: java.io.eofexception 严重: exception loading sessions from persistent storage 原因:tomcat 对硬盘的 session 读取失败。 解决方法:将 work 下面的文件清空,主要是*.ser 文件,或者只是删除掉 session.ser 在重新启动 tomcat 的 webapp 的时候,禁止把 session 写入文件。 修改 conf/context.xml 取消注释: 3.sql 查询语句出错:select * from (select rownum ro,bookid, bookname, bookfunprice, bookprice, bookprep,booktime from book where rownum=? java.sql.sqlexception: ora-00936: 缺少表达式 java.sql.sqlexception: ora-01006: 赋值变量不存在 解决方法:多了一个 where。认真。 16 第 6 章 结论 经过为期一个多星期的设计,终于初步完成了老师要求的功能。因为时间比较紧凑, 这个网上书店的项目分作三个学期,这个学期主要是完成图书的展示以及查询。 这个项目实现的功能还是比较简单,刚开始我打算用 struts+hibernate 实现,使用 hibernate 的便利在于能够实现数据库的反转,但是如果对它的数据持久化不了解,对配置文件中一 对多、或者多对多的关系不能灵活运用,在界面上获取数据的时候必定会遇到很大的麻烦。 由于培训过了一段时间,我在项目开始的前两天,是温习了一下 css+div,分析界面上应该 获取什么数据,如何设计 hibernate 的配置文件,又花了两天的时间温故知新知识点。到了 星期五,我的代码部分基本实现,用了一个最简单的动作,复制粘贴项目在工作区间,访 问数据库的时候就碰到了一个 http400 客户端的错误,我试了好几种方法,比如,不使用 myeclipse 自带的 tomcat,自己配置一个 tomcat6.0、jdk,又将 myeclipse6.0 换成了 8.0,在 网上找了些方法,还是不行,头脑发热,又重新用 mvc 写,不得不说 mvc 真没技术含量, 大片大片的代码重复,本来想写购物车,后来,看到代码那么不简洁,干脆就偷懒不写了, 省事,明年接着写。 在整个项目中,学到最多的是 div+css,今年的这个界面是通过一个比较大的网页整改 的,最后只留下了现在简单的设计, 在这个过程当中,由于 dreamweaver 中的静态网页, 换成动态网页,在布局上有很多细节的改变,在调试布局上,真的需要不少的耐心。不过, 最后的界面还是令人满意的。 做程序还是要经的起折腾,其实 http400 客户端错误很简单,只需要删掉直接在工作 空间复制粘贴的项目,必须使用 import 导入项目。但是我却放弃了,重新来过。没有估计 到后面带来的困难。以后做事还是要慎重。 附录附录 参考文献参考文献 1 王行言. java 语言与面向对象程序设计-2 版m. 北京:清华大学出版社,2007:978-7- 302-15836-3. 17 2 张海藩. 软件工程导论-5 版m. 北京:清华大学出版社,2008. 附录附录 源代码源代码 public class dbutil private preparedstatement pstmt = null; 18 private connection con = null; public dbutil() try class.forname(“com.mysql.jdbc.driver“); con=drivermanager.getconnection(“jdbc:mysql:/localhost/shoppingbook10_1“,“ root“, “root“); catch (classnotfoundexception e) e.printstacktrace(); catch (sqlexception e) e.printstacktrace(); public connection getcon() return con; public void close() if (pstmt != null) try pstmt.close(); catch (sqlexception e) e.printstacktrace(); if (con != null) try con.close(); catch (sqlexception e) e.printstacktrace(); public class bookdaoimpl implements bookdao /* * 显示书籍 * param type * 显示类别(热卖,新书,降价,特别推荐) * param flag * 表示是否是(热卖,新书,降价) */ public list showbooks(int type, int flag) list all = new arraylist(); preparedstatement pstmt = null; dbutil dbutil = null; 19 resultset rs = null; string sql = null; if (type = 0) sql = “select * from tb_book“;/ 显示所有书籍 try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); rs = pstmt.executequery(); while (rs.next() book book = new book(); book.setbookid(rs.getint(“bookid“); book.setbookname(rs.getstring(“bookname“); book.setisbn(rs.getstring(“isbn“); book.setpages(rs.getint(“pages“); book.setauthor(rs.getstring(“author“); book.setpublisher(rs.getstring(“publisher“); book.setintroduce(rs.getstring(“introduce“); book.setprice(rs.getfloat(“price“); book.setnowprice(rs.getfloat(“nowprice“); book.setpicture(rs.getstring(“picture“); all.add(book); catch (sqlexception e) e.printstacktrace(); finally try rs.close(); pstmt.close(); dbutil.close(); catch (sqlexception e) e.printstacktrace(); else if (type = 1) / 热卖书籍 sql = “select * from tb_book where hostbooks=?“; if (type = 2) / 新到书籍 sql = “select * from tb_book where newbooks=?“; if (type = 3) / 打折书籍 sql = “select * from tb_book where salebooks=?“; 20 if (type = 4) / 特别推荐 sql = “select * from tb_book where specialbooks=?“; try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); pstmt.setint(1, flag); rs = pstmt.executequery(); while (rs.next() book book = new book(); book.setbookid(rs.getint(“bookid“); book.setbookname(rs.getstring(“bookname“); book.setisbn(rs.getstring(“isbn“); book.setpages(rs.getint(“pages“); book.setauthor(rs.getstring(“author“); book.setpublisher(rs.getstring(“publisher“); book.setintroduce(rs.getstring(“introduce“); book.setprice(rs.getfloat(“price“); book.setnowprice(rs.getfloat(“nowprice“); book.setpicture(rs.getstring(“picture“); all.add(book); catch (sqlexception e) e.printstacktrace(); finally try rs.close(); pstmt.close(); dbutil.close(); catch (sqlexception e) e.printstacktrace(); return all; /* * 根据书的 bookid 号来展示该书的详细信息 * param bookid * 书籍号 * return book */ public book showbookbyid(int bookid) 21 book book = new book(); preparedstatement pstmt = null; resultset rs = null; dbutil dbutil = null; string sql = “select * from tb_book where bookid=?“; try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); pstmt.setint(1, bookid); rs = pstmt.executequery(); if (rs.next() book.setbookid(rs.getint(“bookid“); book.setbookname(rs.getstring(“bookname“); book.setintroduce(rs.getstring(“introduce“); book.setisbn(rs.getstring(“isbn“); book.setauthor(rs.getstring(“author“); book.setpages(rs.getint(“pages“); book.setpublisher(rs.getstring(“publisher“); book.setprice(rs.getfloat(“price“); book.setnowprice(rs.getfloat(“nowprice“); book.setpicture(rs.getstring(“picture“); catch (sqlexception e) e.printstacktrace(); finally try rs.close(); pstmt.close(); dbutil.close(); catch (sqlexception e) e.printstacktrace(); return book; /* * 将书本信息录入数据库 */ public boolean addbook(book book) boolean flag = false; preparedstatement pstmt = null; dbutil dbutil = null; string sql=“insert into tb_book values(null,?,?,?,?,?,?,?,?,?,?,? 22 null,?,?,?,?)“; try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); pstmt.setint(1, book.getsupertypeid(); pstmt.setint(2, book.getsubtypeid(); pstmt.setstring(3, book.getbookname(); pstmt.setstring(4, book.getisbn(); pstmt.setstring(5, book.getintroduce(); pstmt.setfloat(6, book.getprice(); pstmt.setfloat(7, book.getnowprice(); pstmt.setstring(8, book.getpicture(); pstmt.setint(9, book.getpages(); pstmt.setstring(10, book.getpublisher(); pstmt.setstring(11, book.getauthor(); pstmt.setint(12, book.getnewbooks(); pstmt.setint(13, book.getsalebooks(); pstmt.setint(14, book.gethostbooks(); pstmt.setint(15, book.getbooknum(); int i = pstmt.executeupdate(); if (i != 0) return flag;/ 插入书籍成功 catch (sqlexception e) e.printstacktrace(); return flag; /* * 分页显示书籍 * param type * 按要求显示相应的书籍 * param currentpage * 显示出来的当前页码 * param pagesize * 每页显示数目 * return page */ public page dopage(int type, int currentpage, int pagesize) page page = new page(); system.out.println(“pagetype=“ + type); int totalnum = showbooks(type, 1).size(); system.out.println(“totalnum“ + totalnum); list pagelist = new arraylist(); 23 preparedstatement pstmt = null; resultset rs = null; dbutil dbutil = null; string sql = null; if (type = 0) / 显示所有书籍 sql = “select * from tb_book limit “ + currentpage + “,“ + pagesize; if (type = 1) / 热卖书籍 sql = “select * from tb_book where hostbooks=1 limit “ + currentpage + “,“ + pagesize; if (type = 2) / 新到书籍 sql = “select * from tb_book where newbooks=1 limit “ + currentpage + “,“ + pagesize; if (type = 3) / 打折书籍 sql = “select * from tb_book where salebooks=1 limit “ + currentpage + “,“ + pagesize; if (type = 4) / 特别推荐 sql = “select * from tb_book where specialbooks=1 limit “ + currentpage + “,“ + pagesize; system.out.println(“sql=“ + sql); try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); rs = pstmt.executequery(); while (rs.next() book book = new book(); book.setbookid(rs.getint(“bookid“); book.setbookname(rs.getstring(“bookname“); book.setpicture(rs.getstring(“picture“); book.setprice(rs.getfloat(“price“); book.setnowprice(rs.getfloat(“nowprice“); pagelist.add(book); system.out.println(“pagelist=“ + pagelist.size(); catch (sqlexception e) e.printstacktrace(); finally try rs.close(); pstmt.close(); 24 dbutil.close(); catch (sqlexception e) e.printstacktrace(); page.setpagelist(pagelist); page.settotalnum(totalnum); return page; /* * 根据用户输入的关键字搜索相关书籍 * param keywords * 用户输入的关键字 */ public list searchbooks(string keywords) list searchlist = new arraylist(); preparedstatement pstmt = null; resultset rs = null; dbutil dbutil = null; string sql = “select * from tb_book where bookname like %“ + keywords + “%“; try dbutil = new dbutil(); pstmt = dbutil.getcon().preparestatement(sql); rs = pstmt.executequery(); if (rs.next() / 有相关书籍 while (rs.next() book book = new book(); book.setbookname(rs.getstring(“bookname“); book.setpicture(rs.getstring(“picture“); searchlist.add(book); else / 没有找到相关书籍 throw new norelativebooksexception(“没有搜索到你想找的相关书籍! !“); catch (sqlexception e) e.printstacktrace(); return searchlist; 25 /* * 分页显示书籍 * param currentpage * 显示出来的当前页码 * param pagesize * 每页显示数目 * return page */ public page do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论