Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. //Nama : M Syahrul Surya Putra
  2. //NIM : 10119128
  3. //Kelas : IF 4
  4.  
  5. program DataPerpustakaan;
  6. {I.S. : user memasukkan nomor menu}
  7. {F.S. : menampilkan hasil sesuai menu yang dipilih}
  8. uses crt;
  9. const
  10. MaksBuku = 5;
  11. type
  12. ArrayBuku =
  13. record
  14. Judul : string;
  15. Penulis : string;
  16. Bahasa : string;
  17. Kategori : string;
  18. Jumlah : integer;
  19. end;
  20. Bku = array [1..MaksBuku] of ArrayBuku;
  21. var
  22. Buku : Bku;
  23. Pilih : integer;
  24.  
  25. procedure PenciptaanBuku(var Buku : Bku);
  26. {I.S. : elemen record array Buku diberi harga awal agar siap digunakan}
  27. {F.S. : menghasilkan array Buku yang siap digunakan}
  28. var
  29. i : integer;
  30. begin
  31. for i := 1 to MaksBuku do
  32. begin
  33. Buku[i].Judul := '/';
  34. Buku[i].Penulis := '/';
  35. Buku[i].Bahasa := '/';
  36. Buku[i].Kategori := '/';
  37. Buku[i].Jumlah := 0;
  38. end; //endfor
  39. end; //endprocedure
  40.  
  41. procedure IsiBuku(var Buku : Bku);
  42. {I.S. : user memasukkan elemen pada record array buku[1..MaksBuku]}
  43. {F.S. : menghasilkan array buku[1..MaksBuku] yang sudah dimasukkan user}
  44. var
  45. i : integer;
  46. begin
  47. writeln('Pengisian Data Perpustakaan');
  48. writeln('---------------------------');
  49. writeln('Judul Buku : ');
  50. writeln('Penulis Buku : ');
  51. writeln('Bahasa Buku : ');
  52. writeln('Kategori Buku : ');
  53. writeln('Jumlah Buku : ');
  54. for i := 1 to MaksBuku do
  55. begin
  56. gotoxy(17,3); clreol; gotoxy(17,4); clreol; gotoxy(17,5); clreol;
  57. gotoxy(17,6); clreol; gotoxy(17,7); clreol;
  58. gotoxy(17,3); readln(Buku[i].Judul);
  59. gotoxy(17,4); readln(Buku[i].Penulis);
  60. gotoxy(17,5); readln(Buku[i].Bahasa);
  61. gotoxy(17,6); readln(Buku[i].Kategori);
  62. gotoxy(17,7); readln(Buku[i].Jumlah);
  63. end; //endfor
  64. end; //endprocedure
  65.  
  66. procedure MaxMinJumlah(Buku : Bku);
  67. {I.S. : record array buku sudah terdefinisi}
  68. {F.S. : menghasilkan nilai maksimum dan minimum dari jumlah buku}
  69. var
  70. i,Min,Max : integer;
  71. begin
  72. i := 1;
  73. Max := Buku[i].Jumlah;
  74. Min := Buku[i].Jumlah;
  75. for i := 2 to MaksBuku do
  76. begin
  77. if(Max < Buku[i].Jumlah)
  78. then
  79. begin
  80. Max := Buku[i].Jumlah;
  81. end;
  82. if(Min > Buku[i].Jumlah)
  83. then
  84. begin
  85. Min := Buku[i].Jumlah;
  86. end;
  87. end; //endfor
  88. textcolor(yellow);
  89. writeln('Jumlah Buku yang Paling Sedikit : ',Min);
  90. writeln('Jumlah Buku yang Paling Banyak : ',Max);
  91. end; //endprocedure
  92.  
  93. procedure InsertionSort(var Buku : Bku);
  94. {I.S. : record array buku sudah terdefinisi}
  95. {F.S. : menghasilkan record array buku yang tersort}
  96. var
  97. i, j, index1 : integer;
  98. index2,index3,index4,index5 : string;
  99.  
  100. begin
  101. for i := 2 to MaksBuku do
  102. begin
  103. index1 := Buku[i].Jumlah;
  104. index2 := Buku[i].Judul;
  105. index3 := Buku[i].Penulis;
  106. index4 := Buku[i].Bahasa;
  107. index5 := Buku[i].Kategori;
  108. j := i;
  109. while ((j > 1) and (Buku[j-1].Jumlah > index1)) do
  110. begin
  111. Buku[j].Jumlah := Buku[j-1].Jumlah;
  112. Buku[j].Judul := Buku[j-1].Judul;
  113. Buku[j].Penulis := Buku[j-1].Penulis;
  114. Buku[j].Bahasa := Buku[j-1].Bahasa;
  115. Buku[j].Kategori := Buku[j-1].Kategori;
  116. j := j - 1;
  117. end; //endwhile
  118. Buku[j].Jumlah := index1;
  119. Buku[j].Judul := index2;
  120. Buku[j].Penulis := index3;
  121. Buku[j].Bahasa := index4;
  122. Buku[j].Kategori := index5;
  123. end; //endfor
  124. write('Data telah disort'); readln;
  125. end; //endprocedure
  126.  
  127. procedure TampilData(Buku : Bku);
  128. {I.S. : record array buku sudah terdefinisi}
  129. {F.S. : menampilkan elemen dari record array buku}
  130. var
  131. i : integer;
  132. begin
  133. clrscr;
  134. writeln(' DAFTAR BUKU PERPUSTAKAAN ');
  135. writeln('-----------------------------------------------------------------------------------------');
  136. writeln('| No | Judul | Penulis | Bahasa | Kategori | Jumlah |');
  137. writeln('-----------------------------------------------------------------------------------------');
  138. for i := 1 to MaksBuku do
  139. begin
  140. textcolor(yellow);
  141. gotoxy(1,i+4);
  142. write('| | | | | | |');
  143. textcolor(yellow);
  144. gotoxy(3,i+4); write(i);
  145. gotoxy(8,i+4); write(Buku[i].Judul);
  146. gotoxy(30,i+4); write(Buku[i].Penulis);
  147. gotoxy(50,i+4); write(Buku[i].Bahasa);
  148. gotoxy(65,i+4); write(Buku[i].Kategori);
  149. gotoxy(80,i+4); write(Buku[i].Jumlah);
  150. end; //endfor
  151. textcolor(15);
  152. writeln;
  153. writeln('-----------------------------------------------------------------------------------------');
  154. writeln;
  155. MaxMinJumlah(Buku);
  156. end; //endprocedure
  157.  
  158. procedure SequentialSearch(Buku : Bku);
  159. {I.S. : record array buku sudah terdefinisi}
  160. {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan}
  161. var
  162. i,n : integer;
  163. DataCari : string;
  164. begin
  165. TampilData(Buku);
  166. writeln;
  167. write('Judul Buku : '); readln(DataCari);
  168. i := 1;
  169. n := MaksBuku;
  170. Buku[n+1].Judul := DataCari;
  171. while (Buku[i].Judul <> DataCari) do
  172. i := i + 1; //endwhile
  173. if(i < MaksBuku + 1)
  174. then
  175. writeln(DataCari,' ditemukan pada nomor ke-',i)
  176. else
  177. writeln(DataCari,' tidak ditemukan'); //endif
  178. readln;
  179. end; //endprocedure
  180.  
  181. procedure Penghancuran(var Buku : Bku);
  182. {I.S. : record array buku sudah terdefinisi}
  183. {F.S. : menghasilkan record array buku yang telah dihancurkan}
  184. var
  185. i : integer;
  186. begin
  187. for i := 1 to MaksBuku do
  188. begin
  189. Buku[i].Judul := '/';
  190. Buku[i].Penulis := '/';
  191. Buku[i].Bahasa := '/';
  192. Buku[i].Kategori := '/';
  193. Buku[i].Jumlah := 0;
  194. end; //endfor
  195. end; //endprocedure
  196.  
  197. procedure MenuPilihan(var Pilih : integer);
  198. {I.S. : user memasukkan nomor menu}
  199. {F.S. : menghasilkan nomor menu yang dipilih}
  200. begin
  201. clrscr;
  202. textcolor(yellow);
  203. writeln('MENU PILIHAN');
  204. writeln('************');
  205. writeln('1. Isi Data Buku');
  206. writeln('2. Tampil Data Buku');
  207. writeln('3. Sort Data Buku (Jumlah)');
  208. writeln('4. Cari Judul Buku');
  209. writeln('0. Keluar');
  210. write('Pilihan anda? '); readln(Pilih);
  211. //validasi menu
  212. while(Pilih < 0) or (Pilih > 4) do
  213. begin
  214. writeln('Menu Pilihan Harus Antara 0-2, ulangi! Tekan Enter!');
  215. readln;
  216. gotoxy(1,7); clreol;
  217. gotoxy(15,6); clreol; readln(Pilih);
  218. end; //endwhile
  219. end; //endprocedure
  220.  
  221. //badan program utama
  222. begin
  223. PenciptaanBuku(Buku);
  224. repeat
  225. clrscr;
  226. MenuPilihan(Pilih);
  227. textcolor(15);
  228. case (Pilih) of
  229. 1 : begin
  230. clrscr;
  231. IsiBuku(Buku);
  232. end;
  233. 2 : begin
  234. clrscr;
  235. if (Buku[1].Judul = '/')
  236. then
  237. begin
  238. write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
  239. readln;
  240. end
  241. else
  242. begin
  243. TampilData(Buku);
  244. readln;
  245. end;
  246. end;
  247. 3 : begin
  248. clrscr;
  249. if (Buku[1].Judul = '/')
  250. then
  251. begin
  252. write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
  253. readln;
  254. end
  255. else
  256. InsertionSort(Buku);
  257. end;
  258. 4 : begin
  259. clrscr;
  260. if (Buku[1].Judul = '/')
  261. then
  262. begin
  263. write('Pilih Menu Nomor 1 Terlebih Dahulu, Tekan Enter!');
  264. readln;
  265. end
  266. else
  267. SequentialSearch(Buku);
  268. end;
  269. end; //endcase
  270. until (Pilih = 0);
  271. Penghancuran(Buku);
  272. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement