java酒店管理系统模拟

题目要求

在这里插入图片描述

首先将房间对象程序写出

package hoteltest;
//房间对象
public class Room {
	int roomnum;
	String type;
	boolean statu;
	
	
	public Room() {
		super();
	}


	public Room(int roomnum) {
		super();
		this.roomnum = roomnum;
	}


	public Room(int roomnum, String type) {
		super();
		this.roomnum = roomnum;
		this.type = type;
	}


	public Room(int roomnum, String type, boolean statu) {
		super();
		this.roomnum = roomnum;
		this.type = type;
		this.statu = statu;
	}


	@Override
	public String toString() {
		return "房间号" + roomnum + ", 房间类型" + type + ", 房间是否住人" + statu;
	}
	
	
}

再写出酒店类(包括订房、退房、打印所有房间信息方法)

package hoteltest;

public class Hotel {
	Room[][] room;
	
	//创造方法
	public Hotel() {
		super();
	}

	public Hotel(int a) {//a表示楼层层数
		this.room = new Room[a][];
	}
	
	public Hotel(int a,int b) {//b表示a楼层房间个数
		this.room = new Room[a][b];
	}
	
	//订房
	public void inroom(int roomnum) {
		int a = (roomnum / 100) - 1;//a表示楼层数    因为数组下标从零开始,所以要减去一
		int b = (roomnum % 100) - 1;//b表示房间号    因为数组下标从零开始,所以要减去一
		if(room[a][b].statu == true) {//判断房间能否预定。
			System.out.println("这间房已经被预定了!");
			return ;
		}
		room[a][b].statu = true;
	}
	
	
	//退房
	public void outroom(int roomnum) {
		int a = (roomnum / 100) - 1;//a表示楼层数    因为数组下标从零开始,所以要减去一
		int b = (roomnum % 100) - 1;//b表示房间号    因为数组下标从零开始,所以要减去一
		if(room[a][b].statu == false) {//判断房间能否预定。
			System.out.println("您可能输入错误,这间房没有人住不能退订!");
			return ;
		}
		room[a][b].statu = false;
	}
	
	//打印所有房间状态
	public void printroom() {
		//遍历房间所有信息,用两个for循环
		for(int i = 0 ; i < room.length ; i++) {
			for(int j = 0 ; j < room[i].length ; j++) {
				System.out.println(room[i][j]);
			}
		}
		
	}
	
}

最后是测试程序(包括酒店规模、酒店房间的初始化、功能选择系统等)

package hoteltest;
import java.util.Scanner;

public class Hoteltest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		
		Scanner sc = new Scanner(System.in);
		//创建酒店
		System.out.println("请输入您酒店的规格(层数,每层房间数):");
		int floor,number;//层数和个数
		floor = sc.nextInt();
		number = sc.nextInt();
		Hotel hotel = new Hotel(floor,number);//创建了一个酒店对象
		Room[][] room = hotel.room;//创建了一个房间的数组,用来存储房间信息。
		
		//初始化酒店房间数组的信息
		for(int i = 0 ; i < room.length ; i++) {//房间层数
			for(int j = 0 ; j < room[i].length ; j++) {//每层的房间号
				Room rooms = new Room();//创建房间对象
				room[i][j] = rooms;//将房间对象赋给房间数组
				rooms.roomnum = (i + 1) * 100 + (j + 1); //给房间对象的roomnum赋值
				rooms.statu = false;//给每个房间的住房状态都赋值为空
				rooms.type = "第" + (i + 1) + "层";
			}
		}
		
		
		//测试房间的信息是否正确
		//hotel.printroom();
		
		
		
		//使用系统
		int num,num1;//num为房间号  num1是用来判断功能的
		for(;;) {
			System.out.println("提示:(1订房	2退房	3打印房间信息 	4退出)");
			System.out.print("请入数字:");
			//Scanner类。使用前需要将其导入。也就是说在代码的最前端加入import java.util.Scanner;这样就可以了。
			num1 = sc.nextInt();
			
			
			if(num1 == 1) {//订房
				System.out.print("请输入房间号(例如:205、909、1205等):");
				num = sc.nextInt();
				if((num % 100) > number || (num / 100) > floor) {//判断输入的房间号是否正确,当层数超过时或者房间数超过是,直接提示错误
					System.out.println("您输入了错误的房间号,请重新输入!!!");
				}else {
					hotel.inroom(num);
				}
			}else if(num1 == 2) {//退房
				System.out.print("请输入房间号(例如:205、909、1205等):");
				num = sc.nextInt();
				if((num % 100) > number || (num / 100) > floor) {//判断输入的房间号是否正确,当层数超过时或者房间数超过是,直接提示错误
					System.out.println("您输入了错误的房间号,请重新输入!!!");
				}else {
					hotel.outroom(num);
				}
			}else if(num1 == 3) {//打印房间信息
				hotel.printroom();
			}else if(num1 == 4) {
				break;
			}else {
				System.out.println("您输入了错误的数据");
			}
		}

		
	}

}

其实还可以将测试程序继续简化,将功能继续对象化。懒得写了。

接下来贴一张结果图

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值