Circular Double Linked List
May 3, 2020 | Author: Anonymous | Category: N/A
Short Description
Download Circular Double Linked List...
Description
IF-2/S1/2 – UNIKOM 2012
TUGAS V IMPLEMENTASI IMPLEMENTASI CIRCULAR DOUBLE LINKED LIST CONTOH KASUS RESERVASI KAMAR HOTEL
Diajukan untuk memenuhi salah satu tugas mata kuliah Struktur Data Oleh: Try Fathur Rachman ( 10111015 10111015 ) Nurhusein Nurhusein ( 101 10111 11018 018 ) Restu Hendrik Saputra Saputr a ( 10111023 10111023 ) Gilang Luthfi ( 10111037 10111037 ) Dede Mandela (10107356) Azmi Najib Mahfoz (10109218)
Dosen: Tati Harihayati M., S.T., M.T.
TEKNIK INFORMATIKA FAKULT AKULTAS TEKNIK TEKN IK DAN DA N ILMU KOMPUTER UNIVERSITAS KOMPUTER INDONESIA 2011
IF-2/S1/2 – UNIKOM 2012
ALGOR ALG ORIT ITMA MA UTAMA : program Ibis_Hotel
KAMUS : const tarifInap = 250000
type dataTamu = record nama,alamat,kamar nama,alamat,kamar : string, string, umur,jmlKamar,jmlOrg,lamaInap,telp : integer , endrecord
pointer = ↑tamu, tamu = record info : dataTamu, prev,next : pointer, endrecord
awal, akhir, baru : pointer, data : dataTamu, biaya,harga,menu,plhSisip,plhHps : integer , selesai : char , isi : boolean; boolean;
{ Prototype Program } { Prosedur checkIn digunakan untuk user memasukan data tamu } procedure checkIn (input (input data : dataTamu; output isi : boolean) boolean)
{ Prosedur sisispDpn digunakan untuk menyisipkan data di bagian depan } procedure sisipDpn(input sisipDpn(input data : dataTamu; I/O awal,akhir : pointer)
{ Prosedur sisispBlkg digunakan untuk menyisipkan data di bagian belakang } procedure sisipBlkg(input sisipBlkg(input data : dataTamu; I/O awal,akhir : pointer)
IF-2/S1/2 – UNIKOM 2012
ALGOR ALG ORIT ITMA MA UTAMA : program Ibis_Hotel
KAMUS : const tarifInap = 250000
type dataTamu = record nama,alamat,kamar nama,alamat,kamar : string, string, umur,jmlKamar,jmlOrg,lamaInap,telp : integer , endrecord
pointer = ↑tamu, tamu = record info : dataTamu, prev,next : pointer, endrecord
awal, akhir, baru : pointer, data : dataTamu, biaya,harga,menu,plhSisip,plhHps : integer , selesai : char , isi : boolean; boolean;
{ Prototype Program } { Prosedur checkIn digunakan untuk user memasukan data tamu } procedure checkIn (input (input data : dataTamu; output isi : boolean) boolean)
{ Prosedur sisispDpn digunakan untuk menyisipkan data di bagian depan } procedure sisipDpn(input sisipDpn(input data : dataTamu; I/O awal,akhir : pointer)
{ Prosedur sisispBlkg digunakan untuk menyisipkan data di bagian belakang } procedure sisipBlkg(input sisipBlkg(input data : dataTamu; I/O awal,akhir : pointer)
IF-2/S1/2 – UNIKOM 2012
{ Prosedur sisispTengah digunakan untuk menyisipkan data di bagian tengah } procedure sisipTengah(input sisipTengah(input data : dataTamu; I/O awal,akhir : pointer)
{ Prosedur urutData digunakan untuk mengurutkan data sebelum di tampilkan } procedure urutData(I/O urutData(I/Oawal,akhir awal,akhir : pointer,input pointer, input jenis : integer)
{ Prosedur lihatData digunakan untuk menampilkan data yang terdapat pada rekord } procedure lihatData(I/O lihatData(I/O awal,akhir : pointer)
{ Prosedur hpsBlkg digunakan untuk menghapus data di bagian belakang } procedure hpsBlkg(input hpsBlkg( input data : dataTamu, dataTamu, I/O awal,akhir
: pointer)
{ Prosedur hpsDpn digunakan untuk menghapus data di bagian depan } procedure hpsDpn(I/O hpsDpn( I/O backup : dataTamu, I/O awal,akhir : pointer)
{ Prosedur hpsTengah digunakan untuk menghapus data di bagian tengah } procedure hpsTengah(input hpsTengah( input data : dataTamu, I/O awal,akhir : pointer)
{ Prosedur menuSisip digunakan untuk menampilkan menu sisip depan,tengah dan blkg } procedure menuSisip(I/O menuSisip(I/O awal,akhir : pointer, I/O isi : Boolean, Boolean, input data : dataTamu)
{ Prosedur menuHapus digunakan untuk menampilkan menu hapus depan,tengah dan blkg } procedure menuHapus(I/O menuHapus( I/O plhHps :integer)
{ Prosedur cariData digunakan untuk mencari data berdasarkan nomor kamar } procedure cariData(input cariData(input awal:pointer; I/O data : dataTamu)
{ Prosedur penghancuran digunakan untuk membebaskan memori dari proses senarai} procedure penghancuran( I/O backup : dataTamu, I/O awal,akhir : pointer)
IF-2/S1/2 – UNIKOM 2012
procedure checkIn (input data : dataTamu; output isi : boolean) {I.S :User memasukan data, kondisi isi false} {F.S : Data tamu masuk ke dalam rekord, kondisi isi true} KAMUS :
ALGORITMA : if (isi = false) then input(data) harga ← tarifInap, biaya ← harga * data.lamaInap * data.jmlOrg, output(harga), output(biaya), isi ← true, else output(‘Data sudah ada, tetapi belum disisipkan’), endif end procedure
procedure sisipDpn(input data : dataTamu; I/O awal,akhir : pointer) {I.S : Rekord data sudah terisi, user memilih menu sisip depan} {F.S : Data disisipkan di depan}
KAMUS : baru : pointer
ALGORITMA : begin alloc(baru), baru↑.info ← data, if (awal = nil) then akhir ← baru, else baru↑.next ← awal, akhir↑.prev ← baru, endif awal ← baru,
IF-2/S1/2 – UNIKOM 2012
akhir↑.next ← awal, awal↑.prev ← akhir, end procedure
procedure sisipBlkg(input data : dataTamu; I/O awal,akhir : pointer) {I.S : Rekord data sudah terisi, user memilih menu sisip belakang} {F.S : Data disisipkan di belakang}
KAMUS : baru : pointer
ALGORITMA begin alloc(baru), baru↑.info ← data, if (awal = nil) then sisipDpn(data,awal,akhir) else akhir↑.next ← baru, baru↑.prev ← akhir, akhir↑.next ← awal, awal↑.prev ← akhir, endif endprocedure
procedure sisipTengah(input data : dataTamu; I/O awal,akhir : pointer); {I.S : Rekord data sudah terisi, user memilih menu sisip tengah} {F.S : Data disisipkan di tengah}
KAMUS : baru, bantu : pointer, ketemu
: Boolean,
sisipData : string,
ALGORITMA : if (awal = nil) then
IF-2/S1/2 – UNIKOM 2012
alloc(baru) baru↑.info ← data, awal ← baru, akhir ← baru, else input (sisipData), bantu ← awal, ketemu ← false, while (not ketemu) and (bantu ≠ nil) do if (bantu↑.info.nama = sisipData) then ketemu ← true, else bantu ← bantu↑.next, endif if (ketemu) then alloc(baru); baru↑.info ← data, if (bantu = akhir) then sisipBlkg(data,awal,akhir) else if (bantu = awal) then sisipDpn(data,awal,akhir) else baru↑.next ← bantu, baru↑.prev ← bantu↑.prev, bantu↑.prev↑.next ← baru, bantu↑.prev ← baru, endif endwhile endprocedure
procedure urutData(I/Oawal,akhir : pointer, input jenis : integer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Data ditamplikan secara berurut}
KAMUS :
IF-2/S1/2 – UNIKOM 2012
temp : dataTamu, i,j,min : pointer,
ALGORITMA : i← awal, while (I ≠ akhir) do min ← i, j ← i↑.next, while (j ≠ akhir) do case jenis of 1 :if (upcase(j↑.info.nama) < upcase(min↑.info.nama)) then min ← j, 2 :if (upcase(j↑.info.alamat) < upcase(min↑.info.alamat)) then min ← j, 3 : if (upcase(j↑.info.kamar) < upcase(min↑.info.kamar)) then min ← j, endcase j ← j↑.next,
case jenis of 1 :if (upcase(j↑.info.nama) < upcase(min↑.info.nama)) then min ← j, 2 :if (upcase(j↑.info.alamat) < upcase(min↑.info.alamat)) then min ← j, 3 : if (upcase(j↑.info.kamar) < upcase(min↑.info.kamar)) then min ← j, endcase endwhile temp ← i↑.info, i↑.info ← min↑.info, min↑.info ← temp, I ← i↑.next, endwhile endprocedure
IF-2/S1/2 – UNIKOM 2012
procedure lihatData(I/O awal,akhir : pointer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Data ditampilkan}
KAMUS : i : integer, bantu : pointer, opt2 : integer
ALGORITMA : if (awal = nil) then output('Pesan : Data Kosong. Tekan Enter Untuk Kembali !'), else opt2 ← 0, urutData(awal,akhir,1), while (opt2≠4) do bantu ← awal, i ← 1, while bantu ≠ akhir do output (bantu↑.info) i← i+1, bantu ← bantu↑.next, output (bantu↑.info) i← i+1, bantu ← bantu↑.next, endwhile input(opt2), if (opt2 < 1) or (opt2 > 4) then output('Option salah. tekan Enter untuk mengulang'), else if (opt2≠4) then urutData(awal,akhir,opt2); endif endif endwhile endprocedure
IF-2/S1/2 – UNIKOM 2012
procedure hpsBlkg(input data : dataTamu, I/O awal,akhir
: pointer)
{I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam rekord } {F.S : Data paling belakang dihapus}
KAMUS : phapus : pointer; backup : dataTamu;
ALGORITMA : phapus ← akhir, backup ← phapus↑.info, if (awal = akhir) then awal ← nil, akhir ← nil, else akhir ← phapus↑.prev, awal↑.prev ← akhir, akhir↑.next ← awal, endif dealloc(phapus); endprocedure
procedure hpsDpn(I/O backup : dataTamu, I/O awal,akhir : pointer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Data paling depan dihapus}
KAMUS : phapus : pointer, backup : dataTamu,
ALGORITMA : phapus ← awal, backup ← phapus↑.info,
if (awal = akhir) then awal ← nil,
IF-2/S1/2 – UNIKOM 2012
akhir ← nil, else awal ← phapus↑.next, awal↑.prev ← akhir, akhir↑.next ← awal, endif dealloc(phapus) end procedure
procedure hpsTengah(input data : dataTamu, I/O awal,akhir : pointer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam rekord } {F.S : Data ditengah dihapus}
KAMUS : phapus,bantu : pointer, X,i : integer,
ALGORITMA : if (awal = nil) then output('Data Masih Kosong') else input(X) endif
if (awal = akhir) or (x =1) then hpsDpn(data,awal,akhir) else bantu← awal, I ← 1, endif
while (i < x-1) and (bantu↑.next ≠ nil) do bantu ← bantu↑.next, phapus ← bantu↑.next, bantu↑.next ← phapus↑.next,
IF-2/S1/2 – UNIKOM 2012
phapus↑.next ← nil, dealloc(phapus) endwhile endprocedure
procedure menuSisip(I/O awal,akhir : pointer, I/O isi : Boolean, input data : dataTamu) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Data disisipkan sesuai input user}
KAMUS : menu2 : integer,
ALGORITMA : if isi = true then menu2← 0, while (menu2 ≠ 4) do input(menu2), case menu2 of 1 : sisipDpn(data,awal,akhir), 2 : sisipTengah(data,awal,akhir), 3 : sisipBlkg(data,awal,akhir), endcase if ( menu2 < 1) or (menu2 > 4 ) then output('Input Salah. Tekan Enter Untuk Mengulang'), endif if (menu2 > 0) and (menu2 < 4) then isi ← false, menu2 ← 4, endif endwhile else output('Pesan : Anda harus ISI DATA terlebih dahulu!'), endif endprocedure
procedure menuHapus(I/O plhHps :integer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record }
IF-2/S1/2 – UNIKOM 2012
{F.S : Data dihapus sesuai input user} KAMUS :
ALGORITMA : if (awal = nil) then output(‘Data Kosong’) else input(plhHps); case plhHps of 1 : hpsDpn(data,awal,akhir), 2 : hpsTengah(data,awal,akhir), 3 : hpsBlkg(data,awal,akhir), endcase endif endprocedure
procedure cariData(input awal:pointer; I/O data : dataTamu) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Menampilkan data yang dicari ada atau tidak}
KAMUS : bantu : pointer, dataCari : integer , ketemu : Boolean,
ALGORITMA : ketemu ← false, bantu ← awal, input(dataCari), while (ketemu = false) and (bantu ≠ nil) do if (bantu↑.info.kamar = dataCari) then ketemu ← true, else bantu ← bantu↑.next, endif
IF-2/S1/2 – UNIKOM 2012
endwhile
if (ketemu = true) then output (dataCari,' Ditemukan!') else output (dataCari,' Tidak ditemukan!'), endif endprocedure
procedure penghancuran( I/O backup : dataTamu, I/O awal,akhir : pointer) {I.S : Pointer Awal sudah terdefinisi, Data sudah ada dalam record } {F.S : Data dihapus satu per satu dengan metode hapus depan} KAMUS :
ALGORITMA : while (awal≠nil) do hpsDpn(backup,awal,akhir) endwhile endprocedure
ALGORITMA {Algoritma Utama} awal ← nil, akhir ← nil, isi ← false,
while menu ≠ 6 do input(menu) case (menu) of 1 : checkIn(data,isi), 2 : menuSisip(awal,akhir,isi,data), 3 : menuHapus(plhHps), 4 : cariData(awal,data), 5 : lihatData(awal,akhir), 6 : input(selesai), selesai← upcase(selesai), endcase
IF-2/S1/2 – UNIKOM 2012
endwhile endprogram
IF-2/S1/2 – UNIKOM 2012
{Dalam Bahasa Pascal - Program} program Ibis_Hotel; uses crt; const tarifInap = 250000; type dataTamu = record nama,alamat,kamar
: string;
umur,jmlKamar,jmlOrg,lamaInap,telp : integer; end;
pointer = ^tamu; tamu = record info
: dataTamu;
prev, next : pointer; end;
var //variable global awal, akhir, baru : pointer; data
: dataTamu;
biaya,harga,menu, plhSisip,plhHps : integer; selesai
: char;
isi
: boolean;
procedure ibis_header; begin writeln('-----------------------------------------'); writeln('|
Selamat Datang di Ibis Hotel
|');
writeln('|
Jl. Gatot Subroto Bandung
|');
writeln('-----------------------------------------'); write(); end;
//Prosedur Isi Data
IF-2/S1/2 – UNIKOM 2012
procedure checkIn (var data : dataTamu; var isi : boolean); begin if (isi = false) then begin ibis_header(); write('Nama
: '); readln(data.nama);
write('Alamat
: '); readln(data.alamat);
write('No. Telpon write('Umur write('Jumlah Tamu write('Kamar
: '); readln(data.telp); : '); readln(data.umur); : '); readln(data.jmlOrg); : '); readln(data.kamar);
write('Lama Menginap (hari): '); readln(data.lamaInap);
//hitung tarif harga := tarifInap; biaya := harga * data.lamaInap * data.jmlOrg;
writeln('-----------------------------------'); writeln('Biaya perOrang (hari) : Rp. ',harga); writeln('Total Biaya
: Rp. ',biaya);
writeln('-----------------------------------'); write('Pastikan Anda Memilih Menu TAMBAH DATA setelah memasukan data !'); isi := true; end else write ('Maaf Data sudah di input, tetapi belum di sisipkan.'); readln(); end;
//Prosedur Sisip Data Depan procedure sisipDpn(data : dataTamu; var awal,akhir : pointer); var baru : pointer; begin new(baru); baru^.info := data;
IF-2/S1/2 – UNIKOM 2012
if (awal = nil) then begin akhir := baru; end else begin baru^.next := awal; akhir^.prev := baru; end; awal := baru; akhir^.next := awal; awal^.prev := akhir; end;
//Prosedur Sisip Data Belakang procedure sisipBlkg(data : dataTamu; var awal,akhir : pointer); var baru : pointer; begin new(baru); baru^.info := data; if (awal = nil) then sisipDpn(data,awal,akhir) else begin akhir^.next := baru; baru^.prev := akhir; akhir := baru; akhir^.next := awal; awal^.prev := akhir; end; end;
//Prosedur Sisip Data Tengah procedure sisipTengah(data : dataTamu; var awal,akhir : pointer); var
IF-2/S1/2 – UNIKOM 2012
baru, bantu : pointer; ketemu
: boolean;
sisipData : string;
begin if (awal = nil) then sisipDpn(data,awal,akhir) else write('Sisip Sebelum Rekord Apa (Ketik Nama) '); readln(sisipData); bantu := awal; ketemu := false; while (not ketemu) and (bantu nil) do begin if (bantu^.info.nama = sisipData) then ketemu := true else bantu := bantu^.next end;
if (ketemu) then begin new(baru); baru^.info := data; if (bantu = akhir) then sisipBlkg(data,awal,akhir) else begin if (bantu = awal) then sisipDpn(data,awal,akhir) else begin // Proses Sisip Tengah baru^.next := bantu; baru^.prev := bantu^.prev; bantu^.prev^.next := baru; bantu^.prev := baru; end;
IF-2/S1/2 – UNIKOM 2012
end; end else writeln('Maaf ! Data Tidak Ditemukan'); end;
//Procedure pengurutan data procedure urutData(var awal,akhir : pointer; jenis : integer); var temp : dataTamu; i,j,min : pointer; begin i:=awal; while (i akhir) do begin min := i; j := i^.next; while (j akhir) do begin case jenis of 1 :begin if (upcase(j^.info.nama) < upcase(min^.info.nama)) then min:=j; end; 2 :begin if (upcase(j^.info.alamat) < upcase(min^.info.alamat)) then min:=j; end; 3 :begin if (upcase(j^.info.kamar) < upcase(min^.info.kamar)) then min:=j; end; end; j:=j^.next; end; case jenis of
IF-2/S1/2 – UNIKOM 2012
1 :begin if (upcase(j^.info.nama) < upcase(min^.info.nama)) then min:=j; end; 2 :begin if (upcase(j^.info.alamat) < upcase(min^.info.alamat)) then min:=j; end; 3 :begin if (upcase(j^.info.kamar) < upcase(min^.info.kamar)) then min:=j; end; end; temp := i^.info; i^.info:= min^.info; min^.info:=temp; i:=i^.next; end; end;
//Prosedur Lihat Data procedure lihatData(var awal,akhir : pointer); var i : integer; bantu : pointer; opt2 : integer;
begin clrscr; if (awal = nil) then begin write('Pesan : Data Kosong. Tekan Enter Untuk Kembali !'); end else begin opt2:=0;
IF-2/S1/2 – UNIKOM 2012
urutData(awal,akhir,1); while (opt2 4) do begin clrscr; bantu := awal; writeln('|Ibis Hotel - Gatot Subroto Bandung -----|------|-------------|-------|------|'); writeln('|NO|
NAMA
| ALAMAT | TELEPON | UMUR | JUMLAH
TAMU | KAMAR | INAP |'); writeln('|--|------------|-----------|------------|------|-------------|-------|------|'); i:=1; while bantu akhir do //Menampilkan Data Dari Simpul awal sampai simpul akhir 1 begin gotoxy(1,i+3); write('|',i); gotoxy(4,i+3); write('|',bantu^.info.nama); gotoxy(17,i+3); write('|',bantu^.info.alamat); gotoxy(29,i+3); write('|','(022)',bantu^.info.telp); gotoxy(42,i+3); write('|',bantu^.info.umur,' thn'); gotoxy(49,i+3); write('|',bantu^.info.jmlOrg,' orang'); gotoxy(63,i+3); write('|',bantu^.info.kamar); gotoxy(71,i+3); write('|',bantu^.info.lamaInap,' hari'); gotoxy(78,i+3); write('|'); i:=i+1; bantu:=bantu^.next; end; //Menampilkan sisa data gotoxy(1,i+3); write('|',i); gotoxy(4,i+3); write('|',bantu^.info.nama); gotoxy(17,i+3); write('|',bantu^.info.alamat); gotoxy(29,i+3); write('|','(022)',bantu^.info.telp); gotoxy(42,i+3); write('|',bantu^.info.umur,' thn'); gotoxy(49,i+3); write('|',bantu^.info.jmlOrg,' orang'); gotoxy(63,i+3); write('|',bantu^.info.kamar); gotoxy(71,i+3); write('|',bantu^.info.lamaInap,' hari');
IF-2/S1/2 – UNIKOM 2012
gotoxy(78,i+3); write('|'); i:=i+1; bantu:=bantu^.next;
writeln; writeln('|--|------------|-----------|------------|------|-------------|-------|-----|'); writeln; writeln('1. Urut Berdasarkan Nama'); writeln('2. Urut Berdasarkan Alamat'); writeln('3. Urut Berdasarkan Kamar'); writeln('4. Kembali'); write('Pilih Menu : ');read(opt2); if (opt24) then begin writeln('Option salah. Tekan ''Enter'' untuk mengulang'); readln; end else begin if (opt24) then urutData(awal,akhir,opt2); end; end; end; end;
//Prosedur Hapus Data Belakang procedure hpsBlkg(data : dataTamu; var awal,akhir var phapus : pointer; backup : dataTamu; begin phapus := akhir; backup := phapus^.info;
: pointer);
IF-2/S1/2 – UNIKOM 2012
if (awal = akhir) then begin awal := nil; akhir := nil; end else begin akhir := phapus^.prev; awal^.prev := akhir; akhir^.next := awal; end; dispose(phapus); end;
//Prosedur Hapus Data Depan procedure hpsDpn(var backup : dataTamu;var awal,akhir : pointer); var phapus : pointer;
begin phapus := awal; backup := phapus^.info; if (awal = akhir) then begin awal := nil; akhir := nil; end else begin phapus^.next := awal; awal^.prev := akhir; akhir^.next := awal; end; dispose(phapus); end;
IF-2/S1/2 – UNIKOM 2012
//Prosedur Hapus Data Tengah procedure hpsTengah(data : dataTamu; var awal,akhir : pointer); var phapus,bantu : pointer; X,i : integer;
begin if (awal = nil) then writeln('Data Masih Kosong') else begin write('Hapus Data Yang ke - ? ');readln(X); if (awal = akhir) or (x = 1) then hpsDpn(data,awal,akhir) else begin bantu := awal; i:=1; while (i < x-1) and (bantu^.next akhir) do bantu := bantu^.next; phapus := bantu^.next; bantu^.next:=phapus^.next; phapus^.next:=nil; dispose(phapus); end; end; end;
//Prosedur Menu Sisip procedure menuSisip(var awal,akhir : pointer; var isi:boolean; data : dataTamu); var menu2 : integer; begin if isi = true then begin menu2:= 0;
IF-2/S1/2 – UNIKOM 2012
while (menu2 4) do begin clrscr; ibis_header; writeln('Tambah Data'); writeln(); writeln('1. Tambah Data Depan '); writeln('2. Tambah Data Tengah '); writeln('3. Tambah Data Belakang'); writeln('4. Kembali
');
writeln; write('Input Pilihan Anda [1/2/3/4] : '); readln(menu2);
case menu2 of 1 : sisipDpn(data,awal,akhir); 2 : sisipTengah(data,awal,akhir); 3 : sisipBlkg(data,awal,akhir); end;
if ( menu2 < 1) or (menu2 > 4 ) then begin Writeln('Input Salah. Tekan Enter Untuk Mengulang'); readln; end;
if (menu2 > 0) and (menu2 < 4) then begin isi:=false; menu2:=4; end; end; end else begin write('Pesan : Anda harus ISI DATA terlebih dahulu!'); readln; clrscr;
IF-2/S1/2 – UNIKOM 2012
end; end;
//procedure menu hapus procedure menuHapus(var plhHps :integer); begin clrscr; if (awal = nil) then begin writeln('PESAN : '); writeln('Tidak Ada Rekord yang Tersimpan.'); write('Tekan Enter Untuk Kembali.'); readln; end else begin ibis_header; writeln('Hapus Data
');
writeln(); writeln('1. Hapus Depan '); writeln('2. Hapus Tengah '); writeln('3. Hapus Belakang'); writeln('4. Kembali
');
writeln; write('Input Pilihan Anda [1/2/3/4] : '); readln(plhHps);
case plhHps of 1 : hpsDpn(data,awal,akhir); 2 : hpsTengah(data,awal,akhir); 3 : hpsBlkg(data,awal,akhir); end; end; end;
//Procedure Cari Data berdasarkan nomer kamar procedure cariData(awal:pointer; var data : dataTamu);
IF-2/S1/2 – UNIKOM 2012
var bantu : pointer; dataCari : shortstring; ketemu : boolean;
begin ketemu := false; bantu := awal; ibis_header(); write('Cari Berdasarkan Nomor Kamar : '); readln(dataCari); while (ketemu = false) and (bantu akhir) do if (bantu^.info.kamar = dataCari) then ketemu := true else bantu := bantu^.next;
if (ketemu = true) then begin writeln(); writeln('Kamar dengan nomor ',dataCari,' Ditemukan!'); writeln(); writeln('Berikut adalah data lengkapnya :'); writeln(); writeln('Nama
: ',bantu^.info.nama);
writeln('Alamat
: ',bantu^.info.alamat);
writeln('No.Telp
: ',bantu^.info.telp);
writeln('Umur
: ',bantu^.info.umur);
writeln('Jumlah Tamu writeln('Kamar writeln('Lama Inap
: ',bantu^.info.jmlOrg);
: ',bantu^.info.kamar); : ',bantu^.info.lamaInap);
writeln('-------------------------------------'); write('Ibis Hotel - Gatot Subroto Bandung --'); readln; end else begin
IF-2/S1/2 – UNIKOM 2012
write('Maaf ! Kamar dengan nomor ',dataCari,' Tidak ditemukan!'); readln; end; end;
//prosedur penghancuran procedure penghancuran(var backup:dataTamu; var awal,akhir : pointer); begin while (awalnil) do hpsDpn(backup,awal,akhir); end;
//Program Utama begin awal := nil; akhir := nil; isi := false;
while menu 6 do begin clrscr; ibis_header; gotoxy(1,6); writeln('1. Isi Data
|');
gotoxy(1,7); writeln('2. Tambah Data gotoxy(1,8); writeln('3. Hapus Data gotoxy(22,6);writeln('4. Cari Data gotoxy(22,7);writeln('5. Tampil Data gotoxy(22,8);writeln('6. Keluar
|'); |'); |'); |'); |');
gotoxy(1,9); writeln; write('Input Pilihan Anda [1/2/3/4/5/6] : '); readln(menu); clrscr();
case (menu) of 1 : begin clrscr; checkIn(data,isi); end;
IF-2/S1/2 – UNIKOM 2012
2 : begin clrscr; menuSisip(awal,akhir,isi,data); end;
3 : begin clrscr; menuHapus(plhHps); end;
4 : begin; clrscr; cariData(awal,data); end;
5 : begin clrscr; lihatData(awal,akhir); readln; end;
6 : begin write('Pesan : Keluar dari program Ibis Hotel ? [Y/T] ');readln(selesai); selesai:=upcase(selesai); end; end; end; end.
IF-2/S1/2 – UNIKOM 2012
Tampilan Awal :
Validasi Isi Data dan Tambah Data :
Tampilan Input Data :
IF-2/S1/2 – UNIKOM 2012
Tampilan Tambah Data :
Tampilan ‘Tampil Data’ Terurut berdasarkan Nama :
Tampilan ‘Tampil Data’ Terurut berdasarkan Kamar :
IF-2/S1/2 – UNIKOM 2012
Tampilan ‘Tampil Data’ Terurut berdasarkan Alamat:
Tampilan ‘Pencarian Data’ Terurut berdasarkan Nomor Kamar :
View more...
Comments