diff --git a/H071191007/Item.java b/H071191007/Item.java new file mode 100644 index 0000000..4788225 --- /dev/null +++ b/H071191007/Item.java @@ -0,0 +1,49 @@ +class Item { + private int price; + private int quantity; + private String detail; + private String name; + +public Item(int price, int quantity, String detail, String name) { + this.price = price; + this.quantity = quantity; + this.detail = detail; + this.name = name; +} + public void descItem() { + System.out.println(getPrice()); + System.out.println(getQuantity()); + System.out.println(getDetail()); + System.out.println(getName()); + } + + public void setHarga(int price) { + this.price = price; + } + + public void setQuantity(int quantity) { + this.quantity = quantity; + } + + public void setDetail(String detail) { + this.detail = detail; + } + public void setName(String name) { + this.name = name; + } + + public int getPrice() { + return this.price; + } + + public int getQuantity() { + return this.quantity; + } + + public String getDetail() { + return this.detail; + } + public String getName() { + return this.name; + } +} \ No newline at end of file diff --git a/H071191007/Main.java b/H071191007/Main.java new file mode 100644 index 0000000..9a4160d --- /dev/null +++ b/H071191007/Main.java @@ -0,0 +1,174 @@ +import java.util.Scanner; +import java.util.Map; +import java.util.HashMap; + +class Main { + public static void main(String[] args) throws Exception { + + Scanner sc = new Scanner(System.in); + System.out.println(" ITEM STORE "); + System.out.println(" "); + + System.out.println("Masukkan Player Name (no space)"); + String playerName = sc.next(); + System.out.println("Masukkan Player Money"); + double PlayerMoney = sc.nextDouble(); + User player = new User(playerName, PlayerMoney); + player.setProduct(player.readProductList( + "D:\\VisualStudioCode\\Java\\Semester_2\\OOP_Class\\Lecture\\MidTest\\PlayerItem.txt")); + + System.out.println("Masukkan StoreOwner Name (no space)"); + String storeOwnerName = sc.next(); + System.out.println("Masukkan StoreOwner Money"); + double storeOwnerMoney = sc.nextDouble(); + User storeOwner = new User(); + System.out.println("adding store owner item..."); + storeOwner.setProduct(storeOwner.readProductList( + "D:\\VisualStudioCode\\Java\\Semester_2\\OOP_Class\\Lecture\\MidTest\\StoreOwnerItem.txt")); + System.out.println("generating store..."); + Store store = new Store(myStore); + System.out.println("adding store item..."); + store.setProduct(store); + ("D:\\VisualStudioCode\\Java\\Semester_2\\OOP_Class\\Lecture\\MidTest\\StoreItem.txt")); + System.out.println("all generate"); + + Integer count = 1; + + Map playerItem = new HashMap<>(); + for (Item pItem : player.getItemList()) { + playerItem.put(count, pItem); + count++; + } + Map storeOwnerItem = new HashMap<>(); + for (Item soItem : storeOwner.getItemList()) { + storeOwnerItem.put(count, soItem); + count++; + } + Map storeItem = new HashMap<>(); + for (Item sItem : store.getItems()) { + storeItem.put(count, sItem); + count++; + } + + while (true) { + System.out.println("which role you want to use :"); + System.out.println("0. stop\n1.player\n2. store owner\n"); + switch (sc.nextInt()) { + case 0: + System.out.println("Exit.."); + return; + case 1: + player.showStatus(); + System.out.println("which action you want to use :"); + System.out.println( + "1. buy from player\n2. buy from store\n3. sell from player\n4. sell from store\n"); + switch (sc.nextInt()) { + case 1: + System.out.println("Item list"); + storeOwner.showItem(); + System.out.println("which item you want to buy"); + int itemChoose1 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount1 = sc.nextInt(); + player.buyFromUser(storeOwnerItem.get(itemChoose1),amount1 , storeOwner); + + break; + + case 2: + System.out.println("Item list"); + store.myStore(); + System.out.println("which item you want to buy"); + int itemChoose2 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount2 = sc.nextInt(); + player.buyFromUser(storeItem.get(itemChoose2),amount2 , storeOwner); + + break; + + case 3: + System.out.println("Item list"); + player.showItem(); + System.out.println("which item you want to sell"); + int itemChoose3 = sc.nextInt(); + System.out.println("how much you want to sell"); + int amount3 = sc.nextInt(); + player.sellToOwner(playerItem.get(itemChoose3),amount3, storeOwner); + + break; + + case 4: + System.out.println("Item list"); + player.showItem(); + System.out.println("which item you want to buy"); + int itemChoose4 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount4 = sc.nextInt(); + player.sellToStore(playerItem.get(itemChoose4),amount4, store); + + break; + + default: + break; + } + break; + case 2: + player.showStatus(); + System.out.println("which action you want to use :"); + System.out.println( + "1. buy from player\n2. buy from store\n3. sell from player\n4. sell from store\n"); + switch (sc.nextInt()) { + case 1: + System.out.println("Item list"); + storeOwner.showItem(); + System.out.println("which item you want to buy"); + int itemChoose1 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount1 = sc.nextInt(); + storeOwner.buyFromUser(playerItem.get(itemChoose1),amount1 , player); + + break; + + case 2: + System.out.println("Item list"); + store.myStore(); + System.out.println("which item you want to buy"); + int itemChoose2 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount2 = sc.nextInt(); + storeOwner.buyFromStore(storeItem.get(itemChoose2),amount2 , store); + + break; + + case 3: + System.out.println("Item list"); + player.showItem(); + System.out.println("which item you want to sell"); + int itemChoose3 = sc.nextInt(); + System.out.println("how much you want to sell"); + int amount3 = sc.nextInt(); + storeOwner.sellToOwner(storeOwnerItem.get(itemChoose3),amount3, player); + + break; + + case 4: + System.out.println("Item list"); + player.showItem(); + System.out.println("which item you want to buy"); + int itemChoose4 = sc.nextInt(); + System.out.println("how much you want to buy"); + int amount4 = sc.nextInt(); + storeOwner.sellToStore(storeItem.get(itemChoose4),amount4, store); + + break; + + default: + break; + } + break; + default: + break; + } + } + + } +} \ No newline at end of file diff --git a/H071191007/Player.txt b/H071191007/Player.txt new file mode 100644 index 0000000..4c1bb45 --- /dev/null +++ b/H071191007/Player.txt @@ -0,0 +1 @@ +2;150;pen diff --git a/H071191007/Store.java b/H071191007/Store.java new file mode 100644 index 0000000..3843b55 --- /dev/null +++ b/H071191007/Store.java @@ -0,0 +1,66 @@ +import java.util.ArrayList; +import java.util.List; + +class Store { + private User owner; + private List items; + private String name; + private int sell; + private int star; + + public Store(User owner, List items, String name, int sell) { + this.owner = owner; + items = new ArrayList<>(); + this.name = name; + this.sell = sell; + } + public User getOwner() { + return owner; + } + public String getName() { + return name; + } + public List getItems() { + return items; + } + public int getSell() { + return sell; + } + public int getStar() { + return star; + } + public void setOwner(User owner) { + this.owner = owner; + } + public void setName(String name) { + this.name = name; + } + public void setItems(List items) { + this.items = items; + } + public void setSell(int sell) { + this.sell = sell; + } + public void theStar() { + if (sell <= 1) { + star = 1; + } else if (sell <= 2) { + star = 2; + } else if (sell <= 3) { + star = 3; + } + + public void myStore(){ + ArrayList items = owner.getItemList(); + System.out.println("-----------------------------"); + System.out.println("\tMY STORE "); + System.out.println("-----------------------------"); + System.out.println("Name : "+name); + System.out.println("Star : "+star); + System.out.println("-----------------------------"); + for(int j=0;j itemList; + private String name; + + public User(int money, ArrayList itemList, String name) { + this.money = money; + this.name = name; + this.itemList = itemList; + } + + public void setMoney(int money) { + this.money = money; + } + + public void setItemList(ArrayList itemList) { + this.itemList = itemList; + } + + public void setName(String name) { + this.name = name; + } + + public int getMoney() { + return money; + } + + public ArrayList getItemList() { + return itemList; + } + + public String getName() { + return name; + } + + public Item getItem(int j) { + return itemList.get(j); + } + + public void checkItem() { + for (int j = 0; j < itemList.size(); j++) { + if (itemList.get(j).getQuantity() < 1) { + itemList.remove(j); + } + } + } + + public void showItem() { + checkItem(); + int count = 1; + for (Item item : itemList) { + System.out.println(count + ". " + " (" + item.getQuantity() + ") \t" + item.getPrice() + " $" + "\t" + + item.getDetail()); + count++; + } + System.out.println(); + } + + public void setItem(int price, int quantity, String detail, String name) { + checkItem(); + boolean cek = false; + for (int j=0;j= sellItems.getPrice() * stock) { + money += sellItems.getPrice() *stock; + costumer.setMoney(costumer.getMoney() - sellItems.getPrice() *stock); + costumer.setItem(sellItems, stock); + } else { + System.out.println(costumer.getName() + " money is not enough"); + } + public void sellToStore(Item sellItems, int stock, Store costumer){ + if (costumer.getOwner().getMoney() >= sellItems.getPrice() * stock) { + money += sellItems.getPrice() *stock; + costumer.getOwner().setMoney(costumer.getOwner().getMoney() - sellItems.getPrice() *stock); + costumer.setItem(sellItems, stock); + + } else { + System.out.println(costumer.getOwner().getName() + " money is not enough"); + } + } + public void buyFromStore(Item items, int quantity, Store owner) { + if (money >= items.getPrice() * quantity && items.getQuantity() >= quantity) { + money -= items.getPrice() * quantity; + owner.getOwner().setMoney(owner.getOwner().getMoney() + items.getPrice() * quantity); + } else { + System.out.println(items.getQuantity() >= quantity ? "" : "stock doesnt enough"); + System.out.println(money >= items.getPrice() * quantity ? "" : "money doesnt enough"); + } + } + } + diff --git a/README.md b/README.md index f7a7dfe..c23bd1a 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,25 @@ # Object Oriented Programming Mid Test Project -## Alur Pengumpulan *Project* ke Repositori Ini - -1. **Fork** Repositori ini. -2. Pada hasil *fork* anda, Buat **Branch** dengan nama **NIM** anda. -3. Pada *branch* **NIM** anda, buat direktori dengan nama **NIM** anda. -4. Project anda disimpan didalam direktori **NIM** anda. - > - Berkas project berupa `.java` dimana *satu class satu file*. - > - Struktur Project dapat menggunakan Struktur Maven, Gradle, Eclipse dan sejenisnya -5. **Push** berkas project anda ke repositori hasil *fork* pada *branch* **NIM** anda. -6. Buat **Pull Request** untuk **Merge** *branch* **NIM** dengan *branch* **master** pada repositori ini. - -## Aturan Project Mid - -1. Setiap orang memilih salah satu dari tema *project* yang telah disediakan. -2. *Project* yang dibuat harus memiliki semua konsep dari materi yang telah dipelajari (*Class & Object - Polymorphism*). -3. Deskripsi dari tema *project* menjelaskan mengenai gambaran dan *minimum requirement*, yang berarti project yang anda buat minimal memenuhi *requirement* tersebut. -4. Fitur *project* anda boleh dimodifikasi dan ditambahkan, selama syarat no. 3 terpenuhi. -5. Jika *project* anda membutuhkan penyimpanan data, gunakan package *java.nio* untuk baca-tulis file. -6. Didalam direktori **NIM** anda, buat file **README.md** yang menjelaskan mengenai *project* anda termasuk : - Spesifikasi *Project* + Program sederhana jual beli item + Terdapat item yang ingin dibeli + Setiap item memiliki harga, kuantitas, dan detail + Setiap User memiliki uang + - Alur Kerja - - Contoh *input-output*, jika ada - - Bagian dari project anda yang menerapkan konsep *object oriented* - - Jika ada konsep *object oriented* yang tidak anda gunakan, jelaskan mengapa - - Hal-hal yang ingin di*improve* kedepannya mengenai project yang anda buat - - dll -7. Lakukan *commit* disetiap perubahan yang anda lakukan selama membuat *project*, hal ini akan menjadi *log* aktifitas dan bukti bahwa project tersebut adalah orisinil dari anda, sertakan *commit message* yang jelas dan deskriptif, *commit message* dapat menggunakan bahasa indonesia ataupun inggris, mengenai tata cara *commit* yang baik, sialahkan baca artikel berikut : [How to Write a Git Commit Message](https://chris.beams.io/posts/git-commit/). -8. *Project* yang dibuat harus memiliki *Main Class* yang terdapat *main method* untuk simulasi *project* anda. - -9. Jika anda memiliki tema sendiri diluar dari tema yang disediakan, silahkan didiskusikan terlebih dahulu di grup. - -## Tema *Project* - -### Pet Clinic + Menjalankan program dengan run file Main class + Setelah berhasil dijalankan maka akan muncul tampilan Item Store pada program + Setelah itu, muncul perintah untuk memasukkan player name dan player money. + Selanjutnya masukkan store owner dan player owner + dan tambahkan store owner + Pada proses tersebut muncul lagi perintah, apakah ingin stop, player, dan store owner. + kemudian Exit + selanjutnya muncul item list, yang ingin kamu beli dan berapa banyak item yang ingin kamu beli. -- Sistem Penitipan dan Jual Beli Hewan Peliharaan -- Setiap *Pet* yang dititipkan, memiliki *Owner* -- Setiap *Pet* hanya memiliki 1 *Owner*, dan *Owner* dapat memiliki lebih dari 1 *Pet* -- Setiap *Pet* memiliki status, titipan atau dijual -- Setiap *Owner*, memiliki data pribadi, seperti nama, alamat, no. telepon, dll -- Terdapat aktifitas untuk menitipkan, membeli, atau menjual *Pet* -- Untuk aktifitas menitipkan, terdapat jadwal penitipan dan pengembalian -- Terdapat aktifitas melihat daftar *Pet* Keseluruhan, yang dititipkan, dan yang dijual -- Terdapat aktifitas untuk melihat detail dari sebuah *Pet*, termasuk spesifikasi dari *Pet* tersebut, struktur spesifikasi dari *Pet* bergantung pada jenisnya (Ayam, Kucing, Anjing, dll) -- Untuk data pribadi dari *Owner*, hanya dapat dilihat oleh *Owner* itu sendiri, Pemilik *Pet Clinic* atau pegawai dari *Pet Clinic* - -### TO DO List - -- Sistem untuk Mencatat Jadwal Kegiatan yang akan dilakukan -- Daftar kegiatan dimiliki oleh satu *User* -- Setiap kegiatan memiliki deskripsi -- Setiap kegiatan memiliki jadwal mulai dan jadwal selesai -- Setiap Kegiatan memiliki status selesai, sedang dikerjakan, dan belum dikerjakan -- Setiap Kegiatan memiliki prioritas -- *User* hanya dapat melihat daftar kegiatan yang dibuatnya -- *User* dapat menampilkan daftar kegitan berdasarkan jadwal, prioritas, atau status -- *User* dapat menghapus dan menambah kegiatan - -### Bank - -- Sistem Bank Sederhana -- Terdapat Bank -- Terdapat Nasabah, setiap nasabah dapat memiliki lebih dari 1 akun, namun hanya terdapat 1 akun dalam 1 bank -- Setiap Nasabah memiliki Rekening, jika nasabah memiliki akun dibeberapa bank, maka masing-masing akun memiliki detail rekening yang berbeda-beda -- Nasabah dapat melakukan aktifitas menabung, transfer dan menarik uang -- Aktifitas menabung dan menarik uang hanya dapat dilakukan jika nasabah menggunakan akun yang sesuai dengan bank yang dikunjungi -- Untuk aktifitas transfer, terdapat nasabah lain yang ditransferkan -- Setiap nasabah dapat melihat log aktifitas mereka, log aktifitas dikategorikan berdasarkan aktifitas menabung, menarik, mentransfer dan ditarnsferkan -- Setiap aktifitas diatas hanya dapat dilihat oleh nasabah yang bersangkutan setelah melakukan proses autentikasi - -### Library - -- Sistem Peminjaman Buku Perpustakaan -- Terdapat *User* -- Terdapat daftar *User* yang berkunjung -- *User* dapat mengambil buku untuk dibaca -- *User* yang ingin meminjam buku, harus menjadi *Member* perpustakaan -- Setiap buku memiliki detail buku yang memuat jenis buku, penulis, penerbit, jumlah halaman, dll -- Aktifitas peminjaman buku memiliki jadwal peminjaman dan jadwal pengemblian -- Jika *User* mengembalikan buku setelah jadwal pengembalian, maka akan dikenai denda yang dihitung perhari -- Terdapat log yang berisi daftar proses peminjaman -- *User* dapat melihat riwayat buku yang dibaca dan buku yang dipinjaman -- Riwayat yang dapat dilihat oleh user, hanya riwayat milikinya - + - Hal-hal yang ingin di*improve* kedepannya mengenai project yang anda buat + Ingin lebih mempersingkat kode kode, dan ingin memahami javaFX + + ### Item Store - Sistem Jual Beli Item @@ -98,28 +34,4 @@ - Uang dari *User* akan bertambah jika menjual *Item* - Proses Jual Beli *Item* dapat dilakukan antar *Player-Player*, *Player-Store*, atau *Store-Store* -### Burger Store - -- Sistem Penjualan *Hamburger* -- Terdapat Pesanan, setiap Pesanan dapat memilki lebih dari 1 item -- Terdapat beberapa jenis *Humburger*, setiap jenis memiliki harga *default* -- Terdapat *Addition* sperti *Drink*, *Ketchup*, *Potato*, *Tomato*, dll -- Setiap *Addition* memiliki harga -- Setiap Pesanan *Hamburger*, dapat memiliki lebih dari 1 *Addition* -- *Addition* dapat ditambahkan sekaligus atau satu persatu -- Harga akhir pesanan bergantung pada harga *Hamburger* yang dipesan beserta *Addition*nya - -### Academic System -- Sistem Informasi Akademik Sederhana -- Terdapat Mahasiswa, Dosen, dan Matakuliah -- Setiap Mahasiswa dapat mengambil beberapa Matakuliah -- Setiap Matakuliah memiliki SKS dan Dosen Pengajar -- Jumlah SKS Matakuliah yang dapat diambil oleh Mahasiswa tidak boleh melebihi batas maksismum SKS Mahasiswa tersebut -- Setiap Mahasiswa memiliki 1 Dosen Pembimbing -- Dosen Pembimbing dapat memilki lebih dari 1 Mahasiswa bimbingan -- Dosen Pembimbing dapat melihat daftar Mahasiswa bimbingannya beserta detail dari Mahasiswa tersebut, termasuk mengenai Matakuliah yang diambil -- Setiap Mahasiswa dapat melihat detail dari daftar Matakuliah yang diambil -- 1 Matakuliah hanya dapat diambil 1 kali -- Terdapat aktifitas untuk melihat nilai IPS -- Setiap Mahasiswa hanya dapat melihat data miliknya