Yaph inilah tugas terkahir buat mata kuliah praktikumku Algoritma Pemrograman dengan Bahasa Pemrograman C++ menggunakan IDE Borland 5.02 yang menyebalkan. Program ini bisa Read, Edit, Delete, Add Data di File TXT. Oke langsung saja yah …
#include <iostream> #include <fstream> #include <string> #include <stdio> #include <windows> #include <vector> using namespace std; void menuAwal(); int inpmenu; char tanya; string baris; string bacaFile; string inputBaru; vector <string> explode(const char& chSparate, const string& strText){ string next = ""; vector <string> result; for(string::const_iterator it = strText.begin(); it != strText.end(); it++){ if(*it == chSparate){ if(next.length() > 0){ result.push_back(next); next = ""; } }else{ next += *it; } } return result; } string& str_replace(const string &search, const string &replace, string &subject){ string buffer; int sealeng = search.length(); int strleng = subject.length(); if (sealeng==0) return subject; for(int i=0, j=0; i<strleng; j=0 ){ while (i+j<strleng && j<sealeng && subject[i+j]==search[j]) j++; if (j==sealeng){ buffer.append(replace); i+=sealeng; }else{ buffer.append( &subject[i++], 1); } } subject = buffer; return subject; } void cariBuku(string cariKodeBuku){ string tampungHasilExplodes; vector <string> detailDataBarang; vector <string> detailKodeBarang; bacaFile = ""; system("cls"); cariKodeBuku = "["+cariKodeBuku+"]"; ifstream db; db.open("dataBarang.txt"); while(!db.eof()){ getline(db,baris,'\n'); bacaFile += baris+"\n"; } db.close(); detailDataBarang = explode('\n',bacaFile); for(size_t i = 0; i < detailDataBarang.size(); i++){ if(detailDataBarang[i].find(cariKodeBuku)!=string::npos){ tampungHasilExplodes += detailDataBarang[i]+"\n "; } } tampungHasilExplodes = str_replace("|","\t",tampungHasilExplodes); tampungHasilExplodes = str_replace("=","\t",tampungHasilExplodes); cout << "\n -------------------------------------------------" <<endl; cout << " " << tampungHasilExplodes; cout << "-------------------------------------------------" <<endl; fflush(stdin); cout << " Kembali ke Menu Awal ? [y/t] : "; cin >> tanya; if(tanya=='y') menuAwal(); else exit(0); } void editBuku(string cariKodeBuku){ int penanda; string tampungExp, tampungBaru, tambahanKarakter; string namaBukuBaru, stokBukuBaru, hargaBukuBaru; vector <string> detailDataBarang; ifstream db; db.open("dataBarang.txt"); while(!db.eof()){ getline(db,baris,'\n'); bacaFile += baris+"\n"; } db.close(); cariKodeBuku = "["+cariKodeBuku+"]"; if(bacaFile.find(cariKodeBuku)==string::npos){ cout << "Maaf, buku dengan kode tersebut tidak ada"; Sleep(1000); menuAwal(); } detailDataBarang = explode('\n',bacaFile); for(size_t i = 0; i < detailDataBarang.size(); i++){ if(detailDataBarang[i].find(cariKodeBuku)!=string::npos){ tampungExp += detailDataBarang[i]+"\n"; penanda = i; } } if(penanda==0 || penanda==detailDataBarang.size()){ tambahanKarakter = "\n"; } cout << "Nama Buku yang baru : "; cin >> namaBukuBaru; cout << "Stok barang yang baru : "; cin >> stokBukuBaru; cout << "Harga barang yang baru : Rp "; cin >> hargaBukuBaru; tampungBaru = cariKodeBuku+"="+namaBukuBaru+"|"+stokBukuBaru+"|"+ hargaBukuBaru+"|"+tambahanKarakter; tampungExp = ""; for(size_t i = 0; i < detailDataBarang.size(); i++){ if(penanda==i){ tampungExp += tampungBaru; continue; }else{ tampungExp += detailDataBarang[i]+"\n"; } } tampungExp = tampungExp.substr(0,(tampungExp.length() - 2)); ofstream fl; fl.open("dataBarang.txt",ios::trunc); fl << tampungExp; fl.close(); cout << "Buku berhasil dirubah. Terima Kasih"; Sleep(1000); menuAwal(); } void inputDataBarang(){ system("cls"); string kodeBarang, namaBarang, stokBarang, hargaBarang; cout << "Masukkan Kode Barang : "; cin >> kodeBarang; bacaFile = ""; ifstream db; db.open("dataBarang.txt"); while(!db.eof()){ getline(db,baris,'\n'); bacaFile += baris+"\n"; } db.close(); if(bacaFile.find(kodeBarang)!=string::npos){ cout << "Maaf, barang dengan kode tersebut sudah ada sebelumnya"; Sleep(1000); menuAwal(); } cout << "\nMasukkan Nama Barang : "; cin >> namaBarang; cout << "Masukkan Jumlah Stok Barang : "; cin >> stokBarang; cout << "Masukkan Harga Barang : "; cin >> hargaBarang; inputBaru = "["+kodeBarang+"]="+namaBarang+"|"+stokBarang+"|"+hargaBarang+"|"; ofstream fl; fl.open("dataBarang.txt"); fl << bacaFile; fl << inputBaru; fl.close(); cout << "Barang baru berhasil ditambahkan." << endl; Sleep(1000); menuAwal(); } void hapusDataBarang(string cariKodeBuku){ string tampungExp; vector <string> detailDataBarang; bacaFile = ""; system("cls"); ifstream db; db.open("dataBarang.txt"); while(!db.eof()){ getline(db,baris,'\n'); bacaFile += baris+"\n"; } db.close(); detailDataBarang = explode('\n',bacaFile); cariKodeBuku = "["+cariKodeBuku+"]"; for(size_t i = 0; i < detailDataBarang.size(); i++) { if(detailDataBarang[i].substr(0,4)!=cariKodeBuku){ tampungExp += detailDataBarang[i]+"\n"; } } tampungExp = tampungExp.substr(0,(tampungExp.length() - 2)); ofstream fl; fl.open("dataBarang.txt",ios::trunc); fl << tampungExp; fl.close(); cout << "Barang telah berhasil dihapus." << endl; Sleep(1000); menuAwal(); } void laporan(){ bacaFile = ""; system("cls"); ifstream db; db.open("dataBarang.txt"); while(!db.eof()){ getline(db,baris,'\n'); bacaFile += baris+"\n"; } db.close(); cout << "Kode\tNama Barang\tStok\tHarga Barang" <<endl; cout << "--------------------------------------------" <<endl; bacaFile = str_replace("|","\t",bacaFile); bacaFile = str_replace("=","\t",bacaFile); cout << bacaFile; cout << "--------------------------------------------\n" <<endl; fflush(stdin); cout << "Kembali ke Menu Awal ? [y/t] : "; cin >> tanya; if(tanya=='y') menuAwal(); else system("exit"); system("pause"); } void menuAwal(){ system("cls"); cout << "+-----------------------------------+"<< endl; cout << "| Silakan Pilih Menu |"<< endl; cout << "+-----------------------------------+"<< endl; cout << "| 1. Lihat Data Barang |"<< endl; cout << "| 2. Cari Data Barang |"<< endl; cout << "| 3. Input Data Barang |"<< endl; cout << "| 4. Edit Data Barang |"<< endl; cout << "| 5. Hapus Data Barang |"<< endl; cout << "+-----------------------------------+"<< endl; cout << "\nPilihan Anda : "; fflush(stdin); cin >> inpmenu; cout << endl; if(inpmenu==1){ laporan(); }else if(inpmenu==2){ string cariKodeBarang; cout << "Masukkan kode barang : "; cin >> cariKodeBarang; cariBuku(cariKodeBarang); }else if(inpmenu==3){ inputDataBarang(); }else if(inpmenu==4){ string cariKodeBarang; cout << "Masukkan kode barang : "; cin >> cariKodeBarang; editBuku(cariKodeBarang); }else if(inpmenu==5){ string cariKodeBarang; cout << "Masukkan kode barang : "; cin >> cariKodeBarang; hapusDataBarang(cariKodeBarang); }else{ cout << "Terima Kasih"; Sleep(1000); system("exit"); } system("cls"); } int main(){ menuAwal(); return EXIT_SUCCESS; }
Untuk contoh isi file dataBarang.txt, silahkan lihat dibawah ini :
[01]=Keyboard|100|5000| [02]=Sikat Gigi|100|5000| [03]=Sabun Mandi|100|15000| [04]=Obat Nyamuk|100|25000| [05]=Minyal Goreng|100|35000| [06]=Gula Pasir|100|45000| [07]=Garam Dapur|100|55000| [08]=Susu Kental|100|65000| [09]=Kopi Bubuk|100|75000| [10]=Teh Celup|100|85000|
wow ,, bingung maksud codingnya om . btw thanks .
hehehe,,, ya coba dipahami aja pelan – pelan
pasti bisa
bisa minta tolong dikit? pd baris ke-18 apa ada yg kurang krn sy coba compile di codeblocks tidak bisa..
*sy msh pemula, btw..thx before
mmm… boleh tau errornya sperti apa?
ssssiiiiiiiippppppp….
pada baris 65 ko saya compile gag bisa ya..
muncul pesan kayak gini:
error: aggregate ‘std::ifstream db’ has incomplete type and cannot be defined
mohon bantuannya,,
IDE yang kamu pakai apa?
Saya mau tanya, kalau misalnya membuat program database yang sederhana gmn iah?…
mohon dibantu…
siapkan databasenya, buat alurnya… aplikasikan deh
kak kok saya masih error nya saya coba sintak yang kk share…
di bagian
string bacaFile;
editnya ga mau…