Senin, 26 November 2012

Struktur Data ke 5

// tugas ke_lima
/*
    Nama    : Ati Tasmiati Dewi
    NIM        : 11520244043
*/
import java.util.Scanner;
/////////////////////////////////////////////////////////////////
class mahasiswa { // mahasiswa mempunyai 3 data, nim, nama, dan ipk
    private String nimMhs;
    private String namaMhs;
    private double ipkMhs;
//--------------------------------------------------------------
    // constructor
    // berguna juga untuk "memasukkan" data mahasiswa
    public mahasiswa(String nim, String nama, double ipk) {
        nimMhs = nim;
        namaMhs = nama;
        ipkMhs = ipk;
    }
//--------------------------------------------------------------
    // method untuk menampilkan data mahasiswa
    public void lihatData() {
        System.out.println(nimMhs + "    --> " + namaMhs + "    --> " + ipkMhs);
    }
//--------------------------------------------------------------
    // method memperoleh (mengambil) data nama
    public String getNama(){
        return namaMhs;
    }
    public String getNIM(){
        return nimMhs;
    }
    public double getIpk(){
        return ipkMhs;
    }
} // end class mahasiswa
/////////////////////////////////////////////////////////////////
class arai {
    private mahasiswa[] dt; // array
    private int jml_data;
    private int i;
//--------------------------------------------------------------
    public arai(int max) { // constructor
        dt = new mahasiswa[max];
        jml_data = 0; // jumlah data mula-mula nol
    }
//--------------------------------------------------------------
// method input untuk memasukkan data ke dalam array
    public void input(String nim, String nama, double ipk) {
        dt[jml_data] = new mahasiswa(nim,nama,ipk);
        jml_data++; // jika ada data masuk maka jumlah datanya bertambah
    }
//--------------------------------------------------------------
// method dataArai untuk menampilkan data yang ada dalam array
// method tidak mengembalikan nilai (menggunakan void) --> PROCEDURE
    public void dataArai() { // menampilkan isi dari array
        System.out.println("");
        System.out.println("----------------------------");
        System.out.println("NIM       Nama        IPK");
        System.out.println("----------------------------");
        for(i=0; i<jml_data; i++)
            dt[i].lihatData();
        System.out.println("----------------------------");
        System.out.println("");
    }
//--------------------------------------------------------------
// method cari untuk mencari data yang ada dalam array
// method mengembalikan nilai (tidak menggunakan void) --> FUNCTION
// pencarian data berdasarkan nama mahasiswa
    public boolean cari(String cr) {
        for(i=0; i<jml_data; i++) // mencari data pada setiap elemen array
            if( dt[i].getNama().equals(cr) ) // membandingkan data pada array dengan yang dicari
                break; // jika sama maka pencarian dihentikan
        if(i == jml_data) // apakah pencarian yang dilakukan sebanyak jumlah elemen array?
            return false; // jika true data TIDAK ditemukan (false)
        else
            return true; // jika false data ditemukan (true)
    }
   
    public boolean cari2(String nim){
        for(i=0; i<jml_data; i++) // mencari data pada setiap elemen array
            if( dt[i].getNIM().equals(nim) ) // membandingkan data pada array dengan yang dicari
                break; // jika sama maka pencarian dihentikan
        if(i == jml_data) // apakah pencarian yang dilakukan sebanyak jumlah elemen array?
            return false; // jika true data TIDAK ditemukan (false)
        else
            return true; // jika false data ditemukan (true)
    }
   
    public void ketemu(String cr){
        for(i=0; i<jml_data; i++) // mencari data pada setiap elemen array
            if( dt[i].getNama().equals(cr) ) // membandingkan data pada array dengan yang dicari
                System.out.println("NIM  : "+dt[i].getNIM()+"\nNama : "+dt[i].getNama()+"\nIPK  : "+dt[i].getIpk());
                   System.out.println("");
                //menampilkan data nama NIM sama IPK
    }
   
        public void cariIPK(double cari){
            int jum=0;
           
            for(i=0; i<jml_data; i++){
                if(dt[i].getIpk()==cari ){
                    System.out.println("");
                    System.out.println(" Nim : "+dt[i].getNIM() +"\nNama : "+dt[i].getNama() +"\nIPK : "+dt[i].getIpk());
                    jum++;
                }
            }
                System.out.println("");
                System.out.println(" Ditemukan IPK "+cari+" dengan jumlah "+jum+" orang");
               
            if(jum==0){
                System.out.println(" Atau IPK "+jum+" tidak ditemukan ");
            }
        }
//--------------------------------------------------------------
// method hapus untuk menghapus data yang ada dalam array
// method mengembalikan nilai (tidak menggunakan void) --> FUNCTION
    public boolean hapus(String hps) {
        boolean cri = cari(hps); // memanggil method cari
        if (cri==true) { // bila data ditemukan maka dihapus
            for(int j=i; j<jml_data-1; j++)
                dt[j] = dt[j+1];
            jml_data--; // jangan lupa jumlah data dikurangi satu!!!
            return true;
        }
        else // bila data tidak ditemukan
            return false;
    }

    public boolean cariNIM(String cari){
        for(i=0; i<jml_data; i++)//mencari data pada setiap elemen array
            if(dt[i].getNIM().equals(cari)) //membandingkan data pada array dengan yang dicari
                break;    //jika sama maka pencarian dihentikan
        if(i==jml_data) //apakah pencarian yang dilakukan sebanyak jumlah elemen array?
            return false;//mengembalikan nilai false
        else
            return true; //mengembalikan nilai true
    }//End metod cariNIM

    public void ketemuNIM(String cari){
        String nim, nama; double ipk; //mendeklarasikan tipe data
        String inputNIM, inputNAMA; double inputIPK;//mendeklarasikan tipe data
        int submenu;//mendeklarasikan tipe data
        Scanner sken= new Scanner(System.in);
        for(i=0; i<jml_data; i++)//mencari data pada setiap elemen array
            if(dt[i].getNIM().equals(cari)){//membandingkan data pada array dengan yang dicari
                do{
                nim=dt[i].getNIM();//proses pengambilan nilai pada array yang equals dengan yang dicari
                nama=dt[i].getNama();//proses pengambilan nilai pada array yang equals dengan yang dicari
                ipk=dt[i].getIpk();//proses pengambilan nilai pada array yang equals dengan yang dicari
                System.out.println(" 1. NIM  : "+nim);
                System.out.println(" 2. NAMA : "+nama);
                System.out.println(" 3. IPK  : "+ipk);
                System.out.println(" 4. KELUAR ");
                System.out.print(" Menu Pilihan Data yang diubah : ");
                submenu = sken.nextInt(); //inputan pilihan yang disimpan pada submenu
                if(submenu==1){
                    System.out.println(" Masukkan NIM baru : ");
                    inputNIM = sken.next();//melakukan input NIM yang baru lalu disimpan pada inputNIM
                    dt[i] = new mahasiswa(inputNIM,nama,ipk);//mengganti isi data pada data array yang diinginkan untuk diganti
                }else if(submenu==2){
                    System.out.println(" Masukkan NAMA yang baru : ");
                    inputNAMA =sken.next();//melakukan input nama yang baru lalu disimpan pada inputNAMA
                    dt[i] = new mahasiswa(nim,inputNAMA,ipk);//mengganti isi data pada data array yang diinginkan untuk diganti
                }else if(submenu==3){
                    System.out.print(" Masukkan IPK yang baru : ");
                    inputIPK=sken.nextDouble();//melakukan input IPK yang baru lalu disimpan pada inputIPK
                    dt[i]=new mahasiswa(nim,nama,inputIPK);//mengganti isi data pada data array yang diinginkan untuk diganti
                }
                }while (submenu >= 1 && submenu < 4); //proses pengulangan jika nilai lebih besar =1 dan lebih kecil dari 4
            }//End if
    }//End metod ketemuNIM
}//End class metod


/////////////////////////////////////////////////////////////////////////
class Prak05_11520244043 {
    public static void main(String[] args) {
        int i=1, jml_arai=100;
        Scanner sken = new Scanner(System.in);
        arai md = new arai(jml_arai); // memanggil class metod dengan variabel md
        String nim, nama, cariData;
        double ipk, cariIPK;
       
//----------------------------------------------------------------------

        int menu;
                int pilih;
        do {
            System.out.println("");
                        System.out.println(" ----------------------- ");
            System.out.println(" Pilih Menu di bawah ini ");
                        System.out.println(" ----------------------- ");
            System.out.println(" 1. Memasukkan data ");
            System.out.println(" 2. Pencarian data ");
            System.out.println(" 3. Penghapusan data ");
            System.out.println(" 4. Pembaharuan data ");
            System.out.println(" 5. Penampilan data ");
            System.out.println(" 6. Keluar ");
            System.out.print(" Anda memilih : ");
              menu = sken.nextInt();
                           
              if (menu==1){
                do{
                  System.out.println(" Masukkan data mahasiswa ke-" + i);
                  System.out.print(" NIM  : ");
                  nim = sken.next();
                System.out.print(" Nama : ");
                nama = sken.next();
                System.out.print(" IPK  : ");
                ipk = sken.nextDouble();
                boolean cri=md.cari2(nim);
                if(cri==true){
                    System.out.println(" Sudah ada mahasiswa dengan nim "+nim);
                    System.out.println("");
                }else{
                    md.input(nim,nama,ipk); // memanggil method input pada class metod
                    i++;
                    break;
                }
                }while(true);
            }
           
            if (menu==2) {
                            do{
                                System.out.println("");
                                System.out.println(" -------------- ");
                                System.out.println(" Menu Pencarian ");
                                System.out.println(" -------------- ");
                                System.out.println(" 1. Pencarian Nama ");
                                System.out.println(" 2. Pencarian IPK ");
                                System.out.println(" 3. Keluar ");
                                System.out.print(" Masukkan Menu yang dipilih : ");
                                pilih=sken.nextInt();
                               
                                if (pilih==1){
                                    System.out.print(" Masukkan Nama yang Anda Cari : ");
                                    cariData=sken.next();          
                                    boolean hasil = md.cari(cariData); // memanggil method cari pada class metod
                                    if (hasil==true){
                       System.out.println("");
                       System.out.println(" ------------------------ ");
                       System.out.println(" Nama Mahasiswa ditemukan ");
                       System.out.println(" ------------------------ ");
                    md.ketemu(cariData);
                   }else{
                       System.out.println(" Nama " + cariData + " tidak ditemukan ");
                   }
                System.out.println("");
                                }else if(pilih==2){
                                    System.out.print(" Masukkan IPK yang Anda Cari : ");
                                    cariIPK=sken.nextDouble();
                                    md.cariIPK(cariIPK);
                                }
                                }while(pilih >= 1 && pilih < 3);
                           
            } else if (menu==3) {
                System.out.print(" Data yang anda hapus = ");
                   cariData = sken.next();
                   boolean sts = md.hapus(cariData); // memanggil method hapus pada class metod
                   if (sts==true)
                       System.out.println(" Data " + cariData + " berhasil dihapus ");
                   else
                       System.out.println(" Data " + cariData + " TIDAK ditemukan ");
               
                System.out.println("");
   
            } else if (menu==4) {
                System.out.print(" Masukkan NIM yang dicari : ");
                String cariNIM = sken.next();//input NIM yang dicari
                boolean hasilNIM = md.cariNIM(cariNIM);//memanggil method cariNIM pada class metod
                if(hasilNIM==true){
                    System.out.println("");
                    System.out.println(" ----------------------- ");
                    System.out.println(" NIM mahasiswa ditemukan ");
                    System.out.println(" ----------------------- ");
                    md.ketemuNIM(cariNIM);//memanggil method ketemuNIM pada class metod
                }else{
                    System.out.println("  NIM " + cariNIM + " tidak ditemukan ! ");//command jika NIM tidak ditemukan atau false
                }
                System.out.println("");
            }else if(menu==5){
                md.dataArai();
            }
        }while (menu >=1 && menu <6);
    }//End main()
}//End class

Tidak ada komentar:

Posting Komentar