uses
crt
const
max = 100
type
dataMobil = record
plat, jenis : string[255]
tersedia : boolean
hargaSewa : real
endrecord
dataPelanggan = record
id, nama, alamat, noTlp : string[255]
endrecord
dataPenyewaan = record
nota, tglSewa : string[255]
mobil : dataMobil
pelanggan : dataPelanggan
lunas : boolean
endrecord
dataPengembalian = record
penyewaan : dataPenyewaan
tanggalKembali : string[255]
endrecord
kamus
mobil : arrMobil
pelanggan : arrPelanggan
penyewaan : arrPenyewaan
pengembalian : arrPengembalian
i, j, maks, jmlMobil, jmlPelanggan, jmlPenyewaan, jmlPengembalian,
pilihMenu, salah : integer
pilih, proses : char
ketemu : boolean
Fpelanggan : dbPelanggan
Fmobil : dbMobil
Fpenyewaan : dbPenyewaan
Fpengembalian : dbPengembalian
procedure header
algoritma
output('Baraya Travel - Kota Bandung, Jawa Barat')
end
{validasi tanggal}
function validasiTanggal(tanggal : string): boolean
kamus
benar : boolean
tg,bl : integer
algoritma
benar -> false
if ((length(tanggal) <> 10) or (copy(tanggal,3,1) <> '/') or
(copy(tanggal,6,1) <> '/')) then
benar -> false
end
else
val(copy(tanggal,1,2),tg,salah)
val(copy(tanggal,4,2),bl,salah)
if ((tg > 30) or (bl > 12)) then
benar -> false
end
else
benar -> true
endif
endif
validasiTanggal -> benar
endfunction
algoritma
validasi-> false
for i-> 1 to jmlPelanggan do
if((id = pelanggan[i].id) and (i <> index))then
validasi-> true
endif
endfor
validasiUbahPelanggan -> validasi
endfunction
algoritma
val(copy(tanggal_kembali,1,2),tg1,salah)
val(copy(tanggal_sewa,1,2),tg2,salah)
val(copy(tanggal_kembali,4,2),bl1,salah)
val(copy(tanggal_sewa,4,2),bl2,salah)
val(copy(tanggal_kembali,7,11),th1,salah)
val(copy(tanggal_sewa,7,11),th2,salah)
kamus
index : integer
algoritma
index -> 0
for i->1 to jmlPelanggan do
if (id = pelanggan[i].id) then
index -> i
endif
endfor
kamus
index : integer
algoritma
index -> 0
for i->1 to jmlMobil do
if (plat = mobil[i].plat) then
index -> i
endif
endfor
{Mobil}
procedure bacaMobil(kamus mobil : arrMobilkamus jmlMobil : integer)
kamus
temp : dataMobil
algoritma
assign(Fmobil,'datamobil.txt')
{$I-}
reset(fmobil)
{$I+}
if IOResult = 0 then
jmlMobil -> 0
while not eof(fmobil) do
input(fmobil,temp)
if (jmlMobil <= max) then
jmlMobil -> jmlMobil+1
mobil[jmlMobil] -> temp
endif
endwhile
close(Fmobil)
endif
endprocedure
algoritma
assign(Fmobil,'datamobil.txt')
Rewrite(Fmobil)
for i-> 1 to jmlMobil do
output(Fmobil,mobil[i])
endfor
close(Fmobil)
endprocedure
procedure tambahDataMobil(kamus mobil : arrMobil kamus jmlMobil :
integer)
kamus
plat,jenis : string
harga : real
algoritma
repeat
output('Tambah Data Mobil')
output('=================')
jmlMobil -> jmlMobil + 1
output ('Masukan Data Ke-',jmlMobil)
output ('-----------------')
output ('Masukan Plat Nomor Mobil : *D 1234
XYZ')
output ('Masukan Jenis Mobil : ')
output ('Masukan Harga Sewa Mobil : Rp. /hari')
input(plat)
input(jenis)
input(harga)
mobil[jmlMobil].plat->plat
mobil[jmlMobil].jenis->jenis
mobil[jmlMobil].hargaSewa->harga
mobil[jmlMobil].tersedia -> true
output('Masukan Data Lagi (y/t)? ')
input(pilih)
until (pilih <> 'y')
endprocedure
output('=================================================================
==============')
output('| No | Plat Nomor | Jenis Mobil | Harga Sewa / Hari |
Tersedia |')
output('=================================================================
==============')
output('=================================================================
==============')
endprocedure
input(plat)
input(jenis)
input(harga)
algoritma
output('Cari Data Mobil Berdasarkan Jenis')
output('=================================')
output('Masukkan Jenis Mobil Yang di Cari : ') input(jenis_cari)
ketemu -> false
banyak -> 0
for i -> 1 to jmlMobil do
datajenis -> copy(mobil[i].jenis,1,length(jenis_cari))
if upcase(jenis_cari) = upcase(datajenis)
then
ketemu -> true
banyak -> banyak + 1
endif
endfor
if(ketemu) then
output('Hasil Cari Berdasarkan Jenis Mobil')
output('==================================')
output('=================================================================
==============')
output('| No | Plat Nomor | Jenis Mobil | Harga Sewa / Hari
| Tersedia |')
output('=================================================================
==============')
k->1
for j -> 1 to jmlMobil do
datajenis -> copy(mobil[j].jenis,1,length(jenis_cari))
if (upcase(jenis_cari) = upcase(datajenis)) then
output(mobil[j].plat)
output(mobil[j].jenis)
output(mobil[j].hargaSewa:0:2)
output('=================================================================
==============')
end
else
output('Mobil Jenis ',jenis_cari,' Tidak Ditemukan !!!')
endif
endprocedure
input(atas)
input(bawah)
banyak->0
for i -> 1 to jmlMobil do
if((mobil[i].hargaSewa >= atas) and (mobil[i].hargaSewa <=
bawah))
then
ketemu -> true
banyak -> banyak + 1
endif
endfor
if(ketemu)
then
output('Hasil Cari Data Berdasarkan Harga Sewa')
output('======================================')
output('=================================================================
==============')
output('| No | Plat Nomor | Jenis Mobil | Harga Sewa /
Hari | Tersedia |')
output('=================================================================
==============')
k->1
for j -> 1 to jmlMobil do
if((mobil[j].hargaSewa >= atas) and (mobil[j].hargaSewa <=
bawah))
then
output('| | | | Rp.
| |')
output(j)
output(mobil[j].plat)
output(mobil[j].jenis)
output(mobil[j].hargaSewa:0:2)
procedure menuCariDataMobil
algoritma
output('======================================')
output('| Pencarian Data Mobil |')
output('======================================')
output('| |')
output('| 1. Cari Berdasarkan Plat Nomor |')
output('| 2. Cari Berdasarkan Jenis Mobil |')
output('| 3. Cari Berdasarkan Harga Sewa |')
output('| 0. Kembali Ke Menu Utama |')
output('| |')
output('======================================')
output('| Pilihan Anda : |')
output('======================================')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 3) do
input(pilih)
while (upcase(pilih) <> 'Y') and (upcase(pilih) <> 'T') do
output('Pilihan Salah <Enter> Untuk Mengulangi !!!')
input(pilih)
endwhile
procedure menuDataMobil
algoritma
output('======================================')
output('| Data Mobil |')
output('======================================')
output('| |')
output('| 1. Tambah Data Mobil |')
output('| 2. Tampil Data Mobil |')
output('| 3. Ubah Data Mobil |')
output('| 4. Cari Data Mobil |')
output('| 5. Hapus Data Mobil |')
output('| 0. Kembali |')
output('| |')
output('======================================')
output('| Pilihan Anda : |')
output('======================================')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 5) do
output('Salah Memilih Menu, Ulangi!')
input(pilihMenu)
endwhile
case (pilihMenu) of
1 : algoritma
tambahDataMobil(mobil,jmlMobil)
2 : algoritma
tampilDataMobil(mobil,jmlMobil)
3 : algoritma
ubahDataMobil(mobil,jmlMobil)
4 : algoritma
menuCariDataMobil
5 : algoritma
hapusDataMobil(mobil,jmlMobil)
0 : pilihMenu->1
endcase
endprocedure
{pelanggan}
procedure bacaPelanggan(pelanggan : arrPelanggan ; jmlPelanggan :
integer)
kamus
temp : dataPelanggan
algoritma
assign(Fpelanggan,'datapelanggan.txt')
reset(Fpelanggan)
if IOResult = 0 then
jmlPelanggan -> 0
while not eof(Fpelanggan) do
input(Fpelanggan,temp)
if (jmlPelanggan <= max) then
jmlPelanggan-> jmlPelanggan+1
pelanggan[jmlPelanggan] -> temp
endif
endwhile
close(Fpelanggan)
endif
endprocedure
algoritma
assign(Fpelanggan,'datapelanggan.txt')
Rewrite(Fpelanggan)
for i-> 1 to jmlPelanggan do
output(Fpelanggan,pelanggan[i])
endfor
close(Fpelanggan)
endprocedure
input(id)
input(id)
endwhile
input(nama)
input(alamat)
input(telp)
pelanggan[jmlPelanggan].id->id
pelanggan[jmlPelanggan].nama->nama
pelanggan[jmlPelanggan].alamat->alamat
pelanggan[jmlPelanggan].noTlp->telp
endprocedure
output('=================================================================
===================')
output('| No | ID | Nama | Alamat |
No Telp. |')
output('=================================================================
===================')
input(id)
while ((length(id) > 4) or
(validasiUbahPelanggan(id,pelanggan,jmlPelanggan,ubah))) do
input(nama)
input(alamat)
input(telp)
pelanggan[ubah].id->id
pelanggan[ubah].nama->nama
pelanggan[ubah].alamat->alamat
pelanggan[ubah].noTlp->telp
end
else if (upcase(pilih)= 'T') then
menu(pilihMenu)
endif
endprocedure
maks -> 1
for j -> 2 to (jmlPelanggan+1)-i do
if(ketemu)
then
output('Hasil Cari Berdasarkan Nama Pelanggan')
output('=====================================')
output('=================================================================
===================')
output('| No | ID | Nama | Alamat
| No Telp. |')
output('=================================================================
===================')
k->1
for j -> 1 to jmlPelanggan do
datanama -> copy(pelanggan[j].nama,1,length(namaCari))
if (upcase(namaCari) = upcase(datanama))
then
output('| | | |
| |')
output(j)
output(pelanggan[j].id)
output(pelanggan[j].nama)
output(pelanggan[j].alamat)
output(pelanggan[j].noTlp)
k -> k+1
endif
endfor
output('=================================================================
===============')
end
else
algoritma
output('Pelanggan yang Bernama ',namaCari,' Tidak Ditemukan !!!')
endif
endprocedure
if(ketemu)
then
output('Hasil Cari Berdasarkan Alamat Pelanggan')
output('=======================================')
output('=================================================================
===================')
output('| No | ID | Nama | Alamat
| No Telp. |')
output('=================================================================
===================')
k -> 1
for j -> 1 to jmlPelanggan do
dt_alamat -> copy(pelanggan[j].alamat,1,length(alamatCari))
if (upcase(alamatCari) = upcase(dt_alamat))
then
gotoxy(1,k+7) output('| | | |
| |')
gotoxy(3,k+7) output(j)
gotoxy(9,k+7) output(pelanggan[j].id)
gotoxy(16,k+7) output(pelanggan[j].nama)
gotoxy(35,k+7) output(pelanggan[j].alamat)
gotoxy(61,k+7) output(pelanggan[j].noTlp)
k -> k + 1
endif
endfor
output('=================================================================
===============')
end
else
output('Pelanggan yang Beralamat di ',alamatCari,' Tidak Ditemukan
!!!')
endif
endprocedure
procedure menuCariDataPelanggan
algoritma
output('======================================')
gotoxy(21,9) output('| Pencarian Data Pelanggan |')
gotoxy(21,10) output('======================================')
gotoxy(21,11) output('| |')
gotoxy(21,12) output('| 1. Cari Berdasarkan ID |')
gotoxy(21,13) output('| 2. Cari Berdasarkan Nama |')
gotoxy(21,14) output('| 3. Cari Berdasarkan Alamat |')
gotoxy(21,15) output('| 0. Kembali Ke Menu Utama |')
gotoxy(21,16) output('| |')
gotoxy(21,17) output('======================================')
gotoxy(21,18) output('| Pilihan Anda : |')
gotoxy(21,19) output('======================================')
gotoxy(46,18) input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 3) do
output('Salah Memilih Menu, Ulangi!')
input(pilihMenu)
endwhile
case (pilihMenu) of
1 : algoritma
urutIdPelanggan(pelanggan,jmlPelanggan)
cariIdPelanggan(pelanggan,jmlPelanggan)
2 : algoritma
urutNama(pelanggan,jmlPelanggan)
cariNamaPelanggan(pelanggan,jmlPelanggan)
3 : algoritma
urutAlamat(pelanggan,jmlPelanggan)
cariAlamatPelanggan(pelanggan,jmlPelanggan)
0 : menu(pilihMenu)
endcase
endprocedure
procedure menuDataPelanggan
algoritma
output('======================================')
output('| Data Pelanggan |')
output('======================================')
output('| |')
output('| 1. Tambah Data Pelanggan |')
output('| 2. Tampil Data Pelanggan |')
output('| 3. Ubah Data Pelanggan |')
output('| 4. Cari Data Pelanggan |')
output('| 5. Hapus Data Pelanggan |')
output('| 0. Kembali |')
output('| |')
output('======================================')
output('| Pilihan Anda : |')
output('======================================')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 5) do
output('Salah Memilih Menu, Ulangi!')
input(pilihMenu)
endwhile
case (pilihMenu) of
1 : algoritma
tambahDataPelanggan(pelanggan,jmlPelanggan)
2 : algoritma
tampilDataPelanggan(pelanggan,jmlPelanggan)
3 : algoritma
ubahdataPelanggan(pelanggan,jmlPelanggan)
4 : algoritma
menuCariDataPelanggan
5 : algoritma
hapusDataPelanggan(pelanggan,jmlPelanggan)
0 : pilihMenu->1
endcase
endprocedure
{penyewaan}
procedure bacaPenyewaan(penyewaan : arrPenyewaan ;jmlPenyewaan : integer)
kamus
temp : dataPenyewaan
algoritma
assign(Fpenyewaan,'datapenyewaan.txt')
reset(Fpenyewaan)
if IOResult = 0 then
jmlPenyewaan -> 0
while not eof(Fpenyewaan) do
input(Fpenyewaan,temp)
algoritma
assign(Fpenyewaan,'datapenyewaan.txt')
Rewrite(Fpenyewaan)
for i-> 1 to jmlPenyewaan do
output(Fpenyewaan,penyewaan[i])
endfore
close(Fpenyewaan)
endprocedure
kamus
nota, id, plat, tgl : string
indexPelanggan,indexMobil : integer
algoritma
repeat
output('Tambah Data Penyewaan')
output('=====================')
jmlPenyewaan -> jmlPenyewaan + 1
output ('Masukan Data Ke-',jmlPenyewaan)
output ('-----------------')
output ('Masukan No. Nota : ')
output ('Masukkan ID Pelanggan : ')
output ('Masukkan Plat Nomor Mobil : ')
output ('Masukkan Tanggal (01/01/2020) : ')
input(nota)
while ((length(nota) > 5) or
(validasiNota(nota,penyewaan,pengembalian,jmlPenyewaan,jmlPengembalian)))
do
input(id)
indexPelanggan -> getIndexPelanggan(id,pelanggan,jmlPelanggan)
while ((length(id) > 4) or (indexPelanggan = 0)) do
if(length(id) > 4)then
output('Maksimum Hanya 4 Digit !!!')
end
else if(indexPelanggan = 0) then
output('Id Pelanggan Tidak Ditemukan !!!')
endif
input(id)
indexPelanggan ->
getIndexPelanggan(id,pelanggan,jmlPelanggan)
endwhile
input(plat)
indexMobil -> getIndexMobil(plat,mobil,jmlMobil)
while ((length(plat) > 10) or (indexMobil = 0) or (not
tersediaMobil(plat,mobil,jmlMobil))) do
input(plat)
indexMobil -> getIndexMobil(plat,mobil,jmlMobil)
endwhile
input(tgl)
while (not validasiTanggal(tgl)) do
algoritma
output
('=====================================================')
output ('| Nota Penyewaan
|')
output
('=====================================================')
output ('| ID Pelanggan :
|')
output ('| Nama Pelanggan :
|')
output ('| Plat Mobil :
|')
output ('| Jenis Mobil :
|')
output ('| Harga Sewa/Hari : Rp.
|')
output ('| Tanggal Sewa :
|')
output
('=====================================================')
output ('| Proses Penyewaan (y/t) :
|')
output
('=====================================================')
output(pelanggan[indexPelanggan].id)
output(pelanggan[indexPelanggan].nama)
output(mobil[indexMobil].plat)
output(mobil[indexMobil].jenis)
output(mobil[indexMobil].hargaSewa:0:2)
output(tgl)
input(proses)
if(proses = 'y') then
output('Penyewaan diproses')
penyewaan[jmlPenyewaan].nota -> nota
penyewaan[jmlPenyewaan].pelanggan ->
pelanggan[indexPelanggan]
penyewaan[jmlPenyewaan].mobil -> mobil[indexMobil]
penyewaan[jmlPenyewaan].tglSewa -> tgl
mobil[indexMobil].tersedia -> false
end
else
gotoxy(35,23) output('Penyewaan dibatalkan')
jmlPenyewaan-> jmlPenyewaan-1
endif
output('Tambah data peminjaman (y/t) : ')
input(pilih)
endprocedure
output('=================================================================
=======================================')
output('| No | Nota | ID | Nama | Mobil | Harga
Sewa/Hari | Tanggal Sewa |')
output('=================================================================
=======================================')
output('=================================================================
===============')
endprocedure
output('=================================================================
=======================================')
output('| No | Nota | ID | Nama | Mobil | Harga
Sewa/Hari | Tanggal Sewa |')
output('=================================================================
=======================================')
gotoxy(1,8) output('| | | | |
| Rp. | |')
output(i)
output(penyewaan[ubah].nota)
output(penyewaan[ubah].pelanggan.id)
output(penyewaan[ubah].pelanggan.nama)
output(penyewaan[ubah].mobil.jenis)
output(penyewaan[ubah].mobil.hargaSewa:0:2)
output(penyewaan[ubah].tglSewa)
output('=================================================================
===============')
input(nota)
while ((length(nota) > 5) or
(validasiUbahNotaPenyewaan(nota,penyewaan,pengembalian,jmlPenyewaan,jmlPe
ngembalian,ubah))) do
if(length(nota) > 5)then
output('Maksimum Hanya 5 Digit !!!')
end
else
if(validasiUbahNotaPenyewaan(nota,penyewaan,pengembalian,jmlPenyewaan,jml
Pengembalian,ubah))then
output('nota tersebut sudah tersedia')
endif
input(nota)
endwhile
input(id)
indexPelanggan ->
getIndexPelanggan(id,pelanggan,jmlPelanggan)
while ((length(id) > 4) or (indexPelanggan = 0)) do
if(length(id) > 4)then
output('Maksimum Hanya 4 Digit !!!')
end
else if(indexPelanggan = 0) then
output('Id tidak ditemukan')
endif
input(id)
indexPelanggan ->
getIndexPelanggan(id,pelanggan,jmlPelanggan)
endwhile
input(plat)
indexMobil -> getIndexMobil(plat,mobil,jmlMobil)
while ((length(plat) > 10) or (indexMobil = 0) or (not
tersediaMobil(plat,mobil,jmlMobil))) do
if (length(plat) > 10) then
output('Maksimum Hanya 10 Digit !!!')
end
else if (indexMobil = 0) then
output('Plat Nomor Tidak Ada')
end
else if (not tersediaMobil(plat,mobil,jmlMobil)) then
output('Mobil Dengan No Plat Tersebut Sedang
Digunakan')
endif
input(plat)
indexMobil -> getIndexMobil(plat,mobil,jmlMobil)
endwhile
input(tgl)
while (not validasiTanggal(tgl)) do
output('Tanggal Tidak Sesuai Format')
input(tgl)
endwhile
end
else if (upcase(pilih)= 'T') then
menu(pilihMenu)
endif
endprocedure
if(ketemu)
then
output('Hasil Cari Berdasarkan Nama Pelanggan')
output('=====================================')
output('=================================================================
=======================================')
output('| No | Nota | ID | Nama | Mobil | Harga
Sewa/Hari | Tanggal Sewa |')
output('=================================================================
=======================================')
k->1
for j -> 1 to jmlPenyewaan do
datanama ->
copy(penyewaan[j].pelanggan.nama,1,length(namaCari))
if (upcase(namaCari) = upcase(datanama))
then
output('| | | | | | Rp.
| |')
output(i)
output(penyewaan[i].nota)
output(penyewaan[i].pelanggan.id)
output(penyewaan[i].pelanggan.nama)
output(penyewaan[i].mobil.jenis)
output(penyewaan[i].mobil.hargaSewa:0:2)
output(penyewaan[i].tglSewa)
endif
endfor
output('=================================================================
===============')
end
else
output('Pelanggan yang Bernama ',namaCari,' Tidak Ditemukan !!!')
endif
endprocedure
procedure menuCariDataPenyewaan
algoritma
output('======================================')
output('| Pencarian Data Penyewaan |')
output('======================================')
output('| |')
output('| 1. Cari Berdasarkan No. Nota |')
output('| 2. Cari Berdasarkan Nama Pelanggan |')
output('| 0. Kembali Ke Menu Utama |')
output('| |')
output('======================================')
output('| Pilihan Anda : |')
output('======================================')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 2) do
output('Salah Memilih Menu, Ulangi!')
input(pilihMenu)
endwhile
case (pilihMenu) of
1 : algoritma
urutNota(penyewaan,jmlPenyewaan)
cariNotaPenyewaan(penyewaan,jmlPenyewaan)
2 : algoritma
urutNama(pelanggan,jmlPelanggan)
cariNamaPelangganPenyewa(penyewaan,jmlPenyewaan)
0 : menu(pilihMenu)
endcase
endprocedure
procedure menuDataPenyewaan
algoritma
output('======================================')
output('| Data Penyewaan |')
output('======================================')
output('| |')
output('| 1. Tambah Data Penyewaan |')
output('| 2. Tampil Data Penyewaan |')
output('| 3. Ubah Data Penyewaan |')
output('| 4. Cari Data Penyewaan |')
output('| 5. Hapus Data Penyewaan |')
output('| 0. Kembali |')
output('| |')
output('======================================')
output('| Pilihan Anda : |')
output('======================================')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 5) do
utput('Salah Memilih Menu, Ulangi!')
input(pilihMenu)
endwhile
case (pilihMenu) of
1 :
tambahDataPenyewaan(penyewaan, pengembalian, pelanggan,
mobil, jmlPenyewaan, jmlPengembalian, jmlPelanggan, jmlMobil)
2 :
tampilDataPenyewaan(penyewaan,jmlPenyewaan)
input
3 :
ubahDataPenyewaan(penyewaan,pengembalian,pelanggan,mobil,jmlPenyewaan,jml
Pengembalian,jmlPelanggan,jmlMobil)
4 :
menuCariDataPenyewaan
5 :
hapusDataPenyewaan(penyewaan,jmlPenyewaan)
0 : pilihMenu->1
endcase
endprocedure
{pengembalian}
algoritma
assign(Fpengembalian,'datapengembalian.txt')
Rewrite(Fpengembalian)
for i-> 1 to jmlPengembalian do
output(Fpengembalian,pengembalian[i])
endfor
close(Fpengembalian)
endprocedure
algoritma
batas -> 0
for i->1 to jmlPenyewaan do
if(batas > 0)then
penyewaan[i-1] -> penyewaan[i]
endif
kamus
nota, tanggalKembali : string
indexPenyewaan : integer
algoritma
repeat
output('Konfirmasi Data Pengembalian')
output('============================')
jmlPengembalian -> jmlPengembalian + 1
output ('Data Pengembalian Ke-',jmlPengembalian)
output ('-------------------------')
output ('Masukan No. Nota : ')
output ('Masukkan Tanggal Kembali(01/01/2020) : ')
input(nota)
indexPenyewaan->
getIndexPenyewaan(nota,penyewaan,jmlPenyewaan)
while (indexPenyewaan = 0) do
utput('Nomor Nota Tidak Ada')
input(nota)
indexPenyewaan->
getIndexPenyewaan(nota,penyewaan,jmlPenyewaan)
endwhile
input(tanggalKembali)
//validasi id pelanggan
while ((not validasiTanggal(tanggalKembali)) or
(hitungSelisihHari(tanggalKembali, penyewaan[indexPenyewaan].tglSewa) <
0)) do
if (not validasiTanggal(tanggalKembali)) then
output('Tanggal Tidak Sesuai Format')
end
else
output('tanggal sewa :
',penyewaan[indexPenyewaan].tglSewa,', tentukan tanggal kembali dengan
benar')
endif
input(tanggalKembali)
endwhile
output
('=====================================================')
output ('| Pembayaran
|')
output
('=====================================================')
output ('| ID Pelanggan :
|')
output ('| Nama Pelanggan :
|')
output ('| Plat Mobil :
|')
output ('| Jenis Mobil :
|')
output ('| Harga Sewa/Hari :
|')
output ('| Tanggal Pinjam :
|')
output ('| Tanggal Kembali :
|')
output ('| Lama Sewa :
|')
output ('| -----------------------------------------------
|')
output ('| Total Bayar :
|')
output
('=====================================================')
output ('| Konfirmasi Pembayaran (y/t) :
|')
output
('=====================================================')
output(penyewaan[indexPenyewaan].pelanggan.id)
output(penyewaan[indexPenyewaan].pelanggan.nama)
output(penyewaan[indexPenyewaan].mobil.plat)
output(penyewaan[indexPenyewaan].mobil.jenis)
output('Rp. ',penyewaan[indexPenyewaan].mobil.hargaSewa:0:2)
output(penyewaan[indexPenyewaan].tglSewa)
output(tanggalKembali)
output(hitungSelisihHari(tanggalKembali,penyewaan[indexPenyewaan].tglSewa
))
output('Rp. ',
(hitungSelisihHari(tanggalKembali,penyewaan[indexPenyewaan].tglSewa)*peny
ewaan[indexPenyewaan].mobil.hargaSewa):0:2)
input(proses)
if (proses = 'y') then
output('Konfirmasi pembayaran berhasil dilakukan')
pengembalian[jmlPengembalian].tanggalKembali->
tanggalKembali
pengembalian[jmlPengembalian].penyewaan ->
penyewaan[indexPenyewaan]
verifikasiPembayaran(nota, penyewaan, jmlPenyewaan)
end
else
output('Konfirmasi pembayaran dibatalkan')
jmlPengembalian -> jmlPengembalian - 1
endif
output('Konfirmasi pengembalian lain? (y/t)? ') input(pilih)
until (pilih <> 'y')
endprocedure
procedure tampilDataPengembalian(pengembalian : arrPengembalian
jmlPengembalian : integer)
kamus
total : real
lamaSewa,detail : integer
algoritma
clrscr
output('Tampil Data Pengembalian')
output('========================')
output('=================================================================
===============================')
output('| No | Nota | ID | Plat Nomor | Tanggal Sewa | Tanggal
Kembali | Total |')
output('=================================================================
===============================')
output('=================================================================
===============')
output
output('Jika Ingin Melihat Detail Data Pengembalian (y/t) : ')
input(pilih)
if (upcase(pilih) = 'Y') then
algoritma
output('Masukan nomor data untuk dilihat secara detail : ')
input(detail)
clrscr
output('Tampil Detail Data Pengembalian')
output('===============================')
output output
output('No. Nota :
',pengembalian[detail].penyewaan.nota)
output('ID Pelanggan :
',pengembalian[detail].penyewaan.pelanggan.id)
output('Nama Pelanggan :
',pengembalian[detail].penyewaan.pelanggan.nama)
output('Alamat Pelanggan :
',pengembalian[detail].penyewaan.pelanggan.alamat)
output('No. Telp Pelanggan :
',pengembalian[detail].penyewaan.pelanggan.noTlp)
output('Plat Nomor Mobil :
',pengembalian[detail].penyewaan.mobil.plat)
output('Jenis Mobil :
',pengembalian[detail].penyewaan.mobil.jenis)
output('Harga Sewa / hari : Rp.
',pengembalian[detail].penyewaan.mobil.hargaSewa:0:2)
output('Tanggal Sewa :
',pengembalian[detail].penyewaan.tglSewa)
output('Tanggal Kembali :
',pengembalian[detail].tanggalKembali)
output('Lama Sewa : ',lamaSewa)
output('Total Bayar : Rp. ',total:0:2)
end
else
algoritma
menu(pilihMenu)
end
end
output('=================================================================
===============')
end
input(tanggalKembali)
while ((not validasiTanggal(tanggalKembali)) or
(hitungSelisihHari(tanggalKembali, pengembalian[ubah].penyewaan.tglSewa)
< 0)) do
algoritma
if (not validasiTanggal(tanggalKembali)) then
output('Tanggal Tidak Sesuai Format')
end
else
output('tanggal sewa :
',pengembalian[ubah].penyewaan.tglSewa,', tentukan tanggal kembali dengan
benar')
end
input
input(tanggalKembali)
end
pengembalian[ubah].tanggalKembali-> tanggalKembali
pengembalian[ubah].penyewaan.nota -> nota
output ('Data Telah Diubah')
input
end
else if (upcase(pilih)= 'T') then
menu(pilihMenu)
end
end //endprocedure
kamus
hapus : integer
algoritma
tampilDataTidakDetail(pengembalian,jmlPengembalian)
output('Nomor data yang akan dihapus : ')
input(hapus)
while (hapus < 1) or (hapus > jmlPengembalian) do
output('Tidak ada data ditemukan di nomor data tersebut!')
input
input(hapus)
end //endwhile
output('Data yang akan dihapus dengan No. Nota ')
output(pengembalian[hapus].penyewaan.nota)
output('Apakah Anda Yakin Data Tersebut Dihapus ? (y/t) : ')
input(pilih)
while (upcase(pilih) <> 'Y') and (upcase(pilih) <> 'T') do
output('Pilihan Salah <Enter> Untuk Mengulangi !!!')
input
input(pilih)
end
procedure menuDataPengembalian
algoritma
output('+====================================+')
output('| Data Pengembalian |')
output('+====================================+')
output('| |')
output('| 1. Konfirmasi Pengembalian |')
output('| 2. Tampil Data Pengembalian |')
output('| 3. Ubah Data Pengembalian |')
output('| 4. Cari Data Pengembalian |')
output('| 5. Hapus Data Pengembalian |')
output('| 0. Kembali |')
output('| |')
output('+====================================+')
output('| Pilihan Anda : |')
output('+====================================+')
input(pilihMenu)
while (pilihMenu < 0)or(pilihMenu > 5) do
output('Salah Memilih Menu, Ulangi!')
input
output ('|')
input(pilihMenu)
end //endwhile
case (pilihMenu) of
1 : algoritma
konfirmasiPembayaran(pengembalian, penyewaan,
jmlPengembalian,jmlPenyewaan)
end
2 : algoritma
tampilDataPengembalian(pengembalian,jmlPengembalian)
input
end
3 : algoritma
ubahDataPengembalian(pengembalian,jmlPengembalian)
end
4 : algoritma
urutNota(pengembalian,jmlPengembalian)
cariNotaPengembalian (pengembalian,jmlPengembalian)
input
end
5 : algoritma
hapusDataPengembalian(pengembalian,jmlPengembalian)
end
0 : pilihMenu->1
end //endcase
end //endprocedure
procedure menuUtama()
algoritma
repeat
menu(pilihMenu)
case (pilihMenu) of
1 : menuDataMobil
2 : menuDataPelanggan
3 : menuDataPenyewaan
4 : menuDataPengembalian
0 : algoritma
simpanMobil(mobil,jmlMobil)
simpanPelanggan(pelanggan, jmlPelanggan)
simpanPenyewaan(penyewaan, jmlPenyewaan)
simpanPengembalian(pengembalian, jmlPengembalian)
output('Penyimpanan Data Berhasil Dilakukan')
input()
//exit()
end
end //endcase
until (pilihMenu = 0)
end
algoritma
bacaMobil(mobil,jmlMobil)
bacaPelanggan(pelanggan,jmlPelanggan)
bacaPenyewaan(penyewaan,jmlPenyewaan)
bacaPengembalian(pengembalian,jmlPengembalian)
menuUtama()
end.