java实现简单控制台出租房屋管理系统

源代码及数据库获取链接:
https://download.csdn.net/download/qq_45968259/12544000

系统结构

在这里插入图片描述

系统功能分析

出租房屋信息管理系统要求具有一定的可靠性、实用性,其主要功能模块包括:
(1)出租人信息管理模块;
(2)承租人信息管理模块;
(3)房屋信息管理模块;
(4)多线程读取文件中的信息模块;(
(5)退出系统模块;
出租房屋信息管理系统的前三个功能模块都包含: 查询、修改、删除、添加四个功能。
本系统的登录人员为系统管理员:管理员可以进行出租人信息,承租人信息,房屋信息的查询、录入、修改及删除等操作,也可以使用多线程读取不同文件中的信息。系统通过数据库的存储、数据查询等功能分为以下模块:
1.出租人信息管理模块
出租人信息管理模块主要用于用户管理出租人的基本信息,包括出租人编号、姓名、性别、联系电话和房屋编号,能对出租人信息进行查询、添加、删除和修改等操作。
2.承租人信息管理模块
承租人信息模块主要用于管理承租人信息,包括承租人编号、姓名、性别、联系方式、出租人编号、房屋编号和入住日期等,能对承租人信息进行查询、添加、删除和修改等操作。
3.房屋信息管理模块
房屋信息管理模块主要用于管理房屋信息,包括房屋编号、地址、月租、面积、房屋类型,能对房屋信息进行查询、添加、删除和修改等操作。
4.多线程读取文件中的信息模块。
多线程读取文件中的信息模块主要用于同时对不同的文件进行读取,显示进程交互读出的数据。
5.退出系统模块
退出系统模块主要实现的是退出系统的功能。

系统的类设计

该系统共设计了4个类。
1.出租人类
(1)成员变量
private String renterID;//出租人编号
private String renterName;//姓名
private String renterSex; //性别
private String renterContact; //联系方式
private String renteraddress;//家庭住址
(2)成员函数
public String toString()//返回出租人信息
public renter(String ID, String Name, String Sex, String Contact,String adderss)//带参的构造函数
public renter()//无参的构造函数
public void copy(ArrayList list)//备份表中的数据
public ArrayList returnlist()//将表中数据读入放到Arraylist中
public void write(ArrayList list)//将更改后的Arraylist写到表中
public void handleNotNumberException(String x)//不是纯数字异常处理
public void handleAlreadyexistsException1(String contact)//联系方式重复异常处理
public void handleAlreadyexistsException2(String address)//家庭住址重复异常处理
public void showALLrenter()//查询全部出租人信息
public void searchbyID()//按编号查询指定出租人信息
public void addrenter1()//在表的末尾添加出租人信息
public void addrenter2()//在表的指定位置添加出租人信息
public void updaterenter1()//修改指定出租人的联系方式
public void updaterenter2();//修改指定出租人的家庭住址
public void deleterenter();//删除指定出租人信息
public void deleteAllrenter();//删除全部出租人信息
2.承租人类
(1)成员变量
private String tenantID; //承租人编号
private String tennatName; //姓名
private String tenantSex;//性别
private String tenantContact;//联系方式
private String renterID;//出租人编号
private String roomID;//房屋编号
private String indate;//入住日期
(2)成员函数
public String toString()//放回承租人信息
public tenant(String ID, String Name, String Sex,String tenantContact, String renterID,String RoomID,String indate)//带参构造函数
public tenant() //无参的构造函数
public void copy(ArrayList list)//备份表中信息
public ArrayList returnlist()//读取表中信息并放入Arraylist中
public void write(ArrayList list)//将更改后的信息写入到表中
public void handleAlreadyexistsException2(String roomID)//处理房屋编号已存在异常
public void handleAlreadyexistsException3(String contact)//处理联系方式已存在异常
public void handleNotNumberException(String x)//处理不是纯数字异常
public void handleNotExitsException1(String renterID)处理出租人编号不存在异常
public void handleNotExitsException2(String roomID)//处理房屋编号不存在异常
public void handleNotMatchException(String roomID, String renterID)//处理出租人编号和房屋编号不匹配异常
public void showALLtenant()//查询全部承租人信息
public void searchbyname()//按编号查询指定承租人信息
public void addtenant1()//在表的末尾添加承租人信息
public void addtenant2()//在表的指定位置添加承租人信息
public void updaterenter1()//修改指定承租人的联系方式
public void updaterenter2()//修改指定承租人的家庭住址
public void deletetenant()//删除指定承租人信息
public void deleteAlltenant();//删除全部承租人信息
public void deletetenantbyrenterID(String renterID)//按出租人编号删除指定承租人信息
public void deletetenantbyroomID(String roomID)//按房屋编号删除指定承租人信息
3.房屋类
(1)成员变量
private String roomID;//房屋编号
private String roomAddress;//地址
private String roomPrice;//房租
private String roomSize;//房屋大小
private String roomType;//房屋类型
private String renterID;//出租人编号
(3)成员函数
public String toString()//返回房屋信息
public room(String ID, String Address, String Price,String Size,String Type,String renterID)//带参的构造函数
public room() //无参的构造函数
public void copy(ArrayList list)//备份表中数据
public ArrayList returnlist()//读取表中数据放入Arraylist中
public void write(ArrayList list)//将更改后的数据写入到表中
public void showALLroom()//查询全部房屋信息
public void searchbyadress()//按编号查询指定房屋信息
public void addroom1()//在表的末尾添加房屋信息
public void addroom2()//在表的指定位置添加房屋信息
public void updateroom1()//修改指定房屋的月租
public void updateroom2()//修改指定房屋的房屋类型
public void deleteroom()//删除指定房屋信息
public void deleteAllroom();//删除全部房屋信息
public void deleteroombyrenterID(String renterID)//按出租人编号删除指定房屋信息
租人信息
4.系统UI界面类
(1)成员变量

(4)成员函数
public void showmenu1()//显示系统主菜单界面
public void showrenterMenu()//显示出租人信息管理字菜单界面
public void showroomMenu()/显示房屋信息管理字菜单界面
public void showtenantMenu()/显示承租人信息管理字菜单界面

系统功能实现

1.查询全部出租人信息
功能介绍:通过将已经存到Arraylist中的每一个renter类对象(相当于表中的一行)取出并调用它们的toString方法打印每一个对象的信息来是实现查询全部出租人信息的功能。
public void showALLrenter(){…}

2.按编号查询指定出租人信息
功能介绍:通过for循坏遍历已经存到Arraylist中的每一个renter对象(相当于表中的一行)并用if条件绝判断是否存在与输入的编号相同的数据对象,如果有则取出该对象并调用它的toString方法打印相应的信息,如果没有则输出“该出租人不存在”。
public void searchbyID() {…}

3.在表的末尾添加出租人信息
功能介绍:通过Scanner获取用户输入的数据,利用自定义异常检查数据正确,如果正确则则使用带参的构造函数创建一个renter类对象,添加之前先调用copy()方法备份表中数据,然后使用for循环加if语句判断是否存在重复编号的出租人,如果不存在则调用add方法将对象添加到Arraylist中,然后再将整个Arraylist写入到文件。
public void addrenter1()

4.在表的指定位置添加出租人信息
功能介绍:通过Scanner获取用户输入的数据,利用自定义异常检查数据正确,如果正确则则使用带参的构造函数创建一个renter类对象,添加之前先调用copy()方法备份表中数据,然后使用for循环加if语句判断是否存在重复编号的出租人,如果不存在则调用add(index, element)方法将对象添加到Arraylist中定位置,然后再将整个Arraylist写入到文件。
public void addrenter2(){…}

5.修改指定出租人的联系方式
功能介绍:通过Scanner获取用户输入的出租人编号和新的联系方式,利用自定义异常检查数据正确,修改之前先调用copy()方法备份表中数据,然后使用for循环加if语句在Arrarylist中找到与输入数据匹配的对象,如果存在则调用set方法修改联系方式,如果不存在则输出“没有该出租人”,然后再将整个Arraylist写入到文件。
public void updaterenter1(){…}

6.修改指定出租人的家庭住址
功能介绍:通过Scanner获取用户输入的出租人编号和新的家庭住址,利用自定义异常检查数据正确,修改之前先调用copy()方法备份表中数据,然后使用for循环加if语句在Arrarylist中找到与输入出租人匹配的对象,如果存在则调用set方法修改家庭住址,如果不存在则输出“没有该出租人”,然后再将整个Arraylist写入到文件。
public void updaterenter2(){…}
7.删除指定出租人信息
功能介绍:通过Scanner获取用户输入的出租人编号,删除之前先调用copy()方法备份表中数据,然后使用for循环加if语句在Arrarylist中找到与输入出租人匹配的对象,如果存在则调用remove()删除该对象同时创建房屋类对象和承租人对象并调用renter类deletetenantbyrenterID(String renterID)方法和room类的deleteroombyrenterID方法级联删除与该出租人对应的房屋信息和承租人信息,如果不存在则输出“没有该出租人”,然后再将整个Arraylist写入到文件。
public void deleterenter(){…}
8.删除全部出租人信息
功能介绍:通过Scanner获取用户输入的出租人编号,删除之前先调用copy()方法备份表中数据,然后使用for循环加if语句在Arrarylist中找到与输入出租人匹配的对象,如果存在则调用remove()删除该对象同时创建房屋类对象和承租人对象并调用renter类deletetenantbyrenterID(String renterID)方法和room类的deleteroombyrenterID方法级联删除与该出租人对应的房屋信息和承租人信息,然后将整个Arraylist写入到文件,如果不存在则输出“没有该出租人”。
public void deleteAllrenter(){…}
注:承租人信息管理功能模块和房屋信息管理模块的功能与出租人模块功能大同小异,详情请看程序代码。

9.多线程读取各表中数据
功能介绍:创建线程renterinfo继承Thread类用于打印出租人信息,创建线程roominfo继承Thread类用于打印房屋信息,创建线程tennantinfo实现Runnable接口用于打印承租人信息,然后创建renterinfo和roominfo对象并调用start()方法开启线程,创建tennantinfo对象并将对象转为Thread类对象调用start()方法,三个线程同时对不同的文件进行读取,在控制台显示进程交互读出的数据。

10.退出系统
System.out.println(“-----欢迎下次使用!------”);
System.exit(0);

系统测试

3.1 主界面
主界面包含5个大功能,分别是管理出租人信息,管理承租人信息,管理房屋信息,多线程读取表中数据,退出系统。图3-1为运行程序主界面,以简洁为主。在请选择上选择你要进行的项目。
在这里插入图片描述

                                        图3-1系统主界面

3.2 管理出租人信息子界面
1.管理出租人信息子界面
在主界面输入1即可进入该界面,该界面主要用于管理出租人信息,界面包含九个功能,分别是1.查询所有出租人信息2.根据编号查询出租人信息3.在末尾添加出租人信息4.在指定位置添加出租人信息5.修改指定出租人联系方式6.修改指定出租人家庭住址7.删除指定出租人信息8.删除全部出租人信息9.返回上一级菜单,输入对应数字即可选择对应功能。如图3-2所示。
在这里插入图片描述

                                    图3-2 管理房屋信息子界面

3.3 管理房屋信息子界面
1.管理房屋信息子界面
在主界面输入2即可进入该界面,该界面主要用于管理房屋信息,界面包含九个功能,分别是1.查询所有房屋信息2.根据地址查询房屋信息3.在末尾添加房屋信息4.在指定位置添加房屋信息5.修改指定房屋月租6.修改指定房屋类型7.删除指定房屋信息8.删除全部房屋信息9.返回上一级菜单,输入对应数字即可选择对应功能。如图3-2所示。
在这里插入图片描述

                                图3-3 管理出租人信息子界面

3.4 管理承租人信息子界面
1.管理承租人信息子界面
在主界面输入3即可进入该界面,该界面主要用于管理房屋信息,界面包含九个功能,分别是1.查询所有承租人信息2.根据编号查询承租人信息3.在末尾添加承租人信息4.在指定位置添加承租人信息5.修改承租人联系方式6.修改承租人房屋编号和出租人编号7.删除指定承租人信息8.删除全部承租人信息9.返回上一级菜单,输入对应数字即可选择对应功能。如图3-2所示。
在这里插入图片描述

                                   图3-4 管理承租人信息子界面

3.5 出租人信息管理
1.查询全部出租人信息
管理员在出租人信息管理界面输入1即可查询到全部出租人信息。查询出租人信息界面如图3-5-1所示。
在这里插入图片描述

                                   图3-5-1 查询全部出租人信息界面

2.根据编号查询出租人信息
管理员在出租人信息管理界面输入2再根据提示输入要查找的出租人的编号即可查询到指定的出租人信息。根据编号查询出租人信息界面如图3-5-2所示。
在这里插入图片描述

                                    图3-5-2 根据编号查询出租人信息界面

3.在末尾添加出租人信息
管理员在出租人信息管理界面输入3再根据提示信息输入要添加的出租人的各项信息,数据之间以空格隔开然后回车确定即可将出租人信息添加到表中,系统提示出租人信息添加成功。在末尾添加出租人信息界面如图3-5-3所示。
在这里插入图片描述

                                       图3-5-3 在末尾添加出租人信息界面

4.在指定位置添加出租人信息
管理员在出租人信息管理界面输入3再根据提示信息输入要添加的出租人的各项信息并在最后输入要在表中插入的位置,数据之间以空格隔开然后回车确定即可将出租人信息添加到表中指定的位置,系统提示出租人信息添加成功。。在指定位置添加出租人信息界面如图3-5-4所示。
在这里插入图片描述

                                       图3-5-4 在指定位置添加出租人信息界面

5.修改指定出租人联系方式
如果某出租人的联系方式改变了可以提供编号给管理员,管理通过编号找到该出租人并修改该出租人的联系方式,修改后系统提示修改成功并显示修改后的该出租人的信息。修改指定出租人联系方式界面如图3-5-5所示。

在这里插入图片描述

                                        图3-5-5修改指定出租人联系方式界面

6.修改指定出租人家庭住址
如果某出租人的家庭住址改变了可以提供编号和新的家庭住址给管理员,管理通过编号找到该出租人并修改该出租人的家庭住址,修改后系统提示修改成功并显示修改后的该出租人的信息。修改指定出租人家庭住址界面如图3-7所示。

在这里插入图片描述

                                    图3-5-6修改指定出租人家庭住址界面

7.删除指定出租人信息
如果某出租人的房屋不再出租,管理员可以通过编号将该出租人删除,删除出租人信息的同时也会级联删除与之对应的所有房屋信息和承租人信息。删除过程中会弹出对话框(如图3-5-7-2)询问是否确认删除,选择“是”即可删除出租人信息,选择“否”则取消删除操作。删除指定出租人信息界面如图3-5-7-1所示。
在这里插入图片描述

                                       图3-5-7-1删除指定出租人信息界面

在这里插入图片描述

                                           图3-5-7-2 删除提示对话框界面

8.删除全部出租人信息
9.管理员可以删除全部出租人,删除全部出租人信息的同时也可以级联删除与之对应的所有房屋信息和承租人信息。删除过程中会多次弹出对话框(如图3-5-8-2,图3-5-8-3,图3-5-8-4所示)询问是否确认删除,选择“是”即可删除全部信息,选择“否”则取消删除操作。修改删除全部出租人信息界面如图3-5-8-1所示。
在这里插入图片描述

                                  图3-5-8-1删除全部出租人界面

图3-5-8-2删除提示对话框界面
在这里插入图片描述

                                                图3-5-8-3删除提示对话框界面

在这里插入图片描述

                                              图3-5-8-4删除提示对话框界面

3.6 房屋信息管理
与出租人信息管理模块类似,详情请看程序代码;
3.7 出租人信息管理
与出租人信息管理模块类似,详情请看程序代码;

3.8 多线程读取各表中信息
管理员在出租人信息管理界面输入4即使用多线程读取各表中信息功能,系统同时对不同的文件进行读取,在控制台显示进程交互读出的数据。多线程读取各表中信息如图3-8所示。
在这里插入图片描述
= 3.9 退出系统
管理员如果不想使用系统可以在主界面输入5退出系统。退出系统界面如图3-9所示。
在这里插入图片描述

                                     图3-9退出系统界面
  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LongTermism

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值