#include <cstdlib> #include <iostream> #include <string.h> #include <vector> #include <fstream> using namespace std; //Prototype dari kelas Mahasiswa //Kelas ini berisi data yang hendak disimpan ke dalam database class Mahasiswa public: string* setnama(); string getnama(); string* setnoinduk(); string getnoinduk(); string* setalamat(); string getalamat(); private: string nama; string noinduk; string alamat; ; //Prototype & Sekaligus Impelementasi dari kelas DB
//Kelas ini digunakan untuk mengontrol proses penyimpanan data class DB public: DB() this->mhs = new vector<mahasiswa>; ~DB() delete (this->mhs); this->mhs = 0; void tambahdata() //tambah data baru cout << "****** [TAMBAH DATA BARU] ******" << endl; Mahasiswa mhsbaru; cout << "Input Nama : "; cin.sync(); getline(cin,*mhsbaru.setnama()); cout << "Input No. Induk : "; cin.sync(); getline(cin,*mhsbaru.setnoinduk()); cout << "Input Alamat : ";
cin.sync(); getline(cin,*mhsbaru.setalamat()); //simpan ke vector this->mhs->push_back(mhsbaru); void lihatdata() //tampilkan semua data cout << "****** [LIHAT SEMUA DATA] ******" << endl; for(unsigned int i=0;i<this->mhs->size();i++) lihatdata(i); cout<< "---------- *********** ---------" << endl; void lihatdata(unsigned int i) cout<< "Nama : " << this->mhs->at(i).getnama() << endl; cout<< "No. Induk : " << this->mhs->at(i).getnoinduk() << endl; cout<< "Alamat : " << this->mhs->at(i).getalamat() << endl; int carinim()
int pos=-1; string nim; cout<<"masukan NIM = "; getline(cin,nim); system("cls"); cout << "****** [DATA YANG DICARI] ******" << endl; for(unsigned int i=0;i<this->mhs->size();i++) //lakukan pencarian bool ketemu = nim.find(this->mhs->at(i).getnoinduk())==0; //kalau ketemu, tampilkan hasil pencarin if(ketemu) pos = i; lihatdata(i); break; //kalau tidak ketemu, tampilkan pesan : "tidak ketemu" if(pos==-1)
cout<<"tidak Ketemu" << endl; return pos; bool writetofile(string fname="dbmahasiswa.csv") char filename[255]; //copy isi fname ke filename strcpy(filename,fname.c_str()); ofstream myfile(filename); for(unsigned int i=0;i<this->mhs->size();i++) ","; myfile << "," << "\"" << this->mhs->at(i).getnama() << "\"" << myfile << "\"" << this->mhs->at(i).getnoinduk() << "\"" << ","; endl; myfile << "\"" << this->mhs->at(i).getalamat() << "\"" << "," << //myfile.write( *(const Mahasiswa*) &this->mhs->at(i), sizeof(this- >mhs->at(i)));
myfile.close(); cout << "Tersimpan di File : " << filename << "!!" << endl; return true; bool readfromfile(string fname="dbmahasiswa.csv") char filename[255]; //copy isi fname ke filename strcpy(filename,fname.c_str()); ifstream myfile(filename); if(myfile.is_open()) //hapus data lama delete (this->mhs); this->mhs = 0; //persiapkan alamat baru dimemori utk menyimpan data this->mhs = new vector<mahasiswa>; Mahasiswa datamahasiswa;
char data[255]; int j=-4; unsigned int kolom = 0; for(unsigned int i=0; myfile.getline(data,255,',');i++) if(data[0]!='\n') //menghapus tanda kutip pada awal dan akhir kata string sdata = data; if(sdata.size()!=0) sdata.copy(data,sdata.size()-2,1); data[sdata.size()-2] = 0; //simpan data ke dalam vector if(kolom==1) datamahasiswa.setnama()->assign(data); else if(kolom==2) datamahasiswa.setnoinduk()->assign(data); else
if(kolom==3) datamahasiswa.setalamat()->assign(data); if(kolom==3) mhs->push_back(datamahasiswa); kolom=1; else kolom++; myfile.close(); cout << "Baca dari File : " << fname << " telah berhasil" << endl << endl; //kembalikan nilai TRUE sebagai tanda kalau proses
//pembacaan berhasil dilakukan return true; else cout << "Baca dari File : " << fname << " gagal dilakukan" << endl << endl; //kembalikan nilai FALSE sebagai tanda kalau proses //pembacaan TIDAK berhasil dilakukan return false; private: vector<mahasiswa> *mhs; ; int main(int argc, char *argv[]) DB database; unsigned int pilihan;
while(1) //Menu utama cout<<" [ PROGRAM DATABASE SEDERHANA ] "<<endl; cout<<" 1. Tambah Data cout<<" 2. Lihat Semua Data cout<<" 3. Cari Berdasarkan NIM cout<<" 4. Simpan Ke File "<< endl; "<< endl; " << endl; " << endl; cout<<" 5. Buka Dari File cout<<" 6. Keluar " << endl; " << endl; cout<<" Pilihan Anda (1/.. /6) : "; cin >> pilihan; cin.sync(); system("cls"); switch(pilihan) case 1: database.tambahdata(); break; case 2: database.lihatdata(); break;
case 3: database.carinim(); break; case 4: database.writetofile(); break; case 5: database.readfromfile(); //jika user memilih keluar, maka program akan berakhir if(pilihan==6) break; system("pause"); system("cls"); return EXIT_SUCCESS; //Implementasi Kelas Mahasiswa
string* Mahasiswa::setNama() return &this->nama; string Mahasiswa::getNama() return this->nama; string* Mahasiswa::setNoInduk() return &this->noinduk; string Mahasiswa::getNoInduk() return this->noinduk; string* Mahasiswa::setAlamat() return &this->alamat;
string Mahasiswa::getAlamat() return this->alamat;