import java.util.*;
public class Administrasi{
final static int pjg=1000;
static class Mhs{String namaMatkul, indeks; int nilai,sks; };
static Mhs[] mahasiswa=new Mhs[pjg];
static int jumlahData;
static Scanner key=new Scanner(System.in);
static PrintStream tulisFile=null;
static Scanner bacaFile=null;
static String namaFile="";
static boolean fileAda, dataKetemu;
static int posisi;
static double IPK;
public static void main(String[] args){
Menu();
}
static void Menu(){
int pilih=0;
while(pilih!=5){
System.out.println("Menu:\n1.Membuat file baru\n2.Menambah data\n3.Lihat data\n4.edit data\n5.Exit");
System.out.print("Pilihanmu :");
pilih=key.nextInt();
System.out.println(" ");
if(pilih==3){
System.out.println("Menu Lihat data:\n1.Tampil Data\n2.Urut data\n3.Cari data\n4.Hitung IPK\n5.Menu awal");
System.out.print("Pilihanmu :");
pilih=key.nextInt();
System.out.println(" ");
if(pilih==1) Tampil();
else if(pilih==2) Urut();
else if(pilih==3)Cari();
else if(pilih==4)Hitung();
else if(pilih==5) Menu();
} else if(pilih==1){
Tulis();
}else if(pilih==2)Tambah();
else if(pilih==4)Edit();
}
}
//prosedur tulis
static void Tulis(){
System.out.println("Tulis Baru");
System.out.print("Nama File (diisi dengan nama mahasiswa) : ");
namaFile=key.next();
System.out.print("Jumlah matkul : "); jumlahData=key.nextInt();
System.out.println();
for(int i=0;i<jumlahData;i++){
mahasiswa[i]=new Mhs();
System.out.print("Nama Matkul :"); mahasiswa[i].namaMatkul=key.next();
System.out.print("Jumlah SKS :"); mahasiswa[i].sks=key.nextInt();
System.out.print("Indeks :"); mahasiswa[i].indeks=key.next();
}
String s="";
try{tulisFile=new PrintStream(new File(namaFile));
for (int i=0;i<jumlahData;i++){
s=mahasiswa[i].namaMatkul+"\t"+mahasiswa[i].sks+"\t"+mahasiswa[i].indeks;
tulisFile.println(s);}
//prosedur Hitung
static void Hitung(){
Baca();
for(int i=0;i<jumlahData;i++){
if(mahasiswa[i].indeks.equalsIgnoreCase("A"))
mahasiswa[i].nilai=4;
else if(mahasiswa[i].indeks.equalsIgnoreCase("B"))
mahasiswa[i].nilai=3;
else if(mahasiswa[i].indeks.equalsIgnoreCase("C"))
mahasiswa[i].nilai=2;
else if(mahasiswa[i].indeks.equalsIgnoreCase("D"))
mahasiswa[i].nilai=1;
else if(mahasiswa[i].indeks.equalsIgnoreCase("E"))
mahasiswa[i].nilai=0;
}
double jumlah=0;
for(int i=0;i<jumlahData;i++){
jumlah=jumlah+mahasiswa[i].sks;
}
double jumlahIP=0;
for(int i=0;i<jumlahData;i++){
jumlahIP=jumlahIP+(mahasiswa[i].sks*mahasiswa[i].nilai);
}
double IPK=jumlahIP/jumlah;
System.out.println("Nama Mahasiswa: "+namaFile);
for(int i=0;i<jumlahData;i++){
System.out.println(mahasiswa[i].namaMatkul + "\t" + mahasiswa[i].sks+"\t"+mahasiswa[i].indeks+"\t"+mahasiswa[i].nilai+"\t"+(mahasiswa[i].nilai*mahasiswa[i].sks));
}
System.out.println("Nilai IPK anda adalah "+IPK);
System.out.println("");
}
//prosedur baca
static void Baca(){
System.out.print("Nama File: ");
namaFile=key.next();
try{bacaFile=new Scanner(new File(namaFile));
int i=0;
while(bacaFile.hasNext()){
mahasiswa[i]=new Mhs();
mahasiswa[i].namaMatkul=bacaFile.next();
mahasiswa[i].sks=bacaFile.nextInt();
mahasiswa[i].indeks=bacaFile.next();
bacaFile.nextLine();
i++;
}
fileAda = true;
jumlahData=i;
}catch(FileNotFoundException e){System.out.println("File Tidak Ada");}
}
//prosedur tampil
static void Tampil(){
Baca();
for(int i=0;i<jumlahData;i++)
System.out.println(mahasiswa[i].namaMatkul + "\t" + mahasiswa[i].sks+"\t"+mahasiswa[i].indeks+"\t"+IPK);
}
//prosedur urut
static void Urut(){
Baca();
if(fileAda){
if(jumlahData>1){
String tempNama, tempNilai;
for(int i=0;i<jumlahData-1;i++){
for(int j=jumlahData-1; j>i; j--){
if(mahasiswa[j].nilai>mahasiswa[j-1].nilai){
tempNama=mahasiswa[j].namaMatkul;
tempNilai=mahasiswa[j].indeks;
mahasiswa[j].namaMatkul=mahasiswa[j-1].namaMatkul;
mahasiswa[j].indeks=mahasiswa[j-1].indeks;
mahasiswa[j-1].namaMatkul=tempNama;
mahasiswa[j-1].indeks=tempNilai;
}
}
}
}
}Tampil();
String s="";
try{tulisFile = new PrintStream (new File (namaFile)); //membuat file harus pake try and catch, dari tulisfile, kalo masuk, maka baru ke for
for(int i=0; i<jumlahData; i++){
s=mahasiswa[i].namaMatkul+"\t"+mahasiswa[i].sks+"\t"+mahasiswa[i].indeks;
tulisFile.println(s);}
}catch(FileNotFoundException e){System.out.println("File Error");}
}
//prosedur cari
static void Cari(){
Baca();
if(fileAda){
System.out.print("Nama Mata Kuliah : ");
String cariNama= key.next();
int i =0;
dataKetemu=false;
while((i<jumlahData)&&(!dataKetemu)){
if(mahasiswa[i].namaMatkul.equalsIgnoreCase(cariNama)) dataKetemu=true;
else i++;}
posisi=i;
if(dataKetemu){
System.out.println("Nama Mata Kuliah : " + mahasiswa[posisi].namaMatkul);
System.out.println("Nilai : " + mahasiswa[posisi].indeks);
}else System.out.println("Nama Mata Kuliah " + cariNama + " Tidak Ada di File" );
}
}
//prosedur tambah
static void Tambah(){
Baca();
System.out.println();
int j=jumlahData;
System.out.print("Jumlah data tambahan : ");
jumlahData=key.nextInt();
jumlahData+=j;
for(int i=j;i<jumlahData;i++){
mahasiswa[i]=new Mhs();
System.out.println("Data ke-"+(i+1));
System.out.println();
System.out.print("Nama Matakuliah : ");
mahasiswa[i].namaMatkul=key.next();
System.out.print("SKS : ");
mahasiswa[i].sks = key.nextInt();
System.out.print("indeks : ");
mahasiswa[i].indeks=key.next();
}
String s="";
try{tulisFile=new PrintStream(new File(namaFile));
for(int i=0;i<jumlahData;i++){
s=mahasiswa[i].namaMatkul+"\t"+mahasiswa[i].sks +"\t" + mahasiswa[i].indeks;
tulisFile.println(s);}
}catch(FileNotFoundException e){System.out.println("File Error");}
}
//prosedur edit
static void Edit(){
Cari();
if(dataKetemu){
System.out.print("Nama Matakuliah : ");mahasiswa[posisi].namaMatkul=key.next();
System.out.print("Nilai Baru : ");mahasiswa[posisi].indeks=key.next();
}
String s=""; //dari sini menginputkan array kedalam file
try{tulisFile = new PrintStream (new File (namaFile));
for(int i=0; i<jumlahData; i++){
s=mahasiswa[i].namaMatkul+"\t"+mahasiswa[i].indeks;
tulisFile.println(s);}
}catch(FileNotFoundException e){System.out.println("File Error");}
}
}
Tampilan Menu Utama:
Langkah-langkah membuat file baru:
- Tulis nama file yang akan dibuat (contoh: rina.txt)
- Isikan jumlah mata kuliah yang akan diisi.
- Isikan nama mata kuliah.
- Isikan jumlah sks
- isikan indeks yang diperoleh.
Tampilan Menu Menambah Data:
Langkah-langkah menambah data:
- Tuliskan nama file yang akan ditambah datanya
- Isikan jumlah data yang akan ditambahkan
- Tuliskan nama mata kuliah yang akan ditambahkan.
- Tuliskan sks mata kuliah yang akan ditambahkan.
- Isikan indeks yang diperoleh dari mata kuliah yang akan ditambahkan.
Tampilan Menu Lihat Data:
Tampilan Menu Tampil Data:
Tampilan Menu Urut Data:
Tampilan Menu Cari Data:
Langkah-langkah mencari data:
- Tulis nama file yang akan dicari
- Tulis nama mata kuliah yang akan dicari.
Tampilan Menu Hitung IPK:
Tampilan Menu Edit Data:
Langkah-langkah mengedit data:
- Tulis nama file yang akan di edit
- Tuliskan nama mata kuliah yang akan diedit.
- Isikan nilai baru.