0% found this document useful (0 votes)
54 views16 pages

Nama: Tatto Baskoro Nim: A11.2017.10113 Kelompok: PBO - A11.4419 Tugas 3 Pbo

1. The document describes a Java program that models a university registration system, including classes like Person, Student, Course, and Schedule. 2. It defines methods and properties for each class, like setting/getting a student's name and ID or adding/dropping a course from their schedule. 3. The classes have relationships like a student having a list of scheduled courses and a course having multiple offerings in different schedules.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views16 pages

Nama: Tatto Baskoro Nim: A11.2017.10113 Kelompok: PBO - A11.4419 Tugas 3 Pbo

1. The document describes a Java program that models a university registration system, including classes like Person, Student, Course, and Schedule. 2. It defines methods and properties for each class, like setting/getting a student's name and ID or adding/dropping a course from their schedule. 3. The classes have relationships like a student having a list of scheduled courses and a course having multiple offerings in different schedules.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Nama : Tatto Baskoro

Nim : A11.2017.10113
Kelompok : PBO - A11.4419
Tugas 3 pbo

1. Person.java
public Person(String name, String ssn) {
this.setName(name);
this.setSsn(ssn);
}

public Person() {
this.setName("?");
this.setSsn("???-??-????");
}

public void setName(String n) {


name = n;
}

public String getName() {


return name;
}

public void setSsn(String s) {


ssn = s;
}

public String getSsn() {


return ssn;
}

public abstract String toString(); public void display() {


System.out.println("Informasi Person:");
System.out.println("\tNama: " + this.getName());
System.out.println("\tNo KTP.: " + this.getSsn());
}
}
2. Mahasiswa.java

import java.util.ArrayList;
import java.util.Collection;
public class Mahasiswa extends Person {
private String fakultas;
private String prodi;
private ArrayList<Jadwal> kelasKuliah;

public Mahasiswa(String name, String ssn, String fakultas, String prodi) {


super(name, ssn);
this.setFakultas(fakultas);
this.setProdi(prodi);
kelasKuliah = new ArrayList<Jadwal>();
}

public Mahasiswa(String ssn) {


this("TBD", ssn, "TBD", "TBD");
}

public void setFakultas(String fakultas) {


this.fakultas = fakultas;
}

public String getFakultas() {


return fakultas;
}

public void setProdi(String prodi) {


this.prodi = prodi;
}

public String getProdi() {


return prodi;
}

public void display() { super.display();


System.out.println("Informasi MHS:");
System.out.println("\tfakultas: " + this.getFakultas());
System.out.println("\tprodi: " + this.getProdi());
System.out.println();
}

public String toString() {


return this.getName() + " (" + this.getSsn() + ") [" + this.getProdi() +
"-" + this.getFakultas() + "]";
}

public void displayJadwalMK() {


System.out.println("Jadwal Utk Matakuliah : " + this.getName());
}

public void addSection(Jadwal s) {


kelasKuliah.add(s);
}

public void dropSection(Jadwal s) {


kelasKuliah.remove(s);
}

public boolean isTerdaftar(Jadwal s) {


if (kelasKuliah.contains(s)) return true;
else return false;
}

public boolean isCurrentlyEnrolledInSimilar(Jadwal s1) {


boolean foundMatch = false;
Matakuliah c1 = s1.getRepMatakuliah();
for (Jadwal s2 : kelasKuliah) {
Matakuliah c2 = s2.getRepMatakuliah();
if (c1 == c2) {
foundMatch = true;
break;
}
}
return foundMatch;
}

public Collection<Jadwal> getJadwalTerdaftar() {


return kelasKuliah;
}
}

3. Matakuliah.java

