Sabtu, 02 Oktober 2010

Menulis Program Aplikasi Java Sederhana (Bagian 2)

Melanjutkan Bagian 1 Menulis Program Alipkasi Java Sederhana, pada bagian 2 ini, kita akan menambahkan modul Menu dan Data Entry. Modul Menu akan menampilkan 3 pilihan yakni
  1. Entry Data Pegawai

    Modul ini akan menyimpan data pegawai yang dimasukan oleh user ke dalam penyimpanan in-memory, HashMap (Pembahasan lebih lanjut tentang Java Collection akan ditulis pada serie – serie berikutnya). Dan kemudian akan disimpan ke text pada menu Display Data Pegawai.
  2. Display Data Pegawai

    Modul ini akan menampilkan Data Pegawai yang telah diisi sebelumnya. Terdapat fitur [Simpan ke text] sehingga data yang telah disimpan di HashMap dapat disimpan di komputer pengguna dalam bentuk File CSV .
  3. Logout

    Modul ini akan mengarahkan pengguna kembali ke menu login dan menhapus semua data yang terdapat di HashMap.
Baiklah mari kita mulai.

Langkah #4 : Membangun View Menu

7. Buat class [Menu] di package [greenhornsjava.view]
package greenhornsjava.view; 

import greenhornsjava.model.User;
import greenhornsjava.business.EntryDataManager;
import greenhornsjava.business.MenuManager;
import java.util.Scanner;
public class Menu {
 private User user;
 public Menu(User user) {
  this.user = user;
 } 
 public void start() {
  int option;
  while (true) {
   System.out.println("[1].Input Data Pegawai");
   System.out.println("[2].Daftar Data Pegawai");
   System.out.println("[3].Logout");
   System.out.println("========================");
   System.out.print("Pilih Menu[1/2/3] : ");   
   option = Integer.valueOf(new Scanner(System.in).next());   
   MenuManager menuMgr = new MenuManager();
   try {
    menuMgr.verifyEntry(option);
    if(option == 3) {
     logout();
     return;
    }
    showMenu(user, option);
   } catch(Exception e) {
    System.out.println(e.getMessage());
   }
  }
 } 
 private void showMenu(User user, int option) {
  switch(option) {
   case 1 :  showMenuEntryData(); break;
   case 2 : System.out.println("Masuk Menu Daftar Data Pegawai"); break; 
  }
 }
 
 private void showMenuEntryData() {
  EntryData entryData = new EntryData(user);
  entryData.start(); 
 }
 
 private void logout() {
  EntryDataManager entryDataManager = new EntryDataManager();
  entryDataManager.clearAll();
 }
}

Langkah #5 : Membangun Logic Menu

8. Buat class [MenuManager ] di package [greenhornsjava.business]
package greenhornsjava.business; 

public class MenuManager {
 public void verifyEntry(int option) throws Exception {
  if(option == 1) return;
  if(option != 2) return; 
  if(option!= 3) return;  
  throw new Exception("Pilihan menu tidak valid");
 }
}

Ubahlah sebagian code pada [Login.java]




Menjadi berikut :
Menu menu = new Menu(user);
menu.start();

Langkah #6 : Membangun Model Data Pegawai

9. Buat class [Employee] di package [greenhornsjava.model]
package greenhornsjava.model;

import java.io.Serializable;
import java.util.Date;

public class Employee implements Serializable {
 private static final long serialVersionUID = 1L;
 private String nama;
 private String alamat;
 private String tempatLahir;
 private Date tglLahir;
 private Date createdOn;
 private String createdBy;
 
 public Employee() {}
 public Employee(String nama, String alamat, String tempatLahir,
   Date tglLahir, User user) {
  this.nama = nama;
  this.alamat = alamat;
  this.tempatLahir = tempatLahir;
  this.tglLahir = tglLahir;
  this.createdBy = user.getUserName();
  this.createdOn = new Date(System.currentTimeMillis());
 }
 
 public String getNama() {
  return nama;
 }
 public void setNama(String nama) {
  this.nama = nama;
 }
 public String getAlamat() {
  return alamat;
 }
 public void setAlamat(String alamat) {
  this.alamat = alamat;
 }
 public String getTempatLahir() {
  return tempatLahir;
 }
 public void setTempatLahir(String tempatLahir) {
  this.tempatLahir = tempatLahir;
 }
 public Date getTglLahir() {
  return tglLahir;
 }
 public void setTglLahir(Date tglLahir) {
  this.tglLahir = tglLahir;
 }
 public Date getCreatedOn() {
  return createdOn;
 }
 public void setCreatedOn(Date createdOn) {
  this.createdOn = createdOn;
 }
 public String getCreatedBy() {
  return createdBy;
 }
 public void setCreatedBy(String createdBy) {
  this.createdBy = createdBy;
 }
 
 public String toString() {
  return nama;
 }
}


Langkah #7 : Membangun In-Memory Database Pegawai

10. Buat class [InMemoryEmployeeDb] di package [greenhornsjava.db]
package greenhornsjava.db;

import greenhornsjava.model.Employee;
import java.util.ArrayList;

public class InMemoryEmployeeDb extends  ArrayList {
 private static InMemoryEmployeeDb fakeEmployeeTable = new InMemoryEmployeeDb();
 private InMemoryEmployeeDb() { }
 public static InMemoryEmployeeDb getInstance() {
  return (InMemoryEmployeeDb) fakeEmployeeTable;
 }
}

Langkah #8 : Membangun View Data Entry

11. Buat class [EntryData] di package [greenhornsjava.view]
package greenhornsjava.view;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import greenhornsjava.business.EntryDataManager;
import greenhornsjava.model.Employee;
import greenhornsjava.model.User;

public class EntryData {
 private User user;
 public EntryData(User user) {
  this.user = user;
 }

 public void start() {
  while(true) {
   String nama = null;
   String alamat = null;
   String tempatLahir = null;
   Date tglLahir = new Date(System.currentTimeMillis());
   String response = null;   
   System.out.println("Entry Data Pegawai");
   System.out.println("------------------");
   System.out.print("Nama : ");
   nama = new Scanner(System.in).next(); 
   
   System.out.print("Alamat : ");
   alamat = new Scanner(System.in).next();  
   
   System.out.print("Tempat Lahir : ");
   tempatLahir = new Scanner(System.in).next(); 
   
   while (true) {
    System.out.print("Tanggal Lahir(dd/MM/yyyy) : ");
    try {
     tglLahir = new SimpleDateFormat("dd/MM/yyyy").parse(new Scanner(System.in).next());
     break; 
    } catch (ParseException e) {
     System.out.println("Format tanggal salah.");
    }
   }
   
   System.out.print("[S]impan atau E[x]it?");
   response = new Scanner(System.in).next();    
   if(response.equalsIgnoreCase("x")) return;
   
   EntryDataManager entryDataManager = new EntryDataManager();
   entryDataManager.save(new Employee(nama, alamat, tempatLahir, tglLahir, user));   
   
   System.out.print("[L]anjut Entry atau E[x]it?");
   response = new Scanner(System.in).next();
   
   if(response.equalsIgnoreCase("x")) return;
  }  
 }
}

Langkah #9 : Membangun Logic Data Entry

12. Buat class [EntryDataManager] di package [greenhornsjava.business]
package greenhornsjava.business;

import greenhornsjava.db.InMemoryEmployeeDb;
import greenhornsjava.model.Employee;

public class EntryDataManager {

 public void save(Employee employee) {
  InMemoryEmployeeDb.getInstance().add(employee); 
  
  for (Employee emp : InMemoryEmployeeDb.getInstance()) {
   System.out.println(emp.getNama());
  }
 }
 
 public void clearAll() {
  InMemoryEmployeeDb.getInstance().clear();
 }
 
}

Sebelum melanjutkan, mari kita lihat sejenak struktur aplikasi kita sejenak. Pastikan struktur aplikasi anda sama sebelum melanjutkan.


Kita telah menyelesaikan tahap (4),(5),(6),(7.1) dan (7.2) dari keseluruhan tahap dari aplikasi. Sekarang tiba saatnya kita menjalankan program yang telah kita tulis. Pastikan program berjalan dengan baik seperti Gambar dibawah.


Sekian tutorial 'Menulis Program Aplikasi Java Sederhana (Bagian 2)'. Jika terdapat saran, kritik atau pertanyaan silahkan tinggalkan pesan atau email. Saya akan mencoba untuk menanggapi secepat mungkin. Terima kasih.

2 komentar:

  1. ini import nya dari mana bang..??
    kayak
    import greenhornsjava.model.User;
    import greenhornsjava.business.EntryDataManager;
    import greenhornsjava.business.MenuManager;

    itu mana coding nya????
    coding import nya.....

    BalasHapus