Created
April 3, 2023 02:45
-
-
Save arisupriatna14/c0521e26f564cf2ac19cfdc19a6afd37 to your computer and use it in GitHub Desktop.
This file contains hidden or 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
OBT001 Panadol 10000 13 | |
OBT002 Sanmol 15000 18 | |
OBT003 Bodrex 11000 25 | |
OBT004 Paramex 25000 50 |
This file contains hidden or 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
#include <fstream> | |
#include <iostream> | |
#include <string> | |
using namespace std; | |
bool lanjutkan = true; | |
class Drug { | |
private: | |
string drugID; | |
string drugName; | |
int price; | |
public: | |
int stock; | |
Drug(string drugID, string drugName, int price, int stock) { | |
this->drugID = drugID; | |
this->drugName = drugName; | |
this->price = price; | |
this->stock = stock; | |
} | |
string getDrugID() { return drugID; } | |
string getDrugName() { return drugName; } | |
int getPrice() { return price; } | |
int getStock() { return stock; } | |
}; | |
class Pharmacy { | |
private: | |
int purchaseAmount = 0; | |
int totalDrugs = 0; | |
Drug *listDataDrugs[100]; | |
// friend function | |
friend void penjualan_obat(Pharmacy &obj); | |
friend void penjualan_resep(Pharmacy &obj); | |
friend void persediaan_obat(Pharmacy &obj); | |
friend void cetak_kwitansi(Pharmacy &obj); | |
public: | |
void seedDataDrugs() { | |
ifstream drugs_list_file("data_drugs.txt"); | |
if (drugs_list_file.is_open()) { | |
string drugID, drugName; | |
int price, stock; | |
while (drugs_list_file >> drugID >> drugName >> price >> stock) { | |
listDataDrugs[totalDrugs] = new Drug(drugID, drugName, price, stock); | |
totalDrugs++; | |
} | |
drugs_list_file.close(); | |
} else { | |
cout << "File tidak ditemukan" << endl; | |
} | |
} | |
}; | |
void persediaan_obat(Pharmacy &obj) { | |
cout << "\nPersediaan Obat\n"; | |
cout << "Kode Barang\t\tNama Barang\t\tHarga Barang\tStok\n"; | |
for (int i = 0; i < obj.totalDrugs; i++) { | |
Drug *d = obj.listDataDrugs[i]; | |
cout << d->getDrugID() << "\t\t\t" << d->getDrugName() << "\t\t\t" | |
<< d->getPrice() << "\t\t\t" << d->getStock() << endl; | |
} | |
} | |
void penjualan_obat(Pharmacy &obj) { | |
string kodeObat; | |
cout << "\nKode Obat: "; | |
cin >> kodeObat; | |
for (int i = 0; i < obj.totalDrugs; i++) { | |
Drug *d = obj.listDataDrugs[i]; | |
if (kodeObat == d->getDrugID()) { | |
cout << "\nDetail Obat\n\n"; | |
cout << "Kode Obat : " << d->getDrugID() << endl; | |
cout << "Nama Obat : " << d->getDrugName() << endl; | |
cout << "Harga Obat: " << d->getPrice() << endl; | |
cout << "Stok Obat : " << d->getStock() << endl; | |
} | |
} | |
cout << "\nJumlah yg ingin dibeli : "; | |
cin >> obj.purchaseAmount; | |
for (int x = 0; x < obj.totalDrugs; x++) { | |
Drug *d = obj.listDataDrugs[x]; | |
if (kodeObat == d->getDrugID()) { | |
cout << d->getDrugID() << endl; | |
cout << "\nStok Obat Saat Ini : " | |
<< d->getStock() - obj.purchaseAmount << endl; | |
d->stock = d->getStock() - obj.purchaseAmount; | |
} | |
} | |
} | |
void cetak_kwitansi(Pharmacy &obj) { | |
string kodeObat; | |
cout << "\nKode Obat: "; | |
cin >> kodeObat; | |
for (int i = 0; i < obj.totalDrugs; i++) { | |
Drug *d = obj.listDataDrugs[i]; | |
if (kodeObat == d->getDrugID()) { | |
cout << "\nDetail Transaksi\n\n"; | |
cout << "Kode Obat : " << d->getDrugID() << endl; | |
cout << "Nama Obat : " << d->getDrugName() << endl; | |
cout << "Harga Obat : " << d->getPrice() << endl; | |
cout << "Total Bayar : " << d->getPrice() * obj.purchaseAmount << endl; | |
} | |
} | |
} | |
void penjualan_resep(Pharmacy &obj) { | |
string namaPembeli; | |
string alamatPembeli; | |
string kodeObat; | |
int jumlahObat; | |
cout << "\nNama Pembeli: "; | |
cin >> namaPembeli; | |
cout << "\nAlamat Pembeli: "; | |
cin >> alamatPembeli; | |
cout << "\nKode Obat Berdasarkan resep: "; | |
cin >> kodeObat; | |
for (int i = 0; i < obj.totalDrugs; i++) { | |
Drug *d = obj.listDataDrugs[i]; | |
if (kodeObat == d->getDrugID()) { | |
cout << "\nDetail Obat\n\n"; | |
cout << "Kode Obat : " << d->getDrugID() << endl; | |
cout << "Nama Obat : " << d->getDrugName() << endl; | |
cout << "Harga Obat: " << d->getPrice() << endl; | |
cout << "Stok Obat : " << d->getStock() << endl; | |
cout << "Nama Pembeli : " << namaPembeli << endl; | |
cout << "Alamat Pembeli : " << alamatPembeli << endl; | |
} | |
} | |
cout << "\nJumlah yg ingin dibeli : "; | |
cin >> obj.purchaseAmount; | |
for (int i = 0; i < obj.totalDrugs; i++) { | |
Drug *d = obj.listDataDrugs[i]; | |
if (kodeObat == d->getDrugID()) { | |
if (d->getStock() < jumlahObat) { | |
cout << "Maaf stok obat " << d->getDrugName() << " tidak mencukupi" | |
<< endl; | |
} else { | |
d->stock = d->getStock() - obj.purchaseAmount; | |
cout << "\nStok Obat Saat Ini : " << d->getStock(); | |
} | |
} | |
} | |
} | |
void exit(bool *isExit) { | |
*isExit = false; | |
cout << "Program Selesai" << endl; | |
} | |
void menu(int selectedMenu, Pharmacy &obj) { | |
switch (selectedMenu) { | |
case 1: | |
persediaan_obat(obj); | |
break; | |
case 2: | |
penjualan_obat(obj); | |
break; | |
case 3: | |
penjualan_resep(obj); | |
break; | |
case 4: | |
cetak_kwitansi(obj); | |
break; | |
default: | |
exit(&lanjutkan); | |
break; | |
} | |
} | |
int main() { | |
int selectedMenu; | |
Pharmacy obj; | |
obj.seedDataDrugs(); | |
while (lanjutkan) { | |
cout << "\nMenu\n"; | |
cout << "1. Persediaan Obat\n"; | |
cout << "2. Penjualan Obat\n"; | |
cout << "3. Penjualan Berdasarkan Resep Dokter \n"; | |
cout << "4. Cetak Kwitansi Penjualan\n"; | |
cout << "5. Keluar\n"; | |
cout << "\nPilih Menu: "; | |
cin >> selectedMenu; | |
menu(selectedMenu, obj); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment