Program data mahasiswa. memakai array of record. untuk lebih jelasnya compile saja kode dibawah ini. pakai aplikasi Dev-PASCAL yah.. Tampilannya seperti ini :
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-------------------------------------------
error gan
ReplyDelete