Java 复习类与对象+二维数组+酒店管理系统(代码)

复习:
1.类和对象

类:所有同对种象共同拥有属性和行为,抽象出来成为类
	属性:成员变量
	行为:成员方法
对象:符合类的特征的(实例化)独立个体
	Studnet stu = new Student();
		stu.name = 小明
	Studnet st1 = new Student();
		stu1.name = 小明
构造方法:
	无参/有参
	void - 没有返回值
	没有返回值类型	
this:当前对象
	可以调用成员变量 和成员方法
		this.name = name
		sleep()
	this() - 只能放在第一行
	this(参数)

成员变量 和 局部变量的区别
	1)个数 
		成员变量 - 对象决定
		局部变量 - 声明个数
		int a
		int b
	2)初始化
	3)位置
	4)JVM内存中
		方法栈:局部变量/临时变量 - 
		堆:引用类型的真正数据 - 成员变量
		方法区: 类相关的信息

引用类型的数组 -

步骤:
	1.给数组初始化
	2.给数组元素初始化

二维数组


俄罗斯方块分析:
cells[0] = new Cell(0,3)
cells[1] = new Cell(0,4)

row = 0
col = 0
i = cells[0] 画-
i = cells[1] 画-
i = cells[2] 画-
i = cells[3] 画-

row = 0
col = 1
i = cells[0] 画-
i = cells[1] 画-
i = cells[2] 画-
i = cells[3] 画-

row = 0
col = 2
i = cells[0] 画-
i = cells[1] 画-
i = cells[2] 画-
i = cells[3] 画-

row = 0
col = 3
i = cells[0] 画*
i = cells[1] 画-
i = cells[2] 画-
i = cells[3] 画-

row = 0
col = 4
i = cells[0] 画-
i = cells[1] 画*
i = cells[2] 画-
i = cells[3] 画-

row = 0
col = 5
i = cells[0] 画-
i = cells[1] 画-
i = cells[2] 画*
i = cells[3] 画-


控制台版 - 酒店管理系统

界面:

欢迎进入指针信息大酒店
酒店架构 - 有5层楼,每层楼有5个房间(二维数组)
1.办理入住   
	房间号 + 名字
	判断房间是否有人,如果有人就提示
2.办理退房
	房间号
	房间本来可能就是没住人,就不需要退房
	让客户 = null
	
3.查房

1001 1002 1003 1004 1005
null null null null null
2001 2002 2003 2004 2005
null null lucy null null
3001 3002 3003 3004 3005
null null null null null
4001 4002 4003 4004 4005
null null null null null
5001 5002 5003 5004 5005
null null null null null

4.退出程序
	按0退出程序 - 退出死循环 - break;

______________________________________-
设计类

写java代码的步骤:
先有类,才能创建类的对象

分析业务:
提取对象: 1个酒店 n个房间 n个客户
根据业务需求提取出需要的对象 -> 把提取出来的对象封装成类 -> 写java代码
写java代码的步骤:
先有类,才能创建类的对象

提取对象: 1个酒店 n个房间 n个客户

对象对应的类:
	酒店类:
		成员变量
			房间
		成员方法
			入住/退房/查房

	成员变量和成员方法都写好后,接下来就要考虑是否要添加有参构造器

	房间类:
		成员变量
			房间号
			客户名
		成员方法
	客户类:
		成员变量
			名字
			身份证
		成员方法

二维数组内存图
在这里插入图片描述
酒店管理代码:
Guest:

package hotel;
/*
    客户类
 */
public class Guest {
    //成员变量
    String name;
    int id;
    //无参构造器
    Guest(){

    }

    //有参构造器 - 新来酒店的客户需不需要有名字/需不需要id
    Guest(String name){
        this.name = name;
    }

    //成员方法
}

Room:

package hotel;
/*
    房间类
 */
public class Room {
    //成员变量
    int num;
    //客户
    Guest guest;
    //无参构造器 - 初始化成员变量
    Room(){

    }
    //有参构造器 - 问创建出来的房间需不需要有房间号
    Room(int num){
        this.num = num;
    }


    //成员方法
}

Hotel:

package hotel;
/*
    酒店类
 */
public class Hotel {
    //成员变量
    //房间 - 二维数组, 有5层,每层5个房间 - null
    Room[][] rooms = new Room[5][5];

    //
    Hotel(){
        //i表示 有多少层
        for (int i = 0; i < rooms.length; i++) {
            //j 表示 i 层中有多少个房间
            // 1001 ->
            for (int j = 0; j < rooms[i].length; j++) {
                //房间号
                int roomNum = (i + 1) * 1000 + j + 1;
                rooms[i][j] = new Room(roomNum);
                //System.out.print(rooms[i][j].num);
            }
        }
    }

    //成员方法
    //入住 - in
    void in(int roomNum, String name){
        //得到 i层
        int i = roomNum / 1000 - 1;
        //得到 j层
        int j = roomNum % 1000 - 1;
        if(rooms[i][j].guest == null){
            // 2002
            rooms[i][j].guest = new Guest(name);
            System.out.println(name + "入住" + roomNum);
        }else{
            System.out.println("此房间已住人");
        }

    }

    //退房
    void out(int roomNum){
        int i = roomNum / 1000 -1;
        int j = roomNum % 1000 -1;
        if(rooms[i][j].guest != null){
            rooms[i][j].guest = null;
        }else{
            System.out.println("此房间已空");
        }
    }
    //查房  \t -> tab键盘
    void show(){
        //查看 有i层
        for (int i = 0; i < rooms.length; i++) {
            //查看 第 i层 的第j个房间减
            for (int j = 0; j < rooms[i].length; j++) {
                System.out.print(rooms[i][j].num + "\t");
            }
            System.out.println();
            for (int j = 0; j < rooms[i].length; j++) {
                if(rooms[i][j].guest != null){
                    System.out.print(rooms[i][j].guest.name + "\t");
                }else{
                    System.out.print(rooms[i][j].guest + "\t");
                }
            }
            System.out.println();
        }
    }
}

Main:

package hotel;

import java.util.Scanner;

/*
    普通类 - 放主方法
 */
public class Main {
    public static void main(String[] args) {
        //创建酒店类的对象
        Hotel hotel = new Hotel();
        Scanner console = new Scanner(System.in);
        /*hotel.in(2002,"张三");
        hotel.out(2002);
        hotel.in(2002,"sili");
        hotel.show();*/

        while (true) {
            //获取需要的指令
            System.out.println("请输入指令:show查看,in入住,out退房,exit退出程序");
            String command = console.next();

            switch (command) {
                case "in":
                    System.out.println("请输入房间号:");
                    int roomNum = console.nextInt();
                    System.out.println("请输入入住的客户名:");
                    String name = console.next();
                    hotel.in(roomNum, name);
                    break;
                case "out":
                    System.out.println("请输入要退房的房间号:");
                    int roomNum1 = console.nextInt();
                    hotel.out(roomNum1);
                    break;
                case "show":
                    hotel.show();
                    break;
                case "exit":
                    //System.exit(0);//强制退出程序
                    //break loop;
                    return;
                default:
                    System.out.println("输入指令有误,请重新输入");
            }

        }

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值