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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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 :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
=========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) |
Laporan dalam bentuk paper/makalah :
Video Demo Program :
Komentar
Posting Komentar