毕业论文-校园二手交易系统的设计与实现_第1页
毕业论文-校园二手交易系统的设计与实现_第2页
毕业论文-校园二手交易系统的设计与实现_第3页
毕业论文-校园二手交易系统的设计与实现_第4页
毕业论文-校园二手交易系统的设计与实现_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

Web校园二手交易系统的设计与实现目录1引言 11.1开发背景 11.2开发意义 11.3可行性研究 22系统构架分析 22.1JAVA语言简洁 22.2JAVAEE技术介绍 22.3SERVLET/Jsp技术 32.4JAVABeans技术 32.5开发环境及环境配置 42.5.1系统环境及Java/JSP环境配置 42.5.2数据库开发工具选择及配置 42.5.3关系数据库管理系统 52.5.4对性能的一般规定 52.5.5其他专门要求 52.5.6对安全性的要求 52.5.7运行环境规定 53系统设计 63.1系统总体设计 63.2概要设计 63.2.1系统功能模块设计 63.2.2系统结构图 73.2.3数据流图 73.3数据库设计 83.3.1数据库需求分析 83.3.2数据库概要设计 83.3.3数据库详细设计 94系统实现 114.1程序设计 114.2系统的测试 214.2.1测试的目的和作用 214.2.2测试原则 214.2.3测试方法和步骤 21总结 22参考文献 24第27页Web校园二手交易系统的设计与实现周伟(安阳师范学院人文管理学院,河南安阳455002)摘要:随着信息技术的迅速发展与网络教学的普及,网上作业提交也成为现代化教学不可或缺的一部分。在此背景下,用JavaEE开发了网上作业提交系统。本论文首先考虑了学生网上作业提交和教师网上作业批改的实际要求,分析了此系统应该具有的功能;其次对系统的主要功能模块进行了详细地描述,其中主要包括教师布置作业,学生提交作业,教师批改作业和管理员设置。最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验和体会。关键词:Web二手交易系统;javaEE;B/S结构;数据库1引言1.1开发背景近些年来互联网迅速发展,使得不同地点的人们在任何时间都可以轻松获取自己需要的信息,同时互联网的出现极大地推动了教育事业的发展,特别是javaEE技术,以其交互性、动态性的特点,大大扩展了互联网的应用范围,互联网的广泛应用也深刻的影响了教育教学领域。1.2开发意义随着全世界互联网技术的不断发展,各种基于互联网技术的网络应用不断涌现,网络技术正在不断的深入人们的生活。人们从Internet上获取信息、享受生活、交流感情、网上工作等。Internet正在迅速改变着人们的生活方式。在当前社会上,许多的各种类型的电子商务类网站纷纷建立,可以很大程度上的解决人们信息资源的闭塞以及地域上的限制。作为大学校园,伴随着学生的购买能力的提高和每年的升学和毕业,也存在的许多各种类型的二手商品,由于信息交流的落后,很多只限于于校园公告栏或者请人代为宣传的方式进行交易。这种方式有很多局限性和偶然性,并不能满足二手商品畅通交流的要求。于是一种新的二手商品信息交流的方式出现了,就是基于Web的校园网二手商品交易系统。通过这个系统,可以发现每一个校园网用户都是系统的主人,大家可以非常方便的发布自己的信息,浏览别人的发布的信息,还可以对各种二手商品信息作出横向比较,作出自己的最佳选择。由此可见,该系统只是一个交流二手商品信息的平台,与一般的电子商务类网站又有本质的区别。1.3可行性研究设计这样一个系统,从根本上解决了传统的校园二手信息发布交流方式的弊端,使得校园各种二手商品信息得到了有效的整合,方便了广大用户。且拥有的客户通常只是大学校园网的用户,所有系统规模上来讲不会很大,从经济上来说,由于选择的开发工具和服务器几乎全部为免费的开源软件,并且由于是开发成本较低的基于Web的B/S模式,而非成本费用相对较高的C/S模式,所以从经济上来讲是可行的。从技术上来说,由于是基于Web的,可以相对比较容易面对用户的实际需求而开发。而在现今,各种网络应用的开发已经相当成熟,出现了几大主流的开发语言和工具,都可以非常有效的支持开发这样一个系统。同时作为本系统,也有许多成功的电子商务类网站的经验可以借鉴,所以从技术的角度来说,也是可行的。从运行上来说,由于客户端仅仅只是需要一个浏览器,通过浏览器来登陆系统,而服务器端也只需要一台服务器,服务器要求一个数据库环境和一个网络应用开发的环境,实现起来比较容易,所以从运行上来说是可行的。同时这样一个系统,在系统管理员合法管理和用户的自觉配合下,不会违规进行任何的不法的活动和交易,发布具有危害性和不适宜的信息,也不存在任何非法牟利的行为,在法律上也是可行的。在各种可行性研究保证和基于用户需求要求下,开发系统的方案经过不断论证和假设,确定出了一个最佳方案。2系统构架分析2.1Java语言简介Java语言是美国Sun公司于1995年推出的一种简单的、面向对象的、分布式的、可解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的多线程的、动态的语言。其前身为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术。经过Sun公司的工程师的不懈努力以及全世界无数的编程爱好者的使用,Java终于发展成为今天这样一个集桌面(J2SE)、网络(J2EE)、移动平台(J2ME)应用为一体的功能强大的编程语言。目前Java由于其平台无关及分布式特性,最重要的应用是在网络应用上。2.2J2EE技术介绍J2EE技术是Java网络应用的技术,广泛应用于企业级的应用。它是由一套规范(shannin,2001)和建立在J2SE平台上的应用编程接口(API)组成。J2EE拥有Sun公司提供免费开发工具,称为J2EE软件开发工具包(SoftwareDevelopmentKit,SDK)(/j2ee)。J2EE技术是一种Java网络应用技术的组合,包含有远程方法调用(RemoteMethodInvocation,RMI)、Java消息服务(JavaMessageService,JMS)、JavaMail等通信服务,JDBC、Java命名和目录接口(JavanamingandDirectoryInterface,JNDI)、Java连接器体系结构(JavaConnectorArchitecture,JCA)、Java事务API/Java事务服务(JTA/JTS)、XML处理API等通用服务以及Servlet、Java服务器页面(JSP)、企业级JavaBean(EJB)等组件技术。任何J2EE的实现都必须要在其特定容器中实现。2.3Servlet/JSP技术Servlet是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web程序开发工具的作用是相同的,在使用JavaServlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合JavaServlet规范,Servlet是完全平台无关且是Web服务器无关的。由于JavaServlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此JavaServlet效率非常高。但JavaServlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,JavaServlet是利用输出HTML语句来实现动态网页的,如果用JavaServlet来开发整个网站,动态部分和静态页面的整合过程简直就是一场噩梦。这就是为什么SUN还要推出JavaServerPages的原因。JSP(JavaServerPages)是一种基于Java的脚本技术。在JSP的众多优点之中,其中之一是它能将HTML编码从Web页面的业务逻辑中有效地分离出来。用JSP访问可重用的组件,如Servlet、JavaBean和基于Java的Web应用程序。JSP还支持在Web页面中直接嵌入Java代码。可用两种方法访问JSP文件:浏览器发送JSP文件请求、发送至Servlet的请求。

1.JSP文件访问Bean或其它能将生成的动态内容发送到浏览器的组件。2.发送至Servlet的请求生成动态内容,并调用JSP文件将内容发送到浏览器。该访问使得将内容生成从内容显示中分离出来更为方便。JSP最大的优点在于其与平台无关性,并且具有“一次编写,处处运行”的特点。2.4JavaBeans技术JavaBeans就是Java的可重用组件技术。ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBeans实现了同样的功能扩充。JSP对于在Web应用中集成JavaBeans组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBeans组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。在实际的JSP开发过程中,和传统的ASP或PHP页面相比,JSP页面将会是非常简洁的,由于JavaBeans开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理过程实际上被封装到了JavaBeans中。2.5开发环境及环境配置2.5.1系统环境及Java/JSP环境配置开发及测试的系统环境,我选择了MicrosoftWindowsAdvancedServer2000。由于其本身就是为服务器版的,适合用于搭设成为服务器端。要开发JSP,首先必须要求有Java环境,我选择了Java2Platform,EnterpriseEdition1.4SDK(即j2eesdk-1_4_03-windows)。作为JSP的容器,选择了目前非常流行的Tomcat5.5。而IDE工具则选择了Eclipse。各种软件和工具安装完成后,必须相应的配置Windows2000的系统环境变量。2.5.2数据库开发工具选择及配置ORACLE系统主要是由Oracledatabase和OracleApplicationServer两大拳头产品及ORACLE管理程序包等其他产品组成,下面主要例一下10g的产品:OracleDatabase10g提供了四个版本,每个版本适用于不同的开发和部署环境。Oracle还提供了额外的几种可选数据库产品,这些产品针对特殊的应用需求增强了OracleDatabase10g的功能。下面是OracleDatabase10g的可用版本:Oracle数据库10g企业版(OracleDatabase10gEnterpriseEdition)为关键任务的应用程序(如大业务量的在线事务处理(OLTP)环境、查询密集的数据仓库和要求苛刻的互联网应用程序)提供了高效、可靠、安全的数据管理。Oracle数据库企业版为企业提供了满足当今关键任务应用程序的可用性和可伸缩性需求的工具和功能。它包含了Oracle数据库的所有组件,并且能够通过购买选项和程序包(本文稍后将加以说明)来进一步得到增强。

Oracle数据库个人版、Oracle数据库标准版、标准版1和Oracle数据库企业版包含了一系列常见的应用程序开发功能(包括与SQL对象相关的功能、用于编写存储过程和触发器的PL/SQL和Java编程接口)。Oracle数据库这些版本中的任意一个编写的应用程序将与其它的应用程序一起运行,Oracle数据库10g企业版提供了额外的性能2.5.3关系数据库管理系统关系数据库所使用关系语言班的特点是高度非过程化,即用户只需说明"做什么"而不必说明"怎么做"。用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择是由DBMS(数据库管理系统)自动完成的。这也是关系数据库的主要优点之一。早期关系操作有两种表示方式:关系代数与关系演算。理论上,关系代数和关系演算被证明是完全等价的。关系代数通过对关系的运算来表达查询,其操作对象是关系,操作结果亦为关系。全关系系统十二准则:一个关系形的关系数据库系统必须能完全通过它的关系能力来管理数据库;关系数据库系统的所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示;依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项;全关系的关系数据库系统支持空值的概念,并用系统化的方法处理空值;数据库的描述在逻辑级上和普通数据采用同样的表述方式;一个关系数据库系统可以具有几种语言和多种终端访问方式,但必须有一种语言,它的语句可以表示为严格语法规定的字符串,并能全面的支持各种规则;所有理论上可更新的视图也应该允许由系统更新;系统应该对各种操作进行查询优化;无论数据库的数据在存储表示或存取方法上作任何变化,应用程序和终端活动都保持逻辑上的不变性;当对基本关系进行理论上信息不受损害的任何改变时,应用程序和终端活动都保持逻辑上的不变性;关系数据库的完整性约束条件必须是用数据库语言定义并存储在数据字典中的;关系数据库系统在引入分布数据或数据重新分布时保持逻辑不变;如果一个关系数据库系统具有一个低级语言,那么这个低级语言不能违背或绕过完整性准则。2.5.4对性能的一般规定一、硬件服务器硬件要求有一台可以满足日常办公的PCServer,可以同时满足全体员工同时在线使用该系统。公司内部可以通过交换机、集线器等设备连接到硬件服务器上,通过浏览器访问使用。二、软件服务器Tomcat6,本身就可以作为服务器使用,虽然性能上没有WebLogic、Server、Apache、WebSphere等大型服务器功能强大,但是,作为一个中小型公司OA的服务器,完全可以满足日常访问和使用的需求,并保持一定的性能。2.5.5其他专门要求《WEB校园二手交易系统》对数据库操作不是很频繁,可以使用SQLServer2000、mySQL、Oracle等做数据库服务器就均可以满足用户的访问操作需求。2.5.6对安全性的要求在配置服务器时会保障软,硬服务器的的相对安全性。《WEB校园二手交易系统》的使用者分为两种权限的级别(管理员和普通用户),但是这两种权限与部门的权利体系并没进行对应,可以减少程序复杂性,降低程序出错和安全风险。程序代码的安全性通过封装JavaBean而减少原代码泄露的危险。2.5.7运行环境规定设备及分布1)主机类型服务器:2*P4CPU以上/2G内存以上客户端:P4CPU以上/128内存以上2)网络类型基于企业内部的Intenet和广域Internet3)存贮器容量服务器:80G硬盘以上客户端:10G硬盘以上支撑软件操作系统服务器端:Windows98/Windows2k/WindowsNT/Linux/Unix客户端:Windows98/Windows2k/WindowsNT/Linux/Unix数据库管理系统在服务器端使用oracle10g,也可以分布式应用,使Web服务器和数据库服务器分别在安装两台计算机上。3)其他支撑软件客户端浏览器在IE4.0以上。接口《WEB校园二手交易系统》的各个功能模块之间通过相应的JavaBean进行关联和相互的数据调用。程序运行方式《WEB校园二手交易系统》独立运行在服务器端,客户端通过IE,或者NetScape浏览器进行访问操作。3.系统设计3.1系统总体设计图1总体设计系统主要运行在Tomcat这个Web容器中,各个模块对数据库的访问都通过JavaBeans来实现,JavaBeans为数据库的连接建立一个连接池,将对数据库的连接请求池化,控制有效连接数,可确保系统及数据库管理系统的稳定运行。系统安全可靠也是一个重要的设计原则。本系统的配置是采用WindowsXP作为网络操作系统,Oracle10g作为数据库服务器。所以操作系统WindowsXP的安全防护机制及数据库Oracle10g的安全机制是本系统采用的安全防护方式。3.2概要设计3.2.1系统功能模块设计系统主要设计了用户设置功能、发布信息功能、信息管理功能、搜索信息功能,留言功能,及系统管理功能模块。用户设置功能主要是用户注册必须填写所要求的个人资料,完成个人资料登入。发布信息功能主要是为已注册用户的服务,登陆的用户可以即时发布自己的二手商品信息,立刻就能浏览到。这是本系统的主要功能。信息管理功能是帮助已发表信息的的用户管理自身发布的二手商品信息的同时也管理短消息信息。此项功能也主要是服务于注册用户。搜索信息功能是面向所有登陆到本系统的人员的,采用模糊查询的方法,篇历所有二手商品信息,搜索出浏览者感兴趣的内容。留言功能分为两种,一种是对某一二手商品信息进行留言,还可以查看该信息的其他留言;另一种是短消息的,可以在用户与用户之间,也可以在系统管理员与用户之间进行短消息联系。留言功能可在信息管理功能中进行相应的管理。该项功能也主要是面向注册用户的。系统管理功能是系统管理员对系统所有信息资源进行统一管理的一个模块。只针对系统管理员帐户,登陆方式采用了帐户加验证码机制,提高该模块的安全级别。3.2.2系统结构图校园网二手商品信息系统校园网二手商品信息系统发布信息功能信息管理功能搜索信息功能系统管理留言功能用户注册模块用户设置功能用户登陆模块出售信息模块求购信息模块信息浏览模块信息管理模块短消息管理模块信息搜索模块信息浏览模块商品留言信息短消息模块用户信息模块信息管理模块信息管理模块留言管理模块短消息管理模块添加信息模块邮件发送模块图2系统结构图3.2.3数据流图图3数据流图3.3数据库设计3.3.1数据库需求分析对于数据库的需求主要体现在对数据库的提交信息、更新信息、删除信息、保存信息等。这些信息的存在都取决于各个功能模块的对信息的需求。通过对功能模块的具体操作,实现对数据库中信息的输入和输出。所以,针对各个功能模块的需求,设计如下的数据表和数据结构:用户信息:包括用户名、密码、及用户的相关信息等。商品信息表:包括信息序号、发布信息的用户名,信息相关内容等。商品留言信息:包括信息序号、商品信息相关、留言内容相关等。用户消息:包括发消息和接消息的用户名、消息相关内容等。系统管理员信息:包括帐户名和帐户密码等。通过以上的信息,完成数据库对各项需求的实现。3.3.2数据库概要设计使用ER-WRING进行建模:逻辑模型为:图4逻辑模型图物理模型为:图5物理模型图3.3.3数据库详细设计表1(会员信息表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Char保持唯一2passwordNotnull8-18Char密码3NameNotnull10Char名字4LoadUserNotnull11Char登录名5SexNotnull2Char性别6IdcardNotnull18Char身份证号7EmailNotnull50Char电子邮件8AgeNotnull50Char年龄9Identity外键50Int1参照Identable10Lock外键50Int参照Locktable表2(身份表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2TypeNotnull8-18Char身份说明表3(状态表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2TypeNotnull3-11char类型表4(权限)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2NameNotnull3-11Char功能的名称3ConnurlNotnull3-11Char功能的地址4IsmenuNotnull3-11Char菜单项5Father_idNotnull11Char父亲节点的id表5序号字段名称约束宽度类型Default字段说明1Identable_id主键外键4Int参照Identable2Funs_id主键外键4Int参照funs表表6(登录安全表)序号字段名称约束宽度类型Default字段说明1Users_id主键4Int保持唯一2Time11DataNewdata记录登录时间3Id11Int记录登录用户表7(我要买的商品)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2MerchandiseNameNotnull3-11Char商品的名字3Content11Char求购的内容4Narrate33Char求购的说明5SEstate_id外键3Int参照SEstate表8(状态表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2TypenameNotnull14Char类型名字表9(我要卖的东西)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2MerchandiseNameNotnull14Char商品名字3Content12Char出售内容4Hue12Char成色新旧5Price13Char价格6Sale_id外键3Int参照SaleEstate表10(状态表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2TypenameNotnull14Char类型名字表11(商品的类型)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2TypeNameNotnull14Char类型名字表12(留言模块表)序号字段名称约束宽度类型Default字段说明1Id主键8-18Int保持唯一2Content256Char留言内容3leavedateNotnullDate留言日期4Name30Char作者5MysaleidNotnull30外键6MyshoppingNotnull30外键4系统实现4.1程序设计用户登录界面:图6用户登录界面用户登录核心代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { Stringkey=request.getParameter("key"); Listlist=newArrayList(); if(key==null) { firstUserf=(firstUser)form; Stringname=f.getNames(); Stringpassword=f.getPwd(); Stringregx="[0-9a-zA-Z_]{2,9}$"; ActionMessagesms=newActionMessages(); booleanflag=true; if(!(name.matches(regx))) { ActionMessagem=newActionMessage("username.wrong"); ms.add("username.wrong",m); flag=false; } if(!(password.matches(regx))) { ActionMessagem=newActionMessage("userpwd.wrong"); ms.add("userpwd.wrong",m); flag=false; } BysjServicebs=newBysjServiceImpl(); if(flag==true) { try { Usersu=bs.seachName(name,password) Set<Funs>set=(Set)bs.LockUser(u.getIdentitys().getId()); list.add(u); list.add(set); HttpSessionsession=request.getSession(); session.setAttribute("key",list); }catch(DataAccessExceptione) { ActionMessagem=newActionMessage("nameerror"); ms.add("nameerror",m); flag=false; }catch(DataErrorExceptione) { ActionMessagem=newActionMessage("pwderror"); ms.add("pwderror",m); flag=false; } } if(!flag) { saveErrors(request,ms); returnmapping.getInputForward(); } returnmapping.findForward("ok"); } returnmapping.findForward("oks"); }1)会员登录模块:会员发布出售信息:图7发布出售信息平台界面发布出售信息核心代码:publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ try { AddMysaleFromamf=(AddMysaleFrom)form; HttpSessionsession=request.getSession(); Filefile=null; Listlist=(List)session.getAttribute("key"); Usersu=(Users)list.get(0); BysjServicebs=newBysjServiceImpl(); Stringstr=bs.addMysale(amf,u.getLoaduser()); ServletContextsc=getServlet().getServletContext(); Stringfileurl=sc.getRealPath("\\upload"+"\\"+u.getLoaduser()); file=newFile(fileurl); if(file.isDirectory()) { //System.out.println("````"); }else { file.mkdir(); } Stringfileurls=fileurl+"\\"+str; System.out.println(fileurl); byte[]b=newbyte[1024]; FormFileff=amf.getUploads(); try { InputStreamis=ff.getInputStream(); OutputStreamos=newFileOutputStream(fileurls); while(true) { intc=is.read(b); os.write(b); if(c<1024) { break; } } StringtempUrl="upload"+"//"+u.getLoaduser()+"//"+str; BysjServicebss=newBysjServiceImpl(); bss.addMysales(amf,tempUrl,u.getId()); }catch(FileNotFoundExceptione) { e.printStackTrace(); }catch(IOExceptione) { e.printStackTrace(); } }catch(DataAccessExceptione) { returnmapping.findForward("error"); } returnnull; }会员个人资料管理:图8会员个人资料管理界面会员个人资料管理核心代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringid=request.getParameter("key"); Usersusers=newAjaxUserDaoImpl().findById(id); request.setAttribute("Users",users); returnnull; }留言模块:图9留言功能界面留言的后台代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { HttpSessionsession=request.getSession(); SavemsgFormsm=(SavemsgForm)form; Stringmysaleid=request.getParameter("mysaleid"); Messagems=newMessage(); ms.setAuthor(sm.getAuthor()); ms.setContent(sm.getContent()); ms.setMysaleid(sm.getMysaleid()); Mysalemysaleids=newMysale(); mysaleids.setId(mysaleid); DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); Stringtime=df.format(newDate()); ms.setTime(time); MessageImplmsg=newMessageImpl(); ms.setMaysale(mysaleids); msg.insert(ms); Listlist=msg.getMessagebyMysaleId(sm.getMysaleid()); request.setAttribute("list",list); request.setAttribute("id",sm.getMysaleid()); returnmapping.findForward("ok"); }高级查询模块:图10高级查询模块界面高级查询模块代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { StringpageIndex=request.getParameter("pageIndex"); AllMysallam=newAllMysall(); if(pageIndex==null){ pageIndex="1"; } Stringshoppingname=request.getParameter("shoppingname"); Stringwhere=request.getParameter("where"); Stringsql="fromMysalemwhere1=1"; if(shoppingname!=null&&shoppingname.length()>0) { sql+="andm.MerchandiseName='"+shoppingname+"'"; } if(where!=null&&where.length()>0) { sql+="andm.MerchandiseType.id="+where; } Page<Mysale>page=(Page<Mysale>)am.seachMysall(sql,Integer.parseInt(pageIndex)); request.setAttribute("page",page); returnmapping.findForward("ok"); }2)管理员模块:商品类别管理:图11商品类别管理界面商品管理后台代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { Listlist=newAjaxMerchandiseTypeImpl().seachMerchandise(); request.setAttribute("list",list); returnmapping.findForward("ok"); } publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { Stringid=request.getParameter("ids"); Stringtype=request.getParameter("type"); MerchandiseTypemt=newAjaxMerchandiseTypeImpl().findById(id); mt.setType(type); returnmapping.findForward("ok"); } publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringtype=request.getParameter("type"); MerchandiseTypemt=newMerchandiseType(); mt.setType(type); newAjaxMerchandiseTypeImpl().insert(mt); returnmapping.findForward("ok"); }留言信息管理:图12留言信息管理界面留言管理后台代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { Stringid=request.getParameter("id"); MessageImplmsg=newMessageImpl(); msg.deleteById(id); returnmapping.findForward("ok"); }publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse) { MessageImplmi=newMessageImpl(); Listlist=mi.getMessagebyAll(); request.setAttribute("list",list); returnmapping.findForward("ok"); }出售信息管理:图13出售信息管理界面出售信息核心代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Stringid=request.getParameter("key"); Mysalems=newMysalePersistImpl().findById(id); request.setAttribute("key",ms); returnmapping.findForward("ok"); } publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ HttpSessionsession=request.getSession(); Listlist=(List)session.getAttribute("key"); Usersu=(Users)list.get(0); BysjServicebs=newBysjServiceImpl(); Usersut=bs.showMysale(u); request.setAttribute("key",ut); returnmapping.findForward("ok"); }用户注册模块:图14用户注册界面用户注册后台代码: publicActionForwardexecute(ActionMappingmapping,ActionFormform, HttpServletRequestrequest,HttpServletResponseresponse){ Userssu=(Userss)form; Stringnames=u.getNames(); Stringnamem=u.getNamem(); Stringpwd=u.getPwd(); Stringemail=u.getEmail(); Stringidcard=u.getIdcard(); Stringsex=u.getSex(); Stringspecialty=u.getSpecialty(); Stringclasss=u.getClasss(); Stringrgx2="[\u0391-\uffe5]{1,10}$"; Stringrgx="[0-9a-zA-Z_]{2,18}$"; Stringrgxemail="[a-zA-Z0-9]{2,10}@[a-zA-Z0-9]{2,5}.[a-z]{3}"; ActionMessagesms=newActionMessages(); booleanflag=true;if(!(names.matches(rgx))){ ActionMessagem=newActionMessage("error1"); ms.add("error1",m); flag=false;}if(!(namem.matches(rgx2))){ ActionMessagem=newActionMessage("error2"); ms.add("error2",m); flag=false;}if(!(pwd.matches(rgx))){ ActionMessagem=newActionMessage("error3"); ms.add("error3",m); flag=false;}if(!(email.matches(rgxemail))){ ActionMessagem=newActionMessage("error4"); ms.add("error4",m); flag=false;}if(!(idcard.matches(rgx))){ ActionMessagem=newActionMessage("error5"); ms.add("error5",m); flag=false;}if(!(sex.matches(rgx2))){ ActionMessagem=newActionMessage("error6"); ms.add("error6",m); flag=false;}if(!(specialty.matches(rgx2))){ ActionMessagem=newActionMessage("error7"); ms.add("error7",m); flag=false;}if(!(classs.matches(rgx2))){ ActionMessagem=newActionMessage("error8"); ms.add("error7",m); flag=false;}if(!flag){ saveErrors(request,ms); returnmapping.getInputForward();}BysjServicebs=newBysjServiceImpl();try{bs.insertUsers(u);}catch(DataAccessExceptione){ request.setAttribute("msg",e.getMessage()); returnmapping.getInputForward(); } returnmapping.findForward("ok"); }3)权限控制:图15权限控制效果图权限控制后台代码:<%Listlist=(List)session.getAttribute("key");Set<Funs>set=(Set)list.get(1);Iterator<Funs>it=set.iterator();while(it.hasNext()){Funsf=it.next();%>d.add(<%=f.getId()%>,<%=f.getFatherId()%>,'<%=f.getName()%>','<%=f.getConnurl()%>','','Main');publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1, FilterChainarg2)throwsIOException,ServletException{ HttpServletRequestrequest=(HttpServletRequest)arg0; HttpSessionsession=request.getSession(); Listlist=(List)session.getAttribute("key"); Stringuri=request.getRequestURI(); if(uri.endsWith(".do")||uri.endsWith(".jsp")){ if(uri.endsWith("first.do")||uri.endsWith("main.jsp")||uri.endsWith("insertuser.jsp")||uri.endsWith("ajaxuser.do")||uri.endsWith("inseruser.do")){ arg2.doFilter(arg0,arg1); }else{ if(list==null){ request.setAttribute("msg","请正常登录系统!"); request.getRequestDispatcher("main.jsp").forward(arg0,arg1); }else{arg2.doFilter(arg0,arg1); } } }else{ arg2.doFilter(arg0,arg1); }}4.2系统的测试4.2.1测试的目的和作用软件测试的作用在于发现软件的缺陷,从而提高软件质量,测试人员会告诉你他们的主要工作是发现bug。但我们知道测试永远不能发现所有的bug,而且不可能去测试软件质量。许多领域内专家也极力主张软件测试的目的主要是在于发现软件错误,希望在软件开发生命周期内尽可能早的发现尽可能多得bug。这种认识源于我们没有办法对软件进行完全测试,即对程序的正确性进行完全证明,但遗憾的是,我们至今还没有使用的技术做到这一点。包括E.W.Dijkstra指出“测试只能证明程序有错,不能保证程序无错”。所以,人们认为能够发现程序缺陷的测试是成功的测试,测试的根本目的就是为了发现尽可能多地缺陷。然而不幸的是,这种对软件测试过分单一的阐述和解释会带来两个原则性的问题。4.2.2测试原则软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。中国软件评测中心的测试原则就是从用户和开发者的角度出发进行软件产品测试的,通过我们的测试,可以为用户提供放心的产品,并对优秀的产品进行认证。为了达到上述的原则,那么需要注意以下几点:(1).应当把“尽早和不断的测试”作为开发者的座右铭(2).程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。(3).设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。(4).一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。(5).对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。(6).制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。(7).回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。(8).妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。4.2.3测试方法和步骤软件测试方法:第一种方法是黑盒测试,第二种方法是白盒测试。软件测试步骤:(1)单元测试(模块测试)(2)子系统测试(3)系统测试(4)验收测试(5)平行运行。5.总结经过初期的调研、中期的开发及后期的调试,如今WEB校园二手交易系统终于设计完毕,调试并运行通过了,开发过程本着实用、高效的原则,一切从实际情况出发。通过本次这次实习设计我感受良深,也从中学到不少在学校在课堂上学不到的东西.通过实次实践我深刻的感觉到软件开发的艰辛及问题解决后的喜悦,它培养我们独立思考问题的能力,同时也增强了我的动手能力,为以后自己在所要从事工作奠定了基础。通过本次的实践我对软件开发产生了浓厚的兴趣,体会到,在课堂上学习的理论固然重要,但是不去实践就不能完全了解它内涵,要多看有关程序开发及设计方面的书籍,拓宽自己的设计思路,学习别人在开发过程中使用的算法和积累的经验。在软件的开发过程中,一定要目的明确,一步一步的走,做到系统总体结构清晰,变量定义要统一,这一点我感受最深刻,也为之付出了不小的代价,光数据库就结构及其字段定义就随系统更改了数次,浪费好多的时候和心血,看来软件的开发初期问题的定义是十分重要的,一定要结构合理,考虑到系统的完整性。综观软件开发行业,如今对编程人员相对缺乏,尤其是初级的编程人员,我想通过我们在校学习的相关专业知识以及在实践中积累的些经验,在经过一段时间的磨练,对于开发软件来说不是很难的事,也并非只有专业人员才能开发设计,我们可以三两个同学组成一个开发小组,开发一些小的应用程序,这个想法是完全可实现的。要想从事软件开发,只学会一两种程序开发工具是不够的,我们还要不断的学习,不断钻研,在软件开发行业上闯出一番事业。总之学海无涯,我们只有不断的学习,不断的进步,才能在瞬息万变、人才济济的社会竞争中,立于不败之地!6致谢本次毕业设计,我要特别感谢我的指导教师田喜平老师,她给予了我很大帮助,在她的悉心指导下,我逐步完成了本次毕业设计。她认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅,为我以后的学习和工作,增添了一笔宝贵的财富。最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!参考文献[1]陈旭.电子商务基础[M].重庆:重庆大学出版社.[2]熊晓旭,丁玉军,张丽梅.浏览器一服务器模式管理信息系统可行性研究[J].应用科技,2000,27(9)20-22.[3]Servlet简介./ssqs/kjyy/dsxd/200504/803.htm,200626(2).[4]JavaServerPagesTechnology./products/jsp/,200623(2).[5]ApacheTomcat./,200610(3).[6]邓子云,张赐.JSP网络编程[M].北京:电子工业出版社,2003.[7]杜欣然.利用JSP技术开发基于Web的人事工资管理系统[D].大连:大连铁道学院,2003.[8]冯燕奎,赵德奎.JSP实用案例教程[M].北京:清华大学出版社,2003.[9]李华飚,李水银,郭英奎.精通Java中间件编程[M].中国水利水电出版社,2003.[10]马世军,赵子夫,张浩华,赵坤.创建基于JSP的大学图书馆网络管理系统[J].辽宁工学院学报,2004,6(5):105-106.[11]万振凯、叶华、刘培.网页设计技术实训教程[M].南开大学出版社,2002.[12]拓文工作室.Java与Beans开发使用手册[M].机械工业出版社,2002.[13]沈建男.精通从JavaScript到JSP范例程序设计[M].中国青年出版社,2001.[14]KalenDelandy,InsideMicrosoftSQLServer2000[S].USA:Microsoftpress,2000.76-98.

TheDesignandRealizationofCampusNetworkSecondhandMerchandiseSystemBasedonWebZhouWei(SchoolofComputerandInformationEngineering,Anyangnormaluniversity,Henan,Anyang,455002)Abstract:Thissystemisasetofplatformsoftwareofthecampus-widesystemsecondhandtransaction.ItadoptstheJSP/J2EEtechnique,andprogrammedwithJavaprogramminglanguage.ItalsoadoptstheB/Sdevelopmentmode,whichisbasedonWebandpopularizeinrecentyears.Itrunsininternetways.Onlywhentheserverinstallthissystemandtheclientcanvisitit,browseandreleasesomesecondhandconvenientlyandspeedilywhentheygoon-line.Andsoitdispenseswithsuchoperationasthecomplicatedinstalling,installmentandsupportintraditionalC/Smode.Atthesametime,itusestheJavalanguagewhichtowardstheOOP(object-orientedprogramming).SothesystemhasthespecificpropertyoftowardingOOP,irrelevantwiththeplatform,theJavalanguage’ssupporttothenetworkprogrammingtechniquemakesthesystemhavehighpracticalvalue.Thesystemdevelopmentisdividedintothreeparts.ThatisusingJavaBeanstoprocessbusinesslogic;usingJSP+HTML+JavaScriptandServlettoprocessinterface;andvisitingtheSQLServer2000databasethroughJDBC-ODBCBridge.Keywords:JSP;JavaBeans;Java;B/S请删除以下内容,O(∩_∩)O谢谢!!!AnarbitrarytitlegiventoafuneraryworkfromancientEgyptcalledpertemhru,thetranslationofwhichis"comingforthbyday,"or"manifestedinthelight."Severalversionsorrecensionsofthisworkareknown,namelythoseofHeliopolis,Thebes,andSais,differingonlyinasmuchastheywereeditedbythecollegesofpriestsfoundedatthesecenters.Manypapyrioftheworkhavebeendiscovered,andpassagesfromithavebeeninscribeduponthewallsoftombsandpyramidsandonsarcophagiandmummy-wrappings.OneverycompletecopyisondisplayattheEgyptianMuseuminTurin,Italy.Itisundoubtedlyofextremelyearlydate;exactlyhowearlyitwouldbedifficulttosay,butinthecourseofcenturiesitwasgreatlyaddedtoandmodified.Itcontainsabout200chapters,butnocompletepapyrushasbeenfound.Thechaptersarequiteindependentofoneanother,andwereprobablyallcomposedatdifferenttimes.Themainsubjectisthebeatificationofthedead,whoweresupposedtorecitethechaptersinorderthattheymightgainpowerandenjoytheprivilegesofthenewlife.Theworkaboundsinmagicalreferences.ThewholetrendoftheBookoftheDeadisthaumaturgic,asitspurposeistoguardthedeadagainstthedangerstheyhavetofaceinreachingtheotherworld.Asinmostmythologies,thedeadEgyptianhadtoencountermalignantspiritsandwasthreatenedbymanydangersbeforereachinghishavenofrest.Healsohadtoundergojudgmen

温馨提示

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

评论

0/150

提交评论