Aplikasi SIAMIK OOP Versi 2.0: Implementasi Relasi Asosiasi

Berikut ini adalah source code lengkap class utama aplikasi Sistem Informasi Akademik yang menerapkan dua bentuk relasi Asosiasi, yaitu agregasi, dan komposisi. Dalam versi ini semua object yang dibuat masih berjumlah tunggal. Di versi berikutnya akan dikembangkan program yang menggunakan konsep array of object.

package pkgSIAMIK;

import java.util.Scanner;
public class appSIAMIK {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        cMhs mhs=null;
        cMatkul mk=null;
        cKRS krs=null;
        cProdi prodi=null;
        int pilih, pilih2;
        
        do{
            System.out.println("\nMENU SIAMIK");
            System.out.println("1. Mahasiswa");
            System.out.println("2. Mata Kuliah");
            System.out.println("3. Kartu Rencana Studi");
            System.out.println("4. Program Studi");
            System.out.println("5. Exit");
            System.out.print("Pilih = ");
            pilih = sc.nextInt();
            System.out.println("");
            switch(pilih){
                case 1:
                    System.out.println("Sub Menu Mahasiswa");
                    System.out.println("1. Tambah Mhs");
                    System.out.println("2. Hapus Mhs");
                    System.out.println("3. Update Data");
                    System.out.println("4. Cetak Data");
                    System.out.println("5. Query");
                    System.out.print("Pilih = ");
                    pilih2 = sc.nextInt();
                    switch(pilih2){
                        case 1:
                            System.out.println("== Tambah Mhs ==");
                            System.out.print("Masukkan Nama = ");
                            sc = new Scanner(System.in);
                            String nama = sc.nextLine();
                            System.out.print("Masukkan NPM  = ");
                            String npm = sc.next();
                            mhs = new cMhs(npm, nama);
                            break;
                        case 2:
                            System.out.println("== Hapus Mhs ==");
                            System.out.print("Masukkan NPM = ");
                            npm = sc.next();
                            if(mhs != null && mhs.getNPM().equalsIgnoreCase(npm))
                            {
                                System.out.println("Data ditemukan");
                                System.out.println("Dihapus? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    mhs = null;
                                    System.out.println("Data Mhs dihapus...");
                                }
                                else System.out.println("Batal hapus...");
                            }
                            else System.out.println("Data tidak ada...");
                            break;
                        case 3:
                            System.out.println("== Update Data ==");
                            System.out.print("Masukkan NPM = ");
                            npm = sc.next();
                            if(mhs != null && mhs.getNPM().equalsIgnoreCase(npm))
                            {
                                System.out.println("Data ditemukan");
                                System.out.print("Nama baru = ");
                                sc = new Scanner(System.in);
                                String nm = sc.nextLine();
                                System.out.print("IPK baru  = ");
                                double ip = sc.nextDouble();
                                System.out.println("Simpan? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    mhs.setNama(nm);
                                    mhs.setIPK(ip);
                                    System.out.println("Data diperbarui...");
                                }
                                else System.out.println("Batal update...");
                            }
                            else System.out.println("Data tidak ada...");
                            break;
                        case 4:
                            System.out.println("== Lihat Data ==");
                            if(mhs!=null){
                                System.out.println("NPM  : "+mhs.getNPM());
                                System.out.println("Nama : "+mhs.getNama());
                                System.out.println("IPK  : "+mhs.getIPK());
                            }
                            else System.out.println("Data kosong...");
                            break;
                        case 5:
                            System.out.println("== Query Data ==");
                            if(mhs!=null)
                                System.out.println(mhs.ToString());
                            else System.out.println("Data kosong...");
                            break;
                    }
                    break;
                case 2:
                    System.out.println("Sub Menu Mata Kuliah");
                    System.out.println("1. Buat Mata Kuliah");
                    System.out.println("2. Hapus Mata Kuliah");
                    System.out.println("3. Update Data");
                    System.out.println("4. Cetak Data");
                    System.out.println("5. Query");
                    System.out.print("Pilih = ");
                    pilih2 = sc.nextInt();
                    switch(pilih2){
                        case 1:
                            System.out.println("== Buat Matkul ==");
                            System.out.print("Masukkan Nama = ");
                            sc = new Scanner(System.in);
                            String nama = sc.nextLine();
                            System.out.print("Masukkan Kode = ");
                            String kd = sc.next();
                            System.out.print("Masukkan SKS  = ");
                            int sks = sc.nextInt();
                            mk = new cMatkul(kd, nama, sks);
                            break;
                        case 2:
                            System.out.println("== Hapus Matkul ==");
                            System.out.print("Masukkan Kode MK = ");
                            kd = sc.next();
                            if(mk != null && mk.getKodeMK().equalsIgnoreCase(kd))
                            {
                                System.out.println("Data ditemukan");
                                System.out.println("Dihapus? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    mk = null;
                                    System.out.println("Data MK dihapus...");
                                }
                                else System.out.println("Batal hapus...");
                            }
                            else System.out.println("Data tidak ada...");
                            break;
                        case 3:
                            System.out.println("== Update Data ==");
                            System.out.print("Masukkan Kode MK = ");
                            kd = sc.next();
                            if(mk != null && mk.getKodeMK().equalsIgnoreCase(kd))
                            {
                                System.out.println("Data ditemukan");
                                System.out.print("Nama baru = ");
                                sc = new Scanner(System.in);
                                String nm = sc.nextLine();
                                System.out.print("SKS baru  = ");
                                sks = sc.nextInt();
                                System.out.println("Simpan? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    mk.setNamaMK(nm);
                                    mk.setSKS(sks);
                                    System.out.println("Data diperbarui...");
                                }
                                else System.out.println("Batal update...");
                            }
                            else System.out.println("Data tidak ada...");
                            break;
                        case 4:
                            System.out.println("== Lihat Data ==");
                            if(mk!=null){
                                System.out.println("Kode MK : "+mk.getKodeMK());
                                System.out.println("Nama    : "+mk.getNamaMK());
                                System.out.println("SKS     : "+mk.getSKS());
                            }
                            else System.out.println("Data kosong...");
                            break;
                        case 5:
                            System.out.println("== Query Data ==");
                            if(mk!=null)
                                System.out.println(mk.ToString());
                            else System.out.println("Data kosong...");
                            break;
                    }
                    break;
                case 3:
                    System.out.println("Sub Menu KRS Mahasiswa");
                    System.out.println("1. Tambah Data");
                    System.out.println("2. Hapus Data");
                    System.out.println("3. Update Data");
                    System.out.println("4. Cetak Data");
                    System.out.println("5. Query");
                    System.out.print("Pilih = ");
                    pilih2 = sc.nextInt();
                    switch(pilih2){
                        case 1:
                            System.out.println("== Tambah Data ==");
                            System.out.print("Masukkan NPM      = ");
                            String npm = sc.next();
                            System.out.print("Masukkan Kode MK  = ");
                            String kd = sc.next();
                            System.out.print("Masukkan Semester = ");
                            String smt = sc.next();
                            //validasi mhs dan matkul
                            if(mhs!=null && mhs.getNPM().equalsIgnoreCase(npm)){
                                if(mk!=null && mk.getKodeMK().equalsIgnoreCase(kd)){
                                    //buat object KRS yang baru
                                    krs = new cKRS();
                                    //kopi object mhs dan mk ke dalam object di KRS
                                    krs.setMhs(mhs);
                                    krs.setMatkul(mk);
                                    krs.setSemester(smt);
                                    System.out.println("Penambahan sukses...");
                                }
                                else{
                                    System.out.println("Kode MK tidak ada!");
                                }
                            }
                            else{
                                System.out.println("NPM tidak ada!");
                            }
                            break;
                        case 2:
                            System.out.println("== Hapus Data ==");
                            System.out.print("Masukkan NPM      = ");
                            npm = sc.next();
                            System.out.print("Masukkan Kode MK  = ");
                            kd = sc.next();
                            System.out.print("Masukkan Semester = ");
                            smt = sc.next();
                            //validasi mhs, matkul, dan semester
                            if(krs!=null && krs.getMhs().getNPM().equalsIgnoreCase(npm)){
                                if(krs.getMatkul().getKodeMK().equalsIgnoreCase(kd)){
                                    if(krs.getSemester().equalsIgnoreCase(smt)){
                                        //hapus object KRS (dan semua isinya)
                                        krs = null;
                                        System.out.println("Penghapusan sukses...");
                                    }
                                    else System.out.println("Semester tidak ada!");
                                }
                                else{
                                    System.out.println("Kode MK tidak ada!");
                                }
                            }
                            else{
                                System.out.println("NPM tidak ada!");
                            }
                            break;
                        case 3:
                            System.out.println("== Update Data ==");
                            System.out.print("Masukkan NPM      = ");
                            npm = sc.next();
                            System.out.print("Masukkan Semester = ");
                            smt = sc.next(); 
                            //validasi mhs, semester, kode mk baru
                            if(krs != null && krs.getMhs().getNPM().equalsIgnoreCase(npm))
                            {
                                if(krs.getSemester().equalsIgnoreCase(smt)){
                                    System.out.print("Kode MK baru   = ");
                                    kd = sc.next();
                                    if(mk!=null && mk.getKodeMK().equalsIgnoreCase(kd)){
                                        System.out.println("Simpan? 1.Ya, 2.Tidak");
                                        System.out.print("Pilih = ");
                                        pilih2 = sc.nextInt();
                                        if(pilih2==1){
                                            //update object matkul di KRS dgn mk
                                            krs.setMatkul(mk);
                                            System.out.println("Update sukses...");
                                        }
                                        else System.out.println("Update batal!");
                                    }
                                    else{
                                        System.out.println("Kode MK Tidak Ada!");
                                    }
                                }
                                else{
                                    System.out.println("Semester Tidak Ada!");
                                }
                            }
                            else System.out.println("NPM Tidak Ada!");
                            break;
                        case 4:
                            System.out.println("== Cetak Data ==");
                            if(krs!=null){
                                System.out.print("NPM      : "+krs.getMhs().getNPM());
                                System.out.println(" - "+krs.getMhs().getNama());
                                System.out.print("Kode MK  : "+krs.getMatkul().getKodeMK());
                                System.out.println(" - "+krs.getMatkul().getNamaMK());
                                System.out.println("Semester : "+krs.getSemester());
                            }
                            else System.out.println("KRS Kosong!");
                            break;
                        case 5:
                            System.out.println("== Query Data ==");
                            if(krs!=null)
                                System.out.println(krs.ToString());
                            else System.out.println("KRS kosong!");
                            break;
                    }
                    break;
                case 4:
                    System.out.println("Sub Menu Prodi");
                    System.out.println("1. Buat Prodi");
                    System.out.println("2. Hapus Prodi");
                    System.out.println("3. Update Data Prodi");
                    System.out.println("4. Tambah Mahasiswa");
                    System.out.println("5. Hapus Mahasiswa");
                    System.out.println("6. Cetak Mahasiswa");
                    System.out.print("Pilih = ");
                    pilih2 = sc.nextInt();
                    switch(pilih2){
                        case 1:
                            System.out.println("== Buat Prodi ==");
                            System.out.print("Masukkan Kode       = ");
                            String kd = sc.next();
                            System.out.print("Masukkan Nama       = ");
                            sc = new Scanner(System.in);
                            String nm = sc.nextLine();
                            System.out.print("Masukkan Akreditasi = ");
                            String ak = sc.next();
                            prodi = new cProdi(kd, nm, ak);
                            System.out.println("Prodi Berhasil Dibuat!");
                            break;
                        case 2:
                            System.out.println("== Hapus Prodi ==");
                            System.out.print("Masukkan Kode Prodi  = ");
                            kd = sc.next();
                            if(prodi!=null && prodi.getKodeProdi().equalsIgnoreCase(kd)){
                                System.out.println("Hapus? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    prodi=null;
                                    System.out.println("Berhasil dihapus...");
                                }
                                else System.out.println("Batal dihapus...");
                            }
                            else{
                                System.out.println("Prodi Tidak Ada!");
                            }
                            break;
                        case 3:
                            System.out.println("== Update Data ==");
                            System.out.print("Masukkan Kode Prodi = ");
                            kd = sc.next();
                            if(prodi != null && prodi.getKodeProdi().equalsIgnoreCase(kd))
                            {
                                System.out.print("Nama baru Prodi  = ");
                                sc = new Scanner(System.in);
                                nm = sc.nextLine();
                                System.out.print("Akreditasi baru  = ");
                                ak = sc.next();
                                System.out.println("Update? 1.Ya, 2.Tidak");
                                System.out.print("Pilih = ");
                                pilih2 = sc.nextInt();
                                if(pilih2==1){
                                    prodi.setNamaProdi(nm);
                                    prodi.setAkreditasi(ak);
                                    System.out.println("Update sukses...");
                                }
                                else System.out.println("Batal update...");
                            }
                            else System.out.println("Prodi Tidak Ada!");
                            break;
                        case 4:
                            System.out.println("== Tambah Mahasiswa ==");
                            System.out.print("Masukkan Kode Prodi = ");
                            kd = sc.next();                            
                            System.out.print("Masukkan NPM = ");
                            String npm = sc.next();
                            if(mhs!=null && mhs.getNPM().equalsIgnoreCase(npm)){
                                if(prodi!=null && prodi.getKodeProdi().equalsIgnoreCase(kd)){
                                    prodi.setMhs(mhs);
                                    System.out.println("Tambah sukses...");
                                }
                                else System.out.println("Prodi Tidak Ada!");
                            }
                            else System.out.println("NPM tidak ada!");
                            break;
                        case 5:
                            System.out.println("== Hapus Mahasiswa ==");
                            System.out.print("Masukkan Kode Prodi = ");
                            kd = sc.next();                            
                            System.out.print("Masukkan NPM        = ");
                            npm = sc.next();
                            if(prodi!=null && prodi.getKodeProdi().equalsIgnoreCase(kd))
                                if(prodi.getMhs()!=null && prodi.getMhs().getNPM().equalsIgnoreCase(npm)){
                                    prodi.deleteMhs();
                                    System.out.println("Hapus sukses...");
                                }
                                else{
                                    System.out.println("NPM tidak ada!");
                                }
                            else System.out.println("Prodi tidak ada!");
                            break;
                        case 6:
                            System.out.println("== Lihat Mahasiswa ==");
                            if(prodi!=null){
                                System.out.println("Prodi "+prodi.getNamaProdi());
                                if(prodi.getMhs()!=null)
                                    System.out.println(prodi.getMhs().ToString());
                                else System.out.println("Mahasiswa Tidak Ada!");
                            }
                            else System.out.println("Prodi Tidak Ada!");
                            break;
                    }
                    break;
                case 5:
                    System.out.println("Terima kasih...");
            }
        }while (pilih!=5);
    }
}

No comments:

Post a Comment