// 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