Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Nama : M Syahrul Surya Putra
- //NIM : 10119128
- //Kelas : IF 4
- program DataPerpustakaan;
- {I.S. : user memasukkan nomor menu}
- {F.S. : menampilkan hasil sesuai menu yang dipilih}
- uses crt;
- const
- MaksBuku = 5;
- type
- ArrayBuku =
- record
- Judul : string;
- Penulis : string;
- Bahasa : string;
- Kategori : string;
- Jumlah : integer;
- end;
- Bku = array [1..MaksBuku] of ArrayBuku;
- var
- Buku : Bku;
- Pilih : integer;
- procedure PenciptaanBuku(var Buku : Bku);
- {I.S. : elemen record array Buku diberi harga awal agar siap digunakan}
- {F.S. : menghasilkan array Buku yang siap digunakan}
- var
- i : integer;
- begin
- for i := 1 to MaksBuku do
- begin
- Buku[i].Judul := '/';
- Buku[i].Penulis := '/';
- Buku[i].Bahasa := '/';
- Buku[i].Kategori := '/';
- Buku[i].Jumlah := 0;
- end; //endfor
- end; //endprocedure
- procedure IsiBuku(var Buku : Bku);
- {I.S. : user memasukkan elemen pada record array buku[1..MaksBuku]}
- {F.S. : menghasilkan array buku[1..MaksBuku] yang sudah dimasukkan user}
- var
- i : integer;
- begin
- writeln('Pengisian Data Perpustakaan');
- writeln('---------------------------');
- writeln('Judul Buku : ');
- writeln('Penulis Buku : ');
- writeln('Bahasa Buku : ');
- writeln('Kategori Buku : ');
- writeln('Jumlah Buku : ');
- for i := 1 to MaksBuku do
- begin
- gotoxy(17,3); clreol; gotoxy(17,4); clreol; gotoxy(17,5); clreol;
- gotoxy(17,6); clreol; gotoxy(17,7); clreol;
- gotoxy(17,3); readln(Buku[i].Judul);
- gotoxy(17,4); readln(Buku[i].Penulis);
- gotoxy(17,5); readln(Buku[i].Bahasa);
- gotoxy(17,6); readln(Buku[i].Kategori);
- gotoxy(17,7); readln(Buku[i].Jumlah);
- end; //endfor
- end; //endprocedure
- procedure MaxMinJumlah(Buku : Bku);
- {I.S. : record array buku sudah terdefinisi}
- {F.S. : menghasilkan nilai maksimum dan minimum dari jumlah buku}
- var
- i,Min,Max : integer;
- begin
- i := 1;
- Max := Buku[i].Jumlah;
- Min := Buku[i].Jumlah;
- for i := 2 to MaksBuku do
- begin
- if(Max < Buku[i].Jumlah)
- then
- begin
- Max := Buku[i].Jumlah;
- end;
- if(Min > Buku[i].Jumlah)
- then
- begin
- Min := Buku[i].Jumlah;
- end;
- end; //endfor
- textcolor(yellow);
- writeln('Jumlah Buku yang Paling Sedikit : ',Min);
- writeln('Jumlah Buku yang Paling Banyak : ',Max);
- end; //endprocedure
- procedure InsertionSort(var Buku : Bku);
- {I.S. : record array buku sudah terdefinisi}
- {F.S. : menghasilkan record array buku yang tersort}
- var
- i, j, index1 : integer;
- index2,index3,index4,index5 : string;
- begin
- for i := 2 to MaksBuku do
- begin
- index1 := Buku[i].Jumlah;
- index2 := Buku[i].Judul;
- index3 := Buku[i].Penulis;
- index4 := Buku[i].Bahasa;
- index5 := Buku[i].Kategori;
- j := i;
- while ((j > 1) and (Buku[j-1].Jumlah > index1)) do
- begin
- Buku[j].Jumlah := Buku[j-1].Jumlah;
- Buku[j].Judul := Buku[j-1].Judul;
- Buku[j].Penulis := Buku[j-1].Penulis;
- Buku[j].Bahasa := Buku[j-1].Bahasa;
- Buku[j].Kategori := Buku[j-1].Kategori;
- j := j - 1;
- end; //endwhile
- Buku[j].Jumlah := index1;
- Buku[j].Judul := index2;
- Buku[j].Penulis := index3;
- Buku[j].Bahasa := index4;
- Buku[j].Kategori := index5;
- end; //endfor
- write('Data telah disort'); readln;
- end; //endprocedure
- procedure TampilData(Buku : Bku);
- {I.S. : record array buku sudah terdefinisi}
- {F.S. : menampilkan elemen dari record array buku}
- var
- i : integer;
- begin
- clrscr;
- writeln(' DAFTAR BUKU PERPUSTAKAAN ');
- writeln('-----------------------------------------------------------------------------------------');
- writeln('| No | Judul | Penulis | Bahasa | Kategori | Jumlah |');
- writeln('-----------------------------------------------------------------------------------------');
- for i := 1 to MaksBuku do
- begin
- textcolor(yellow);
- gotoxy(1,i+4);
- write('| | | | | | |');
- textcolor(yellow);
- gotoxy(3,i+4); write(i);
- gotoxy(8,i+4); write(Buku[i].Judul);
- gotoxy(30,i+4); write(Buku[i].Penulis);
- gotoxy(50,i+4); write(Buku[i].Bahasa);
- gotoxy(65,i+4); write(Buku[i].Kategori);
- gotoxy(80,i+4); write(Buku[i].Jumlah);
- end; //endfor
- textcolor(15);
- writeln;
- writeln('-----------------------------------------------------------------------------------------');
- writeln;
- MaxMinJumlah(Buku);
- end; //endprocedure
- procedure SequentialSearch(Buku : Bku);
- {I.S. : record array buku sudah terdefinisi}
- {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan}
- var
- i,n : integer;
- DataCari : string;
- begin
- TampilData(Buku);
- writeln;
- write('Judul Buku : '); readln(DataCari);
- i := 1;
- n := MaksBuku;
- Buku[n+1].Judul := DataCari;
- while (Buku[i].Judul <> DataCari) do
- i := i + 1; //endwhile
- if(i < MaksBuku + 1)
- then
- writeln(DataCari,' ditemukan pada nomor ke-',i)
- else
- writeln(DataCari,' tidak ditemukan'); //endif
- readln;
- end; //endprocedure
- procedure Penghancuran(var Buku : Bku);
- {I.S. : record array buku sudah terdefinisi}
- {F.S. : menghasilkan record array buku yang telah dihancurkan}
- var
- i : integer;
- begin
- for i := 1 to MaksBuku do
- begin
- Buku[i].Judul := '/';
- Buku[i].Penulis := '/';
- Buku[i].Bahasa := '/';
- Buku[i].Kategori := '/';
- Buku[i].Jumlah := 0;
- end; //endfor
- end; //endprocedure
- procedure MenuPilihan(var Pilih : integer);
- {I.S. : user memasukkan nomor menu}
- {F.S. : menghasilkan nomor menu yang dipilih}
- begin
- clrscr;
- textcolor(yellow);
- writeln('MENU PILIHAN');
- writeln('************');
- writeln('1. Isi Data Buku');
- writeln('2. Tampil Data Buku');
- writeln('3. Sort Data Buku (Jumlah)');
- writeln('4. Cari Judul Buku');
- writeln('0. Keluar');
- write('Pilihan anda? '); readln(Pilih);
- //validasi menu
- while(Pilih < 0) or (Pilih > 4) do
- begin
- writeln('Menu Pilihan Harus Antara 0-2, ulangi! Tekan Enter!');
- readln;
- gotoxy(1,7); clreol;
- gotoxy(15,6); clreol; readln(Pilih);
- end; //endwhile
- end; //endprocedure
- //badan program utama
- begin
- PenciptaanBuku(Buku);
- repeat
- clrscr;
- MenuPilihan(Pilih);
- textcolor(15);
- case (Pilih) of
- 1 : begin
- clrscr;
- IsiBuku(Buku);
- end;
- 2 : begin
- clrscr;
- if (Buku[1].Judul = '/')
- then
- begin
- write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
- readln;
- end
- else
- begin
- TampilData(Buku);
- readln;
- end;
- end;
- 3 : begin
- clrscr;
- if (Buku[1].Judul = '/')
- then
- begin
- write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
- readln;
- end
- else
- InsertionSort(Buku);
- end;
- 4 : begin
- clrscr;
- if (Buku[1].Judul = '/')
- then
- begin
- write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
- readln;
- end
- else
- SequentialSearch(Buku);
- end;
- end; //endcase
- until (Pilih = 0);
- Penghancuran(Buku);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement