Kamis, 12 September 2013

program contoh_record;

program contoh_record;
uses wincrt;
type mahasiswa=record
     nim,nama,prodi:string;
     ip:real;
     jk:real;
     end;
     larik_mhs=array[1..20] of mahasiswa;
var
   mhs:larik_mhs;
   bayangan:larik_mhs;
   i,n,j:byte;
   lagi:char;
   pil:1..11;

procedure isi_data(var X:larik_mhs);
begin
     repeat
     begin
          inc(n);
          writeln('Mengisi data mahasiswa ke ',n);
          write('masukkan nim --> ');readln(X[n].nim);
          write('masukkan nama --> ');readln(X[n].nama);
          write('wanita/pria (1/0) --> ');readln(X[n].jk);
          write('masukkan prodi --> ');readln(X[n].prodi);
          write('masukkan ip --> ');readln(X[n].ip);
          writeln;
          write('tambah lagi <y/t>? ');readln(lagi);
     end
     until (lagi<>'y');
end;

procedure cetak(var X:larik_mhs);
var gender:string;
begin
     writeln('DAFTAR MAHASISWA IST AKPRIND YOGYAKARTA 2012');
     writeln('--------------------------------------------');
     writeln('NO NIM      NAMA         PRODI       JK   IP');
     writeln('--------------------------------------------');
     for i:=1 to n do with X[i] do
     begin
          if jk=0 then gender:='pria' else gender:='wanita';
          writeln(i:2,' ',nim:5,' ',nama:10,' ',prodi:10,' ',gender:8,' ',ip:6:2);
     end;
     writeln('--------------------------------------------');
end;

procedure filter_ip(var X:larik_mhs);
var fil:1..3;
begin
     writeln('1.Tampilkan ip < 2.00');
     writeln('2.Tampilakn ip 2.00 - 3.00');
     writeln('3.Tampilkan ip > 3.00');
     write('pilih <1-3> ');readln(fil);
     if fil=1 then
     begin
          writeln('mahasiswa dengan ip kurang dari 2.00 adalah sbb');
          writeln;
          for i:=1 to n do
          begin
               if X[i].ip < 2.0 then
               writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,' ',X[i].prodi:10,X[i].ip:6:2);
          end;
     end
     else if fil=2 then
     begin
     writeln('mahasiswa dengan ip 2.00 - 3.00 adalah sbb');
          writeln;
          for i:=1 to n do
          begin
               if (X[i].ip >= 2.00) and (X[i].ip <= 3.00) then
               writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,' ',X[i].prodi:10,X[i].ip:6:2);
          end;
     end
     else
     begin
     writeln('mahasiswa dengan ip lebih dari 3.00 adalah sbb');
          writeln;
          for i:=1 to n do
          begin
               if X[i].ip > 3.0 then
               writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,' ',X[i].prodi:10,X[i].ip:6:2);
          end;
     end;
end;{end procedure filter_ip}


procedure hapus(var X:larik_mhs);
var delet:byte;
begin
     write('record nomor berapa yang akan dihapus ? ');readln(delet);
     for i:=delet to n-1 do X[i]:=X[i+1];
     dec(n);
     writeln('record no ',delet,' sudah dihapus');
end;

procedure sorting_ip(var X:larik_mhs);
var
    sementara:mahasiswa;
begin
     {mengisi array bayangan dengan data array asal}
     for i:=1 to n do bayangan[i]:=X[i];
     {mengurutkan bayangan, array asli tidak diurutkan}
     for i:=1 to n-1 do
     begin
          for j:=i+1 to n do
          begin
               if (bayangan[i].ip<bayangan[j].ip) then
               begin
                    sementara:=bayangan[i];
                    bayangan[i]:=bayangan[j];
                    bayangan[j]:=sementara;
               end;
          end;
     end;
     writeln('data setelah diurutkan berdasar ip');writeln;
     cetak(bayangan);
end;

{program utama}
begin
     repeat
     begin
          writeln('     MENGELOLA DATA MAHASISWA');
          writeln('1.Isi/tambah data');
          writeln('2.Mencari nama tertentu');
          writeln('3.Mencari ip tertentu');
          writeln('4.Filtering berdasar ip');
          writeln('5.Filtering berdasar jenis kelamin');
          writeln('6.Filtering berdasar program studi');
          writeln('7.Mencari ip tertinggi dan terendah');
          writeln('8.Menghapus record tertentu');
          writeln('9.Cetak tabel');
          writeln('10.Sorting ip');
          writeln('11.Selesai');
          writeln;
          write('pilihan anda [1..11] --> ');readln(pil);
          case pil of
          1:isi_data(mhs);
          {2:cari_nama(mhs);
          3:cari_ip(mhs);}
          4:filter_ip(mhs);
          {5:filter_jk(mhs);
          6:filter_prodi(mhs);
          7:maxmin_ip(mhs);}
          8:hapus(mhs);
          9:cetak(mhs);
          10:sorting_ip(mhs);
          11:writeln('Terima Kasih');
          end;
          readln;
     end
     until (pil=10);

end.

0 komentar:

Posting Komentar