系统概述
这个酒店管理系统是一个基于Java的控制台应用程序,主要用于管理酒店顾客的基本信息。系统提供了顾客信息的添加、修改、删除和查看功能,实现了基本的CRUD操作。系统采用面向对象的设计思想,将功能模块化,代码结构清晰。
系统架构
系统由四个主要类组成:
-
Customer:顾客实体类,封装顾客信息
-
ArrayUtils:数组工具类,提供数组操作辅助方法
-
CustomerView:用户界面类,处理用户交互
-
CustomerTest:测试类,启动应用程
具体实现代码
核心类详解
1. Customer类
Customer
类是系统的核心实体类,用于表示酒店顾客的信息:
java
public class Customer {
private String name; // 顾客姓名
private String gender; // 顾客性别
private int age; // 顾客年龄
private String idCard; // 顾客身份证号
private String roomNumber; // 顾客房间号
// 构造函数、Getter和Setter方法
// toString()方法用于格式化输出顾客信息
}
特点:
-
使用私有字段封装顾客属性
-
提供完整的Getter和Setter方法
-
实现
toString()
方法便于信息展示 -
包含房间号字段,作为顾客的唯一标识之一
2. ArrayUtils类
ArrayUtils
是一个工具类,提供静态方法帮助处理顾客数组:
java
public class ArrayUtils {
// 根据房间号查找顾客索引
public static int findIndexByRoomId(Customer[] customers, String roomNumber, int count) {
// 实现逻辑
}
// 检查并扩展数组容量
public static void isEnoughArray(Customer[] customers) {
// 实现逻辑
}
}
方法说明:
-
findIndexByRoomId()
:线性搜索数组,根据房间号查找顾客位置 -
isEnoughArray()
:检查数组是否已满,满则创建新数组并复制元素(当前实现有bug)
存在的问题:
-
isEnoughArray()
方法中创建的新数组没有返回,调用者无法获取扩展后的数组 -
方法命名不够直观(如"isEnoughArray"更像是查询方法而非修改方法)
3. CustomerView类
CustomerView
是系统的用户界面类,负责与用户交互:
java
public class CustomerView {
private int count; // 当前顾客数量
private Customer[] customers; // 顾客数组
private Scanner scanner; // 输入扫描器
// 主菜单循环
public void start() {
// 实现主菜单逻辑
}
// 各种操作方法:addCustomer(), updateCustomer(), deleteCustomer(), displayCustomers()
// 信息验证方法:isValidCustomerInfo()
}
功能特点:
-
主菜单系统:提供清晰的文本界面和选项
-
输入验证 :
isValidCustomerInfo()
方法验证输入格式-
姓名非空
-
性别只能是"男"或"女"
-
年龄必须大于0
-
身份证号符合正则表达式规则
-
房间号非空
-
-
数据展示 :
displayCustomers()
以表格形式展示顾客信息
交互流程:
-
添加顾客:收集各项信息并验证
-
修改顾客:根据房间号查找并更新信息
-
删除顾客:根据房间号查找并删除,后续元素前移
-
查看顾客:列表展示所有顾客信息
4. CustomerTest类
CustomerTest
是系统的入口类,非常简单:
java
public class CustomerTest {
public static void main(String[] args) {
CustomerView view = new CustomerView(50); // 初始容量50
view.start();
}
}
系统亮点
-
输入验证:对身份证号等关键信息进行格式验证
-
用户友好界面:清晰的菜单和提示信息
-
基于房间号的管理:使用房间号作为主要查找键
-
简单的数组管理:避免了集合框架的复杂性,适合教学
总结
这个酒店管理系统虽然简单,但完整地展示了控制台应用程序的基本结构和设计思路。它涵盖了实体类设计、用户交互、数据验证、数组操作等Java编程的核心概念,非常适合作为面向对象编程的示例项目。通过进一步完善和扩展,可以将其发展为功能更全面的酒店管理系统。
对于初学者来说,这个项目很好地演示了:
-
如何将现实世界的实体抽象为Java类
-
如何设计用户交互流程
-
如何进行基本的数据验证
-
如何使用数组管理对象集合68