Java实现酒店管理系统(类似学生管理系统Day16)

1.前期知识储备,二维数组

  • 二维数组时特殊的一维数组,特殊在这个一位数组的每一个元素都是一个一维数组.
  • 二维数组静态初始化
    int[][] a={{100,200,300},{1,5,6,8},{0}};
    a[0].length为二维数组中第一个一维数组的长度。
    可以采用sum(new int[][] {{1,2,3},{1,6}};
    关于二维数组的读取和更改
    取上述维数组的第一个一维数组。
    int[] b = a[0];
    第一个一维数组的第一个元素:a[0] [0];
    a[0]是一个整体,后面的[0]是前面执行结束的结构然后再寻下标。
  • 更改直接赋值。
    二维数组的遍历采用两个for循环。
    for(int i =0 ;i<array.length,i++)
    for(int j=0;j<array[i].length.j++)
  • 动态初始化二维数组
    //以下为三个一维数组,每个一维数组当中4个元素。
  • int[][] array = new int[3][4];
  • 函数的二维数组形参书写格式:
    sum(int [][] arragy);
    定义为Object数组,所有引用类型都可以存储。定义其它类则它和其子类也可以存储。注意字符串也是Java对象,属于String类,切勿特殊化。
    如:Object[] arr = {new Husband(),new wife(),“abc”};
    快速查找类:在IDEA中双击shift寻找类。
    (小练习,走起)

2.一位数组模拟栈

  • 使用一维数组怎么模拟栈?(栈满和栈空需提供提示)
package package2;
public class Zhan {
    private Object[] elements=new Object[10];
    private int top=-1;
    public Zhan(){

    }
    //压栈
    public void push(Object obj){
      if(this.top>=this.elements.length-1) {
         System.out.println("栈满");
          return;
      }
      this.elements[++top]=obj;
        System.out.println("压栈"+obj+"成功"+top);

    }
//    弹栈
    public void pop() {
    	if(top<0) {
    		System.out.println("弹栈失败,栈已空");
    	}
    	System.out.println("弹栈"+elements[top--]+"元素成功");
    	System.out.println("栈帧指向"+top);
    }
    public Object[] getElements() {
        return elements;
    }

    public void setElements(Object[] elements) {
        this.elements = elements;
    }

    public int getTop() {
        return top;
    }

    public void setTop(int top) {
        this.top = top;
    }
}

package package2;
public class Test10{
	public static void main(String[] args) {
//      创建一个栈对象
      Zhan aa = new Zhan();
//      压栈
      for(int i=0;i<4;i++)
    	  aa.push(new Object());
      aa.pop();
      
	}
}

3.酒店管理系统

  • 要求:编写程序,为某个酒店提供管理系统,模拟订房,退房,打印所有房间状态等功能。

  • 用户是酒店前台,房间号采用二维数组模拟,每一个房间为一个对象,对外提供预定,退房,房间状态等。

  • next()为读取下一字符串。

  • nextLine()为读取一整行数据

  • 在IDEA中快速定位属性和方法:Ctrl+F12

  • Ctrl+shift+/

  • 写每个类时需要重写toString和equals方法,这是一个好的习惯,不管是否用的着(默认继承Object类中的方法)

  • 输出引用时会自动调用toString方法。

  • public String toString(){
    return “[102,单人间,空闲]”;
    }

  • pubic boolean equals(Object obj){
    if(boj = =null)||!(obj instanceof Room))
    return false;
    if(this = =obj)retun true;
    Room room= =(Room)boj;//向下转型
    return this.getNum()= =room.getNum();
    }

  • 二维数组中行数的长度用rooms.length表示。

  • 二维数组的列数的长度用rooms[i].length表示。

  • 同一个类中不同的类使用Scanner类的方法时,将Scanner的引用以参数的形式传过去就好。

  • 酒店拥有者类

package package2;
import java.util.*;
public class QianTai {
	private  static Customers[] dd = new Customers[10000];
	

	/**
	 * 
	 */
	public QianTai() {
		super();
	}


	public Customers[] getDd() {
		return dd;
	}

//添加顾客的方法
	public static void addCustomers(Scanner sc) {
		
		int i=0;
		i++;
		int count =i;
		dd[count]=new Customers();
		System.out.println("请输入顾客姓名:");
		dd[count].setName(sc.next());
		System.out.println("请输入顾客联系方式:");
		dd[count].setNumber(sc.next());
		System.out.println("请输入顾客要充值的数额:");
		dd[count].setYuE(sc.nextDouble());
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//		房间
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);
		Hotel aa=new Hotel();
		for(int i=0;i<10;i++)
			for(int j=0;j<30;j++) {
				if(i<5)
				  aa.Rooms[i][j]=new Room("大床房","空房",300);
				else
				  aa.Rooms[i][j]=new Room("标准间","空房",300);
			}
    
     while(true) {
    	 System.out.println("=======欢迎使用酒店管理系统!=========="); 
         System.out.println("[1]查询所有房间状况!\n[2]定房间!");
         System.out.println("[3]顾客退房!\n[4]注册vip会员\n[5]退出系统!");
         System.out.println("请输入相应功能编号:");
         int flag =sc.nextInt();
         switch(flag) {
         	case 1:aa.OutPut();break;
         	case 2:aa.YuDing(sc);break;
         	case 3:aa.TuiFang(sc);break;
         	case 4:addCustomers(sc);break;
         	case 5:System.out.println("退出系统成功,祝你生意兴融!");return;
         	default:
         		System.out.println("对不起你输入的功能编号有误,请重新输入!");
         }
       }
  
     }	
			
}

  • 顾客类
package package2;

public class Customers {
	private String name;
	private String  number;
	private double YuE;
	/**
	 * @param name
	 * @param number
	 * @param yuE
	 */
	public Customers(String name, String number, double yuE) {
		super();
		this.name = name;
		this.number = number;
		YuE = yuE;
	}
	/**
	 * 
	 */
	public Customers() {
		super();
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	public double getYuE() {
		return YuE;
	}
	public void setYuE(double yuE) {
		YuE = yuE;
	}
	
	
}



  • 房间类
package package2;

public class Room extends Hotel {
	private String Leixing;
	private String ZhuangTai;
	private double price;
	/**
	 * @param leixing
	 * @param zhuangTai
	 * @param price
	 */
	public Room(String leixing, String zhuangTai, double price) {
		super();
		Leixing = leixing;
		ZhuangTai = zhuangTai;
		this.price = price;
	}
	public String getLeixing() {
		return Leixing;
	}
	public void setLeixing(String leixing) {
		Leixing = leixing;
	}
	public String getZhuangTai() {
		return ZhuangTai;
	}
	public void setZhuangTai(String zhuangTai) {
		ZhuangTai = zhuangTai;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	
	
}

  • 酒店类
package package2;
import java.util.*;
public class Hotel {
	Room[][] Rooms=new Room[10][30];
	
	public Hotel() {
		super();
	}

	public Room[][] getRooms() {
		return Rooms;
	}


	public void setRooms(Room[][] rooms) {
		Rooms = rooms;
	}


	/**
	 * @param rooms
	 */
	public Hotel(Room[][] rooms) {
		super();
		Rooms = rooms;
	}




	//	预定方法
	public void YuDing(Scanner Scan) {
		System.out.println("请输入要预定的房间楼层:");
		int Ceng = Scan.nextInt();
		System.out.println("请输入你要预定的房间号:");
		int Hao = Scan.nextInt();
		if(Ceng>10||Ceng<0||Hao>30||Hao<0) {
			System.out.println("对不起,没有此房间哦!");
			return;
		}
		else if("空房".equals(Rooms[Ceng-1][Hao-1].getZhuangTai())) {
			System.out.println("预定成功,欢迎入住!房间密码为:"+"0096"+(Ceng-1)+(Hao-1)+"请注意保管密码!");
			Rooms[Ceng-1][Hao-1].setZhuangTai("房满");
		}
		else
			System.out.println("预定失败,该房间已被订购,请选择其它房间吧!");
	    
	}


//	退房方法
	public void TuiFang(Scanner Scan) {
		System.out.println("请输入要退订的房间楼层:");
		int Ceng = Scan.nextInt();
		System.out.println("请输入你要退订的房间号:");
		int Hao = Scan.nextInt();
		if(Ceng>10||Ceng<0||Hao>30||Hao<0) {
			System.out.println("对不起,没有此房间哦!");
			return;
		}
		else if("房满".equals(Rooms[Ceng-1][Hao-1].getZhuangTai())) {
			System.out.println("退订成功,欢迎下次入住酒店!");
			Rooms[Ceng-1][Hao-1].setZhuangTai("空房");
		}
		else
			System.out.println("退订失败,该房间没住客人哦!");
	    
	}
//	所有房间状态
	public void OutPut() {
		
		for(int i=0;i<10;i++)
			for(int j=0;j<30;j++) {
				System.out.println((i+1)+"楼"+"  房间号为"+(j+1));
		System.out.println(Rooms[i][j].getLeixing()+"  "+Rooms[i][j].getZhuangTai()+"  "+Rooms[i][j].getPrice()+"元");
		System.out.println();
	}

 }

}

待改进之处

程序退出或者断电后数据不能保存,大家可以用数据库自己实现一下,或者用文件;另一缺点交互性差,可以用UI实现一些以上代码!
在这里插入图片描述

发布了50 篇原创文章 · 获赞 8 · 访问量 3065

猜你喜欢

转载自blog.csdn.net/jiahuan_/article/details/105112176
今日推荐