RSS

Tugas Kelompok Struktur Data (Program Pendataan Buku dengan Program Pascal)

STRUKTUR DATA
“Program Pendataan Kepemilikan Buku”











Dosen Pembimbing:
 Andi Farmadi, S.Si, M.T



Oleh :
Nama Kelompok
Muhammad Ripani
(J1F113021)

   Samsudin
(J1F113043)

   Fahmi
(J1F113208)

   Dedi Kurniawan
(J1F113231)

   Cholik Fadlollah
(J1F112043)



































KEMENTERIAN PENDIDIKAN NASIONAL
UNIVERSITAS LAMBUNG MANGKURAT
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
PROGRAM STUDI ILMU KOMPUTER
BANJARBARU
2014
A.    Source Code Program
Program pendataanbuku;      {Program pendataan jumlah buku kepemilikan seseorang}
uses wincrt;                {Program ini dibuat menggunakan Turbo Pascal For Windows 1.5}
type penunjuk = ^simpanan;
      simpanan = record
      jumlah : integer;
      nama: string;
      namabuku: string;
      next : penunjuk;
     end;

var awal,data,akhir : penunjuk;
    i,j,n     : integer;
    pil,pilih : char;
    sementara : simpanan;
    cari : string;

const garis = ('-------------------------------------------------------------------------------');


Procedure awalmulai;
Begin
         clrscr;
  gotoxy(0,4);
  writeln;
         writeln(garis);
  writeln('                               Selamat Datang di');
         writeln('                      "Program Pendataan Kepemilikan Buku"');
  writeln(garis);
         writeln('              Dibuat untuk memenuhi tugas mata kuliah Struktur Data');
  writeln('                      Dosen Pembimbing : Andi Farmadi,S.Si,M.T');
         writeln(garis);
         writeln('                            No.  Kelompok: 10 (Sepuluh)');
         writeln('                 Nama Kelompok: 1) Muhammad Ripani   (J1F113021)');
  writeln('                                2) Samsudin          (J1F113043)');
  writeln('                                3) Fahmi             (J1F113208)');
         writeln('                                4) Dedi Kurniawan    (J1F113231)');
  writeln('                                5) Cholik Fadlollah  (J1F112043)');
         writeln;
         writeln(garis);
         writeln('                                     Tekan Enter Untuk Melanjutkan ');
   writeln(garis);
         gotoxy(56,20);
         write('');
         readln;
end;



Procedure menu;
begin
 clrscr;
 writeln(' |------------------------------------------------------|');
 writeln(' !========|| PENDATAAN JUMLAH BUKU SESEORANG ||=========!');
 writeln(' |------------------------------------------------------|');
 writeln(' |                       MENU                           |');
 writeln(' | 1. Tambah data buku                                  |');
 writeln(' | 2. Tampilkan data buku yang sudah ditambah           |');
 writeln(' | 3. Hapus data buku yang sudah ada                    |');
 writeln(' | 4. Cari buku                                         |');
 writeln(' | 5. Daftar nama yang memiliki banyak buku             |');
 writeln(' | 6. Statistik                                         |');
 writeln(' | 0. Keluar                                            |');
 writeln(' |                                                      |');
 writeln(' !======================================================!');
 writeln(' | Pilih Menu [0..6] : [ ]                              |');
 writeln(' !======================================================!');
end;


Procedure databaru(var baru : penunjuk; jumlahbuku : integer; namaorang : string; namabukuorang : string);
Begin
 new(baru);
 baru^.nama:=namaorang;
 baru^.namabuku:=namabukuorang;
 baru^.jumlah:=jumlahbuku;
 baru^.next:=nil;
end;


Procedure tambahdata;
begin
 clrscr;
 writeln('=======|| Masukkan data Baru ||=======');
 writeln;

 repeat
  new(data);
  writeln('--------------------------------------');
  write('Nama Pemilik   : '); readln(sementara.nama);
  write('Nama Buku      : '); readln(sementara.namabuku);
  write('Jumlah Buku    : '); readln(sementara.jumlah);
  databaru(data,sementara.jumlah,sementara.nama,sementara.namabuku);
  if awal=nil then
   begin
    awal:=data;
    akhir:=data;
   end
  else
   begin
    akhir^.next:=data;
    akhir:=data;
    akhir^.next:=nil;
   end;
   writeln('Data telah ditambahkan');
   writeln;
  write('Tambah data lagi [Y/T] : ');
  readln(pilih);
  writeln;
  pilih:=upcase(pilih);
 until pilih='T';
end;


Procedure lihatdata;
var banyak : integer;
begin
clrscr;
j:=0;
banyak:=0;
data:=awal;
writeln('|==========================================================|');
writeln('!-------------- DAFTAR KEPEMILIKAN BUKU  ------------------!');
writeln('|==========================================================|');
writeln('| No |      Nama     |    Nama Buku        |  Jumlah Buku  |');
writeln('|----------------------------------------------------------|');
while data<> nil do
 begin
  j:=j+1;
  gotoxy(1,5+j);
  writeln('|    |               |                     |               |');
  gotoxy(3,5+j);
  writeln(j);
  gotoxy(8,5+j);
  writeln(data^.nama);
  gotoxy(24,5+j);
  writeln(data^.namabuku);
  gotoxy(48,5+j);
  writeln(data^.jumlah);
  banyak:=banyak+data^.jumlah;
  data:=data^.next;
 end;
writeln('|----------------------------------------------------------|');
writeln('|                               Total Buku |               |');
begin
gotoxy(48,7+j);
writeln(banyak);
end;
writeln('|==========================================================|');
readkey;
end;


Procedure hapusdata;
var
   terus : boolean;
   bantu : penunjuk;
   banyak: integer;
begin
clrscr;
j:=0;
banyak:=0;
data:=awal;
writeln('|==========================================================|');
writeln('!-------------- DAFTAR KEPEMILIKAN BUKU  ------------------!');
writeln('|==========================================================|');
writeln('| No | Nama Pemilik  |    Nama Buku        |  Jumlah Buku  |');
writeln('|----------------------------------------------------------|');
while data<> nil do
 begin
  j:=j+1;
  gotoxy(1,5+j);
  writeln('|    |               |                     |               |');
  gotoxy(3,5+j);
  writeln(j);
  gotoxy(8,5+j);
  writeln(data^.nama);
  gotoxy(24,5+j);
  writeln(data^.namabuku);
  gotoxy(48,5+j);
  writeln(data^.jumlah);
  banyak:=banyak+data^.jumlah;
  data:=data^.next;
 end;
writeln('|----------------------------------------------------------|');
writeln;
writeln;

writeln('||================== Hapus Data Buku =====================||');
writeln;
write('Nama pemilik yang ingin dihapus : ');
readln(cari);
writeln;
data:=awal;
terus:=false;

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

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

   Procedure caridata;
var
   terus : boolean;
begin
clrscr;
writeln('=================|| Cari Data Pemilik Buku ||==============');
writeln;
write('Nama pemilik yang 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        : ',data^.nama);
    writeln('            Nama Buku   : ',data^.namabuku);
    writeln('            Jumlah Buku : ',data^.jumlah);
   end
  else
    data:=data^.next;
 end;
if data= nil then writeln('Nama ',cari,' Tidak ditemukan ! ');
readkey;
end;


procedure terbanyakdantersedikit;
var min,max : penunjuk;
begin
 clrscr;
 data:=awal;
 max:=awal;
 min:=awal;
 while data<>nil do
  begin
   if max^.jumlah < data^.jumlah then max:=data;
   if min^.jumlah > data^.jumlah then min:=data;
  data:=data^.next;
 end;
 if awal=nil then
  writeln('Data masih kosong ! ')
 else
  begin
    writeln('               PEMILIK DENGAN JUMLAH BUKU TERBANYAK            ');
    writeln;
    writeln('Nama pemilik dengan buku terbanyak : ',max^.nama);
    writeln('                      Nama Buku    : ',max^.namabuku);
    writeln('                      Jumlah Buku  : ',max^.jumlah);
    writeln('------------------------------------------------------------');

    writeln;
    writeln('              PEMILIK DENGAN JUMLAH BUKU TERSEDIKIT  ');
    writeln;
    writeln('Nama pemilik dengan buku tersedikit: ',min^.nama);
    writeln('                      Nama Buku    : ',min^.namabuku);
    writeln('                      Jumlah Buku  : ',min^.jumlah);
   end;
 readkey;
end;


Procedure ratarata;
var rata2,rata3 : real;
   n : integer;
begin
 clrscr;
 data:=awal;
 rata2:=0;
 n:=0;
 while data<>nil do
  begin
  rata2:=rata2+data^.jumlah;
  n:=n+1;
  data:=data^.next;
 end;
 if awal=nil then
  writeln('Data Masih Kosong ! ')
 else
  begin
    rata3:=rata2/n;
    writeln('Rata-rata jumlah buku dari semua data : ',rata3:0:2);
   end;
 readkey;
end;


Begin
awalmulai;
repeat
menu;
gotoxy(25,14);
write('');
readln(pil);
case pil of
'1' : tambahdata ;
'2' : lihatdata ;
'3' : hapusdata;
'4' : caridata;
'5' : terbanyakdantersedikit;
'6' : ratarata;
'0' : exit;
end;
until pil ='0';
End.





B.     Output



Gambar 1. Tampilan saat program pertama kali dijalankan


Gambar 2. Tampilan menu utama


Gambar 3. Tampilan pada menu 1 dan penginputan datanya


Gambar 4. Tampilan pada menu 2


Gambar 5. Tampilan pada menu 3 dan proses hapus datanya

Gambar 6. Tampilan pada menu 4 dan proses pencarian datanya


Gambar 7. Tampilan pada menu 5


Gambar 8. Tampilan pada menu 6


Dari pada bingung
Download program dan laporannya disini



  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar