Circular Double Linked List

May 3, 2020 | Author: Anonymous | Category: N/A
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF