设计思路
1.一个酒店所需要的对象有Hotel酒店本身、Room房间、Guest顾客
2.Hotel需要拥有的基本功能:查询所有空房、顾客入住、顾客退房、查询顾客信息
3.Guest顾客需要有的属性:name姓名、phone手机号、idcard身份证
4.Room房间需要有的属性:roomnumber房间号、guest入住的顾客
5.Hotel需要有的属性:不同楼层、多个Room房间(二维数组)
创建对象类
首先建立三个对象类Guest、Room、Hotel
和各个对象类中的成员变量
//顾客对象类
public class Guest {
String name;//顾客姓名
String phone;//顾客手机
String idcard;//顾客身份证号
}
//房间对象类
public class Room {
int room_num;//房间编号
Guest guest;//房间用户
}
//Hotel酒店对象类
public class Hotel {
//定义一个5层楼,每层5个房间的酒店
Room[][] rooms = new Room[5][5];
}
创建对象类的构造方法
思考需不需要用到对象类的构造方法
//添加构造方法后的Room类
public class Room {
int room_num;//房间数量
Guest guest;//房间用户
Room(int num){
this.room_num=num;
}
}
//添加构造方法后的Guest类
public class Guest {
String name;//顾客姓名
String phone;//顾客手机
String idcard;//顾客身份证号
//顾客的构造函数
Guest(String input_name,String input_phone,String input_idcard){
this.name=input_name;
this.phone=input_phone;
this.idcard=input_idcard;
}
}
通过Hotel的构造方法给rooms编号
//添加构造方法后的Hotel类
public class Hotel {
Room[][] rooms = new Room[5][5];
/*
*给Room[][]的room_num值编号
* 1001~1005
* ~5001~5005
*通过for循环实现
*/
Hotel() {
for (int i = 0; i < rooms.length; i++) {
for (int j = 0; j < rooms[i].length; j++) {
rooms[i][j] = new Room((i + 1) * 1000 + j + 1);
}
}
}
}
最终代码
建立好这些构造方法之后可以按照酒店所需要的功能,依次在Hotel对象类中添加对应的方法,方法再通过主函数中的switch来实现选择
import java.util.Scanner;
// 主函数
public class Main {
public static void main(String[] args) {
Hotel hotel=new Hotel();
Scanner scan=new Scanner(System.in);
X: while (true){
System.out.println("show查询房间 in添加信息 refer查询用户信息 out退出房 exit退出系统");
String input=scan.next();
String input_String=input;
switch (input_String){
case "refer":
System.out.println("输入需要查询的房间号");
int input_refer=scan.nextInt();
hotel.refer(input_refer);
break ;
case "show" :
hotel.show();
break;
case "in" :
System.out.println("输入房间号,姓名,手机号,身份证号");
hotel.in();
break;
case "out":
System.out.println("输入要退出的房间号");
hotel.out();
break;
case "exit":break X;
default:
System.out.println("输入命令错误,请重新输入");
}
}
}
}
// Hotel类
class Hotel {
Room[][] rooms = new Room[5][5];
//给Room[][]的room_num值编号
Hotel() {
for (int i = 0; i < rooms.length; i++) {
for (int j = 0; j < rooms[i].length; j++) {
rooms[i][j] = new Room((i + 1) * 1000 + j + 1);
}
}
}
//创建一个show查询方法,显示所有的房间信息
void show() {
//通过循环将房间号以二位数组形式输出
for (int i = 0; i < rooms.length; i++) {
for (int j = 0; j < rooms[i].length; j++) {
System.out.print(rooms[i][j].room_num + "\t");
}
System.out.println();
for (int j = 0; j < rooms[i].length; j++) {
//判断rooms[i][j]中是否住人
if (rooms[i][j].guest != null) {
//若对应房间有人住则,输出房间顾客的姓名
System.out.print(rooms[i][j].guest.name + "\t");
} else {
//若对应的房间无人居住,则输出默认值null
System.out.print(rooms[i][j].guest + "\t");
}
}
System.out.println();
}
}
//创建一个in方法,输入房间信息
void in() {
//建立一个循环,通过循环控制输入异常时重新输入
while (true) {
Scanner scan = new Scanner(System.in);
int input_roomnum = scan.nextInt();//输入想要入住的房间号
String input_guestname = scan.next();//输入顾客姓名
String input_guestphone = scan.next();//输入顾客的手机号
String input_guestidcard = scan.next();//输入顾客的身份证号
int i = input_roomnum / 1000 - 1;//根据对应房间号求出该值所对应的下标i
int j = input_roomnum % 10 - 1;//根据对应房间号求出该值所对应的下标j
if (rooms[i][j].guest != null) {
System.out.println("该房间已有人入住,请更换房间");
} else {
//将输入的值以新建一个构造方法的信息填写到room[i][j]房间所对应的顾客信息中
rooms[i][j].guest = new Guest(input_guestname,input_guestphone,input_guestidcard);
System.out.println("入住成功");
break;
}
}
}
//创建一个out方法,删除房间信息
void out() {
while (true) {
Scanner scan = new Scanner(System.in);
int input_roomnum = scan.nextInt();
int i = input_roomnum / 1000 - 1;
int j = input_roomnum % 10 - 1;
if (rooms[i][j].guest != null) {
//将room[i][j]房间中顾客信息都改为空值,即退房成功
rooms[i][j].guest = null;
System.out.println("退房成功");
break;
} else {
System.out.println("退房失败,请重新输入");
}
}
}
//创建一个查询类,根据输入房间号,显示入住人员的所有信息
void refer(int roomnum) {
int i = roomnum / 1000 - 1;
int j = roomnum % 10 - 1;
if (rooms[i][j].guest != null) {
System.out.println("姓名 : "+rooms[i][j].guest.name);
System.out.println("手机号 : "+rooms[i][j].guest.phone);
System.out.println("身份证号 : "+rooms[i][j].guest.idcard);
} else {
System.out.println("该房为空房");
}
}
}
//构造一个Room类
class Room {
int room_num;//房间数量
Guest guest;//房间用户
Room(int num){
this.room_num=num;
}
}
//创建一个顾客类
class Guest {
String name;//顾客姓名
String phone;//顾客手机
String idcard;//顾客身份证号
//顾客的构造函数
Guest(String input_name,String input_phone,String input_idcard){
this.name=input_name;
this.phone=input_phone;
this.idcard=input_idcard;
}
}
实现效果