Tinggalkan pesan mu disana =>>

Jumat, 12 Juni 2015

Contoh Program Link List Toko Bunga pada Pascal menggunkan Gotoxy

LinkedList adalah salah satu bentuk struktur data, berisi kumpulan data
(node) yang tersusun secara sekuensial, saling sambungmenyambung,
dinamis dan terbatas.
Dalam ilmu komputer merupakan sebuah struktur data yang digunakan untuk menyimpan sejumlah objek data biasanya secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemen data yang tersimpan dalam senarai dilakukan secara lebih efektif. Pada praktiknya sebuah struktur data memiliki elemen yang digunakan untuk saling menyimpan rujukan antara satu dengan lainnya sehingga membentuk sebuah senarai abstrak, tiap-tiap elemen yang terdapat pada senarai abstrak ini seringkali disebut sebagai node. karena mekanisme rujukan yang saling terkait inilah disebut sebagai senarai berantai.

- Linked List sering disebut juga Senarai Berantai
- Linked List saling terhubung dengan bantuan variabel pointer
- Masing-masing data dalam Linked List disebut dengan node (simpul) yang
menempati alokasi memori secara dinamis dan biasanya berupa struct
yang terdiri dari beberapa field.


 Langsung saja ke source codenya,, berikut ini source codenya...

program databunga;
uses crt;
type poinjuk = ^lokasi;
      lokasi = record
      bunga : string;
      nama: string;
      banyak: integer;
      berikut : poinjuk;
     end;

var awal,data,akhir : poinjuk;
    f,s,d     : integer;
    pil,pilih : char;
    larik : lokasi;
    cari : string;

Procedure menu;
begin
 clrscr;
 writeln(' ------------------------ Data Toko Bunga -------------------------- ');
 writeln(' ------------------------------------------------------------------- ');
 writeln;
 writeln('   1. Tambah data pembeli       4. Cari data pembeli ');
 writeln('   2. Tampilkan data pembeli    5. pembelian terbesar dan terkecil');
 writeln('   3. Hapus data                6. Rata-Rata pembelian');writeln;
 writeln('                            0. Keluar');
 writeln;
 writeln(' -------------------------------------------------------------------');
 write('   Pilihan : '); readln(pil);
end;

procedure databaru(var baru : poinjuk; namanya : string;bunganya : string; banyaknya : integer);
Begin
 new(baru);
 baru^.nama:=namanya;
 baru^.bunga:=bunganya;
 baru^.banyak:=banyaknya;
 baru^.berikut:=nil;
end;

procedure tambah;
begin
 clrscr;
 writeln('------ Masukkan Data Baru ------');
 writeln;

 repeat
  new(data);
  write('Nama Pembeli        : '); readln(larik.nama);
  write('Nama Bunga          : '); readln(larik.bunga);
  write('Jumlah Beli         : '); readln(larik.banyak);
  databaru(data,larik.nama,larik.bunga,larik.banyak);
  if awal=nil then
   begin
    awal:=data;
    akhir:=data;
   end
  else
   begin
    akhir^.berikut:=data;
    akhir:=data;
    akhir^.berikut:=nil;
   end;
   writeln;
  write('Tambah Data Lagi[Y/T] : ');
  readln(pilih);
  writeln;
  pilih:=upcase(pilih);
 until pilih='T';
end;

procedure lihat;
var banyak : integer;
begin
clrscr;
s:=0;
banyak:=0;
data:=awal;
writeln('------------------ Daftar Data Toko Bunga ------------------');
writeln('|----------------------------------------------------------|');
writeln('| No |      Nama     |       Bunga        |     Jumlah     |');
writeln('|----------------------------------------------------------|');
       //123456789012345678901234567890123456789012345678901234567890
while data<> nil do
 begin
  s:=s+1;
  gotoxy(1,4+s);
writeln('|    |               |                    |                |');
  gotoxy(3,4+s);
  writeln(s);
  gotoxy(8,4+s);
  writeln(data^.nama);
  gotoxy(24,4+s);
  writeln(data^.bunga);
  gotoxy(51,4+s);
  writeln(data^.banyak);
  banyak:=banyak+data^.banyak;
  data:=data^.berikut;
 end;
writeln('|----------------------------------------------------------|');
writeln('| Total bunga dibeli = ',banyak);
readkey;

end;

procedure caridata;
var
   terus : boolean;
begin
clrscr;
writeln('--------- Cari Data Pembeli Bunga ---------');
writeln;
write('Nama Pembeli yang ingin dicari : ');
readln(cari);
writeln;
data:=awal;
terus:=false;
while (data<>nil) and (terus=false) do
 begin
  if data^.nama=cari then
   begin
    terus:=true;
    writeln('Nama ',cari,' Ditemukan : ');
    writeln('Nama Bunga  : ',data^.bunga);
    writeln('Jumlah      : ',data^.banyak);
   end
  else
    data:=data^.berikut;
 end;
if data= nil then writeln('Nama ',cari,' Tidak ditemukan ! ');
readkey;
end;

procedure hapus;
var
   terus : boolean;
   bantu : poinjuk;
begin
clrscr;
writeln('--------- Hapus Data Pembeli Bunga ---------');
writeln;
write('Nama Pembeli yang ingin dhapus  : ');
readln(cari);
writeln;
data:=awal;
terus:=false;

if data^.nama=cari then
 begin
 awal:=data^.berikut;
 dispose(data);
 writeln('Nama  ',cari,' Berhasil dihapus !  ');
 end
else
begin
 while (data<>nil) and (terus=false) do
  begin
  if data^.berikut^.nama = cari then
   begin
    terus:=true;
    bantu:=data^.berikut;
    data^.berikut:=data^.berikut^.berikut;
    dispose(bantu);
    writeln('Nama ',cari,' Berhasil dihapus ! ');
   end;
    data:=data^.berikut;
 end;
end;

if data= nil then writeln('Nama ',cari,' Tidak ditemukan ! ');
readkey;
end;


procedure terbanyakdantersedikit;
var min,max : poinjuk;
begin
 clrscr;
 data:=awal;
 max:=awal;
 min:=awal;
 while data<>nil do
  begin
   if max^.banyak < data^.banyak then max:=data;
   if min^.banyak > data^.banyak then min:=data;
  data:=data^.berikut;
 end;
 if awal=nil then
  writeln('data masih kosong !! ')
 else
  begin
    writeln('Pembeli dengan pembelian terbesar adalah : ',max^.nama);
    writeln('                         Nama Bunga      : ',max^.bunga);
    writeln('                         Jumlah          : ',max^.banyak);
    writeln('------------------------------------------------------------');
    writeln('Pembeli dengan pembelian terkecil adalah : ',min^.nama);
    writeln('                         Nama Bunga      : ',min^.bunga);
    writeln('                         Jumlah          : ',min^.banyak);
   end;
 readkey;
end;

procedure rata;
var rata2,rata3 : real;
   n : integer;
begin
 clrscr;
 data:=awal;
 rata2:=0;
 n:=0;
 while data<>nil do
  begin
  rata2:=rata2+data^.banyak;
  n:=n+1;
  data:=data^.berikut;
 end;
 if awal=nil then
  writeln('Data Masih Kosong !! ')
 else
  begin
    rata3:=rata2/n;
    writeln('Rata-rata pembelian keseluruhan adalah : ',rata3:0:2);
   end;
 readkey;
end;


BEGIN

repeat

menu;
case pil of
'1' : tambah ;
'2' : lihat ;
'3' : hapus;
'4' : caridata;
'5' : terbanyakdantersedikit;
'6' : rata ;
'0' : exit;

end;
until pil ='0';
END.


Hasil Outputnya :



Semoga Membantu dan bermanfaat



More Info : Visit

 

Tidak ada komentar: