首页 Web校园二手交易系统6

Web校园二手交易系统6

举报
开通vip

Web校园二手交易系统6安阳师范学院本科学生毕业论文 Web校园二手交易系统的设计与实现 作 者 周 伟 院 (系) 人文管理学院 专 业 信息管理与信息系统 年 级 2007 级 学 号 074952024 指导教师 田喜平 论文成绩 日 期 2009 年 6 月 学生诚信承诺书 本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研...

Web校园二手交易系统6
安阳师范学院本科学生毕业论文 Web校园二手交易系统的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与实现 作 者 周 伟 院 (系) 人文管理学院 专 业 信息管理与信息系统 年 级 2007 级 学 号 074952024 指导教师 田喜平 论文成绩 日 期 2009 年 6 月 学生诚信承诺 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 签名:          日期:         论文使用授权说明 本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ,可以采用影印、缩印或其他复制手段保存论文。 签名:        导师签名:       日期: 目 录 TOC \o "1-3" \h \z \u 2.5 开发环境及环境配置 4 2.5.1 系统环境及Java/JSP环境配置 4 Web校园二手交易系统的设计与实现 周伟 (安阳师范学院 人文管理学院, 河南 安阳 455002) 摘 要:随着信息技术的迅速发展与网络教学的普及,网上作业提交也成为现代化教学不可或缺的一部分。在此背景下,用JavaEE开发了网上作业提交系统。本论文首先考虑了学生网上作业提交和教师网上作业批改的实际要求,分析了此系统应该具有的功能;其次对系统的主要功能模块进行了详细地描述,其中主要包括教师布置作业,学生提交作业,教师批改作业和管理员设置。最后结合系统开发阶段和调试阶段发现的问题,提出了系统需要完善的地方,总结了开发此系统所取得的经验和体会。 关键词:Web二手交易系统;javaEE;B/S结构;数据库 1 引言 1.1 开发背景 近些年来互联网迅速发展,使得不同地点的人们在任何时间都可以轻松获取自己需要的信息,同时互联网的出现极大地推动了教育事业的发展,特别是javaEE技术,以其交互性、动态性的特点,大大扩展了互联网的应用范围,互联网的广泛应用也深刻的影响了教育教学领域。 1.2 开发意义 随着全世界互联网技术的不断发展,各种基于互联网技术的网络应用不断涌现,网络技术正在不断的深入人们的生活。人们从Internet上获取信息、享受生活、交流感情、网上工作等。Internet正在迅速改变着人们的生活方式。 在当前社会上,许多的各种类型的电子商务类网站纷纷建立,可以很大程度上的解决人们信息资源的闭塞以及地域上的限制。作为大学校园,伴随着学生的购买能力的提高和每年的升学和毕业,也存在的许多各种类型的二手商品,由于信息交流的落后,很多只限于于校园公告栏或者请人代为宣传的方式进行交易。这种方式有很多局限性和偶然性,并不能满足二手商品畅通交流的要求。于是一种新的二手商品信息交流的方式出现了,就是基于Web的校园网二手商品交易系统。通过这个系统,可以发现每一个校园网用户都是系统的主人,大家可以非常方便的发布自己的信息,浏览别人的发布的信息,还可以对各种二手商品信息作出横向比较,作出自己的最佳选择。由此可见,该系统只是一个交流二手商品信息的平台,与一般的电子商务类网站又有本质的区别。 1.3 可行性研究 设计这样一个系统,从根本上解决了传统的校园二手信息发布交流方式的弊端,使得校园各种二手商品信息得到了有效的整合,方便了广大用户。且拥有的客户通常只是大学校园网的用户,所有系统规模上来讲不会很大,从经济上来说,由于选择的开发工具和服务器几乎全部为免费的开源软件,并且由于是开发成本较低的基于Web的B/S模式,而非成本费用相对较高的C/S模式,所以从经济上来讲是可行的。从技术上来说,由于是基于Web的,可以相对比较容易面对用户的实际需求而开发。而在现今,各种网络应用的开发已经相当成熟,出现了几大主流的开发语言和工具,都可以非常有效的支持开发这样一个系统。同时作为本系统,也有许多成功的电子商务类网站的经验可以借鉴,所以从技术的角度来说,也是可行的。从运行上来说,由于客户端仅仅只是需要一个浏览器,通过浏览器来登陆系统,而服务器端也只需要一台服务器,服务器要求一个数据库环境和一个网络应用开发的环境,实现起来比较容易,所以从运行上来说是可行的。同时这样一个系统,在系统管理员合法管理和用户的自觉配合下,不会违规进行任何的不法的活动和交易,发布具有危害性和不适宜的信息,也不存在任何非法牟利的行为,在法律上也是可行的。在各种可行性研究保证和基于用户需求要求下,开发系统的 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 经过不断论证和假设,确定出了一个最佳方案。 2 系统构架分析 2.1 Java语言简介 Java语言是美国Sun公司于1995年推出的一种简单的、面向对象的、分布式的、可解释的、键壮的、安全的、结构的、中立的、可移植的、性能很优异的多线程的、动态的语言。其前身为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术。经过Sun公司的工程师的不懈努力以及全世界无数的编程爱好者的使用,Java终于发展成为今天这样一个集桌面(J2SE)、网络(J2EE)、移动平台(J2ME)应用为一体的功能强大的编程语言。目前Java由于其平台无关及分布式特性,最重要的应用是在网络应用上。 2.2 J2EE技术介绍 J2EE技术是Java网络应用的技术,广泛应用于企业级的应用。它是由一套规范(shannin,2001)和建立在J2SE平台上的应用编程接口(API)组成。J2EE拥有Sun公司提供免费开发工具,称为J2EE软件开发工具包(Software Development Kit,SDK )(http://java.sun.com/j2ee)。J2EE技术是一种Java网络应用技术的组合,包含有远程方法调用(Remote Method Invocation,RMI)、Java消息服务(Java Message Service,JMS)、JavaMail等通信服务,JDBC、Java命名和 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 接口(Java naming and Directory Interface,JNDI)、Java连接器体系结构(Java Connector Architecture,JCA)、Java事务API/Java事务服务(JTA/JTS)、XML处理API等通用服务以及Servlet、Java服务器页面(JSP)、企业级JavaBean(EJB)等组件技术。任何J2EE的实现都必须要在其特定容器中实现。 2.3 Servlet/JSP技术 Servlet是JSP技术的基础,JSP本身就是预先被编译成Servlet,然后再运行的,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。 Servlet其实和传统的CGI程序和ISAPI、NSAPI等Web程序开发工具的作用是相同的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合Java Servlet规范,Servlet是完全平台无关且是Web服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用Java Servlet来开发整个网站,动态部分和静态页面的整合过程简直就是一场噩梦。这就是为什么SUN还要推出Java Server Pages的原因。 JSP(JavaServer Pages)是一种基于Java的脚本技术。在JSP 的众多优点之中,其中之一是它能将 HTML 编码从 Web 页面的业务逻辑中有效地分离出来。用 JSP 访问可重用的组件,如 Servlet、JavaBean 和基于 Java 的 Web 应用程序。JSP 还支持在 Web 页面中直接嵌入 Java 代码。可用两种方法访问 JSP 文件:浏览器发送 JSP 文件请求、发送至 Servlet 的请求。 1. JSP 文件访问 Bean 或其它能将生成的动态内容发送到浏览器的组件。 2. 发送至 Servlet 的请求生成动态内容,并调用 JSP 文件将内容发送到浏览器。该访问使得将内容生成从内容显示中分离出来更为方便。 JSP最大的优点在于其与平台无关性,并且具有“一次编写,处处运行”的特点。 2.4 JavaBeans技术 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环境配置 开发及测试的系统环境,我选择了Microsoft Windows Advanced Server 2000。由于其本身就是为服务器版的,适合用于搭设成为服务器端。要开发JSP,首先必须要求有Java环境,我选择了Java 2 Platform,Enterprise Edition 1.4 SDK(即j2eesdk-1_4_03-windows)。 作为JSP的容器,选择了目前非常流行的Tomcat 5.5。而IDE工具则选择了Eclipse。各种软件和工具安装完成后,必须相应的配置Windows 2000的系统环境变量。 2.5.2 数据库开发工具选择及配置 ORACLE系统主要是由Oracle database和Oracle Application Server两大拳头产品及ORACLE 管理程序包等其他产品组成,下面主要例一下10g的产品: Oracle Database 10g 提供了四个版本,每个版本适用于不同的开发和部署环境。Oracle 还提供了额外的几种可选数据库产品,这些产品针对特殊的应用需求增强了 Oracle Database 10g 的功能。下面是 Oracle Database 10g 的可用版本: 􀁺 Oracle数据库10g企业版(Oracle Database 10g Enterprise Edition )为关键任务的应用程序(如大业务量的在线事务处理 (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 运行环境规定 2.5.7.1设备及分布 1)主机类型 服务器:2*P4 CPU以上/2G内存以上 客户端:P4 CPU以上/128内存以上 2)网络类型 基于企业内部的Intenet和广域Internet 3)存贮器容量 服务器:80G硬盘以上 客户端:10G硬盘以上 2.5.7.2 支撑软件 1)​ 操作系统 服务器端:Windows98/Windows2k/WindowsNT/Linux/Unix 客户端:Windows98/Windows2k/WindowsNT/Linux/Unix 2)​ 数据库管理系统 在服务器端使用oracle10g,也可以分布式应用,使Web服务器和数据库服务器分别在安装两台计算机上。 3) 其他支撑软件 客户端浏览器在IE 4.0以上。 2.5.7.3 接口 《WEB校园二手交易系统》的各个功能模块之间通过相应的JavaBean进行关联和相互的数据调用。 2.5.7.4 程序运行方式 《WEB校园二手交易系统》独立运行在服务器端,客户端通过IE,或者NetScape浏览器进行访问操作。 3.系统设计 3.1系统总体设计 图1 总体设计 系统主要运行在Tomcat这个Web容器中,各个模块对数据库的访问都通过JavaBeans来实现,JavaBeans为数据库的连接建立一个连接池,将对数据库的连接请求池化,控制有效连接数,可确保系统及数据库管理系统的稳定运行。 系统安全可靠也是一个重要的设计原则。本系统的配置是采用Windows XP作为网络操作系统,Oracle 10g作为数据库服务器。所以操作系统Windows XP的安全防护机制及数据库Oracle 10g的安全机制是本系统采用的安全防护方式。 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 字段说明 1 Id 主键 8-18 Char 保持唯一 2 password Not null 8-18 Char 密码 3 Name Not null 10 Char 名字 4 LoadUser Not null 11 Char 登录名 5 Sex Not null 2 Char 性别 6 Idcard Not null 18 Char 身份证号 7 Email Not null 50 Char 电子邮件 8 Age Not null 50 Char 年龄 9 Identity 外键 50 Int 1 参照Identable 10 Lock 外键 50 Int 参照Locktable 表2 (身份表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Type Not null 8-18 Char 身份说明 表3 (状态表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Type Not null 3-11 char 类型 表4 (权限) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Name Not null 3-11 Char 功能的名称 3 Connurl Not null 3-11 Char 功能的地址 4 Ismenu Not null 3-11 Char 菜单项 5 Father_id Not null 11 Char 父亲节点的id 表5 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Identable_id 主键外键 4 Int 参照Identable 2 Funs_id 主键外键 4 Int 参照funs表 表6(登录安全表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Users_id 主键 4 Int 保持唯一 2 Time 11 Data New data 记录登录时间 3 Id 11 Int 记录登录用户 表7 (我要买的商品) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 MerchandiseName Not null 3-11 Char 商品的名字 3 Content 11 Char 求购的内容 4 Narrate 33 Char 求购的说明 5 SEstate_id 外键 3 Int 参照SEstate 表8(状态表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Typename Not null 14 Char 类型名字 表9 (我要卖的东西) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 MerchandiseName Not null 14 Char 商品名字 3 Content 12 Char 出售内容 4 Hue 12 Char 成色新旧 5 Price 13 Char 价格 6 Sale_id 外键 3 Int 参照SaleEstate 表10(状态表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Typename Not null 14 Char 类型名字 表11(商品的类型) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 TypeName Not null 14 Char 类型名字 表12(留言模块表) 序号 字段名称 约束 宽度 类型 Default 字段说明 1 Id 主键 8-18 Int 保持唯一 2 Content 256 Char 留言内容 3 leavedate Notnull Date 留言日期 4 Name 30 Char 作者 5 Mysaleid Notnull 30 外键 6 Myshopping Notnull 30 外键 4 系统实现 4.1 程序设计 用户登录界面: 图6 用户登录界面 用户登录核心代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String key = request.getParameter("key"); List list = new ArrayList(); if (key == null) { firstUser f = (firstUser) form; String name = f.getNames(); String password = f.getPwd(); String regx = "[0-9a-zA-Z_]{2,9}$"; ActionMessages ms = new ActionMessages(); boolean flag = true; if (!(name.matches(regx))) { ActionMessage m = new ActionMessage("username.wrong"); ms.add("username.wrong", m); flag = false; } if (!(password.matches(regx))) { ActionMessage m = new ActionMessage("userpwd.wrong"); ms.add("userpwd.wrong", m); flag = false; } BysjService bs = new BysjServiceImpl(); if (flag == true) { try { Users u = bs.seachName(name, password) Set set = (Set) bs.LockUser(u.getIdentitys().getId()); list.add(u); list.add(set); HttpSession session = request.getSession(); session.setAttribute("key", list); } catch (DataAccessException e) { ActionMessage m = new ActionMessage("nameerror"); ms.add("nameerror", m); flag = false; } catch (DataErrorException e) { ActionMessage m = new ActionMessage("pwderror"); ms.add("pwderror", m); flag = false; } } if (!flag) { saveErrors(request, ms); return mapping.getInputForward(); } return mapping.findForward("ok"); } return mapping.findForward("oks"); } 1)会员登录模块: 会员发布出售信息: 图7 发布出售信息平台界面 发布出售信息核心代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { try { AddMysaleFrom amf = (AddMysaleFrom) form; HttpSession session = request.getSession(); File file = null; List list = (List) session.getAttribute("key"); Users u = (Users) list.get(0); BysjService bs = new BysjServiceImpl(); String str = bs.addMysale(amf, u.getLoaduser()); ServletContext sc = getServlet().getServletContext(); String fileurl = sc.getRealPath("\\upload" + "\\" + u.getLoaduser()); file = new File(fileurl); if (file.isDirectory()) { // System.out.println("````"); } else { file.mkdir(); } String fileurls = fileurl + "\\" + str; System.out.println(fileurl); byte[] b = new byte[1024]; FormFile ff = amf.getUploads(); try { InputStream is = ff.getInputStream(); OutputStream os = new FileOutputStream(fileurls); while (true) { int c = is.read(b); os.write(b); if (c < 1024) { break; } } String tempUrl = "upload" + "//" + u.getLoaduser() + "//" + str; BysjService bss = new BysjServiceImpl(); bss.addMysales(amf, tempUrl, u.getId()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } catch (DataAccessException e) { return mapping.findForward("error"); } return null; } 会员个人资料管理: 图8 会员个人资料管理界面 会员个人资料管理核心代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id=request.getParameter("key"); Users users=new AjaxUserDaoImpl().findById(id); request.setAttribute("Users", users); return null; } 留言模块: 图9 留言功能界面 留言的后台代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(); SavemsgForm sm = (SavemsgForm) form; String mysaleid = request.getParameter("mysaleid"); Message ms = new Message(); ms.setAuthor(sm.getAuthor()); ms.setContent(sm.getContent()); ms.setMysaleid(sm.getMysaleid()); Mysale mysaleids = new Mysale(); mysaleids.setId(mysaleid); DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = df.format(new Date()); ms.setTime(time); MessageImpl msg = new MessageImpl(); ms.setMaysale(mysaleids); msg.insert(ms); List list = msg.getMessagebyMysaleId(sm.getMysaleid()); request.setAttribute("list", list); request.setAttribute("id", sm.getMysaleid()); return mapping.findForward("ok"); }高级查询模块: 图10 高级查询模块界面 高级查询模块代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String pageIndex=request.getParameter("pageIndex"); AllMysall am= new AllMysall(); if (pageIndex==null){ pageIndex="1"; } String shoppingname=request.getParameter("shoppingname"); String where=request.getParameter("where"); String sql="from Mysale m where 1=1"; if(shoppingname!=null&&shoppingname.length()>0) { sql+=" and m.MerchandiseName='"+shoppingname+"'"; } if(where!=null && where.length()>0) { sql+=" and m.MerchandiseType.id="+where; } Pagepage=(Page)am.seachMysall(sql, Integer.parseInt(pageIndex)); request.setAttribute("page", page); return mapping.findForward("ok"); } 2)管理员模块: 商品类别管理: 图11 商品类别管理界面 商品管理后台代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { List list = new AjaxMerchandiseTypeImpl().seachMerchandise(); request.setAttribute("list", list); return mapping.findForward("ok"); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id = request.getParameter("ids"); String type = request.getParameter("type"); MerchandiseType mt = new AjaxMerchandiseTypeImpl().findById(id); mt.setType(type); return mapping.findForward("ok"); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String type=request.getParameter("type"); MerchandiseType mt=new MerchandiseType(); mt.setType(type); new AjaxMerchandiseTypeImpl().insert(mt); return mapping.findForward("ok"); } 留言信息管理: 图12 留言信息管理界面 留言管理后台代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id=request.getParameter("id"); MessageImpl msg = new MessageImpl(); msg.deleteById(id); return mapping.findForward("ok"); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MessageImpl mi= new MessageImpl(); List list=mi.getMessagebyAll(); request.setAttribute("list", list); return mapping.findForward("ok"); } 出售信息管理: 图13 出售信息管理界面 出售信息核心代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String id=request.getParameter("key"); Mysale ms=new MysalePersistImpl().findById(id); request.setAttribute("key", ms); return mapping.findForward("ok"); } public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { HttpSession session=request.getSession(); List list=(List)session.getAttribute("key"); Users u=(Users)list.get(0); BysjService bs= new BysjServiceImpl(); Users ut=bs.showMysale(u); request.setAttribute("key",ut); return mapping.findForward("ok"); } 用户注册模块: 图14 用户注册界面 用户注册后台代码: public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Userss u=(Userss)form; String names=u.getNames(); String namem=u.getNamem(); String pwd=u.getPwd(); String email=u.getEmail(); String idcard=u.getIdcard(); String sex= u.getSex(); String specialty=u.getSpecialty(); String classs= u.getClasss(); String rgx2="[\u0391-\uffe5]{1,10}$"; String rgx="[0-9a-zA-Z_]{2,18}$"; String rgxemail="[a-zA-Z0-9]{2,10}@[a-zA-Z0-9]{2,5}.[a-z]{3}"; ActionMessages ms= new ActionMessages(); boolean flag=true; if(!(names.matches(rgx))){ ActionMessage m= new ActionMessage("error1"); ms.add("error1",m); flag=false; } if(!(namem.matches(rgx2))){ ActionMessage m= new ActionMessage("error2"); ms.add("error2",m); flag=false; } if(!(pwd.matches(rgx))){ ActionMessage m= new ActionMessage("error3"); ms.add("error3",m); flag=false; } if(!(email.matches(rgxemail))){ ActionMessage m= new ActionMessage("error4"); ms.add("error4",m); flag=false; } if(!(idcard.matches(rgx))){ ActionMessage m= new ActionMessage("error5"); ms.add("error5",m); flag=false; } if(!(sex.matches(rgx2))){ ActionMessage m= new ActionMessage("error6"); ms.add("error6",m); flag=false; } if(!(specialty.matches(rgx2))){ ActionMessage m= new ActionMessage("error7"); ms.add("error7",m); flag=false; } if(!(classs.matches(rgx2))){ ActionMessage m= new ActionMessage("error8"); ms.add("error7",m); flag=false; } if(!flag){ saveErrors(request, ms); return mapping.getInputForward(); } BysjService bs= new BysjServiceImpl(); try{ bs.insertUsers(u); }catch (DataAccessException e) { request.setAttribute("msg", e.getMessage()); return mapping.getInputForward(); } return mapping.findForward("ok"); } 3)权限控制: 图15 权限控制效果图 权限控制后台代码: <% List list=(List)session.getAttribute("key"); Set set =(Set)list.get(1); Iterator it= set.iterator(); while(it.hasNext()){ Funs f=it.next(); %> d.add(<%=f.getId() %>, <%=f.getFatherId() %>, '<%=f.getName() %>','<%=f.getConnurl()%> ','','Main'); public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { HttpServletRequest request=(HttpServletRequest)arg0; HttpSession session= request.getSession(); List list=(List) session.getAttribute("key"); String uri=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).一定
本文档为【Web校园二手交易系统6】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_922988
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:27
分类:工学
上传时间:2011-06-20
浏览量:285