java基础知识编程实验报告,酒店文员办公软件自学

一、实验背景

随着信息化、智能化的快速发展,各种自动化、数字化办公软件逐渐普及,其中包括酒店文员办公软件。酒店文员办公软件是集宾客信息管理、订单管理、账务管理、房态管理等多个功能于一体的综合性软件,它可以帮助酒店文员更好地管理和维护酒店的日常运营。

本次实验旨在通过自学Java编程基础知识,实现一个简单的酒店文员办公软件,加深对Java编程语言的理解和掌握。

二、实验要求

1. 要求使用Java编程语言实现一个酒店文员办公软件,包括以下功能:

- 客房信息管理:新增客房信息,查询客房信息,修改客房信息,删除客房信息。

- 客户信息管理:新增客户信息,查询客户信息,修改客户信息,删除客户信息。

- 订单管理:新增订单信息,查询订单信息,修改订单信息,删除订单信息。

- 账务管理:查询账单明细,统计收入情况。

- 房态管理:查询房间状态,修改房间状态。

2. 要求实现简单易用、界面友好的图形用户界面(GUI)。

三、实验过程

1. Java 编程环境搭建

首先需要搭建 Java 编程环境,具体步骤如下:

- 下载及安装 JDK(Java Development Kit):在Oracle官网下载适合自己操作系统的 JDK。

- 配置JDK环境变量:将 JDK 的 bin 目录加入 PATH 环境变量中,让系统能够执行 Java 程序。

- 下载及安装 IDE(集成开发环境):常见的 IDE 有 Eclipse、NetBeans、IntelliJ IDEA 等。本次实验中使用 IntelliJ IDEA。

2. 设计软件的数据模型

酒店文员办公软件有若干个模块,每个模块都有多个操作,因此需要先设计出软件的数据模型。可以先画出 E-R 图或者用文本的方式描述。

本次实验使用的是文本的方式描述数据模型,如下所示:

客房信息表(Room):

- 房间编号(roomNo):唯一的整数,作为客房的标识符。

- 房间类型(roomType):表示房间的类型,如标准间、豪华套房等。

- 房间状态(roomState):表示房间的当前状态,如未入住、已入住、等待清扫等。

- 房间价格(price):表示客房的价格。

客户信息表(Customer):

- 客户编号(id):唯一的整数,每个客户对应一个唯一的编号。

- 客户姓名(name):客户的姓名。

- 身份证号(idCard):客户的身份证号。

- 手机号(phone):客户的手机号。

订单信息表(Order):

- 订单编号(orderId):唯一的整数,作为订单的标识符。

- 下单时间(createTime):订单的下单时间。

- 入住时间(checkInTime):订单的入住时间。

- 离店时间(checkOutTime):订单的离店时间。

- 房间编号(roomNo):订单对应的客房编号。

- 客户编号(customerId):订单对应的客户编号。

- 订单状态(orderState):表示订单的当前状态,如已完成、已取消等。

- 订单价格(orderPrice):订单的价格。

3. 设计软件的UI界面

在 IntelliJ IDEA 中设计 UI 界面,可以使用 JavaFX、Swing 等框架,本次实验使用 JavaFX 实现。

界面设计分为两部分,一部分是菜单栏,另一部分是主界面。其中菜单栏包括 “客房”、“客户”、“订单”、“账务”、“房态” 五个菜单,用于展示各个模块的功能操作。主界面则包含若干个组件,如表格、文本框等,用于显示数据和进行操作。

下面是主界面的设计示意图:

![界面设计示意图][1]

图中左侧为客房信息表格,提供了新增、查询、修改、删除等操作。右侧为“客户信息”、“订单信息”、“账务信息”和“房态管理”的 tab 页,用于切换不同的信息管理功能。每个 tab 页中都有类似客房信息表格的组件,用于维护对应的信息。

4. 编写 Java 代码

在设计完 UI 界面后,需要编写 Java 代码来实现功能。

在本次实验中,将数据模型翻译成了 Java 类,分别为 Room、Customer、Order、Bill 和 RoomState 类。编写过程中,需要使用 SQL 语句来对数据库进行操作。

JavaFX 框架提供了若干个控件,如 Button、TableView 等,用于构建 UI 界面。我们可以在控件上绑定事件,比如单击按钮时调用对应的 Java 方法。

下面是主要的 Java 代码:

- Room 类

```java

public class Room {

private int roomNo;

private String roomType;

private RoomState roomState;

private float price;

// getter 和 setter 略

public void save() {

String sql = "insert into room(roomNo, roomType, roomState, price) values(?, ?, ?, ?)";

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setInt(1, getRoomNo());

stmt.setString(2, getRoomType());

stmt.setString(3, getRoomState().toString());

stmt.setFloat(4, getPrice());

stmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

public void update() {

String sql = "update room set roomType=?, roomState=?, price=? where roomNo=?";

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setString(1, getRoomType());

stmt.setString(2, getRoomState().toString());

stmt.setFloat(3, getPrice());

stmt.setInt(4, getRoomNo());

stmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

public void delete() {

String sql = "delete from room where roomNo=?";

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setInt(1, getRoomNo());

stmt.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

public static Room findByRoomNo(int roomNo) {

String sql = "select * from room where roomNo=?";

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setInt(1, roomNo);

ResultSet rs = stmt.executeQuery();

if (rs.next()) {

Room room = new Room();

room.setRoomNo(rs.getInt("roomNo"));

room.setRoomType(rs.getString("roomType"));

room.setRoomState(RoomState.valueOf(rs.getString("roomState")));

room.setPrice(rs.getFloat("price"));

return room;

}

} catch (SQLException e) {

e.printStackTrace();

}

return null;

}

public static List findAll() {

String sql = "select * from room";

List rooms = new ArrayList<>();

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

ResultSet rs = stmt.executeQuery();

while (rs.next()) {

Room room = new Room();

room.setRoomNo(rs.getInt("roomNo"));

room.setRoomType(rs.getString("roomType"));

room.setRoomState(RoomState.valueOf(rs.getString("roomState")));

room.setPrice(rs.getFloat("price"));

rooms.add(room);

}

} catch (SQLException e) {

e.printStackTrace();

}

return rooms;

}

public static List findByRoomType(String roomType) {

String sql = "select * from room where roomType=?";

List rooms = new ArrayList<>();

try (Connection conn = getConnection()) {

PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setString(1, roomType);

ResultSet rs = stmt.executeQuery();

while (rs.next()) {

Room room = new Room();

room.setRoomNo(rs.getInt("roomNo"));

room.setRoomType(rs.getString("roomType"));

room.setRoomState(RoomState.valueOf(rs.getString("roomState")));

room.setPrice(rs.getFloat("price"));

rooms.add(room);

}

} catch (SQLException e) {

e.printStackTrace();

}

return rooms;

}

}

```

- RoomController 类

```java

public class RoomController {

@FXML

private TextField roomNoField;

@FXML

private TextField roomTypeField;

@FXML

private ComboBox roomStateBox;

@FXML

private TextField priceField;

@FXML

private TableView roomTable;

@FXML

private TableColumn roomNoColumn;

@FXML

private TableColumn roomTypeColumn;

@FXML

private TableColumn roomStateColumn;

@FXML

private TableColumn priceColumn;

private ObservableList roomList = FXCollections.observableArrayList();

@FXML

private void initialize() {

roomStateBox.setItems(FXCollections.observableArrayList(RoomState.values()));

roomTable.setItems(roomList);

roomNoColumn.setCellValueFactory(new PropertyValueFactory<>("roomNo"));

roomTypeColumn.setCellValueFactory(new PropertyValueFactory<>("roomType"));

roomStateColumn.setCellValueFactory(new PropertyValueFactory<>("roomState"));

priceColumn.setCellValueFactory(new PropertyValueFactory<>("price"));

refreshRoomList();

}

@FXML

private void onAddRoom(ActionEvent event) {

Room room = new Room();

room.setRoomNo(Integer.parseInt(roomNoField.getText()));

room.setRoomType(roomTypeField.getText());

room.setRoomState(roomStateBox.getValue());

room.setPrice(Float.parseFloat(priceField.getText()));

room.save();

roomList.add(room);

roomNoField.clear();

roomTypeField.clear();

roomStateBox.getSelectionModel().clearSelection();

priceField.clear();

}

@FXML

private void onUpdateRoom(ActionEvent event) {

Room room = roomTable.getSelectionModel().getSelectedItem();

if (room == null) {

Alert alert = new Alert(Alert.AlertType.WARNING);

alert.setTitle("Warning");

alert.setHeaderText("No selection");

alert.setContentText("Please select a room.");

alert.showAndWait();

return;

}

room.setRoomType(roomTypeField.getText());

room.setRoomState(roomStateBox.getValue());

room.setPrice(Float.parseFloat(priceField.getText()));

room.update();

refreshRoomList();

}

@FXML

private void onDeleteRoom(ActionEvent event) {

Room room = roomTable.getSelectionModel().getSelectedItem();

if (room == null) {

Alert alert = new Alert(Alert.AlertType.WARNING);

alert.setTitle("Warning");

alert.setHeaderText("No selection");

alert.setContentText("Please select a room.");

alert.showAndWait();

return;

}

room.delete();

roomList.remove(room);

}

private void refreshRoomList() {

roomList.clear();

roomList.addAll(Room.findAll());

}

}

```

五、实验结果

通过运行 Java 代码,可以看到 UI 界面和实现的功能。界面友好,操作简单易用。客房、客户、订单、账务、房态等模块的功能都得到了实现。

六、实验反思

本次实验让我更深入地理解了 Java 编程语言的核心知识,如 Java 类、继承、封装、多态、接口、异常处理、MySQL 连接等。同时,通过对 JavaFX 框架的学习,可以更方便地实现图形用户界面。这些知识对于今后的编程工作和学习都具有重要的意义。

需要注意的是,本次实验只是一个简单的酒店文员办公软件,对于实际生产中的酒店管理来说,还需要实现更多的功能和更高的可扩展性。因此,需要不断地学习和实践,提高自己的编程实力和设计能力。

购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!

网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!

点赞(68) 打赏

评论列表 共有 1 条评论

眼中英雄梦 1年前 回复TA

瑞羊迎春接福,全方位送祝福,预祝你:东行顺利,南走吉祥,西出平安,北遇祥瑞,中有如意,左右逢缘,前后添福,内外顺畅,上下和谐,牛年好运!

立即
投稿
发表
评论
返回
顶部