Nama: Rizky Wahyu Dina Putri NIM: 2409116111
Program Top Up Game adalah program CRUD yang mengelola daftar game beserta item Top Up. Pengguna dapat melihat daftar Game, mencari, menambahkan game baru, mengubah, dan menghapus data. Program juga dibuat menggunakan MVC dengan pemisahan packages agar lebih terstruktur dan sesuai dengan fungsi.

Pada MVC, program terbagi menjadi 3 packages.
- Package model, menyimpan struktur data Game seperti atribut pada game dan constructor.
- Package service, menyimpan logika proses CRUD dan fitur search.
- Package main, sebagai entry poin atau menu interaksi untuk pengguna.


Program Game pada packages model dibuat dengan menggunakan access modifier private untuk atribut/properti id, nama, dan top up, sehingga hanya bisa diakses melalui method getter dan setter. Constructor Game digunakan untuk menginialisasi objek Game dengan id dan nama, serta membuat ArrayList untuk list kosong item top up. Getter dan setter digunakan untuk memberikan akses terbatas terhadap atribut/properti.
Method addTopUp digunakan untuk menambahkan item Top Up ke dalam game, namun apabila item yang diinputkan telah ada pada Arraylist maka akan ditolak (return false).

Pada bagian awal atribut daftarGame menyimpan seluruh data game dalam bentuk list. Atribut next id digunakan untuk memberikan nomor id otomatis (auto increment) saat pengguna menambahkan game baru, jadi tidak dibuat manual. Pada constructor, membuat data default yang disimpan di arraylist agar saat program pertama dijalankan, daftar game tidak kosong danmenampilkan game beserta item top up masing-masing.

Method tambahGame digunakan untuk menambahkan data game baru pada proses CRUD. Method ini mengecek terlbih dahulu apakah nama game yang diinputkan oleh pengguna sudah ada di dalam list atau belum, jika sudah maka gagal menambahkan game karena nama game sudah ada.
Method tambahTopUp digunakan untuk menambahkan item top up baru ke dalam game, termasuk ke game yang baru ditambahkan melalui input pengguna. Mmeiliki proses yang sama seperti tambahGame, jika item top up sudah tersedia maka gagal menambahkan karena item sudah tersedia.

Method updateGame digunakan untuk mengubah nama game yang ada di list, dengan menginput game sesuai id. Apabila id game seuai maka pengguna dapat memasukkan nama game baru.
Method hapusGame digunakan untujk menghapus game berdasarkan id, jika data ditemukan, game akan dihapus dari list beserta item top upnya.
Method cariGame mencari data berdasarkan kata kunci yaitu nama gamenya, pencarian game disetting dengan menggunakan toLowerCase()

Method ini digunakan untuk menampilkan seluruuh data game beserta item top up. Jika list game kosong, maka menampilkan belum ada game tersedia.

Pada bagian awal class main pada package main menggunakan impor gameservice dari package service untuk memanggil logika CRUD. import canner untuk membaca input dari pengguna dan variabel pilihan yang menyimpan input menu yang dipilih pengguna.

Program menampilkan menu utama pada proghram, validasi input menggunakan scanner.hasNextInt() agar input hanya berupa angka saja.





Menu dibuat menggunakan switch case, setiap case mewakili operasi CRUD.
- read, menampilkan daftar game
- search, mencari game berdasrkan kata kunci nama game
- create, menambahkan game baru
- create, menambahkan item top up baru
- update, mengubah nama game
- delete, menghapus nama game berdasarkan id
- exit dan keluar dari program.
Program berjalan menggunakan loop do-while yang artinya akan terus menampilkan menu sampai pengguna memilih untuk keluar dari program.
RUN PROGRAM






Validasi Input
Digunakan agar saat pengguna memasukkan input yang tidak sesuai dengan program, maka akan menampilkan pesan seperti "input tidak diperbolehkan", "input harus angka". Apabila pengguna melakukan input seperti spasi, enter dengan input kosong, simbol yang tidak sesuai dengan program, dan huruf apabila memilih menu.



