UAS Algoritma dan Pemrograman 2

Tugas UAS Algoritma dan Pemrograman 2

 

Program Sederhana Paket Menu Makanan yang Terkoneksi ke database

 

Nama : Intan Winarti Haris
NIM    : 161021450356
Kelas  : 02TPLM003

Assalamu'alaikum Wr.Wb


Saya akan melanjutkan postingan tentang Program Sederhana Paket Menu Makanan yang dibuat di Aplikasi Java Netbeans yang nantinya akan terkoneksi ke database atau localhostphpmyadmin. Program Aplikasi ini dibuat untuk melayani seseorang yang ingin memesan paket menu makanan dengan mudah dan sederhana bagi yang membeli. Di program ini ada input dan outputnya,inputnya yaitu label login,label password,label isi paket,label menupaket,label harga,label perbox dan label total. Kalo outputnya yaitu ada button selesai,button simpan dan button cetak laporan.Disini saya coba jelasin isi-isinya yaitu Label login untuk masukan nama pengguna,label password untuk masukan kata sandi rahasia punya si pengguna,label isi paket untuk mengisi paketnya yang misalkan paket 1 atau 2, label menu paket untuk mengisi pesanan makanan misalkan nasi+ayam goreng+air putih, label harga untuk menentukan harga paket menu makanannya,label perbox itu untuk tambahan bila si pelanggan beli dari 1 box makanan,label total untuk mentotalkan hasil yang harus dibayar, button mulai untuk mengulangi/membersihkan penginputan kembali dari awal,button selesai untuk mengakhiri penginputan bagi yang memesan,button simpan untuk menyimpan hasil penginputan yang sudah dipesan makanannya dan button cetak laporan untuk mencetak hasil yang sudah di input di program.
Sekarang saya akan  menampilkan flowchart sederhana paket menu makanan :


Berikut gambar flowchart diatas yaitu penjelasan singkat program sederhana dari Login ke Menu sampai ke cetak laporan hasil penyimpanan paket Makanan di aplikasi Java Netbeans. 
 

Program sederhana menu paket makanan ini saya awali dari Form Login. Disini kita menggunakan Palleto,JLabel,TextField,JButton dan JPanel bisa membual background untuk gambar atau warna.


Design Form Login :



 

berikut adalah Source Code Form Login :

Setelah berhasil login akan muncul seperti ini : 



berikut Source Code Menu Isi Paket :


berikut Source Code Menu Combo Paket itu udah terdiri dari Menu paket dan harga :


berikut Source Code yang di dalemnya bentuk aritmatika Menu CheckBox Tota :


Selanjutnya bagian output design button dan source codenya :


berikut source code Button Mulai itu cara untuk menghilangkan/membersihkan semua text agar bisa memulai dari awal lagi, dengan cara mengkliknya:


berikut Source Code yang Button Selesai saya menggunakan JOptionPane cara menampilkan keluar, kita tekan tombol Selesai maka akan muncul question message atau pertanyaan apakah "konfirmasi selesai".:


kemudian design dan source code yang dibawah ini merupakan code yang menghubungkan projek ini ke penyimpanan database atau xampp untuk mengaktifkannya terlebih dahulu sehingga projek dapat di gunakan.

berikut dibawah ini struktur Tabel menu paket makanan pada axampp/phpmyadmin :


dan dibawah ini juga hasil dari jelajahi Tabel menu paket makanan pada axmpp/phpmyadmin :



berikut source code Button Simpan yang akan menghasilkan data di atas tersebut :


Selanjutnya di bawah ini hasil Designer Button Cetak Laporan yang sudah di report wizard :


dan dibawah ini hasil Preview Button Cetak Laporan yang sudah di report wizard :


berikut source code Button Cetak Laporannya :


Terakhir saya mencoba buat video tutorial program aplikasi sederhana yang di bawah ini :
                               

                            

                                (video program sederhana paket menu makanan)


dan ini adalah semua source code nya :

package menumakanan;
       
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.sql.*;

import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.view.JasperViewer;



/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author ASUS
 */
public class FrameMenuMakanan extends javax.swing.JFrame {
    Connection koneksi;

    private Object boxpaket;
   
   

    /**
     * Creates new form FrameMenuMakanan
     */
    public FrameMenuMakanan() {
       
    initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        jLabel4 = new javax.swing.JLabel();
        jProgressBar1 = new javax.swing.JProgressBar();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTextPane1 = new javax.swing.JTextPane();
        buttonGroup1 = new javax.swing.ButtonGroup();
        jTextField2 = new javax.swing.JTextField();
        jTextField3 = new javax.swing.JTextField();
        jPanel3 = new javax.swing.JPanel();
        jTextField4 = new javax.swing.JTextField();
        jPanel4 = new javax.swing.JPanel();
        jColorChooser1 = new javax.swing.JColorChooser();
        jPanel1 = new javax.swing.JPanel();
        Lbl1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        TxtMenuPaket = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        TxtHarga = new javax.swing.JTextField();
        BoxTotal = new javax.swing.JCheckBox();
        jLabel6 = new javax.swing.JLabel();
        TxtTotal = new javax.swing.JTextField();
        BtnSelasai = new javax.swing.JButton();
        BtnMulai = new javax.swing.JButton();
        CmbPaket = new javax.swing.JComboBox<>();
        BtnSimpan = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        TxtPerbox = new javax.swing.JTextField();
        BtnCetakLaporan = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jTextField1 = new javax.swing.JTextField();

        jLabel4.setFont(new java.awt.Font("Times New Roman", 1, 24)); // NOI18N
        jLabel4.setText("Memilih Menu Makanan");

        jScrollPane1.setViewportView(jTextPane1);

        jTextField2.setText("jTextField2");

        jTextField3.setText("jTextField3");

        jPanel3.setBackground(new java.awt.Color(255, 0, 51));

        jTextField4.setFont(new java.awt.Font("Times New Roman", 3, 24)); // NOI18N
        jTextField4.setText("     Program Menu Paket Makanan");

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGap(158, 158, 158)
                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 381, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(185, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addGap(34, 34, 34)
                .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(31, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
        jPanel4.setLayout(jPanel4Layout);
        jPanel4Layout.setHorizontalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );
        jPanel4Layout.setVerticalGroup(
            jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 100, Short.MAX_VALUE)
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setBackground(new java.awt.Color(0, 255, 255));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
        });

        jPanel1.setBackground(new java.awt.Color(0, 51, 255));

        Lbl1.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
        Lbl1.setForeground(new java.awt.Color(0, 255, 255));
        Lbl1.setText("Isi Paket");

        jLabel2.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
        jLabel2.setForeground(new java.awt.Color(0, 255, 255));
        jLabel2.setText("Menu Paket");

        TxtMenuPaket.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TxtMenuPaketActionPerformed(evt);
            }
        });

        jLabel3.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
        jLabel3.setForeground(new java.awt.Color(0, 255, 255));
        jLabel3.setText("Harga");

        TxtHarga.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TxtHargaActionPerformed(evt);
            }
        });

        BoxTotal.setText("jCheckBox1");
        BoxTotal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BoxTotalActionPerformed(evt);
            }
        });

        jLabel6.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
        jLabel6.setForeground(new java.awt.Color(0, 255, 255));
        jLabel6.setText("Total");

        TxtTotal.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                TxtTotalActionPerformed(evt);
            }
        });

        BtnSelasai.setText("Selesai");
        BtnSelasai.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnSelasaiActionPerformed(evt);
            }
        });

        BtnMulai.setText("Mulai");
        BtnMulai.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnMulaiActionPerformed(evt);
            }
        });

        CmbPaket.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CmbPaketActionPerformed(evt);
            }
        });

        BtnSimpan.setText("Simpan");
        BtnSimpan.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnSimpanActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Times New Roman", 1, 12)); // NOI18N
        jLabel1.setForeground(new java.awt.Color(0, 255, 255));
        jLabel1.setText("perbox");

        BtnCetakLaporan.setText("Cetak Laporan");
        BtnCetakLaporan.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BtnCetakLaporanActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(152, 152, 152)
               

        jPanel2.setBackground(new java.awt.Color(255, 0, 51));

        jTextField1.setFont(new java.awt.Font("Times New Roman", 3, 36)); // NOI18N
        jTextField1.setText("   Paket Menu Makanan");

      

        pack();
    }// </editor-fold>                       
public void buka_db() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            koneksi = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/uaspemrograman", "root", "");
        } catch (ClassNotFoundException e) {
            System.out.println("Error #1 " + e.getMessage());
            System.exit(0);
        } catch (SQLException e) {
            System.out.println("Error #2 : " + e.getMessage());
            System.exit(0);
        }
    }
    private void BtnSelasaiActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        if(JOptionPane.showConfirmDialog(null,"Yakin Selesai?","Konfirmasi Selesai",JOptionPane.YES_NO_OPTION
          ,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION){
           dispose();
              
        }
       
    }                                         

    private void formWindowActivated(java.awt.event.WindowEvent evt) {                                    
        // TODO add your handling code here:
        buka_db();
      
        for (int a=1;a<=3;a++){
             CmbPaket.addItem(""+a);
        }

    }                                   

    private void TxtMenuPaketActionPerformed(java.awt.event.ActionEvent evt) {                                             
        // TODO add your handling code here:
       
    }                                           

    private void BoxTotalActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        int a = Integer.parseInt(TxtPerbox.getText());
        int b = Integer.parseInt(TxtHarga.getText());
        int c= a*b;
        TxtTotal.setText(""+c);
    }                                       

    private void BtnMulaiActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        TxtMenuPaket.setText("");
        TxtHarga.setText("");
        TxtTotal.setText("");
        
    }                                       

    private void TxtTotalActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
    }                                        

    private void BtnSimpanActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        try{
            String host  ="jdbc:mysql://localhost:3306/uaspemrograman",
             user        ="root",
             pass        ="";
          Connection con = (Connection) DriverManager.getConnection(host, user, pass);
  
        String menupaket=TxtMenuPaket.getText();
        int harga=Integer.parseInt(TxtHarga.getText());
        int perbox=Integer.parseInt(TxtPerbox.getText());
        int total=Integer.parseInt(TxtTotal.getText());
       
       Statement st=con.createStatement();
       st.executeUpdate("INSERT INTO  tabelmenupaket  ( menupaket ,  harga ,perbox,  total ) VALUES (' "+menupaket+"','"+harga+"' ,'"+perbox+"' ,'"+total+"')");
       st.close();
       JOptionPane.showMessageDialog(null,"Berhasil");

        } catch (SQLException err){
        JOptionPane.showMessageDialog(null,err.getMessage());
              
        }
      
    }                                        

    private void CmbPaketActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        BoxTotal.setSelected(false);
        TxtMenuPaket.setText("");
        TxtHarga.setText("");

        String g=CmbPaket.getSelectedItem().toString();
        int Gol=Integer.parseInt (g);
        switch (Gol)
        {

            case 1:
            TxtMenuPaket.setText("Nasi + Ayam Goreng + Teh Manis ");
            TxtHarga.setText("15000");
            break;
            case 2:
            TxtMenuPaket.setText("Nasi + Ayam Bakar + Teh Tawar ");
            TxtHarga.setText("20000");
            break;
            case 3:
            TxtMenuPaket.setText("Nasi + Ayam Penyet + Air Mineral ");
            TxtHarga.setText("22000");
            break;

            default:
        }
    }                                       

    private void TxtHargaActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
    }                                       

    private void BtnCetakLaporanActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // [TODO add your handling code here:
        buka_db();
        try {
           
            koneksi.createStatement();
            Map<String,Object>maps=new HashMap<String,Object>();
            JasperReport JRP= JasperCompileManager.compileReport("src/menumakanan/laporan.jrxml");
            JasperPrint JFILL = JasperFillManager.fillReport(JRP, maps,koneksi);
            JasperViewer.viewReport(JFILL,false);
           
        }   catch (Exception rptexcpt) {
            JOptionPane.showMessageDialog(null, "salah report");
            System.out.println(rptexcpt);
           
    }   
    }                                               


        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FrameMenuMakanan().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                    
    private javax.swing.JCheckBox BoxTotal;
    private javax.swing.JButton BtnCetakLaporan;
    private javax.swing.JButton BtnMulai;
    private javax.swing.JButton BtnSelasai;
    private javax.swing.JButton BtnSimpan;
    private javax.swing.JComboBox<String> CmbPaket;
    private javax.swing.JLabel Lbl1;
    private javax.swing.JTextField TxtHarga;
    private javax.swing.JTextField TxtMenuPaket;
    private javax.swing.JTextField TxtPerbox;
    private javax.swing.JTextField TxtTotal;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JColorChooser jColorChooser1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JProgressBar jProgressBar1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    private javax.swing.JTextPane jTextPane1;
    // End of variables declaration                  
}

Demikian program sederhana ini serta Database, Design,Source Code,Report Wizard dan Hasil Cetak Laporan yang saya buat. walaupun masih banyak kekurangan atau kesalahan di Blog ini. Saya mohon bisa memakluminya dan semoga bermanfaat untuk teman-teman yang lain. 



Sekian dan Terimakasih

Wassalamu'alaikum Wr.Wb




Komentar