STRUKTUR DATA C++
PROGRAM QUEUE PENYEWAAN MOBIL
#include<iostream>
#include<string>
#include<Windows.h>
using namespace std;
#define MAXEl 100
typedef struct{
int hrg_sewa,nmr_tnkb,thun_buat;
string merk,warna;
}Queue_mob;
Queue_mob car[100];
typedef struct{
int nmr_ktpkons;
string nama_kons,almt_kons;
}Queue_konsumen;
Queue_konsumen pelanggan[100];
typedef struct{
int nmr_ktpdriv,usia_driv;
string nama_driv,stts,almt_driv;
}Queue_driv;
Queue_driv sopir[100];
typedef struct{
int d1,d2,m1,m2,b1,b2;
}TransaksiSewa;
TransaksiSewa pi;
int jmlah,jml1,jml2,jml3,driv,dpt,tgl,uleh;
int n,cari,kode,denda,den;
string nobol,nama;
float a,b,i,c,d,Tot,Bayar;
void CreateEmptyCar(Queue_mob Qcar);
void CreateEmptyKons(Queue_konsumen Qkons);
void CreateEmptyDriv(Queue_driv Qdriv);
void CreateEmptyTransaksiSewa(TransaksiSewa Qsewa);
int IsEmptyCar(Queue_mob Qcar);
int IsEmptyKons(Queue_konsumen Qkons);
int IsEMptyDriv(Queue_driv Qdriv);
int IsEmptyTransaksiSewa(TransaksiSewa Qsewa);
int IsFullCar(Queue_mob Qcar);
int IsFullKons(Queue_konsumen Qkons);
int IsFullDriv(Queue_driv Qdriv);
int IsFullTransaksiSewa(TransaksiSewa Qsewa);
void tambahCar(Queue_mob &Qcar);
void tambahDriv(Queue_driv &Qdriv);
void tambahKOns(Queue_konsumen &Qkons);
void tambahTransaksiSewa(TransaksiSewa &sewa,Queue_konsumen &QKons);
void tampilKOns();
void tampilCar();
void tampilTransaksiSewaPinjam();
void tampilTransaksiSewaBalik();
void searchCar();
void searchKons();
void searchDriv();
void garis();
int main()
{
Queue_mob MyCar;
Queue_driv MyDriv;
Queue_konsumen MyKons;
int pil01;
system("cls");
goto menu_utama;
menu_utama:
system("cls");
do{
system("cls");
cout << "\n=====================Pilihan Menu=====================";
cout << "\n| 1.INPUT DATA MOBIL ";
cout << "\n| 2.INPUT DATA DRIVER ";
cout << "\n| 3.INPUT DATA KONSUMEN ";
cout << "\n| 4.INPUT DATA TRANSAKSI PEMINJAMAN ";
cout << "\n| 5.INPUT DATA TRANSAKSI PENGEMBALIAN ";
cout << "\n| 0.EXIT ";
cout << "\n|====================================================="<<endl;
cout << "\n";
cout << "\nPILIH MENU DI ATAS :";cin >> pil01;
switch (pil01)
{
case 1:
tambahCar(MyCar);
break;
case 2:
tambahDriv(MyDriv);
break;
case 3:
tambahKOns(MyKons);
break;
case 4:
tampilTransaksiSewaPinjam();
break;
case 5:
tampilTransaksiSewaBalik();
break;
case 0:
cout<<"Terima Kasih"<<endl;
exit(0);
}
}while(pil01<6);
}
void garis()
{
cout<<"=================================================================================="<<endl;
}
void CreateEmptyCar(Queue_mob Qcar)
{
Qcar.nmr_tnkb=-1;
}
void CreateEmptyKons(Queue_konsumen &Qkons)
{
Qkons.nmr_ktpkons=-1;
}
void CreateEmptyDriv(Queue_driv &Qdriv)
{
Qdriv.nmr_ktpdriv=-1;
}
void CreateEmptyTransaksiSewa(TransaksiSewa &Qsewa)
{
Qsewa.d1=-1;
}
int IsEmptyCar(Queue_mob Qcar)
{
return(Qcar.nmr_tnkb==-1);
}
int IsEmptyKons(Queue_konsumen Qkons)
{
return(Qkons.nmr_ktpkons==-1);
}
int IsEMptyDriv(Queue_driv Qdriv)
{
return(Qdriv.nmr_ktpdriv==-1);
}
int IsEmptyTransaksiSewa(TransaksiSewa Qsewa)
{
return(Qsewa.d1=-1);
}
int IsFullCar(Queue_mob Qcar)
{
return(Qcar.nmr_tnkb==MAXEl-1);
}
int IsFullKons(Queue_konsumen Qkons)
{
return(Qkons.nmr_ktpkons==MAXEl-1);
}
int IsFullDriv(Queue_driv Qdriv)
{
return(Qdriv.nmr_ktpdriv==MAXEl-1);
}
int IsFullTransaksiSewa(TransaksiSewa Qsewa)
{
return(Qsewa.d1==MAXEl-1);
}
void tambahCar(Queue_mob &Qcar)
{
if(!IsFullCar(Qcar))
{
if(IsEmptyCar(Qcar))
{
Qcar.nmr_tnkb=0;
}
else
system("cls");
cout<<"JUMLAH DATA YANG DIINPUTKAN :";cin>>jml1;
system("cls");
cout<<"---------------INPUT DATA MOBIL----------------------";
for(int i=1;i<=jml1;i++)
{
cout<<"\nINPUT NO TNKB Ke-"<<i<<" =";cin>>car[i].nmr_tnkb;
cout<<"\nINPUT MERK MOBIL Ke-"<<i<<" =";cin>>car[i].merk;
cout<<"\nINPUT WARNA MOBIL Ke-"<<i<<" =";cin>>car[i].warna;
cout<<"\nINPUT TAHUN MOBIL Ke-"<<i<<" =";cin>>car[i].thun_buat;
cout<<"\nTARIF SEWA/HARI ";cin>>car[i].hrg_sewa;
cout<<"\n";
cout<<"\n";
system("cls");
cout<<"******************** DATA MOBIL ********************\n";
cout<<"\n";
cout<<"No\tNomor TNKB\t\tMerk\t\tWarna\t\tTahun Pembuatan\t\t\tBiaya sewa"<<endl;
cout<<i<<"\t"<<car[i].nmr_tnkb<<"\t\t\t"<<car[i].merk<<"\t\t"<<car[i].warna<<"\t\t"<<car[i].thun_buat<<"\t\t\t\t"<<car[i].hrg_sewa;
cout<<"\n";
garis();
system("pause");
}
}
}
void tambahDriv(Queue_driv &Qdriv)
{
if(!IsFullDriv(Qdriv))
{
if(IsEMptyDriv(Qdriv))
{
Qdriv.nmr_ktpdriv=0;
}
else
cout<<"JUMLAH DATA YANG DIINPUTKAN :";cin>>jml2;
system("cls");
cout<<"---------------INPUT DATA RIVER----------------------";
for(int j=1;j<=jml2;j++)
{
cout<<"\nINPUT NO KTP DRIVER"<<j<<" =";cin>>sopir[j].nmr_ktpdriv;
cout<<"\nINPUT NAMA DRIVER"<<j<<" =";cin>>sopir[j].nama_driv;
cout<<"\nINPUT ALAMAT DRIVER"<<j<<" =";cin>>sopir[j].almt_driv;
cout<<"\nINPUT USIA DRIVER"<<j<<" =";cin>>sopir[j].usia_driv;
cout<<"\nINPUT STATUS DRIVER"<<j<<" =";cin>>sopir[j].stts;
cout<<"\n";
cout<<"\n";
cout<<"==============DATA YANG ANDA INPUTKAN =============="<<endl;
cout<<"\n";
cout<<"NO\t\tNomor KTP Driver\t\tNama Driver\t\tAlamat Driver\t\tUsia\t\tStatus"<<endl;
cout<<j<<"\t\t"<<sopir[j].nmr_ktpdriv<<"\t\t\t\t"<<sopir[j].nama_driv<<"\t\t\t"<<sopir[j].almt_driv<<"\t\t\t"<<sopir[j].usia_driv<<"\t\t"<<sopir[j].stts<<endl;
cout<<"\n";
garis();
system("pause");
}
}
}
void tambahKOns(Queue_konsumen &Qkons)
{
if(!IsFullKons(Qkons))
{
if(IsEmptyKons(Qkons))
{
Qkons.nmr_ktpkons=0;
}
else
cout<<"JUMLAH DATA YANG DIINPUTKAN :";cin>>jml3;
system("cls");
cout<<"---------------INPUT DATA RIVER----------------------";
for(int k=1;k<=jml3;k++)
{
cout<<"\nINPUT NO KTP KONSUMEN"<<k<<" :";cin>>pelanggan[k].nmr_ktpkons;
cout<<"\nINPUT NAMA KONSUMEN"<<k<<" :";cin>>pelanggan[k].nama_kons;
cout<<"\nINPUT ALAMAT KONSUMEN"<<k<<" :";cin>>pelanggan[k].almt_kons;
cout<<"\n";
cout<<"\n";
system("cls");
cout<<"**************** INPUTAN DATA ANDA ****************"<<endl;
cout<<"\n";
cout<<"NO\t\tNomor KTP Konsumen\t\tNama Konsumen\t\tAlamat Konsumen"<<endl;
cout<<k<<"\t\t"<<pelanggan[k].nmr_ktpkons<<"\t\t\t"<<pelanggan[k].nama_kons<<"\t\t\t"<<pelanggan[k].almt_kons<<endl;
cout<<"\n";
garis();
system("pause");
}
system("cls");
}
}
void tambahTransaksiSewa(TransaksiSewa &Qsewa)
{
if(!IsFullTransaksiSewa(Qsewa))
{
if(IsEmptyTransaksiSewa(Qsewa))
{
Qsewa.d1=0;
}
else
cout<<"\n";
cout<<"INPUTKAN KODE TRANSAKSI :";cin>>kode;
cout<<"INPUTKAN NAMA KONSUMEN :";cin>>nama;
cout<<"INPUTKAN MERK MOBIL YANG AKAN DISEWA :";cin>>nobol;
cout<<"APA ANDA INGIN MENGGUNAKAN DRIVER [1=ya / 0=tidak]";cin>>driv;
switch (driv)
{
case 1:
garis();
cout<<"\n--- DENGAN DRIVER ---";
cout<<"\nBIAYA DRIVER Rp.200.000";
cout<<"\n";
cout<<"\nTANGGAL PINJAMAN :";cin>>pi.d1;
cout<<"\nBULAN PINJAMAN :";cin>>pi.m1;
cout<<"\nTAHUN PINJAMAN :";cin>>pi.b1;
cout<<"\n";
cout<<"\nTANGGAL PENGEMBALIAN :";cin>>pi.d2;
cout<<"\nBULAN PENGEMBALIAN :";cin>>pi.m2;
cout<<"\nTAHUN PENGEMBALIAN :";cin>>pi.b2;
if(pi.d2>pi.d1){
a=pi.d2-pi.d1;
}
else
{
a=pi.d1-pi.d2;
}
if(pi.m2>pi.m1)
{
b=pi.m2-pi.m1;
}
else
{
b=pi.m1-pi.m2;
}
if(pi.b2>pi.b1)
{
c=pi.b2-pi.b1;
}
else
{
c=pi.b1-pi.b2;
}
d=(a+(b*30)+(c*360)*250000);
Bayar=(d*250000)+200000;//car[i].hrg_sewa;
Tot=Bayar;
cout<<"TOTAL BAYARAN : Rp."<<Tot<<endl;
cout<<"BERBEDA HARGA MOBIL BERBEDA FASILITAS PADA MOBIL ANDA"<<endl;
cout<<"\n";
cout<<"\n";
cout<<"\n";
garis();
cout<<"|Kode\t|\tNama Konsumen\t|\t\Merk Mobil\t\t|\t\tTotal Bayar"<<endl;
cout<<"\n";
cout<<" "<<kode<<"\t\t"<<nama<<"\t\t\t"<<nobol<<"\t\t\t\t\tRp."<<Tot<<endl;
garis();
system("pause");
break;
case 0:
garis();
cout<<"\n--- TANPA DRIVER ---";
cout<<"\nTANGGAL PINJAMAN :";cin>>pi.d1;
cout<<"\nBULAN PINJAMAN :";cin>>pi.m1;
cout<<"\nTAHUN PINJAMAN :";cin>>pi.b1;
cout<<"\n";
cout<<"\nTANGGAL AKAN DIKEMBALIKAN :";cin>>pi.d2;
cout<<"\nBULAN YANG AKAN DIKEMBALIKAN :";cin>>pi.m2;
cout<<"\nTAHUN YANG AKAN DIKEMBALIKAN :";cin>>pi.b2;
if(pi.d2>pi.d1){
a=pi.d2-pi.d1;
}
else
{
a=pi.d1-pi.d2;
}
if(pi.m2>pi.m1)
{
b=pi.m2-pi.m1;
}
else
{
b=pi.m1-pi.m2;
}
if(pi.b2>pi.b1)
{
c=pi.b2-pi.b1;
}
else
{
c=pi.b1-pi.b2;
}
d=(a+(b*30)+(c*360)*250000);
Bayar=d*250000;//car[i].hrg_sewa;
Tot=Bayar;
garis();
cout<<"TOTAL BAYARAN : Rp."<<Tot<<endl;
cout<<"BERBEDA HARGA MOBIL BERBEDA FASILITAS PADA MOBIL ANDA"<<endl;
cout<<"\n";
cout<<"\n";
cout<<"\n";
garis();
cout<<"|Kode\t|\tNama Konsumen\t|\t\Merk Mobil\t\t|\t\tTotal Bayar"<<endl;
cout<<"\n";
cout<<" "<<kode<<"\t\t"<<nama<<"\t\t\t"<<nobol<<"\t\t\t\t\tRp."<<Tot<<endl;
garis();
system("pause");
break;
}
}
cout<<"Data Sudah Penuh"<<endl;
}
void tampilTransaksiSewaPinjam()
{
int mil;
TransaksiSewa MyTransaksi;
do{
system("cls");
cout<<"---------------------------DATA TRANSAKSI PEMINJAMAN--------------------------------"<<endl;
cout<<"TRANSAKSI PINJAMAN"<<endl;
cout<<"1. INPUTKAN TRANSAKSI"<<endl;
cout<<"4. BACK"<<endl;
cout<<"0.EXIT"<<endl;
cout<<"SILAHKAN DIPILIH :";cin>>mil;
switch (mil)
{
case 1:
tambahTransaksiSewa(MyTransaksi);
break;
case 0:
exit(0);
}
}while(mil<4);
}
void tampilTransaksiSewaBalik()
{
cout<<"SILAHKAN INPUT KODE YANG AKAN DIKEMBALIKAN :";cin>>cari;
if(cari=kode)
{
cout<<"INPUTKAN TANGGAL PENGEMBALIAN:";cin>>tgl;
if(tgl=pi.b2)
{
cout<<"APAKAH ADA DENDA YANG AKAN DIBAYAR [1=ya / 0=tidak?";cin>>den;
switch (den)
{
case 1:
cout<<"JUMLAH DENDA YANG AKAN DIBAYARKAN :";cin>>denda;
system("cls");
garis();
cout<<"|Kode\t|\tNama Konsumen\t|\t\Merk Mobil\t\t|\t\tTotal Bayar"<<endl;
cout<<" "<<kode<<"\t\t"<<nama<<"\t\t\t"<<nobol<<"\t\t\t\t\tRp."<<Tot+denda<<endl;
garis();
system("pause");
break;
case 0:
system("cls");
garis();
cout<<"|Kode\t|\tNama Konsumen\t|\t\Merk Mobil\t\t|\t\tTotal Bayar"<<endl;
cout<<"\n";
cout<<" "<<kode<<"\t\t"<<nama<<"\t\t\t"<<nobol<<"\t\t\t\t\tRp."<<Tot<<endl;
garis();
system("pause");
break;
}
}
else
cout<<"TANGGAL YANG ANDA MASUKKAN TIDAK VALID"<<endl;
}
else
cout<<"KODE TRANSAKSI ANDA SALAH !"<<endl;
system("pause");
}
Program di running di Visual Studio, Mungkin jika di codeblock atau Borland akan terjadi error beberapa.
Sekain Semoga bermanfaat :)
Komentar
Posting Komentar