Program C++ Inputan Data Pelanggan
Program C++ Inputan Data Pelanggan secara dinamis yang terdiri dari 3 menu yaitu :
1. Dapat Menginputkan / memasukkan data
2. Dapat Melihat data yang diinputkan
3. Keluar Program
Dengan Nestedstruct . nested struct terdiri dari Struct Pelanggan, Struct Lokasi dan Struct Alamat.
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <dos.h>
int _max_char = 20;
struct pelanggan
{
char NAMA[20];
char NIK[20];
} plgn;
struct lokasi
{
char ID_LOC[20];
float X;
float Y;
} l;
struct alamat
{
int nomerRecord;
pelanggan orang;
lokasi tempat;
int No;
char RT[20];
char RW[20];
char desa[20];
char kec[20];
char nama_jalan[20];
char kode_pos[20];
} alm;
int _terminator = -1;
void masukanKeDaftar ( alamat, alamat*& );
int jumlahDaftar ( alamat * );
alamat* initDaftar ( alamat* a, int jumlahDaftar );
alamat terminator ();
alamat inputPelanggan ();
alamat* cariPelanggan ( int nomerRecord, alamat* a );
alamat* cariPelanggan ( int nomerRecord, alamat* a )
{
cout
<< "cariPelanggan ( " << nomerRecord << " ) "
<< "jumlah daftar=" << jumlahDaftar ( a ) << endl;
for (int i=0; i < jumlahDaftar ( a ); i++)
{
cout
<< "i="
<< i << " punya nomerRecord "
<< a [ i ].nomerRecord
<< endl;
if ( a [ i ].nomerRecord == nomerRecord )
return &a [ i ];
}
return NULL;
}
alamat* initDaftar ( alamat* a, int jumlahDaftar )
{
alamat* a_baru = new alamat [ jumlahDaftar + 1 ];
int i=0;
while ( i < jumlahDaftar )
{
a_baru [ i ] = a [ i ];
i++;
}
a_baru [ i ] = terminator ();
return a_baru;
}
alamat terminator ()
{
alamat terminator;
terminator.No = _terminator;
return terminator;
}
int jumlahDaftar ( alamat * a)
{
int i = 0;
while ( a [ i ].No != _terminator )
i++;
return i;
}
void masukanKeDaftar
(
alamat a,
alamat*& daftar
)
{
int jumlahDaftar_ = jumlahDaftar ( daftar );
jumlahDaftar_ = jumlahDaftar_ + 2;
alamat* daftarBaru = new alamat [ jumlahDaftar_ ];
int i=0;
while ( i < jumlahDaftar_ )
{
daftarBaru [ i ] = daftar [ i ];
i++;
}
jumlahDaftar_ = jumlahDaftar ( daftarBaru );
//nomerRecord pertama adalah 1 bukan 0
a.nomerRecord = jumlahDaftar_ + 1;
daftarBaru [ jumlahDaftar_ ] = a;
jumlahDaftar_++;
daftarBaru [ jumlahDaftar_ ] = terminator ();
delete [] daftar;
daftar = daftarBaru;
}
//alamat inputPelanggan (int nomer)
alamat inputPelanggan ()
{
char dummy [ 1 ];
alamat a;
char koma;
cout << "Masukan NIK = ";
cin.getline (dummy, 1);
cin.getline ( a.orang.NIK, _max_char );
gets(plgn.NIK);
cout << "Masukan Nama = ";
cin.getline ( a.orang.NAMA, _max_char );
cout << "Masukan ID P = ";
cin>> a.tempat.ID_LOC;
cout << "Masukan Koordinat (X_Y)";
cout<<"\n\t\t";
cin >> a.tempat.X >> koma >> a.tempat.Y;
cout<<"Masukan Alamat \n"<<endl;
cout << "No = ";
cin>>a.No;
cout<<"Nama_jalan = ";
cin.getline (dummy, 1);
cin.getline (a.nama_jalan, _max_char);
gets(alm.nama_jalan);
cout << "No_RT = ";
cin>>a.RT;
cout << "NO_RW = ";
cin>>a.RW;
cout << "Desa = ";
cin.getline (dummy, 1);
cin.getline (a.desa, _max_char);
gets(alm.desa);
cout<<"Masukkan Kec = ";
cin.getline ( a.kec, _max_char );
cout<<"Masukkan Kode pos = ";
cin.getline ( a.kode_pos, _max_char );
cout<<"___________________Data Selanjutnya__________________________";cout<<endl;
return a;
}
void printPelanggan (alamat a)
{
cout
<<" NIK = "
<<plgn.NIK
<<"\n NAMA = "
<<a.orang.NAMA
<<"\n ID P = "
<<a.tempat.ID_LOC
<<"\n Koordinat (X,Y) = ("
<<a.tempat.X
<< ", "
<< a.tempat.Y
<<")\n"
<<" Alamat (no = "
<< a.No
<< " Jalan = "
<< alm.nama_jalan
<< " rt = " << a.RT
<< " rw = " << a.RW
<< " desa = " <<alm.desa
<< ") \n kec = " << a.kec
<< "\n kode_pos = " << a.kode_pos
<< endl;
}
int main()
{
alamat* daftar = new alamat [ 1 ];
daftar [ 0 ] = terminator ();
int pil;
int i,b;
char lagi='1';
while ( pil != 3 )
{
//clrscr();
cout<<"============================="<<endl;
cout<<" MENU UTAMA "<<endl;
cout<<"============================="<<endl;
cout<<"[1] Input Data"<<endl;
cout<<"[2] Lihat Data"<<endl;
cout<<"[3] Keluar Sistem"<<endl;
cout<<"============================="<<endl;
cout<<" Pilihan Anda: ";
cin>>pil;
switch ( pil )
{
case 1:
clrscr();
cout<<"Masukan Jumlah Pelanggan= ";
cin>>b;
char koma;
for(i=1;i<=b;i++)
{
cout <<"masukan data no " << i << endl;
alamat a = inputPelanggan ();
masukanKeDaftar (a, daftar);
cout << "jumlah daftar sekarang=" <<
jumlahDaftar ( daftar ) << endl;
}
cout<<endl;
cout<<"___________________Data Selanjutnya__________________________";cout<<endl;
cout<<"Lagi ? (Ya = 1 / Tidak = 0) : ";
cin>>lagi;
while ( toupper ( lagi ) == '1' )
{
alamat a = inputPelanggan ();
masukanKeDaftar (a, daftar);
cout<<endl;
cout<<"___________________Data Selanjutnya__________________________";
cout<<"Lagi ? (Ya = 1 / Tidak = 0) : ";
cin>>lagi;
}
break;
case 2:
clrscr();
cout<<"Masukkan No urut Pelanggan : ";
cin>>i ;
alamat * a_ptr;
a_ptr = cariPelanggan ( i, daftar );
if (a_ptr != NULL)
{
alamat a;
a = a_ptr [ 0 ];
printPelanggan ( a );
}
else
{
cout
<< "No urut pelanggan "
<< i
<< " tidak ketemu\n";
}
break;
default:
clrscr();
cout<<"Bye- bye . . . "<<endl;sleep(2);
cout<<endl;
}
}//end while
//getch();
return 0;
}
Tampilan :
1. Dapat Menginputkan / memasukkan data
2. Dapat Melihat data yang diinputkan
3. Keluar Program
Dengan Nestedstruct . nested struct terdiri dari Struct Pelanggan, Struct Lokasi dan Struct Alamat.
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <dos.h>
int _max_char = 20;
struct pelanggan
{
char NAMA[20];
char NIK[20];
} plgn;
struct lokasi
{
char ID_LOC[20];
float X;
float Y;
} l;
struct alamat
{
int nomerRecord;
pelanggan orang;
lokasi tempat;
int No;
char RT[20];
char RW[20];
char desa[20];
char kec[20];
char nama_jalan[20];
char kode_pos[20];
} alm;
int _terminator = -1;
void masukanKeDaftar ( alamat, alamat*& );
int jumlahDaftar ( alamat * );
alamat* initDaftar ( alamat* a, int jumlahDaftar );
alamat terminator ();
alamat inputPelanggan ();
alamat* cariPelanggan ( int nomerRecord, alamat* a );
alamat* cariPelanggan ( int nomerRecord, alamat* a )
{
cout
<< "cariPelanggan ( " << nomerRecord << " ) "
<< "jumlah daftar=" << jumlahDaftar ( a ) << endl;
for (int i=0; i < jumlahDaftar ( a ); i++)
{
cout
<< "i="
<< i << " punya nomerRecord "
<< a [ i ].nomerRecord
<< endl;
if ( a [ i ].nomerRecord == nomerRecord )
return &a [ i ];
}
return NULL;
}
alamat* initDaftar ( alamat* a, int jumlahDaftar )
{
alamat* a_baru = new alamat [ jumlahDaftar + 1 ];
int i=0;
while ( i < jumlahDaftar )
{
a_baru [ i ] = a [ i ];
i++;
}
a_baru [ i ] = terminator ();
return a_baru;
}
alamat terminator ()
{
alamat terminator;
terminator.No = _terminator;
return terminator;
}
int jumlahDaftar ( alamat * a)
{
int i = 0;
while ( a [ i ].No != _terminator )
i++;
return i;
}
void masukanKeDaftar
(
alamat a,
alamat*& daftar
)
{
int jumlahDaftar_ = jumlahDaftar ( daftar );
jumlahDaftar_ = jumlahDaftar_ + 2;
alamat* daftarBaru = new alamat [ jumlahDaftar_ ];
int i=0;
while ( i < jumlahDaftar_ )
{
daftarBaru [ i ] = daftar [ i ];
i++;
}
jumlahDaftar_ = jumlahDaftar ( daftarBaru );
//nomerRecord pertama adalah 1 bukan 0
a.nomerRecord = jumlahDaftar_ + 1;
daftarBaru [ jumlahDaftar_ ] = a;
jumlahDaftar_++;
daftarBaru [ jumlahDaftar_ ] = terminator ();
delete [] daftar;
daftar = daftarBaru;
}
//alamat inputPelanggan (int nomer)
alamat inputPelanggan ()
{
char dummy [ 1 ];
alamat a;
char koma;
cout << "Masukan NIK = ";
cin.getline (dummy, 1);
cin.getline ( a.orang.NIK, _max_char );
gets(plgn.NIK);
cout << "Masukan Nama = ";
cin.getline ( a.orang.NAMA, _max_char );
cout << "Masukan ID P = ";
cin>> a.tempat.ID_LOC;
cout << "Masukan Koordinat (X_Y)";
cout<<"\n\t\t";
cin >> a.tempat.X >> koma >> a.tempat.Y;
cout<<"Masukan Alamat \n"<<endl;
cout << "No = ";
cin>>a.No;
cout<<"Nama_jalan = ";
cin.getline (dummy, 1);
cin.getline (a.nama_jalan, _max_char);
gets(alm.nama_jalan);
cout << "No_RT = ";
cin>>a.RT;
cout << "NO_RW = ";
cin>>a.RW;
cout << "Desa = ";
cin.getline (dummy, 1);
cin.getline (a.desa, _max_char);
gets(alm.desa);
cout<<"Masukkan Kec = ";
cin.getline ( a.kec, _max_char );
cout<<"Masukkan Kode pos = ";
cin.getline ( a.kode_pos, _max_char );
cout<<"___________________Data Selanjutnya__________________________";cout<<endl;
return a;
}
void printPelanggan (alamat a)
{
cout
<<" NIK = "
<<plgn.NIK
<<"\n NAMA = "
<<a.orang.NAMA
<<"\n ID P = "
<<a.tempat.ID_LOC
<<"\n Koordinat (X,Y) = ("
<<a.tempat.X
<< ", "
<< a.tempat.Y
<<")\n"
<<" Alamat (no = "
<< a.No
<< " Jalan = "
<< alm.nama_jalan
<< " rt = " << a.RT
<< " rw = " << a.RW
<< " desa = " <<alm.desa
<< ") \n kec = " << a.kec
<< "\n kode_pos = " << a.kode_pos
<< endl;
}
int main()
{
alamat* daftar = new alamat [ 1 ];
daftar [ 0 ] = terminator ();
int pil;
int i,b;
char lagi='1';
while ( pil != 3 )
{
//clrscr();
cout<<"============================="<<endl;
cout<<" MENU UTAMA "<<endl;
cout<<"============================="<<endl;
cout<<"[1] Input Data"<<endl;
cout<<"[2] Lihat Data"<<endl;
cout<<"[3] Keluar Sistem"<<endl;
cout<<"============================="<<endl;
cout<<" Pilihan Anda: ";
cin>>pil;
switch ( pil )
{
case 1:
clrscr();
cout<<"Masukan Jumlah Pelanggan= ";
cin>>b;
char koma;
for(i=1;i<=b;i++)
{
cout <<"masukan data no " << i << endl;
alamat a = inputPelanggan ();
masukanKeDaftar (a, daftar);
cout << "jumlah daftar sekarang=" <<
jumlahDaftar ( daftar ) << endl;
}
cout<<endl;
cout<<"___________________Data Selanjutnya__________________________";cout<<endl;
cout<<"Lagi ? (Ya = 1 / Tidak = 0) : ";
cin>>lagi;
while ( toupper ( lagi ) == '1' )
{
alamat a = inputPelanggan ();
masukanKeDaftar (a, daftar);
cout<<endl;
cout<<"___________________Data Selanjutnya__________________________";
cout<<"Lagi ? (Ya = 1 / Tidak = 0) : ";
cin>>lagi;
}
break;
case 2:
clrscr();
cout<<"Masukkan No urut Pelanggan : ";
cin>>i ;
alamat * a_ptr;
a_ptr = cariPelanggan ( i, daftar );
if (a_ptr != NULL)
{
alamat a;
a = a_ptr [ 0 ];
printPelanggan ( a );
}
else
{
cout
<< "No urut pelanggan "
<< i
<< " tidak ketemu\n";
}
break;
default:
clrscr();
cout<<"Bye- bye . . . "<<endl;sleep(2);
cout<<endl;
}
}//end while
//getch();
return 0;
}
Tampilan :
Comments
Post a Comment