-
Notifications
You must be signed in to change notification settings - Fork 37
Description
1. Simple Cashier
Ringkasan
SysMart membutuhkan bantuan anda sebagi programmer untuk merancang sebuah
aplikasi kasir CLI (Command Line Interface) untuk memvalidasi dan menghitung
banyaknya kembalian dari pembayaran yang diberikan, tidak hanya itu, SysMart
juga menginginkan program tersebut agar dapat menghitung banyaknya kembalian
untuk setiap pecahan uang yang mereka miliki.
Mereka memiliki pecahan:
- 100.000
- 50.000
- 20.000
- 10.000
- 5.000
- 2.000
- 1.000
- 500
- 200
- 100
SysMart menggunakan satuan lembar untuk uang pecahan 1.000 keatas dan
buah untuk pecahan 500 kebawah.
Jika pelanggan membayarkan sejumlah uang dan kembaliannya ada diluar pecahan
tersebut, SysMart menganggapnya sebagai donasi.
Bantulah SysMart untuk merancang aplikasi tersebut, berikut spesifikasi
lengkap dan referensi programnya.
Spesifikasi
- Program menerima inputan berupa integer
- Jika pembeli memasukkan selain integer, program akan interupsi lalu berhenti
- Jika tidak ada kembalian, program akan meyampaikan bahwa pembayaran yang
dilakukan menggunakan uang pas lalu berhenti - Jika uang yang dibayarkan tidak cukup, program akan menyampaikan bahwa uang
pembeli belum cukup, lalu berhenti - Program menampilkan total kembalian diikuti dengan banyaknya masing-masing
pecahan yang disediakan - Program hanya menampilkan pecahan yang digunakan sebagai kembalian, e.g. Jika
harga barang 135.000, pembeli membayar sebesar 150.000, kembalian sebesar
15.000, maka program hanya menampilkan banyaknya pecahan 10.000 dan 5.000 - Jika masih ada kembalian dibawah 100, maka program akan menampilkan kembalian
tersebut sebagai donasi
Referensi
simplescreenrecorder-2021-10-15_21.08.36.mp4
2. Role Base Access Control
Lengkapilah potongan program barikut
public class RoleB {
public static void main(String[] args) {
int menuIndex = 0;
int subMenuIndex = 0;
boolean isValidRole = false;
if (args.length == 0) {
System.out.println("What role you want to see ?");
System.out.println("For example, try 'Admin'.");
return;
}
if (args.length > 1) {
System.out.println("Too many argument");
return;
}
/*
* Your magic is here
* Role validation
* /
if (/* Magic ? */) {
System.out.println("Invalid Role");
System.out.println("Valid Role : Super Admin, Admin, User");
return;
}
/*
* Another magic
* Main menu
* /
}
}Sehingga menghasilkan output berikut (Klik untuk play)
Dengan Ketentuan
- Tidak ada varaiabel tambahan selain variabel yang telah disediakan
- Gunakan
args[0]sebagai variabel pengecekan Role - Variable
isValidRoleharus digunakan - Tidak ada penggunaan string method
- Index menu dan sub menu bersifat dinamis (sesuai Role) yang merupakan hasil dari
variabelindexMenudanindexSubmenu - Tidak ada duplikasi dalam menampilkan menu masing-masing Role
if (args[0] == "Admin") {
System.out.printf("%d. Admin\n", menuIndex);
System.out.printf("%2d.%d. CRUD Admin\n", menuIndex, subMenuIndex);
System.out.printf("%2d.%d. CRUD User\n\n", menuIndex, subMenuIndex);
System.out.printf("%d. User\n", menuIndex); // Duplikasi, bagian ini hanya boleh terdapat dibagian User
System.out.printf("%2d.%d. View\n", menuIndex, subMenuIndex); // Duplikasi, bagian ini hanya boleh terdapat dibagian User
System.out.printf("%2d.%d. Edit\n", menuIndex, subMenuIndex); // Duplikasi, bagian ini hanya boleh terdapat dibagian User
} else if (args[0] == "User") {
System.out.printf("%d. User\n", menuIndex);
System.out.printf("%2d.%d. View\n", menuIndex, subMenuIndex);
System.out.printf("%2d.%d. Edit\n", menuIndex, subMenuIndex);
}
- Diatas merupakan contoh duplikasi, dimana role Admin menampilkan menu User dalam pengecekan kondisinya
- Setiap Role hanya menampilkan menu untuk Role tersebut dialam blok pengecekannya
- Ketentuan menu masing-masing Role
- Super Admin dapat melihat menu untuk Admin dan User
- Admin dapat melihat menu untuk User tapi tidak dapat melihat menu Super Admin
- User hanya dapat melihat menu User
Untuk lebih jelasnya, silahkan perhatikan bagian output