Wednesday 24 December 2014

Turbo Pascal Program Data Mahasiswa

Program Data_Mahasiswa;

Uses wincrt;

{------------TYPE RECORD------------}

  Type Tabel_Mhs = Record
     nim : String;
     nama: String;
     tgl : String;
  End;

  Type Tabel_MK = Record
     kode_MK : String;
     Nama_MK : String;
     jum_SKS : Integer;
  End;

  Type Tabel_Nilai = Record
     tugas     : Real;
     UTS       : Real;
     UAS       : Real;
     nil_Angka : Real;
     nil_Huruf : Char;
  End;

Var
  Mhs  : Array[1..20] of Tabel_Mhs;  
  MK   : Array[1..20] of Tabel_MK;
  Nilai: Array[1..20] of Tabel_Nilai;
  Angka: Real;
  i, n : Integer;


  {---PROCEDURE INPUT DATA MAHASISWA---}

     Procedure Mahasiswa;
     Begin
      With Mhs[i] do
        Begin          
          write('Nim Mahasiswa    : ');readln(nim);
          write('Nama Mahasiswa   : ');readln(nama);
          write('tgl lahir        : ');readln(tgl);
          Writeln;
        End;
      End;

  
  {---PROCEDURE INPUT MATAKULIAH---}

      Procedure Mata_Kuliah;
      Begin
       With MK[i] do
         Begin
           Write('Kode Mata Kuliah : ');readln(kode_MK);
           Write('Nama Mata Kuliah : ');readln(Nama_MK);
           Write('Jumlah SKS       : ');readln(jum_SKS);
           Writeln;
         End;
      End;


  {---FUNCTION HITUNG NILAI ANGKA---}

      Function Nilai_Mhs(tugas,UTS,UAS : Real; Var nil_Angka : Real) : Real; 
      Begin
        nil_Angka:= (0.2 * tugas) + (0.3 * UTS) + (0.5 * UAS);
        Nilai_Mhs:= nil_Angka;
      End;


{-----------PROGRAM UTAMA----------}

Begin
Write('Jumlah Data : ');readln(n);
Writeln;
For i:= 1 to n do
Begin
Writeln('Data',i);
Writeln('-------');
Mahasiswa;
Mata_Kuliah; 

With Nilai[i] do
   Begin
     Write('Nilai Tugas      : ');readln(tugas);
     Write('Nilai UTS        : ');readln(UTS);
     Write('Nilai UAS        : ');readln(UAS);
     Writeln('Nilai Angka      : ',Nilai_Mhs(tugas,UTS,UAS,nil_Angka):0:2);
     Angka:=Nilai_Mhs(tugas,UTS,UAS,nil_Angka);

      if Angka >= 81 then
         nil_Huruf:= 'A'
      Else if Angka >= 71 then
         nil_Huruf:= 'B'
      Else if Angka >= 61 then
         nil_Huruf:= 'C'
      Else if Angka >= 51 then
         nil_Huruf:= 'D'
      Else if Angka < 51 then
         nil_Huruf:= 'E';
     
     Writeln('Nilai Huruf      : ',nil_Huruf);readln;
   End;
 End;


{---MENAMPILKAN DATA DALAM BENTUK TABEL---}

Begin
Clrscr;
gotoxy(1,2);Writeln('DATA REPORT':45);
gotoxy(1,4);Writeln('[----][-------------][---------------][-----------][-----------][-------][-----]');
gotoxy(1,5);Writeln('[ NO ][     NIM     ][      Nama     ][  Kode MK  ][  Nama MK  ][  N.A  ][ N.H ]');
gotoxy(1,6);Writeln('[----][-------------][---------------][-----------][-----------][-------][-----]');

For i:= 1 to n do
 Begin
  gotoxy(1,6+i);Write('[    ][             ][               ][           ][           ][       ][     ]');
  gotoxy(3,6+i);Write(i);
  gotoxy(9,6+i);Write(Mhs[i].nim);
  gotoxy(24,6+i);Write(Mhs[i].nama);
  gotoxy(41,6+i);Write(Mk[i].Kode_MK);
  gotoxy(54,6+i);Write(Mk[i].nama_MK);
  gotoxy(67,6+i);Write(Nilai[i].nil_Angka:0:2);
  gotoxy(77,6+i);Write(Nilai[i].nil_Huruf);
 End;             
End;

No comments:

Post a Comment