对于一个房屋出租的实现,首先要有一个整体的架构,分析用户的需求,将房屋看成一个类,其属性有,房主,电话,地址,月供,状态等等。而其行为有,房屋列表,新添房屋,删除房屋,查找房屋,修改房屋等等。
1.首先完成属性类的定义,并将其封装, 提供构造器和setter和getter方法
package use;
public class house_domain {
private int id;
private String name;
private String phone;
private String address;
private int rent; //月租
private String state; //状态
public house_domain(int id, String name, String phone, String address, int rent, String state) {
this.id = id;
this.name = name;
this.phone = phone;
this.address = address;
this.rent = rent;
this.state = state;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getRent() {
return rent;
}
public void setRent(int rent) {
this.rent = rent;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
@Override
public String toString() {
return id +
"\t" + name +
"\t" + phone +
"\t\t" + address +
"\t" + rent +
"\t" + state ;
}
}
2.然后就是行为(功能)的实现,也是重点,这里功能大致分为两类:一个是界面的显示,另外一个就是对属性的操作(crud),这里用数组来实现对属性的保存,以后可以用到数据库连接,基本思路就是,先实现各各功能的显示然后调用方法实现操作
1.完成 主菜单的显示 和 退出功能
public void housewindow(){
do {
//界面初始化
System.out.println("\n-----------房屋出租系统-------------");
System.out.println("\t\t\t1.新增房源");
System.out.println("\t\t\t2.查找房屋");
System.out.println("\t\t\t3.删除房屋");
System.out.println("\t\t\t4.修改房屋信息");
System.out.println("\t\t\t5.房屋列表");
System.out.println("\t\t\t6.退出");
System.out.println("请输入你选择的操作(1~6):");
int value = print.nextInt();
switch (value){
case 1:
insertHouse();
break;
case 2:
findHouse();
break;
case 3:
outHouse();
break;
case 4:
updateHouse();
break;
case 5:
showHouse();
break;
case 6:
quitHouse();
break;
default:
System.out.println("输入有误,请重新输入(1~6)");
break;
}
}while (key);
}
上述代码,通过do-while无限循环来实现房屋出租系统的使用,并通过key来进行退出,这里的key默认为true,当选择退出时(6),调用quitHouse()方法使key为false后则退出,下面是退出方法的实现
//房屋退出
public void quitHouse(){
System.out.println("确定要退出吗?(y/n)");
char value = print.next().charAt(0);
if(value == 'Y' ||value == 'y'){
key = false; //如果输入Y/y则退出系统
System.out.println("房屋出租系统成功退出!");
}
2.在完成出租系统整体的架构后接下来就是里面的功能实现,先完成功能的界面显示
Scanner print = new Scanner(System.in);
houseshuzu houseshuzu = new houseshuzu(10); //对象数组
boolean key=true; //退出系统判断
//新增房源
public void insertHouse(){
System.out.println("------------新增房源-------------");
System.out.println("姓名:");
String name = print.next();
System.out.println("电话");
String phone = print.next();
System.out.println("地址");
String address = print.next();
System.out.println("月租");
int rent = print.nextInt();
System.out.println("状态");
String state = print.next();
//创建house对象来接收这些值
house_domain house = new house_domain(0,name,phone,address,rent,state);
if (houseshuzu.addhouse(house)) {
System.out.println("-------------添加完成-------------");
}else {
System.out.println("------------房源添加失败-----------");
}
}
//查找房源
public void findHouse(){
System.out.println("---------------查找房屋--------------");
System.out.println("请输入你要查找的id");
int id = print.nextInt();
house_domain house =houseshuzu.findhouse(id);
if (house!=null){
System.out.println("--------------查找成功-------------");
System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(已出租/未出租)");
System.out.println(house);
}else {
System.out.println("-----------未找到此房源-----------");
}
}
//删除房屋
public void outHouse() {
System.out.println("-------------删除房屋------------");
System.out.println("请选择你要删除的编号:");
int id = print.nextInt();
System.out.println("确定要删除吗?(y/n)");
char value = print.next().charAt(0);
if (value == 'N' || value == 'n') {
return; //误点则跳出该方法
}
if (houseshuzu.delId(id)) {
System.out.println("------------删除成功----------");
} else {
System.out.println("------------删除失败------------");
}
}
//修改信息
public void updateHouse(){
System.out.println("--------------修改房屋------------");
System.out.println("请输入你要修改的房源:(-1退出)");
int updateid = print.nextInt();
if (updateid==-1){
System.out.println("---------退出---------");
return;
}
//查找对象
house_domain house = houseshuzu.findhouse(updateid);
if (house==null){
System.out.println("修改的房源不存在");
return;
}
System.out.println("姓名("+house.getName()+")");
String name = print.next();
house.setName(name);
System.out.println("电话("+house.getPhone()+")");
String phone = print.next();
house.setPhone(phone);
System.out.println("地址("+house.getAddress()+")");
String address = print.next();
house.setAddress(address);
System.out.println("月供("+house.getRent()+")");
int rent = print.nextInt();
house.setRent(rent);
System.out.println("状态("+house.getState()+")");
String state = print.next();
house.setState(state);
System.out.println("-------------修改房屋信息成功-------------");
}
//房屋列表
public void showHouse(){
System.out.println("-----------------------房屋列表----------------------");
System.out.println("编号\t\t房主\t\t电话\t\t地址\t\t月租\t\t状态(已出租/未出租)");
house_domain[] house = houseshuzu.list(); //返回数组的信息
for (int i = 0; i <house.length ; i++) {
if(house[i]==null) {
break;
}
System.out.println(house[i]);
}
System.out.println("房屋列表显示完毕!");
}
3.功能界面完成后,会调用另一个类,并完成对数据的具体操作,这个类为数组类,指向属性类
package use;
public class houseshuzu {
private house_domain[] house ; //保存数组对象 来自类图的类
private int houseNum; //定义房源长度
private int idcounter; //定义自增
public houseshuzu(int size){
house = new house_domain[size]; //创建数组对象并通过构造器指定大小
}
//list方法用来返回house数组
public house_domain[] list(){
return house;
}
//添加房源
public boolean addhouse(house_domain newhouse){
//判断是否能添加房源
if(houseNum == house.length){
System.out.println("房子已满不能添加");
return false;
}
//把新房源插入到数组最后
house[houseNum++] = newhouse;
//定义id自增
newhouse.setId(++idcounter);
return true;
}
//删除房源
public boolean delId(int delid){
int index = -1; //定义索引
//先找到要删除的房源的数组下标
for (int i = 0; i <houseNum; i++) {
if (delid==house[i].getId()){
index=i;
}
}if (index==-1){
return false;
}
//在找到位置后进行真删除
for (int i = index; i < houseNum-1; i++) {
house[i] = house[i+1]; //从后向前依次覆盖直到房源最后一个
}
house[houseNum-1]=null; //此时最后一个房源为空,不是数组最后一个
houseNum--; //房源长度在减1
return true;
}
public house_domain findhouse(int findid){
for (int i = 0; i < houseNum; i++) {
if (findid == house[i].getId()) {
return house[i];
}
}
return null;
}
}
最后写test方法调用即可
package use;
public class Test {
public static void main(String[] args) {
new house().housewindow();
}
}
//程序设计思路
//1.先写框架图,包括类图,工具包,功能图,数据层等
//2.然后就是代码实现,先把菜单界面和退出功能写好
//3.过来就是写一个保存数据的类以后可能是数据库
//4.最后就是写具体功能的实现