资源描述
各专业全套优秀毕业设计图纸
各专业全套优秀毕业设计图纸
成 绩
评 阅 人
评阅日期
数据库原理课程设计
题目: 房屋租赁管理系统
班 级: 网络12-1
学 号: 34
姓 名:
指导老师:
2014年 10月 3 日
目录
1.需求分析 2
1.1功能分析 2
1.2工作流图 2
1.3数据流图 3
1.4数据字典 3
2.概念模型设计 5
3.逻辑结构设计 7
4.功能设计 7
5.功能模块的实现 8
5.1 系统界面 8
5.2主要源代码 13
6.总结 33
7.参考文献 33
1.需求分析
1.1功能分析
某房屋租赁公司欲建立一个房屋租赁服务系统,统一管理房主和租赁者信息,以便快速地提供租赁服务。该系统具有以下功能:
l 登记房主信息。对于每名房主,系统需登记其姓名、住址和联系电话。
l 登记房屋信息。所有在系统中登记的房屋都有一个唯一的识别号(对于新增加的房屋,系统会自动为其分配一个识别号)。除此之外,还需登记房屋的地址、房型(如平房、带阳台的楼房、独立式住宅等)、最多能容纳的房客数、租金及房屋状态(待租赁、已出租)。一名房主可以在系统中登记多个待租赁的房屋。
l 登记租赁者信息。所有想通过该系统租赁房屋的租赁者,必须事先在系统中登记个人信息,包括:姓名、住址、电话号码、身份证编号、性别。
l 租赁房屋。已经在系统中登记的租赁者,可以得到一分系统提供的待租赁房屋列表。一旦租赁者从中找到合适的房屋,就可以提出看房请求。系统会安排租赁者与房主见面。对于每次看房,系统会生成一条看房记录。
l 收取手续费。每成功一次租赁服务,系统根据租赁价格按比例生成费用清单。
l 变更房屋状态。当租赁者与房主达成租房或退房协议后,房主向系统提交变更房屋状态请求。
l 用户论坛。租赁者在论坛上寻找合租对象、与房主进行交流。
1.2工作流图
1.3数据流图
1.4数据字典
该数据库字典如下表:
库表登记
表名
中文名
handingcharges
手续费登记表
houseowner
房主信息表
houses
房屋信息表
renter
租赁者信息表
rentered
已出租的房屋表
seehistory
看房记录表
手续费登记表handingcharges
houseower_name
房主的名字
houseid
房屋的编号
house_address
房屋的地址
rent_value
房屋的租金
handlingcharge
房屋的手续费
房主信息表houseowner
houseower_name
房主的名字
houseower_address
房主的地址
houseower_phone
房主的电话
房屋信息表houses
houseid
房屋的编号
houseower_name
房主的名字
house_address
房屋的地址
rent_value
租金
people_number
容纳最大的人数
house_type
房屋的类型
house_state
房屋的状态
租赁者信息表renter
renter_id
租赁者的编号
renter_name
租赁者的姓名
renter_sex
租赁者的性别
renter_address
租赁则的地址
renter_phone
租赁者的电话
identity_card
租赁者的身份证
已出租的房屋表rentered
houseid
房屋的编号
rentered_name
租赁者的姓名
看房记录表seehistory
rentername
看房的租赁者
houseid
房屋编号
2.概念模型设计
图 1 房主的E-R实体图
图 2 房屋的E-R实体图
图 3 租赁者的E-R实体图
图 3 实体及其联系的E-R图
3.逻辑结构设计
由图1转换为关系模型:房主(姓名,地址,电话)
由图2转换为关系模型:房屋(编号,房主名字,地址,租金,容纳人数,类型,状态)
由图3转换为关系模型:租赁者(编号,名字,性别,地址,电话,身份证)
由图4转换为关系模型:看房记录(租赁者的姓名,房屋的编号)
手续费(房屋编号,手续费)
已租赁房屋(租赁者,房屋的编号)
4.功能设计
图 5 功能结构图
5.功能模块的实现
5.1 系统界面
图 6 系统登录界面
图 7 系统主界面
图 8 登记房屋
图 8 租赁者申请看房记录
图 9 更变房屋状态
图 10 查看租房记录
图 11 手续费
图 12 待租赁房屋
图 13 查看个人信息
图 14 修改个人信息
图 14 修改密码
图 15 注册页面
5.2主要源代码
(1)index.jsp
<%@ page contentType="text/html;charset=GBK" language="java" import="java.util.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>房屋租赁系统</title>
</head>
<frameset rows="210,*" cols="*", frameborder="No" border="0" framespacing="0">
<frame src="jsp/top.jsp" name="top" scrolling="no" norresize>
<frame src="jsp/first.jsp" name="main" scrolling="yes">
</frameset>
<noframes><body>
</body></noframes>
</html>
(2)first.jsp
<%@ page contentType="text/html;charset=GBK" language="java" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>欢迎光临</title>
</head>
<body>
<table align="center" width="579" height="300" border="0" celpadding="0">
<tr>
<td align="center" valign="top" bgcolor="#FFFFFF">
<p> </p>
<table width="568" height="178" border="0" cellpadding="0"
cellspacing="0" background="../images/background.gif">
<tr>
<td> </td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
(3)top.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
Date date=new Date();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<div align="center" class="style1">
<table width="753" height="193" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="166" height="150" colspan="8" background="../images/banner.jpg"> </td>
</tr>
<tr>
<td width="120" height="20" background="../images/date.jpg" ><span class="style6">
<%=date.getYear()+1900%>年<%=date.getMonth()+1%>月<%=date.getDate()%>日
</span></td>
<td width="92" height="20" align="center" background="../images/bar.jpg">
<a href="information/houseowner.jsp" target="main">登记房主</a>
</td>
<td width="92" height="20" align="center" background="../images/bar.jpg">
<a href="information/house.jsp" target="main">登记房屋</a>
</td>
<td width="92" height="20" align="center" background="../images/bar.jpg">
<a href="information/Renter.jsp" target="main">登记租赁者</a>
</td>
<td width="92" height="20" align="center" background="../images/bar.jpg">
<a href="information/userchat.jsp" target="main">用户论坛</a>
</td>
</tr>
</table>
</div>
</body>
</html>
(4)house.jsp
<%@ page contentType="text/html;charset=GBK" language="java" import="java.util.*"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<script type="text/javascript">
function bt_submit_onclick()
{
location.replace('./SurWetland.jsp');
}
function checkForm() {
var subform = document.form_s;
var houseower_name = subform.houseower_name.value;
var house_address = subform.house_address.value;
if(monitor_units==""||monitor_units.replace(/(^\s*)|(\s*$)/g,"")=="") {
alert("房主姓名不能为空!");
subform.monitor_units.focus();
return false;
}
if(farmername=="" || farmername.replace(/(^\s*)|(\s*$)/g,"")=="") {
alert("人工湿地名称不能为空!");
subform.farmername.focus();
return false;
}
subform.action="bb"
}
function file_check(){
var subform = document.form_uqfile;
var file=subform.file1.value;
if(file == ""){
alert('请选择要上传的文件');
return false;
}else{
subform.action="/iep/afile.do?files="+file;
subform.submit();
}
}
//弹出选择历史
function LineQueryOpen()
{
var subform = document.form_s;
var monitor_units = subform.monitor_units.value;
var farmername = subform.farmername.value;
if(monitor_units==""||monitor_units.replace(/(^\s*)|(\s*$)/g,"")=="") {
alert("检测单位不能为空!");
subform.monitor_units.focus();
return false;
}
if(farmername=="" || farmername.replace(/(^\s*)|(\s*$)/g,"")=="") {
alert("人工湿地名称不能为空!");
subform.farmername.focus();
return false;
}
window.showModalDialog('/iep/SurWetland.do?method=findEvents&&farmername='+farmername, '','dialogWidth:1000px; dialogHeight:420px;');
}
</script>
<style type="text/css">
</style>
<title>登记房屋</title>
</head>
<body>
<table align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<form name="form_s" action="bb" method="post"
>
<br />
<table>
<tr>
<td>
房主姓名:
</td>
<td>
<input name="houseower_name" value="${houseower_name}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入房主姓名!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
房屋地址:
</td>
<td>
<input name="house_address" value="${house_address}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入房屋地址!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
房屋租金:
</td>
<td>
<input name="rent_value" type="text" value="${rent_value}"
onfocus="this.value=''"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入房屋租金!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
最多能容纳的房客数:
</td>
<td>
<input name="people_number" value="${people_number}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入最多能容纳的房客数!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
房屋类型:
</td>
<td>
<select name="house_type" size=1 >
<option value="平房">平房</option>
<option value="带阳台的楼房">带阳台的楼房</option>
<option value="独立式住宅">独立式住宅</option>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
房屋状态:
</td>
<td>
<select name="house_state" size=1 >
<option value="待租赁">待租赁</option>
<option value="已出租">已出租</option>
</td>
</tr>
</table>
<br>
<table>
<tr>
<td>
</td>
</tr>
</table>
<table>
<tr>
<td width="450">
</td>
<td>
<input name="submit" type="submit" value="提交"
style="width: 80px; margin-left: 5px; height: 25px; font-size: 12px;" />
</td>
<td width="20">
</td>
<td>
<input name="button" type="button" value="重置"
onClick="document.form_s.reset();"
style="width: 80px; margin-left: 5px; height: 25px; font-size: 12px;" />
</td>
<td width="20">
</td>
<td>
<INPUT type="button" value="历史数据" accessKey="btnQuery"
onclick="LineQueryOpen()"
style="width: 80px; margin-left: 5px; height: 25px; font-size: 12px;" />
</tr>
</table>
</form>
</body>
</html>
(5)houseinfo.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.ResultSetMetaData"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<table align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
待租赁房屋列表
</td>
</tr>
</table>
<%
ResultSet rs=(ResultSet)request.getAttribute("result");
ResultSetMetaData rd=rs.getMetaData();
int columnNum=rd.getColumnCount();
%>
<table align="center" cellpadding="5" cellspacing="10">
<tr>
<td>房屋编号</td>
<td>房主姓名</td>
<td>房屋地址</td>
<td>房屋租金</td>
<td>房屋最大容纳人数</td>
<td>房屋的类型</td>
<td>请求看房</td>
</tr>
<%
while(rs.next()){
int id=rs.getInt(1);
%>
<tr>
<td><%=id%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getString(3)%></td>
<td><%=rs.getInt(4)%></td>
<td><%=rs.getString(5)%></td>
<td><%=rs.getString(6)%></td>
<td>
<a href="ee?id=<%=id%>" onClick="alert('已申请看房请求!');">申请</a>
</td>
</tr>
<%} rs.close();%>
</table>
</body>
</html>
(6)renter.jsp
<%@ page contentType="text/html;charset=GBK" language="java" import="java.util.*"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>登记房主</title>
</head>
<body>
<table align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<form name="form_s" method="post"
action="cc">
<br />
<table>
<tr>
<td>
姓名:
</td>
<td>
<input name="renter_name" value="${renter_name}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入房主姓名!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
性别:
</td>
<td>
<input name="renter_sex" value="${renter_sex}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入性别!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
住址:
</td>
<td>
<input name="renter_address" value="${renter_address}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入住址!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
联系电话:
</td>
<td>
<input name="renter_phone" type="text" value="${renter_phone}"
onfocus="this.value=''"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入联系电话!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
身份证号码:
</td>
<td>
<input name="identity_card" value="${identity_card}"
onfocus="this.value=''" type="text"
style="width: 90px; margin-left: 5px; height: 20px; font-size: 12px;"
onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('请输入身份证号码!')" />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<br>
<table>
<tr>
<td>
</td>
</tr>
</table>
<table>
<tr>
展开阅读全文