房屋出租系统(软件工程导论课程设计)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南人文科技学院计算机系
课程设计说明书
课程名称: 软件工程导论
课程代码:
题目: 屋出房租系统
年级/专业/班:
学生姓名:
学号:
指导老师: 颜富强
开题时间: 2010年6月5日完成时间: 2010年6月30日
2010年6月30日
课程设计任务书及成绩评定
课程名称: 软件工程导论
完成者:
1、设计的目的与要求
1)加强学生的实践能力;
2)理解小型系统开发的基本步骤;
3)本系统的功能包括:房屋信息查询模块、注册模块、房屋信息管理模块(包括基本的添加、修改、删除功能)。

2、设计进度及完成情况
3、成绩评定
设计成绩:(教师填写)
指导老师:(签字)
2011 年月日
目录
第一章项目开发计划书 (1)
1.1引言 (1)
1.1.1编写目的 (1)
1.1.2背景 (1)
1.2项目概述 (1)
1.2.1工作内容 (1)
1.2.2主要参加人员 (2)
1.2.3产品 (2)
1.2.4服务 (2)
1.2.5验收标准 (2)
1.2.6本计划的批准者和批准日期 (2)
1.3实施计划 (3)
1.3.1工作任务的分门与人员分工 (3)
1.3.2进度 (3)
1.4支持条件 (3)
1.4.1计算机系统支持 (3)
第二章可行性分析 (5)
2.1可行性研究前提 (5)
2.2 对现有系统的分析 (5)
2.3 建议新系统 (5)
2.3.1 新系统说明 (5)
2.3.2 新系统的流程图 (6)
2.4经济上可行性 (6)
2.5技术可行性 (6)
2.6开发工具的选择 (7)
2.7 新系统的影响 (7)
2.8 结论 (7)
第三章需求分析 (8)
3.1市场需求分析 (8)
3.2系统功能性需求分析 (8)
3.2.1 功能划分 (8)
3.2.2 功能描述 (8)
3.2.2.1 注册功能模块 (8)
3.2.2.2 登录功能模块 (9)
3.2.2.3 查询功能模块 (9)
3.2.2.4 管理功能信息模块 (9)
3.3 系统非功能性需求 (9)
3.3.1 可用性 (9)
3.3.2 可靠性 (10)
3.3数据字典 (10)
3.4实体-联系图 (11)
第四章系统设计 (12)
4.1 总体设计 (12)
4.1.1需求概述 (12)
4.1.2客户关系管理系统功能设计 (12)
4.2数据库设计 (13)
4.2.1数据库详细设计 (13)
4.2.2数据结构与程序关系 (13)
4.3功能模块的设计与实现 (14)
4.3.1会员注册模块 (14)
4.3.2用户登录模块 (15)
4.3.3 查询模块 (16)
4.3.4 用户管理自己租房信息模块 (18)
第五章系统测试 (22)
5.1 测试的作用和意义 (22)
5.2 测试方法 (22)
5.3 测试内容 (22)
5.4 测试结果 (23)
5.4.1注册和登录模块测试 (23)
5.4.2 查询模块测试 (23)
5.4.3 房屋信息发布、修改和删除模块测试 (24)
5.4 结论 (25)
第六章总结 (26)
参考文献 (27)
第一章项目开发计划书
1.1引言
1.1.1编写目的
此项目开发计划书的编写主要是为了给开发《房屋租赁系统》做主要的规划和整合,在开发过程中起到引导作用,以及给使用者提供简要的说明。

1.1.2背景
随着我国市场经济的快速发展和信息化水平的不断提高,人们的生活节奏也日益加快。

而传统房屋租赁信息发布和查找的效率无疑是十分低下的。

如何利用先进的技术来提高房屋租赁效率,是一个十分迫切需要解决的问题。

于是,我们决定开发一个新系统以实现利用计算机对房屋租赁进行管理。

使用计算机对房屋出租信息进行管理,具有手工管理所无法比拟的优点。

例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

这些优点能够极大地提高房屋租赁管理的效率。

面对目前的实际状况,开发一个新系统来适应这一些工作,是十分必要的。

1.2项目概述
1.2.1工作内容
《房屋出租系统》针对的用户是需要租房和需要发布租房信息的人;
该系统需要实现如下功能:
浏览查询:主要是让想租房的人对想要了解的信息进行查询,包括房屋类型,租金,地段等。

用户注册:主要用于用户注册。

用户登陆:主要用于用户的登录。

当用户输入用户名和密码后经过确认以后可以发
布租房信息和查看房屋信息以及对房屋信息进行管理。

房屋信息管理:只有当用户注册登陆之后才可以使用这个功能。

用户可以发布房屋信息和对房屋信息进行修改、添加或删除。

1.2.2主要参加人员
组长:
设计:
开发:
1.2.3产品
1系统开发计划书
2系统需求说明书
3系统设计说明书
4测试计划
5一个能正确运行的可执行程序
源程序清单(有注释)
1.2.4服务
安装、维护和运行支持从使用该系统开始,维护期限为一年。

1.2.5验收标准
各个功能均能正常使用,满足用户的需求。

1.2.6本计划的批准者和批准日期
批准者:颜富强
批准日期:2010年6月5日
1.3实施计划
1.3.1工作任务的分配与人员分工
组长: 任务: (1)系统总的开发计划书
(2)每周至少组织小组讨论一次,列出本周开发计划
(3)项目开发进度的管理
(4)团队的组织和协调
设计:任务: (1)参与小组讨论
(2)进行系统的需求分析和系统设计
(3)完成系统需求说明书和系统设计说明书
(4)编写测试计划,参与系统测试
(5)协助文档人员完成用户相关文档
开发:任务: (1)参与小组讨论
(2)根据设计完成编码,并注释
(3)进行单元测试
1.3.2进度
系统规划阶段: 项目标志性事件开始到完成
开发阶段:项目开发计划书的完成 6.5-6.7
需求分析阶段: 系统需求说明书完成 6.8-6.10
设计阶段: 系统设计说明书 6.11-6.15
编码实现: 项目的形成 6.16-6.23
测试阶段: 测试计划 6.24-6.27
移交阶段: 项目的递交 6.28-6.30
1.4支持条件
1.4.1计算机系统支持
操作系统需要 windows 2000以上;
操作系统环境:java虚拟机,.netFrameWork3.0;数据库需要SQL Server 2000;
数据库驱动:Microsoft公司的sqljdbc驱动;
前台开发工具:MyEclipse5.5,Dreamver mx 8.8; 前台界面类型:html,jsp,servlet。

第二章可行性分析
2.1可行性研究前提
要求:满足客户发布房屋出租的基本信息及要求,并对客户资料具有保密性。

目标:实现无纸化办公,节省成本,提高工作效率。

条件、假定、限制:本软件自开发到运行结束至少可运行5年,开发成本不超过500人民币,开发软件到投入使用不超过1个月。

2.2 对现有系统的分析
如今没有一个专门用于提供发布和提供住房出租信息的平台。

人们想要发布或寻找租房信息,主要是通过纸质广告、广播、电视等传统的传媒手段。

这样做不仅信息发布的目标受众并不准确、效果不好而且花费也是十分高昂的。

需要寻找租房信息的人也没有一个及时准确的信息平台。

在生活节奏日益加快的今天,这种状况已无法满足人们的对租房效率的要求了。

2.3 建议新系统
2.3.1 新系统说明
新系统能够为想发布租房信息的人和想租房的人提供一个良好的平台。

使租房信息能及时准确到达受众。

想租房的人能快捷、方便的找到想要的信息。

而且本系统界面友好,操作简单,对硬件要求不高,且用户的花费是几乎可以忽略的,因此十分有利于推广。

本系统的用户可分为两种:想发布租房信息的用户可先注册,已注册用户可直接登录,然后就可管理自己的房屋信息了;若只是想查询信息的用户只是可以以游客的身份进行查询,不需要注册。

2.3.2 新系统的流程图
图1 新系统的流程图2.4经济上可行性
开发成本:500元人民币。

效益:暂时无法具体衡量。

效益/投资比:暂时无法估算。

投资回收期:大约2个月。

2.5技术可行性
软件需求:操作系统WINDOWS 2000 Advance Server以上。

硬件需求:赛扬1.7G CPU、512M内存 80G硬盘的计算机。

使用语言为:java 页面为jsp
编辑工具为: MyEclipse
数据库为:SQL Server 2008
2.6开发工具的选择
MyEclipse5.5作为前台的开发工具;用SQL Server 2008作为后台支持数据库;通过JDBC的数据库驱动来连接SQL Server 2008中并对其编程来实现各种功能。

2.7 新系统的影响
●设备的影响:创建新系统需要添置一台性能良好的服务器。

●人员的影响:新系统需要一个专职维护人员。

●用户的影响:用户可准确、高效的发布和查找信息。

2.8 结论
综上所述,房屋租赁系统在技术非常成熟,主客观条件都具备,且具有良好的效益,因此开发此系统是可行的。

为了提高房屋租赁效率,方便人们查找和发布房屋租赁信息,建议立即开发。

第三章需求分析
3.1市场需求分析
过去人们对房屋出租信息的发布主要通过人力宣传、海报等方式。

这些传统方式及浪费金钱又浪费时间,效率十分低下。

现在通过房屋出租平台将出租房的信息发布到网上不仅降低了成本,同时检索迅速、查找方便、可靠性高、存储量大、保密性好。

这样做极大地提高房屋租赁管理的效率。

3.2系统功能性需求分析
3.2.1 功能划分
本系统的目标使用人群是广大的人民群众,建成后将有助于改善现有出租房管理混乱的状况,加强住户和房主的联系。

因此本系统首先需要实现用户的注册功能,注册后客户可发布自己的租房信息或管理自己的已发布的租房信息,包括修改、删除等;已注册的用户就可直接登录,之后就可对自己已发布的信息进行管理,填加新信息;而未注册的用户也可同已注册的用户一样可查询到自己想要的信息。

3.2.2 功能描述
3.2.2.1 注册功能模块
对于想利用本系统进行房屋租赁信息发布的用户,首先需要注册成为系统的会员用户,系统才能保存他们的信息。

在注册时用户仅需要输入自己喜欢的任何英文字母组成的用户名和由英文、数字或英文加数字组成的密码。

用户注册成功之后,注册页面随即转入首页。

3.2.2.2 登录功能模块
主要用于用户的登录。

已注册的用户进入系统后可根据之前注册的用户名和密码直接登录自己的账户,但用户需要填入正确的用户名和用户密码。

如果用户登录时的用户名或密码错误,就会有提醒用户登录失败的页面。

如果用户输入的用户名和密码经过确认后,页面需跳转到房屋出租管理系统的管理首页。

3.2.2.3 查询功能模块
所有上网用户都可以使用本系统的查询功能,对房屋的基本情况进行了解,并且查询需要支持模糊查询。

用户在查询框输入需要查询的房屋类型,系统则会根据输入的类容进行搜索,并给出所有搜索结果。

对于查询出的结果,用户还可以通过点击对应的标题查看其地段、房主联系方式、说明等详细信息。

3.2.2.4 管理功能信息模块
只有登录的合法用户才可以使用管理功能模块。

用户可以发布新的房屋租赁信息和对自己发布的房屋出租的信息进行管理,当用户查看自己的发布的房屋信息的时候可以对房间的基本信息(房屋类型、租金、地址、详细信息等)进行修改,并可以添加、删除等。

3.3 系统非功能性需求
3.3.1 可用性
本系统的潜在用户群具有的身份、背景可能会有较大的差异,因此对本系统的可操作性和易用性都提出了很高的要求。

过于复杂的操作将不可避免的损失大量的用户,本系统应能让任何用户都不必借助任何操作手册或相关的系统帮助就能顺利地进行各种操作。

3.3.2 可靠性
系统建成后预计将有大量的用户在此发布和查询房屋租赁信息,因此对系统的稳定性也有比较高的要求。

一旦系统不能正常工作,会给用户群带来巨大的损失也将导致失去用户对系统的信任。

3.3数据字典
通过系统需求分析,对房屋租赁系统编制数据字典如下:
各主要数据流的定义如表1至表3所示。

表1
表2
表 3
3.4实体-联系图
根据需求分析,可以画出系统E-R图如下:
图2 房屋租赁系统E-R图
第四章系统设计
4.1 总体设计
4.1.1需求概述
本系统的目标是实现让任何想租房的人能找到有用的信息,任何想发布租房信息的人能有一个良好的信息发布、管理平台。

因此,本系统需要实现对发布的信息的查询功能,发布和管理已发布的租房信息的功能。

而在用户发布信息前需要在系统注册,登录。

即系统还需实现用户的注册、登录功能。

4.1.2客户关系管理系统功能设计
根据系统需求分析和系统功能模块结构图来看,该系统应具备如下基本功能:
●普通游客的查询
●用户注册
●已注册用户的发布、修改、删除房屋信息
其功能模块结构图如下:
图3 程序功能模块图
4.2数据库设计
4.2.1数据库详细设计
数据库文件名:
4.2.2数据结构与程序关系
程序各个模块都要与数据库系统联系。

物理数据结构主要用于各模块之间函数的信息传递。

接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。

4.3功能模块的设计与实现
4.3.1会员注册模块
用户如果想要注册,则按要求输入信息,包括用户名,密码,确认密码。

输入完后点击“注册”,则系统自动转入首页。

若想重新设置,则可点击“重置”,则系统将已输入的数据清空,等待用户重新输入。

注册界面如下:
图4 注册界面
具体方法代码实现如下:
package org.svse.dao;
import java.sql.Connection;
import java.sql.SQLException;
import org.svse.model.Per;
public class PerDAO extends BaseDAO {
public boolean savePer(Per per) {
boolean isflat = false;
String sql = "insert into t_per values(?,?)";
Connection conn = this.getConn();
try {
ps = conn.prepareStatement(sql);
ps.setString(1, per.getName());
ps.setString(2, per.getPwd());
int count = ps.executeUpdate();
if (count > 0) {
isflat = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
return isflat;
}
4.3.2用户登录模块
在系统首页的左侧有一个登录窗口,用户可在相应的位置输入用户名和密码。

输完后点击“登录”系统即会跳转到相应的用户界面。

期间点击“重置”可重新输入用户名和密码。

图5 登录界面
登录后通过此方法从数据库检索是否有此用户:
public Per getPerByNameAndPwd(Per o){
Per per = null;
Connection conn = getConn();
String sql = "select * from t_per where P_name=? and p_password=?";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, o.getName());
ps.setString(2, o.getPwd());
rs = ps.executeQuery();
if(rs.next()){
per = new Per();
per.setId(rs.getInt("p_id"));//注意这个不能少
per.setName(rs.getString("P_name"));
per.setPwd(rs.getString("p_password"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
return per;
}
}
4.3.3 查询模块
本系统的注册用户或未注册的用户都可直接在系统首页的输入框中输入想要查询的房屋类型,系统会在已发布的房屋信息的标题中进行搜索。

并给出相应的搜索结果。

例如:某游客想想查询所有的商品房信息就可在首页的搜索框中直接输入“商品房”点
击“查询”。

系统会将所有标题为商品房的房屋信息搜索出来。

图6 搜索界面
从页面传递的查询信息,通过此方法来从数据库中检索符合条件的资料:
public List getHouseInfoBylike(String key){
List list = new ArrayList();
String sql = "select h_id,h_title,h_price,h_date from t_house where h_title like ?";//h_id不能忘了
Connection conn = getConn();
try {
ps = conn.prepareStatement(sql);
ps.setString(1, "%" + key.trim() +"%");//注意啊
rs = ps.executeQuery();
while (rs.next()) {
HouseInfo info = new HouseInfo();
info.setH_id(rs.getInt("h_id"));//h_id不能忘了,因为detail需要
info.setH_title(rs.getString("h_title"));
info.setH_price(rs.getDouble("h_price"));
info.setH_date(rs.getDate("h_date"));
list.add(info);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResource();
this.closeConn(conn);
}
return list;
}
4.3.4 用户管理自己租房信息模块
用户登录后可发布自己想要发租的房屋的信息,也可对已发布的信息进行修改、删除等操作。

图7 租房信息管理界面
通过用户的序列来查找对应用户的房屋出租信息的方法:
public HouseInfo getHouseInfo(int h_id) {
HouseInfo info = null;
String sql = "select * from t_house where h_id=?";
Connection conn = getConn();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, h_id);
rs = ps.executeQuery();
while (rs.next()) {
info = new HouseInfo();
info.setH_id(rs.getInt("h_id"));
info.setH_title(rs.getString("h_title"));
info.setH_per(rs.getString("h_per"));
info.setH_tel(rs.getString("h_tel"));
info.setH_type(rs.getString("h_type"));
info.setH_shi(rs.getInt("h_shi"));
info.setH_ting(rs.getInt("h_ting"));
info.setH_price(rs.getDouble("h_price"));
info.setH_qx(rs.getString("h_qx"));
info.setH_jd(rs.getString("h_jd"));
info.setH_date(rs.getDate("h_date"));
info.setH_remark(rs.getString("h_remark"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResource();
this.closeConn(conn);
}
return info;
}
修改对应用户租房信息的代码实现:
public boolean updateHouse(HouseInfo info) {
boolean isflat = false;
String sql = "update t_house set
h_title=?,h_qx=?,h_jd=?,h_shi=?,h_ting=?,h_type=?,h_price=?,h_per=?,h_tel=? ,h_remark=? where h_id=?";
System.out.println(sql);
Connection conn = this.getConn();
try {
ps = conn.prepareStatement(sql);
ps.setString(1, info.getH_title());
ps.setString(2, info.getH_qx());
ps.setString(3, info.getH_jd());
ps.setInt(4, info.getH_shi());
ps.setInt(5,info.getH_ting());
ps.setString(6, info.getH_type());
ps.setDouble(7, info.getH_price());
ps.setString(8, info.getH_per());
ps.setString(9, info.getH_tel());
ps.setString(10, info.getH_remark());
ps.setInt(11, info.getH_id());
int count = ps.executeUpdate();
if (count > 0) {
isflat = true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
this.closeResource();
this.closeConn(conn);
}
return isflat;
}
删除租房信息的具体代码实现:
public boolean deleteHouseById(int id) {
boolean isflat = false;
String sql = "delete from t_house where h_id=?";
Connection conn = this.getConn();
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
int ncount = ps.executeUpdate();
if (ncount > 0) {
isflat = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResource();
this.closeConn(conn);
}
return isflat;
}
}
第五章系统测试
5.1 测试的作用和意义
系统测试是管理信息系统的开发周期中的一个十分重要环节。

尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价。

系统测试占用的时间、花费的人力和成本占软件开发的很大比例。

统计表明,开发较大规模的系统,系统测试的工作量大约占整个软件开发工作量的40%-50%。

而对于一些特别重要的大系统,测试的工作量和成本更大,甚至超过系统开发其他各阶段的总和的若干倍。

因此做好系统交付前的系统测试的目的就是在系统在投入生产性运行之前,尽可能多的发现系统的潜在错误,这是保证系统质量的关键,也是减少系统后期维护投入的最佳方法。

5.2 测试方法
本次测试主要是对系统进行黑盒测试。

由未参与系统编程的组员参与。

通过设计不同的等价输入类对系统的各项功能进行反复运行,观察系统的返回结果来判断系统的各项功能的实现情况。

5.3 测试内容
1 软件的正常运行、关闭及退出时保存记录情况。

2 用户界面是否友好,可操作性及安全性能是否良好。

3 数据库的可维护性好,数据的录入、删除及更改是否能顺利完成。

5 各模块的共能是否能达到预期要求。

6 系统的稳定性是够良好。

5.4 测试结果
5.4.1注册和登录模块测试
经过测试,用户能在本系统进行正常的注册和登录,并在用户输入不存在的用户名或错误的密码后能给出提示。

说明本系统的注册和登录模块的各项功能都圆满实现了。

图8 登录成功后的界面
图9 输入错误的用户名或密码后系统的提示界面
5.4.2 查询模块测试
在本系统的搜索框中输入不同类容进行搜索时系统都能返回准确的结果。

例如下图是在搜索输入框中输入“商品”,点击“查询”后系统返回的结果,从中可看出本系统的搜索功能可以正常运行,即说明本系统的查询模块的各项功能都能良好实现。

图10 搜索结果界面
5.4.3 房屋信息发布、修改和删除模块测试
通过在本系统发布若干个房屋信息和系统返回的结果观察,可知本系统的信息发布、修改和删除等各项功能均运行良好。

图11 房屋信息发布、修改界面
图12 信息发布成功后的界面
5.4 结论
经过反复测试,系统完成后运行用户注册、登录、管理房屋信息等功能均正常,发布1.0版。

虽然此系统仍存在许多缺陷,但是通过该系统设计达到了系统设计目的意义,基本掌握了软件开发的主要步骤,了解了各环节在开发时要注意的问题,从方便用户的角度出发,去考虑开发出好的软件。

另外,在设计过程中也逐渐提高了软件开发技能和编程技能。

因此本设计虽然较粗糙,但是从学习的角度上看,非常有意义。

第六章总结
在本系统的开发过程中,使我们更清楚的了解了JA V AEE系统的开发流程,但由于是第一次把JA V A 语言应用于WEB建设,因此系统必然会存在一些缺陷和不足,特别是在功能方面不是很完善,但我们会在今后的学习过程中不断修改,使系统更加完善。

尽管本系统存在着一些不足之处,但其基本功能全面、易于日后程序更新、数据库管理容易、界面美观友好、操作方便、效率高、安全性好等优点是本系统所必需的。

相信本房屋出租系统在网络信息宣传中是一套非常有用的系统。

在本次课程设计中,我们受益匪浅,这对于我以后的工作和学习都有一种巨大的帮助。

在此,感谢颜富强老师耐心的辅导。

另外,在系统开发过程中通过组员之间的密切合作,大家互相帮助,勇于向实际困难挑战,基本完成此次设计,极大增强了团队合作意识
湖南人文科技学院·课程设计
参考文献
1.张海藩著,软件工程导论(第五版),清华大学出版社,2008年
2.郑人杰著,软件工程,人民邮电出版社,2009年
3.闪四清著,邵明珠译,SQL Server 2008数据库应用实用教程,清华大学出版社,
2010年
4.郑阿奇著,SQL Server实用教程(第3版),电子工业出版社,2009年
5.郝玉龙著,JavaEE编程技术,清华大学出版社,2008年
6.吴映波著,Java EE 5开发基础与实践,清华大学出版社,2008年
7.李芝兴、杨瑞龙著,Java EE Web编程,机械工业出版社,2008年
[1]
27。

相关文档
最新文档