import java.util.ArrayList;
import java.util.Collection;
public class Matakuliah {
private String kodeMK;
private String namaMK;
private double SKS;
private ArrayList<Jadwal> jadwalDitawarkan;
private ArrayList<Matakuliah> prasyaratMK;

public Matakuliah(String kodeMK, String namaMK, double SKS) {


setKodeMK(kodeMK);
setNamaMK(namaMK);
setSKS(SKS);
jadwalDitawarkan = new ArrayList<Jadwal>();
prasyaratMK = new ArrayList<Matakuliah>();
}

public void setKodeMK(String kodeMK) {


this.kodeMK = kodeMK;
}

public String getKodeMK() {


return kodeMK;
}

public void setNamaMK(String namaMK) {


this.namaMK = namaMK;
}

public String getNamaMK() {


return namaMK;
}

public void setSKS(double SKS) {


this.SKS = SKS;
}

public double getSKS() {


return SKS;
}

public void display() {


System.out.println("Informasi ttg Matakuliah:");
System.out.println("\tkode MK.: " + getKodeMK());
System.out.println("\tNamaMK: " + getNamaMK());
System.out.println("\tSKS: " + getSKS());
System.out.println("\tPrasyarat Matakuliah:");

for (Matakuliah c : prasyaratMK) {


System.out.println("\t\t" + c.toString());
}

System.out.print("\tJadwal Kuliah ditawarkan: ");

for (Jadwal s : jadwalDitawarkan) {


System.out.print(getKodeMK()+"-"+s.getNoJadwal() + " ");
}
System.out.println();
}

public String toString() {


return getKodeMK() + ": " + getNamaMK();
}

public void addPrasyarat(Matakuliah c) {


prasyaratMK.add(c);
}

public boolean hasPrasyarat() {


if (prasyaratMK.size() > 0) return true;
else return false;
}

public Collection<Matakuliah> getPrasyaratMK() {


return prasyaratMK;
}

public Jadwal jadwalKuliah(char day, String time, String room, int capacity) {
Jadwal s = new Jadwal(jadwalDitawarkan.size() + 1, day, time, this, room,
capacity);
addJadwal(s);
return s;
}

public void addJadwal(Jadwal s) {


jadwalDitawarkan.add(s);
}

public ArrayList<Jadwal> getJadwalTerdaftar() {


return jadwalDitawarkan;
}
}
4. Jadwal.java

import java.util.ArrayList;
import java.util.HashMap;
public class Jadwal {
private int noJadwal;
private char hari;
private String waktu;
private String ruang;
private int kapasitas;
private Matakuliah repMatakuliah;
private PeriodeKuliah smt;
private HashMap<String, Mahasiswa> mhsTerdaftar;

public Jadwal(int sNo, char day, String time, Matakuliah course,String room, int
capacity) {
setNoJadwal(sNo);
setHari(day);
setWaktu(time);
setRepMatakuliah(course);
setRuang(room);
setKapasitas(capacity);
mhsTerdaftar = new HashMap<String, Mahasiswa>();
}

public void setNoJadwal(int no) {


noJadwal = no;
}

public int getNoJadwal() {


return noJadwal;
}

public void setHari(char day) {


hari = day;
}

public char getHari() {


return hari;
}

public void setWaktu(String time) {


waktu = time;
}
public String getWaktu() {
return waktu;
}

public void setRepMatakuliah(Matakuliah c) {


repMatakuliah = c;
}

public Matakuliah getRepMatakuliah() {


return repMatakuliah;
}

public void setRuang(String r) {


ruang = r;
}

public String getRuang() {


return ruang;
}

public void setKapasitas(int c) {


kapasitas = c;
}

public int getKapasitas() {


return kapasitas;
}

public void setSmt(PeriodeKuliah soc) {


smt = soc;
}

public PeriodeKuliah getSmt() {


return smt;
}

public String toString() {


return getRepMatakuliah().getKodeMK() + " - " +getNoJadwal() + " - "
+getHari() + " - " +getWaktu();
}

public String getFullNoJadwal() {


return getRepMatakuliah().getKodeMK() + " - " + getNoJadwal();
}
public EnrollmentStatus daftarkan(Mahasiswa s) {
Matakuliah c = this.getRepMatakuliah();
if (c.hasPrasyarat()) {
for (Matakuliah pre : c.getPrasyaratMK()) {
return EnrollmentStatus.prereq;
}
}

if (s.isCurrentlyEnrolledInSimilar(this)) {
return EnrollmentStatus.prevEnroll;
}

if (!this.konfirmKapasitas()) {
return EnrollmentStatus.secFull;
}

mhsTerdaftar.put(s.getSsn(), s);
s.addSection(this);
return EnrollmentStatus.success;
}

private boolean konfirmKapasitas() {


if (mhsTerdaftar.size() < getKapasitas()) return true;
else return false;
}

public boolean drop(Mahasiswa s) {


if (!s.isTerdaftar(this))
return false;
else {
mhsTerdaftar.remove(s.getSsn());
s.dropSection(this);
return true;
}
}

public int getTotalPendaftar() {


return mhsTerdaftar.size();
}

public void display() { System.out.println("Informasi jadwal :");


System.out.println("\tSemester: " + getSmt().getSemester());
System.out.println("\tNo. Matakuliah: " +
getRepMatakuliah().getKodeMK());
System.out.println("\tNo Jadwal: "+ getNoJadwal());
System.out.println("\tOffered: " + getHari() + " at " + getWaktu());
System.out.println("\tRuang: " + getRuang());
displayDafMhs();
}

public void displayDafMhs() {


System.out.print("\tTotal of " + getTotalPendaftar() + " students enrolled");
if (getTotalPendaftar() == 0) System.out.println(".");
else System.out.println(", as follows:");
for (Mahasiswa s : mhsTerdaftar.values()) {
System.out.println("\t\t" + s.getName());
}
}

public boolean isJadwalOf(Matakuliah c) { if


(c == repMatakuliah) return true;
else return false;
}
}

