基于Java的房屋租赁系统

1.课程设计目的
(1)培养学生运用所学课程《数据库系统原理》的理论知识和技能,深入理解《数据库系统原理》课程相关的理论知识,学会分析实际问题的能力。
(2)培养学生掌握用《数据库系统原理》的知识设计计算机应用课题的思想和方法。
(3)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
(4)通过课程设计的训练,要求学生在教师的指导下,独立完成大作业。
2.课程设计任务与要求:
任务:
(1)通过调查研究和运用Internet,收集和调查有关资料、最新技术信息。
(2)基本掌握撰写小论文的基本步骤和写作方法。
(3)根据课题的要求基本理解和掌握数据流图(DFD)和数据字典(DD)的设计方法。
(4)根据课题的要求基本理解和掌握E-R图的设计方法和关系模式的转换。
(5)根据ER图生成数据库表。
(6)数据库完整性、安全性保证措施
(7)数据库实施维护计划
基本要求:
(1)每个学生从给定题目中任选一个作为课程设计题目,调查分析一个具体的或模拟的实例。同一个班中的同学不允许选择相同的题目。选好题目后发给学习委员汇总,产生选题冲突时,由班长/委员协调解决;
(2)描述该实例的业务信息和管理工作的要求;
(3)建立数据字典;
(4)列出实体、联系;
(5)指出实体和联系的属性;
(6)画出E-R图;
(7)将E-R图转换成关系模式,并注明主码和外码;
(8)创建数据库;
(9)根据题目的要求写查询、存储过程、触发器等。

3.课程设计说明书
3.1需求分析
3.1.1问题描述
试设计一个房屋租赁的管理系统,下列各项为对该系统数据库的基本要求。
(1)能够完成对房屋面积、租金等基本信息的管理;
(2)实现房屋信息的管理;
(3)实现租户信息的管理;
(4)创建视图查询房屋的面积、租金、房屋编号、地址等信息;
(5)创建存储过程统计房产数量。
(6)建立数据库相关表之间的参照完整性约束。
3.1.2数据需求
以下为我们需要的各种数据信息的罗列。
(1)房屋:房屋编号、面积、租金、地址等。
(2)租房合同:用户账号、房屋号、房屋租期等。
(3)用户信息:用户名、密码。
(4)管理员信息:用户名、密码。
3.1.3功能需求
根据对问题的分析,我们大致将系统所需要的功能划分为三个模块,它们分别为用户登录模块、、管理员登录模块、房屋管理模块、租房合同管理模块。
(1)登录模块:房屋管理系统不是每一个人都有权限去使用的,为了保障其使用的安全性,需要在输入正确的账号和密码后方可登录本系统。
(2)管理员登录模块:实现房屋基本情况的录入、修改、删除、查询、搜索等基本操作
(3)房屋信息管理模块:实现房屋基本情况的录入、修改、删除、查询、搜索等基本操作。
(4)租房合同信息管理模块:实现房间号进行查询,然后租借。
3.1.4安全性及完整性需求
(1)安全性需求分析
需要输入用户名与密码才能登陆本系统;
输入的登陆密码需要以“*”显示;
禁止非法数据写入;
对于各种错误可以做到提醒或纠正。
(2)完整性需求
数据库设计时要使关系的属性不可再分,满足原子性;
约束表格中部分属性的内容;
为数据的新增、修改或删除设定对应的触发器;
给表格外键设置级联删除,当对应外键被删除时,将其关联信息全部删除;
防止数据库查询发生 SQL 注入的攻击。
3.1.5数据流图

图3 - 1房屋租赁系统顶层数据流图

图3 - 2房屋租赁数据流图
3.1.6数据字典
(1)数据项
数据项名称:房屋编号
别称:房屋的编号
简述:房屋的编号,房屋信息的唯一标识
类型:char(10) 数据项名称:用户编号
简述:用户的账号号,用户信息的唯一标识
类型:char(10)

数据项名称:面积
简述:房屋的面积
类型:float 数据项名称:租金
简述:房屋租赁的租金
类型:float

数据项名称:位置
简述:房屋的地址
类型:varchar(10) 数据项名称:租期
简述:房屋的租期
类型:int

图3 - 3数据项(一)
数据项名称:用户名
简述:登录时需要输入的用户名称
类型:varchar(10) 数据项名称:密码
简述:登录时需要输入的用户密码
类型:varchar(20)

数据项名称:管理员账号
简述:登录时需要输入的管理员名称
类型:varchar(10) 数据项名称:管理员密码
简述:登录时需要输入的管理员密码
类型:varchar(20)
图3.1.6 - 2数据项(二)
(2)数据结构
数据结构名称:用户
简述:登录系统时的用户的基本信息
数据结构组成:用户名+密码 数据结构名称:管理员
简述:登录系统时的管理员的基本信息
数据结构组成:管理员+密码

数据结构名称:房屋
简述:房屋租赁的房子基本信息
数据结构组成:房屋编号+面积+租金+位置 数据结构名称:租房合同
简述:房屋租赁的租房信息
数据结构组成:用户账号+房屋编号+租期+租金
图3 -4数据结构
(3)数据流
数据流简述:查询房屋信息
数据流来源:房屋信息存储
数据流去向:房屋信息管理模块
数据流组成:房屋编号+面积+租金+位置 数据流简述:添加/删除房屋信息
数据流来源:登录用户请求处理
数据流去向:房屋信息管理模块
数据流组成:房屋编号+面积+租金+位置

数据流简述:查询租赁信息
数据流来源:租赁信息存储
数据流去向:租赁信息管理模块
数据流组成:用户号+房屋编号+租期 数据流简述:添加/删除/修改用户信息
数据流来源:登录用户请求处理
数据流去向:用户信息管理模块
数据流组成:用户账号+密码

数据流简述:登录信息
数据流来源:用户登录请求处理
数据流去向:登录模块
数据流组成:用户名+密码 数据流简述:管理员登录
数据流来源:管理员登录请求处理
数据流去向:登录模块
数据流组成:管理员账号+密码
图3- 5数据流(一)
图3 -7数据流(二)
(4)数据存储
数据存储名:用户信息
简述:存放登录系统时需要的用户的信息
数据存储组成:用户名+密码
关键字:用户名 数据存储名:管理员信息
简述:存放管理员信息
数据存储组成:管理员账号+密码
关键字:管理员账号

数据存储名:房屋信息
简述:存放房屋的信息
数据存储组成:房屋编号+面积+租金+位置
关键字:房屋编号 数据存储名:租赁信息
简述:存放租赁合同的信息
数据存储组成:用户号+房屋号+租金
关键字:用户号
图3 - 8数据存储
(5)处理过程
处理过程名:搜索房屋
输入数据:房屋编号号
输出数据:房屋编号+面积+租金+位置
处理逻辑:按照房屋编号查找房屋信息和与其对应的房屋信息,之后输出数据 处理过程名:修改房屋
输入数据:修改房屋信息
输出数据:修改是否成功的信息
处理逻辑:用户输入要修改的房屋信息,数据库在确认房屋信息是否合法之后给出修改成功或失败的提示
图3 - 9处理过程(一)
处理过程名:添加房屋
输入数据:添加房屋信息
输出数据:添加是否成功的信息
处理逻辑:用户输入要添加的房屋信息,数据库在确认房屋信息是否合法之后给出修添加成功或失败的提示 处理过程名:查询房屋租赁合同
输入数据:申请查询信息
输出数据:查询房屋租赁合同信息
处理逻辑:按照用户编号的递增顺序输出存储的租赁合同信息

处理过程名:用户登录
输入数据:用户名+密码
输出数据:登录是否成功的信息
处理逻辑:先检测用户名是否存在,若不存在则提示“用户名不存在”,若用户名存在则核对其对应密码是否正确,正确则显示登录成功,跳转系统主页,否则提示登录失败 处理过程名:管理员登录
输入数据:管理员账号+密码
输出数据:登录是否成功的信息
处理逻辑:先检测管理员账号是否存在,若不存在则提示“管理员不存在”,若管理员存在则核对其对应密码是否正确,正确则显示登录成功,跳转系统主页,否则提示登录失败

处理过程名:用户注册
输入数据:用户名+密码
输出数据:注册是否成功的信息
处理逻辑:用户输入要注册的用户名+密码,数据库在确认班级信息是否合法之后给出注册成功或失败的提示 处理过程名:房屋租赁
输入数据:需要租赁房屋编号
输出数据:租赁是否成功的信息
处理逻辑:用户输入要租赁的房屋编号,数据库在确认房屋编号号是否存在之后给出租赁成功或失败的提示
图3 -10处理过程(二)
3.2系统设计
3.2.1概念设计
(1)局部ER图

图3 - 11用户信息表ER图
(2)全局ER图

图3 -12全局E-R图
3.2.2逻辑设计
以下为本系统数据库的数据关系模型,带下划线的属性为主码。
login(管理员账号名,密码)
House(房屋号,面积,租金,位置)
Hetong(房屋号,用户号,租期,租金)
User(用户号,用户密码)
其中login对应管理员基本关系,house对应学生基本关系,hetong对应合同基本关系,user对应用户基本关系。
3.2.3数据库设计
(1) 表3 - 1房屋信息表
字段名 数据类型 约束 是否可为空 备注
房屋号 char(10) 主键 否 房屋的编号
面积 float 否 房屋的面积
租金 float 否 房屋的租金
位置 Varchar(10) 否 房屋所在的位置

表3 - 2租赁合同信息表
字段名 数据类型 约束 是否可为空 备注
用户账户 char(20) 主键 否 用户的编号
房屋号 char(20) 主键 否 房屋的编号
租期 char(20) 否 房屋租赁的租期

表3 - 3管理信息表
字段名 数据类型 约束 是否可为空 备注
管理员账户 varchar(10) 复合主键;外键 否 管理员账号
管理员密码 varchar(20) 复合主键;外键 否 管理员密码

表3 - 4用户信息表
字段名 数据类型 约束 是否可为空 备注
用户账户 varchar(10) 复合主键;外键 否 用户账号
用户密码 varchar(20) 复合主键;外键 否 用户密码

3.2.4系统环境
操作系统:Windows 10
开发语言:java
开发平台:eclipse
3.3系统实现
3.3.1开发目标
随着租赁房屋的数量的增加,对于房屋租赁的管理也越来越困难了,除了传统的纸质信息管理,现在最常用的就是通过计算机进行电子化的信息管理,这样不仅仅大大减少了房屋租赁管理人员的负担,而且还提高了信息的安全程度。综上,我们需要设计一款房屋租赁管理系统来帮助房屋租赁公司更好地来完成房屋租赁管理工作,从而减轻理人员的负担,并使得房屋租赁的管理更加规范化和系统化。
3.3.2系统需求
(1)登录需求
打开系统时显示登陆界面,只有输入正确的用户名和对应的密码方能成功登录,输入用户名或密码错误时会有对应的提示信息出现。
(2)用户注册需求
用户可以注册新用户,输入用户名、密码,完成注册,系统会根据输入的用户名和密码字段是否合法,会对应的提示信息出现,即注册成功、注册失败。
(3)房屋信息管理需求
可以查询房屋的信息,包括房屋的房屋编号、面积、租金、位置,可以添加新的房屋信息,并且添加信息后要保证房屋编号为房屋信息的唯一标识;可以在输入房屋编号后删除对应的房屋信息;可以在输入房屋编号后显示对应房屋的信息;对于输入错误的情况可以进行提示,并且操作成功后也可以进行提示。
(4)租赁合同信息管理需求
可以查询租赁合同的信息,包括租赁的房屋编号号、租金和租期类型信息;对于输入错误的情况可以进行提示,并且操作成功后也可以进行提示。
3.3.3系统功能结构

图3 - 21系统功能结构图
3.3.4系统功能实现
(1)登录功能

图3 - 22登录功能流程图
关键代码:user_name = var_user_name.get()
user_password = var_user_password.get()
sql1 = “select * from login where 用户名 = ‘%s’;” % (user_name)
mycursor.execute(sql1)
row = mycursor.fetchone()
(2)房屋信息管理功能

图3 - 23房屋信息管理功能流程图
关键代码:
public static void insert(HouseR g)
{
try {
Connection conn=DAO.getConn();
PreparedStatement ps=conn.prepareStatement(“insert into 房产表(房屋号,面积,租金,位置)values(?,?,?,?,?,?,?,?,?)”);
ps.setString(1, g.gethousebianhao());
ps.setDouble(2, g.gethousemianji());
ps.setDouble(3, g.gethouseprice());
ps.setString(4, g.gethouseAddess());
int f=ps.executeUpdate();
if(f>0)
{ JOptionPane.showMessageDialog(null, “成功插入数据”); }
else
{ JOptionPane.showMessageDialog(null, “没有成功插入数据”); }
ps.close();
conn.close();
} catch (Exception e) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, “注意需要不能重复”);
}
}
public static void update(HouseR g)
{
try {
Connection conn=DAO.getConn();
PreparedStatement ps=conn.prepareStatement(“update 房产表 set 房屋号=?,面积=?,租金=?,位置=?”);
ps.setString(1, g.gethousebianhao());
ps.setDouble(2, g.gethousemianji());
ps.setDouble(3, g.gethouseprice());
ps.setString(4, g.gethouseAddess());
int f=ps.executeUpdate();
System.out.println(f);
if(f>0)
{
JOptionPane.showMessageDialog(null, “成功更新数据”);
}
else
{
JOptionPane.showMessageDialog(null, “没有完美的更新数据”);
}
ps.close();
conn.close();
} catch (Exception e) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, “没有成功更新数据”);
}
}
public static void update(int sale,int sid)
{
try {
Connection con=DAO.getConn();
PreparedStatement ps=con.prepareStatement(“update 房产表 set save=save-? where sid=?”);
ps.setInt(1, sale);
ps.setInt(2, sid);
int f=ps.executeUpdate();
System.out.println(f);
if(f>0)
{
JOptionPane.showMessageDialog(null, “成功更新数据”);
}
else
{
JOptionPane.showMessageDialog(null, “没有完美的更新数据”);
}
ps.close();
con.close();
} catch (Exception e) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, “没有成功更新数据”);
}
}
public static void delete(String housebianhao)
{
try {
Connection conn=DAO.getConn();
PreparedStatement ps=conn.prepareStatement(“delete from 房产表 where 房屋号=?”);
ps.setString(1,housebianhao);
int f=ps.executeUpdate();
if(f>0)
{
JOptionPane.showMessageDialog(null, “成功删除数据”);
}
else
{
JOptionPane.showMessageDialog(null, “没有删除数据”);
}
ps.close();
conn.close();
} catch (Exception e) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, “连接失败”);
}
}
(3)用户注册功能
关键代码:
public class zhuce {
public static void main(String[] args)
{

  try {
	  ConnDB c=new ConnDB();
	  ResultSet rs=c.getResult("select * from 用户");
	  while(rs.next()){
      System.out.println(rs.getString("用户账号")+
      rs.getString("用户密码"));
	  }
  } catch (SQLException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  }
  ConnDB b=new ConnDB();
  boolean flag=b.executeSql("insert into 用户 "+"values('zz','4444',50)");
  if(flag)
  {
   System.out.println("添加成功");
  }else
  {
   System.out.println("添加失败");
  }
  
 }

}
3.3.5主要优点
操作简便,易于上手;
无需指导,自带提示;
基本操作功能较为齐全。
3.3.6需要改进
在时间足够的情况下,本系统的功能应该可以更加齐全,特别是在查看和搜索方面应该更加灵活;
本系统的界面设计还有待完善;
本系统应该考虑到更多人性化的操作设计。

  • 29
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值