Senin, 08 April 2013

Tugas PBO Validasi Input Tanggal

Program Java Validasi Input Tanggal (TUGAS)

Pada pertemuan kali ini akan membuat program untuk membahasa bagaimana cara validasi tanggal dengan menggunakan bahasa pemrograman java. Dengan cara memasukkan tanggal sesuai dengan tanggal / bulan/ tahun (dd/MM/yyyy), Maka output yang akan di keluarkan dd/NamaBulan/yyyy. program ini melakukan validasi dengan Date yang ada pada komputer. Dengan menggunakan tipe boolean pada saat tidak sama/tidak valid, maka akan bernilai false dan jika sama/valid akan bernilai true. Hal ini juga berlaku untuk kabisat. Input tanggal di lakukan dengan cara memasukkan tanggal pada MessageBox, begitu pula dengan outputnya dengan tampilan messagebox.

Berikut ini adalah Logika dan Listing programnya :


import java.text.*; //memasukkan semua fungsi yang terdapat pada package text
import java.io.*; // memasukan semua fungsi yang terdapat pada package io
import javax.swing.*; // memasukan semua fungsi yang terdapat pada package swing
import java.util.*; // memasukan semua fungsi yang terdapat pada package util

 // Program Ini Dibuat Oleh Andrean Cipta, Aldian Vanjaya, Denny Octavianto, Nizar Zulkarnain, Hano Almakky Haksoro : 2IA12
public class InputKalender2IA12 {

  public boolean isValidDate(String inDate) {
     //Jika inDate sama dengan tidak ada/kosong, maka akan mengembalikan nilai ke false
    if (inDate == null)
      return false;
     
      //Mengatur Pola Untuk Masukkan Tanggal dd= Tanggal, MM= Bulan, yyyy= Tahun
      SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
     
    //Jika inDate tidak sama dengan dateFormat maka akan mengembalikan nilai ke false
    if (inDate.trim().length() != dateFormat.toPattern().length())
      return false;
     
     // menetapkan setLenient bernilai false untuk validasi
    dateFormat.setLenient(false);
   
    try {
      //menguraikan ke dalam inDate parameter
      dateFormat.parse(inDate.trim());
    }
    catch (ParseException e) {
      return false;
    }
    return true;
  }
 
  public static void main(String[] args) {
     //Membuat objek baru dengan nama test yang akan memanggil class InputKalender2IA12
    InputKalender2IA12 test = new InputKalender2IA12();
   
    //Mendeklarasikan go dan run bertipe boolean dengan nilai true
    boolean go = true;
    boolean run = true;
   
    while (go==true)
    {
    while (run)
        {
      
        // Membuat Inputan MessageBox Dengan Nama Variabel tanggal Bertipe String
        String tanggal = JOptionPane.showInputDialog("Masukkan Tanggal (dd/mm/yyyy) : ");
        if(tanggal.equals("")){
        JOptionPane.showMessageDialog(null, "Tanggal Belum Dimasukkan !!");
        tanggal = JOptionPane.showInputDialog("Masukkan Tanggal (dd/mm/yyyy) : ");
        run = true;
        }
      
        String dd = tanggal.substring(0,2);    // Membuat nama variabel dd bertipe string dan mengambil data dari tanggal mulai dari indeks ke-1 sampai data sebelum indeks ke-2
        String MM = tanggal.substring(3,5);    // Membuat nama variabel MM bertipe string dan mengambil data dari tanggal mulai dari indeks ke-3 sampai data sebelum indeks ke-5
        String yyyy = tanggal.substring(6);    // Membuat nama variabel yyyy bertipe string dan mengambil data dari tanggal mulai dari indeks ke-6 sampai akhir data
        int bulan = Integer.parseInt(MM);      // Membuat nama variabel bulan bertipe int
        String mm = Integer.toString(bulan);
        String mon[]={"Januari","Februari","Maret","April","May","Juni","July","Agustus","September","Oktober","November","Desember"};
      
      
      
        if (bulan==1){
        mm =(mon[bulan-1]);
        }
        else if (bulan==2){
        mm =(mon[bulan-1]);
        }
        else if (bulan==3){
        mm =(mon[bulan-1]);
        }
        else if (bulan==4){
        mm =(mon[bulan-1]);
        }
        else if (bulan==4){
        mm =(mon[bulan-1]);
        }
        else if (bulan==5){
        mm =(mon[bulan-1]);
        }
        else if (bulan==6){
        mm =(mon[bulan-1]);
        }
        else if (bulan==7){
        mm =(mon[bulan-1]);
        }
        else if (bulan==8){
        mm =(mon[bulan-1]);
        }
        else if (bulan==9){
        mm =(mon[bulan-1]);
        }
        else if (bulan==10){
        mm =(mon[bulan-1]);
        }
        else if (bulan==11){
        mm =(mon[bulan-1]);
        }
        else if(bulan==12){
        mm =(mon[bulan-1]);
        }
        else{
        }
      
        //Menampilkan MessageBox yang berisi Tanggal yang anda masukkan Jika tanggal bernilai true
        if (test.isValidDate(tanggal) == true){
        JOptionPane.showMessageDialog(null,"Tanggal yang anda masukan : " + dd + "  " +mm+ "  " +yyyy );
        run = false;
        }
        //Menampilkan MessageBox yang berisi Tanggal belum dimasukkan Jika tanggal bernilai kosong
        else if(tanggal.equals("")){
        JOptionPane.showMessageDialog(null, "Tanggal Belum Dimasukkan !!");
        run = true;
        }
        else{
        //Menampilkan MessageBox Jika Tanggal yg dimasukkan salah
        JOptionPane.showMessageDialog(null,"Tanggal yang anda masukan salah, coba masukkan kembali dengan benar !!");
        run = true;  
    }
   
        //Jika run bernilai false, maka program akan keluar
    if (run==false)
    System.exit(0);{}
  }
  }
  }
  }



OUTPUT PROGRAM :

data:image/jpeg;base64,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