Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2019
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 25.04 KB | None | 0 0
  1. program recorddatamahasiswa;
  2. uses crt;
  3. //kamus global
  4.  
  5. const
  6.      Maksmhs= 3;
  7.      Maksnilai=100;
  8. type
  9.     Datamhs = record
  10.           NMHS:Shortstring;
  11.           NIM:longint;
  12.     end;
  13.     Datanilai = record
  14.           Kdmk,MK:string;
  15.           SKS,Nilai:integer;
  16.           Ip:real;
  17.     end;
  18.     Mahasiswa = array[1..Maksmhs]of Datamhs;
  19.     Nilai = array[1..Maksnilai] of Datanilai;
  20. var
  21.    Mhs: Mahasiswa;
  22.    NL: Nilai;
  23.    Pilih:integer;
  24.    Pilih2,Pilih3,Pilih4,Pilih5:longint;
  25.    Semester,Kelas:string;
  26.    Indeks:char;
  27.    N: integer;{banyaknya data}
  28.  
  29. procedure Beranda (var Pilih:integer; Pilih2,Pilih3,Pilih4,Pilih5:longint);
  30. {I.s :user memasukan nomor menu}
  31. {F.s :menghasilkan nomor menu yang dipilih}
  32. begin
  33.  
  34.   textcolor(15);
  35.   gotoxy(1,3);writeln('        Beranda');
  36.   gotoxy(1,4);writeln('========================');
  37.   gotoxy(1,5);writeln('1. Isi Data Mahasiswa');
  38.   gotoxy(1,6);writeln('2. Tampil Data Mahasiswa');
  39.   gotoxy(1,7);writeln('3. Cari Data Mahasiswa');
  40.   gotoxy(1,8);writeln('0. Keluar');
  41.   writeln();
  42.   gotoxy(1,10);write('Pilihan Anda: '); readln(Pilih);
  43.   //validasi menu
  44.   while(Pilih<0)or(Pilih>3)and (Pilih2<0)or(Pilih2>3)and(Pilih3<0)or(Pilih3>3)and(Pilih4<0)or(Pilih4>3)and(Pilih5<0)or(Pilih5>3) do
  45.    begin
  46.       textcolor(yellow);
  47.       gotoxy(1,10);write('Salah Memilih Menu, Ulangi! Tekan ENTER');
  48.       readln;
  49.       gotoxy(1,10);clreol;
  50.       gotoxy(15,9);clreol; textcolor(white);
  51.       readln(Pilih);
  52.       readln(Pilih2);
  53.       readln(Pilih3);
  54.     end;
  55. end;
  56.  
  57. procedure MenuIsidata (var  Pilih2:longint);
  58. {I.s :user memasukan nomor menu}
  59. {F.s :menghasilkan nomor menu yang dipilih}
  60. begin
  61.   clrscr;
  62.   textcolor(15);
  63.   gotoxy(1,3);writeln('    Menu Isi Data');
  64.   gotoxy(1,4);writeln('==========================');
  65.   gotoxy(1,5);writeln('1. Isi Data Mahasiswa');
  66.   gotoxy(1,6);writeln('2. Isi Data Matakuliah');
  67.   gotoxy(1,7);writeln('3. Isi Data Per Matakuliah');
  68.   gotoxy(1,8);writeln('4. Urut Nim Asc');
  69.   gotoxy(1,9);writeln('5. Urut Nilai Dsc');
  70.   gotoxy(1,9);writeln('6. Urut Ip Dsc');
  71.   writeln();
  72.   gotoxy(1,15);write('Pilihan Anda: '); readln(Pilih2);
  73.   //validasi menu
  74.   while(Pilih2<0)or(Pilih2>6)do
  75.    begin
  76.       textcolor(yellow);
  77.       gotoxy(1,15);write('Salah Memilih Menu, Ulangi! Tekan ENTER');
  78.       readln;
  79.       gotoxy(1,15);clreol;
  80.       gotoxy(15,15);clreol; textcolor(white);
  81.       readln(Pilih2);
  82.     end;
  83. end;
  84.  
  85. //isi data Mahasiswa
  86. procedure Isidata (var N:integer; var Mhs:Mahasiswa; var Pilih2:longint);
  87. {I.s :user memasukan nomor menu}
  88. {F.s :menghasilkan nomor menu yang dipilih}
  89. var
  90. i:integer;
  91.  
  92. begin
  93.      //menentukan banyak kelas
  94.      write('Kelas: ');readln(Kelas);
  95.      write('Semester: ');readln(Semester);
  96.      write('Banyaknya Mata Kuliah : ');readln(N);
  97.      write('Banyaknya Mahasiswa : '); readln(N);
  98.      //validasi banyak Mata Kuliah dan Mahasiswa
  99.        while(N<0)or(N>3)do
  100.        begin
  101.             textcolor(yellow);
  102.             gotoxy(1,5);write('Banyaknya Mata Kuliah dan Jumlah Mahasiswa Salah, Ulangi! Tekan ENTER');
  103.             readln;
  104.             gotoxy(1,5);clreol;
  105.             gotoxy(23,4);clreol;
  106.             gotoxy(25,3);clreol;
  107.             readln(N);
  108.        end;
  109.  
  110.      //Tampil Data Mahasiswa
  111.      clrscr;
  112.      textcolor(yellow);
  113.      gotoxy(3,1);writeln('    DAFTAR DATA MAHASISWA');
  114.      gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  115.      gotoxy(3,5);writeln('=====================================');
  116.      gotoxy(3,6);writeln('|  NIM     |     Nama Mahasiswa     |');
  117.      gotoxy(3,7);writeln('=====================================');
  118.      for i := 1 to N do
  119.      begin
  120.      textcolor(yellow);
  121.      gotoxy(3,i+7);writeln('|          |                        |');
  122.      gotoxy(3,i+8);writeln('=====================================');
  123.      gotoxy(5,i+7); textcolor(15);
  124.      write('');readln(Mhs[i].NIm);
  125.      gotoxy(20,i+7); textcolor(15);
  126.      write('');readln(Mhs[i].NMHS);
  127.      end; //for
  128. end;
  129.  
  130. //isi data Matakuliah Mahasiswa
  131. procedure IsidataMatakuliah (var N:integer; Mhs:Mahasiswa);
  132. {I.s :user memasukan nomor menu}
  133. {F.s :menghasilkan nomor menu yang dipilih}
  134. var
  135. i:integer;
  136. begin
  137.      //menentukan banyak kelas
  138.  
  139.      //validasi banyak kelas
  140.  
  141.  
  142.      //Tampil data mahasiswa
  143.  
  144.      clrscr;
  145.      textcolor(yellow);
  146.      gotoxy(3,1);writeln('                  DAFTAR DATA MATAKULIAH');
  147.      gotoxy(3,5);writeln('========================================================');
  148.      gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  149.      gotoxy(3,6);writeln('|  Kode Mata Kuliah   |     Nama Mata Kuliah     | SKS |');
  150.      gotoxy(3,7);writeln('=======================================================');
  151.      for i := 1 to N do
  152.      begin
  153.      textcolor(yellow);
  154.      gotoxy(3,i+7);writeln('|                     |                          |     |');
  155.       gotoxy(3,i+8);writeln('=======================================================');
  156.      gotoxy(6,i+7); textcolor(15);
  157.      write('');readln(Nl[i].Kdmk);
  158.      gotoxy(31,i+7); textcolor(15);
  159.      write('');readln(Nl[i].MK);
  160.      gotoxy(55,i+7); textcolor(15);
  161.      write('');readln(Nl[i].SKS);
  162.      end; //for
  163. end;
  164.  
  165. //Daftar Nilai Mahasiswa
  166. procedure Daftarnilaimhs(Var N:integer;var Mhs:Mahasiswa);
  167. {I.s :user memasukan nomor menu}
  168. {F.s :menghasilkan nomor menu yang dipilih}
  169. var
  170. i:integer;
  171. begin
  172.      //Tampil data mahasiswa
  173.      i:= 0;
  174.      for i := 1 to N do
  175.      begin
  176.      clrscr;
  177.      textcolor(yellow);
  178.      gotoxy(3,1);writeln('                  DAFTAR NILAI MAHASISWA KE-',i);
  179.      gotoxy(3,6);writeln('====================================================');
  180.      gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  181.      gotoxy(3,7);writeln('|  NIM   |     Nama Mahasiswa     | Nilai | Indeks |');
  182.      gotoxy(3,8);writeln('====================================================');
  183.  
  184.      writeln;
  185.      gotoxy(3,i+3);writeln(Nl[1].MK);
  186.      gotoxy(3,i+8);writeln('|        |                        |       |        |');
  187.      gotoxy(4,i+8);textcolor(15);
  188.      write(Mhs[i].NIM);
  189.      gotoxy(16,i+8);textcolor(15);
  190.      write(Mhs[i].NMHS);
  191.      gotoxy(39,i+8);textcolor(15);
  192.      write('');readln(Nl[i].Nilai);
  193.      //menghitung Nilai
  194.      case (Nl[i].Nilai) of
  195.         0..10: begin
  196.                Indeks:= 'E';
  197.                end;
  198.         20..30: begin
  199.                 Indeks:= 'D';
  200.                 end;
  201.         40..50: begin
  202.                 Indeks:= 'C';
  203.                 end;
  204.         60..70: begin
  205.                 Indeks:= 'B';
  206.                 end;
  207.         80..100: begin
  208.                  Indeks:= 'A';
  209.                  end;
  210.          end;
  211.         gotoxy(50,i+8);textcolor(15);
  212.         writeln(Indeks);
  213.  
  214.      textcolor(yellow);
  215.      gotoxy(3,14);writeln('                  DAFTAR NILAI MAHASISWA KE-',i);
  216.      gotoxy(3,17);writeln('====================================================');
  217.      gotoxy(3,15);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  218.      gotoxy(3,18);writeln('|  NIM   |     Nama Mahasiswa     | Nilai | Indeks |');
  219.      gotoxy(3,19);writeln('====================================================');
  220.  
  221.      writeln;
  222.      gotoxy(6,i+14);writeln(Nl[1].MK);
  223.      gotoxy(3,i+19);writeln('|        |                        |       |        |');
  224.      gotoxy(4,i+19);textcolor(15);
  225.      write(Mhs[i].NIM);
  226.      gotoxy(16,i+19);textcolor(15);
  227.      write(Mhs[i].NMHS);
  228.      gotoxy(39,i+19);textcolor(15);
  229.      write('');readln(Nl[i].Nilai);
  230.      //menghitung Nilai
  231.      case (Nl[i].Nilai) of
  232.         0..10: begin
  233.                Indeks:= 'E';
  234.                end;
  235.         20..30: begin
  236.                 Indeks:= 'D';
  237.                 end;
  238.         40..50: begin
  239.                 Indeks:= 'C';
  240.                 end;
  241.         60..70: begin
  242.                 Indeks:= 'B';
  243.                 end;
  244.         80..100: begin
  245.                  Indeks:= 'A';
  246.                  end;
  247.          end;
  248.         gotoxy(50,i+19);textcolor(15);
  249.         writeln(Indeks);
  250.         end; //for
  251. end;
  252.  
  253. procedure MenuTampilDataMhs (var Pilih3:longint);
  254. {I.s :user memasukan nomor menu}
  255. {F.s :menghasilkan nomor menu yang dipilih}
  256. begin
  257.   clrscr;
  258.   textcolor(15);
  259.   gotoxy(1,3);writeln('     Menu Tampil Data Mahasiswa');
  260.   gotoxy(1,4);writeln('===========================================');
  261.   gotoxy(1,5);writeln('1. Daftar Nilai Mahasiswa Terurut NIM Asc');
  262.   gotoxy(1,6);writeln('2. Daftar Nilai Mahasiswa Terurut Nilai Dsc');
  263.   gotoxy(1,7);writeln('3. Daftar IP Mahasiswa Terurut IP Dsc');
  264.   gotoxy(1,8);writeln('0. Kembali Ke Menu Pilihan');
  265.   writeln();
  266.   gotoxy(1,10);write('Pilihan Anda: '); readln(Pilih3);
  267.   //validasi menu
  268.   while(Pilih3<0)or(Pilih3>3)do
  269.    begin
  270.       textcolor(yellow);
  271.       gotoxy(1,10);write('Salah Memilih Menu, Ulangi! Tekan ENTER');
  272.       readln;
  273.       gotoxy(1,10);clreol;
  274.       gotoxy(15,9);clreol; textcolor(white);
  275.       readln(Pilih3);
  276.     end;
  277. end;
  278.  
  279. procedure UrutnimAsc (var N : integer; var Mhs: Mahasiswa);
  280. {I.S. : record barang dan banyaknya data sudah terdefinisi}
  281. {F.S. : menghasilkan record baang yang sudah tersusun secara ascending berdasarkan kode barang menggunakan bubble sort}
  282. var
  283.   i,j : integer;
  284.   Temp: Datamhs;
  285. begin
  286.   for i := 1 to (N-1) do
  287.     for j := N downto (i+1) do
  288.     begin
  289.       if(Mhs[j].NIM < Mhs[j-1].NIM)
  290.       then
  291.       begin
  292.         Temp:= Mhs[j];
  293.         Mhs[j] := Mhs[j-1];
  294.         Mhs[j-1] := Temp;
  295.       end;//if
  296.     end;//for
  297. end;//procedure
  298.  
  299. procedure UrutnilaiDsc (N : integer; var Nl: Nilai);
  300. {I.S. : record barang dan banyaknya data sudah terdefinisi}
  301. {F.S. : menghasilkan record baang yang sudah tersusun secara descending berdasarkan harga barang menggunakan bubble sort}
  302. var
  303.   i,j : integer;
  304.   Temp: dataNilai;
  305. begin
  306.   for i := 1 to (N-1) do
  307.     for j := 1 to (N-i) do
  308.     begin
  309.       if(Nl[j].Nilai < Nl[j+1].Nilai)
  310.       then
  311.       begin
  312.         Temp:= Nl[j];
  313.         Nl[j] := Nl[j+1];
  314.         Nl[j+1] := Temp;
  315.       end;//if
  316.     end;//for
  317. end;//procedure
  318.  
  319. //Daftar Nilai Mahasiswa
  320. procedure Tampildaftarnilaimhs(Var N:integer; var Mhs:Mahasiswa);
  321. {I.s :user memasukan nomor menu}
  322. {F.s :menghasilkan nomor menu yang dipilih}
  323. var
  324. i:integer;
  325. begin
  326.      //Tampil data mahasiswa
  327.      i:= 0;
  328.      for i := 1 to N do
  329.      begin
  330.      clrscr;
  331.      textcolor(yellow);
  332.      gotoxy(3,1);writeln('                  DAFTAR NILAI MAHASISWA KE-',i);
  333.      gotoxy(3,5);writeln('====================================================');
  334.      gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  335.      gotoxy(3,6);writeln('|  NIM   |     Nama Mahasiswa     | Nilai | Indeks |');
  336.      gotoxy(3,7);writeln('====================================================');
  337.  
  338.      writeln;
  339.      gotoxy(3,i+4);writeln(Nl[i].MK);
  340.      gotoxy(3,i+8);writeln('|        |                        |       |        |');
  341.      gotoxy(4,i+8);textcolor(15);
  342.      write(Mhs[i].NIM);
  343.      gotoxy(16,i+8);textcolor(15);
  344.      write(Mhs[i].NMHS);
  345.      gotoxy(39,i+8);textcolor(15);
  346.      writeln(Nl[i].Nilai);
  347.      //menghitung Nilai
  348.      case (Nl[i].Nilai) of
  349.         0..10: begin
  350.                Indeks:= 'E';
  351.                end;
  352.         20..30: begin
  353.                 Indeks:= 'D';
  354.                 end;
  355.         40..50: begin
  356.                 Indeks:= 'C';
  357.                 end;
  358.         60..70: begin
  359.                 Indeks:= 'B';
  360.                 end;
  361.         80..100: begin
  362.                  Indeks:= 'A';
  363.                  end;
  364.          end;
  365.         gotoxy(50,i+8);textcolor(15);
  366.         writeln(Indeks);
  367.         end; //for
  368. end;
  369.  
  370. procedure TampilipDsc (N : integer; var Nl: Nilai);
  371. {I.S. : record barang dan banyaknya data sudah terdefinisi}
  372. {F.S. : menghasilkan record baang yang sudah tersusun secara descending berdasarkan harga barang menggunakan bubble sort}
  373. var
  374.   i,j : integer;
  375.   Temp: dataNilai;
  376. begin
  377.   for i := 1 to (N-1) do
  378.     for j := 1 to (N-i) do
  379.     begin
  380.       if(Nl[j].Ip < Nl[j+1].Ip)
  381.       then
  382.       begin
  383.         Temp:= Nl[j];
  384.         Nl[j] := Nl[j+1];
  385.         Nl[j+1] := Temp;
  386.       end;//if
  387.     end;//for
  388. end;//procedure
  389.  
  390. procedure Tampilipmhs(Var N:integer; var Mhs:Mahasiswa; var Nl:Nilai);
  391. {I.s :user memasukan nomor menu}
  392. {F.s :menghasilkan nomor menu yang dipilih}
  393. var
  394. i:integer;
  395. begin
  396.      //Tampil data mahasiswa
  397.      Nl[i].Ip:= Nl[i].Nilai div N;
  398.      i:= 0;
  399.      for i := 1 to N do
  400.      begin
  401.      clrscr;
  402.      textcolor(yellow);
  403.      gotoxy(3,1);writeln('                  DAFTAR NILAI MAHASISWA KE-',i);
  404.      gotoxy(3,5);writeln('====================================================');
  405.      gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  406.      gotoxy(3,6);writeln('|  NIM   |     Nama Mahasiswa     |  Ip  |');
  407.      gotoxy(3,7);writeln('====================================================');
  408.      writeln;
  409.      gotoxy(3,i+4);writeln(Nl[i].MK);
  410.      gotoxy(3,i+8);writeln('|      |                        |      |');
  411.      gotoxy(4,i+8);textcolor(15);
  412.      write(Mhs[i].NIM);
  413.      gotoxy(16,i+8);textcolor(15);
  414.      write(Mhs[i].NMHS);
  415.      gotoxy(37,i+8);textcolor(15);
  416.      writeln(Nl[i].Ip);
  417.      end; //for
  418. end;
  419. procedure Caridatamhs (var Pilih4:longint);
  420. {I.s :user memasukan nomor menu}
  421. {F.s :menghasilkan nomor menu yang dipilih}
  422. begin
  423.   clrscr;
  424.   textcolor(15);
  425.   writeln('Menu Cari Data Mahasiswa');
  426.   writeln('===================================');
  427.   writeln('1. Cari Data Mahasiswa');
  428.   writeln('2. Cari Data Matakuliah');
  429.   writeln('3. Cari Kartu Hasil Studi Mahasiswa');
  430.   writeln('0. Kembali Ke Menu Pilihan');
  431.   writeln();
  432.   write('Pilihan Anda: '); readln(Pilih4);
  433.   //validasi menu
  434.   while(Pilih4<0)or(Pilih4>3)do
  435.    begin
  436.       textcolor(yellow);
  437.       gotoxy(1,10);write('Salah Memilih Menu, Ulangi! Tekan ENTER');
  438.       readln;
  439.       gotoxy(1,10);clreol;
  440.       gotoxy(15,9);clreol; textcolor(white);
  441.       readln(Pilih4);
  442.     end;
  443. end;
  444.  
  445. procedure Menucaridatamhs (var Pilih5:longint);
  446. {I.s :user memasukan nomor menu}
  447. {F.s :menghasilkan nomor menu yang dipilih}
  448. begin
  449.   clrscr;
  450.   textcolor(15);
  451.   writeln('Menu Cari Data Mahasiswa');
  452.   writeln('===================================');
  453.   writeln('1. Cari NIM Mahasiswa');
  454.   writeln('2. Cari Nama Mahasiswa');
  455.   writeln('3. Cari Nilai Mahasiswa');
  456.   writeln('0. Kembali Ke Menu Pilihan');
  457.   writeln();
  458.   write('Pilihan Anda: '); readln(Pilih5);
  459.   //validasi menu
  460.   while(Pilih5<0)or(Pilih5>3)do
  461.    begin
  462.       textcolor(yellow);
  463.       gotoxy(1,10);write('Salah Memilih Menu, Ulangi! Tekan ENTER');
  464.       readln;
  465.       gotoxy(1,10);clreol;
  466.       gotoxy(15,9);clreol; textcolor(white);
  467.       readln(Pilih5);
  468.     end;
  469. end;
  470.  
  471. procedure Carinimmhs(N : integer; Nl: Nilai; Mhs: Mahasiswa);
  472. {I.S. : Banyaknya data(N) dan record barang sudah terdefinisi}
  473. {F.S. : menampilkan hasil pencarian kode barang menggunakan metode binary search}
  474. var
  475.   Carinim: integer;
  476.   Ia,Ib, k : integer;
  477.   Ketemu : boolean;
  478. begin
  479.   //memasukkan kode barang yang dicari
  480.   write('NIM Mahasiswa Yang Dicari : ');readln(Carinim);
  481.  
  482.   //proses searching
  483.   Ia:= 1;
  484.   Ib:= N;
  485.   Ketemu:= false;
  486.   while(Not Ketemu) and (Ia <= Ib) do
  487.   begin
  488.     //menghitung posisi tengah
  489.     k:= (Ia+Ib) div 2;
  490.     if(Mhs[k].NIM = Carinim)
  491.     then
  492.       Ketemu:= true
  493.     else
  494.       if(Mhs[k].NIM < Carinim)
  495.       then
  496.         Ia:= k+1 //pencarian dilanjutkan ke bagian kanan
  497.       else
  498.         Ib:= k-1; //pencarian dilanjutkan ke bagian kiri
  499.   end;//while
  500.  
  501.   //menampilkan hasil pencarian
  502.   clrscr;
  503.   if(Ketemu)
  504.     then
  505.     begin
  506.       k:= 0;
  507.       for k := 1 to N do
  508.       gotoxy(3,5);writeln('====================================================');
  509.       gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  510.       gotoxy(3,6);writeln('|  NIM   |     Nama Mahasiswa     |  Ip  |');
  511.       gotoxy(3,7);writeln('====================================================');
  512.       writeln;
  513.       gotoxy(3,k+7);writeln('|      |                        |      |');
  514.       gotoxy(3,k+7);textcolor(yellow); writeln(Carinim);
  515.       gotoxy(3,k+7);textcolor(yellow); writeln(Mhs[k].NMHS);
  516.       gotoxy(3,k+7);textcolor(yellow); writeln(Nl[k].Ip);
  517.     end
  518.     else  //kode barang yang dicari tidak ditemukan
  519.     begin
  520.       textcolor(15);write('Kode Barang : ');
  521.       textcolor(yellow); write(Carinim);
  522.       textcolor(15);writeln(' Tidak Ada');
  523.       writeln;
  524.     end;//if
  525. end;//endprocedure
  526.  
  527. procedure Carinamamhs(N : integer; Nl: Nilai; Mhs: Mahasiswa);
  528. {I.S. : Banyaknya data(N) dan record barang sudah terdefinisi}
  529. {F.S. : menampilkan hasil pencarian kode barang menggunakan metode binary search}
  530. var
  531.   Carinama: string;
  532.   Ia,Ib, k : integer;
  533.   Ketemu : boolean;
  534. begin
  535.   //memasukkan kode barang yang dicari
  536.   write('Nama Mahasiswa Yang Dicari : ');readln(Carinama);
  537.  
  538.   //proses searching
  539.   Ia:= 1;
  540.   Ib:= N;
  541.   Ketemu:= false;
  542.   while(Not Ketemu) and (Ia <= Ib) do
  543.   begin
  544.     //menghitung posisi tengah
  545.     k:= (Ia+Ib) div 2;
  546.     if(Mhs[k].NMHS = Carinama)
  547.     then
  548.       Ketemu:= true
  549.     else
  550.       if(Mhs[k].NMHS < Carinama)
  551.       then
  552.         Ia:= k+1 //pencarian dilanjutkan ke bagian kanan
  553.       else
  554.         Ib:= k-1; //pencarian dilanjutkan ke bagian kiri
  555.   end;//while
  556.  
  557.   //menampilkan hasil pencarian
  558.   clrscr;
  559.   if(Ketemu)
  560.     then
  561.     begin
  562.       k:= 0;
  563.       for k := 1 to N do
  564.       gotoxy(3,5);writeln('====================================================');
  565.       gotoxy(3,3);writeln('Kelas/Semester: ',Kelas,'/',Semester);
  566.       gotoxy(3,6);writeln('|  NIM   |     Nama Mahasiswa     |  Ip  |');
  567.       gotoxy(3,7);writeln('====================================================');
  568.       writeln;
  569.       gotoxy(3,k+7);writeln('|      |                        |      |');
  570.       gotoxy(3,k+7);textcolor(yellow); writeln(Mhs[k].NIM);
  571.       gotoxy(3,k+7);textcolor(yellow); writeln(Carinama);
  572.       gotoxy(3,k+7);textcolor(yellow); writeln(Nl[k].Ip);
  573.     end
  574.     else  //kode barang yang dicari tidak ditemukan
  575.     begin
  576.       textcolor(15);write('Kode Barang : ');
  577.       textcolor(yellow); write(Carinama);
  578.       textcolor(15);writeln(' Tidak Ada');
  579.       writeln;
  580.     end;//if
  581. end;//endprocedure
  582.  
  583. procedure Carikdmk(N : integer; Nl: Nilai);
  584. {I.S. : Banyaknya data(N) dan record barang sudah terdefinisi}
  585. {F.S. : menampilkan hasil pencarian kode barang menggunakan metode binary search}
  586. var
  587.   Carikdmk: string;
  588.   Ia,Ib, k : integer;
  589.   Ketemu : boolean;
  590. begin
  591.   //memasukkan kode barang yang dicari
  592.   write('Kode Mata Kuliah Yang Dicari : ');readln(Carikdmk);
  593.  
  594.   //proses searching
  595.   Ia:= 1;
  596.   Ib:= N;
  597.   Ketemu:= false;
  598.   while(Not Ketemu) and (Ia <= Ib) do
  599.   begin
  600.     //menghitung posisi tengah
  601.     k:= (Ia+Ib) div 2;
  602.     if(Nl[k].Kdmk = Carikdmk)
  603.     then
  604.       Ketemu:= true
  605.     else
  606.       if(Nl[k].Kdmk < Carikdmk)
  607.       then
  608.         Ia:= k+1 //pencarian dilanjutkan ke bagian kanan
  609.       else
  610.         Ib:= k-1; //pencarian dilanjutkan ke bagian kiri
  611.   end;//while
  612.  
  613.   //menampilkan hasil pencarian
  614.   clrscr;
  615.   if(Ketemu)
  616.     then
  617.     begin
  618.       k:= 0;
  619.       for k := 1 to N do
  620.       textcolor(yellow);
  621.       gotoxy(3,5);writeln('========================================================');
  622.       gotoxy(3,6);writeln('|  Kode Mata Kuliah   |     Nama Mata Kuliah     | SKS |');
  623.       gotoxy(3,7);writeln('=======================================================');
  624.       textcolor(yellow);
  625.       gotoxy(3,k+7);writeln('|                     |                          |     |');
  626.       gotoxy(3,k+8);writeln('=======================================================');
  627.       gotoxy(3,k+7);textcolor(yellow); writeln(Carikdmk);
  628.       gotoxy(3,k+7);textcolor(yellow); writeln(Nl[k].MK);
  629.       gotoxy(3,k+7);textcolor(yellow); writeln(Nl[k].SKS);
  630.     end
  631.     else  //kode barang yang dicari tidak ditemukan
  632.     begin
  633.       textcolor(15);write('Kode Mata Kuliah : ');
  634.       textcolor(yellow); write(Carikdmk);
  635.       textcolor(15);writeln(' Tidak Ada');
  636.       writeln;
  637.     end;//if
  638. end;//endprocedure
  639.  
  640. //pemanggil Beranda
  641. begin
  642.      N := 0;
  643.      repeat
  644.            clrscr;
  645.            Beranda(Pilih,Pilih2,Pilih3,Pilih4,Pilih5);
  646.            case (Pilih) of
  647.                 1 : begin
  648.                       clrscr;
  649.                       MenuIsidata(Pilih2);
  650.                       repeat
  651.                           case (Pilih2) of
  652.                           1 :begin
  653.                              clrscr;
  654.                                 if(N=0)then
  655.                                 begin
  656.                                   Isidata(N,Mhs,Pilih2);
  657.                                 end;
  658.                                  clrscr;
  659.                                  MenuIsidata(Pilih2);
  660.                                  end;//endif
  661.  
  662.                           2 :begin
  663.                             clrscr;
  664.                             IsidataMatakuliah(N,Mhs);
  665.                             readln;
  666.                             MenuIsidata(Pilih2);
  667.                             end;
  668.                           3 :begin
  669.                             clrscr;
  670.                             Daftarnilaimhs(N,Mhs);
  671.                             readln;
  672.                             MenuIsidata(Pilih2);
  673.                             end;
  674.  
  675.                           4 :begin
  676.                             clrscr;
  677.                             UrutnimAsc(N,Mhs);
  678.                             Tampilipmhs(N,Mhs,Nl);
  679.                             readln;
  680.                             MenuIsidata(Pilih2);
  681.                             end;
  682.  
  683.                            5 :begin
  684.                             clrscr;
  685.                             UrutnilaiDsc(N,Nl);
  686.                             Tampildaftarnilaimhs(N,Mhs);
  687.                             readln;
  688.                             MenuIsidata(Pilih2);
  689.                             end;
  690.  
  691.                           6 :begin
  692.                             clrscr;
  693.                             TampilipDsc(N,Nl);
  694.                             Tampilipmhs(N,Mhs,Nl);
  695.                             readln;
  696.                             MenuIsidata(Pilih2);
  697.                             end;
  698.  
  699.                           7 :begin
  700.                             clrscr;
  701.                             Carinimmhs(N,Nl,Mhs);
  702.                             textcolor(yellow);write('tekan enter kembali ke menu cari data');
  703.                             readln;
  704.                             MenuIsidata(Pilih2);
  705.                             end;
  706.                           8 :begin
  707.                             clrscr;
  708.                             Carikdmk(N,Nl);
  709.                             textcolor(yellow);write('tekan enter kembali ke menu cari data');
  710.                             readln;
  711.                             MenuIsidata(Pilih2);
  712.                             end;
  713.                             end;
  714.                           until(N = 0);
  715.                           end;
  716.                  2 : begin
  717.                        clrscr;
  718.                         begin
  719.                         repeat
  720.                         MenuTampilDataMhs(Pilih3);
  721.                         readln;
  722.                          case (Pilih3) of
  723.                          1 :begin
  724.                              clrscr;
  725.                              if (N = 0)
  726.                               then
  727.                                 begin
  728.                                   UrutnimAsc(N,Mhs);
  729.                                   Tampildaftarnilaimhs(N,Mhs);
  730.                                   readln;
  731.                                 end;
  732.                                  clrscr;
  733.                                  Menutampildatamhs(Pilih3);
  734.                                  readln;
  735.                                  end;
  736.                           2 :begin
  737.                             clrscr;
  738.                             UrutnilaiDsc(N,Nl);
  739.                             Tampildaftarnilaimhs(N,Mhs);
  740.                             readln;
  741.                             Menutampildatamhs(Pilih3);
  742.                             end;
  743.                           3 :begin
  744.                             clrscr;
  745.                             TampilipDsc(N,Nl);
  746.                             Tampilipmhs(N,Mhs,Nl);
  747.                             readln;
  748.                             Menutampildatamhs(Pilih3);
  749.                             end;
  750.                           end;
  751.                           until(N = 0);
  752.                        end;
  753.                        end;
  754.  
  755.                   3 : begin
  756.                        clrscr;
  757.                        if (N = 0)
  758.                         then
  759.                         begin
  760.                          writeln('Isi Data Terlebih Dahulu!');
  761.                          readln;
  762.                         end
  763.                           else
  764.                           begin
  765.                              Caridatamhs(Pilih4);
  766.                           end;
  767.                         repeat
  768.                         case (Pilih4) of
  769.                           1:begin
  770.                             If (N = 0)
  771.                              then
  772.                               begin
  773.                                Menucaridatamhs(Pilih5);
  774.                               end;
  775.                             end;
  776.                           end;
  777.                         until(N = 0);
  778.                       end;
  779.                   0 :begin
  780.                      end;
  781.                  end;
  782.       until(N = 0);
  783. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement