房屋出租系统软件工程导论课程设计.docx
《房屋出租系统软件工程导论课程设计.docx》由会员分享,可在线阅读,更多相关《房屋出租系统软件工程导论课程设计.docx(22页珍藏版)》请在冰豆网上搜索。
房屋出租系统软件工程导论课程设计
湖南人文科技学院计算机系
课程设计说明书
课程名称
:
软件工程导论
课程代码
:
题目
:
屋出房租系统
年级/专业/班
:
学生姓名
:
学号
:
指导老师
:
颜富强
开题时间
:
2010年6月5日
完成时间
:
2010年6月30日
2010年6月30日
课程设计任务书及成绩评定
课程名称
:
软件工程导论
完成者
:
1、设计的目的与要求
1)加强学生的实践能力;
2)理解小型系统开发的基本步骤;
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
项目的递交
3、成绩评定
设计成绩:
(教师填写)
指导老师:
(签字)
2011年月日
第一章项目开发计划书
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计算机系统支持
操作系统需要windows2000以上;
操作系统环境:
java虚拟机,.netFrameWork3.0;
数据库需要SQLServer2000;
数据库驱动:
Microsoft公司的sqljdbc驱动;
前台开发工具:
MyEclipse5.5,Dreamvermx8.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技术可行性
软件需求:
操作系统WINDOWS2000AdvanceServer以上。
硬件需求:
赛扬1.7GCPU、512M内存80G硬盘的计算机。
使用语言为:
java页面为jsp
编辑工具为:
MyEclipse
数据库为:
SQLServer2008
2.6开发工具的选择
MyEclipse5.5作为前台的开发工具;用SQLServer2008作为后台支持数据库;通过JDBC的数据库驱动来连接SQLServer2008中并对其编程来实现各种功能。
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
表1
表2
表3
3.4实体-联系图
根据需求分析,可以画出系统E-R图如下:
图2房屋租赁系统E-R图
第四章系统设计
4.1总体设计
4.1.1需求概述
本系统的目标是实现让任何想租房的人能找到有用的信息,任何想发布租房信息的人能有一个良好的信息发布、管理平台。
因此,本系统需要实现对发布的信息的查询功能,发布和管理已发布的租房信息的功能。
而在用户发布信息前需要在系统注册,登录。
即系统还需实现用户的注册、登录功能。
4.1.2客户关系管理系统功能设计
根据系统需求分析和系统功能模块结构图来看,该系统应具备如下基本功能:
●普通游客的查询
●用户注册
●已注册用户的发布、修改、删除房屋信息
其功能模块结构图如下:
图3程序功能模块图
4.2数据库设计
4.2.1数据库详细设计
数据库文件名:
(1)房屋表结构
列名
数据类型
允许Null值
描述
p_id
int
否
房屋信息序列
h_id
int
否
房主的序列
h_title
varchar(50)
是
房屋信息标题
h_qx
varchar(50)
是
区县
h_jd
varchar(50)
是
街道
h_shi
int
是
几室
h_ting
int
是
几厅
h_type
varchar(50)
是
房屋的类型
h_price
money
是
租房的价格
h_per
varchar(50)
是
联系人
h_tel
varchar(50)
是
电话
h_date
datetime
是
日期
主键为:
房屋序列
(2)注册用户表结构
列名
数据类型
允许Null值
描述
p_id
int
是
用户的序列
p_name
varchar(50)
否
用户名
p_password
varchar(50)
否
用户密码
主键为:
用户的序列
4.2.2数据结构与程序关系
程序各个模块都要与数据库系统联系。
物理数据结构主要用于各模块之间函数的信息传递。
接口传递的信息将是以数据结构封装了的数据,以参数传递或返回值的形式在各模块间传输。
4.3功能模块的设计与实现
4.3.1会员注册模块
用户如果想要注册,则按要求输入信息,包括用户名,密码,确认密码。
输入完后点击“注册”,则系统自动转入首页。
若想重新设置,则可点击“重置”,则系统将已输入的数据清空,等待用户重新输入。
注册界面如下:
图4注册界面
具体方法代码实现如下:
packageorg.svse.dao;
importjava.sql.Connection;
importjava.sql.SQLException;
importorg.svse.model.Per;
publicclassPerDAOextendsBaseDAO{
publicbooleansavePer(Perper){
booleanisflat=false;
Stringsql="insertintot_pervalues(?
?
)";
Connectionconn=this.getConn();
try{
ps=conn.prepareStatement(sql);
ps.setString(1,per.getName());
ps.setString(2,per.getPwd());
intcount=ps.executeUpdate();
if(count>0){
isflat=true;
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
returnisflat;
}
4.3.2用户登录模块
在系统首页的左侧有一个登录窗口,用户可在相应的位置输入用户名和密码。
输完后点击“登录”系统即会跳转到相应的用户界面。
期间点击“重置”可重新输入用户名和密码。
图5登录界面
登录后通过此方法从数据库检索是否有此用户:
publicPergetPerByNameAndPwd(Pero){
Perper=null;
Connectionconn=getConn();
Stringsql="select*fromt_perwhereP_name=?
andp_password=?
";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,o.getName());
ps.setString(2,o.getPwd());
rs=ps.executeQuery();
if(rs.next()){
per=newPer();
per.setId(rs.getInt("p_id"));//注意这个不能少?
?
?
?
per.setName(rs.getString("P_name"));
per.setPwd(rs.getString("p_password"));
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
returnper;
}
}
4.3.3查询模块
本系统的注册用户或未注册的用户都可直接在系统首页的输入框中输入想要查询的房屋类型,系统会在已发布的房屋信息的标题中进行搜索。
并给出相应的搜索结果。
例如:
某游客想想查询所有的商品房信息就可在首页的搜索框中直接输入“商品房”点击“查询”。
系统会将所有标题为商品房的房屋信息搜索出来。
图6搜索界面
从页面传递的查询信息,通过此方法来从数据库中检索符合条件的资料:
publicListgetHouseInfoBylike(Stringkey){
Listlist=newArrayList();
Stringsql="selecth_id,h_title,h_price,h_datefromt_housewhereh_titlelike?
";//h_id不能忘了
Connectionconn=getConn();
try{
ps=conn.prepareStatement(sql);
ps.setString(1,"%"+key.trim()+"%");//注意啊
rs=ps.executeQuery();
while(rs.next()){
HouseInfoinfo=newHouseInfo();
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(SQLExceptione){
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
returnlist;
}
4.3.4用户管理自己租房信息模块
用户登录后可发布自己想要发租的房屋的信息,也可对已发布的信息进行修改、删除等操作。
图7租房信息管理界面
通过用户的序列来查找对应用户的房屋出租信息的方法:
publicHouseInfogetHouseInfo(inth_id){
HouseInfoinfo=null;
Stringsql="select*fromt_housewhereh_id=?
";
Connectionconn=getConn();
try{
ps=conn.prepareStatement(sql);
ps.setInt(1,h_id);
rs=ps.executeQuery();
while(rs.next()){
info=newHouseInfo();
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(SQLExceptione){
e.printStackTrace();
}finally{
closeResource();
this.closeConn(conn);
}
returninfo;
}
修改对应用户租房信息的代码实现:
publicbooleanupdateHouse(HouseInfoinfo){
booleanisflat=false;
Stringsql="updatet_houseseth_title=?
h_qx=?
h_jd=?
h_shi=?
h_ting=?
h_type=?
h_price=?
h_per=?
h_tel=?
h_remark=?
whereh_id=?
";
System.out.println(sql);
Connectionconn=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());
intcount=ps.executeUpdate();
if(count>0){
isflat=true;
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
this.closeResource();
this.closeConn(conn);
}
returnisflat;
}
删除租房信息的具体代码实现:
publicbooleandeleteHouseById