Senin, 26 November 2012

Struktur data - QueueWithLink

import java.util.Scanner;
class Node {
    public String Nim;
    public String Nama;
    public double Ipk;
    public Node next;
// -------------------------------------------------------------
    public Node(String nim, String nama, double ipk) {
        Nim = nim;
        Nama = nama;
        Ipk = ipk;
    }
// -------------------------------------------------------------
    public void tampilNode() {
        System.out.printf(" %-8s  %-13s  %5s \n",Nim,Nama,Ipk);
    }
    public String getNIM(){
        return Nim;
    }
        //method mengambil data nim
    public String getNama(){
        return Nama;
    }
        //method mengambil data nama
    public double getIpk(){
        return Ipk;
    }
        //method mengambil data ipk
} // end class Node
////////////////////////////////////////////////////////////////

class firstEndList {
    private Node first;
    private Node last;
    public int nilai;
    public int max;
// -------------------------------------------------------------
    public firstEndList() {
        nilai=0;
        first = null;
        last = null;
        max=5;
    }
// -------------------------------------------------------------
    public boolean isEmpty() {
        return first==null;
    }
//--------------------------------------------------------------
    public boolean isFull() { // bernilai true jika queue penuh
        return ( nilai == max);
    }
// -------------------------------------------------------------
    public void insertLast(String Nim, String Nama, double Ipk) {
        Node newNode = new Node(Nim,Nama, Ipk);
        if( isEmpty() )
            first = newNode;
        else
            last.next = newNode;
        last = newNode;
        nilai++;
    }
// -------------------------------------------------------------
    public Node hapusFirst() {
        nilai--;
        Node temp = first;
        if(first.next == null)
            last = null;
        first = first.next;
        return temp;  
    }
// -------------------------------------------------------------
    public void tampil() {
        Node indek = first;
        while(indek != null) {
            indek.tampilNode();
            indek = indek.next;
        }
        System.out.println("");
    }
// -------------------------------------------------------------
} // end class LinkList
////////////////////////////////////////////////////////////////

class LinkQueue {
    private firstEndList list;
//--------------------------------------------------------------
    public LinkQueue() {
        list = new firstEndList();
    }
//--------------------------------------------------------------
    public boolean isEmpty() {
        return list.isEmpty();
    }
//--------------------------------------------------------------
    public boolean isFull() {
        return list.isFull();
    }
//--------------------------------------------------------------
    public void insert(String Nim, String Nama, double Ipk) {
        list.insertLast(Nim, Nama,Ipk);
    }
//--------------------------------------------------------------
    public Node hapus() {
        return list.hapusFirst();
    }
//--------------------------------------------------------------
    public void tampilQueue() {
        System.out.println("Queue (awal-->akhir): ");
        list.tampil();
    }
//--------------------------------------------------------------
    public void clear() {
        while( !isEmpty() ) // hapus data sampai kosong
            hapus();
    }
//--------------------------------------------------------------
} // end class LinkQueue
////////////////////////////////////////////////////////////////

class Prak09_11520244043 {
    public static void main(String [] args) {
          Scanner sken = new Scanner(System.in);
        LinkQueue queue = new LinkQueue();
        String nim, nama;
        double ipk;
        int menu;
        //pilihan menu
        do{
            System.out.println("--------------------");
            System.out.println("    MENU PILIHAN    ");
            System.out.println("--------------------");
            System.out.println("  1. Tambah Data    ");
            System.out.println("  2. Lihat Data     ");
            System.out.println("  3. Hapus Data     ");
            System.out.println("  4. Clear Data     ");
            System.out.println("  5. Keluar         ");
            System.out.print("Pilihan anda --> : ");
              menu = sken.nextInt();
              System.out.println("");
            switch(menu) {
                case 1 : {
                    if(queue.isFull()){
                        System.out.println(" Queue sudah penuh!!! ");
                    }else {
                        System.out.println("   Input Data -->>   ");
                        System.out.print(" Nim  : ");
                        nim = sken.next();//Melakukan input nim
                        System.out.print(" Nama : ");
                        nama = sken.next();//Melakukan input nama
                        System.out.print(" Ipk  : ");
                        ipk = sken.nextDouble();//Melakukan input ipk
                        queue.insert(nim,nama,ipk);
                        System.out.println("---------------------");
                        System.out.println("");
                    }
                    break;
                }case 2 : {
                    if(queue.isEmpty()){
                        System.out.println(" Queue Kosong!!! ");
                    }else {
                        queue.tampilQueue();
                    }
                    break;
                }case 3 : {
                    if(queue.isEmpty()){
                        System.out.println(" Queue Kosong!!! ");
                    }else {          
                        System.out.println("  Hapus data -->>    ");
                        Node y = queue.hapus();
                        if( y != null ){
                            System.out.println("-------------------------");
                            System.out.println(" Data sudah dihapus !!!  ");
                            System.out.println("-------------------------");
                            System.out.println("");
                        }else{
                            System.out.println("--------------------------");
                            System.out.println("Data tidak dapat dihapus!!!");
                            System.out.println("--------------------------");
                            System.out.println("");
                        }
                    }
                    break;
                                      
                }case 4 :{
                    queue.clear();//memanggil method clear pada kelas tumpukan untuk mengosongkan semua data
                    break;
                }
            }
      
        }while(menu > 0 && menu < 5);
    } // end main()
} // end class QueueWithLink
////////////////////////////////////////////////////////////////

Struktur data - LINKED LIST

//Tugas ke_tujuh
/*
    Nama    : Ati Tasmiati Dewi
    Kelas    : G2
*/


import java.util.Scanner;
class Node {
    private String Nim;
    private String Nama;
    private double Ipk;
    public Node next;
// -------------------------------------------------------------
    public Node(String nim, String nama, double ipk) {
        Nim = nim;
        Nama = nama;
        Ipk = ipk;
    }
// -------------------------------------------------------------
    public void tampilNode() {
        System.out.printf(" %-8s  %-13s  %5s \n",Nim,Nama,Ipk);
    }
    public String getNIM(){
        return Nim;
    }
        //method mengambil data nim
    public String getNama(){
        return Nama;
    }
        //method mengambil data nama
    public double getIpk(){
        return Ipk;
    }
        //method mengambil data ipk
} // end class Node
////////////////////////////////////////////////////////////////
class LinkList {
    private Node first;
    public LinkList() {
        first = null;
    }
// -------------------------------------------------------------
    public void insertFirst(String nim, String nama, double ipk) {
        Node newNode = new Node(nim, nama, ipk);
        newNode.next = first;
        first = newNode;
    }
// -------------------------------------------------------------
    // mencari data (data yang dicari --> dat)
    public Node cari(String nama) {
        Node indek = first; // membuat node indek yang "difungsikan" sebagai pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST
        while(!indek.getNama().equals(nama)) {
            if(indek.next == null) // jika NEXT dari Node yang ditunjuk oleh pointer indek == NULL, maka
                return null; // data tidak ditemukan
            else // jika tidak NULL, maka
                indek = indek.next; /* lanjutkan ke node berikutnya, yaitu pointer indek di-set menunjuk ke Node yang ditunjuk oleh NEXT dari Node yang
                                    ditunjuk oleh pointer indek mula-mula */
        }
        return indek; // data ditemukan
    }
// -------------------------------------------------------------
    // menghapus data (data yang dicari --> dat)
    public Node hapus(String nim) {
        Node indek1 = first; /* membuat node indek1 dan node indek2 yang "difungsikan" sebagai
                             pointer dan di-set menunjuk ke Node yang ditunjuk juga oleh pointer FIRST*/
        Node indek2 = first;
        while(!indek1.getNIM().equals(nim)) { // mencari data yang akan dihapus
            if(indek1.next == null)
                return null; // data tidak ditemukan
            else { // jika data ditemukan, maka
                indek2 = indek1; // pointer indek2 di-set untuk menunjuk ke Node yang ditunjuk oleh pointer indek1
                indek1 = indek1.next; // pointer indek1 di-set untuk menunjuk ke Node yang ditunjuk oleh NEXT dari pointer indek1 sebelumnya
            }
        }
        if(indek1 == first) // jika pointer indek1 menunjuk Node yang sama dengan yang ditunjuk oleh pointer first, maka
            first = first.next; // pointer first di-set menunjuk Node yang ditunjuk oleh Next dari Node yang ditunjuk oleh pointer first sebelumnya
        else
            indek2.next = indek1.next; /* Next dari Node yang ditunjuk oleh pointer indek2 di-set untuk menunjuk Node yang ditunjuk oleh Next dari Node
                                        yang ditunjuk oleh pointer indek1 */
        return indek1;
    }
// -------------------------------------------------------------
    public void tampilList() {
        Node indek = first;
       
        System.out.println("-------------------------------");
        System.out.println(" Nim        Nama           Ipk ");
        System.out.println("-------------------------------");
       
        //for(Node i=indek  ; i!-;1--){
                    //while(indek != null) {
                do{
            indek.tampilNode();//menampilkan jika data bukan nul
                       
                       
            indek = indek.next;//lanjut ke index selanjutnya
        }
                while(indek!=null);
        System.out.println("-------------------------------");
        System.out.println("");
    }
// -------------------------------------------------------------
} // end class LinkList
////////////////////////////////////////////////////////////////
class Prak07_11520244043{
    public static void main(String [] args) {
        LinkList list = new LinkList();
          Scanner sken = new Scanner(System.in);
        String nim, nama;
        double ipk;
        int menu;
        //pilihan menu
        do{
            System.out.println("--------------------");
            System.out.println("    MENU PILIHAN    ");
            System.out.println("--------------------");
            System.out.println("  1. Tambah Data    ");
            System.out.println("  2. Lihat Data     ");
            System.out.println("  3. Cari Data      ");
            System.out.println("  4. Hapus Data     ");
            System.out.println("  5. Keluar         ");
            System.out.print("Pilihan anda --> : ");
              menu = sken.nextInt();
              System.out.println("");
            switch(menu) {
                case 1 : {
                    System.out.println("   Input Data -->>   ");
                    System.out.print(" Nim  : ");
                    nim = sken.next();//Melakukan input nim
                    System.out.print(" Nama : ");
                    nama = sken.next();//Melakukan input nama
                    System.out.print(" Ipk  : ");
                    ipk = sken.nextDouble();//Melakukan input ipk
                    list.insertFirst(nim,nama,ipk);
                    System.out.println("---------------------");
                    System.out.println("");
                    break;
                }case 2 : {
                    list.tampilList();
                    break;
                }case 3 : {                   
                    System.out.println("    Cari data -->>   ");
                    System.out.print("  Masukkan NAMA : ");
                    nama = sken.next();//Melakukan input nim
                    System.out.println("---------------------");
                    System.out.println("");
                    System.out.println("---------------------");
                    System.out.println("      Hasil cari     ");
                    System.out.println("---------------------");
                    System.out.println(" Nama Mahasiswa : "+nama);
                    Node x = list.cari(nama);
                    if( x != null){
                        System.out.println("-----------------------");
                        System.out.println("    Data ditemukan !!! ");
                        System.out.println("-----------------------");
                        System.out.println("");
                    }else{
                        System.out.println("------------------------");
                        System.out.println("   Data tidak ditemukan ");
                        System.out.println("------------------------");
                        System.out.println("");
                    }
                    break;
                }case 4 :{                   
                    System.out.println("  Hapus data -->>    ");
                    System.out.print(" Masukkan Nim : ");
                    nim = sken.next();//Melakukan input nim
                    System.out.println("---------------------");
                    System.out.println("");
                    System.out.println("---------------------");
                    System.out.println("      Hapus Data     ");
                    System.out.println("---------------------");
                    System.out.println(" Nim Mahasiswa : "+nim);
                    Node y = list.hapus(nim);
                    if( y != null ){
                        System.out.println("-------------------------");
                        System.out.println(" Data sudah dihapus !!!  ");
                        System.out.println("-------------------------");
                        System.out.println("");
                    }else{
                        System.out.println("--------------------------");
                        System.out.println("Data tidak dapat dihapus!!");
                        System.out.println("--------------------------");
                        System.out.println("");
                    }
                    break;
                }
            }
       
        }while(menu > 0 && menu < 5);
    } // end main()
} // end class LinkList2App
////////////////////////////////////////////////////////////////

Struktur Data - Program Queue

// Tugas queue( Tugas Ke_Enam )
/*
     Nama : Ati Tasmiati Dewi
     Nim  : 11520244043
*/

////////////////////////////////////////////////////////////////

import java.util.Scanner;
import java.io.*;
class antrian {
    private int max;
    private long[] isi;
    private int ekor; // variabel untuk mengidentifikasi data paling akhir masuk ke queue
//--------------------------------------------------------------
    public antrian(int n) { // constructor
        max = n;
        isi = new long[max];
        ekor = -1; // mula-mula queue kosong (inisialisasi)
    }
//--------------------------------------------------------------
    public boolean isFull() { // bernilai true jika queue penuh
        return (ekor == max-1);
    }
//--------------------------------------------------------------
    public boolean isEmpty() { // bernilai true jika queue kosong
        return (ekor == -1);
    }
//--------------------------------------------------------------
    public void enQueue(long j) { // memasukkan data di bagian paling belakang dari antrian
        ekor++; // increment ekor
        isi[ekor] = j; // masukkan data
    }
//--------------------------------------------------------------
    public void deQueue() { // ambil data di bagian depan dari queue
        for(int i=0; i<ekor; i++)
            isi[i]=isi[i+1];
        ekor--;
    }
//--------------------------------------------------------------
    public long peek() { // melihat data di bagian paling depan dari queue
        return isi[0];
    }
//--------------------------------------------------------------
    /* method ini sebenarnya tidak ada dalam queue karena dalam queue
       data yang bisa diakses HANYA data paling awal masuk queue */
    public void tampil() { // menampilkan isi dari queue
        for(int i=0; i<ekor+1; i++) {
            System.out.print(isi[i]);
            System.out.print(" ");
        }
        System.out.println("");
    }
//--------------------------------------------------------------
    public void clear() {
        while( !isEmpty() ) // hapus data sampai kosong
            deQueue();
    }
//--------------------------------------------------------------
} // end class antrian
////////////////////////////////////////////////////////////////
class javaQueue {
    public static void main(String[] args) {
        antrian antri = new antrian(5); // queue menampung sampai 5 data
        int menu;
        do {           
            System.out.println(" ---------- ");
            System.out.println(" Pilih Menu ");
            System.out.println(" ---------- ");
            System.out.println(" 1. Tambah data queue ");
            System.out.println(" 2. Ambil data queue ");
            System.out.println(" 3. Lihat data queue ");
            System.out.println(" 4. Buat queue baru ");
            System.out.println(" 5. Keluar ");
            System.out.println(" ----------------- ");
            System.out.println(" Pilihan anda --> : ");
            System.out.println(" ----------------- ");
              Scanner input = new Scanner(System.in);
              menu = input.nextInt();
              System.out.println("");
//--------------------------------------------------------------
            switch(menu) {
                case 1 : {
                    if(antri.isFull()) System.out.println(" Queue sudah penuh! ");
                    else {
                        System.out.print(" Datanya --> ");
                        long data = input.nextLong();
                        antri.enQueue(data);
                    }
                    break;
                }
                case 2 : {
                    if(antri.isEmpty()) System.out.println(" Queue kosong! ");
                    else {
                        System.out.println(" Data " + antri.peek() + " diambil ");
                        antri.deQueue();
                    }
                    break;
                }
                case 3 : {
                    if(antri.isEmpty()) System.out.println(" Queue kosong! ");
                    else
                        antri.tampil();   
                    break;
                }
                case 4 : antri.clear();
                         break;
            }
        } while(menu > 0 && menu < 5);
    } // end main()
} // end class javaQueue

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

Struktur data & Menu edit

// tugas ke_empat
/*
    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<juml_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

    piblic 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. Penampilan data ");
            System.out.println(" 5. 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 (meu >=1 && menu <6);
    }//End main()
}//End class