摘 要
21 世纪,随着计算机科学的发展,数据库技术在 Internet 中的应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Wed应用的潮流。如何通过先进的计算机技术为我们服务是摆在我们面前的一个新的领域。
人们要生活首先要有居住的地方,有些人可能是租房居住,有些人可能是买房居住。如何获取到这些信息,在计算机还不是很发达的时代,出租人或卖房人可能会通过张贴广告的形式进行宣传,这样做不仅成本告,而且费时费利,随着互联网的发展,如何充分的利用互联网的优势快速传播这些信息,成为了一个新的课题。
针对以上问题,设计开发了房屋租赁管理系统,本系统前台主要使用JSP作为开发语言,后台使用SqlServer作为数据库管理系统,开发环境是MyEclipse,服务器采用tomcat,开发出的一个基于Web技术的B/S结构的基于房屋信息发布,查询一体的管理系统。
关键词:房屋租赁,管理系统,JSP,B/S结构
ABSTRACT
In the 21st century, with the development of computer science, database technology in the application of the Internet is more and more widely, for the majority of Internet users to provide the more thoughtful and personalized service. Personalization has gradually become the trends of Wed application. How to through the use of advanced computer technology to our service is a new field in front of us。
People want to live first to have lived, some people may be rented, some people may be to buy a house to live in. How to get to the information, in the age of the computer is not well developed, the lessor or the sellers may through the ads displayed in the form of publicity, not only the cost, and time consuming feely, along with the development of the Internet, how to make full use of the advantages of the Internet quickly spread the information, has become a new task。
In view of the above problem, house lease management system is designed and developed, this system at the front desk mainly using JSP as a development language, the background using used as database management system, the development environment is MyEclipse, server using tomcat, developed a Web technology based B/S structure based on building information release, query the integration of management system。
Key words: House lease, management system, JSP, B / S structure
目 录
摘 要
ABSTRACT
第一章 绪论
1.1课题背景和意义
1.2开发工具及技术
1.2.1开发工具
1.2.2 JSP技术
1.2.3 JavaScript
1.3软硬件需求
第二章 需求分析
2.1需求调研
2.2可行性分析
2.2.1技术的可行性
2.2.2经济的可行性
2.2.3操作可行性
2.2.4法律的可行性
2.3系统用例图
2.4功能模块需求分析
2.5设计的基本思想
2.6性能需求
2.6.1系统的安全性
2.6.2数据的完整性
2.7界面需求
第三章 系统分析与设计
3.1数据库的分析与设计
3.1.1数据库的概念结构设计
3.1.2数据库的逻辑结构设计
3.1.3数据库的连接原理
第四章 系统功能实现
4.1系统后台登陆
4.2后台主界面
4.2.1用户信息管理
4.2.2房屋信息管理
4.2.3公告信息管理
4.3前台网站模块
4.3.1网站首面设计
4.3.2用户注册模块
4.3.3房屋查询模块
第五章 系统测试
5.1系统测试目的与意义
5.2测试过程
5.2.1主页面的登录模块测试
5.3其他错误
结 论
参考文献
致 谢
第一章 绪论
1.1课题背景和意义
随着社会经济的发展,城市现代化建设步伐不断加快,城市规模不断扩大,人员的流动也不断加大,房屋出租逐渐成为社会生活的重要组成部分。无论是房屋出租还是房屋求租,都面临着大量需求。说到房屋出租,我们首先想到的就是房屋租赁,但是不论对于房屋出租者还是对于求租者来说,要面对的问题实在让人头疼,首先是琳琅满目的中介公司让人感到无从选择,在要顾及中介单位可信度的同时,大量复杂的房产信息使他们感到迷茫,难以快速、准确地从中找到适合自己的房屋信息。再者,出租、承租双方进行交易的时候还要通过中介,使交易过程更加繁琐。而且中介单位还要收取的一定比例的中介费用,这也在一定程度上加重了房屋承租者的负担。因此,现实社会中急需一个第三者为房屋出租者与房屋求租者牵线搭桥,来弥补中介单位的种种不足。在互联网蓬勃发展的今天,网络和我们的生活、工作越来越密不可分,网络正领导着一个新时代的来临。 于是我们就利用开放的 Internet 技术,开发出实时、快捷、全方位传播信息的平台。本文从网络环境下,房屋出租、发布信息与服务特点、信息展示与服务措施等方面进行考虑,构建一套完整的房屋租赁管理系统,可以最大限度的消除租赁供求信息的不对称性,方便管理人员对房屋出租信息进行快速而有效地管理。使房屋租赁信息的管理向着规范化、简单化、有效化的方向发展。
1.2开发工具及技术
1.2.1开发工具
此次设计主要采用MyEclipse加Tomcat后台服务器进行,设计过程中页面主要使用JSP技术完成,下面对MyEclipse、Tomcat和SqlServer数据库进行简要介绍。
1.2.1.1 MyEclipse
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。
1.2.1.2 Tomcat
Tomcat是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。可以这样认为,当在一台机器上配置好Apahce服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
1.2.1.3 SqlServer
SQL Server是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS),是Office系列应用软件之一。SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2012年3月份推出的SQL SERVER 2012。
1.2.2 JSP技术
Jsp程序使用了Java编程语言,JSP技术可以对动态网页进行封装。通过tags和scriptlets,网页还能访问存在于服务端的资源的应用逻辑。JSP可以分离网页逻辑与网页设计和显示,对可重用的基于组件的开发进行支撑,更容易的对基于Web的应用程序进行设计。
当Web服务器接收到访问JSP网页的请求时,首先运行的程序段,接下来将JSP文件中的HTML代码和运行效果一并返还给用户。通过Java文件的插入能够对数据库、网页多重定向等运行,从而满足构建动态网页所需要的程序。JSP和Servle相同,都可以通过服务器端运行。由于能够将一个HTML文本返回给用户端,所以用户端具备浏览器就可以进行浏览。HTML程序和穿插在内部的Java程序可以构建JSP网页。在服务器被用户端访问时,能够处理相应的Java代码,然后将产生的HTML页面再返回给用户端的浏览器。JSP的设计关键是Servlet,通常大型的Web应用程序的设计成果也通过Java Servlet和JSP的协作。JSP既拥有了方便快捷的Java程序,又统统的面向用户,既实现了平台的无关性危险还比较小,可以具备互联网的全部优势。JSP技术的优点:
(1)一次编写,到处运行。除了系统之外,代码无需做任何改动。
(2)系统的多平台支持。通常情况下,能够在任何情况下的全部平台上进行设计,能够安排在任何情况中,也能够在任何情况下进行发展。相比ASP/.net来说,优点是显而易见的。
(3)强大的可塑性。通过一个不大的Jar程序能够对Servlet/JSP进行运行,也能够通过很多服务器进行集群和负载平衡,甚至能够通过多台Application解决问题。单台服务器到多台服务器,Java展现了一个强大的功能。
(4)具有强大和多样化的开发工具支持。Java已经有了很多的设计方法,何况大部分工具都是没有花费的,这中间有很多都在多种平台之下顺畅的进展。
(5)支持服务器端组件。只有很有力的服务器端组件才能支撑web运行,因此开发者可以在调用web页面时通过另外的开发工具来达成纷乱效用的组件,来加强系统的可操作性。JSP可以通过完善的JAVA BEANS 组件来达成纷乱的商务功能。
内部对象表现出:request 用户端请求,此请求会涵盖来自GET/POST请求的参数; response网页传回用户端的反应;管理pageContext 网页的属性;session 与请求相关的会话;application servlet正在进行的内容;out 用来输送响应的输出流; config 代码片段配置对象;page JSP网页本身。
1.2.3 JavaScript
JavaScript是一种根据对象和情况驱使而且相对危险性比较低的用户端脚本语言。还可以大范围的用于用户端Web设计的脚本语言,一般可以用做增加HTML网页动态功能,例如反馈用户的所有操控。JavaScript的一个关键作用是向对象的功能,根据以对象为基础的程序开发,能够用更直接、系统化和能够反复利用的方法设计程序。根据HTML程序,可以采用Javascript对交互式Web网页进行设计。Javascript的应用能够达成网页和客户之间及时、动态、交互性的关系。这样网页可以呈现非常丰富的信息和非常好看的内容。在本系统中不少设计都采用了javascript技术,例如校验用户输入数据的有效性等。
1.3软硬件需求
硬件需求:
CPU:Pentium以上计算机
内存: 512M以上
软件需求:
操作系统版本:Windows XP /vista/Win7
开发工具:MyEclipse 6.0.1
后台服务器:Apache Tomcat 6.0
开发语言:Java
浏览器:IE6.0
第二章 需求分析
2.1需求调研
在项目的开始是需求调研,并且走访了一些小型房屋租赁公司,经过一系列的调查与谈话中发现,了解该行业的业务流程。根据实际情况及调查结果,发现实现房屋租赁管理的网络化、信息化是十分有必要的,因此设计了房屋租赁管理系统。
2.2可行性分析
对所有系统完成设计,都可能受到时间和空间上的制约。所以,在设计每一个项目开始,必须对系统实行可行性分析,这样可以降低项目的危害,降低人力、物力和财力的损耗。下面对技术、经济、操作和法律四个方面进行简要介绍。
2.2.1技术的可行性
本系统主要采用MyEclipse和Sql2005数据库作为设计工具,采用Java作为开发语言,主要使用了J2EE的技术,java是一种面对对象的程语言,学习起来非常容易并且使用便利。在学校中,大三时就开设了java课程,
大学时,我就已经掌握了java的主要知识,也对J2EE的操作进行了系统的学习。本系统从整体上看设计起来比较容易,本系统开发的重点就是对数据库的设计和操作。在大学对软件工程,软件测试,UML统一建模语言等课程进行过系统的了解,也能够对这些课程进行开发,拥有一定的系统辨别、开发和检验能力。因此,完成系统实现在技术上完全具有可行性。
2.2.2经济的可行性
本系统采用的软件都是开源的,这样可以削减很多的精力和资源,起到减少成本的作用。同时提升设计的作用,本系统对计算机配置的条件很低,乃至网吧淘汰下来的低配置计算机也可以满足需要,因此在经济上完全具有可行性。
2.2.3操作可行性
本系统操作比较容易,大部分输入信息页面选择的形式都是下拉框。在有些页面,信息可以自动生成,不需要输入。输入时间也采用了日历控件,操作比较容易,对操作人员的要求不高,只需要熟练操作WINDOWS即可。再加上稍加培训就可以对本系统进行操作,而且本系统具有很好的可视性,因此在技术上难度也比较低。
2.2.4法律的可行性
本房屋租赁管理系统是自行开发的管理系统,是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,开发这个系统不同于开发普通的系统软件,不存在侵权等问题,即法律上是可行的。
综上所述,开发一个房屋租赁管理系统与人工记录的方式相比具有速度更快,操作更准确,节省开支等有利之处,因此,建立一个房屋租赁管理系统是必要可行的。
2.3系统用例图
管理员是系统的核心用户,涉及到五大功能模块,管理员对系统的所有用户有着操作的权限,能够及时动态的掌握房屋出租等各项情况。
图2.1 管理员用例图
2.4功能模块需求分析
根据需求分析确定该系统划分为以下几个功能模块:
(1)系统公告管理
该模块主要完成对公告信息的的管理,包括公告的添加、删除操作。该功能的用例图如图3-1所示:
图3-1公告信息管理功能用例图
(2)房屋管理功能
该管理功能主要完成对房屋出租信息的管理,包括发布房屋信息、查询、删除操作。该功能的用例图如图3-2所示:
图3-2学生管理功能用例图
(3)用户管理功能
该管理功能主要完成对用户信息的管理,包括用户注册、查询、删除操作。该功能的用例图如图3-3所示:
图3-3成绩管理功能用例图
图2.2 系统功能模块图
2.5设计的基本思想
设计思想遵循以下几点:
1. 采用B/S模式进行开发,其优点是后台与前台处理层次分明,而且符合众多已经习惯网页方式的用户。
2. 采用面向对象的开发与设计理念。运用面向对象技术的前提是对整体系统的高度和准确抽象,通过它可以保证系统良好的框架,进而带来产品较强的稳定性和运行效率。
3.采用模块化设计。模块化设计要求将整个系统划分成基于小的模块,有利于代码的重载,简化设计和实现过程。
4. 简单方便的系统界面。设计简单友好的系统界面,方便用户较快的适应系统的操作。
5.速度优先原则。由于此工具最重要的评测标准就是速度,因此在设计过程中,具体过程尽量做到资源占用少,速度快。
6.设计既要突出重点,又要细致周到。要符合设计需求,在有可能改进的地方进行扩充,使系统更适应用户的需要。
2.6性能需求
2.6.1系统的安全性
房屋租赁管理系统在管理权限上要严格进行控制,具体要求如下:
想登录房屋租赁管理系统进行操作,必须有操作权限,没有权限的用户不能通过任何方式登录系统查看系统的任何信息和数据,以确保系统的严密性和安全性。
2.6.2数据的完整性
1.各种记录信息的完整性,信息记录内容不能为空
2.各种数据间相互联系的正确性
3.相同数据在不同记录中的一致性
2.7界面需求
界面设计目前已经成为评价软件质量的一条重要指标,一个好的用户界面可以增加用户使用系统的信心和兴趣,提高工作效率,JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。 创建动态页面非常方便。用户界面是指软件系统与用户交互的接口,通常包括输出、输入、人-机对话的界面格式等。
1.输出设计
输出是由计算机对输入的原始信息进行加工处理,形成高质量的有效信息,并使之具有一定的格式,提供管理者使用,这是输出设计的主要职责和目标。
系统设计的过程正好和实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计,这是因为输出表格直接与使用者相联系,设计的出发点应当是保证输出表格方便地为使用者服务,正确及时反映和组成用于各部门的有用信息。输出设计的原则是考虑既要全面反映不同管理层的各项需要,又要言简意赅,不要将用户需要和不需要的都提供给用户。
2.输入设计
输入数据的收集和录入是比较费事的,需要大量的人力和一定设备,并且容易出错。如果输入系统的数据有错误,则处理后的输出将扩大这些错误,因此输入数据的正确性对于整个系统质量的好坏是具有决定性意义的。
输入设计的原则有如下几点:
1)输入量应保持在能满足处理要求的最低限度。设计中可采用设置字段初值,下拉式数据窗口等方式尽量减少用户键盘输入量。输入量越少,错误率就越少,数据准备时间也减少。
2)输入的准备及输入过程应尽量容易进行,从而减少错误的发生。
3)应尽量早对输入数据进行检查(尽量接近原数据发生点),以便使错误及时得到更正。
4)输入数据尽早地用其处理所需的形式被记录,以避免数据由一种介质转移到另一种介质时需要转录而可能发生的错误
第三章 系统分析与设计
3.1数据库的分析与设计
计算机信息系统以数据库为核心,在数据库管理系统的支持下,进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。数据库已经成为现在信息系统等计算机系统的基础与核心部分。数据库设计的好坏直接影响到整个系统的质量和效率。
数据库的设计一般经过规划。需求分析、概念设计、逻辑设计、物理设计5个步骤。
3.1.1数据库的概念结构设计
概念设计是指在数据分析的基础上自底向上的建立整个系统的数据库概念结构,从用户的角度进行视图设计,然后将视图集成,最后对集成的结构分析优化得到最后结果。
数据库的概念结构设计采用实体—联系(E-R)模型设计方法。E-R模型法的组成元素有:实体、属性、联系,E-R模型用E-R图表示,是提示用户工作环境中所涉及的事物,属性则是对实体特性的描述。
概念设计的目标是产生反映企业组织信息要求的数据库概念结构,即概念模式。概念模式是独立于数据库逻辑结构,独立于支持数据库的DBMS,不依赖于计算机系统的,
根据以上对数据库的需求分析,并结合系统概念模型的特点及建立方法,建立E-R模型图。
(1)会员信息实体E-R图如图3.1所示:
图3.1 注册会员信息实体E-R图
(2)出租信息实体E-R图如图3.2所示
图3.2 出租信息实体E-R图
(3)管理员信息E-R图如图3.6所示
图3.6 管理员信息实体E-R图
(4)留言信息E-R图如图3.6所示
图3.7 留言信息实体E-R图
3.1.2数据库的逻辑结构设计
我们知道,数据库概念模型独立于任何特定的数据库管理系统,因此,需要根据具体使用的数据库管理系统的特点进行转换。即转化为按计算机观点处理的逻辑关系模型,E-R模型向关系数据库模型转换应遵循下列原则:
*每一个实体要转换成一个关系
*所有的主键必须定义非空(NOT NULL)
*对于二元联系应按照一对多、弱对实、一对一、多对多等联系来定义外键。
根据E-R模型,房屋租赁管理系统建立了以下逻辑数据结构,下面是各数据表的详细说明。
(1)注册用户信息表主要是记录了注册用户基本信息。表结构如表3.1所示。
表3.1注册用户信息表(t_user)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 4 | 否 | 是 | 编号 |
loginname | varchar | 50 | 否 | 否 | 登录名 |
loginpw | varchar | 50 | 否 | 否 | 登录密码 |
name | varchar | 50 | 否 | 否 | 姓名 |
sex | varchar | 50 | 否 | 否 | 性别 |
age | varchar | 50 | 否 | 否 | 年龄 |
address | varchar | 50 | 否 | 否 | 地址 |
tel | varchar | 20 | 否 | 否 | 联系电话 |
varchar | 20 | 否 | 否 | 电子邮箱 | |
varchar | 20 | 否 | 否 |
(2)房屋出租信息表主要是记录了房屋出租的基本信息,表结构如图3.2所示。
表3.2房屋出租信息表(t_chuzu)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 编号 |
huxing | varchar | 50 | 否 | 否 | 户型 |
mianji | varchar | 50 | 否 | 否 | 面积 |
jiage | varchar | 50 | 否 | 否 | 出租价格 |
beizhu | varchar | 50 | 否 | 否 | 备注 |
dizhi | varchar | 50 | 否 | 否 | 地址 |
lianxiren | varchar | 50 | 否 | 否 | 联系人 |
lianxihua | varchar | 50 | 否 | 否 | 联系方式 |
fabushijian | varchar | 50 | 否 | 否 | 发布时间 |
fujian | varchar | 50 | 否 | 否 | 附件 |
(3)房屋求租信息表主要是记录了房屋求租的基本信息,表结构如图3.3所示。
表3.3房屋求租信息表(t_chushou)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | Int | 4 | 否 | 是 | 编号 |
huxing | varchar | 50 | 否 | 否 | 户型 |
mianji | varchar | 50 | 否 | 否 | 面积 |
jiage | varchar | 50 | 否 | 否 | 出租价格 |
beizhu | varchar | 50 | 否 | 否 | 备注 |
dizhi | varchar | 50 | 否 | 否 | 地址 |
(4)公告信息表主要是记录了公告的基本信息,表结构如图3.4所示。
表3.4公告信息表(t_gonggao)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 4 | 否 | 是 | 编号 |
title | varchar | 50 | 否 | 否 | 标题 |
content | varchar | 5000 | 否 | 否 | 内容 |
shijian | varchar | 50 | 否 | 否 | 发布时间 |
(5)留言信息表主要是记录了留言的基本信息,表结构如图3.5所示。
表3.5留言信息表(t_liuyan)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
id | int | 4 | 否 | 是 | 编号 |
title | varchar | 50 | 否 | 否 | 标题 |
content | varchar | 5000 | 否 | 否 | 内容 |
shijian | varchar | 50 | 否 | 否 | 发布时间 |
user_id | Varchar | 50 | 否 | 否 | 发布人 |
(6)管理员信息表主要记录的管理员的账号信息,包括用户名和密码,表结构如表3.6所示。
表3.6管理员信息表(t_admin)
列名 | 数据类型 | 长度 | 允许空 | 是否主键 | 说明 |
userId | int | 4 | 否 | 是 | 编号 |
userName | varchar | 50 | 否 | 否 | 用户名 |
userPw | varchar | 50 | 否 | 否 | 密码 |
3.1.3数据库的连接原理
采用JDBC连接数据库的方式,只需在工程中导入对应数据库的jar包,就可以方便的对数据库进行连接,在程序中,用Class.forName()方法来加载驱动程序,在用DriverManager的getConnection()方法就可以创建一个数据库连接。程序采用的是DAO模式来操作数据库,DAO(Data Access Object,数据访问对象),是Java编程中的一种经典模式,已被广泛应用,也是J2EE架构中持久层框架的基础知识,基于分层次式的软件架构来实现对数据库的访问操作。DAO模式的主要思想就是从抽象数据源获取与操纵数据的方法。抽象数据的含义就是编写应用程序的程序员不必关心数据库的物理位置,已经是何种数据库,只需使用封装数据库中表示记录的数据对象即可。其思想如图3.10所示:
图3.10 DAO模式类图
图中BussinessObject是业务对象,是使用DAO模式的客户端;DataTransferObject数据传输对象,在应用程序不同层次之间传输对象,在一个分布式应用程序中,通常可以提高整理的性能;DataObjectAcces数据输入/输出对象封装了对数据源的一些基本操作;DataSource指的是数据源。可以从图中看出,DAO模式分离了业务逻辑和数据罗即将,是的编写的软件具有良好的层次式体系结构。本系统为了方便数据库的操作,主要使用DBContent的对象来接一个数据库(建立一个类DBContent),代码如下:
public DBContent(){
String CLASSFORNAME="com.SqlServer.jdbc.Driver";//连接数据库的驱动
String url="jdbc:SqlServer://localhost:3306/gy1";
String user="root";//连接数据库的用户名
String password="root";//连接数据库的密码
try{
Class.forName(CLASSFORNAME);
con= DriverManager.getConnection(url,user,password);//加载数据库的驱动
stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
}
catch(Exception ex){
ex.printStackTrace();
}
}
在程序需要连接数据库的地方,只需要生成一个DBConnet的对象,就可以对数据库进行连接并操作。
第四章 系统功能实现
在管理信息系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统实施阶段。在系统分析和设计阶段,系统开发工作主要是集中在逻辑、功能和技术设计上,系统实施阶段要继承此前面各个阶段的工作成果,将技术设计转化为物理实现,因此系统实施的成果是系统分析和设计阶段的结晶。
4.1系统后台登陆
1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。
2.程序运行效果图如图4.1所示:
图4.1 系统登陆页面设计
3.在登陆页面输入用户名和密码以,点击提交按钮,跳转到登陆的service中,在该service中会对用户名,密码,验证码进行判断,验证通过进入对应的页面,loginservice关键代码:
public String login(String userName,String userPw,int userType)
{
String result="no";
if(userType==0)//系统管理员登陆
{
String sql="select * from t_admin where userName=? and userPw=?";
Object[] params={userName,userPw};
DB mydb=new DB();
mydb.doPstm(sql, params);
try
{
ResultSet rs=mydb.getRs();
boolean mark=(rs==null||!rs.next()?false:true);
if(mark==false)
{
result="no";
}
else
{
result="yes";
TAdmin admin=new TAdmin();
admin.setUserId(rs.getInt("userId"));
admin.setUserName(rs.getString("userName"));
admin.setUserPw(rs.getString("userPw"));
WebContext ctx = WebContextFactory.get();
HttpSession session=ctx.getSession();
session.setAttribute("userType", 0);
session.setAttribute("admin", admin);
}
rs.close();
}
catch (SQLException e)
{
System.out.println("登录失败!");
e.printStackTrace();
}
finally
{
mydb.closed();
}
}
return result;
}
4.2后台主界面
1.描述:系统主页面:左方页面展示了管理员可操作的几大大功能,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。
2.程序运行效果图如图4.2所示:
图4.2管理员主页面
在每个jsp页面将会对相关用户进行拦截操作,这样可以提高安全性,防止用户不经过登陆页面而进入任何子菜单页面:
if(session.getAttribute("user")==null)
{
out.print("<script>alert('请先登录!');window.open('../index.jsp','_self')</script>");
}
4.2.1用户信息管理
4.2.1.1用户信息管理
1.描述:管理员点击左侧的菜单“注册用户管理”,页面跳转到注册用户信息管理界面,调用后台的action类查询所有注册用户信息。
2.程序效果图如下图4.3所示
图4.3 注册用户信息管理
用户信息管理关键代码:
public void userMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List userList=new ArrayList();
String sql="select * from t_user where del='no'";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tuser user=new Tuser();
user.setId(rs.getInt("id"));
user.setLoginname(rs.getString("loginname"));
user.setLoginpw(rs.getString("loginpw"));
user.setXingming(rs.getString("xingming"));
user.setXingbie(rs.getString("xingbie"));
user.setNianling(rs.getInt("nianling"));
user.setZhuzhi(rs.getString("zhuzhi"));
user.setZhiye(rs.getString("zhiye"));
user.setDel(rs.getString("del"));
userList.add(user);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("userList", userList);
req.getRequestDispatcher("admin/user/userMana.jsp").forward(req, res);
}
public void userDel(HttpServletRequest req,HttpServletResponse res)
{
String id=req.getParameter("id");
String sql="update t_user set del='yes' where id=?";
Object[] params={id};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("msg", "操作成功");
String targetURL = "/common/msg.jsp";
dispatch(targetURL, req, res);
}
4.2.2房屋信息管理
4.2.2.1房屋信息管理
1.描述:管理员点击左侧的菜单“房屋信息管理”,页面跳转到房屋出租信息管理界面,调用后台的action类查询出所有的房屋出租信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出房屋出租信息。
2.程序效果图如下图4.5所示
图4.5 房屋出租信息管理页面
出租信息管理关键代码:
public void chuzuAdd(HttpServletRequest req,HttpServletResponse res)
{
String huxing=req.getParameter("huxing");
int minaji=Integer.parseInt(req.getParameter("mianji"));
int jiage=Integer.parseInt(req.getParameter("jiage"));
String beizhu=req.getParameter("beizhu");
String dizhi=req.getParameter("dizhi");
String lianxiren=req.getParameter("lianxiren");
String lianxihua=req.getParameter("lianxihua");
String fabushijian=new SimpleDateFormat("yyyy-MM-dd").format(new Date());
String fujian=req.getParameter("fujian");
String sql="insert into t_chuzu values(?,?,?,?,?,?,?,?,?)";
Object[] params={huxing,minaji,jiage,beizhu,dizhi,lianxiren,lianxihua,fabushijian,fujian};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "chuzu?type=chuzuMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void chuzuDel(HttpServletRequest req,HttpServletResponse res)
{
String id=req.getParameter("id");
String sql="delete from t_chuzu where id=?";
Object[] params={id};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "chuzu?type=chuzuMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void chuzuMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List chuzuList=new ArrayList();
String sql="select * from t_chuzu";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tchuzu chuzu=new Tchuzu();
chuzu.setId(rs.getInt("id"));
chuzu.setHuxing(rs.getString("huxing"));
chuzu.setMianji(rs.getInt("mianji"));
chuzu.setJiage(rs.getInt("jiage"));
chuzu.setBeizhu(rs.getString("beizhu"));
chuzu.setDizhi(rs.getString("dizhi"));
chuzu.setLianxiren(rs.getString("lianxiren"));
chuzu.setLianxihua(rs.getString("lianxihua"));
chuzu.setFabushijian(rs.getString("fabushijian"));
chuzu.setFujian(rs.getString("fujian"));
chuzuList.add(chuzu);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("chuzuList", chuzuList);
req.getRequestDispatcher("admin/chuzu/chuzuMana.jsp").forward(req, res);
}
4.2.3公告信息管理
4.2.3.1公告信息录入
1.描述:管理员输入公告相关正确信息后点击录入按钮,如果是没有输入完整的公告信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法onsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.程序效果图如下图4.8所示:
图4.8 公告信息录入
4.2.4.2公告信息管理
1.描述:管理员点击左侧的菜单“公告信息管理”,页面跳转到公告信息管理界面,调用后台的action类查询出所有的公告信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出公告信息。
2.程序效果图如下图4.9所示
图4.9 公告信息管理页面
公告信息管理关键代码:
public void gonggaoAdd(HttpServletRequest req,HttpServletResponse res)
{
String id=String.valueOf(new Date().getTime());
String title=req.getParameter("title");
String content=req.getParameter("content");
String shijian=new Date().toLocaleString();
String sql="insert into t_gonggao values(?,?,?,?)";
Object[] params={id,title,content,shijian};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "gonggao?type=gonggaoMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void gonggaoDel(HttpServletRequest req,HttpServletResponse res)
{
String id=req.getParameter("id");
String sql="delete from t_gonggao where id=?";
Object[] params={id};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "gonggao?type=gonggaoMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void gonggaoMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List gonggaoList=new ArrayList();
String sql="select * from t_gonggao";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
Tgonggao gonggao=new Tgonggao();
gonggao.setId(rs.getString("id"));
gonggao.setTitle(rs.getString("title"));
gonggao.setContent(rs.getString("content"));
gonggao.setShijian(rs.getString("shijian"));
gonggaoList.add(gonggao);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("gonggaoList", gonggaoList);
req.getRequestDispatcher("admin/gonggao/gonggaoMana.jsp").forward(req, res);
}
4.3前台网站模块
4.3.1网站首面设计
1. 描述:房屋租赁管理网站网首页分面导航菜单与信息显示区域组成。
2. 程序效果图如下图4.13所示:
图4.13 网站首页
4.3.2用户注册模块
1. 描述:新用户通过该模块实现网站注册功能的实现。
2. 程序效果图如下图4.14所示:
图4.14 用户注册界面
3. 用户注册关键代码
public void userReg(HttpServletRequest req,HttpServletResponse res)
{
String id=String.valueOf(new Date().getTime());
String loginname=req.getParameter("loginname");
String loginpw=req.getParameter("loginpw");
String name=req.getParameter("name");
String sex=req.getParameter("sex");
String age=req.getParameter("age");
String address=req.getParameter("address");
String tel=req.getParameter("tel");
String email=req.getParameter("email");
String qq=req.getParameter("qq");
String del="no";
String sql="insert into t_user values(?,?,?,?,?,?,?,?,?,?,?)";
Object[] params={id,loginname,loginpw,name,sex,age,address,tel,email,qq,del};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
String targetURL = "/common/add_success.jsp";
dispatch(targetURL, req, res);
}
4.3.3房屋查询模块
1. 描述:通过该模块可以查询想要的房屋出租信息。
2. 程序效果图如下图4.15所示:
图4.15 出租信息查看界面
第五章 系统测试
5.1系统测试目的与意义
系统测试是管理信息系统开发周期中一个十分重要而漫长的的阶段。其重要性体现在他是保证系统质量与可靠性的最后关口,是对整个系统开发过程包括系统分析、系统设计和系统实现的最终审查。
系统测试的任务是尽可能彻底的检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这这阶段又可以分为三个步骤:模块测试,测试每个模块的程序是否正确;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。是基于系统整体需求说明书的黑盒测试,应覆盖系统随偶联合的部件,系统测试是正对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出需求规格不符合或与之矛盾的地方。
5.2测试过程
在测试之初,由于将数据库中的数据是随便输入,没有实用性,为了使系统更加完善,在系统测试的过程中,本系统将一开始编程随便输入的数据全部清理后,输入了一些有效的测试数据,这样可以更真实的反映系统的功能实现情况。
这样不断发现问题,经过反复的测试、调试,把问题一个个的解决,最终系统可以正常运行。
5.2.1主页面的登录模块测试
测试流程: 1.打开系统首页,输入错误的登录信息
2.登录
3.输入正确的登录信息
4.登录
5.测试结果
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:null 密码:null | 弹出错误提示,请输入用户名 | 登陆失败,提示请输入用户名 | 通过 |
登录模块 | 用户名:m1 密码:null | 弹出错误提示,请输入密码 | 失败,提示输入密码 | 通过 |
登录模块 | 用户名:m1 密码:1 | 弹出错误提示,用户名或者密码错误 | 登陆失败,提示用户名或者密码错误 | 通过 |
5.3其他错误
在程序设计实现的过程中不可避免的会产生各种难以预料的错误,如书写错误、传值类型不一致、参数传递问题等等。这些都需要通过细心的检测与不断的调试才能够排除。比如在servlet路径配置时因粗心错误导致运行导致所报错误,如图5.4:
图 5.4 由于servlet路径配置错误,运行时的提示
结 论
本次毕业设计将我大学四年所学的软件工程理论知识用到了具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力。在这段日子里,我查阅了管理信息系统建设的资料,翻阅了许多JSP的书籍,结合自己的经验,详细调查了中介公司的工作模式与业务流程,开发设计了这个房屋租赁管理系统,虽然每个学期都会有相应课程的课程设计和实训来作为动手练习训练,不过在本次毕业设计具体的实践的时候还是遇到了很多小问题,比如说在jsp页面将输入框设为不可用是添加属性readonly=“true”,而我在实际编程中却错写成disable=“true”,这样直接导致了request对象取不到数据,调试了程序很久才发现request对象获得的返回值一直是空,之前一直以为是代码哪里出了问题,总是在查源程序的逻辑。这些虽然都是小问题,但是由于不细心在具体实践中却浪费了不少时间,看来平时还是要多多实践才是。
在系统的开发过程中,我运用到了B/S三层结构技术和自己在平时学习中掌握的一些技术,通过这些技术的实现,整个系统的性能得到了大大的提高。这些技术都在论文中做了比较详细的介绍。本系统还存在许多的缺陷和不足之处,比如很多细节上做的还不行,有些功能模块还应再加强。希望在以后的时间里,我可以把这些缺陷都弥补过来,进一步完善系统。
通过本次毕业设计我锻炼了自己的自学、研究能力,也从中学到不少在企业在课堂上学不到的东西.通过实践我也深刻的体会到软件开发的艰辛及问题解决后的喜悦心情,培养我的独立思考问题的能力,同时也增强了我的理论联系实际的能力,这为自己以后的工作奠定了良好的基础。
本系统可以在很大程度上提高房屋出租、求租信息管理的效率,但由于时间按和技术条件的限制,还存在一些不足之处,有些功能还需要改进,还应该做进一步的系统调查需求分析工作,更深入的完善系统。总之,一个紧跟时代步伐的真正使用的软件必需有一个不断完善改进的过程
参考文献
[1] 张新曼. 精通JSP-WEB开发技术与典型应用[M]. 北京:人民邮电出版社, 2007. 98-101
[2]张立科.java信息系统管理开发[M].北京:人民邮电出版社.
[3]邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.
[4]朱涛江.SqlServer权威指南[M].中国电力出版社.2003.
[5]郝玉龙.JavaEE编程技术[M].北京:北京交通大学出版社.
[6] 赵增敏,《sql server 2000 实用教程(第 2 版),电子工业出版社,2008.9
[7] 李金勇,《SQL SERVER 2000 数据库技术与实训》北京理工大出版社,2008.11
[8] 周绪, 《sql server2000 中文版入门提高》清华大学出版社,2004.02
[9]朱涛江,《SqlServer权威指南》 ,中国电力出版社,2003
[10](美)Bruce Eckel著,陈昊鹏译,Java编程思想(第三版)[M].北京:机械工业出版社,2007.6
[11]李建中,王珊.《数据库系统原理(第2版)》电子工业出版社.2004.9
[12]张长富,黄中敏.JavaScript动态网页编程实例手册[M].北京:海洋出版社,2005:196-239
[13]艾灵仙. 高校系级网站构建平台的设计与实现.[J]. 科技信息-2008年16期
致 谢
本次设计历时三个月。在本次毕业设计中,能够基本顺利的完成任务,是XXX老师的耐心指导分不开的。X老师无论是在毕业设计过程中,还是在论文完成中都给予了我极大的帮助。同时,X老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我受益匪浅。他勤奋严谨的教学态度也给我留下了极为深刻的印象。我从老师身上学到了很多东西。在理论上还是在实践中,我能力都得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此,特向付老师表示由衷的感谢。
通过这次毕业设计的整个开发过程,我系统开发过程从需求分析到具体功能实现,再到最终测试和维护的理解有了很大的进步,让我对系统开发有了更深层次的认识。现在我的动手能力和独立解决问题的能力也得到了很大的锻炼和提高,这是这次毕业设计最好的收获。
最后,在整个系统开发过程中,我身边的同学和朋友给了我很多的建议,让我很快的确定了系统的业务逻辑。在次我衷心的向他们表示感谢。
学生签名:
日 期: