From c08f6aae081f0e9bb308d0012e6ef0f36fb6270d Mon Sep 17 00:00:00 2001 From: Orii21 Date: Sun, 4 Jun 2023 16:40:56 +0800 Subject: [PATCH 1/2] Tugas Lab Rafli --- src/H071221104/Pertemuan_1/No1.java | 22 ++ src/H071221104/Pertemuan_1/No2.java | 43 ++++ src/H071221104/Pertemuan_1/No3.java | 23 +++ src/H071221104/Pertemuan_1/No4.java | 22 ++ src/H071221104/Pertemuan_1/No5.java | 54 +++++ src/H071221104/Pertemuan_1/No6.java | 20 ++ src/H071221104/Pertemuan_1/No7.java | 27 +++ src/H071221104/Pertemuan_1/No8.java | 28 +++ src/H071221104/Praktikum _2/Cuboid.java | 21 ++ src/H071221104/Praktikum _2/Main.java | 41 ++++ src/H071221104/Praktikum _2/Person.java | 46 +++++ src/H071221104/Praktikum _2/no1.java | 36 ++++ src/H071221104/Praktikum _2/produk.java | 38 ++++ .../Praktikum _4/Live coding/Main.java | 32 +++ .../Praktikum _4/Live coding/Player.java | 69 +++++++ .../Praktikum _4/login_app/Main.java | 194 ++++++++++++++++++ .../login_app/models/Profile.java | 33 +++ .../Praktikum _4/login_app/models/User.java | 25 +++ .../login_app/utils/StringUtils.java | 26 +++ src/H071221104/Praktikum_3/Belanja.java | 67 ++++++ src/H071221104/Praktikum_3/Main.java | 48 +++++ src/H071221104/Praktikum_3/MainClass.java | 143 +++++++++++++ src/H071221104/Praktikum_3/Panggil.java | 54 +++++ .../Praktikum_3/ProgramBelanja.java | 105 ++++++++++ src/H071221104/Praktikum_3/Super.java | 55 +++++ src/H071221104/Praktikum_3/no3/Product.java | 24 +++ src/H071221104/Praktikum_3/no3/Store.java | 55 +++++ src/H071221104/Praktikum_3/no3/StoreOri.java | 86 ++++++++ src/H071221104/Praktikum_3/no3/User.java | 23 +++ src/H071221104/Praktikum_5/no1/Bangun.java | 142 +++++++++++++ .../Praktikum_5/no1/BangunDatar.java | 116 +++++++++++ .../Praktikum_5/no1/BangunRuang.java | 147 +++++++++++++ src/H071221104/Praktikum_5/no1/Main.java | 8 + .../Praktikum_5/no2/Kordinator.java | 5 + src/H071221104/Praktikum_5/no2/Main.java | 15 ++ src/H071221104/Praktikum_5/no2/Pengurus.java | 5 + src/H071221104/Praktikum_5/no2/Sisfo.java | 6 + src/H071221104/Praktikum_5/no2/Staf.java | 5 + .../no3/Class diagram no1.drawio.png | Bin 0 -> 107998 bytes .../no3/Class diagram no2.drawio.png | Bin 0 -> 25181 bytes src/H071221104/Praktikum_6/Main.java | 153 ++++++++++++++ .../Praktikum_6/diagram class.drawio | 13 ++ src/H071221104/Praktikum_6/diagram class.png | Bin 0 -> 42331 bytes src/H071221104/Praktikum_6/diagram class.svg | 4 + src/H071221104/Praktikum_6/diagram dipa.svg | 4 + src/H071221104/Praktikum_7/no1/Character.java | 13 ++ src/H071221104/Praktikum_7/no1/Fighter.java | 31 +++ src/H071221104/Praktikum_7/no1/Mage.java | 34 +++ src/H071221104/Praktikum_7/no1/Main.java | 20 ++ src/H071221104/Praktikum_7/no2/Main.java | 10 + src/H071221104/Praktikum_7/no2/Product.java | 34 +++ src/H071221104/Praktikum_7/no3/Burger.java | 7 + src/H071221104/Praktikum_7/no3/Food.java | 3 + .../Praktikum_7/no3/FoodFactory.java | 14 ++ src/H071221104/Praktikum_7/no3/Main.java | 20 ++ src/H071221104/Praktikum_7/no3/Pizza.java | 7 + .../Praktikum_7/no3/Restaurant.java | 11 + src/H071221104/Praktikum_7/no3/Steak.java | 7 + 58 files changed, 2294 insertions(+) create mode 100644 src/H071221104/Pertemuan_1/No1.java create mode 100644 src/H071221104/Pertemuan_1/No2.java create mode 100644 src/H071221104/Pertemuan_1/No3.java create mode 100644 src/H071221104/Pertemuan_1/No4.java create mode 100644 src/H071221104/Pertemuan_1/No5.java create mode 100644 src/H071221104/Pertemuan_1/No6.java create mode 100644 src/H071221104/Pertemuan_1/No7.java create mode 100644 src/H071221104/Pertemuan_1/No8.java create mode 100644 src/H071221104/Praktikum _2/Cuboid.java create mode 100644 src/H071221104/Praktikum _2/Main.java create mode 100644 src/H071221104/Praktikum _2/Person.java create mode 100644 src/H071221104/Praktikum _2/no1.java create mode 100644 src/H071221104/Praktikum _2/produk.java create mode 100644 src/H071221104/Praktikum _4/Live coding/Main.java create mode 100644 src/H071221104/Praktikum _4/Live coding/Player.java create mode 100644 src/H071221104/Praktikum _4/login_app/Main.java create mode 100644 src/H071221104/Praktikum _4/login_app/models/Profile.java create mode 100644 src/H071221104/Praktikum _4/login_app/models/User.java create mode 100644 src/H071221104/Praktikum _4/login_app/utils/StringUtils.java create mode 100644 src/H071221104/Praktikum_3/Belanja.java create mode 100644 src/H071221104/Praktikum_3/Main.java create mode 100644 src/H071221104/Praktikum_3/MainClass.java create mode 100644 src/H071221104/Praktikum_3/Panggil.java create mode 100644 src/H071221104/Praktikum_3/ProgramBelanja.java create mode 100644 src/H071221104/Praktikum_3/Super.java create mode 100644 src/H071221104/Praktikum_3/no3/Product.java create mode 100644 src/H071221104/Praktikum_3/no3/Store.java create mode 100644 src/H071221104/Praktikum_3/no3/StoreOri.java create mode 100644 src/H071221104/Praktikum_3/no3/User.java create mode 100644 src/H071221104/Praktikum_5/no1/Bangun.java create mode 100644 src/H071221104/Praktikum_5/no1/BangunDatar.java create mode 100644 src/H071221104/Praktikum_5/no1/BangunRuang.java create mode 100644 src/H071221104/Praktikum_5/no1/Main.java create mode 100644 src/H071221104/Praktikum_5/no2/Kordinator.java create mode 100644 src/H071221104/Praktikum_5/no2/Main.java create mode 100644 src/H071221104/Praktikum_5/no2/Pengurus.java create mode 100644 src/H071221104/Praktikum_5/no2/Sisfo.java create mode 100644 src/H071221104/Praktikum_5/no2/Staf.java create mode 100644 src/H071221104/Praktikum_5/no3/Class diagram no1.drawio.png create mode 100644 src/H071221104/Praktikum_5/no3/Class diagram no2.drawio.png create mode 100644 src/H071221104/Praktikum_6/Main.java create mode 100644 src/H071221104/Praktikum_6/diagram class.drawio create mode 100644 src/H071221104/Praktikum_6/diagram class.png create mode 100644 src/H071221104/Praktikum_6/diagram class.svg create mode 100644 src/H071221104/Praktikum_6/diagram dipa.svg create mode 100644 src/H071221104/Praktikum_7/no1/Character.java create mode 100644 src/H071221104/Praktikum_7/no1/Fighter.java create mode 100644 src/H071221104/Praktikum_7/no1/Mage.java create mode 100644 src/H071221104/Praktikum_7/no1/Main.java create mode 100644 src/H071221104/Praktikum_7/no2/Main.java create mode 100644 src/H071221104/Praktikum_7/no2/Product.java create mode 100644 src/H071221104/Praktikum_7/no3/Burger.java create mode 100644 src/H071221104/Praktikum_7/no3/Food.java create mode 100644 src/H071221104/Praktikum_7/no3/FoodFactory.java create mode 100644 src/H071221104/Praktikum_7/no3/Main.java create mode 100644 src/H071221104/Praktikum_7/no3/Pizza.java create mode 100644 src/H071221104/Praktikum_7/no3/Restaurant.java create mode 100644 src/H071221104/Praktikum_7/no3/Steak.java diff --git a/src/H071221104/Pertemuan_1/No1.java b/src/H071221104/Pertemuan_1/No1.java new file mode 100644 index 0000000..c2e7d64 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No1.java @@ -0,0 +1,22 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No1 { + public static void main(String[] args) { + int nim; + Scanner key = new Scanner(System.in); + System.out.print("Masukkan angka terakhir NIM: "); + nim = key.nextInt(); + if (nim % 7 == 0){System.out.print("Soal no:7");} + else {System.out.println("soal nomor :"+ nim % 7);} + // else if (nim % 7 == 1){System.out.print("Soal no:1");} + // else if(nim % 7 == 2){System.out.print("Soal no:2");} + // else if(nim % 7 == 3){System.out.print("Soal no:3");} + // else if(nim % 7 == 4){System.out.print("Soal no:4");} + // else if(nim % 7 == 5){System.out.print("Soal no:5");} + // else if(nim % 7 == 6){System.out.print("Soal no:6");} + + key.close(); + } +} diff --git a/src/H071221104/Pertemuan_1/No2.java b/src/H071221104/Pertemuan_1/No2.java new file mode 100644 index 0000000..93de987 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No2.java @@ -0,0 +1,43 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No2 { + + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + try { + System.out.print("Masukkan jumlah bilangan: "); + int n = inp.nextInt(); + + int desimal = 0; + int bulat = 0; + + for (int i = 0; i < n; i++) { + // for (int i = 0; i < n; i++) adalah sebuah perulangan dalam bahasa pemrograman + // java. + // Arti dari perulangan ini adalah "untuk nilai awal i sama dengan 0; lakukan + // perintah-perintah di dalam blok perulangan ini selama i kurang dari nilai n; + // setiap kali perintah-perintah di dalam blok perulangan selesai dieksekusi, + // tambahkan 1 ke nilai i". + // Dalam konteks ini, n adalah sebuah variabel atau konstanta yang menyatakan + // jumlah iterasi atau pengulangan yang ingin dilakukan. + + // System.out.print("Masukkan bilangan ke-" + (i + 1) + ": "); + double num = inp.nextDouble(); + + if (num % 1 == 0) { + bulat++; + } else { + desimal++; + } + } + + System.out.println(bulat + " Bilangan Bulat"); + System.out.println(desimal + " Bilangan Desimal"); + inp.close(); + } catch (Exception e) { + System.out.println("Hanya bisa menerima angka"); + } + } +} diff --git a/src/H071221104/Pertemuan_1/No3.java b/src/H071221104/Pertemuan_1/No3.java new file mode 100644 index 0000000..f8f4207 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No3.java @@ -0,0 +1,23 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No3 { + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + try { + System.out.print("Name : "); + String a = inp.nextLine(); + System.out.print("Umur : "); + int b = inp.nextInt(); + inp.nextLine(); + System.out.print("Hobby : "); + String c = inp.nextLine(); + System.out.println("Nama Saya " + a + ", " + b + " Tahun, " + "Hobby " + c); + } catch (Exception e) { + System.out.println("inputan umur harus berupa angka"); + } + inp.close(); + } + +} diff --git a/src/H071221104/Pertemuan_1/No4.java b/src/H071221104/Pertemuan_1/No4.java new file mode 100644 index 0000000..f4c7523 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No4.java @@ -0,0 +1,22 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No4 { + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + System.out.print("Masukkan kalimat: "); + String kalimat = inp.nextLine(); + String[] kata = kalimat.toLowerCase().split(" "); + String kalimatBaru = ""; + for (int i = 0; i < kata.length; i++) { + kalimatBaru += kata[i].substring(0, 1).toUpperCase() + kata[i].substring(1) + " "; + } + System.out.println(kalimatBaru.trim()); + inp.close(); + } +} + + + + diff --git a/src/H071221104/Pertemuan_1/No5.java b/src/H071221104/Pertemuan_1/No5.java new file mode 100644 index 0000000..207ed2b --- /dev/null +++ b/src/H071221104/Pertemuan_1/No5.java @@ -0,0 +1,54 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No5 { + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + String tanggal = inp.nextLine(); + String [] arraytanggal = tanggal.split("-"); + // System.out.println(arraytanggal); + int [] arraytanggal2 = new int [3]; + for (int i = 0; i < arraytanggal.length; i++) { + arraytanggal2[i] = Integer.parseInt(arraytanggal[i]); + inp.close(); + } + int tahun = arraytanggal2[2]; + String tahun2 = ""; + if (tahun >= 0 && tahun < 30){ + tahun2 = "20" + arraytanggal[2]; + } else { + tahun2 = "19" + arraytanggal[2]; + } + System.out.println(arraytanggal2[0] + " " + konversiBulan(arraytanggal2[1])+ " " + tahun2); + } + public static String konversiBulan(int angka){ + if (angka == 1) { + return "Januari"; + } else if (angka == 2) { + return "Februari"; + } else if (angka == 3) { + return "Maret"; + } else if (angka == 4) { + return "April"; + } else if (angka == 5) { + return "Mei"; + } else if (angka == 6) { + return "Juni"; + } else if (angka == 7) { + return "Juli"; + } else if (angka == 8) { + return "Agustus"; + } else if (angka == 9) { + return "September"; + } else if (angka == 10) { + return "Oktober"; + } else if (angka == 11) { + return "November"; + } else if (angka == 12) { + return "Desember"; + } else { + return ""; + } + } +} diff --git a/src/H071221104/Pertemuan_1/No6.java b/src/H071221104/Pertemuan_1/No6.java new file mode 100644 index 0000000..135e19a --- /dev/null +++ b/src/H071221104/Pertemuan_1/No6.java @@ -0,0 +1,20 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No6 { + public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + try { + System.out.print("Masukkan jari-jari lingkaran: "); + double jariJari = inp.nextDouble(); + + double luasLingkaran = Math.PI * Math.pow(jariJari, 2); + System.out.printf("Luas lingkaran adalah: %.2f", luasLingkaran); + } catch (Exception e) { + System.out.println("Hanya menerima angka"); + } + inp.close(); + } + +} diff --git a/src/H071221104/Pertemuan_1/No7.java b/src/H071221104/Pertemuan_1/No7.java new file mode 100644 index 0000000..004d0f7 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No7.java @@ -0,0 +1,27 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; +public class No7 { + static String[] buah = {"Anggur", "Apel", "Belimbing", "Durian", "Rambutan", "Pisang", "Jeruk", "Semangka", "Nanas", +"Salak", "manggis"}; +public static void main(String[] args) { + Scanner inp = new Scanner(System.in); + System.out.print("Key: "); + String inputBuah = inp.next(); + int indexBuah = findIndex(inputBuah); + System.out.println(indexBuah); + inp.close(); +} +static int findIndex(String inputBuah){ + inputBuah = inputBuah.toLowerCase(); + int result = -1; + for (int i = 0; i < buah.length; i++) { + String buah1 = buah[i]; + buah1 = buah1.toLowerCase(); + if (buah1.equals(inputBuah)){ + result = i; + } + }; + return result; +} +} \ No newline at end of file diff --git a/src/H071221104/Pertemuan_1/No8.java b/src/H071221104/Pertemuan_1/No8.java new file mode 100644 index 0000000..178ac54 --- /dev/null +++ b/src/H071221104/Pertemuan_1/No8.java @@ -0,0 +1,28 @@ +package H071221104.Pertemuan_1; + +import java.util.Scanner; + +public class No8 { + public static void main(String[] args) { + int[][] angka = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9, }, { 10, 11 }, { 12 }, { 13, 14, 15, 16 } }; + Scanner inp = new Scanner(System.in); + + try { + System.out.print("Input angka yang ingin di cari : "); + int inputAngka = inp.nextInt(); + + for (int i = 0; i < angka.length; i++) { + for (int j = 0; j < angka[i].length; j++) { + int angka1 = angka[i][j]; + if (angka1 == inputAngka) { + System.out.println("Found" + inputAngka + " at [" + i + "][" + j + "]"); + break; + } + } + } + } catch (Exception e) { + System.out.println("Input harus berupa data integer (angka)"); + } + inp.close(); + } +} diff --git a/src/H071221104/Praktikum _2/Cuboid.java b/src/H071221104/Praktikum _2/Cuboid.java new file mode 100644 index 0000000..ed32dee --- /dev/null +++ b/src/H071221104/Praktikum _2/Cuboid.java @@ -0,0 +1,21 @@ +package Semester2.Praktikum.Pertemuan2; + +public class Cuboid { + double height; + double width ; + double length ; + + double getVolume(){ + return height * width * length; + } +} + +class Volume{ + public static void main(String[] args) { + Cuboid a = new Cuboid(); + a.height = 3; + a.width = 30; + a.length = 50; + System.out.printf("Volume = %.2f", a.getVolume()); + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum _2/Main.java b/src/H071221104/Praktikum _2/Main.java new file mode 100644 index 0000000..9942f2a --- /dev/null +++ b/src/H071221104/Praktikum _2/Main.java @@ -0,0 +1,41 @@ +package Semester2.Praktikum.Pertemuan2; +class Alamat{ + String jalan; + String kota; + String getAlamatLengkap(){ + return jalan + "," + kota; + } +} + +class Mahasiswa{ + Alamat alamat; + String nama; + String nim; + + String getNama(){ + return nama; + } + String getNim(){ + return nim; + } + Alamat getAlamat(){ + return alamat; + } +} + +public class Main { + public static void main(String[] args) { + Alamat alamat = new Alamat(); + alamat.jalan = "Pallangga"; + alamat.kota = "Makassar"; + + Mahasiswa mahasiswa = new Mahasiswa(); + mahasiswa.alamat = alamat; + mahasiswa.nama = "Rafli"; + mahasiswa.nim = "H071221104"; + + System.out.println("Nama: " + mahasiswa.getNama()); + System.out.println("NIM: " + mahasiswa.getNim()); + System.out.println("Alamat: " + mahasiswa.getAlamat().getAlamatLengkap()); + } +} diff --git a/src/H071221104/Praktikum _2/Person.java b/src/H071221104/Praktikum _2/Person.java new file mode 100644 index 0000000..985f1fb --- /dev/null +++ b/src/H071221104/Praktikum _2/Person.java @@ -0,0 +1,46 @@ +package Semester2.Praktikum.Pertemuan2; +import java.util.Scanner; +public class Person { + String name; + int age; + boolean isMale; + + public void setAge(int age) { + this.age = age; + } + public int getAge() { + return age; + } + public void setGender(boolean isMale) { + this.isMale = isMale; + } + public String getGender (){ + if (isMale == true){ + return "Male"; + } return "Female"; + } + public void setName(String name) { + this.name = name; + } + public String getName() { + return name; + } +} +class Orang { + public static void main(String[] args) { + Person person = new Person(); + Scanner input = new Scanner(System.in); + System.out.print("Nama: "); + person.name = input.nextLine(); + System.out.print("Are you Male? true or false: "); + person.isMale = input.nextBoolean(); + System.out.print("Umur: "); + person.age = input.nextInt(); + input.close(); + System.out.println("Nama: " + person.getName() ); + System.out.println("Gender: " + person.getGender()); + System.out.println("Umur: " + person.getAge()); + } +} + + diff --git a/src/H071221104/Praktikum _2/no1.java b/src/H071221104/Praktikum _2/no1.java new file mode 100644 index 0000000..7fb281e --- /dev/null +++ b/src/H071221104/Praktikum _2/no1.java @@ -0,0 +1,36 @@ +package Semester2.Praktikum.Pertemuan2; + +public class no1 { + String nama; + int health; + int mana; + int att; + int armor; +} +class Hero { + //Method + static void detailHero() { + //Atribut + no1 bimasakti = new no1(); + bimasakti.nama = "Bimasakti"; + bimasakti.health = 300; + bimasakti.mana = 100; + bimasakti.att = 50; + bimasakti.armor = 200; + + System.out.println("Nama Hero: " + bimasakti.nama); + System.out.println("Health: " + bimasakti.health); + System.out.println("Mana: " + bimasakti.mana); + System.out.println("Attack: " + bimasakti.att); + System.out.println("Armor: " + bimasakti.armor); + } + static void slogan(){ + System.out.println("'Akulah lambang dari kebenaran' "); + } + //Maiin Method + public static void main(String[] args) { + detailHero(); + slogan(); + } +} + diff --git a/src/H071221104/Praktikum _2/produk.java b/src/H071221104/Praktikum _2/produk.java new file mode 100644 index 0000000..4681e65 --- /dev/null +++ b/src/H071221104/Praktikum _2/produk.java @@ -0,0 +1,38 @@ +package Semester2.Praktikum.Pertemuan2; +public class produk { + String nama; + int id; + int harga; + int stok; + public void cekBarang(){ + System.out.println("Nama produk: " + nama); + System.out.println("Id: " + id); + System.out.println("Harga produk: " + harga); + System.out.println("Stok: " + stok); + } + public void cekStok(){ + if(stok > 0){ + System.out.println("Stok tersedia"); + } else { System.out.println("Stok tidak tersedia"); + + } + } +} +class cek{ + public static void main(String[] args) { + produk a = new produk(); + produk b = new produk(); + a.id = 1234; + a.nama = "Yakult"; + a.stok = 0; + a.harga = 2500; + b.id = 1334; + b.nama = "Nabati"; + b.stok = 5; + b.harga = 5000; + a.cekBarang(); + a.cekStok(); + b.cekBarang(); + b.cekStok(); + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum _4/Live coding/Main.java b/src/H071221104/Praktikum _4/Live coding/Main.java new file mode 100644 index 0000000..4bae3c7 --- /dev/null +++ b/src/H071221104/Praktikum _4/Live coding/Main.java @@ -0,0 +1,32 @@ +public class Main { + public static void main(String[]args){ + + + Player player = new Player (); + + player.setNama("jamal"); + player.setLevel(15); + player.setHealth(10); + player.setMana(200); + player.setExp(50); + + player.displayInfo(); + + Player player2 = new Player("jamil", 12, 11,300,60); +System.out.println(player2.getNama()); +System.out.println(player2.getLevel()); +System.out.println(player2.getHealth()); +System.out.println(player2.getMana()); +System.out.println(player2.getExp()); + + + } + +} + + + + + + + diff --git a/src/H071221104/Praktikum _4/Live coding/Player.java b/src/H071221104/Praktikum _4/Live coding/Player.java new file mode 100644 index 0000000..773001d --- /dev/null +++ b/src/H071221104/Praktikum _4/Live coding/Player.java @@ -0,0 +1,69 @@ +public class Player{ + String nama; + int level; + int health; + int mana; + int exp; + + public Player(String nama, int level, int health, int mana, int exp) { + this.nama = nama; + this.level = level; + this.health = health; + this.mana = mana; + this.exp = exp; + } + + public String getNama() { + return nama; + } + + public void setNama(String nama) { + this.nama = nama; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public int getHealth() { + return health; + } + + public void setHealth(int health) { + this.health = health; + } + + public int getMana() { + return mana; + } + + public void setMana(int mana) { + this.mana = mana; + } + + public int getExp() { + return exp; + } + + public void setExp(int exp) { + this.exp = exp; + } + + public Player(){} + + public void displayInfo(){ + System.out.println(nama); + System.out.println(level); + System.out.println(health); + System.out.println(mana); + System.out.println(exp); + + + } + + +} \ No newline at end of file diff --git a/src/H071221104/Praktikum _4/login_app/Main.java b/src/H071221104/Praktikum _4/login_app/Main.java new file mode 100644 index 0000000..13e954d --- /dev/null +++ b/src/H071221104/Praktikum _4/login_app/Main.java @@ -0,0 +1,194 @@ +// package login_app; + +import java.util.ArrayList; +import java.util.Scanner; + +import models.Profile; +import models.User; +import utils.StringUtils; + +public class Main { + private static ArrayList listUser = new ArrayList<>(); + private static ArrayList listUserProfile = new ArrayList<>(); + private static Scanner sc = new Scanner(System.in); + + public static void main(String[] args) { + // Memanggil method runApp(); + runApp(); + } + + private static void runApp() { + // Menu Utama Aplikasi + System.out.println("-------------------------"); + System.out.println("Aplikasi Login Sederhana"); + System.out.println("-------------------------"); + System.out.println("1. Login"); + System.out.println("2. Register"); + System.out.print("> "); + + // Menginput pilihan menu + int selectMenu = sc.nextInt(); + sc.nextLine(); + switch (selectMenu) { + case 1: + // Membuka Halaman Login + showLoginMenu(); + break; + case 2: + // Membuka Halaman Register + showRegisterMenu(); + default: + // Mengulang Pemanggilan Menu Utama + runApp(); + } + } + + private static void showLoginMenu() { + // Halaman Login + System.out.println("-------------------------"); + System.out.println("Login"); + // Menginput Username dan Menyimpannya di attribute username; + System.out.println("Masukkan Username"); + System.out.print("> "); + + String username = sc.next(); + // Membuat variabel userIndex yang mana nanti akan menampung index dari user + int userIndex = -1; + for (int i = 0; i < listUser.size(); i++) { + /* + * TODO + * Buatlah sebuah perkondisian (IF) yang akan + * Mengecek apakah user index ke i dari listUser memiliki username yang sama + * dengan username yang + * diinput. + * Jika ada ganti userIndex dengan Index dari User Tersebut, kemudian hentikan + * perulangan + */ + + if (username.equals(listUser.get(i).getUsername())){ + userIndex = i; + break; + } + } + // Saat userIndex tidak sama dengan -1 atau userIndexnya ditemukan + if (userIndex != -1) { + // Menginput Password + System.out.println("Password"); + System.out.print("> "); + String password = sc.next(); + Boolean isPasswordMatch = password.equals(listUser.get(userIndex).getPassword()); + + + /* + * TODO + * Mengecek apakah password dari User yang login berdasarkan username + * sama dengan password yang diinput sebelumnya, kemudian simpan + * hasilnya di variabel isPasswordMatch + */ + + // Jika passwordnya sama maka berhasil login + if (isPasswordMatch) { + System.out.println("Berhasil Login"); + Profile profile = new Profile(); + // profile.setFullName(fullName); + // profile.setAge(age); + // profile.setHobby(hobby); + + /* + * TODO + * panggil method showDetailUser dan kirimkan data Profile User yang login + * + */ + showDetailUser(profile); + System.exit(0); + } else { + // saat password salah akan menampikan password salah + System.out.println("Password Salah"); + } + } + } + + private static void showRegisterMenu() { + System.out.println("-------------------------"); + System.out.println("REGISTER"); + + // Menginput username dan password + System.out.println("Username"); + System.out.print("> "); + String username = sc.nextLine(); + System.out.println("Password"); + System.out.print("> "); + String password = sc.nextLine(); + + /* + * TODO + * Buatlah atau Instance objek User baru, dan tambahkan + * username dan password yang diinput sebelumnya secara langsung + * saat instance User + */ + User user = new User(username, password); + + /* + * TODO + * Buatlah atau Instance objek Profile baru + */ + Profile profile = new Profile(); + + // Menginput Data Profile + System.out.println("Nama Lengkap"); + System.out.print("> "); + String fullName = sc.nextLine(); + profile.setFullName(fullName); + System.out.println("Umur"); + System.out.print("> "); + int age = sc.nextInt(); + sc.nextLine(); + System.out.println("Hobby"); + System.out.print("> "); + String hobby = sc.nextLine(); + + /* + * TODO + * Berikan nilai fullName, age, dan hobby ke objek profile yang telah + * di Instance sebelumnya. Nilai ini diperoleh dari data profile yang + * diinput sebelumnya + */ + profile.setFullName(fullName); + profile.setAge(age); + profile.setHobby(hobby); + + + /* + * TODO + * Berikan nilai nickName ke objek profile, + * Nilai ini diperoleh menggunakan static method yang dibuat di class + * StringUtils, dengan mengirimkan fullName yang diinput sebelumnya + */ + + // Menambahkan user yang dibuat ke list user + listUser.add(user); + // Menambahkan profile user yang dibuat ke list profile + listUserProfile.add(profile); + System.out.println("-------------------------"); + System.out.println("Berhasil Membuat User Baru!!"); + runApp(); + } + + private static void showDetailUser(Profile profile) { + String name = StringUtils.nickname(listUserProfile.get(0).getFullName()); + + // StringUtils stringUtils = new StringUtils(); + + /* + * TODO * + * Tampilkan semua data profile user yang login + */ + System.out.println("------------------------------"); + System.out.println("SELAMAT DATANG !!"); + System.out.println("------------------------------"); + System.out.println("Nama : " + listUserProfile.get(0).getFullName()); + System.out.println("Nickname : "+ name); + System.out.println("Umur : " + listUserProfile.get(0).getAge()); + System.out.println("Hobby : " + listUserProfile.get(0).getHobby()); + } +} diff --git a/src/H071221104/Praktikum _4/login_app/models/Profile.java b/src/H071221104/Praktikum _4/login_app/models/Profile.java new file mode 100644 index 0000000..bcce1eb --- /dev/null +++ b/src/H071221104/Praktikum _4/login_app/models/Profile.java @@ -0,0 +1,33 @@ +package models; + +public class Profile { + private String fullName, hobby; + private int age; + + public void setFullName(String fullName) { + this.fullName = fullName; + } + public void setHobby(String hobby) { + this.hobby = hobby; + } + public void setAge(int age) { + this.age = age; + } + public String getHobby() { + return hobby; + } + public String getFullName() { + return fullName; + } + public int getAge() { + return age; + } + public Profile(){ + } + + /* + * TODO: + * Tambahkan attribute, method, atau constructor + * yang dibutuhkan di kelas user + */ +} diff --git a/src/H071221104/Praktikum _4/login_app/models/User.java b/src/H071221104/Praktikum _4/login_app/models/User.java new file mode 100644 index 0000000..415a7d7 --- /dev/null +++ b/src/H071221104/Praktikum _4/login_app/models/User.java @@ -0,0 +1,25 @@ +package models; + +public class User { + private String username; + private String password; + public String getUsername() { + return username; + } + public String getPassword() { + return password; + } + public User(String username, String password){ + this.username = username; + this.password = password; + } + + + + + /* + * TODO: + * Tambahkan attribute, method, atau constructor + * yang dibutuhkan di kelas user + */ +} diff --git a/src/H071221104/Praktikum _4/login_app/utils/StringUtils.java b/src/H071221104/Praktikum _4/login_app/utils/StringUtils.java new file mode 100644 index 0000000..17f04b5 --- /dev/null +++ b/src/H071221104/Praktikum _4/login_app/utils/StringUtils.java @@ -0,0 +1,26 @@ +package utils; + +import models.Profile; + +public class StringUtils { + Profile profile = new Profile(); + /* + TODO + * Buatlah sebuah method static yang akan + * mengembalikan nickName berdasarkan fullName yang diberikan + * aturan pembuatan nickName adalah : + * 1. Jika fullName hanya 1 kata maka nickName = fullName + * (ex: FullName = Agus, maka NickName = Agus) + * 2. Jika fullName lebih dari 1 kata maka nickName adalah kata kedua dari + * fullName + * (ex: FullName = Eurico Devon, maka NickName = Devon) + */ + public static String nickname(String name){ + // Profile profile = new Profile(); + // String str = profile.getFullName(); + String[] arr = name.split(" "); + String arr2 = arr[1]; + // System.out.println(arr2); + return arr2; + } +} diff --git a/src/H071221104/Praktikum_3/Belanja.java b/src/H071221104/Praktikum_3/Belanja.java new file mode 100644 index 0000000..6195839 --- /dev/null +++ b/src/H071221104/Praktikum_3/Belanja.java @@ -0,0 +1,67 @@ +package Semester2.Praktikum.Pertemuan3; + +import java.util.ArrayList; +import java.util.Scanner; +class User { + User (){} + String name; + int balance; + public String getName() { + return name; + } + public int getBalance() { + return balance; + } +} + +class Product { + String name; + int price; + int stock; + public String getName() { + return name; + } + public int getPrice() { + return price; + } + public int getStock() { + return stock; + } + Product (String name, int price, int stock) { + this.name = name; + this.price = price; + this.stock = stock; + } +} + +class Store { + String name; + Store (String name){ + this.name = name; + } +public class Belanja { + public static void main(String[] args) { + Store store = new Store("Sisfo Computer"); + ArrayList daftarBarang = new ArrayList<>(); + daftarBarang.add("HP Pavilion Gaming 15"); + daftarBarang.add("ASUS VivoBook 15 A516MAO N4020"); + daftarBarang.add("Lenovo IdeaPad S145"); + + ArrayList hargaBarang = new ArrayList<>(); + hargaBarang.add(2000); + hargaBarang.add(4000); + hargaBarang.add(1500); + + ArrayList stokBarang = new ArrayList<>(); + stokBarang.add(15); + stokBarang.add(4); + stokBarang.add(2); + System.out.println("Selamat datang di " + store.name); + System.out.println("Daftar Produk:"); + for (int i = 0; i < daftarBarang.size(); i++) { + System.out.println((i + 1) + ". " + daftarBarang.get(i) + " - $" + hargaBarang.get(i) + "| Stok " + stokBarang.get(i)); + } + } + } +} + diff --git a/src/H071221104/Praktikum_3/Main.java b/src/H071221104/Praktikum_3/Main.java new file mode 100644 index 0000000..3df3a97 --- /dev/null +++ b/src/H071221104/Praktikum_3/Main.java @@ -0,0 +1,48 @@ +package Semester2.Praktikum.Pertemuan3; + +class Player{ + private String name; + private int hp; + private int attackPower; + private int defense; + + public Player(){} + + public void getDamage(Player enemy) { + hp = hp-Math.abs(enemy.getAttackPower()-defense); + } + public Player(String name, int attackPower, int defense){ + this.name = name; + this.attackPower = attackPower; + this.defense = defense; + this.hp = 100; + } + public Player(String name, int defense){ + this.name = name; + this.defense = defense; + this.hp = 100; + } + public void setAttackPower(int attackPower){ + this.attackPower = attackPower; + } + public void status() { + System.out.println(name + " status"); + System.out.println("HP = " + hp); + System.out.println("Defense = " + defense); + System.out.println("Attack = " + attackPower + "\n"); + } + int getAttackPower() { + return attackPower; + } +} + +public class Main { + public static void main(String [] args) { + Player player1= new Player("Mino", 30, 15); + Player player2= new Player("Hilda", 10); + player2.setAttackPower(35); + player1.getDamage(player2); + player1.status(); + player2.status(); + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_3/MainClass.java b/src/H071221104/Praktikum_3/MainClass.java new file mode 100644 index 0000000..e072aea --- /dev/null +++ b/src/H071221104/Praktikum_3/MainClass.java @@ -0,0 +1,143 @@ +package Semester2.Praktikum.Pertemuan3; +import java.util.ArrayList; +import java.util.Scanner; +class User { + String name; + int balance; + int pilihan; + int konfirmasi; + int transaksi; + public String getName() { + return name; + } + public int getBalance() { + return balance; + } +} + +class Product { + String name; + int price; + int stock; + public String getName() { + return name; + } + public int getPrice() { + return price; + } + public int getStock() { + return stock; + } + Product (String name, int price, int stock) { + this.name = name; + this.price = price; + this.stock = stock; + } +} + +class Store { + String name; + int harga = 0; +} + +public class MainClass { + public static void main(String[] args) { + ArrayList product = new ArrayList<>(); + Store store = new Store(); + User user = new User(); + Scanner input = new Scanner(System.in); + do { + Product produk1 = new Product("HP Pavilion Gaming 15", 2000, 15); + Product produk2 = new Product("ASUS VivoBook 15 A516MAO N4020", 4000, 4); + Product produk3 = new Product("Lenovo IdeaPad S145", 1500, 2); + System.out.print("Masukkan nama pengguna: "); + user.name = input.nextLine(); + System.out.print("Masukkan jumlah uang yang dimiliki: "); + user.balance = input.nextInt(); + System.out.println("----------CARD----------"); + System.out.println(user.name); + System.out.println(user.balance); + System.out.println("------------------------"); + System.out.println("Selamat Datang di " + store.name); + System.out.println("Daftar Produk"); + System.out.println("1." + produk1.name + " - $" + produk1.price + " | Stok " + produk1.stock ); + System.out.println("2." + produk2.name + " - $" + produk2.price + " | Stok " + produk2.stock ); + System.out.println("3." + produk3.name + " - $" + produk3.price + " | Stok " + produk3.stock ); + System.out.println("0.Keluar"); + System.out.print("> "); + } while (user.pilihan != 0); + user.pilihan = input.nextInt(); + do { + if (user.pilihan == 1){ + user.balance = user.balance - produk1.price; + if (user.balance >= 0){ + System.out.println("Apakah anda yakin ingin membeli: "); + System.out.println(produk1.name + ", " + "dengan Harga $" + produk1.price); + System.out.println("1. Konfirmasi"); + System.out.println("2. Batal"); + System.out.print("> "); + user.konfirmasi = input.nextInt(); + if (user.konfirmasi == 1){ + product.add(produk1.nama); + produk1.stock -= 1; + store.harga += produk1.price; + System.out.println(user.name + " berhasil membeli " + produk1.name + "."); + System.out.println("---------------"); + System.out.println("Lanjutkan Transaksi?"); + System.out.println("1. Iya"); + System.out.println("2. Tidak"); + System.out.print("> "); + user.transaksi = input.nextInt(); + } + } else { + System.out.println("uang anda tidak cukup"); + } + } else if (user.pilihan == 2){ + if (user.balance >= produk2.price){ + System.out.println("Apakah anda yakin ingin membeli: "); + System.out.println(produk2.name + ", " + "dengan Harga $" + produk2.price); + System.out.println("1. Konfirmasi"); + System.out.println("2. Batal"); + System.out.print("> "); + user.konfirmasi = input.nextInt(); + if (user.konfirmasi == 1){ + System.out.println(user.name + " berhasil membeli " + produk2.name + "."); + System.out.println("---------------"); + System.out.println("Lanjutkan Transaksi?"); + System.out.println("1. Iya"); + System.out.println("2. Tidak"); + System.out.print("> "); + user.transaksi = input.nextInt(); + } + } else { + System.out.println("Uang anda tidak cukup"); + } + } else if (user.pilihan == 3){ + if (user.balance >= produk1.price){ + System.out.println("Apakah anda yakin ingin membeli: "); + System.out.println(produk3.name + ", " + "dengan Harga $" + produk3.price); + System.out.println("1. Konfirmasi"); + System.out.println("2. Batal"); + System.out.print("> "); + user.konfirmasi = input.nextInt(); + if (user.konfirmasi == 1){ + System.out.println(user.name + " berhasil membeli " + produk3.name + "."); + System.out.println("---------------"); + System.out.println("Lanjutkan Transaksi?"); + System.out.println("1. Iya"); + System.out.println("2. Tidak"); + System.out.print("> "); + user.transaksi = input.nextInt(); + } + } else { + System.out.println("Uang anda tidak cukup"); + } + } + input.close(); + } while(user.transaksi == 2); + System.out.println("Anda membeli produk: "); + System.out.println(product); + System.out.println("Dengan harga: " + store.harga); + } +} + diff --git a/src/H071221104/Praktikum_3/Panggil.java b/src/H071221104/Praktikum_3/Panggil.java new file mode 100644 index 0000000..3a6b3fe --- /dev/null +++ b/src/H071221104/Praktikum_3/Panggil.java @@ -0,0 +1,54 @@ +import java.util.ArrayList; +import java.util.Scanner; + +class User { + private String name; + private int balance; + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public int getBalance() { + return balance; + } + public void setBalance(int balance) { + this.balance = balance; + } + User (String name, int balance){ + this.name = name; + this.balance = balance; + } +} +class Product { + private String name; + private int price; + private int stock; + public String getName() { + return name; + } + public int getPrice() { + return price; + } + public int getStock() { + return stock; + } +} +class Store { + private String name; + private String products; + Store(String name){ + this.name = name; + } +} + + +public class Panggil { + public static void main(String[] args) { + ArrayList produk = new Arraylist(); + produk.add("HP Pavilion Gaming 15"); + produk.add("ASUS VivoBook 15 A516MAO N4020"); + produk.add("Lenovo IdeaPad S145"); + } +} diff --git a/src/H071221104/Praktikum_3/ProgramBelanja.java b/src/H071221104/Praktikum_3/ProgramBelanja.java new file mode 100644 index 0000000..35c9b33 --- /dev/null +++ b/src/H071221104/Praktikum_3/ProgramBelanja.java @@ -0,0 +1,105 @@ +package Semester2.Praktikum.Pertemuan3; +import java.util.ArrayList; +import java.util.Scanner; + +class Barang { + private String nama; + private int harga; + private int stok; + + public Barang(String nama, int harga, int stok) { + this.nama = nama; + this.harga = harga; + this.stok = stok; + } + + public String getNama() { + return nama; + } + + public int getHarga() { + return harga; + } + + public int getStok() { + return stok; + } + + public void kurangiStok(int jumlah) { + stok -= jumlah; + } + + public String toString() { + return nama + " (Rp" + harga + ") - Stok: " + stok; + } +} + +class Pembeli { + private int uang; + + public Pembeli(int uang) { + this.uang = uang; + } + + public int getUang() { + return uang; + } + + public boolean kurangiUang(int harga) { + if (uang >= harga) { + uang -= harga; + return true; + } else { + return false; + } + } +} + +public class ProgramBelanja { + public static void main(String[] args) { + ArrayList daftarBarang = new ArrayList<>(); + daftarBarang.add(new Barang("Buku", 10000, 5)); + daftarBarang.add(new Barang("Pensil", 2000, 10)); + daftarBarang.add(new Barang("Penghapus", 3000, 7)); + daftarBarang.add(new Barang("Spidol", 5000, 3)); + + Scanner input = new Scanner(System.in); + + System.out.print("Masukkan uang Anda: "); + int uang = input.nextInt(); + Pembeli pembeli = new Pembeli(uang); + + int pilihan; + do { + System.out.println("\nDaftar Barang:"); + for (int i = 0; i < daftarBarang.size(); i++) { + System.out.println((i + 1) + ". " + daftarBarang.get(i)); + } + + System.out.println("0. Selesai belanja"); + + System.out.println("\nUang Anda: Rp" + pembeli.getUang()); + + System.out.print("Pilih barang yang ingin dibeli: "); + pilihan = input.nextInt(); + + if (pilihan > 0 && pilihan <= daftarBarang.size()) { + Barang barangDipilih = daftarBarang.get(pilihan - 1); + if (barangDipilih.getStok() > 0 && pembeli.kurangiUang(barangDipilih.getHarga())) { + barangDipilih.kurangiStok(1); + System.out.println("Barang berhasil dibeli!"); + } else { + System.out.println("Barang tidak dapat dibeli."); + } + } else if (pilihan != 0) { + System.out.println("Pilihan tidak valid."); + } + } while (pilihan != 0); + + System.out.println("\nBarang yang tersedia:"); + for (Barang barang : daftarBarang) { + System.out.println(barang); + } + System.out.println("Uang Anda: Rp" + pembeli.getUang()); + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_3/Super.java b/src/H071221104/Praktikum_3/Super.java new file mode 100644 index 0000000..77d9110 --- /dev/null +++ b/src/H071221104/Praktikum_3/Super.java @@ -0,0 +1,55 @@ +package Semester2.Praktikum.Pertemuan3; +public class Super { + public static void main(String[] args) { + Hero hero = new Hero(); + hero.role = "Assasin"; + hero.type = "Attacker"; + + SungJin sungJin = new SungJin("Sung Jin Wo", 150, 500); + sungJin.roletype = hero; + + //Sebelum menggunakan spesial skill + System.out.println("Before:"); + sungJin.getStat(); + System.out.println("Type: " + hero.getRoleType()); + + //Setelah menggunakan spesial skill + System.out.println("\nAfter: "); + sungJin.SpesialSkill(); + sungJin.getStat(); + System.out.println("Type: " + hero.getRoleType()); + } +} +class Hero{ + String role; + String type; + String getRoleType(){ + return role + ", " + type; + } +} +class SungJin{ + Hero roletype; + String nama; + int power; + int health; + public SungJin() {} + + public SungJin(String nama) { + this.nama = nama; + } + public SungJin(String nama, int power, int health){ + this.nama = nama; + this.power = power; + this.health = health; + } + + public void getStat(){ + System.out.println("nama: " + nama); + System.out.println("Power: " + power); + System.out.println("Health: " + health); + } + public void SpesialSkill(){ + this.power += 50; + this.health += 100; + } +} diff --git a/src/H071221104/Praktikum_3/no3/Product.java b/src/H071221104/Praktikum_3/no3/Product.java new file mode 100644 index 0000000..32116bf --- /dev/null +++ b/src/H071221104/Praktikum_3/no3/Product.java @@ -0,0 +1,24 @@ +public class Product { + private String name; + private int price; + private int stock; + public String getName() { + return name; + } + public int getPrice() { + return price; + } + public int getStock() { + return stock; + } + public Product(String name, int price, int stock){ + this.name = name; + this.price = price; + this.stock = stock; + } + + public int itemSell(){ + this.stock -= 1; + return this.stock; + } +} diff --git a/src/H071221104/Praktikum_3/no3/Store.java b/src/H071221104/Praktikum_3/no3/Store.java new file mode 100644 index 0000000..84a1b3e --- /dev/null +++ b/src/H071221104/Praktikum_3/no3/Store.java @@ -0,0 +1,55 @@ +import java.util.ArrayList; + +public class Store { + String name; + + ArrayList products = new ArrayList<>(); + ArrayList productsStock = new ArrayList<>(); + ArrayList productsPrice = new ArrayList<>(); + + public Store(String name){ + this.name = name; + } + + public void addProduct(Product prod){ + products.add(prod.getName()); + productsPrice.add(prod.getPrice()); + productsStock.add(prod.getStock()); + } + + public void showProduct(){ + System.out.println("Daftar produk : "); + + for (int i = 0; i < products.size(); i+=1){ + System.out.printf("%d. %s - $%d | Stok %d \n", i+1, products.get(i), productsPrice.get(i), productsStock.get(i)); + } + } + + public void transaksi(int prodNum, User user){ + Product prod = new Product(products.get(prodNum), productsPrice.get(prodNum), productsStock.get(prodNum)); + + if (prod.getStock() > 0){ + if(user.getBalance() >= prod.getPrice()){ + user.balance -= prod.getPrice(); + + prod.itemSell(); + productsStock.set(prodNum, prod.getStock()); + + if (prod.getStock() <= 0) { + products.remove(prod.getName()); + productsPrice.remove(Integer.valueOf(prod.getPrice())); + productsStock.remove(Integer.valueOf(prod.getStock())); + } + System.out.printf("%s Berhasil membeli %s \n", user.getName(), products.get(prodNum)); + } else { + System.out.println("Barang gagal dibeli, uang anda tidak cukup"); + } + } else { + System.out.println("Maaf stock untuk barang ini tidak tersedia"); + } + } + + public String getName(){ + return this.name; + } +} diff --git a/src/H071221104/Praktikum_3/no3/StoreOri.java b/src/H071221104/Praktikum_3/no3/StoreOri.java new file mode 100644 index 0000000..0e4e14e --- /dev/null +++ b/src/H071221104/Praktikum_3/no3/StoreOri.java @@ -0,0 +1,86 @@ +import java.util.Scanner; + +public class StoreOri { + public static void main(String[] args) { + Store store = new Store("Toko Ashiapp"); + User user = new User("Orii", 3000); + + Product produk1 = new Product("Ipong", 1000, 5); + Product produk2 = new Product("Oddo", 500, 3); + Product produk3 = new Product("Vovo", 750, 2); + + store.addProduct(produk1); + store.addProduct(produk2); + store.addProduct(produk3); + + runStore(store, user); + } + + public static void runStore(Store store, User user){ + Scanner inp = new Scanner(System.in); + + user.showCard(); + System.out.println("Selamat datang di " + store.getName()); + store.showProduct(); + System.out.println("0. Keluar"); + + try { + int responOption = inp.nextInt(); + int responProd = responOption - 1; + + if (responOption == 0){ + System.out.println("=============================="); + System.out.printf("Sisa uang anda : %d \n", user.getBalance()); + System.out.println("Terima kasih telah berbelanja"); + System.out.println("=============================="); + inp.close(); + return; + } + if (responOption < 0){ + responOption = 0; + } + + if (responOption > store.products.size()){ + System.out.println("=============================="); + System.out.println("Maaf opsi tidak ada"); + System.out.println("=============================="); + runStore(store, user); + } + + System.out.println("Apakah anda yakin ingin membeli :"); + System.out.printf("%s dengan harga $%d ? \n", store.products.get(responProd), store.productsPrice.get(responProd)); + System.out.println("1. Konfirmasi"); + System.out.println("2. Batal"); + System.out.print(">. "); + int responKonfir = inp.nextInt(); + + if (responKonfir == 1){ + store.transaksi(responKonfir, user); + System.out.println("Lanjutkan transaksi ??"); + System.out.println("1. Iya"); + System.out.println("2. Tidak"); + System.out.print(">. "); + int responKonfirAction = inp.nextInt(); + + if (responKonfirAction == 1){ + runStore(store, user); + } else { + System.out.println("=============================="); + System.out.printf("Sisa uang anda : %d \n", user.getBalance()); + System.out.println("Terima kasih telah berbelanja"); + System.out.println("=============================="); + inp.close(); + return; + } + } else if (responKonfir == 2){ + runStore(store, user); + } + } catch (Exception e) { + System.out.println("Maaf input hanya berupa bilangan bulat"); + System.out.println("Byeee ~~~~~"); + inp.close(); + return; + } + inp.close(); + } +} diff --git a/src/H071221104/Praktikum_3/no3/User.java b/src/H071221104/Praktikum_3/no3/User.java new file mode 100644 index 0000000..15703ee --- /dev/null +++ b/src/H071221104/Praktikum_3/no3/User.java @@ -0,0 +1,23 @@ +public class User { + private String name; + int balance; + public String getName() { + return name; + } + public int getBalance() { + return balance; + } + + public User(String name, int balance){ + this.name = name; + this.balance = balance; + } + + public void showCard(){ + System.out.println("========== CARD =========="); + System.out.println("Nama : " + getName()); + System.out.println("Balance : " + getBalance()); + System.out.println("========== CARD =========="); + } +} + diff --git a/src/H071221104/Praktikum_5/no1/Bangun.java b/src/H071221104/Praktikum_5/no1/Bangun.java new file mode 100644 index 0000000..81e18b2 --- /dev/null +++ b/src/H071221104/Praktikum_5/no1/Bangun.java @@ -0,0 +1,142 @@ +import java.util.Scanner; +public class Bangun { + Kubus kubus = new Kubus(); + Balok balok = new Balok(); + Bola bola = new Bola(); + Tabung tabung = new Tabung(); + Persegi persegi = new Persegi(); + PersegiPanjang persegiPanjang = new PersegiPanjang(); + Lingkaran lingkaran = new Lingkaran(); + Segitiga segitiga = new Segitiga(); + Trapesium trapesium = new Trapesium(); + BangunDatar bangunDatar = new BangunDatar(); + BangunRuang bangunRuang = new BangunRuang(); + int pilih,pilih2,pilih3; + public void showMenu(){ + Scanner inp = new Scanner(System.in); + System.out.println("1. ==== BANGUN RUANG ===="); + System.out.println("2. ==== BANGUN DATAR ===="); + System.out.print("Pilih : "); + int pilih = inp.nextInt(); + // inp.close(); + if (pilih == 1){ + System.out.println("==== BANGUN RUANG ===="); + System.out.println("1. KUBUS"); + System.out.println("2. BALOK"); + System.out.println("3. BOLA"); + System.out.println("4. TABUNG"); + System.out.print("Pilih : "); + int pilih2 = inp.nextInt(); + if (pilih2 == 1){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + kubus.luas(); + } else { + kubus.volume(); + } + // inp.close(); + } else if (pilih2 == 2){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + balok.luas(); + } else { + balok.volume(); + } + // inp.close(); + } else if (pilih2 == 3){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + bola.luas(); + } else { + bola.volume(); + } + // inp.close(); + } else if (pilih2 == 4){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + tabung.luas(); + } else { + tabung.volume(); + } + // inp.close(); + } + } else if(pilih == 2){ + System.out.println("==== BANGUN DATAR ===="); + System.out.println("1. PERSEGI"); + System.out.println("2. PERSEGI PANJANG"); + System.out.println("3. LINGKARAN"); + System.out.println("4. SEGITIGA"); + System.out.println("5. TRAPESIUM"); + System.out.print("Pilih : "); + int pilih2 = inp.nextInt(); + if (pilih2 == 1){ + System.out.println("1. Luas"); + System.out.println("2. Keliling"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + persegi.luas(); + } else { + persegi.keliling(); + } + // inp.close(); + } else if (pilih2 == 2){ + System.out.println("1. Luas"); + System.out.println("2. Keliling"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + persegiPanjang.luas(); + } else { + persegiPanjang.keliling(); + } + // inp.close(); + } else if (pilih2 == 3){ + System.out.println("1. Luas"); + System.out.println("2. Keliling"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + lingkaran.luas(); + } else { + lingkaran.keliling(); + } + // inp.close(); + } else if (pilih2 == 4){ + System.out.println("1. Luas"); + System.out.println("2. Keliling"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 4){ + segitiga.luas(); + } else { + segitiga.keliling(); + } + // inp.close(); + } else if (pilih2 == 5){ + System.out.println("1. Luas"); + System.out.println("2. Keliling"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + trapesium.luas(); + } else { + trapesium.keliling(); + } + // inp.close(); + } + } inp.close(); + } +} diff --git a/src/H071221104/Praktikum_5/no1/BangunDatar.java b/src/H071221104/Praktikum_5/no1/BangunDatar.java new file mode 100644 index 0000000..9038734 --- /dev/null +++ b/src/H071221104/Praktikum_5/no1/BangunDatar.java @@ -0,0 +1,116 @@ +import java.util.Scanner; +public class BangunDatar{ + public void luas(){ + System.out.println("Menampilkan luas bangun datar"); + } + public void keliling(){ + System.out.println("menampilkan keliling bangun datar"); + } +} + +class Persegi extends BangunDatar{ + int s; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.print("Masukkan panjang sisi : "); + int s = inp.nextInt(); + System.out.println("Luas persegi adalah : " + s*s); + } + + public void keliling(){ + System.out.print("Masukkan panjang sisi : "); + int s = inp.nextInt(); + System.out.println("Keliling persegi adalah : " + 4*s); + super.keliling(); + inp.close(); + } +} + +class PersegiPanjang extends BangunDatar{ + int p,l; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.println("Masukkan panjang : "); + int p = inp.nextInt(); + System.out.println("Masukkan lebar : "); + int l = inp.nextInt(); + System.out.println("Luas Persegi Panjang adalah : " + p*l); + } + public void keliling(){ + System.out.println("Masukkan panjang : "); + int p = inp.nextInt(); + System.out.println("Masukkan lebar : "); + int l = inp.nextInt(); + System.out.println("Keliling Persegi panjang adalah : " + (2*p) + (2*l)); + super.keliling(); + inp.close(); + } +} + +class Lingkaran extends BangunDatar{ + double pi = 3.14; + int r,d; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.println("Masukkan Jari-jari : "); + int r = inp.nextInt(); + System.out.println("Luas lingkaran : " + pi*r*r); + } + + public void keliling(){ + System.out.println("Masukkan diameter : " ); + int d = inp.nextInt(); + System.out.println("Keliling lingkarang adalah : " + pi*d); + super.keliling(); + inp.close(); + } +} + +class Segitiga extends BangunDatar{ + int a,t,s1,s2,s3; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.println("Masukkan alas : "); + int a = inp.nextInt(); + System.out.println("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.println("Luas segitiga adalah : " + 0.5*a*t); + } + public void keliling(){ + System.out.println("Masukkan sisi 1 : "); + int s1 = inp.nextInt(); + System.out.println("Masukkan sisi 2 : "); + int s2 = inp.nextInt(); + System.out.println("Masukkan sisi 3 : "); + int s3 = inp.nextInt(); + System.out.println("Keliling segitiga adalah : " + s1+s2+s3); + super.keliling(); + inp.close(); + } +} + +class Trapesium extends BangunDatar{ + int a,b,c,d,t,s1,s2,s3,s4; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.println("Masukkan sisi a : "); + int a = inp.nextInt(); + System.out.println("Masukkan sisi b : "); + int b = inp.nextInt(); + System.out.println("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.println("Luas trapesium adalah : " + 0.5*t*(a+b)); + } + public void keliling(){ + System.out.println("Masukkan sisi 1 : "); + int s1 = inp.nextInt(); + System.out.println("Masukkan sisi 2 : "); + int s2 = inp.nextInt(); + System.out.println("Masukkan sisi 3 : "); + int s3 = inp.nextInt(); + System.out.println("Masukkan sisi 4 : "); + int s4 = inp.nextInt(); + System.out.println("Keliling trapesium adalah : " + (s1+s2+s3+s4)); + super.keliling(); + } +} diff --git a/src/H071221104/Praktikum_5/no1/BangunRuang.java b/src/H071221104/Praktikum_5/no1/BangunRuang.java new file mode 100644 index 0000000..c5f703f --- /dev/null +++ b/src/H071221104/Praktikum_5/no1/BangunRuang.java @@ -0,0 +1,147 @@ +import java.util.Scanner; +public class BangunRuang{ + public void luas(){ + System.out.println("meanmpilkan luas bangun ruang"); + } + public void volume(){ + System.out.println("Menampilkan volume bangun ruang"); + } +} + +class Kubus extends BangunRuang{ + // private int s,r; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.print("Masukkan sisi : "); + int s = inp.nextInt(); + System.out.println("Luas kubus adalah : " + 6*(s*s)); + } + public void volume(){ + System.out.print("Masukkan panjang rusuk : "); + int r = inp.nextInt(); + System.out.println("Volume kubus adalah : " + 12*r); + super.volume(); + } +} + +class Balok extends BangunRuang{ + // private int p,l,t; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.print("Masukkan panjang : "); + int p = inp.nextInt(); + System.out.print("Masukkan lebar : "); + int l = inp.nextInt(); + System.out.print("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.println("Luas balok adalah : " + 2*(p*l)+2*(l*t)+2*(p*t)); + } + public void volume(){ + System.out.print("Masukkan panjang : "); + int p = inp.nextInt(); + System.out.print("Masukkan lebar : "); + int l = inp.nextInt(); + System.out.print("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.print("Volume balok adalah : " + 4 * (p+l+t)); + super.volume(); + inp.close(); + } +} + +class Bola extends BangunRuang{ + private double pi = 3.14; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.print("Masukkan diameter : "); + int d = inp.nextInt(); + System.out.println("Luas bola adalah : " + pi*(d*d)); + } + public void volume(){ + System.out.print("Masukkan jari-jari : "); + int r = inp.nextInt(); + System.out.println("Volume bola adalah : " + 4/3 * pi * (r*r*r)); + super.volume(); + inp.close(); + } +} + +class Tabung extends BangunRuang{ + private double pi = 3.14; + Scanner inp = new Scanner(System.in); + public void luas(){ + System.out.print("Masukkan jari-jari : "); + int r = inp.nextInt(); + System.out.print("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.println("Luas tabung adalah : " + 2 * pi * r * (r+t)); + } + public void volume(){ + System.out.print("Masukkan jari-jari : "); + int r = inp.nextInt(); + System.out.print("Masukkan tinggi : "); + int t = inp.nextInt(); + System.out.println("Volume tabung adalah : " + pi * (r*r) * t); + super.volume(); + inp.close(); + } + + public void showMenu(){ + Kubus kubus = new Kubus(); + Balok balok = new Balok(); + Bola bola = new Bola(); + Tabung tabung = new Tabung(); + System.out.println("==== BANGUN RUANG ===="); + System.out.println("1. KUBUS"); + System.out.println("2. BALOK"); + System.out.println("3. BOLA"); + System.out.println("4. TABUNG"); + System.out.print("Pilih : "); + int pilih2 = inp.nextInt(); + if (pilih2 == 1){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + kubus.luas(); + } else { + kubus.volume(); + } + inp.close(); + } else if (pilih2 == 2){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + balok.luas(); + } else { + balok.volume(); + } + inp.close(); + } else if (pilih2 == 3){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + bola.luas(); + } else { + bola.volume(); + } + inp.close(); + } else if (pilih2 == 4){ + System.out.println("1. Luas"); + System.out.println("2. Volume"); + System.out.print("Pilih : "); + int pilih3 = inp.nextInt(); + if (pilih3 == 1){ + tabung.luas(); + } else { + tabung.volume(); + } + inp.close(); + } + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_5/no1/Main.java b/src/H071221104/Praktikum_5/no1/Main.java new file mode 100644 index 0000000..0379f99 --- /dev/null +++ b/src/H071221104/Praktikum_5/no1/Main.java @@ -0,0 +1,8 @@ +// import java.util.Scanner; +public class Main{ + public static void main(String[] args) { + Bangun bangun = new Bangun(); + // BangunRuang bangunRuang = new BangunRuang(); + bangun.showMenu(); + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_5/no2/Kordinator.java b/src/H071221104/Praktikum_5/no2/Kordinator.java new file mode 100644 index 0000000..710923a --- /dev/null +++ b/src/H071221104/Praktikum_5/no2/Kordinator.java @@ -0,0 +1,5 @@ +public class Kordinator extends Sisfo{ + public void suara(){ + System.out.println("Aku sebagai Kordinator Bidang"); + } +} diff --git a/src/H071221104/Praktikum_5/no2/Main.java b/src/H071221104/Praktikum_5/no2/Main.java new file mode 100644 index 0000000..e3f88b8 --- /dev/null +++ b/src/H071221104/Praktikum_5/no2/Main.java @@ -0,0 +1,15 @@ +public class Main { + public static void main(String[] args) { + Sisfo sisfo = new Sisfo(); + Kordinator kordinator = new Kordinator(); + Staf staf = new Staf(); + Pengurus pengurus = new Pengurus(); + kordinator.suara(); + pengurus.suara(); + staf.suara(); + sisfo.slogan(); + kordinator.slogan(); + staf.slogan(); + + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_5/no2/Pengurus.java b/src/H071221104/Praktikum_5/no2/Pengurus.java new file mode 100644 index 0000000..82f712a --- /dev/null +++ b/src/H071221104/Praktikum_5/no2/Pengurus.java @@ -0,0 +1,5 @@ +public class Pengurus extends Sisfo{ + public void suara(){ + System.out.println("Aku sebagai Pengurus inti"); + } +} diff --git a/src/H071221104/Praktikum_5/no2/Sisfo.java b/src/H071221104/Praktikum_5/no2/Sisfo.java new file mode 100644 index 0000000..23affa5 --- /dev/null +++ b/src/H071221104/Praktikum_5/no2/Sisfo.java @@ -0,0 +1,6 @@ +public class Sisfo { + String name; + public void slogan(){ + System.out.println("========== Sistem Informati, Harga Mati =========="); + } +} diff --git a/src/H071221104/Praktikum_5/no2/Staf.java b/src/H071221104/Praktikum_5/no2/Staf.java new file mode 100644 index 0000000..9826951 --- /dev/null +++ b/src/H071221104/Praktikum_5/no2/Staf.java @@ -0,0 +1,5 @@ +public class Staf extends Sisfo{ + public void suara(){ + System.out.println("Aku sebagai Staf"); + } +} diff --git a/src/H071221104/Praktikum_5/no3/Class diagram no1.drawio.png b/src/H071221104/Praktikum_5/no3/Class diagram no1.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..8e45de4e1332b72f9730976c2c2048c269aa4ad5 GIT binary patch literal 107998 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 F`!}lVv1R}O literal 0 HcmV?d00001 diff --git a/src/H071221104/Praktikum_5/no3/Class diagram no2.drawio.png b/src/H071221104/Praktikum_5/no3/Class diagram no2.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1a2f10bfd102d466c30fd1be9b1956a3f35809 GIT binary patch literal 25181 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 + + + + + + + + + + + + diff --git a/src/H071221104/Praktikum_6/diagram class.png b/src/H071221104/Praktikum_6/diagram class.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8089b72c2f703e91bb2e64d2182046f2282dc4 GIT binary patch literal 42331 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

p$st3T$t$QV5}FX1q=%lp$SX=G6Nt}(Ir~$~ zr|~_qj+Gn07wX+*-Jk?+5}=%*CZsQzG;R)dYes&0kgs9~n{CTZ`3qa@nexzHxjeZ4 zHEFq|W59Uo=q0Wq`2gF>y5g)V1Xs1GzR9cz3?CKtjEL*vQd2Kv6koH+5aUK84}ZXd zAUZCM#RP~y(`&P29w?C0UFM*f5t_<0$ow#>+PZC}yVE*Kh5-IQlzSo`$iGrVbR8%< z5B?;BT&0&+ou8YoJ*EZ$-?!Ij{T_&$hAHZ6xL{*p+56}qHQ=6c#{>dA<7R`A5VHmY z(ra1<7e(fH$#cJ`g&4K{o8uu`4rKj-EiO#wVgSlT?(d%U$P5f`zluJHfQ7-AL5Pjv zvq~$J8moYM#G06F>xuV?@~44n$51d=ukucl(yt)S`++8uANo}d+@r#}g{v^5=;AjH z_HW(Q|A3Mcb;4NhdvP?4WrZXY&kGz7igv0}kN)~-J+=<~4rqx_$pQU$J^juK;3T== pz?@eOp!_F95kh8z{l|{1HHCwyg#M8EZ|=ju54YbNd*3be+~4mVdu{*# literal 0 HcmV?d00001 diff --git a/src/H071221104/Praktikum_6/diagram class.svg b/src/H071221104/Praktikum_6/diagram class.svg new file mode 100644 index 0000000..75c05ac --- /dev/null +++ b/src/H071221104/Praktikum_6/diagram class.svg @@ -0,0 +1,4 @@ + + + +Interface Dog+describe() : void+move() : voidPitbul+ position: int + averageLength: int+describe(): void+move() : voidGerman Shepherd+ position: int + averageLength: int+describe(): void+move() : voidBulldog+ position: int + averageLength: int+describe(): void+move() : voidSiberian Husky+ position: int + averageLength: int+describe(): void+move() : voidAbstract Alat+move() : voidSmartphone+ price: int + brand: String+move() : voidAlat+ totalForwardGear: int +:color: String+ maxSpeed: int+move() : void \ No newline at end of file diff --git a/src/H071221104/Praktikum_6/diagram dipa.svg b/src/H071221104/Praktikum_6/diagram dipa.svg new file mode 100644 index 0000000..92b417c --- /dev/null +++ b/src/H071221104/Praktikum_6/diagram dipa.svg @@ -0,0 +1,4 @@ + + + +abstract Dogy+describe() : void+move() : voidPitbul+ position: int + averageLength: int+describe(): void+move() : voidGerman Shepherd+ position: int + averageLength: int+describe(): void+move() : voidBulldog+ position: int + averageLength: int+describe(): void+move() : voidSiberian Husky+ position: int + averageLength: int+describe(): void+move() : voidinterface Teknologi+move() : voidSmartphone+ price: int + brand: String+move() : voidAlat+ totalForwardGear: int +:color: String+ maxSpeed: int+move() : void \ No newline at end of file diff --git a/src/H071221104/Praktikum_7/no1/Character.java b/src/H071221104/Praktikum_7/no1/Character.java new file mode 100644 index 0000000..875a9ef --- /dev/null +++ b/src/H071221104/Praktikum_7/no1/Character.java @@ -0,0 +1,13 @@ +abstract public class Character { + private String name; + + public Character (String name){ + this.name = name; + } + public String getName() { + return this.name; + } + abstract int attack(); + abstract int attack(String type); + abstract void printAttack(Character character); +} diff --git a/src/H071221104/Praktikum_7/no1/Fighter.java b/src/H071221104/Praktikum_7/no1/Fighter.java new file mode 100644 index 0000000..ec69a5d --- /dev/null +++ b/src/H071221104/Praktikum_7/no1/Fighter.java @@ -0,0 +1,31 @@ +public class Fighter extends Character{ + private int attackPower; + private String type; + + public String getType() { + return type; + } + public Fighter(int attackPower,String name, String type){ + super(name); + this.attackPower = attackPower; + this.type = type; + } + @Override + public int attack() { + return this.attackPower; + } + @Override + public int attack(String type){ + if(getType().equals("melee")){ + return this.attackPower*2; + } else if (getType().equals("ranged")){ + return this.attackPower; + } else { + return this.attackPower; + } + } + @Override + void printAttack(Character character) { + System.out.println(character.getName() + " attacked with power " + character.attack(getType())); + } +} diff --git a/src/H071221104/Praktikum_7/no1/Mage.java b/src/H071221104/Praktikum_7/no1/Mage.java new file mode 100644 index 0000000..5020448 --- /dev/null +++ b/src/H071221104/Praktikum_7/no1/Mage.java @@ -0,0 +1,34 @@ +public class Mage extends Character{ + private int attackPower; + private String type; + public String getType() { + return type; + } + + public Mage(int attackPower,String name, String type){ + super(name); + this.attackPower = attackPower; + this.type = type; + + } + + @Override + public int attack(){ + return this.attackPower; + } + @Override + public int attack(String type){ + if(getType().equals("frost")){ + return this.attackPower*2; + } else if (getType().equals("fire")){ + return this.attackPower*3; + } else { + return this.attackPower; + } + } + + @Override + void printAttack(Character character) { + System.out.println(character.getName() + " attacked with power " + character.attack(getType())); + } +} diff --git a/src/H071221104/Praktikum_7/no1/Main.java b/src/H071221104/Praktikum_7/no1/Main.java new file mode 100644 index 0000000..b73182e --- /dev/null +++ b/src/H071221104/Praktikum_7/no1/Main.java @@ -0,0 +1,20 @@ +public class Main{ + public static void main(String[] args) { + Character fighter1 = new Fighter(100, "Udin", "attack"); + Character fighter2 = new Fighter(100, "Salma", "melee"); + Fighter fighter3 = new Fighter(100, "Jamal", "ranged"); + Mage mage1 = new Mage(300, "Nabila", "frost"); + Mage mage2 = new Mage(300, "Vina", "fire"); + + Character[] characters = new Character[5]; + characters[0] = fighter1; + characters[1] = mage1; + characters[2] = fighter2; + characters[3] = fighter3; + characters[4] = mage2; + System.out.println("=".repeat(25)); + for (Character character : characters) { + character.printAttack(character); + } + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_7/no2/Main.java b/src/H071221104/Praktikum_7/no2/Main.java new file mode 100644 index 0000000..b1cb861 --- /dev/null +++ b/src/H071221104/Praktikum_7/no2/Main.java @@ -0,0 +1,10 @@ +public class Main{ + public static void main(String[] args) { + Product productInteger = new Product<>(10000, "Kinder Joy", "2020-05-01"); + Product productString = new Product<>("Rp 15.000", "Sari Roti", "2023-05-20"); + Product productDouble = new Product<>(7.5, "Susu Kurma", "2023-06-01"); + System.out.println("Product 1: " +productInteger.getName() + " - "+ productInteger.getPrice() + " - " + productInteger.getExpiryDate()); + System.out.println("Product 2: " +productString.getName() + " - "+ productString.getPrice() + " - " + productString.getExpiryDate()); + System.out.println("Product 3: " +productDouble.getName() + " - "+ productDouble.getPrice() + " - " + productDouble.getExpiryDate()); + } +} diff --git a/src/H071221104/Praktikum_7/no2/Product.java b/src/H071221104/Praktikum_7/no2/Product.java new file mode 100644 index 0000000..e81081c --- /dev/null +++ b/src/H071221104/Praktikum_7/no2/Product.java @@ -0,0 +1,34 @@ +public class Product { + private T price; + private String name, expiryDate; + + public T getPrice() { + return price; + } + + public void setPrice(T price) { + this.price = price; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExpiryDate() { + return expiryDate; + } + + public void setExpiryDate(String expiryDate) { + this.expiryDate = expiryDate; + } + + public Product(T price, String name, String expiryDate){ + this.name = name; + this.price = price; + this.expiryDate = expiryDate; + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_7/no3/Burger.java b/src/H071221104/Praktikum_7/no3/Burger.java new file mode 100644 index 0000000..58a9b5a --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Burger.java @@ -0,0 +1,7 @@ +public class Burger implements Food{ + private int price =10; + @Override + public int getPrice() { + return price; + } +} diff --git a/src/H071221104/Praktikum_7/no3/Food.java b/src/H071221104/Praktikum_7/no3/Food.java new file mode 100644 index 0000000..514f1a6 --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Food.java @@ -0,0 +1,3 @@ +interface Food { + int getPrice(); +} diff --git a/src/H071221104/Praktikum_7/no3/FoodFactory.java b/src/H071221104/Praktikum_7/no3/FoodFactory.java new file mode 100644 index 0000000..5dfd4fe --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/FoodFactory.java @@ -0,0 +1,14 @@ +public class FoodFactory{ + public static Food getFood(String type){ + switch (type) { + case "burger": + return new Burger(); + case "pizza": + return new Pizza(); + case "steak": + return new Steak(); + default: + return null; + } + } +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_7/no3/Main.java b/src/H071221104/Praktikum_7/no3/Main.java new file mode 100644 index 0000000..510089e --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Main.java @@ -0,0 +1,20 @@ +import java.util.ArrayList; +import java.util.List; + +public class Main { + public static void main(String[] args) { + Food burger = FoodFactory.getFood("burger"); + Food pizza = FoodFactory.getFood("pizza"); + Food steak = FoodFactory.getFood("steak"); + + List foods = new ArrayList(); + foods.add(burger); + foods.add(pizza); + foods.add(steak); + + int total = Restaurant.calculateTotal(foods); + + System.out.println("Total : " + total ); + + } +} diff --git a/src/H071221104/Praktikum_7/no3/Pizza.java b/src/H071221104/Praktikum_7/no3/Pizza.java new file mode 100644 index 0000000..90e115b --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Pizza.java @@ -0,0 +1,7 @@ +public class Pizza implements Food{ + private int price = 15; + @Override + public int getPrice() { + return price; + } +} diff --git a/src/H071221104/Praktikum_7/no3/Restaurant.java b/src/H071221104/Praktikum_7/no3/Restaurant.java new file mode 100644 index 0000000..ff5b3c4 --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Restaurant.java @@ -0,0 +1,11 @@ +import java.util.List; + +public class Restaurant { + public static int calculateTotal(List foods) { + int total = 0; + for (Food food : foods) { + total += food.getPrice(); + } + return total; + } +} diff --git a/src/H071221104/Praktikum_7/no3/Steak.java b/src/H071221104/Praktikum_7/no3/Steak.java new file mode 100644 index 0000000..344e4dc --- /dev/null +++ b/src/H071221104/Praktikum_7/no3/Steak.java @@ -0,0 +1,7 @@ +public class Steak implements Food{ + private int price = 20; + @Override + public int getPrice() { + return price; + } +} From bd3cc8df9c31007a119c1c404e69c8641cb31a53 Mon Sep 17 00:00:00 2001 From: Orii21 Date: Sun, 4 Jun 2023 17:18:02 +0800 Subject: [PATCH 2/2] Tugas Lab Rafli --- .../Praktikum_9/helloapp/.gitattributes | 9 + .../Praktikum_9/helloapp/.gitignore | 5 + .../helloapp/app/bin/main/style.css | 4 + .../Praktikum_9/helloapp/app/build.gradle | 39 +++ .../app/src/main/java/helloapp/App.java | 21 ++ .../app/src/main/java/helloapp/Celcius.java | 80 ++++++ .../src/main/java/helloapp/Fahrenheit.java | 84 ++++++ .../app/src/main/java/helloapp/HomeScene.java | 60 +++++ .../src/main/java/helloapp/Kalkulator1.java | 86 ++++++ .../src/main/java/helloapp/Kalkulator2.java | 85 ++++++ .../app/src/main/java/helloapp/MenuScene.java | 81 ++++++ .../helloapp/app/src/main/resources/style.css | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + src/H071221104/Praktikum_9/helloapp/gradlew | 245 ++++++++++++++++++ .../Praktikum_9/helloapp/gradlew.bat | 92 +++++++ .../Praktikum_9/helloapp/settings.gradle | 16 ++ 16 files changed, 917 insertions(+) create mode 100644 src/H071221104/Praktikum_9/helloapp/.gitattributes create mode 100644 src/H071221104/Praktikum_9/helloapp/.gitignore create mode 100644 src/H071221104/Praktikum_9/helloapp/app/bin/main/style.css create mode 100644 src/H071221104/Praktikum_9/helloapp/app/build.gradle create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/App.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Celcius.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Fahrenheit.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/HomeScene.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator1.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator2.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/MenuScene.java create mode 100644 src/H071221104/Praktikum_9/helloapp/app/src/main/resources/style.css create mode 100644 src/H071221104/Praktikum_9/helloapp/gradle/wrapper/gradle-wrapper.properties create mode 100644 src/H071221104/Praktikum_9/helloapp/gradlew create mode 100644 src/H071221104/Praktikum_9/helloapp/gradlew.bat create mode 100644 src/H071221104/Praktikum_9/helloapp/settings.gradle diff --git a/src/H071221104/Praktikum_9/helloapp/.gitattributes b/src/H071221104/Praktikum_9/helloapp/.gitattributes new file mode 100644 index 0000000..097f9f9 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/.gitattributes @@ -0,0 +1,9 @@ +# +# https://help.github.com/articles/dealing-with-line-endings/ +# +# Linux start script should use lf +/gradlew text eol=lf + +# These are Windows script files and should use crlf +*.bat text eol=crlf + diff --git a/src/H071221104/Praktikum_9/helloapp/.gitignore b/src/H071221104/Praktikum_9/helloapp/.gitignore new file mode 100644 index 0000000..1b6985c --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/.gitignore @@ -0,0 +1,5 @@ +# Ignore Gradle project-specific cache directory +.gradle + +# Ignore Gradle build output directory +build diff --git a/src/H071221104/Praktikum_9/helloapp/app/bin/main/style.css b/src/H071221104/Praktikum_9/helloapp/app/bin/main/style.css new file mode 100644 index 0000000..03e4245 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/bin/main/style.css @@ -0,0 +1,4 @@ +#code1 { + -fx-font-family: "Arial"; + -fx-font-size: 20px; +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_9/helloapp/app/build.gradle b/src/H071221104/Praktikum_9/helloapp/app/build.gradle new file mode 100644 index 0000000..437e009 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/build.gradle @@ -0,0 +1,39 @@ +plugins { + id 'application' + id 'org.openjfx.javafxplugin' version '0.0.13' +} + +repositories { + // Use Maven Central for resolving dependencies. + mavenCentral() +} + +dependencies { + // Use JUnit Jupiter for testing. + testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' + + // This dependency is used by the application. + implementation 'com.google.guava:guava:31.1-jre' +} + +// Apply a specific Java toolchain to ease working on different environments. +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +javafx { + version = "17" + modules = [ 'javafx.controls' ] +} + +application { + // Define the main class for the application. + mainClass = 'helloapp.App' +} + +tasks.named('test') { + // Use JUnit Platform for unit tests. + useJUnitPlatform() +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/App.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/App.java new file mode 100644 index 0000000..75ed5af --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/App.java @@ -0,0 +1,21 @@ +package helloapp; + +import javafx.application.Application; +import javafx.scene.image.Image; +import javafx.stage.Stage; + +public class App extends Application { + @Override + public void start(Stage primaryStage) { + primaryStage.setResizable(false); + primaryStage.setTitle("Kalkulator Sederhana"); + primaryStage.getIcons().add(new Image("file:D:/Logo_PDI-P.svg.png")); + + HomeScene initScene = new HomeScene(primaryStage); + initScene.show(); + } + + public static void main(String[] args) { + launch(args); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Celcius.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Celcius.java new file mode 100644 index 0000000..06e2310 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Celcius.java @@ -0,0 +1,80 @@ +package helloapp; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; + +public class Celcius { + private Stage stage; + + Celcius(Stage stage){ + this.stage = stage; + } + + public void show(){ + Label label1 = new Label("Celcius to Fahrenheit"); + label1.setStyle("-fx-font-family: Verdana; -fx-font-size: 20px; -fx-text-fill: white;"); + Label label2= new Label("Hasil"); + label2.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + Label label3= new Label(); + label3.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + + TextField textField1 = new TextField("input "); + textField1.setPrefWidth(100); + textField1.setPrefHeight(30); + + Button buttonClear = new Button("Clear"); + buttonClear.setOnAction(V ->{ + Celcius celcius = new Celcius(stage); + celcius.show(); + }); + buttonClear.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: grey; -fx-text-fill: white;"); + buttonClear.setPrefWidth(100); + buttonClear.setPrefHeight(30); + Button buttonCalculate = new Button("Calculate"); + buttonCalculate.setOnAction(v -> { + int input1 = Integer.parseInt(textField1.getText()); + int hasil = (input1 * 9/5) + 32; + String hasilText = String.valueOf(hasil); + label3.setText(hasilText + " F"); + + }); + buttonCalculate.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: gold; -fx-text-fill: white;"); + buttonCalculate.setPrefWidth(100); + buttonCalculate.setPrefHeight(30); + Button buttonBackHome = new Button("Back to Home"); + buttonBackHome.setOnAction(V ->{ + MenuScene menuScene = new MenuScene(stage); + menuScene.show(); + }); + buttonBackHome.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: black; -fx-text-fill: white; -fx-border-color: white"); + buttonBackHome.setPrefWidth(200); + buttonBackHome.setPrefHeight(20); + HBox hBox = new HBox(); + hBox.getChildren().add(buttonClear); + hBox.getChildren().add(buttonCalculate); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(label1, 1, 1); + gridPane.add(textField1,1,2); + gridPane.add(label2,1,4); + gridPane.add(label3,1,5); + gridPane.add(hBox, 1, 6); + gridPane.add(buttonBackHome,1,7); + gridPane.setAlignment(Pos.CENTER); + + Scene scene = new Scene(gridPane,350, 600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Fahrenheit.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Fahrenheit.java new file mode 100644 index 0000000..b3d1dec --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Fahrenheit.java @@ -0,0 +1,84 @@ +package helloapp; + +import javafx.stage.Stage; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; + +public class Fahrenheit { + private Stage stage; + + Fahrenheit(Stage stage){ + this.stage = stage; + } + + public void show(){ + Label label1 = new Label("Fahrenheit to Celcius"); + label1.setStyle("-fx-font-family: Verdana; -fx-font-size: 20px; -fx-text-fill: white;"); + Label label2= new Label("Hasil"); + label2.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + Label label3= new Label(); + label3.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + + TextField textField1 = new TextField("input "); + textField1.setPrefWidth(100); + textField1.setPrefHeight(30); + + Button buttonClear = new Button("Clear"); + buttonClear.setOnAction(V ->{ + Fahrenheit fahrenheit = new Fahrenheit(stage); + fahrenheit.show(); + }); + buttonClear.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: grey; -fx-text-fill: white;"); + buttonClear.setPrefWidth(100); + buttonClear.setPrefHeight(30); + Button buttonCalculate = new Button("Calculate"); + buttonCalculate.setOnAction(v -> { + try { + int input1 = Integer.parseInt(textField1.getText()); + int hasil = (input1 -32) * 5/9; + String hasilText = String.valueOf(hasil); + label3.setText(hasilText + " C"); + + } catch (Exception e) { + label3.setText("Hanya berupa angka"); + } + }); + buttonCalculate.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: gold; -fx-text-fill: white;"); + buttonCalculate.setPrefWidth(100); + buttonCalculate.setPrefHeight(30); + Button buttonBackHome = new Button("Back to Home"); + buttonBackHome.setOnAction(V ->{ + MenuScene menuScene = new MenuScene(stage); + menuScene.show(); + }); + buttonBackHome.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: black; -fx-text-fill: white; -fx-border-color: white"); + buttonBackHome.setPrefWidth(200); + buttonBackHome.setPrefHeight(20); + HBox hBox = new HBox(); + hBox.getChildren().add(buttonClear); + hBox.getChildren().add(buttonCalculate); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(label1, 1, 1); + gridPane.add(textField1,1,2); + gridPane.add(label2,1,4); + gridPane.add(label3,1,5); + gridPane.add(hBox, 1, 6); + gridPane.add(buttonBackHome,1,7); + gridPane.setAlignment(Pos.CENTER); + + Scene scene = new Scene(gridPane,350, 600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/HomeScene.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/HomeScene.java new file mode 100644 index 0000000..c6c4f39 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/HomeScene.java @@ -0,0 +1,60 @@ +package helloapp; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.StackPane; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class HomeScene { + private Stage stage; + + public HomeScene(Stage stage){ + this.stage = stage; + } + + public void show() { + Button buttonMulai = new Button("MULAI"); + buttonMulai.setOnAction(V -> { + MenuScene menuScene = new MenuScene(stage); + menuScene.show(); + }); + buttonMulai.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: white; -fx-background-color: gold"); + buttonMulai.setAlignment(Pos.CENTER); + buttonMulai.setPrefWidth(200); + buttonMulai.setPrefHeight(30); + Label label = new Label("Kalkulator Sederhana"); + label.setStyle("-fx-font-family: Arial; -fx-font-size: 20px; -fx-text-fill: white"); + + Image image = new Image("file:D:/Logo_PDI-P.svg.png"); + ImageView imageView = new ImageView(image); + imageView.setFitWidth(200); + imageView.setFitHeight(200); + + VBox vBox = new VBox(); + vBox.getChildren().add(imageView); + vBox.getChildren().add(label); + vBox.getChildren().add(buttonMulai); + vBox.setAlignment(Pos.CENTER); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(imageView,1,1); + gridPane.add(label,1,3); + gridPane.add(buttonMulai,1,4); + gridPane.setAlignment(Pos.CENTER); + + Scene scene = new Scene(new StackPane(gridPane), 350, 600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator1.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator1.java new file mode 100644 index 0000000..969d076 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator1.java @@ -0,0 +1,86 @@ +package helloapp; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; + +public class Kalkulator1 { + private Stage stage; + + Kalkulator1(Stage stage){ + this.stage = stage; + } + + public void show(){ + Label label1 = new Label("Kalkulator Pertambahan"); + label1.setStyle("-fx-font-family: Verdana; -fx-font-size: 20px; -fx-text-fill: white;"); + Label label2= new Label("Hasil"); + label2.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + Label label3= new Label(); + label3.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + + + TextField textField1 = new TextField("input 1"); + textField1.setStyle("-fx-background-radius: 5;"); + TextField textField2 = new TextField("input 2"); + textField2.setStyle("-fx-background-radius: 5;"); + + + + Button buttonClear = new Button("Clear"); + buttonClear.setOnAction(V ->{ + Kalkulator1 kalkulator1 = new Kalkulator1(stage); + kalkulator1.show(); + }); + buttonClear.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: grey; -fx-text-fill: white;"); + buttonClear.setPrefWidth(125); + buttonClear.setPrefHeight(30); + Button buttonCalculate = new Button("Calculate"); + buttonCalculate.setOnAction(v -> { + int input1 = Integer.parseInt(textField1.getText()); + int input2 = Integer.parseInt(textField2.getText()); + int hasil = input1 * input2; + String hasilText = String.valueOf(hasil); + label3.setText(hasilText); + + }); + buttonCalculate.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: gold; -fx-text-fill: white;"); + buttonCalculate.setPrefWidth(125); + buttonCalculate.setPrefHeight(30); + Button buttonBackHome = new Button("Back to Home"); + buttonBackHome.setOnAction(V ->{ + MenuScene menuScene = new MenuScene(stage); + menuScene.show(); + }); + buttonBackHome.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: black; -fx-text-fill: white; -fx-border-color: white"); + buttonBackHome.setPrefWidth(250); + buttonBackHome.setPrefHeight(20); + HBox hBox = new HBox(); + hBox.getChildren().add(buttonClear); + hBox.getChildren().add(buttonCalculate); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(label1, 1, 1); + gridPane.add(textField1,1,2); + gridPane.add(textField2, 1,3); + gridPane.add(label2,1,4); + gridPane.add(label3,1,5); + gridPane.add(hBox, 1, 6); + gridPane.add(buttonBackHome,1,7); + gridPane.setAlignment(Pos.CENTER); + + Scene scene = new Scene(gridPane,350, 600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator2.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator2.java new file mode 100644 index 0000000..4b47a59 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/Kalkulator2.java @@ -0,0 +1,85 @@ +package helloapp; + + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.stage.Stage; + +public class Kalkulator2 { + private Stage stage; + + Kalkulator2(Stage stage){ + this.stage = stage; + } + + public void show(){ + Label label1 = new Label("Kalkulator Perkalian"); + label1.setStyle("-fx-font-family: Verdana; -fx-font-size: 20px; -fx-text-fill: white;"); + Label label2= new Label("Hasil"); + label2.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + Label label3= new Label(); + label3.setStyle("-fx-font-family: Verdana; -fx-font-size: 16px; -fx-text-fill: white;"); + + TextField textField1 = new TextField("input 1"); + textField1.setPrefWidth(100); + textField1.setPrefHeight(30); + TextField textField2 = new TextField("input 2"); + + + Button buttonClear = new Button("Clear"); + buttonClear.setOnAction(V ->{ + Kalkulator2 kalkulator2 = new Kalkulator2(stage); + kalkulator2.show(); + }); + buttonClear.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: grey; -fx-text-fill: white;"); + buttonClear.setPrefWidth(100); + buttonClear.setPrefHeight(30); + Button buttonCalculate = new Button("Calculate"); + buttonCalculate.setOnAction(v -> { + int input1 = Integer.parseInt(textField1.getText()); + int input2 = Integer.parseInt(textField2.getText()); + int hasil = input1 * input2; + String hasilText = String.valueOf(hasil); + label3.setText(hasilText); + + }); + buttonCalculate.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: gold; -fx-text-fill: white;"); + buttonCalculate.setPrefWidth(100); + buttonCalculate.setPrefHeight(30); + Button buttonBackHome = new Button("Back to Home"); + buttonBackHome.setOnAction(V ->{ + MenuScene menuScene = new MenuScene(stage); + menuScene.show(); + }); + buttonBackHome.setStyle("-fx-font-family: Tahoma; -fx-font-size: 16px; -fx-background-color: black; -fx-text-fill: white; -fx-border-color: white"); + buttonBackHome.setPrefWidth(200); + buttonBackHome.setPrefHeight(20); + HBox hBox = new HBox(); + hBox.getChildren().add(buttonClear); + hBox.getChildren().add(buttonCalculate); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(label1, 1, 1); + gridPane.add(textField1,1,2); + gridPane.add(textField2, 1,3); + gridPane.add(label2,1,4); + gridPane.add(label3,1,5); + gridPane.add(hBox, 1, 6); + gridPane.add(buttonBackHome,1,7); + gridPane.setAlignment(Pos.CENTER); + + Scene scene = new Scene(gridPane,350, 600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/MenuScene.java b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/MenuScene.java new file mode 100644 index 0000000..972aa0a --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/java/helloapp/MenuScene.java @@ -0,0 +1,81 @@ +package helloapp; + +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.layout.GridPane; +import javafx.stage.Stage; + +public class MenuScene { + private Stage stage; + + MenuScene(Stage stage){ + this.stage = stage; + } + + public void show(){ + Button buttonKalkulator1 = new Button("Kalkulator Pertambahan"); + buttonKalkulator1.setOnAction(V -> { + Kalkulator1 kalkulator1 = new Kalkulator1(stage); + kalkulator1.show(); + }); + buttonKalkulator1.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: black; -fx-background-color: grey;"); + + + Button buttonKalkulator2 = new Button("Kalkulator Perkalian"); + buttonKalkulator2.setOnAction(V -> { + Kalkulator2 kalkulator2 = new Kalkulator2(stage); + kalkulator2.show(); + + }); + buttonKalkulator2.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: black; -fx-background-color: grey;"); + + Button buttonCelcius = new Button("Celcius to Fahrenheit"); + buttonCelcius.setOnAction(V -> { + Celcius celcius = new Celcius(stage); + celcius.show(); + }); + buttonCelcius.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: black; -fx-background-color: grey;"); + + Button buttonFahrenheit = new Button("Fahrenheit to Celcius"); + buttonFahrenheit.setOnAction(V -> { + Fahrenheit fahrenheit = new Fahrenheit(stage); + fahrenheit.show(); + }); + buttonFahrenheit.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: black; -fx-background-color: grey;"); + + Button buttonBack = new Button("Back"); + buttonBack.setOnAction(V -> { + HomeScene homeScene = new HomeScene(stage); + homeScene.show(); + + }); + buttonBack.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: black; -fx-background-color: grey;"); + buttonBack.setAlignment(Pos.CENTER); + + Label label = new Label("PILIH MENU"); + label.setStyle("-fx-font-family: Arial; -fx-font-size: 16px; -fx-text-fill: white;"); + + GridPane gridPane = new GridPane(); + gridPane.setPadding(new Insets(20)); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.add(label,1,1); + gridPane.add(buttonKalkulator1,1,3); + gridPane.add(buttonKalkulator2,1,4); + gridPane.add(buttonCelcius,1,5); + gridPane.add(buttonFahrenheit,1,6); + gridPane.add(buttonBack,1,7); + gridPane.setAlignment(Pos.CENTER); + + + + Scene scene = new Scene(gridPane,350,600); + gridPane.setStyle("-fx-background-color: darkblue;"); + stage.setScene(scene); + stage.show(); + } + +} diff --git a/src/H071221104/Praktikum_9/helloapp/app/src/main/resources/style.css b/src/H071221104/Praktikum_9/helloapp/app/src/main/resources/style.css new file mode 100644 index 0000000..03e4245 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/app/src/main/resources/style.css @@ -0,0 +1,4 @@ +#code1 { + -fx-font-family: "Arial"; + -fx-font-size: 20px; +} \ No newline at end of file diff --git a/src/H071221104/Praktikum_9/helloapp/gradle/wrapper/gradle-wrapper.properties b/src/H071221104/Praktikum_9/helloapp/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..37aef8d --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/src/H071221104/Praktikum_9/helloapp/gradlew b/src/H071221104/Praktikum_9/helloapp/gradlew new file mode 100644 index 0000000..aeb74cb --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/gradlew @@ -0,0 +1,245 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/src/H071221104/Praktikum_9/helloapp/gradlew.bat b/src/H071221104/Praktikum_9/helloapp/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/H071221104/Praktikum_9/helloapp/settings.gradle b/src/H071221104/Praktikum_9/helloapp/settings.gradle new file mode 100644 index 0000000..18dd0f6 --- /dev/null +++ b/src/H071221104/Praktikum_9/helloapp/settings.gradle @@ -0,0 +1,16 @@ +/* + * This file was generated by the Gradle 'init' task. + * + * The settings file is used to specify which projects to include in your build. + * + * Detailed information about configuring a multi-project build in Gradle can be found + * in the user manual at https://docs.gradle.org/8.1.1/userguide/multi_project_builds.html + */ + +plugins { + // Apply the foojay-resolver plugin to allow automatic download of JDKs + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.4.0' +} + +rootProject.name = 'helloapp' +include('app')