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

Postingan populer dari blog ini

RISET OPERASI SCHEDULIND (PENJADWALAN)

TEORI BAHASA DAN AUTOMATA