java web实现酒店管理系统,酒店管理系统javaweb

  java web实现酒店管理系统,酒店管理系统javaweb

  通过学习Java的基础知识,正式步入学习Java语言的行列。这个博客是用来让我们真正理解和应用面向对象的思想。

  用简单的Java代码实现酒店管理系统,供你参考。具体情况如下

  00-1010如果要实现酒店管理系统,首先需要分析酒店管理系统的业务需求:

  1.酒店管理系统需要实现哪些功能?

  (1)输入命令,查询酒店所有房间;(2)输入预订房间的号码;(3)输入要退房的房间号;(4)输入命令退出酒店管理系统;

  2.酒店管理系统用什么数据结构来表示房间?

  (1)酒店管理系统使用数组的形式来存储房间,这里我们用二维数组来表示它们;

  3.我们对酒店房间有什么属性?

  (1)房间号;(2)房型;(3)房间是否空闲;

  4.我们用什么来控制房间类具有上述属性?

  (1)我们可以使用自定义注释来实现它;

  

一. 需求分析

 

  

二. 画图分析

 

  00-1010/* *用户定义的注释类:该类作用于房间类。*/@Retention(RUNTIME) //使用此批注指示此用户定义的批注可以外部映射到@Target(TYPE) //使用此批注指示此用户定义的批注只能作用于类。public @ interface property annotation { }/* *当一个自定义的注释类作用于一个房间实体类时,这个类用来确定是否存在房间号、房间类型、房间是否空闲等属性。*/public class property annotation判断{//property annotation public static void Judge(){ try {//使用反射机制反射房间类//我这里的房间房间类放在测试包下,可以自定义其路径。班级?c=Class.forName(test。房间’);//确定Room类上是否有@ PropertyAnnotation annotation If(c . isannotationpresent(property annotation . class)){//如果Room类上有@ property annotation annotation,则获取该Room类中的所有属性Field[]fields=c . get fields();boolean isExist=falsefor(fieldfield 3360 fields){//如果Room类中有房间号、房间类型、房间是否空闲等属性,则让isExist=true,否则抛出异常if (item.getname()。equals (rid) item.gettype()。getsimplename()。equals( integer ){ for(field item 1 : fields){ if(item 1 . getname()。equals(rType) item1.getType()。getSimpleName()。equals( String ){ for(Field item 2 : fields){ if(item 2 . getname()。equals(rFree) item2.getType()。getSimpleName()。equals( Boolean ){ is exist=true;打破;} } } } } }

      if (!isExist) {                    throw new ProperyException("Room类中不存在房间编号、房间类型、房间是否空闲这些属性");                }            }        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }}

/**    当ProperyAnnotation注解作用的房间实体类中没有房间编号、房间类型、房间是否空闲这些属性时,此类为抛出的异常类。*/public class ProperyException extends RuntimeException {    private static final long serialVersionUID = -8343113740914228496L;    public ProperyException () {}    public ProperyException (String msg) {super(msg);}}
/**    Room房间实体类*/@ProperyAnnotationpublic class Room {    private Integer rId;    // 房间编号    private String rType;    // 房间类型    private Boolean rFree;    // 房间是否空闲    public Room () {}    public Room (Integer rId, String rType, Boolean rFree) {        this.rId = rId;        this.rType = rType;        this.rFree = rFree;    }    protected Integer getrId() {        return rId;    }    protected void setrId(Integer rId) {        this.rId = rId;    }    protected String getrType() {        return rType;    }    protected void setrType(String rType) {        this.rType = rType;    }    protected Boolean getrFree() {        return rFree;    }    protected void setrFree(Boolean rFree) {        this.rFree = rFree;    }    @Override    public String toString() {        return "Room [" + rId + ", " + rType + ", "+ (rFree ? "有人入住" : "无人入住")+"]";    }}
/**    酒店管理实体类:用来管理房间的,其中包括查看所有房间状态、订房、退房功能。*/public class Hotel {    // 这里需要定义一个二维数组来表示房间,因为我们设想的酒店有很多层,且每层有很多你发件。    private static Room[][] rooms;        public Hotel () {        // 这里定义酒店为5层,且每层有9个房间        rooms = new Room[5][9];        // 这里我们来设置酒店的房间,由于酒店的房间很多,所以我们使用for循环来分别设置每个楼层。        for (int m = 0 ; m < rooms.length ; m ++) {            for (int n = 0 ; n < rooms[m].length ; n ++) {                // 第一层                if (m == 0) {                    /*                        这里我们的房间编号这样设置:                        如果是是酒店的第一层楼的第一个房间,我们将房间编号设置成:101                        我规定我们的酒店的楼层为1~5层;                        我规定我们的酒店的第一个房间为1                        所以如果我们用二维数组来表示酒店的楼层和第几个房间时,因为我们的二维数组的横纵坐标都是从0开始的,所以我们需要分别加上1,此时房间编号的表达式就为:                        (m + 1) * 100 + n + 1                        当m = 0时:                            n = 0:房间编号为101;                            n = 1:房间编号为102;                            n = 2;房间编号为103;                            ...                        当m = 1时:                            n = 0:房间编号为201;                            n = 1:房间编号为202;                            ...                        ...                    */                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "单人豪华房", false);                }                                // 第二层                if (m == 1) {                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "双人豪华房", false);                }                                // 第三层                if (m == 2) {                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);                }                                // 第四层                if (m == 3) {                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);                }                                // 第五层                if (m == 4) {                    rooms[m][n] = new Room((m + 1) * 100 + n + 1, "三人豪华房", false);                }            }        }    }        // 查看所有房间状态    public void queryAllRooms () {        for (int m = 0 ; m < rooms.length ; m ++) {            for (int n = 0 ; n < rooms[m].length ; n ++) {                System.out.println(rooms[m][n].toString());            }        }    }        // 使用房间编号订房    public void makeRoom (int rId) {        Room room = rooms[rId / 100 - 1][rId % 100 - 1];        // 如果该编号的房间已经有人订了        if (room.getrFree() == true) {            System.out.println("抱歉,请您订购其他房间,此房间已经有人居住!");        } else {            room.setrFree(true);            System.out.println("订房完成");        }    }        // 使用房间编号退房    public void existRoom (int rId) {        Room room = rooms[rId / 100 - 1][rId % 100 - 1];        // 如果该编号的房间本来就没有人居住        if (room.getrFree() == false) {            System.out.println("抱歉,请您退订其他房间,该房间没有人居住不需要退订!");        } else {            room.setrFree(false);            System.out.println("退房完成");        }    }}
/**    酒店的操作测试类:*/public class Test {    public static void main (String[] args) {        ProperyAnnotationToJudge.Judge();        Hotel hotel = new Hotel();        System.out.println("欢迎使用酒店管理系统,请认真阅读以下使用说明:");        System.out.println("请输入对应的功能编号:[1]查看房间列表; [2]订房; [3]退房; [0]退出系统");        Scanner scanner = new Scanner(System.in);        while (true) {            System.out.print("请输入功能编号:");            Integer i = scanner.nextInt();            if (i == 1) {                hotel.queryAllRooms();                System.out.println("酒店所有的房间已经加载完毕!");            }            else if (i == 2) {                System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");                Integer rId = scanner.nextInt();                if (rId >= 101 && rId <= 110 rId >= 201 && rId <= 210 rId >= 301 && rId <= 310 rId >= 401 && rId <= 410 rId >= 501 && rId <= 510) {                    hotel.makeRoom(rId);                } else {                    System.out.println("请输入正确的房间编号!");                }            }            else if (i == 3) {                System.out.print("请输入房间编号,房间编号为101~110、201~210、301~310、401~410、501~510:");                Integer rId = scanner.nextInt();                if (rId >= 101 && rId <= 110 rId >= 201 && rId <= 210 rId >= 301 && rId <= 310 rId >= 401 && rId <= 410 rId >= 501 && rId <= 510) {                    hotel.existRoom(rId);                } else {                    System.out.println("请输入正确的房间编号!");                }                            }            else if (i == 0) {                System.out.println("成功退出酒店管理系统!");                scanner.close();                return;            }            else {                System.out.println("请仔细阅读使用说明,输入正确的功能编号");            }        }    }}

输出结果:

 

  

 

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: