#include <iostream>
#include <string.h>
using namespace std;
// Ananda Rakhma Aulia
// 3420220024
struct Menu{
string kode;
string jenis;
int harga;
};
struct Transaksi {
string kode;
string jenis;
int harga;
int jumlah;
int total;
};
Menu menu[] = {
{"D", "Dada", 13000},
{"P", "Paha", 8000},
{"S", "Sayap", 11000},
};
Transaksi transaksi[100];
int totalTransaksi = 0;
const int menuSize = sizeof(menu) / sizeof(menu[0]);
void garis(int panjang) {
int i;
for(i = 0; i <= panjang; i++) {
printf("=");
}
cout << endl;
}
void author() {
cout << "Nama : Ananda Rakhma Aulia" << endl;
cout << "NIM : 3420220024" << endl;
cout << "Email : anandara7891@gmail.com" << endl;
}
void judul() {
garis(51);
cout << "AMANAH FRIED CHICKEN - JATIRAHAYU\n";
}
void daftarMenu() {
garis(51);
cout << "| Kode | Jenis | Harga |\n";
garis(51);
for (int i = 0; i < menuSize; i++) {
cout << "| " << menu[i].kode << "\t| " << menu[i].jenis
<< "\t| " << menu[i].harga << "\t|\n";
}
garis(51);
}
void ketentuan() {
printf("KETENTUAN SOAL\n");
printf("Harus Terdapat Function Return Value Dengan Parameter\n");
printf("Harus Terdapat Function Return Value Tanpa Parameter\n");
printf("Harus Terdapat Function NOT Return Value Dengan Parameter\n");
printf("Harus Terdapat Function NOT Return Value Tanpa Parameter\n");
printf("Harus Terdapat Function Yang Memanggil Function Lain\n");
printf("Harus Terdapat Variabel Bertipe Array\n");
printf("Harus Terdapat Struktur IF\n");
printf("Harus Terdapat Struktur Switch Case\n");
printf("Harus Menggunakan Looping\n");
garis(51);
}
void cetakTransaksi() {
garis(51);
printf("| %s | %s | %-10s | %-6s | %s | %-s |\n",
"No", "Kode", "Jenis", "Harga", "Jumlah", "Total");
garis(51);
int totalBayar = 0;
for (int i = 0; i < totalTransaksi; i++) {
printf("| %-2d | %-4s | %-10s | %-6d | %-6d | %-5d |\n", i + 1,
transaksi[i].kode.c_str(), transaksi[i].jenis.c_str(),
transaksi[i].harga, transaksi[i].jumlah, transaksi[i].total);
totalBayar += transaksi[i].total;
}
int pajak = totalBayar * 0.1;
int grandTotal = totalBayar + pajak;
garis(51);
printf("Total Bayar : %d \n", totalBayar);
printf("Pajak : %d \n", pajak);
printf("Grand Total : %d \n", grandTotal);
garis(51);
}
int cariHarga(string kode) {
for (int i = 0; i < menuSize; i++) {
if (menu[i].kode == kode) {
return menu[i].harga;
}
}
return 0;
}
string cariJenis(string kode) {
switch (kode[0]) {
case 'D':
return "Dada";
case 'P':
return "Paha";
case 'S':
return "Sayap";
default:
return "Kode Salah";
}
}
void inputKodeBarang(int jumlahBeli, int i = 0) {
if (i >= jumlahBeli) return;
string kodeBarang, kodeBarangAsli;
int jumlahBarang;
cout << "\nData ke-" << (i + 1);
cout << "\nMasukan kode [D][P][S]: <input>";
cin >> kodeBarang;
kodeBarangAsli = kodeBarang;
kodeBarang[0] = toupper(kodeBarang[0]);
cout << "\nJumlah beli: <input>\n";
cin >> jumlahBarang;
transaksi[i].kode = kodeBarangAsli;
transaksi[i].jenis = cariJenis(kodeBarang);
transaksi[i].harga = cariHarga(kodeBarang);
transaksi[i].jumlah = jumlahBarang;
transaksi[i].total = transaksi[i].harga * jumlahBarang;
totalTransaksi++;
inputKodeBarang(jumlahBeli, i + 1);
}
int main() {
judul();
daftarMenu();
ketentuan();
string namaPembeli;
int jumlahBeli;
cout << "Masukan nama pembeli: <input>" << endl;
cin >> namaPembeli;
cout << "Masukan jumlah beli: <input>" << endl;
cin >> jumlahBeli;
inputKodeBarang(jumlahBeli);
judul();
cetakTransaksi();
author();
return 0;
}