二月 3rd, 2011

FJUT毕业设计全套文档

毕业就业, by 管理员. 分享到: 分享到豆瓣网 分享到QQ空间 分享到朋友社区

我校毕业设计主要由任务书、开题报告、设计论文组成,以下是某同学的三篇文档,供大家参考。

福建工程学院计算机与信息科学系

毕业设计任务书

毕业设计课题名称

基于面向对象的房地产网站设计

学生姓名 林锦河 学    号 0306109112
专    业 网络工程 指导教师 张永晖
毕业设计课题目标与意义

本课题采用JSP网络编程,目标在于实现一个房地产系统网站,该网站界面清晰,能正常运行且无重大差错。

目前,市场有太多空闲的房屋,其中关键因素之一就是信息不能被消费者及时的掌握。因此,建立一个好的房地产系统网站,使其尽可能的向消费者展示各种房源信息,并让房屋拥有者及时发布自己的房源信息,或者消费者可以发布需求信息。为消费者与房屋拥有者提供一个信息交流的平台,使消费者可以购买或者租到满意的房子,使房屋不会空闲放置而导致浪费资源。

内容与要求

1.注册模块

实行用户注册,可以更好的保护用户的信息。

2.登录模块

用户登录时进行身份认证。

3.用户管理模块

用户可以修改个人信息及口领,管理可以修改和删除会员。

4.系统管理模块

普通会员可以进行个人房源信息的增加、修改、删除。管理员可管理所有的房源信息。

5.房源信息展示与搜索模块

展示新房出售信息、二手房出售信息、房屋出租信息、求购信息和求租信息。用户可以根据地区、价格、户型等信息搜索自己所需要的房源。

6.论坛模块

论坛提供一个信息交流平台,用户可以反馈信息或者更详细介绍自己的房屋,让消费者更了解房屋的信息。同时还可以起到一个互动的作用,使交易双方利益都能最大化。

主要技术指标

完成从需求分析,到设计的整个过程,;

完成系统的主要编程部分;

建立可以演示的系统环境,采用Tomcat服务器,可支持150人同时在线,反应时间在2S以内;

撰写论文。

进度安排

2010.04.01 – 2010.04.07  查找相关资料,学习相关内容。

2010.04.08 – 2010.04.15  完成开题报告。

2010.04.16 – 2010.05.15  完成相应的代码编写以及记录工作文档。

2010.05.16 – 2010.06.01  调试程序以及完成毕业论文初稿。

2010.06.01 – 2010.06.15  完成毕业论文的修改,准备答辩。

参考文献

[1] 尹丽.房地产网络营销问题研究[J].吉林省经济管理干部学院学报.2008.2:40-42.

[2] 裘丽岚.我国房地产网络营销[J].上海房产.2008.7:51-53.

[3] 姬春燕.浅谈房地产的网络营销[J].科技信息.2008.6:154-155

[4] 何斌.浅析我国房地产网络营销的应用前景[J].十堰职业技术学院学报.2009.4:46-48.

[5] 郑睿.JSP技术的网络应用开发[J].福建电脑.2009.6:69.

[6] 石义良,邓娟. JSP数据库访问技术研究[J].科技资讯.2009.2:14.

[7] 邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.2009.8:102-180

[8] WANG Chun-ming,PENG Zhi-juan.Collection Class and Its Application in JSP Page Data Organization[J].Journal of Nantong University.2009.3:31-34.

[9] 陈丹桂,任周.基于JSP分面技术的研究[J].2009.6:92-94.

[10] HUANG Ji,JIANG Li-qun.Slight JSP Chinese problem[J].Computer Knowledge and Technology.2008.5:1367-1368.

[11] 李平.基于JSP动态网页开发技术[J].微计算机信息.2009.25:108-110.

 

备注

 

 

教研室主任意见

 

 

 

福建工程学院

毕业设计(论文)开题报告

 

 

计算机与信息科学 _系       网络工程 _专业

设计(论文)题目 基于面向对象的房地产网站设计

学生姓名      ___ 林锦河___       __

学    号       0306109112_

起迄日期       2010/03/29_- 2010/06/23_

设计地点      _ 福建工程学院 _

指导教师       张永晖_         _

年      月      日

 

 

毕业设计(论文)开题报告

1.结合毕业设计(论文)课题任务情况,根据所查阅的文献资料,每人撰写文献综述。

一、问题的提出

随着Internet的发展,Web技术日新月异,静态HTML技术已经无法满足现实的需求,动态、交互的网络编程成了主流的技术。动态网络编程中设计房屋的租赁和让购,这是目前最为流行的网络应用。目前房屋空置现象严重,信息平台建设不强是其中关键因素之一。房地产网站针对大量信息能实现多维搜索,打造方便供需两方面的平台。

二、任务发布系统网站系统概述

任何人只要会浏览网页,就可以通过任何一款浏览器,本网站主要向消费展示房源信息,消费者可以通过浏览网页来了解有关的房源信息,还可以通过站内的搜索功能查找自己所需的房子。用户还可以登录到个人中心,在这里用户可以对自己所发布的房源信息进行修改,或者发布新的房源信息,方便消费者查看。网站主要提供了信息发布与信息交流平台,让消费者可更加快速、全面的了解有关的房源信息,以便于及时选购自己满意的房子。

三、参考文献

[1] 尹丽.房地产网络营销问题研究[J].吉林省经济管理干部学院学报.2008.2:40-42.

[2] 裘丽岚.我国房地产网络营销[J].上海房产.2008.7:51-53.

[3] 姬春燕.浅谈房地产的网络营销[J].科技信息.2008.6:154-155.

[4] 何斌.浅析我国房地产网络营销的应用前景[J].十堰职业技术学院学报.2009.4:46-48.

[5] 郑睿.JSP技术的网络应用开发[J].福建电脑.2009.6:69.

[6] 石义良,邓娟. JSP数据库访问技术研究[J].科技资讯.2009.2:14.

[7] 邓子云.JSP网络编程从基础到实践[M].北京:电子工业出版社.2009.8:102-180

[8] WANG Chun-ming,PENG Zhi-juan.Collection Class and Its Application in JSP Page Data Organization[J].Journal of Nantong University.2009.3:31-34.

[9] 陈丹桂,任周.基于JSP分面技术的研究[J].2009.6:92-94.

[10] HUANG Ji,JIANG Li-qun.Slight JSP Chinese problem[J].Computer Knowledge and Technology.2008.5:1367-1368.

[11] 李平.基于JSP动态网页开发技术[J].微计算机信息.2009.25:108-110.

 

2.毕业设计(论文)任务要研究或解决的问题和拟采用的方法:

一、系统的组成和功能

1.系统的组成

本系统由六个子模块组成:注册模块、登录模块、房源信息展示模块、房源信息搜索模块、管理模块及论坛。

1)注册模块

注册成为网站的用户,向网站提供一些用户的基本信息,包括用户名、密码、姓名、联系电话、EMAIL、联系地址,网站对用户的信息进行保护。

2)登录模块

用户登录时进行身份认证,若登录的是管理员admin,则跳转到管理员管理界面;若是普通会员登录,则跳转到个人管理界面。

3)用户管理模块

普通用户可以修改个人信息及口令,管理员可以修改会员的基本信息及删除会员。

4)系统管理模块

普通会员登录后可以管理自己发布的房源信息;管理员不仅可以管理管理员本身的一些信息,还可以管理普通会员发布的房源信息和匿名发布的房源信息。

5)房源信息展示与搜索模块

主要展示新房出售信息、二手房出售信息、房屋出租信息、求购求租信息。用户可以根据地区、价格、户型等信息搜索所需的房源。

6)论坛模块

论坛提供一个信息交流平台,用户可以反馈信息或者更详细介绍自己的房屋,让消费者更了解房屋的信息。同时还可以起到一个互动的作用,使交易双方利益都能最大化。

2.系统功能的初步

1) 用户注册与登录

用户向网站提供个人信息,成为网站的用户。登录时判断用户是普通会员还是管理员。

2)展示房源

用户登陆网站后,可以在首页看见各类房源信息的最新5条,通过网站导航可以查看各类房源信息,每页显示20条。

3)搜索房源

在首页以及展示各类房源信息的页面都将提供搜索模块,方便用户使用搜索功能,减少查找房源的时间。

4)管理房源信息

普通会员有三个房源信息管理功能:房源信息的增加、修改和删除。也可以匿名发布房源信息,但所有以匿名方式发布的房源信息全部由管理员进行管理。

5)论坛

这是一个信息交流平台,用户可以通过发贴子的方式发布房源,并对房源进行详细的描述,使消费者更清楚的了解用户所持有房源信息,消费者也可以在这里提出自己的要求,寻找合适的卖家。

3.运行环境要求

1)硬件环境:服务器端:P4 以上+1G内存+20G以上硬盘+网卡。

客户机端:能连接因特网,有20M以上的空闲内存。

2)软件环境: Windows NT4.0(以上)、Linux等。

4.开发环境

WindowsXP+MyEclipse + SQL Server 2000

二、本系统拟采用的解决方法(技术)以及技术特点

1、采用的方法

本系统采用JSP网络编程实现,使用html语言实现网页的布局,另外在其中嵌入JavaScript在客户端来验证各种表单数据的合法性。数据库采用SQL Server 2000,连接数据库使用纯Java数据库驱动程序。

2、技术特点

服务器端JSP引擎解释JSP标识和小脚本,生成所请求的内容,并且将结果以HTML页面的形式发送回浏览器。用户仅能看见一个界面,所有逻辑操作都由服务器进行,提高了系统的安全性。

由于系统要进行数据的验证,因此在客户端采用JavaScript进行数据验证,可以减少服务器端的压力。

由于可能会发生同一时间有大量的数据库处理,会导致系统运行变慢,而SQL Server 2000支持大容量的并发数可以有效的缓解这个处理过程的压力。

采用纯Java数据库驱动程序访问数据库不会影响数据库的逻辑代码,有利于代码的维护和升级。

 

3.指导教师意见(对课题的深度、广度及工作量的意见和对毕业设计(论文)结果的预测):

课题具有较强的现实意义,该生事先对毕业设计选题任务进行了基本的资料收集及研究,提出的方案较具体,技术路线可行,有一定难度,工作量适中,基本符合本科生毕业要求,学生在规定的时间内能够完成,同意开题。

指导教师 张永晖

年    月    日

4.系意见:

 

主 任___________

年    月    日

说明:开题报告作为毕业设计(论文)答辩委员会对学生答辩资格审查的依据材料之一,

此报告应在导师指导下,由学生填写,经导师签署意见及系审查后生效。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

毕业设计(论文)

 

 

 

 

 

 

 

 

题    目: 基于面向对象的房地产网站设计

学    生: 林锦河

指导老师: 张永晖   工程师

系    别: 计算机与信息科学系

专    业: 网络工程

班    级: 网络 0601

学    号: 0306109112

 

2010年6月

福建工程学院本科毕业设计(论文)作者承诺保证书

 

 

本人郑重承诺: 本篇毕业设计(论文)的内容真实、可靠。如果存在弄虚作假、抄袭的情况,本人愿承担全部责任。

 

学生签名:

年   月   日

 

 

 

 

 

 

福建工程学院本科毕业设计(论文)指导教师承诺保证书

 

 

本人郑重承诺:我已按有关规定对本篇毕业设计(论文)的选题与内容进行了指导和审核,该同学的毕业设计(论文)中未发现弄虚作假、抄袭的现象,本人愿承担指导教师的相关责任。

 

 

指导教师签名:

年   月   日

 

目  录

 

1 课题背景. 1

1.1 课题来源. 1

1.2 系统功能要求. 1

1.3 系统性能要求. 2

2 系统方案论证. 2

2.1 可行性分析. 2

2.2 系统运行环境. 3

2.3 方案关键技术分析与开发工具的选择. 3

2.3.1 C/S模式与B/S模式的比较分析. 3

2.3.2 动态页面开发技术的选择. 4

2.3.3 基于MVC模式的设计. 4

2.3.4 数据库系统的选择. 5

3 系统方案设计. 6

3.1 系统结构设计. 6

3.2 系统E-R图. 7

3.2.1 数据项. 8

3.2.2 数据结构. 9

4 系统实现. 9

4.1 注册模块. 9

4.2 登录模块. 10

4.3 系统管理模块. 12

4.4 用户管理模块. 13

4.5 房源信息展示与搜索模块. 14

4.5.1 房源信息的展示. 14

4.5.2 房源信息的搜索. 15

4.6 论坛模块. 16

5 问题的解决. 17

分页显示效率的改进. 17

6总结. 18

致谢语. 19

参考文献. 20

附录A 数据库设计. 21

附录B 部分核心代码. 23

B.1 分页显示. 23

B.2 登录验证. 26

B.3 发布房源. 29

B.4 删除房源. 32

B.5 退出登录. 34

 

基于面向对象的房地产网站设计

 

摘要:本房地产网站系统采用B/S结构开发,数据库采用Sql Server 2000,服务端采用JSP网络编程技术,选用基于JSP+JavaBean+Servlet的模型-视图-控制器(MVC)模式做为解决方案。本系统实现了用户管理、页面信息展示、房源信息的增加修改删除和搜索,以及房源论坛等功能。其中,用户管理包括用户对个人基本信息的修改和口令管理,以及管理员对会员的修改和删除、主题和回复的删除等;搜索实现了按类型、价格范围、户型和地区为条件的多维搜索;论坛模块包含主题发表、回复、以及相关修改等功能。系统界面清晰,操作简单,运行快捷,较好地实现了房地产网站的基本功能。

 

关键字:房地产网站;JSP;Sql Server 2000;JavaBean;servlet

 

 

 

Real Estate Website Design Based on

Object-Oriented Technology

 

Abstract: This real estate web site system uses B/S structure development,database uses Sql Server 2000,server-side network programming uses JSP technology and selected based on JSP + JavaBean + Servlet Model – View – Controller (MVC) model as the solution.The system implements the following features:user management, page information demonstration,availability of information increased,changes,

deletion and search,and the bbs of availability and so on.Among,User management includes user changes the basic personal information and password management,administrators modify and delete members,and Topics and reply to the deletion and so on.Search realized by type, price range, house and regional multi-dimensional search for the conditions.Forum module contains the subject was published,back and modify the functions related.The system Interface clear,easy to manage,run fast,better achieve the basic functions of the real estate site.

 

Key words: real estate website;JSP;Sql Server 2000;JavaBean;servlet

 

 

1 课题背景

1.1 课题来源

在某些小区的楼盘底下经常能看到贴在墙上的售房租房小广告,但是房主却很少收要要看房子的信息,其中关键的一点是有意购房或租房者难以看到这类的小广告,由此可见,目前房屋空置现象严重,没有相应得力的信息平台是关键因素之一。

从最初中国房地产联合网的诞生,到1999年万科、万通、华远等房地公司的网络联盟,再到各种房地产门户网站的建设,中国房地产网站的设经历了一个从无到有、由少增多的迅速发展过程。然而,数量上的急剧增加和各地房地产网站的建设水平参差不齐形成了强烈的对比,同一个网站的房源信息甚至存在重复现象。

为此,合理设计房屋的租赁和让购模块的结构,针对大量信息能实现多维搜索,以求打造方便供需两方面的平台。

本课题希望针对内容丰富的房源信息设计得力的搜索功能、避免信息重复;同时针对网站用户计算机水平一般的特点,设计思想注重用户友好性,操作简单,交互性强,以达到让用户快速准确的寻找到其感兴趣的信息。

1.2 系统功能要求

本系统要求有以下功能:

(1) 用户注册

实行用户注册,可以更好的保护用户的信息。

(2) 用户登录

用户登录时进行身份认证。

(3) 用户管理

用户可修改个人信息及口令,管理员可修改和删除会员。

(4) 系统管理

普通会员可以进行个人房源信息的增加、修改、删除。管理员可管理所有的房源信息。

(5) 房源信息展示与搜索

向用户展示各类房源信息。用户可以根据地区、价格、户型等信息搜索自己感兴趣的房源信息。

(6) 论坛

论坛提供一个信息交流平台,用户可以反馈信息或者更详细介绍自己的房屋,让消费者更了解房屋的信息。

1.3 系统性能要求

l  数据正确性有效性要求

(1) 提交信息前进行数据验证。

(2) 查询时预先判断用户所选择的条件,确保查询条件准确无误。

l  适应性要求

(1) 客户端可以在IE6.0等常用浏览器上使用。

(2) 服务器要求使用Tomcat5.0以上。

l  时间特性要求

(1) 响应时间:在正常的网络状态下,所有请求的操作均可在2s内完成。

(2) 数据传送时间:在正常的网络状态下,数据传送时间可在2s内完成

2 系统方案论证

2.1 可行性分析

随着城市住房的日益紧张,房地产业激烈的市场竞争中,各房地产企业都在各显其能,用多种效的手段宣传自己的产品,以吸引更多的消费者。随着IT时代的到来,房地产网络营销中的应用日趋广泛,对房地产业的影响也越来越深远。

与传统媒体广告相比,网络宣传的优势很明显: 网络广告实时成本低、传播范围广、针对性强、交互性强,有助于双向沟通。

使用B/S结构的系统,企业不需要购买网络设备、主机设备等基础设备投资,只需要租用一个服务器,再支付前期项目实施费用、日常使用费用及升级维护费用等就可以使系统正常的运行。

目前,越来越多的基于Web的解决方案出现,同时,浏览器技术的的广泛应用和开发为基于Web的应用聚集了足够的技术、人力资源和良好的用户基础。JSP几乎可以使用Java语言的所有特性,可以在Servlet和JavaBean的支持下,开发功能强大的Web站点。JSP完全基于Java语言,能够实现跨平台,可以在各种主流操作系统下使用。

2.2 系统运行环境

(1) 硬件环境

服务器端:P4 以上,1G内存,20G以上硬盘。

客户机端:能连接因特网,有20M以上的空闲内存。

(2) 软件环境

服务器端:Windows NT4.0以上,Tomcat5.0以上,Sql Server 2000数据库。

客户机端:windows或Linux等。

2.3 方案关键技术分析与开发工具的选择

2.3.1 C/S模式与B/S模式的比较分析

C/S模式的工作由服务器和客户机共同完成。客户机负责与用户的交互,收集用户信息,再通过网络向服务器发出请求,处理各类工作。服务器负责管理数据的访问,管理客户程序的数据及其与数据库的交互。

B/S模式,在客户端统一采用IE等浏览器向Web服务器提出请求,由Web服务器对数据库进行操作,并将结果传回客户端。B/S结构简化了客户机的工作,但是服务器担负更多的工作,对数据库的访问和应用程序的执行都将在服务器上完成。

两种模式各方面比较:

(1) 开发和维护成本

C/S对不同客户端需要开发不同的程序,且应用程序的安装、修改和升级均需要在所有的客户机上进行,开发和维护成本比较高。而B/S,客户端只要有浏览器即可,所有维护与升级工作都在服务器上进行,相对的开发和维护成本比较低。

(2) 客户端负载

C/S客户端具有显示与处理数据的功能,负载重。而B/S,客户端只需进行显示即可,所有事务逻辑由服务器执行。

(3) 安全性

C/S适用于专人使用的系统以及对安全性要求较高的专用应用软件;而B/S适用于交互性要求较多,使用人数较多,安全性要求不是很高的应用环境。

综上所述,B/S模式在针对使用人数较多,要求交互性强时比C/S模式具有更多的优势,因此本系统采用B/S模式,并且为了减少服务器负载在客户端采用JavaScript进行数据验证。

2.3.2 动态页面开发技术的选择

本系统采用B/S体系结构进行开发。在浏览器端通过对Web服务器的访问实现对数据的处理。采用基于Web的技术必然要确定好采用何种动态页面技术。动态页面技术是指通过Web服务器或应用服务器上的脚本文件或构件实现动态生成超文本页面。

基于Web技术的动态页面开发技术,目前主要有CGI、ASP、PHP和JSP四种:

(1) CGI

编写CGI的程序设计语言有许多种,有C、Perl、C++等,对程序员的要求较高且编写和调试比较困难,已很少用于B/S结构的开发。

(2) ASP

ASP可以用VBScript或JavaScript语言来编写,比较容易学习和应用,开发效率也比较高,但是其太依赖于Windwos操作系统。

(3) PHP

PHP的语法与C语言和Java的语法相似,由于它是开源式的,任何一个使用PHP的程序都可以增加自己的函数库,因此它具有庞大的函数库。但是其对组件的支持不够,扩展性较差。

(4) JSP

JSP具有良好的动态页面与静态页面分离的能力,可充分利用Java技术的优势。Java具有“一次编写,到处运行”的特点,因此具有很强扩展能力。另外,JavaBean具有代码可重用的优点,大大的缩短了开的时间。

JSP在可重用性、移值性等方面相对于其他B/S模式下的动态网页技术有比较突出的优势,所以本系统采用JSP技术构造动态页面。

2.3.3 基于MVC模式的设计

MVC (模型-视图-控制器) 模式是一种先进的设计模式,是一种通过三个不同部分构造一个软件或组件的理想办法。

在JSP技术中,模型、视图和控制器的具体实现如下:

模型:一个或多个JavaBean对象,用于存储数据,不涉及对数据的具体处理细节。

视图:一个或多个JSP页面,主要是向控制器提交必要的数据和为模型提供数据显示。

控制器:一个或多个Servlet对象,根据视图提交的要求进行数据处理操作,并将有关结果存储到JavaBean中,然后Servlet使用重定向方式请求某个JSP页面更新显示存储在JavaBean中的数据。

JSP中的MVC模式结构如图2.1所示

 

图2.1 JSP中的MVC模式

2.3.4 数据库系统的选择

系统对数据库系统有几点要求:

(1) 满足用户大量并发查询的情况下,保证系统的稳定和可靠;支持多线程、多进程。

(2) 开发性:支持主流的硬件平台、操作系统平台,支持TCP/IP网络协议,支持基于关系模型的流行数据库的透明访问。

(3) 编程接口:提供JDBC的编程接口。

(4) 应用软件开发环境:数据库系统和工具具有良好的可操作性,能提供基于软件工程的开发支持,并按需提供基于WEB技术的应用开发支持。

在常用的数据库中Oracle和Sql Server等都能满足本系统对数据库的要求,但本系统是在Windows下开发、运行和测试的,所以选择能充分利用Windows NT优势的Sql Server 2000做为本系统的数据库。

3 系统方案设计

3.1 系统结构设计

系统由六个子模块组成:注册模块、登录模块、房源信息展示与搜索模块、用户管理模块、系统管理模块和论坛模块。

系统的总体结构如图3.1。

 

图3.1 系统结构图

各模块的设计:

(1) 注册模块

注册成为网站的用户,向网站提供一些用户的基本信息,包括用户名、密码、姓名、联系电话、EMAIL、联系地址,网站对用户的信息进行保护。

(2) 登录模块

用户登录时进行身份认证,若登录的是管理员admin,则跳转到管理员管理界面;若是普通会员登录,则跳转到个人管理界面。

(3) 用户管理模块

普通会员可以修改个人信息及口令,管理员可以修改和删除会员信息。

(4) 系统管理模块

普通会员登录后可以管理自己发布的房源信息;管理员不仅可以管理管理员本身的一些信息,还可以管理普通会员发布的房源信息和匿名发布的房源信息。

(5) 房源信息展示与搜索模块

向用户展示各类型的房源信息,包括新房出售信息、二手房出售信息、房屋出租信息、求购信息和求租信息。用户可以根据地区、价格、户型等信息搜索所需的房源。

(6) 论坛模块

普通会员可以发表新贴和回复,并对自己发布的帖子和回复有编辑的权限。管理员可以对所有的帖子和回复进行编辑和删除操作。

3.2 系统E-R图

 

图3.2 系统E-R图

 

(a) 会员信息

 

 

 

(b) 房源信息

 

(c) 主题信息

 

(d) 回复信息

图3.3 实体图

3.2.1 数据项

(1) 会员信息包括:自动编号、密码、确认密码、姓名、电话、电子邮件、地址。

(2) 出售出租信息包括:自动编号、发布人、地区、类型、价格、户型、联系人、联系电话、电子邮件、地址、发布日期。

(3) 求购求租信息包括有:自动编号、发布人、地区、类型、价格、户型、联系人、联系电话、电子邮件、地址、发布日期。

(4) 主题信息包括:自动编号、标题、内容、发表人、点击数、发表日期。

(5) 回复信息包括:自动编号、主题编号、标题、内容、回复人、回复日期。

3.2.2 数据结构

会员信息={会员信息,注册用户所包含的信息,组成{自动编号、密码、确认密码、姓名、电话、电子邮件、地址}}

出售出租信息={出售出租信息,出售出租所包含的房源信息,组成{自动编号、发布人、地区、类型、价格、户型、联系人、联系电话、电子邮件、地址、发布日期}}

求购求租信息={求购求租信息,求购求租所包含的房源信息,组成{自动编号、发布人、地区、类型、价格、户型、联系人、联系电话、电子邮件、地址、发布日期}}

主题信息={主题信息,主题所包含的信息,组成{自动编号、标题、内容、发表人、点击数、发表日期}}

回复信息={回复信息,回复所包含的信息,组成{自动编号、主题编号、标题、内容、回复人、回复日期}}

4 系统实现

4.1 注册模块

(1) 提交注册信息

用户以表单的形式向服务器提供注册信息,表单中必填的有用户名、密码、确认密码,其他项可选填,包括姓名、电话、电子邮件和地址。

(2) 验证注册信息

用户名不能超过10位,密码不能超过16位,确认密码要与密码一致,电话为数字且为11或12位,电子邮件的格式要正确。

用户注册的基本流程如图4.1所示:

 

图4.1 用户注册流程图

用户在puser/reg.jsp页面填写表单,提交表单时转到该页面的JavaScript进行数据验证,验证通过就执行myservlet.handlereg将用户信息插入表puser中,并将用户信息存入mybean.reg,然后跳转到puser/showreg.jsp显示mybean.reg中所存储的信息。

4.2 登录模块

(1) 提交登录信息

用户以表单的形式向服务器提供用户名和密码。

(2) 验证登录信息

首先判断用户是否已登录,若用户未登录,再判断登录的用户是管理员还是普通会员。

用户登录的基本流程如图4.2所示:

 

图4.2 用户登录流程图

用户在首页的登录模块中输入用户名和密码,提交后执行myservlet.handlelogin,判断用户是否已登录,若登录则将已登录信息存入mybean.login中,否则就以用户名和密码查询数据库;若有这个用户就将登录信息存入mybean.login中,否则将登录失败的信息存入mybean.login中。若登录成功,则跳转到manage/manage.jsp,否则就跳转到puser/showlogin.jsp,调用mybean.Login显示已登录或登录失败信息。

4.3 系统管理模块

房源增加的基本流程如图4.5所示:

 

图4.5 房源增加流程图

在manage/add.jsp中填写房源信息,提交表单时先跳转到该页面内的JavaScript,执行检查数据是否正确的函数,接着执行myservlet. handleadd将房源信息插入到数据库,并将结果和房源信息存入mybean.add,跳转到manage/showadd.jsp将增加的结果显示在页面中。

房源删除的基本流程如图4.6所示:

 

图4.6 房源删除流程图

选择删除操时就执行myservlet.getoldsale查询数据库得到用户的旧信息并存入mybean.oldsale中,跳转到del.jsp中显示用户的旧信息,点击确认删除按扭时,执行myservlet.delsale将房源信息删除,转中到showdel.jsp显示删除结果。

房源修改的基本流程与房源增加类似,首先验证数据是否正确,正确的话就执行数据库操作,然后显示操作结果。

4.4 用户管理模块

修改口令基本流程如图4.7所示:

 

图4.7 修改口令流程图

在puser/psw.jsp页面中填写旧密码与新密码,提交后执行检查数据的函数,再执行myservlet.handlepsw判断旧密码是否正确,若正确就更新密码,最后跳转到puser/shownewpsw.jsp显示修改的结果。

个人信息修改及会员修改的基本流程与房源增加类似,均先验证数据是否准确,再执行数据库相关操作。

4.5 房源信息展示与搜索模块

4.5.1 房源信息的展示

(1) 选择查看类型

一共有五种类型的房源信息:新房、二手房、出租、求购、求租。每种类型一个页面。

(2) 浏览房源信息

将房源信息的发布人、地区、户型、日期以列表的形式显示在页面中。在每条记录后添加“查看详细”超链接,可以在新页面中查看该条房源的详细信息。

房源信息展示的基本流程如图4.3所示:

 

图4.3 房源信息展示流程图

共有五个页面:新房出售(show/xinfang.jsp)、二手房出售(show/esfang.jsp)、房屋出租(show/hire.jsp)、求购房屋(show/asksale.jsp)、求租房屋(show/askhire.jsp)。用户选择了一页面,在当页面内执行查询数据库的操作,将结果分页显示在该页面。

4.5.2 房源信息的搜索

(1) 选择查询条件

在首页及各个房源展示的页面都放置搜索模块。搜索条件有类型、地区、户型和价格范围。其中类型是必选的条件,其他条件可选。

(2) 显示查询结果

将所有的查询结果以简易的形式分页显示在页面中,在每条记录后面加上“查看详细”超链接,点击后就可在新页面中查看该条房源的详细信息。

搜索的基本流程如图4.4所示:

 

图4.4 搜索流程图

用户在搜索模块选好查询条件后,执行myservlet.handlesearch,将这些查询条件存入mybean.search中后跳转到search/search.jsp,在该页面中读取mybean.search中的查询条件后查询数据库,将结果分布显示在页面中。

4.6 论坛模块

(1) 主题列表

在论坛首页显示所有贴子的标题、发布人、回复次数、浏览次数,最后回复人,以列表的形式分页显示。

(2) 主题和回复的增加、修改及删除

登录的用户才可以发表主题和发起回复。普通用户可以对个人的主题和回复进行修改,管理员可以修改所有的贴子和回复。只有管理员可以删除主题和回复。

主题和回复的增加、修改和删除的基本流程与房源增加类似,均要先进行数据验证,验证通过就执行数据库的相关操作。

5 问题的解决

在开发中遇到了一些问题,比如根据用户的桌面分辨率大小显示不同网站的页面大小会有所不同,用户登录超时的处理,以及分页显示等。其中较难解决的是分页显示效率的提高。

分页显示效率的改进

原本使用的分页显示记录的方法需要用SQL语句一次性的将所有满足条件的记录查询出来,但是如果结果记录集比较大的话,会占用比较多的网络带宽,这样就降低了其显示的速度。

后采用一种利用Sql server 2000关键字top和not in实现分页的方案,此种方案需要拼接SQL语句,具体解决如下:

select top countPageRecord * from sale where type=’新房’ and sid not in (select top
“+(dipage-1)*countPageRecord+” sid from sale order by sid desc) order by sid desc

其中countPageRecord指每页所要显示的记录条数,dipage系指当前的页数。

select子句的作用是查询出当前页之前的所有记录,然后查询出20条不在当前页之前的页中的记录就为当前页的记录。

 

图5.1 分页显示流程图

用此种方案实现了只需传输当前页所需的记录,当记录集比较多时,就避免了将大量数据在网络上进行传输。此方案的缺点是页数越靠后面,查询所需的时间越长。但是由于用户习惯性一般只查看前几页的内容,页数越靠后,查看的概率越低,因此本方案虽然只针对前几页显示进行优化,但是对整体显示效率还是有较大提高。

6总结

房地产网站系统使用B/S结构,服务端采用JSP技术,客户端嵌套JavaScript语言进行数据验证,数据库采用SQL Server 2000。

实现了用户注册与登录,用户个人信息和口令修改,房源信息的展示、增加、删除、修改和搜索,论坛主题和回复的发表、删除和修改等功能。

具体功能有:用户注册,用户登录,房源展示;使用多条件进行搜索房源信息;匿名用户、普通用户、管理员均可以发布房源信息,普通用户可以对个人房源信息进行修改和删除,管理员可以修改和删除所有的房源信息和会员信息;论坛里,普通用户可以查看贴子、发表新贴、发起回复、编辑贴子、编辑回复,管理员还可以删除贴子和回复。

其中针对分页显示的效率问题作出了优化。

系统运行稳定,界面整洁,易于操作,实现了设计目标。然而,由于时间关系,未能完成房地产开发商信息展示;外观设计较为简单,有待进一步美化。此外,数据的安全性有待进一步提高,实现加密传输。

 

 

 

致谢语

本课题在选题及研究过程中得到张永晖老师的悉心指导。感谢他在设计过程中给予我良好的建议及热情的帮助。张老师一丝不苟的作风,严谨求实的治学态度,使我终身受益,他循循善诱的教导和不拘一格的思路给予我无尽的启迪。

在此,还要感谢我生命中出现的那些十分重要的同学朋友们。他们不仅在学术上给予我指点,同时也是我生活中一起同行的人,在交往的过程中我们建立信任、彼此鼓励、互相支持与帮助。因为有你们,使我的大学生活变得丰富多采,再次感谢你们。

 

 

参考文献

[1] 尹丽,房地产网络营销问题研究[J],吉林省经济管理干部学院学报,2008,22(3):40-42.

[2] 王晓双,探析房地产网络营销[J],哈尔滨商业大学学报,2009,104(1):52-54.

[3] 何斌,浅析我国房地产网络营销的应用前景[J],十堰职业技术学院学报,2009,22(2):46-48.

[4] 郭立川,JSP结合MVC技术的SQL Server2000数据库连接编程[J],软件导刊,2009,8(6):159-161.

[5] 刘应平,郭永宁,ASP与JSP的比较分析[J],电脑开发与应用,2008,21(3):79.

[6] 邓子云,JSP网络编程从基础到实践[M],北京:电子工业出版社,2009.

[7] WANG Chun-ming,PENG Zhi-juan.Collection Class and Its Application in JSP Page Data Organization[J],Journal of Nantong University,2009,8(3):31-34.

[8] 陈丹桂,任周,基于JSP分页技术的研究[J],计算机与数字工程,2009,37(6):92-94.

[9] Deepak Alur,Dan Malks,John Crupi,Foreword by Grady Booch,Foreword by Martin Fowler,Core J2EE Patterns:Best Practices and Design Strategies[M],U.S.A:Sun Microsystems,2009.

[10] 李平,基于JSP动态网页开发技术[J],微计算机信息,2009,25(7):108-110.

[11] 樊新华,孟铂,基于JDBC的通用的访问数据库方法[J],电脑知识与技术,20089,4(7):1545-1546.

 

 

附录A 数据库设计

(1) 会员信息表

 

表A.1 会员信息表

编号 字段名 数据类型 描述
1 uid Int 自动编号
2 pid varchar(10) 用户名
3 psw varchar(16) 密码
4 psw1 varchar(16) 确认密码
5 pname varchar(8) 姓名
6 phone varchar(12) 电话
7 email varchar(50) 电子邮件
8 addr varchar(200) 地址

 

(2) 出售出租A表

 

表A.2 出售出租表

编号 字段名 数据类型 描述
1 sid int 自动编号
2 pid varchar(10) 用户名
3 area varchar(10) 地区
4 type varchar(10) 类型
5 price varchar(10) 价格
6 housetype varchar(10) 密码
7 addr archar(100) 确认密码
8 man varchar(8) 姓名
9 phone varchar(12) 电话
10 email varchar(50) 电子邮件
11 issuedate datetime 自动日期

 

(3) 求购求租表

 

 

表A.3 求购求租表

编号 字段名 数据类型 描述
1 bid int 自动编号
2 pid varchar(10) 用户名
3 area varchar(10) 地区
4 type varchar(10) 类型
5 price varchar(10) 价格
6 housetype varchar(10) 密码
7 addr archar(100) 确认密码
8 man varchar(8) 姓名
9 phone varchar(12) 电话
10 email varchar(50) 电子邮件
11 issuedate datetime 自动日期

 

(4) 主题信息表

 

表A.4 主题信息表

编号 字段名 数据类型 描述
1 tid int 自动编号
2 title varchar(100) 标题
3 content varchar(2000) 内容
4 tuser varchar(10) 发表人
5 hit int 点击数
6 tdate datetime 发表日期

 

(5) 回复信息表

 

表A.5 回复信息表

编号 字段名 数据类型 描述
1 rid int 自动编号
2 tid int 主题编号
5 title varchar(100) 标题
4 content varchar(2000) 内容
5 ruser varchar(10) 回复人
6 rdate datetime 发表日期

附录B 部分核心代码

B.1 分页显示

 

图B.1 新房出售信息页面

int dipage=1;//当前页码数默认为1

String pages=request.getParameter(“dipage”);

if(pages==null){ pages=”1″; }

try{dipage=Integer.parseInt(pages);

}catch(Exception e){

dipage=1;

}

Connection con;

Statement sql;

ResultSet rs;

try{Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

}catch(ClassNotFoundException e) {

out.print(e);

}

try{con=DriverManager.getConnection(“jdbc:sqlserver://127.0.0.1:1433;DatabaseName=estate”,”sa”,””);

sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

rs=sql.executeQuery(“SELECT count(*) as recordCount FROM sale where type=’新房'”);

int countRecord=0;//记录条数

int countPageRecord=0;//每页记录条数

int countPage=0;//总页数

countPageRecord=20;//每页20条记录

if(rs.next())

countRecord=rs.getInt(“recordCount”); //得到记录的条数

if(countRecord==0){

out.print(“没有所要的结果”);

}

else {

if(countRecord%countPageRecord==0)

countPage=countRecord/countPageRecord; //得到总页数

else

countPage=countRecord/countPageRecord+1;

String sqlStr=”select top 20 * from sale where type=’新房’ and sid not in (select top “+(dipage-1)*countPageRecord+” sid from sale order by sid desc) order by sid desc”;

rs=sql.executeQuery(sqlStr);

out.print(“<Table Border=1>”);

out.print(“<TR>”);

out.print(“<Td width=60 >”+”地区</td>”);

out.print(“<Td width=50 >”+”类型</td>”);

out.print(“<Td width=150>”+”价格(元/平方米)</td>”);

out.print(“<Td width=80>”+”户型</td>”);

out.print(“<Td width=80>”+”发布日期</td>”);

out.print(“<Td width=80>”+”查看详细</td>”);

out.print(“</TR>”);

int i=0;

while(rs.next()){

out.print(“<TR>”);

out.print(“<TD >”+rs.getString(3)+”</TD>”);

out.print(“<TD >”+rs.getString(4)+”</TD>”);

out.print(“<TD >”+rs.getString(5)+”</TD>”);

out.print(“<TD >”+rs.getString(6)+”</TD>”);

out.print(“<TD >”+rs.getDate(“issuedate”)+”</TD>”);

out.print(“<TD><a href=’show/showsale.jsp?sid=”+rs.getInt(1)+”‘ target=_blank>查看详细</a></TD>”);

out.print(“</TR>”) ;

i++;

if(i>=countPageRecord) break; //当前页显示完,则退出循环

}

out.print(“<TR><td colspan=8 align=center>”);

out.print(“共”+countRecord+”条记录,共”+countPage+”页,当前第”+dipage+”页,每页”+countPageRecord+”条记录  “);

if(dipage==1);//当前是首页

else{

out.print(“<a href=show/xinfang.jsp?dipage=1>首页</a> “);

out.print(“<a href=show/xinfang.jsp?dipage=”+(dipage-1)+”>上一页</a> “);

}

if(dipage==countPage) ;//当前是末页

else {

out.print(“<a href=show/xinfang.jsp?dipage=”+(dipage+1)+”>下一页</a> “);

out.print(“<a href=show/xinfang.jsp?dipage=”+countPage+”>末页</a>”);

}

out.print(“</td></tr>”);

out.print(“</Table>”);

}

con.close();

}catch(SQLException e1){

out.print(e1);

}

B.2 登录验证

 

图B.2 登录界面

package myservlet;

import mybean.*;

import java.sql.*;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class handlelogin extends HttpServlet {

public void init(ServletConfig config) throws ServletException{

super.init(config);

try {  Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

}

catch(Exception e){}

}

public String handleString(String s)

{try{ byte bb[]=s.getBytes(“iso-8859-1″);

s=new String(bb);

}

catch(Exception ee){}

return s;

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{Connection con;

PreparedStatement sql;

login loginBean=null;

String backNews=””;

HttpSession session=request.getSession(true);

try{ loginBean=(login)session.getAttribute(“login”);

if(loginBean==null)

{ loginBean=new login();

session.setAttribute(“login”,loginBean);

}

}catch(Exception ee)

{ loginBean=new login();

session.setAttribute(“login”,loginBean);

}

String pid=request.getParameter(“pid”).trim(),

psw=request.getParameter(“psw”).trim();

boolean ok=loginBean.getsuccess();

pid=handleString(pid);

psw=handleString(psw);

if(ok==true&&pid.equals(loginBean.getpid()))

{ backNews=pid+”已经登录了”;

loginBean.setbackNews(backNews);

}

else{

String uri=”jdbc:sqlserver://127.0.0.1:1433;DatabaseName=estate”;

boolean boo=(pid.length()>0)&&(psw.length()>0);

try{ con=DriverManager.getConnection(uri,”sa”,””);

String condition=”select * from puser where pid =? and psw =?”;

sql=con.prepareStatement(condition);

if(boo)

{ sql.setString(1,pid);

sql.setString(2,psw);

ResultSet rs=sql.executeQuery();

boolean m=rs.next();

if(m==true)

{ backNews=”登录成功”;

loginBean.setbackNews(backNews);

loginBean.setsuccess(true);

loginBean.setpid(pid);

}

else

{ backNews=”您输入的用户名不存在,或密码不般配”;

loginBean.setbackNews(backNews);

loginBean.setsuccess(false);

loginBean.setpid(pid);

loginBean.setpsw(psw);

}

}

else

{ backNews=”您输入的用户名不存在,或密码不般配”;

loginBean.setbackNews(backNews);

loginBean.setsuccess(false);

loginBean.setpid(pid);

loginBean.setpsw(psw);

}

con.close();

} catch(SQLException exp)

{backNews=”登录失败”;

loginBean.setbackNews(backNews);

loginBean.setsuccess(false);

}

}

if(backNews==”登录成功”){

RequestDispatcher dispatcher=request.getRequestDispatcher(“manage/manage.jsp”);

dispatcher.forward(request, response);

}

else{

RequestDispatcher dispatcher=request.getRequestDispatcher(“puser/showlogin.jsp”);

dispatcher.forward(request, response);

}

}

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{ doPost(request,response); }

}

B.3 发布房源

 

图B.3 增加房源页面

package myservlet;

import mybean.*;

import java.sql.*;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class handleadd extends HttpServlet {

public void init(ServletConfig config) throws ServletException

{ super.init(config);

try {Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

}

catch(Exception e){}

}

public String handleString(String s)

{ try{ byte bb[]=s.getBytes(“iso-8859-1”);

s=new String(bb);

}

catch(Exception ee){}

return s;

}

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{Connection con;

PreparedStatement sql;

add ad=new add();

request.setAttribute(“add”,ad);

String pid=request.getParameter(“pid”).trim(),

area=request.getParameter(“area”).trim(),

type=request.getParameter(“type”).trim(),

price=request.getParameter(“price”).trim(),

housetype=request.getParameter(“housetype”).trim(),

addr=request.getParameter(“addr”).trim(),

man=request.getParameter(“man”).trim(),

phone=request.getParameter(“phone”).trim(),

email=request.getParameter(“email”).trim();

String oldcondition=””;

if(handleString(type).equalsIgnoreCase(“求租”)||handleString(type).equalsIgnoreCase(“求购”)){

oldcondition=”insert into buy”;

}else{

oldcondition=”insert into sale”;

}

String uri=”jdbc:sqlserver://127.0.0.1:1433;DatabaseName=estate”;

String backNews=””;

try{ con=DriverManager.getConnection(uri,”sa”,””);

String insertCondition=oldcondition+” (pid,area,type,price,housetype,addr,man,phone,email)

values(‘”+handleString(pid)+”‘,'”+handleString(area)+”‘,'”+handleString(type)+”‘,'”+handleString(price)+”‘,'”+handleString(housetype)+”‘,'”+handleString(addr)+”‘,'”+handleString(man)+”‘,'”+handleString(phone)+”‘,'”+handleString(email)+”‘)”;

sql=con.prepareStatement(insertCondition);

int m=sql.executeUpdate();

if(m!=0)

{backNews=”发布成功”;

ad.setbackNews(backNews);

ad.setpid(handleString(pid));

ad.setarea(handleString(area));

ad.settype(handleString(type));

ad.setprice(handleString(price));

ad.sethousetype(handleString(housetype));

ad.setaddr(handleString(addr));

ad.setphone(handleString(phone));

ad.setemail(handleString(email));

ad.setman(handleString(man));

}

con.close();

}catch(SQLException exp)

{ backNews=”发布房源失败请重新发布”;

ad.setbackNews(backNews);

}

RequestDispatcher dispatcher=request.getRequestDispatcher(“manage/showadd.jsp”);

dispatcher.forward(request, response);

}

Public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{doPost(request,response); }

}

B.4 删除房源

 

图B.4 确认删除房源页面

package myservlet;

import mybean.*;

import java.sql.*;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class delbuy extends HttpServlet {

public void init(ServletConfig config) throws ServletException

{ super.init(config);

try {  Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

}

catch(Exception e){}

}

public String handleString(String s)

{   try{ byte bb[]=s.getBytes(“iso-8859-1”);

s=new String(bb);

}

catch(Exception ee){}

return s;

}

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

{ Connection con;

PreparedStatement sql;

add ad=new add();

request.setAttribute(“add”,ad);

int bid=Integer.valueOf(request.getParameter(“bid”));

String uri=”jdbc:sqlserver://127.0.0.1:1433;DatabaseName=estate”;

String backNews=””;

try{ con=DriverManager.getConnection(uri,”sa”,””);

String Condition=”delete from buy where bid=”+bid;

sql=con.prepareStatement(Condition);

int m=sql.executeUpdate();

if(m!=0)

{  backNews=”已删除”;

ad.setbackNews(backNews);

}

con.close();

}

catch(SQLException exp)

{  backNews=”删除失败”;

ad.setbackNews(backNews);

}

RequestDispatcher dispatcher=request.getRequestDispatcher(“manage/showdel.jsp”);

dispatcher.forward(request, response);

}

public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

{ doPost(request,response); }

}

B.5 退出登录

package myservlet;

import mybean.*;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class handleexit extends HttpServlet {

public void init(ServletConfig config) throws ServletException

{ super.init(config);

}

public  void  doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

{ HttpSession session=request.getSession(true);

session.invalidate();                       //销毁用户的session对象

response.sendRedirect(“index.jsp”);   //返回主页

}

public  void  doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException

{ doPost(request,response); }

}

 

.

 

本文作者:

Hello There!我是本班级志的管理员,负责本站的建设和维护工作。

Back Top

回复自“FJUT毕业设计全套文档”

  1. 没有任何评论。
  1. 没有任何引用。

发表回复

Back Top

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

全站导航 文章(RSS) 后台管理

使用腾讯微博登陆

使用新浪微博登陆