Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 10

COMPUTER LABORATORY

ELECTRICAL ENG. DEPARTMENT


ANDALAS UNIVERSITY

JOURNAL FORM
PRACTICUM COMPUTER PROGRAMMING
Name
BP
Module Practicum

: Irvan Zikri
: 1510951019
: Object Oriented Programming

N
o

Soal

Listing Program

Membuat
CRUD dengan
menggunakan
file txt sebagai
tempat
penyimpanann
ya + dengan
cara Object
Oriented
Programming
menggunakan
class

#include
#include
#include
#include
#include

<iostream>
<fstream>
<cstdlib>
<string>
<iomanip>

using namespace std;


bool InTheLoop = true;
class Database {
protected :
int nobp,x;
int number_of_lines;
string nama,tmp_dua,line;
float IPK;
char pilih, jk;
ofstream database_name,
database_nobp, database_IPK,
database_jk,database_name_tmp;
ifstream tmp_file_nobp,
tmp_file_name, tmp_file_ipk, tmp_file_jk;
bool open_data (int a) {
int pilihan_1 = a;
database_name_tmp.open
("E:\\database\\tmp_database.txt");
if (pilihan_1 == 1)
{
tmp_file_nobp.open
("E:\\database\\nobp.txt", ios::in); }
else if (pilihan_1 == 2) {
tmp_file_name.open
("E:\\database\\username.txt",

Screensh
ot
program

Nila
i

ios::in); }
else if (pilihan_1 == 3) {
tmp_file_ipk.open
("E:\\database\\ipk.txt", ios::in); }
else if (pilihan_1 == 4) {
tmp_file_jk.open
("E:\\database\\jk.txt", ios::in); }
return true;
}
void another_overwrite_data (int lk) {
string iz1, temporary_names;
number_of_lines = 0;
if ( lk == 1 ) { iz1 = "nobp";
tmp_file_nobp.close(); }
else if ( lk == 2 ) { iz1 =
"username"; tmp_file_name.close();}
else if ( lk == 3 ) { iz1 =
"ipk"; tmp_file_ipk.close();}
else if ( lk == 4 ) { iz1 = "jk";
tmp_file_jk.close();}
temporary_names =
"E:\\database\\"+iz1+".txt";
database_name_tmp.close();
remove(temporary_names.c_str());
char oldname[] =
"E:\\database\\tmp_database.txt";
rename(oldname ,
temporary_names.c_str());
}
void overwrites_data (int a) {
string iz;
if ( a == 1 ) { iz = "No.bp"; }
else if ( a == 2 ) { iz = "nama"; }
else if ( a == 3 ) { iz = "IPK"; }
else if ( a == 4 ) { iz = "jenis
kelamin"; }
if (x != number_of_lines) {
database_name_tmp << line
<< endl;
} else {
cout << "Data "+iz+" lama
adalah " << line <<endl;
cout << "Masukkan "+iz+"
baru \t"<< endl;
cin >> line;
database_name_tmp << line
<< endl;
cout << "Edit "+iz+" sukses"
<< endl;
}

public :
int pilih_1;
void garis(int a) {
for(int garis = 0; garis
<=a;garis++) { cout<< "="; }
}
void menu_header () {
garis(50);
cout << endl <<"|" << setw(10)<<"
" << "Selamat datang di Portal Unand"
<<setw(10)<<"|" ;
cout << endl <<"|" << setw(11)<<"
" << "Silahkan pilih menu yang ada"
<<setw(11)<<"|"<< endl;
garis(50);
cout << endl << endl;
cout << "1. Menambahkan data" <<
endl;
cout << "2. Mengedit data" << endl;
cout << "3. Menghapus data" <<
endl;
cout << "4. Tampilkan data" <<
endl;
}
};
class CreateData : public Database{
public :
bool database_output_open () {
database_name.open
("E:\\database\\username.txt",
ios::app);
database_nobp.open
("E:\\database\\nobp.txt", ios::app);
database_IPK.open
("E:\\database\\ipk.txt", ios::app);
database_jk.open
("E:\\database\\jk.txt", ios::app);
return true;
}
bool database_save (string
nama,int nobp,float IPK,char jk) {
database_name << nama
<< endl;
database_nobp << nobp <<

endl;
database_IPK << IPK <<
endl;
database_jk << jk << endl;
return true;
}
CreateData() {
database_output_open();
cout << "Tambahkan nama
mahasiswa \t";
cin.ignore(), getline(cin,
nama);
cout << endl;
cout << "Tambahkan nobp
mahasiswa \t";
cin >> nobp;
cout << endl;
cout << "Tambahkan IPK
mahasiswa \t";
cin >> IPK;
cout << endl;
cout << "Tambahkan Jenis
Kelamin mahasiswa \t";
cin >> jk;
cout << "Penambahan data
berhasil kembali ke menu" << endl;
system("CLS");
database_save(nama, nobp,
IPK, jk), cout << endl;
}
~CreateData () {
database_name.close();
database_nobp.close();
database_IPK.close();
database_jk.close();
}
};
class EditData : public Database {
public :
EditData() {
number_of_lines = 0;
system("CLS");
cout << " \n Pilihan edit
data \n \n 1. No bp \n 2. Nama \n 3. IPK \n 4.
Jenis Kelamin"<<endl;
cin >> pilih_1;
system("CLS");
cout << "Silahkan edit data

pada baris ke" << endl;


cin >> x;
open_data (pilih_1);
if (pilih_1 == 1) {
while (getline(tmp_file_nobp, line))
{
++number_of_lines;
overwrites_data (pilih_1);
}
another_overwrite_data(pilih_1);
}
else if (pilih_1 == 2) {
while (getline(tmp_file_name, line))
{
++number_of_lines;
overwrites_data (pilih_1);
}
another_overwrite_data(pilih_1);
}
else if (pilih_1 == 3) {
while (getline(tmp_file_ipk, line))
{
++number_of_lines;
overwrites_data (pilih_1);
}
another_overwrite_data(pilih_1);
}
else if (pilih_1 == 4) {
while (getline(tmp_file_jk, line))
{
++number_of_lines;
overwrites_data (pilih_1);
}
another_overwrite_data(pilih_1);
}
else {
cout << "Pilihan tidak valid, ulang
memilih ? (Y/N)";
cin >> pilih;
if(pilih == 'Y' || pilih == 'y') {
system("CLS");
InTheLoop = true;
} else {
InTheLoop = false;
}

}
cout << "Edit data sukses, Kembali
ke menu ? (Y/N)";
cin >> pilih;
if(pilih == 'Y' || pilih == 'y') {
system("CLS");
InTheLoop = true;
} else {
InTheLoop = false;
}
}
};
class DeleteData : public Database {
public:
DeleteData() {
cout << "Silahkan hapus data
pada baris ke" << endl;
cin >> x;
}
~DeleteData() {
open_data (1);
while (getline(tmp_file_nobp, line))
{
++number_of_lines;
delete_data ();
}
another_overwrite_data (1);
open_data (2);
while (getline(tmp_file_name, line))
{
++number_of_lines;
delete_data ();
} another_overwrite_data (2);
open_data (3);
while (getline(tmp_file_ipk, line))
{
++number_of_lines;
delete_data ();
} another_overwrite_data (3);
open_data (4);
while (getline(tmp_file_jk, line))
{
++number_of_lines;
delete_data ();
} another_overwrite_data (4);

cout << "Kembali ke menu ? (Y/N)";


cin >> pilih;
if(pilih == 'Y' || pilih == 'y') {
system("CLS");
InTheLoop = true;
} else {
InTheLoop = false;
}
}
private:
void delete_data () {
if (x != number_of_lines) {
database_name_tmp << line
<< endl;
} else {
cout << "Data "<<line<<"
telah dihapus" <<endl;
}
}
};
class ViewData : public Database {
public:
bool database_input_open () {
tmp_file_nobp.open
("E:\\database\\nobp.txt", ios::in);
tmp_file_name.open
("E:\\database\\username.txt",
ios::in);
tmp_file_ipk.open
("E:\\database\\ipk.txt", ios::in);
tmp_file_jk.open
("E:\\database\\jk.txt", ios::in);
return true;
}
bool database_input_close() {
tmp_file_nobp.close();
tmp_file_jk.close();
tmp_file_ipk.close();
tmp_file_name.close();
return true;
}
int counter () {
number_of_lines = 0;
tmp_file_nobp.open

("E:\\database\\nobp.txt", ios::in);
int s;
while (getline(tmp_file_nobp, line))
{
++number_of_lines;
}
tmp_file_nobp.close();
s = number_of_lines;
return s;
}
public:
ViewData() {
int z = counter();
cout << endl <<endl; garis(70);
cout <<endl<<"| "<< " ID
"<<"+"<<setw(7)<<
"Nobp"<<setw(7)<<"+ "<<setw(11)<<
"Nama"<<setw(17)<<"+
IPK"<<setw(22)<<"+ Jenis Kelamin
|"<<endl;
garis(70); cout << endl;
database_input_open();
for( int k = 0; k < z ; k++) {
getline(tmp_file_nobp, line);
cout <<"| "<<k+1<<" |
"<<setw(5) << line ;
for( int k = 0; k < 1 ; ++k) {
getline(tmp_file_name, line);
cout <<" |
"<<setw(17)<< line<<setw(7);
for( int k = 0; k < 1 ;
++k) {
getline(tmp_file_ipk, line);
cout <<"|
"<<setw(7)<< line<<" |";
for( int k = 0; k
< 1 ; ++k) {
getline(tmp_file_jk, line);
cout
<<setw(8)<< line<<setw(8)<<" |"<<endl;
}
}
}
}
database_input_close(); garis(70);
cout << endl;cout << "Kembali ke menu ?
(Y/N)";
cin >> pilih;

if(pilih == 'Y' || pilih == 'y') {


system("CLS");
InTheLoop = true;
} else {
InTheLoop = false;
}
}
};

int main() {
while (InTheLoop == true) {
//-----------------------Menu
Data----------------------------//
Database Mahasiswa;
Mahasiswa.menu_header ();
cin >> Mahasiswa.pilih_1;
if (Mahasiswa.pilih_1 == 1) {
CreateData
Buat_Mahasiswa;
} else if ( Mahasiswa.pilih_1 == 2 ) {
EditData
Edit_Mahasiswa;
} else if ( Mahasiswa.pilih_1 == 3 ) {
DeleteData
Delete_Mahasiswa;
} else if ( Mahasiswa.pilih_1 == 4 ) {
ViewData
View_Mahasiswa;
} else {
cout << " Menu tidak
valid ";
return false;
}
}
//-----------------------End ----------------------------//
return 29102013;
system("PAUSE");
}

Padang , 2016
Practicum Assistant

You might also like