Thursday 10 April 2014

Program data mahasiswa (Pascal)


Program data mahasiswa. memakai array of record. untuk lebih jelasnya compile saja kode dibawah ini. pakai aplikasi Dev-PASCAL yah.. Tampilannya seperti ini :



kalau ada yang perlu ditanyakan, langsung coment di bawah atau lewat FB :

https://www.facebook.com/lutfi.brown

Kalau bisa programnya dibenerin n dikembangin yah. terus kirim lewat fb diatas :D

Nih langsung copy ajah Source Code nya :
----------------------------------------------------------------------------------------

Program Mahasiswa;
uses crt;

const
     MaksData = 20;
     MaksNilai = 3;
Type
    TNilai = record
            matkul : string;
            uts : integer;
            uas : integer;
            end;
      //aray of TNilai
      DataNilai = array[1..MaksNilai] of TNilai;

    TMhs  = record
            nim : string;
            nama : string;
            nilai : DataNilai;
            n_akhir: real;
            end;
    //array of TMhs
    DataMhs = array [1..MaksData] of TMhs;
var
   Data : DataMhs;
   jumlah_data : integer;
   menu : integer;
{------------------------------------------------------------------------------}
      procedure tambahNilaiMhs(var nilai:DataNilai);
      var
         i : integer;
      begin
          for i:=1 to MaksNilai do       // karena MaksNilai = 3 maka akan ada 3 Datanilai yang diinput
          begin
              writeln();
              writeln('======================================');
              write('  Nama Mata Kuliah : ');readln(nilai[i].matkul);
              write('  Nilai UTS        : ');readln(nilai[i].uts);
              write('  Nilai UAS        : ');readln(nilai[i].uas);

          end;
          writeln();
          writeln('selesai... ');
      end;
{------------------------------------------------------------------------------}
      procedure inputData(index : integer;var DMhs:DataMhs);
      var
         pilih : char;
      begin
           write(' NIM    :');readln(DMhs[index].nim);
           write(' Nama   :');readln(DMhs[index].nama);

           repeat
           writeln();
           write('Mau masukan nilai ? [y/t] '); readln(pilih);
           until((pilih = 'y') or (pilih = 't'));         // jika pilih = 'y' maka akan memanggil prosedur tambahNilaiMhs
           writeln();

           if (pilih = 'y') then
                tambahNilaiMhs(DMhs[index].nilai);       //memanggil prosedur tambahNilaiMhs
           writeln('silahkan tekan sembarangan tombol untuk melanjutkan...');
      end;
{------------------------------------------------------------------------------}
   procedure isiDataMahasiswa(var DMhs:DataMhs);
   // Digunakan untuk mengisi data Mahasiswa pertama sampai jumlah_data yg diinputkan
   var
      i : integer;

   begin
   clrscr;
        for i:=1 to jumlah_data do      // terjadi perulangan dari 1 sampai jumlah_data
        begin
           writeln('Jumlah data maksimum adalah ',MaksData,' dan Array Data yang digunakan ',jumlah_data);
           writeln();
           writeln('Masukan Data Mahasiswa ke-',i);
           writeln();

              inputData(i,DMhs);     // memanggil prosedur inputData
           readkey;
        end;
   end;
{------------------------------------------------------------------------------}
  Procedure ubahDataMahasiswa(var DMhs:DataMhs);
   //  digunakan untuk me-replace data yang sudah ada sebelum nya sesuai indeks yang dimasukkan
   var
      index,i : integer;

   begin
   clrscr;

       repeat   // jika indeks yang dimasukkan lebih dari jumlah_data maka akan mengulang hingga indeks yang dimasukkan tepat

        write('Masukan index data mahasiswa yang ingin di rubah : ');readln(index);

       until(index<=jumlah_data);

           writeln('Data Mahasiswa ke-',index);       //menampilkan data mahasiswa yang indeks nya dimasukkan
           writeln();
           writeln(' NIM    :',DMhs[index].nim);
           writeln(' Nama   :',DMhs[index].nama);
           writeln();

           if(DMhs[index].nilai[1].uts <> 0) then     // jika mahasiswa memiliki nilai maka akan ditampilkan
           begin
            for i :=1 to MaksNilai do
            begin

               writeln('Nilai     : ');
               writeln(' Matkul   :',DMhs[index].nilai[i].matkul);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uts);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uas);
               writeln('=====================================');

            end;

           end;
           writeln();
           writeln('=================================');
           writeln(' Silahkan masukan data yang baru');
           writeln('=================================');
           inputData(index,DMhs);                // memanggil prosedur inputData untuk mengisi data pengganti
           readkey;

   end;
{-----------------------------------------------------------------------------}
   procedure SelectionDataMahasiswa(var DMhs:DataMhs);
   {digunakan untuk melihat data mahasiswa yang diinputkan indeks nya}
    var
      index,i : integer;

   begin
     clrscr;
       repeat
             write('Masukan index data mahasiswa yang ingin di lihat : ');readln(index);     // input indeks

       until(index <= jumlah_data);

           writeln('Data Mahasiswa ke-',index);  // menampilkan data
           writeln();
           writeln(' NIM    :',DMhs[index].nim);
           writeln(' Nama   :',DMhs[index].nama);
           writeln();

           if(DMhs[index].nilai[1].uts <> 0) then     // menampilkan nilai jika terdapat data nilai
           begin
            for i :=1 to MaksNilai do  // maksNilai = 3
            begin

               writeln('Nilai     : ');
               writeln(' Matkul   :',DMhs[index].nilai[i].matkul);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uts);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uas);
               writeln('=====================================');

            end;
           end;
   readkey;
   end;
{---------------------------------------------------------------------------}
Procedure cari(var Dmhs: DataMhs);
{User menginput NIM yg yang akan dicari}
{Prosedur ini akan menelusuri data dari pertama sampai akhir, dan akan mencocok kan NIM inputan dengan NIM data mahasiswa,
apabila NIM ditemukan maka data akan ditampilkan, jika NIM tidak cocok maka akan muncul Pemberithuan "Tidak Cocok"}
var
   i:integer;
   nimcari:string;

begin
clrscr;

       writeln('Cari Mahasiswa berdasarkan NIM : ');
       writeln('=================================');
       writeln('Masukkan Nim Mahasiswa yang Anda Cari : ');read(nimcari);

for i:= 1 to jumlah_data do
    begin
    if (DMhs[i].nim = nimcari) then    //jika cocok maka akan terjadi proses berikut:
    begin
         writeln('=============================');
         writeln('Data mahasiswa ke-',i,' cocok');
         writeln(' Mahasiswa ke-',i);
         writeln(' NIM    :',DMhs[i].nim);
         writeln(' Nama   :',DMhs[i].nama);
         writeln();
         if(DMhs[i].nilai[1].uts <> 0) then
           begin
            for i :=1 to MaksNilai do
            begin

               writeln('=============================');
               writeln(' Nilai    : ');
               writeln(' Matkul   :',DMhs[i].nilai[i].matkul);
               writeln(' Nilai UTS:',DMhs[i].nilai[i].uts);
               writeln(' Nilai UTS:',DMhs[i].nilai[i].uas);
               writeln('=====================================');

            end;
           end;
    end
    else            //jika NIM tidak cocok
    writeln('Data mahasiswa ke-',i,' tidak cocok');

end;
readln;
readln;
end;
{----------------------------------------------------------------------------}
procedure tampildata(var Dmhs: DataMhs);
// untuk menampilkan semua data NIM dan Nama dari data pertama sampai akhir
var
i:integer;

begin
clrscr;
writeln(' Tampil data Mahasiswa ');
writeln('=================================');


for i:= 1 to jumlah_data do
    begin
         writeln(' Mahasiswa ke-',i);
         writeln(' NIM    :',DMhs[i].nim);
         writeln(' Nama   :',DMhs[i].nama);
         writeln();
         if(DMhs[i].nilai[1].uts <> 0) then
           begin
            for i :=1 to MaksNilai do
            begin

               writeln('Nilai     : ');
               writeln(' Matkul   :',DMhs[i].nilai[i].matkul);
               writeln(' Nilai UTS:',DMhs[i].nilai[i].uts);
               writeln(' Nilai UTS:',DMhs[i].nilai[i].uas);
               writeln('=====================================');

            end;
           end;
end;
readln;
end;
{----------------------------------------------------------------------------}
Procedure HapusData(index : integer;var DMhs:DataMhs);
{menghapus data mahasiswa yg dimasukkan indeks nnya}
      var
         pilih : char;
      begin
      repeat
           writeln();
           write('Mau Hapus data ? [y/t] '); readln(pilih); // validasi apakah benar akan menghapus
      until((pilih = 'y') or (pilih = 't'));
      if (pilih = 'y') then    //jika pilih y maka akan hapus data
      begin
           writeln();
           DMhs[index].nim:='';   // mengubah data menjadi NULL
           DMhs[index].nama:='';  // mengubah data menjadi NULL






      end;
      end;
 {----------------------------------------------------------------------------}
 Procedure HapusDataMahasiswa(var DMhs:DataMhs);
 {untuk menginput indeks data yang AKAn dihapus dan menampilkan data mahasiswa yang AKAN dihapus}
   var
      index,i : integer;

   begin
   clrscr;

       repeat

        write('Masukan index data mahasiswa yang ingin di hapus : ');readln(index);

       until(index<=jumlah_data);

           writeln('Data Mahasiswa ke-',index);
           writeln();
           writeln(' NIM    :',DMhs[index].nim);
           writeln(' Nama   :',DMhs[index].nama);
           writeln();

           if(DMhs[index].nilai[1].uts <> 0) then       // menampilkan nilai
           begin
            for i :=1 to MaksNilai do
            begin

               writeln('Nilai     : ');
               writeln(' Matkul   :',DMhs[index].nilai[i].matkul);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uts);
               writeln(' Nilai UTS:',DMhs[index].nilai[i].uas);
               writeln('=====================================');

            end;

           end;
           writeln();
           writeln('====================================');
           writeln(' Data Tersebut Di Atas Akan Dihapus ');
           writeln('====================================');
           HapusData(index,DMhs);     // memanggil prosedur hapusData
           readkey;

   end;

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

        repeat
              textcolor(12);
              gotoxy(15,5);writeln('|  Program Data Mahasiswa  |');
              gotoxy(15,6);writeln('============================');
              gotoxy(15,8);write  ('Masukan jumlah data : ');readln(jumlah_data);
        until (jumlah_data<MaksData);  // validasi agar jumlah data tidak melebihi maksdata

        repeat
        clrscr;
        gotoxy(10,8);writeln('==========================================');
        gotoxy(10,9);writeln('      Menu Program Data Mahasiswa');
        gotoxy(10,10);writeln('==========================================');
        gotoxy(10,11);writeln('      1. Tambah Data Mahasiswa');
        gotoxy(10,12);writeln('      2. Ubah Data Mahasiswa');
        gotoxy(10,13);writeln('      3. Lihat Data dengan index');
        gotoxy(10,14);writeln('      4. Cari Data Berdasarkan NIM (Sequential)');
        gotoxy(10,15);writeln('      5. Lihat Semua Data');
        gotoxy(10,16);writeln('      6. Hapus Data');
        gotoxy(10,17);writeln('      7. Keluar');
        gotoxy(10,18);writeln('-----------------------------------------');
        gotoxy(10,19);write('      Masukan Menu : '); readln(menu);

        case menu of   // Memanggil Prosedur yg telah dibuat
          1 : isiDataMahasiswa(Data);
          2 : ubahDataMahasiswa(Data);
          3 : SelectionDataMahasiswa(Data);
          4 : cari(Data);
          5 : tampildata(Data);
          6 : HapusDataMahasiswa(Data);
        end;

        until (menu=7);// akan keluar program jika user memilih menu 7. Keluar
end.
------------------------------------Thank YOU-------------------------------------------

1 comment: