版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络书店的设计与实现-PAGE46-第一章系统概述1.1课题开发背景随着互联网在中国的进一步普及应用,网上购物逐渐成为人们的网上行为之一。如今人们的生活水平也在不断的提升,越来越多的人们开始以网上购物来代替传统的购物方式。网上交易自身所具有的经营上的优势以及对消费者强大的吸引力,是刺激网上交易发展的重要原因。几年前,我还至少一个月就会去书店逛两次,如今一年也难得去一回,究其因有如下几点。一来支付方便,款到发货,拿书付钱,一点风险也没有。二来节约了购书的成本,不论路上花的时间,至少在油价勇敢向前冲时候,还是少去城里在车流中拼搏的好,也算是对环保事业的一点小小支持吧。其三,网络书店让我找书的时间也省了很多,现在的书籍浩如烟海,而网上书店的搜索和推荐功能,让我很容易定位到购买的目标。而网站上的推荐功能,则让我很容易的了解书中的内容,再加上读者的评论,对于这本书质量就能判断出一个比较清晰的轮廓,也就能下定是否买的决心。总体来说,网上店面的优势是很明显的,会有越来越多的人去使用它购物。毫无疑问,网店俨然已经成为了互联网时代的又一个新兴产业,而随着信息时代的发展,它所带来的影响也将越来越广泛和深远。比起逛实体店来说,网购能够节省很多宝贵的时间,降低了成本。总之,网络可以在绝对低成本的状态下完成相对高质量的任务。在目前的实际应用中,已经有很多的网上书店系统被人们所熟知了,比如:当当网()、亚马逊()等等。1.2课题分析网络书店系统分为前台管理和后台管理两大部分。其中前台管理的主要功能有书籍类型展示、查询书籍、查询书籍促销信息、购买书籍、订单查询、留言。后台管理的主要功能有书籍管理、会员管理、订单管理、促销活动管理、留言管理。1.2.1不同权限用户的登录用户登录本系统时,分为不同的权限为:会员、管理员会员通过网站:修改会员信息、浏览书籍信息、查看书籍介绍、促销活动、购买书籍、查看订单、查看留言簿并留言。管理员通过网站:管理会员、管理书籍、管理订单、管理书库、管理促销活动、管理留言簿。若不登录,则可以以普通用户身份浏览书籍信息、查询书籍及书籍介绍、活动促销、查看留言簿。1.2.2用户管理进入该系统的每一个用户,都应该只有一个属于自己的账号和密码,所以在使用本系统时需要进行用户信息的注册。管理员身份还能添加、删除用户,会员只能修改自己的个人信息,管理员可以修改所有用户及管理员的信息。1.2.3书籍管理网络书店系统,对于用户应该有许多书籍类型选择,这就需要管理员发布一些不同类型的书籍来供用户选择。如果发布的书籍有所不当,可以进行书籍的删除。所有身份的用户都能对书籍进行查询。1.2.4书籍订单的管理当用户选择了喜欢的书籍可以点击下单进行订单处理,转到订单填写页面,提交订单后,即完成书籍的先上购买。1.2.5促销活动的管理促销活动可以使书籍卖的更多更快,使商家盈利,促销活动由系统管理员发布和删除,会员和游客可以查询与查看促销活动信息。1.2.6留言管理当用户在网络书店购买自己喜欢的书籍后可以将自己的问题或者建议进行留言,管理员可以根据用户对网络书店的评价和建议进行网上书店的完善。1.3开发技术及相关工具1.3.1JSPJSP(JavaServerPages)是一种动态网页技术标准。此技术为创建Web页面提供了一个简捷快速的方法。目的是使构造基于Web的应用程序更容易和快捷,这些应用程序能与各种Web服务器、应用服务器、浏览器和开发工具共同工作。传统网页HTML文件加上Java程序片段和JSP标记,就构成JSP网页(*.jsp)。Web服务器在遇到访问JSP网页请求时,先执行其中的程序片段,再将执行结果以HTML格式返给客户。程序片段可包括操作数据库、网页重定向以及发送email等功能。所有对程序的操作都在服务器端执行,网上传送给客户端的仅仅是得到的结果,因此对客户浏览器的要求最低。相对于Servlet这种Java类,JSP又有特定的优势。要想完成一个简单JSP页面所具有的功能,需要编写大量Servlet代码,而且从代码上根本看不出来要生成的HTML文档结构。另外,JSP中的双引号等特殊字符,在Servlet中需要进行转义处理,进一步降低了代码的可读性。事实上,在JSP中还可以使用标签等特性进一步将JSP中的Java代码带来的不利因素削弱。总之,用JSP开发系统可以降低开发门槛,提高代码可读性,开发出高性能跨平台的企业级软件。所以本系统采用了JSP技术。1.3.2JSP网站开发模式JSP网站开发技术标准给出两种使用JSP的方式。分别为模式一和模式二。模式一:JSP+JavaBean在此模式中,JSP页面独自响应请求并将处理结果返回客户并实现页面的表现。所有数据通过Bean处理。模式一也实现了页面表现和业务逻辑相分离。但是大量使用模式一可能带来会导致在页面里面嵌入了大量的Java控制代码。如果要处理的业务逻辑很复杂时,情况将变得非常糟糕。大量内嵌代码使页面变得庞大,且非常复杂。当页面功能实现后交给美工或页面内容设计人员进行美化时,问题就变得严重了。在大型项目里,这种方法将导致页面的维护困难。模式二:JSP+JavaBean+Servlet在此模式中,结合了JSP和Servlet技术,此模式充分发挥了JSP和Servlet两种技术的优势。此模式遵MVC模式。其主要思想是使用一个或多个Servlet作为控制器。前沿的Servlet(可能是多个Servlet组成的一个处理链)接收请求并处理后,会重定向到JSP。在Servlet作控制器时,每个Servlet通常仅实现一小部分功能,多个Servlet控制器结合起来就可以完成复杂的任务。这样做的好处是Servlet的重用性好,副作用就是可能会导致响应请求的时间加长。在此模式中,JavaBean作为模型的角色,充当JSP和Servlet之间通信的工具。Servlet处理完后设置JavaBean的属性,JSP读取此JavaBean的属性,然后进行显示。从开发的角度看,模式二有更清晰的页面表现、更清楚的角色划分。这些优势在大型项目的开发中表现得尤为突出,可以充分发挥不同开发者各自的特长;美工人员可以充分发挥自己的才能;程序编写人员可以专注于业务逻辑以及程序功能的实现。
第二章系统分析2.1系统目标网络书店系统最终目的是为用户提供一个良好的便捷购物交流平台,使用户真正得到最大的方便和感受网络的强大功能,了解网上购书的进程信息。为了满足用户的要求,本系统在设计时应该实现以下几个目标:1、系统界面设计要友好、美观。2、划分用户级别,进行权限分配。3、合理管理系统的相关信息。4、易于维护和扩展。5、系统运行稳定、安全可靠。2.2功能需求该系统主要功能有书籍管理、会员管理、订单管理、促销活动管理、留言管理。系统的角色由管理员、会员、游客组成。2.3可行性分析2.3.1项目名称:网络书店系统的设计与实现2.3.2系统描述:本系统类似于淘宝,易趣等网上购物商城。可以实现网上购物功能。主要由前台会员管理模块和后台管理员管理模块两部分组成。前台模块主要用于实现会员注册、登录、修改个人信息、分类查看商品信息等。后台模块主要用于实现后台管理员对会员、商品、订单等的管理功能。采用面向对象的开发方法,主要应用Jsp和SQLServer2005实现。2.3.3经济可行性:随着互联网的不断发展,网络购物已逐渐成为都市白领一族主流的购物方式。特别是在今年全球经济不景气的大背景下,网络渠道的销售规模依然保持了高速的增长。越来越多的人选择足不出户的网购。所以网络书店的发展前景广阔。2013年第一季度中国网络购物市场交易额规模达467亿元,环比增长15.5%,同比增长96.7%。专家分析认为,第一季度是传统的购物淡季,网购交易额环比及同比增速有所放缓,但是网络购物整体的增长趋势未变,金融危机时期网购的便捷及价格优势将持续吸引更多消费者的关注。网络商城所能带来的经济效益是不容忽视的。2.3.4技术可行性本系统采用B/S结构实现,安全,快捷,准确。设备条件良好,具有开发该系统的基本设备。现有软件,硬件均具备条件,通过相关技术设想的功能均可以实现。技术实力不足,系统设计有困难,需要指导。2.3.5用户使用可行性该系统为网络购书人群和网络购书系统管理员设计。对于购物人员,只需熟悉Windows和IE的基本操作,了解购物流程就可成功购买到自己喜欢的图书。对于系统管理员,只需掌握简单的系统管理流程就可轻松操作此系统。2.3.6结论从上述情况判断,该项目需要开发人员在短时间内努力学习相关技术后才能开发,时间有限,可能会有不足之处。2.4需求分析2.4.1系统的前期调查与构思目前,虽然经济形势整体不好,但是网络经济带来的效益依旧持续增长。所以,更应加大对网络经济的建设。本系统就是随着网络经济不断发展而诞生而改善。本着服务大众,改善网购环境的目标,本系统不断地改善网络购书系统,使网络购书更加便捷。本系统前期调查过多家网络书店,例如卓越,亚马逊。综合了多家网络书店的特点,并结合所学知识,模拟实现了简单的网络书店系统。尽量让该系统达到构思严密、模块清晰、可视性强、实用性强、界面友好、方便易用、安全稳定等特点。本系统可对网络书店所陈列商品进行必要的增删改,此外后台管理页面有针对订单的处理模块,包括订单的增加,删除,修改。2.4.2任务概述目标由于时间有限,技术水平不足,虽然实际的网络书店系统可以设计得非常完善和庞大,但是在实际实现这个毕业设计中,还是把目标定在建立一个具有基本功能的B/S结构的网络书店系统。用户特点本系统的用户为系统管理员与网络购物人员。他们只需要熟悉Windows和IE的基本操作,熟练掌握计算机的使用,就可以轻松使用该系统。假定与约束假定客户机与服务器能够联网,并且具备运行软件的基本环境,用户熟练掌握计算机基本操作和熟悉浏览器环境。2.4.3需求规定对功能的规定通过实际调查,要求本系统具有以下功能:系统具有良好的人机界面。如果系统的适用对象较多,则要求本系统具有较好的权限管理。全面展示书店内所有图书。图书分类显示,方便顾客了解本书店的图书。查看书店内的交易信息。系统最大限度地实现易于维护和易于操作的特性。系统运行稳定,安全可靠。开发工具的选择本系统后台数据库采用目前最新的MicrosoftSQLServer2005,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据最大,效率高;前台采用jsp作为主要的开发工具,其可与SQLServer2005数据库无缝连接。2.5理论基础本管理软件系统主要运用了软件工程的设计思想。采用面向对象的开发方法,以Myeclipse作为主要开发工具,使用SQLServer2005作为关系数据库,应用JAVA语言实现功能代码以及JSP技术。同时采用JDBC连接数据库,配合功能强大的SQL查询语言实现建立关系数据库,访问数据库,对数据库的更新,较好地实现了预定的基于B/S模式的Web应用程序的需求功能。网络书店系统的主要功能是可以为大众用户提供一个方便、快速购书的交流平台。除此之外,还需要将用户分配权限,包括管理员、会员、管理员。管理员可以管理不同权限用户的基本信息,并且进入网上书店需要先注册个人信息,才能登录该系统。而且不同的权限就如不同的操作界面,功能也有所限制。当然,这里是不同权限的用户。管理员将不同类型的书籍上传到网站上,注明各类书籍的详细信息。用户登录系统后,将对书籍选择,并查看不同书籍的相关情况,并将喜欢的书籍下单,避免繁琐,确认信息后就可以点击提交购买书籍了。同时在用户购买书籍,从订单到送货期间,用户可以针对书籍质量出现的问题进行留言。因此网上书店系统对用户的逻辑信息管理功能有很强的要求。通过对本系统的初期研究、分析,基本要求本系统具有以下特点:要求网络书店系统具有友好的人机界面。功能强大、操作简单、扩展性强、稳定性高。本系统无操作系统限制,方便不同平台之间的移植。网站最大限度的实现易维护性和易操作性。网站运行稳定、安全可靠。2.6用例分析系统分为三类角色:会员、游客、管理员。会员具有的权限见图2.1,游客具有的权限见图2.2,管理员具有的权限见图2.3。每项功能的详细解释见表2.1-2.15.查看促销信息查看促销信息发布留言下单查看图书查询订单查询留言个人信息查询个人信息修改个人信息删除订单订单信息会员产品展示删除自己留言图2.1会员用例图查看促销信息查看促销信息发布留言查看图书查看促销查询留言促销信息游客产品展示图2.2游客用例图订单管理订单管理促销活动管理查询会员修改会员信息增加会员增加图书修改图书信息会员管理图书管理管理员查询促销活动删除促销活动增加促销活动删除订单删除图书删除会员查询订单查询图书留言簿留言查看留言簿图2.3管理员用例图表2.1增加会员用例描述执行者管理员前置条件已经以管理员身份登录进系统主成功场景(1)进入系统首页(2)管理员点击“增加会员”链接(3)管理员输入密码、用户名、电话。单击“提交”按钮(4)系统验证信息是否合法,保存用户信息(5)系统显示操作成功页面扩展1(3a)(3a1)(3a2)可点击“重置”链接返回成功场景(1扩展2点击“后退”按钮链接返回前一页面表2.2修改会员信息用例描述执行者会员、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“修改会员信息”链接(3)输入原密码、新密码、确认密码、手机号。单击“提交”按钮(4)系统验证信息是否合法,保存用户信息(5)系统显示操作成功页面扩展1(3a)(3a1)(3a2)可点击“重置”链接返回成功场景(1扩展2管理员身份可通过点击“查询会员”链接,在给出的用户列表中选择任意一名用户对其个人信息进行修改扩展3点击“后退”按钮链接返回前一页面表2.3删除会员用例描述执行者管理员前置条件已经以管理员身份登录进系统主成功场景(1)进入系统首页(2)管理员点击“删除会员”链接(3)管理员在给出的用户列表中选择想要删除的用户,单击其右边的“删除”链接(4)弹出“确认删除提示框”,选择相应操作(5)系统显示执行操作后的用户列表表2.4查询会员用例描述执行者会员、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“查询会员”链接(3)输入查询条件。单击“查询”按钮(4)系统显示执行操作后的用户列表表2.5留言簿用例描述执行者会员、游客、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“留言簿”链接,显示所以留言。(3)输入留言内容。单击“提交”按钮(4)系统显示操作成功页面表2.6删除留言用例描述执行者会员、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“留言板”链接(3)在给出的留言列表中选择想要删除的留言,单击其右边的“删除”链接(4)弹出“确认删除提示框”,选择相应操作(5)系统显示执行操作后的留言列表备注管理员身份可对任何人的留言进行删除,会员只能删除自己的留言。表2.7增加图书用例描述执行者管理员前置条件已经以管理员身份登录进系统主成功场景(1)进入系统首页(2)点击“增加图书”链接(3)输入书名、类别、作者、出版社、isbN(国际标准书号)、价格、数量、简介。单击“提交”按钮(4)系统验证信息是否合法,保存项目信息(5)系统显示操作成功页面扩展1(3a)(3a1)(3a2)可点击“重置”按钮,链接返回成功场景(1扩展2点击“后退”按钮链接返回前一页面表2.8修改图书信息用例描述执行者管理员前置条件已登录进系统主成功场景(1)进入系统首页(2)点击“修改图书信息”链接(3)输入书名、类别、作者、出版社、isbN(国际标准书号)、价格、数量、简介。单击“提交”按钮(4)系统验证信息是否合法,保存项目信息(5)系统显示操作成功页面扩展1(3a)(3a1)(3a2)可点击“重置”按钮,链接返回成功场景(1备注只有管理员身份可以对图书信息进行修改表2.9查询图书用例描述执行者会员、游客、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“查询图书”链接(3)输入查询条件。单击“查询”按钮(4)系统显示执行操作后的项目列表表2.10删除图书用例描述执行者管理员前置条件已经以管理员身份登录进系统主成功场景(1)进入系统首页(2)点击“删除图书”链接(3)弹出对话框,询问提示是否删除点击“确定”按钮(4)系统显示操作成功页面扩展1点击“取消”按钮,链接返回成功场景(1)表2.11查询订单用例描述执行者会员、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“查询订单”链接(3)输入查询条件。单击“查询”按钮(4)系统显示执行操作后的项目列表表2.12删除订单用例描述执行者会员、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“删除订单”链接(3)弹出对话框,询问提示是否删除点击“确定”按钮(4)系统显示操作成功页面扩展1点击“取消”按钮,链接返回成功场景(1)表2.13增加促销活动用例描述执行者管理员前置条件已登录进系统主成功场景(1)进入系统首页(2)点击“增加促销活动”链接(3)输入标题、活动内容、开始时间、结束时间。单击“提交”按钮(4)系统显示操作成功页面扩展1(3a)(3a1)(3a2)可点击“重置”按钮链接返回成功场景(1备注只有管理员可以增加促销活动。表2.14查询促销活动用例描述执行者会员、游客、管理员前置条件已经登录进系统主成功场景(1)进入系统首页(2)点击“查询促销活动”链接(3)输入查询条件。单击“查询”按钮(4)系统显示执行操作后的项目列表表2.15删除促销活动用例描述执行者管理员前置条件已经以审批员身份登录进系统主成功场景(1)进入系统首页(2)点击“删除促销活动”链接(3)弹出对话框,询问提示是否删除点击“确定”按钮(4)系统显示操作成功页面扩展1点击“取消”按钮,链接返回成功场景(1)2.7开发环境搭建2.7.1MyEclipse科研管理系统使用的开发工具为MyEclipse8.5。Jdk则使用MyEclipse自带的。MyEclipse安装过程略。2.7.2SQLServer2005下载SQLServer2005后按照一般软件的安装方法进行安装,安装过程略。2.7.3创建工程运行MyEclipse,选择一个工作空间,在PackageExplorer区域右键选择new->WebProject,创建一个Web项目,起名为RMS,在项目上点击右键选择BuildPath->ConfigureBuildPath点击AddExternalJARs,将数据库驱动和其它所需要的jar包引入到项目中。点击图2.5所示的按钮,开始部署tomcat。图2.4部署Tomcat1如图2.6,在project中选择RMS,点击右边的Add按钮,出现如图2.7所示的界面,在Server中选择使用的服务器,其它默认,点击Apply,点击OK按钮,完成部署。图2.5部署Tomcat2图2.6部署Tomcat3
第三章系统概要说明3.1系统的软件结构本系统分为五大模块:会员管理、图书管理、订单管理、促销活动管理、留言簿管理。模块间的关系如图3.1所示,本系统将使用人员分为三类角色:会员、游客、管理员。系统整体结构图如图3.1所示:网络网络书店系统会员管理图书管理订单管理促销活动管理留言簿管理增加会员修改会员信息删除会员查询会员增加图书修改图书信息删除图书查询图书增加订单删除订单查询订单增加促销活动删除促销活动查询促销活动增加留言删除留言图3.1系统功能结构图3.2三层软件结构示意图网络书店系统采用了三层结构的模式。三层分别是视图层、控制层和模型层。视图层只提供应用程序的用户界面,负责与用户交互,控制层根据用户操作将用户输入的参数传递到后台,调用相应的业务逻辑而不是直接访问后台数据库。模型层是应用系统的关键,它负责处理所有用户请求,进行具体的运算,并把处理结果返回给视图层。通过这种方案,能够快速开发出比传统两层结构更为效率高、安全性好的系统。如图所示图3.2系统文件夹总体结构图3.3系统文件夹展开后3.3构建开发环境3.3.1网站开发环境网站开发环境:Myeclipse集成开发环境网站开发语言:JAVA/JSP网站后台数据库:SQLServer2005开发环境运行平台:WindowsXP3.3.2服务器端操作系统:WindowsXPWeb服务器:Tomcat数据库服务器:SQLServer2005浏览器:IE3.4数据库的设计3.4.11、确定建立数据库的目的和收集数据数据库设计过程的第一个阶段是确定建立数据库的目的和收集数据。通常,我们也把确定建立数据库的目的称为需求分析。需求分析的任务就是通过详细调查要处理的对象来明确用户的各种需求。并且通过调查、收集和分析信息,以了解在数据库中需要存储哪些数据,要完成什么样的数据处理功能。这一过程是数据库设计的起点,它将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。确定目的之后就需要根据目的收集有用的数据。在着手收集数据之前最重要的就是要调查用户的实际需求,然后分析与表达这些需求。调查用户需求的方法有很多,如查阅记录、访谈、开调查会、设计调查表请用户填写或回答相关问题等。其中比较有效的方法是访谈,我们可以借助一些设计合理的调查表来与用户直接交流。通过充分交流,可以了解他们平时是如何使用数据库的,以及对当前信息的要求,进而设计满足用户需求的字段,并根据设计的字段收集数据。2、建立概念模型确定建立数据库的目的以及完成数据收集后,就进入数据库设计过程的第二阶段——建立概念模型。概念模型,也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。这一阶段是整个数据库设计的关键。设计时,一般先根据应用的需求,画出能反映每个应用需求的E-R图,其中包括确定实体、属性和联系的类型。然后优化初始的E-R图,消除冗余和可能存在的矛盾。概念模型是队用户需求的客观反映,并不涉及具体的计算机软、硬件环境。因此,在这一阶段中我们必须将注意力集中在怎样表达出用户对信息的需求,而不考虑具体实现问题。3、建立数据模型完成上一阶段后,我们得到了一个与具体计算机软、硬件无关的概念模型。接着我们就可以着手建立数据库模型了,这是数据库设计过程的第三个阶段。在这一阶段中我们要将概念模型中得到的E-R图转换成具体的数据模型。数据模型是表示实体与实体间的联系的模型。数据模型一般分为层次、网状、关系和面向对象模型等,主要是用于DBMS的实现。目前比较常用的是关系数据模型,我们通常将E-R图转换成关系数据模型,实际上就是要将实体、实体的属性和实体之间的联系转换为关系模式。4、实施与维护数据库最后一个阶段是实施与维护数据库。完成数据模型的建立后,我们就必须对字段进行命名,确定字段的类型和宽度,并利用数据库管理系统或数据库语言创建数据库结构、输入数据和运行等,因此数据库的实施是数据库设计过程的“最终实现”。如果数据库运行很成功,则表明数据库设计任务基本结束,以后的重点就是数据库的维护工作,包括做好备份工作、数据库的安全性和完整性调整、改善数据库性能等。数据库的设计在数据库应用系统的开发中占有很重要的地位。只有设计出合理的数据库,才能为建立在数据库上的应用提供方便。不过数据库的设计过程从来都不会有真正的结束,因为随着用户需求和具体应用的变化和扩大,数据库的结构也可能会随之变化。3.根据系统功能设计的要求,本系统设计了五张数据表,以下为各数据表:actinfo表用来保存促销活动信息(见表3.4),bookinfo用来保存图书信息(见表3.5),comment用来保存留言信息(见表3.6),orderinfo用来保存订单管理信息(见表3.7),userinfo表用来保存用户信息(见表3.8)表3.4促销活动信息表字段名类型长度可空主键描述idint否是用户idtitlenvarchar50否否题目 contentstext是否活动stimedatetime是否开始时间ftimedatetime是否结束时间createdtimedatetime是否创建时间表3.5图书信息表字段名类型长度可空主键描述idint否是图书idbooknamenvarchar50否否书名 authornvarchar50是否作者publishnvarchar50是否出版社isbnnvarchar50是否Isbnpricefloat否否价格numint否否数量categorychar10是否类别contentstext是否简介表3.6留言信息表字段名类型长度可空主键描述idint否是留言idsendnamenvarchar50否否留言人名contentstext否否活动createdtimedatetime否否创建时间表3.7订单信息表字段名类型长度可空主键描述idint否是订单号bookidint否否图书idusernamenvarchar50否否订单人numint否否数量createdtimedatetime否否订单时间placenvarchar(50)50否否地址phonevarchar(50)50否否电话表3.8用户信息表字段名类型长度可空主键描述idint否是用户idpswvarchar50否否密码usernamenvarchar50否否用户名capacityvarchar50否否身份phonevarchar50否否电话
第四章系统详细设计与实现总体设计阶段完成了软件的结构设计,划分了模块,并规定了各模块的功能与它们之间的联系。在此之后,按照软件工程开发的思想,应进入详细设计阶段。在详细设计这个阶段中,根据总体设计提供的文档,确定每个模块的算法,内部的数据组织,选定工具表达清晰正确的算法,编写详细设计说明书。详细设计阶段的根本目标是确定怎样实现所要求的系统,给出软件模块结构中各个模块的内部过程描述。经过这个阶段的设计工作,得出对目标系统的精确描述,这个描述在编码阶段可以由程序员直接翻译成用某种程序设计语言书写的程序。系统实现是指编码阶段。编码就是将软件详细设计的结果翻译成用某种程序设计语言书写的程序。软件的设计开发过程经过需求分析、总体设计和详细设计几个阶段之后,已经形成了基本变成框架,最后就是通过编码对设计进一步具体化,实现相应的功能。运用软件功能方法设计软件,主要是为了提高软件质量,软件质量在很大程度上取决于设计的质量,同时编码的好坏也是影响软件质量的十分重要的因素,如果编码中存在各种问题,那么再好的设计也无法体现出来。4.1基础类的设计与实现数据库类DB里面封装了数据库连接和关闭连接的方法:1、获取数据库连接ConnectiongetConn()2、创建statement对象StatementcreateStmt(Connectionconn)3、关闭数据库连接voidclose(Connectionconn)4、关闭statement对象voidclose(Statementstmt)5、关闭结果集voidclose(ResultSetrs)4.2会员管理模块该模块分为增加会员,修改会员信息,删除会员,查询会员4.2.1增加会员已管理员身份登录,点击增加会员如图4.1图4.1增加会员界面其部分代码如下: publicintaddUsers(Stringpsw,Stringusername,Stringphone){ intresult=1; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); ResultSetrs=null; try{ Stringsql1="select*fromuserinfowhereusername='"+username+"'"; rs=stmt.executeQuery(sql1); while(rs.next()){ result=0; returnresult; } Stringsql2="insertintouserinfo(psw,username,capacity,phone)values(?,?,'会员',?)"; PreparedStatementpstmt=conn.prepareStatement(sql2); pstmt.setString(1,psw); pstmt.setString(2,username); pstmt.setString(3,phone); pstmt.executeUpdate(); DB.close(pstmt); returnresult; }catch(Exceptione){ e.printStackTrace(); result=0; returnresult; }finally{ DB.close(conn); } }4.2.2删除会员点击左侧删除会员,页面跳转至删除会员界面,点击右侧删除按钮,弹出对话框,提示是否删除如图4.2图4.2删除会员界面其部分代码如下: publicvoiddelUsers(Stringusername){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); try{ Stringsql="deletefromuserinfowhereusername='"+username+"'"; stmt.executeUpdate(sql); }catch(Exceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } }4.2.3修改会员点击左侧修改会员信息,页面跳转至修改会员信息,如图4.3,点击右侧修改按钮,页面跳转至如图4.4图4.3修改会员信息界面图4.4修改会员信息界面其部分代码如下: publicinteditUsers(Stringpsw1,Stringpsw2,Stringpsw3,Stringphone,intid){ intresult=1; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); ResultSetrs=null; try{ Stringpswsql="selectpswfromuserinfowhereid='"+id+"'"; rs=stmt.executeQuery(pswsql); rs.next(); Stringpassword=rs.getString(1); if(!password.equals(psw1)){ result=0; returnresult; } if(!psw2.equals(psw3)){ result=0; returnresult; }else{ Stringsql="updateuserinfosetpsw=?,phone=?whereid=?"; PreparedStatementpstmt=conn.prepareStatement(sql); pstmt.setString(1,psw2); pstmt.setString(2,phone); pstmt.setInt(3,id); pstmt.executeUpdate(); DB.close(pstmt); returnresult; } } catch(Exceptione){ e.printStackTrace(); result=0; returnresult; }finally{ DB.close(conn); } }4.2.4查询会员点击左侧查询会员,页面跳转至查询会员,如图4.5,输入条件点击右侧查询按钮,页面跳转至如图4.6,点击用户名链接,页面跳转至如图4.7图4.5查询会员界面图4.6查询会员界面图4.7查询会员界面其部分代码如下:按条件获得用户列表 publicList<Users>selUsers(StringstrPageNo,inttotalPages,Stringusername){ intpageNo=0; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); List<Users>usersList=newArrayList<Users>(); if(strPageNo==null||strPageNo.equals("")){ pageNo=1; }else{ try{ pageNo=Integer.parseInt(strPageNo.trim()); }catch(NumberFormatExceptione){ pageNo=1; } if(pageNo<=0) pageNo=1; } if(pageNo>totalPages){ if(totalPages>0) pageNo=totalPages; else{ pageNo=1; } } try{ ResultSetrs=null; StringBufferbuffer=newStringBuffer("selecttop"+pageSize+"*"+ "from(selectROW_NUMBER()OVER(ORDERBYid)ASrn,*fromuserinfo"); if(username!=null&&!username.equals("")){ buffer.append("whereusernamelike'%"+username+"%'"); } buffer.append(")uwherern>"+pageSize*(pageNo-1)); rs=stmt.executeQuery(buffer.toString()); Usersusers=null; while(rs.next()){ users=newUsers(); users.setId(rs.getInt("id")); users.setPsw(rs.getString("psw")); users.setUsername(rs.getString("username")); users.setCapacity(rs.getString("capacity")); users.setPhone(rs.getString("phone")); usersList.add(users); } DB.close(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); }returnusersList; }获得符合结果的记录条数 publicintgetTotalRecords(StringstrPageNo,Stringusername){ inttotalRecords=0; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); ResultSetrs=null; try{ StringBufferbuffer=newStringBuffer("selectcount(*)fromuserinfo"); if(username!=null&&!username.equals("")){ buffer.append("whereusernamelike'%"+username+"%'"); } rs=stmt.executeQuery(buffer.toString()); if(rs.next()){ totalRecords=rs.getInt(1); }else{ totalRecords=0; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(rs); DB.close(stmt); DB.close(conn); }returntotalRecords; }获得符合查询结果的记录显示的页数 publicintgetTotalPages(inttotalRecords){ inttotalPages=totalRecords%pageSize==0?totalRecords /pageSize:totalRecords/pageSize+1; returntotalPages; }获得一个用户对象,包含该用户所有信息 publicUsersgetUsers(Stringusername){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); Usersusers=null; try{ ResultSetrs=null; Stringsql="select*fromuserinfowhereusername='"+username+"'"; rs=stmt.executeQuery(sql); if(rs.next()){ users=newUsers(); users.setId(rs.getInt("id")); users.setPsw(rs.getString("psw")); users.setUsername(rs.getString("username")); users.setCapacity(rs.getString("capacity")); users.setPhone(rs.getString("phone")); } DB.close(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); }returnusers; }}4.3图书管理模块该模块分为增加图书,修改图书信息,删除图书,查询图书4.3.1已管理员身份登录,点击增加图书如图4.8图4.8查询图书界面其部分代码如下: publicintaddBook(Stringbookname,Stringauthor,Stringpublish,Stringisbn,Stringprice,Stringnum,Stringcategory,Stringcontents){ intresult=1; Connectionconn=DB.getConn(); try{ Stringsql="insertintobookinfo(bookname,author,publish,isbn,price,num,category,contents)values(?,?,?,?,?,?,?,?)"; PreparedStatementpstmt=conn.prepareStatement(sql); pstmt.setString(1,bookname); pstmt.setString(2,author); pstmt.setString(3,publish); pstmt.setString(4,isbn); pstmt.setString(5,price); pstmt.setString(6,num); pstmt.setString(7,category); pstmt.setString(8,contents); pstmt.executeUpdate(); DB.close(pstmt); returnresult; } catch(Exceptione){ e.printStackTrace(); result=0; returnresult; }finally{ DB.close(conn); } }4.3点击左侧删除图书,页面跳转至删除图书界面,点击右侧删除按钮,弹出对话框,提示是否删除如图4.9图4.9删除图书界面其部分代码如下: publicvoiddelBook(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); try{ Stringsql="deletefrombookinfowhereid='"+id+"'"; stmt.executeUpdate(sql); }catch(Exceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } }4.3.3修改图书点击左侧修改图书信息,页面跳转至修改图书信息,如图4.10,点击右侧修改按钮,页面跳转至如图4.11图4.10修改图书信息界面图4.11修改图书信息界面其部分代码如下: publicinteditBook(intid,Stringbookname,Stringauthor,Stringpublish,Stringisbn,Stringprice,Stringnum,Stringcategory,Stringcontents){ intresult=1; Connectionconn=DB.getConn(); try{ Stringsql="updatebookinfosetbookname=?,author=?,publish=?,isbn=?,price=?,num=?,category=?,contents=?whereid=?"; PreparedStatementpstmt=conn.prepareStatement(sql); pstmt.setString(1,bookname); pstmt.setString(2,author);; pstmt.setString(3,publish); pstmt.setString(4,isbn); pstmt.setString(5,price); pstmt.setString(6,num); pstmt.setString(7,category); pstmt.setString(8,contents); pstmt.setInt(9,id); pstmt.executeUpdate(); DB.close(pstmt); returnresult; } catch(Exceptione){ e.printStackTrace(); result=0; returnresult; }finally{ DB.close(conn); } }4.3.4查询图书点击左侧查询图书,页面跳转至查询图书,如图4.12,输入条件点击右侧查询按钮,页面跳转至如图4.13,点击id链接,页面跳转至如图4.14图4.12查询图书界面图4.13查询图书界面图4.14查询图书界面其部分代码如下:获得符合结果的记录条数 publicintgetTotalRecords(StringstrPageNo,Stringbookname,Stringauthor,Stringpublish,Stringisbn,Stringsprice,Stringfprice,Stringcategory){ inttotalRecords=0; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); ResultSetrs=null; try{ StringBufferbuffer=newStringBuffer("selectcount(*)frombookinfowhere1=1"); if(bookname!=null&&!bookname.equals("")){ buffer.append("andbooknamelike'%"+bookname+"%'"); } if(category!=null&&!category.equals("")){ buffer.append("andcategorylike'%"+category+"%'"); } if(author!=null&&!author.equals("")){ buffer.append("andauthorlike'%"+author+"%'"); } if(publish!=null&&!publish.equals("")){ buffer.append("andpublishlike'%"+publish+"%'"); } if(isbn!=null&&!isbn.equals("")){ buffer.append("andisbnlike'%"+isbn+"%'"); } if(sprice!=null&&!sprice.equals("")){ floatfloatmoney=0; floatmoney=Float.parseFloat(sprice); buffer.append("andprice>="); buffer.append("'"+floatmoney+"'"); } if(fprice!=null&&!fprice.equals("")){ floatfloatmoney=0; floatmoney=Float.parseFloat(fprice); buffer.append("andprice<="); buffer.append("'"+floatmoney+"'"); } rs=stmt.executeQuery(buffer.toString()); if(rs.next()){ totalRecords=rs.getInt(1); }else{ totalRecords=0; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(rs); DB.close(stmt); DB.close(conn); }returntotalRecords; }获得符合查询结果的记录显示的页数 publicintgetTotalPages(inttotalRecords){ inttotalPages=totalRecords%pageSize==0?totalRecords /pageSize:totalRecords/pageSize+1; returntotalPages; }获取一个图书对象 publicBookgetBook(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); Bookbook=null; try{ ResultSetrs=null; Stringsql="select*frombookinfowhereid="+id; rs=stmt.executeQuery(sql); while(rs.next()){ book=newBook(); book.setId(rs.getInt("id")); book.setBookname(rs.getString("bookname")); book.setAuthor(rs.getString("author")); book.setPublish(rs.getString("publish")); book.setIsbn(rs.getString("isbn")); book.setPrice(rs.getFloat("price")); book.setNum(rs.getInt("num")); book.setCategory(rs.getString("category")); book.setContents(rs.getString("contents")); } DB.close(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); }returnbook; }}4.4订单管理模块该模块分为删除订单,查询订单。4.4.1删除订单点击订单信息,页面跳转至查询订单信息页面,点击右侧删除按钮,弹出对话框,提示是否删除如图4.15图4.15删除订单页面界面其部分代码如下:删除订单 publicvoiddelOrder(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); intnum=0; intbookid=0; try{ ResultSetrs=null; Stringsql1="selectnum,bookidfromorderinfowhereid='"+id+"'"; rs=stmt.executeQuery(sql1); while(rs.next()){ num=rs.getInt("num"); bookid=rs.getInt("bookid"); } Stringsql2="updatebookinfosetnum=num+?whereid=?"; PreparedStatementpstmt=conn.prepareStatement(sql2); pstmt.setInt(1,num); pstmt.setInt(2,bookid); pstmt.executeUpdate(); Stringsql3="deletefromorderinfowhereid='"+id+"'"; stmt.executeUpdate(sql3); DB.close(rs); DB.close(pstmt); }catch(Exceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } }由于点击订单管理就直接跳转到图4.15界面,功能与其他模块功能相近,在此就不做过多的说明了。4.5促销活动管理模块该模块分为增加促销活动,删除促销活动,查询促销活动。4.5.1增加促销活动点击左侧增加促销活动,页面跳转至增加促销活动,如图4.16图4.16增加促销活动界面其部分代码如下: publicintaddAct(Stringtitle,Stringcontents,Stringstime,Stringftime){ intresult=1; Connectionconn=DB.getConn(); try{ Stringsql="insertintoactinfo(title,contents,stime,ftime,createdtime)values(?,?,?,?,getdate())"; PreparedStatementpstmt=conn.prepareStatement(sql); pstmt.setString(1,title); pstmt.setString(2,contents); pstmt.setString(3,stime); pstmt.setString(4,ftime); pstmt.executeUpdate(); DB.close(pstmt); returnresult; }catch(Exceptione){ e.printStackTrace(); result=0; returnresult; }finally{ DB.close(conn); } }4.5.2删除促销活动点击左侧删除促销活动,页面跳转至删除促销活动,如图4.17,点击右侧删除按钮,页面跳转至如图4.18。图4.17删除促销活动界面图4.18删除促销活动界面其部分代码如下: publicvoiddelAct(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); try{ Stringsql="deletefromactinfowhereid='"+id+"'"; stmt.executeUpdate(sql); }catch(Exceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } }4.5.5查询促销活动点击左侧查询促销活动,页面跳转至查询促销活动,如图4.19,输入条件点击右侧查询按钮,页面跳转至如图4.20,点击id链接,页面跳转至如图4.21。图4.19查询促销活动界面图4.20查询促销活动界面图4.21查询促销活动界面其部分代码如下:获得符合结果的记录条数方法publicintgetTotalRecords(StringstrPageNo,Stringtitle,Stringoperater1,Stringstime,Stringoperater2,Stringftime){ inttotalRecords=0; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); ResultSetrs=null; try{ StringBufferbuffer=newStringBuffer("selectcount(*)fromactinfowhere1=1"); if(title!=null&&!title.equals("")){ buffer.append("andtitlelike'%"+title+"%'"); }if(operater1!=null&&!operater1.equals("")&&stime!=null&&!stime.equals("")){ buffer.append("andstime"); if(operater1.equals("1")) buffer.append("<"); if(operater1.equals("2")) buffer.append("="); if(operater1.equals("3")) buffer.append(">"); buffer.append("'"+stime+"'"); }if(operater2!=null&&!operater2.equals("")&&ftime!=null&&!ftime.equals("")){ buffer.append("andftime"); if(operater2.equals("1")) buffer.append("<"); if(operater2.equals("2")) buffer.append("="); if(operater2.equals("3")) buffer.append(">"); buffer.append("'"+ftime+"'"); } rs=stmt.executeQuery(buffer.toString()); if(rs.next()){ totalRecords=rs.getInt(1); }else{ totalRecords=0; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(rs); DB.close(stmt); DB.close(conn); }returntotalRecords; }获得符合查询结果的记录总页数方法 publicintgetTotalPages(inttotalRecords){ inttotalPages=totalRecords%pageSize==0?totalRecords /pageSize:totalRecords/pageSize+1; returntotalPages; }获取一个促销活动对象 publicActgetAct(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); Actact=null; try{ ResultSetrs=null; Stringsql="select*fromactinfowhereid="+id; rs=stmt.executeQuery(sql); if(rs.next()){ act=newAct(); act.setTitle(rs.getString("title")); act.setContents(rs.getString("contents")); act.setStime(rs.getString("stime")); act.setFtime(rs.getString("ftime")); act.setId(rs.getInt("id")); act.setCreatedTime(rs.getString("createdtime")); } DB.close(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); }returnact; }}4.6留言簿模块该模块分为删除留言,查看留言。4.6.1删除留言点击上面留言簿,页面跳转至删除留言界面,点击右侧删除按钮,弹出对话框,提示是否删除如图4.22图4.22删除留言簿界面其部分代码如下: publicvoiddelComment(Stringid){ Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); try{ Stringsql="deletefromcommentwhereid='"+id+"'"; stmt.executeUpdate(sql); }catch(Exceptione){ e.printStackTrace(); }finally{ DB.close(stmt); DB.close(conn); } }4.6.2查看留言点击上面留言簿,页面跳转至如图4.23图4.23查看留言簿界面其部分代码如下: publicList<Comment>getCommentsList(StringstrPageNo,inttotalPages){ intpageNo=0; Connectionconn=DB.getConn(); Statementstmt=DB.createStmt(conn); List<Comment>commentList=newArrayList<Comment>(); if(strPageNo==null||strPageNo.equals("")){ pageNo=1; }else{ try{ pageNo=Integer.parseInt(strPageNo.trim()); }catch(NumberFormatExceptione){ pageNo=1; } if(pageNo<=0) pageNo=1; } if(pageNo>totalPages){ if(totalPages>0) pageNo=totalPages; else{ pageNo=1; } } try{ ResultSetrs=null; Stringsql="selecttop"+pageSize+"*"+ "from(selectROW_NUMBER()OVER(OR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州-元宵活动策划方案(3篇)
- 童鞋活动直播策划方案(3篇)
- 精心主题策划活动方案(3篇)
- 绩效系统施工方案(3篇)
- 老家应援活动策划方案(3篇)
- 艺术跑活动策划方案(3篇)
- 药房元旦活动策划方案(3篇)
- 装修危险施工方案(3篇)
- 调研活动的策划方案(3篇)
- 路面立柱施工方案(3篇)
- 机动车维修竣工出厂合格证
- GB/T 9437-1988耐热铸铁件
- GB/T 25085.3-2020道路车辆汽车电缆第3部分:交流30 V或直流60 V单芯铜导体电缆的尺寸和要求
- GB/T 18998.3-2003工业用氯化聚氯乙烯(PVC-C)管道系统第3部分:管件
- 高校辅导员应聘考试真题及答案
- 地理课堂教学技能课件
- 电气设备预防性试验合同范本-
- 赣美版八年级美术下册全册课件汇总
- 事业单位人事管理条例完整版x课件
- 高处作业安全技术交底-
- 人美版四年级下册美术《鸢尾花》课件
评论
0/150
提交评论