Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assignment 1 - Variable, Standard IO Stream, Conditional Branching, and Exception Handling #78

Open
fitrh opened this issue Nov 7, 2021 · 0 comments
Labels
Done Answers have been graded

Comments

@fitrh
Copy link
Member

fitrh commented Nov 7, 2021

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

  1. Program menerima inputan berupa integer
  2. Jika pembeli memasukkan selain integer, program akan interupsi lalu berhenti
  3. Jika tidak ada kembalian, program akan meyampaikan bahwa pembayaran yang
    dilakukan menggunakan uang pas lalu berhenti
  4. Jika uang yang dibayarkan tidak cukup, program akan menyampaikan bahwa uang
    pembeli belum cukup, lalu berhenti
  5. Program menampilkan total kembalian diikuti dengan banyaknya masing-masing
    pecahan yang disediakan
  6. 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
  7. 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)

asciicast

Dengan Ketentuan

  • Tidak ada varaiabel tambahan selain variabel yang telah disediakan
  • Gunakan args[0] sebagai variabel pengecekan Role
  • Variable isValidRole harus digunakan
  • Tidak ada penggunaan string method
  • Index menu dan sub menu bersifat dinamis (sesuai Role) yang merupakan hasil dari
    variabel indexMenu dan indexSubmenu
  • 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

@fitrh fitrh added the Done Answers have been graded label Nov 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Done Answers have been graded
Projects
None yet
Development

No branches or pull requests

1 participant