Skip to main content
New

tugas

  • September 10, 2026
  • 0 replies
  • 5 views

Forum|alt.badge.img

package aplikasihoteladitya;

 

import javax.swing.*;

import java.awt.*;

 

public class AplikasiHotelAditya extends JFrame {

 

    private JTextField txtNama;

    private JTextField txtLama;

    private JTextField txtTotal;

    private JComboBox<String> cmbKamar;

 

    private JButton btnHitung;

    private JButton btnReset;

 

    public AplikasiHotelAditya() {

 

        setTitle("Aplikasi Mini Hotel");

        setSize(500, 400);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLocationRelativeTo(null);

        setResizable(false);

 

        // Panel utama

        JPanel panel = new JPanel(new GridBagLayout());

        panel.setBorder(BorderFactory.createEmptyBorder(25, 30, 25, 30));

 

        GridBagConstraints gbc = new GridBagConstraints();

        gbc.insets = new Insets(8, 8, 8, 8);

        gbc.fill = GridBagConstraints.HORIZONTAL;

 

        // Judul

        JLabel judul = new JLabel("APLIKASI MINI HOTEL");

        judul.setFont(new Font("Arial", Font.BOLD, 22));

        judul.setHorizontalAlignment(SwingConstants.CENTER);

 

        gbc.gridx = 0;

        gbc.gridy = 0;

        gbc.gridwidth = 2;

        panel.add(judul, gbc);

 

        // Nama Tamu

        JLabel lblNama = new JLabel("Nama Tamu");

        lblNama.setFont(new Font("Arial", Font.BOLD, 14));

 

        txtNama = new JTextField();

        txtNama.setFont(new Font("Arial", Font.PLAIN, 14));

 

        gbc.gridy = 1;

        gbc.gridwidth = 1;

        gbc.gridx = 0;

        panel.add(lblNama, gbc);

 

        gbc.gridx = 1;

        panel.add(txtNama, gbc);

 

        // Tipe Kamar

        JLabel lblKamar = new JLabel("Tipe Kamar");

        lblKamar.setFont(new Font("Arial", Font.BOLD, 14));

 

        cmbKamar = new JComboBox<>(new String[]{

            "Standard - Rp300000",

            "Deluxe - Rp500000",

            "Suite - Rp750000"

        });

 

        cmbKamar.setFont(new Font("Arial", Font.PLAIN, 14));

 

        gbc.gridy = 2;

        gbc.gridx = 0;

        panel.add(lblKamar, gbc);

 

        gbc.gridx = 1;

        panel.add(cmbKamar, gbc);

 

        // Lama Menginap

        JLabel lblLama = new JLabel("Lama Menginap");

        lblLama.setFont(new Font("Arial", Font.BOLD, 14));

 

        txtLama = new JTextField();

        txtLama.setFont(new Font("Arial", Font.PLAIN, 14));

 

        gbc.gridy = 3;

        gbc.gridx = 0;

        panel.add(lblLama, gbc);

 

        gbc.gridx = 1;

        panel.add(txtLama, gbc);

 

        // Total Tagihan

        JLabel lblTotal = new JLabel("Total Tagihan");

        lblTotal.setFont(new Font("Arial", Font.BOLD, 14));

 

        txtTotal = new JTextField();

        txtTotal.setFont(new Font("Arial", Font.BOLD, 16));

        txtTotal.setEditable(false);

 

        gbc.gridy = 4;

        gbc.gridx = 0;

        panel.add(lblTotal, gbc);

 

        gbc.gridx = 1;

        panel.add(txtTotal, gbc);

 

        // Tombol

        btnHitung = new JButton("HITUNG");

        btnHitung.setFont(new Font("Arial", Font.BOLD, 14));

 

        btnReset = new JButton("RESET");

        btnReset.setFont(new Font("Arial", Font.BOLD, 14));

 

        gbc.gridy = 5;

        gbc.gridx = 0;

        panel.add(btnHitung, gbc);

 

        gbc.gridx = 1;

        panel.add(btnReset, gbc);

 

        add(panel);

 

        // Fungsi tombol Hitung

        btnHitung.addActionListener(e -> {

 

            try {

 

                String nama = txtNama.getText().trim();

 

                if (nama.isEmpty()) {

                    JOptionPane.showMessageDialog(

                            this,

                            "Nama tamu belum diisi!",

                            "Peringatan",

                            JOptionPane.WARNING_MESSAGE

                    );

                    return;

                }

 

                int lama = Integer.parseInt(txtLama.getText());

 

                if (lama <= 0) {

                    JOptionPane.showMessageDialog(

                            this,

                            "Lama menginap harus lebih dari 0!",

                            "Peringatan",

                            JOptionPane.WARNING_MESSAGE

                    );

                    return;

                }

 

                int harga;

 

                if (cmbKamar.getSelectedIndex() == 0) {

                    harga = 300000;

                } else if (cmbKamar.getSelectedIndex() == 1) {

                    harga = 500000;

                } else {

                    harga = 750000;

                }

 

                int total = harga * lama;

 

                txtTotal.setText("Rp" + total);

 

            } catch (NumberFormatException ex) {

 

                JOptionPane.showMessageDialog(

                        this,

                        "Lama menginap harus berupa angka!",

                        "Error",

                        JOptionPane.ERROR_MESSAGE

                );

            }

        });

 

        // Fungsi tombol Reset

        btnReset.addActionListener(e -> {

 

            txtNama.setText("");

            txtLama.setText("");

            txtTotal.setText("");

            cmbKamar.setSelectedIndex(0);

 

        });

    }

 

    public static void main(String[] args) {

 

        SwingUtilities.invokeLater(() -> {

 

            AplikasiHotelAditya aplikasi =

                    new AplikasiHotelAditya();

 

            aplikasi.setVisible(true);

        });

    }

}