Skip to content

Instantly share code, notes, and snippets.

@arisupriatna14
Created April 3, 2023 02:45
Show Gist options
  • Save arisupriatna14/c0521e26f564cf2ac19cfdc19a6afd37 to your computer and use it in GitHub Desktop.
Save arisupriatna14/c0521e26f564cf2ac19cfdc19a6afd37 to your computer and use it in GitHub Desktop.
OBT001 Panadol 10000 13
OBT002 Sanmol 15000 18
OBT003 Bodrex 11000 25
OBT004 Paramex 25000 50
#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