Final Project Struktur Data (EAS)

Final Project Struktur Data

Dibuat oleh : Daniel Hermawan     NRP 5025201087

Sistem Belanja Online Menggunakan Hash Map

          Dewasa ini, semua hal serba instan dan serba cepat, sudah tidak ada lagi waktu bagi hal-hal yang ribet serta memakan waktu yang tidak sedikit. Belanja merupakan salah satu hal yang menjadi kebutuhan dalam keseharian serta juga merupakan hal yang tidak lepas dari semua orang karena apa yang dibutuhkan dapat didapatkan dengan belanja atau membeli hal tersebut. Namun sayangnya, saat kita berbelanja sesuatu, terkadang kita perlu untuk berjalan kesana dan kesini untuk mencari barang yang kita inginkan. Tak lupa juga kita harus mengantri dulu sebelum membayar barang belanjaan kita.



          Oleh karena itu, saya membuat program yang dapat memberi kita akses untuk berbelanja online. Program saya menggunakan implementasi dari struktur data yang bernama hash map. Tabel hash (hash map) adalah struktur data yang mengimplementasikan tipe data abstrak array asosiatif, struktur yang dapat memetakan kunci ke nilai. Tabel hash menggunakan fungsi hash untuk menghitung indeks, juga disebut kode hash, ke dalam array ember atau slot, dari mana nilai yang diinginkan dapat ditemukan. Selama pencarian, kunci di-hash dan hash yang dihasilkan menunjukkan di mana nilai yang sesuai disimpan.




Implementasi Program Belanja Online : 

//PROGRAM MEMBUAT SISTEM BELANJA ONLINE (User dan Admin)
import java.util.*;
public class finalproject {
public static void main(String[] args)
{
//Membuat Hashmap
HashMap<String, Integer> stok = new HashMap<>();
HashMap<String, Integer> harga = new HashMap<>();
HashMap<String, Integer> cart = new HashMap<>();
//Pilih Admin / User
int role,service,totalbuy=0,price,quantity,checkout=0,buy=0;
int mark=0;
String barang;
while (true){
Scanner scan = new Scanner (System.in);
System.out.println("\nMasuk sebagai : ");
System.out.println("1. User");
System.out.println("2. Admin");
System.out.println("3. Keluar");
System.out.print("\nMasukkan Pilihan : ");
role = scan.nextInt();
System.out.print("\n");
if (role == 1){ //User Page
while (true){
System.out.println("\n============Halaman User============");
System.out.println("Pilih Layanan Yang Diinginkan : ");
System.out.println("1. Cek Stok Barang");
System.out.println("2. Beli Barang");
System.out.println("3. Total Barang Yang Dibeli");
System.out.println("4. Lihat Keranjang");
System.out.println("5. Checkout Barang");
System.out.println("6. Keluar");
System.out.print("\nMasukkan Pilihan : ");
service = scan.nextInt();
System.out.print("\n");
switch (service){
case 1 : //Cek Stok (SEMI DONE)
if (stok.isEmpty()){
System.out.println("Tidak ada stok yang tersedia!\n");
}
else {
System.out.println("Stok barang yang tersedia : ");
System.out.println(stok);
}
break;
case 2 : //Beli Barang (DONE)
scan.nextLine();
System.out.print("Barang yang mau dibeli : ");
barang = scan.nextLine();
if (harga.containsKey(barang)){
System.out.println(barang + " harganya " + harga.get(barang) + " rupiah, stoknya sebanyak " + stok.get(barang) + " buah.");
System.out.print("Mau beli berapa banyak? ");
quantity = scan.nextInt();
if (quantity > stok.get(barang)){ //Beli lebih dari stok yang tersedia
System.out.println("Stok tidak mencukupi permintaan!");
}
else if (quantity <= stok.get(barang)){
buy=1;
int total_purchase = harga.get(barang)*quantity;
totalbuy += total_purchase;
if (quantity == stok.get(barang)){ //Beli semua stok
if (cart.containsKey(barang)){
int update_qty = cart.get(barang) + quantity;
System.out.println("Total sebelum pembelian : " + cart.get(barang) + " buah.");
cart.replace(barang, update_qty);
System.out.println("Total setelah pembelian : " + cart.get(barang) + " buah.");
System.out.println("Total Harga : " + total_purchase + " rupiah.");
}
else {
cart.put(barang,quantity);
System.out.println("Total sebelum pembelian : 0 buah.");
System.out.println("Total setelah pembelian : " + cart.get(barang) + " buah.");
System.out.println("Total Harga : " + total_purchase + " rupiah.");
}
stok.remove(barang);
harga.remove(barang);
}
else {
if (cart.containsKey(barang)){
int update_qty = cart.get(barang) + quantity;
System.out.println("Total sebelum pembelian : " + cart.get(barang) + " buah.");
cart.replace(barang, update_qty);
System.out.println("Total setelah pembelian : " + cart.get(barang) + " buah.");
System.out.println("Total Harga : " + total_purchase + " rupiah.");
}
else {
cart.put(barang,quantity);
System.out.println("\nTotal sebelum pembelian : 0 buah.");
System.out.println("Total setelah pembelian : " + cart.get(barang) + " buah.");
System.out.println("Total Harga : " + total_purchase + " rupiah.");
}
int update_stok = stok.get(barang) - quantity;
System.out.println("\nStok barang sebelum pembelian : " + stok.get(barang) + " buah.");
stok.replace(barang,update_stok);
System.out.println("Stok barang sesudah pembelian : " + stok.get(barang) + " buah.\n");
}
}
}
else {
System.out.println("Barang tidak ditemukan!");
}
break;
case 3 : //Total Barang Yang Dibeli (DONE)
System.out.println("Total harga barang yang dibeli adalah : " + totalbuy + " rupiah\n");
break;
case 4 : //Lihat Keranjang
if (cart.isEmpty()){
System.out.println("Kerajang Kosong!");
}
else {
System.out.println("=====Isi Kerajang Belanja=====");
System.out.println(cart);
System.out.println("Total belanja : " + totalbuy + " rupiah.");
}
break;
case 5 : //Checkout Barang (DONE)
if (cart.isEmpty()){
System.out.println("Keranjang anda kosong!");
}
else {
checkout=1;
System.out.println("Total jenis barang yang dibeli " + cart.size() + " jenis, seharga " + totalbuy + " rupiah berhasil dibeli!\n");
System.out.println("TERIMA KASIH TELAH BERBELANJA!");
cart.clear();
System.out.println("*keranjang dikosongkan\n");
}
break;
case 6 : //Keluar (DONE)
if (checkout==0 && buy==1){
System.out.print("Barang anda belum di checkout, yakin untuk keluar? (YES/NO) ");
scan.nextLine();
String out = scan.nextLine();
switch (out){
case "YES" :
mark=1;
break;
case "NO" :
mark=0;
break;
default :
System.out.println("Perintah tidak valid!");
}
}
else if (checkout==0 && buy==0){
mark=1;
}
else if (checkout==1 && buy==1){
mark=1;
}
break;
default :
System.out.println("Perintah tidak valid!\n");
break;
}
if (mark == 1){
mark=0;
break;
}
}
}
else if (role == 2){ //Admin Page
while (true){
System.out.println("\n============Halaman Admin============");
System.out.println("Pilih Layanan Yang Diinginkan : ");
System.out.println("1. Input Barang dan Harga"); //nama barang,jumlah,harga
System.out.println("2. Update Harga Barang");
System.out.println("3. Tampilkan Stok Barang");
System.out.println("4. Update Stok Barang");
System.out.println("5. Tampilkan Harga Barang");
System.out.println("6. Keluar");
System.out.print("\nMasukkan Pilihan : ");
service = scan.nextInt();
System.out.print("\n");
switch (service){
case 1 : //Input Barang + Harga (DONE)
scan.nextLine();
System.out.print("Nama barang : ");
barang = scan.nextLine();
System.out.print("Jumlah : ");
quantity = scan.nextInt();
if (stok.containsKey(barang)){ //Jika barang ditemukan
System.out.println("Sebelum ditambahkan : " + stok.get(barang));
int temp = stok.get(barang) + quantity;
stok.replace(barang, temp);
System.out.println("Sebelum ditambahkan : " + stok.get(barang));
}
else { //Jika barang tidak ditemukan, masukkan baru
System.out.print("Harga : ");
price = scan.nextInt();
System.out.println("Barang belum pernah diinput, menginput data baru...");
stok.put(barang,quantity);
harga.put(barang,price);
System.out.println("-----Done!-----");
}
break;
case 2 : //Update Harga Barang (DONE)
scan.nextLine();
System.out.print("Masukkan barang yang akan diupdate : ");
barang = scan.nextLine();
if (harga.containsKey(barang)){
price = scan.nextInt();
System.out.println("Harga barang sebelum : " + harga.get(barang) + " rupiah");
harga.replace(barang,price);
System.out.println("Harga barang sesudah : " + harga.get(barang) + " rupiah");
}
else {
System.out.println("Barang tidak ditemukan!");
}
break;
case 3 : //Tampilkan Stok Barang (SEMI DONE)
if (!stok.isEmpty()){
System.out.println("Stok barang : \n" + stok);
}
else {
System.out.println("Tidak ada stok yang tersedia!\n");
}
break;
case 4 : //Update Stok Barang
scan.nextLine();
System.out.print("Masukkan nama barang : ");
barang = scan.nextLine();
if (stok.containsKey(barang)){
System.out.print("Update jumlah stok : ");
quantity = scan.nextInt();
if (quantity <= 0){
stok.remove(barang);
harga.remove(barang);
System.out.println("Stok barang telah dikosongkan!");
}
else {
System.out.println("Stok barang sebelum : " + stok.get(barang));
stok.replace(barang, quantity);
System.out.println("Stok barang sesudah : " + stok.get(barang));
}
}
else {
System.out.println("Barang tidak ditemukan!");
}
break;
case 5 : //Tampilkan Harga Barang
if (harga.isEmpty()){
System.out.println("Tidak ada barang yang tersedia!");
}
else {
System.out.print("Harga barang yang tersedia : \n");
System.out.println(harga);
}
break;
case 6 : //Keluar
mark=1;
break;
default :
System.out.println("Perintah tidak valid!");
break;
}
if (mark==1){
mark=0;
break;
}
}
}
else if (role == 3){
System.out.println("\n----------Berhasil keluar, terima kasih!----------\n");
System.out.println("[Program Sistem Belanja Online]");
System.out.println("Created by Daniel Hermawan (5025201087)\n");
break;
}
}
}
}

Output Program :


=========SELAMAT DATANG, SELAMAT BERBELANJA=========
Masuk sebagai :
1. User
2. Admin
3. Keluar
Masukkan Pilihan : 2
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 1
Nama barang : beras
Jumlah : 10
Harga : 12000
Barang belum pernah diinput, menginput data baru...
-----Done!-----
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 1
Nama barang : jagung
Jumlah : 20
Harga : 2000
Barang belum pernah diinput, menginput data baru...
-----Done!-----
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 1
Nama barang : kacang
Jumlah : 10
Harga : 1000
Barang belum pernah diinput, menginput data baru...
-----Done!-----
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 2
Masukkan barang yang akan diupdate : beras
Ubah harga menjadi : 10000
Harga barang sebelum : 12000 rupiah
Harga barang sesudah : 10000 rupiah
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 4
Masukkan nama barang : beras
Update jumlah stok : 15
Stok barang sebelum : 10
Stok barang sesudah : 15
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 3
Stok barang :
{beras=15, kacang=10, jagung=20}
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 5
Harga barang yang tersedia :
{beras=10000, kacang=1000, jagung=2000}
============Halaman Admin============
Pilih Layanan Yang Diinginkan :
1. Input Barang dan Harga
2. Update Harga Barang
3. Tampilkan Stok Barang
4. Update Stok Barang
5. Tampilkan Harga Barang
6. Keluar
Masukkan Pilihan : 6
Masuk sebagai :
1. User
2. Admin
3. Keluar
Masukkan Pilihan : 1
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 1
Stok barang yang tersedia :
{beras=15, kacang=10, jagung=20}
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 2
Barang yang mau dibeli : beras
beras harganya 10000 rupiah, stoknya sebanyak 15 buah.
Mau beli berapa banyak? 10
Total sebelum pembelian : 0 buah.
Total setelah pembelian : 10 buah.
Total Harga : 100000 rupiah.
Stok barang sebelum pembelian : 15 buah.
Stok barang sesudah pembelian : 5 buah.
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 1
Stok barang yang tersedia :
{beras=5, kacang=10, jagung=20}
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 2
Barang yang mau dibeli : jagung
jagung harganya 2000 rupiah, stoknya sebanyak 20 buah.
Mau beli berapa banyak? 10
Total sebelum pembelian : 0 buah.
Total setelah pembelian : 10 buah.
Total Harga : 20000 rupiah.
Stok barang sebelum pembelian : 20 buah.
Stok barang sesudah pembelian : 10 buah.
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 3
Total harga barang yang dibeli adalah : 120000 rupiah
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 4
=====Isi Kerajang Belanja=====
{beras=10, jagung=10}
Total belanja : 120000 rupiah.
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 5
Total jenis barang yang dibeli 2 jenis, seharga 120000 rupiah berhasil dibeli!
TERIMA KASIH TELAH BERBELANJA!
*keranjang dikosongkan
============Halaman User============
Pilih Layanan Yang Diinginkan :
1. Cek Stok Barang
2. Beli Barang
3. Total Barang Yang Dibeli
4. Lihat Keranjang
5. Checkout Barang
6. Keluar
Masukkan Pilihan : 6
Masuk sebagai :
1. User
2. Admin
3. Keluar
Masukkan Pilihan : 3
----------Berhasil keluar, terima kasih!----------
[Program Sistem Belanja Online]
Created by Daniel Hermawan (5025201087)
view raw Output Program hosted with ❤ by GitHub

Laporan dalam bentuk paper/makalah :


Video Demo Program :



Komentar

Postingan populer dari blog ini

ETS PPB F : Seputar Android dan Redesign Aplikasi MyITS Mahasiswa