5. PeriodeKuliah.java

import java.util.ArrayList;
import java.util.HashMap;
public class PeriodeKuliah {
private String semester;
// key, e.g.,"PBO101 - 1".
private HashMap<String, Jadwal> jadwalDitawarkan;

public PeriodeKuliah(String semester) {


setSemester(semester);
jadwalDitawarkan = new HashMap<String, Jadwal>();
}

public void setSemester(String semester) {


this.semester = semester;
}

public String getSemester() {


return semester;
}

public HashMap<String, Jadwal> getJadwalDitawarkan() {


return jadwalDitawarkan;
}

public void display() {


System.out.println("Jadwal utk periode " + getSemester());
System.out.println();
for (Jadwal s : jadwalDitawarkan.values()) {
s.display();
System.out.println();
}
}

public void addSection(Jadwal s) {


String key = s.getRepMatakuliah().getKodeMK() + "-" + s.getNoJadwal();
jadwalDitawarkan.put(key, s);
s.setSmt(this);
}

public Jadwal findSection(String fullSectionNo) {


return jadwalDitawarkan.get(fullSectionNo);
}

public boolean isEmpty() {


if (jadwalDitawarkan.size() == 0) return true;
else return false;
}
}

6. EnrollmentStatus.java

public enum EnrollmentStatus {


// Enumerate the values that the enum can assume.
success("pendaftaran berhasil! :o)"),
secFull("pendaftaran gagal; kelas penuh. :op"),
prereq("pendaftaran gagal; tdk memenuhi prasyarat. :op"),
prevEnroll("pendaftaran gagal; sdh pernah diambil . :op");
private final String value;
EnrollmentStatus(String value) {
this.value = value;
}
public String value() {
return value;
}
}
7. SRS.java

import java.util.*;

public class SRS {


public static ArrayList<Mahasiswa> listMHS;
public static ArrayList<Matakuliah> listMK;
public static PeriodeKuliah periode = new PeriodeKuliah("218");
public static Scanner scanner;
public static void main(String[] args) {
listMHS = new ArrayList<>();
listMK = new ArrayList<>();
menu();
}

private static void menu(){


System.out.println("----- Sistem SRS ----");
System.out.println("SILAHKAN PILIH MENU");
System.out.println("1. Isi Mata Kuliah");
System.out.println("2. Isi Mahasiswa");
System.out.println("3. Isi Jadwal");
System.out.println("4. Isi KRS");
System.out.println("5. Cetak Jadwal");
System.out.println("6. KELUAR");

scanner = new Scanner(System.in);


System.out.println("Silahkan input disini -> ");
int pilih = scanner.nextInt();
switch(pilih){
case 1:
inputMakul();
break;
case 2:
inputMahasiswa();
break;
case 3:
inputKRS();
break;
case 4:
inputKRS();
break;
case 5:
periode.display();
menu();
break;
case 6:
System.out.println("KELUAR");
break;
default:
System.out.println("Menu tidak ditemukan.");
menu();
break;
}

private static void inputMakul(){


Scanner s = new Scanner(System.in);

System.out.print("Masukkan kode Matakuliah: ");


String kodeMk = s.next();

if (findMakulByCode(kodeMk) != null) {
System.out.println("Kode matakuliah sudah ada");
inputMakul();
return;
}

System.out.print("Masukkan nama Matakuliah: ");


String namaMk = s.next();
System.out.print("Masukkan jumlah SKS\t: ");
Double jmlhSKS = s.nextDouble();

Matakuliah mk = new Matakuliah(kodeMk, namaMk, jmlhSKS);


listMK.add(mk);

if (listMK.size() > 1) {
System.out.print("Apakah ada prasyarat? (Y/N) ");
Scanner s1 = new Scanner(System.in);
String choice = s1.nextLine();
if (choice.equals("Y")) {
inputPrasyarat(mk);
} else {
System.out.println();
System.out.println("--------------Berhasil menambah Mata Kuliah-----
---------");
System.out.println();
menu();
}
} else {
System.out.println();
System.out.println("--------------Berhasil menambah Mata Kuliah--------------");
System.out.println();
menu();
}
}

private static void inputMahasiswa(){


Scanner s = new Scanner(System.in);
listMHS.forEach(e->System.out.println(e+"\n"));

System.out.print("Nama Mahasiswa\t\t: ");


String nama = s.nextLine();
System.out.print("NIM Mahasiswa\t\t: ");
String nim = s.nextLine();
System.out.print("Fakultas Mahasiswa\t: ");
String fakultas = s.nextLine();
System.out.print("Progdi Mahasiswa\t: ");
String progdi = s.nextLine();

Mahasiswa mhs = new Mahasiswa(nama, nim, fakultas, progdi);


listMHS.add(mhs);
System.out.println();
System.out.println("--------------Berhasil menambahkan mahasiswa--------------");
System.out.println();
menu();
}

private static void inputJadwal(){


Scanner s = new Scanner(System.in);
System.out.println("Daftar mata kuliah...");
listMK.forEach(e->System.out.println(e));

System.out.print("Pilih Kode Matakuliah: ");


String code = s.nextLine();
Matakuliah mk = findMakulByCode(code);

System.out.print("Hari\t\t: ");
char day = s.nextLine().charAt(0);
System.out.print("Jam\t\t: ");
String time = s.nextLine();
System.out.print("Ruang\t\t: ");
String room = s.nextLine();
System.out.print("Kapasitas\t: ");
int capacity = s.nextInt();
Jadwal jadwal = mk.jadwalKuliah(day, time, room, capacity);

periode.addSection(jadwal);
System.out.println("Berhasil menambahkan jadwal");
System.out.println();
menu();

private static void inputKRS(){


if (listMHS.size() == 0) {
System.out.println("Daftar Mahasiswa kosong, silakan isi terlebih dahulu");
inputMahasiswa();
return;
}

if (listMK.size() == 0) {
System.out.println("Daftar Matakuliah kosong, silakan isi terlebih dahulu");
inputMakul();
return;
}

if (periode.getJadwalDitawarkan().size() == 0) {
System.out.println("Daftar Jadwal kosong, silakan isi terlebih dahulu");
inputJadwal();
return;
}

System.out.println("Daftar Mahasiswa...");
listMHS.forEach(e->e.display());
Scanner s = new Scanner(System.in);
System.out.print("Pilih nim Mahasiswa: ");
String nim = s.nextLine();

Mahasiswa mhs = findMhsByCode(nim);


if (mhs == null) {
System.out.println("Mahasiswa tidak ditemukan");
inputKRS();
return;
}

System.out.println("Daftar mata kuliah...");


listMK.forEach(e->e.display());
System.out.print("Pilih kode matakuliah: ");
String kodeMakul = s.nextLine();

periode.display();
System.out.print("Pilih nomor jadwal: ");
String kode = s.nextLine();
System.out.print(kodeMakul + "-" + kode);
Jadwal jadwal = periode.findSection(kodeMakul + "-" + kode);
//jadwal.display();
//mhs.display();
attemptToEnroll(mhs, jadwal);
System.out.println();
}

private static void inputPrasyarat(Matakuliah mk) {


System.out.println("Daftar mata kuliah...");
listMK.forEach(e->System.out.println(e));

Scanner s = new Scanner(System.in);

Matakuliah base = findMakulByCode(mk.getKodeMK());

System.out.print("Kode prasyarat matakuliah: ");


String codeMk = s.nextLine();

Matakuliah findMakul = findMakulByCode(codeMk);

if (findMakul == null) {
System.out.println("Matakuliah tidak ditemukan");
inputPrasyarat(mk);
} else {
base.addPrasyarat(findMakul);
System.out.println("Berhasil menambah makul prasyarat");
System.out.println();
menu();
}
}

private static void reportStatus(EnrollmentStatus s) {


System.out.println("Status: " + s.value());
System.out.println();
}
private static void attemptToEnroll(Mahasiswa s, Jadwal sec) {
System.out.println("Mahasiswa " + s.getName() + " ditambahkan ke: "
+sec.toString());
reportStatus(sec.daftarkan(s));
}

private static Matakuliah findMakulByCode(String s) {


for(Matakuliah m: listMK) {
if (m.getKodeMK().equalsIgnoreCase(s))
return m;
}
return null;
}

private static Mahasiswa findMhsByCode(String s) {


for(Mahasiswa m: listMHS) {
if (m.getSsn().equalsIgnoreCase(s))
return m;
}
return null;
}
}

You might also like