Anda di halaman 1dari 117

OPTIMASI PENJADWALAN KULIAH

MENGGUNAKAN METODE ALGORITI\1A GENETIKA

RUSDIANA
(100091020205)

JURUSAN TEKNIK INFORMATIKA


FAI(ULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAl\tl NEGE.RI
SYARIF HIDAYATULLAH
JAKARTA
2004MI1425 H

OPTIMASI PENJADWALAN l(ULIAH


MENGGUNAKAN METODE ALGORITMA GENETII<A

Oleh:

RUSDIANA

100091020205

Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta

JURUSAN TEKNIK INFORMA.TIKA


FAI\:ULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGEIU
SYAIUF HIDAYATULLAH
JAKARTA
2004MI1425 H

OPTIMASI PENJADWALAN KULIAH


MENGGUNAKAN METODE

ALGORIT~vlA

GENETIKA

Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta

Oleh:

RUSDIANA
(100091020205)

Mengetahui
Pembimbing II,

Victor Amrizal, M.Kom

Khodijah lulliyah, S.Kom


Mengetahui,

Ketua Jurusan Teknik Informatika

...........

<.._,_..,~~--~~

--~~-~

Ir. Bakri La Katjong MT.M.Kom


NIP. 470 035 764

Dengan ini menyatakan bahwa skripsi yang ditulis oleh :


Nama

Rusdiana

Nim

100091020205

Program Studi: Tekoik Infommtika


Judul Skripsi : Optimasi

Penjadwalan

Kuliah

Menggunakan

AlgoritmaGenetika.
Dapat diterima sebagai syarat kelulusan untuk memperoleh gelar Saijana Komputer
pada jurusan Teknik Informatika, Fakultas Sains dan Tekoologi Universitas Islam
Negeri Syarif Hidayatullah Jakarta.

Jakarta, Juli 2004


Menyetujui,
Dosen Pembimbing
Pembimbing I,

Pembimbing II,

Victor Amrizal, M.Kom

Khodijah

ulliyah, S.Kom

Mengetahui,

De~,

DR. Syopiansvlaya Putra, M.S1s


NIP. 150 317 965

Ketua Jurusan,

<JZy}i.{/L-~-

Ir. Bakri La Katjong, MT. M.Kom


NIP. 150 317 958
I /tr~

/l

PERNYATAAN

DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-BENAR


ASLI HASIL I(ARYA SENDJRI YSNG BELUM PERNAH DIAJUKAN SEBAGAI
SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAU
LEMBAGA MANAPUN.

Jakarta, Juli 2004

Rusdiana
100091020205

ABSTRAK

RUSDIANA (10001920205), Optimasi Penjadwalan Kuliah Menggunakan


Metode Algoritma Genetika. (Di bawah bimbingan VICTOR AMRIZAL,
M.Kom dan KHODIJAH HULLIYAH S.Kom).

Pembuatan jadwal kuliah yang selama ini masih bersifat manual


mcnggunakan file-file excel dirasakan sangat sulit oleh pihak Fakultas Sains dan
Teknologi. Hal ini disebabkan terbatasnya kesiapan waktu mengajar dosen
(khususnya dosen luar) dan terbatasnya lokal yang tersedia, yang mengakibatkan
adanya jadwal kuliah yang bentrok sehingga menghambat proses belajar
mengajar.
Untuk mengatasi hal tersebut, penulis melakukan penelitian pada Fakultas
Sains dan Teknologi dengan menggunakan metode observasi, metode interview,
metode studi pustaka dan metode RAD (Rapid Application

D1~velopment)

untuk

membuat suatu sistem (perangkat lunak) sebagai fasilitas yang membantu dalam
pembuatan jadwal kuliah yang diharapkan mampu menempatkan kesiapan
mengajar dosen pada lokal yang tersedia secara optimal.
Optimalisasi

pembuatan

jadwal

kuliah

tersebut

penulis

lakukan

menggunakan konsep algoritma genetika yang dikembangkan oleh John Holland


dari Universitas Michigen (1975), ia mengatakan bahwa "setiap masalah yang
berbentuk adaptasi

(alami

maupun

buatan) dapat diformulasikan dalam

terminologi genetika yang merupakan simulasi dari proses evolusi Darwin dan

Operasi Genetika atas kromosom. Konsep algoritma genetika ini, penulis


interpretasikan kedalam sebuah bahasa pemrograman Borland Delphi 6.0 dan
database paradox melalui proses pembentukan populasi, evaluasi, seleksi,
rekombinasi, dan mutasi yang menghasilkan sistem optimasi penjadwalan kuliah.

Kata Kunci : Metode Algoritma Genetika, GAs (Genetic Algoritma Sistem)

KATA PENGANTAR

Assalamu'alaikum Wr. Wb.


Segala puji bagi Allah yang telah melimpahkan rahmat, hidayah serta inayahNya sehingga penulis dapat menyelesaikan skripsi ini. Selanjutnya shalawat beserta
salam penulis sampaikan kepada Rasulullah SAW, yang telah membawa umatnya
dari zaman kebodohan menjadi zaman yang penuh dengan ilmu pengetahuan.
Dalarn penyusunan skripsi ini penulis rnenyadari sepenuhnya bahwa
penyelesaian skripsi ini tidak akan berhasil dengan baik tanpa bimbingan serta
dukungan yang pcnuh kctulusan dari berbagai pihak. Untuk itu penulis ingin
mengucapkan terima kasih yang sedalam-dalarnnya kepada:
1. Bapak DR. Syopyansyah Jaya Putra, M.Sis, selaku dekan Fakultas Sains dan
Telmologi.
2. Bapak Viktor Amrizal, M.Korn dan Ibu Khodijah Hulliyah, S.Kom, selaku
pembimbing skripsi yang secara kooperatif telah rnernberikan bimbingan dan
saran-saran yang sangat berharga.
3. Ayahanda Yusuf Arifin dan ibunda Julaeha yang telah rnemberikan dukungan
baik rnoril maupun rnateril dalam menyelesaikan skripsi ini.
4. Kakak dan adik tercinta yang telea11 memberikan bantuan, dukungan dan saransaran yang sangat berharga bagi penulis.
5. Naily Ulva Sa'adah, yang telah mernberikan motivasi dan bantuan yang sangat
berharga baik moril rnaupun materil.

6. Riza Abdul Aziz dan Ary Adithya, yang telah memberikan bantuan fasilitas
clalam mengerjakan skripsi ini.
7. !bu Ovah clan Bapak Gunacli, yang telah memberikan bantuan dalam
menyelesaikan skripsi ini.
8. Teman-teman KPA, Anas Dainuri, Alhacli Mustakim, Dedi Ahmad Dinuri, Luthfy
Burhanudin, Ujang Husni!, Dadan Luthfi Firdaus, Dade dan Iman yang telah
membantu dan mendukung dalam pengerjaan skripsi ini.
9. teman- teman kelas yang tak clapat penulis sebutkan satu persatu yang telah
memberikan dukungan dan saran dalam mengerjakan skripsi ini.
"Tidak ada gading yang retak'', penulis menyadari bahwa masih perlu
penyempumaan dalam skripsi ini. Segala saran dan kritik untuk penyempumaan
skripsi ini sangat diharapkan penulis. Akhir kata penulis berharap semoga skripsi ini
dapat memberikan manfaat bagi yang membutuhkan.
Wassalam
Jakarta, Juli 2004

Penulis

DAFTARISI

Halam an
Halaman Sampul ................................................................................................. i
Halaman Judul ..................................................................................................... ii
Halaman Persetujuan Pembimbing ..................................................................... iii
Halaman Pengesahan .......................................................................................... iv
Halaman Pernyataan ............................................................................................ v
Abstraksi ............................................................................................................. vi
Kata Pengantar .................................................................................................... vii
Daftar Isi .............................................................................................................. x
Daftar Lampiran .................................................................................................. xv

BAB I PENDAHULUAN .................................................................................. 1


1.1 Latar Belakang .................................................................................. I

1.2 Perumusan Masalah ........................................................................... 2


1.3 Batasan Masalah ................................................................................ 2
1.5 Tujuan dan Manfaat Penelitian ......................................................... 3

1.6 Metode Penelitian .............................................................................. 4


1.6.1 Metode Studi Pusataka ............................................................. 4
1.6.2 Metode Interview ..................................................................... 4
1.6.3 Metode Observasi ..................................................................... 4
1.6.4 Metode Pengembru1gan Sistem ................................................ 4

1.6.4 Metode Pengembangan Sistem ................................................ 4


1.7 Kerangka Pemikiran .......................................................................... 5
1.8 Sistematika Penulisan ....................................................................... 8

BAB II TINJAUAN PUSTAKA ........................................................................ 10


2.1 Pengertian Algoritma Genetika ......................................................... 11
2.1.1 Pembangkitan dan Pengujian ................................................... 11
2.1.2 Pendakian Bukit ....................................................................... 11
2.1.3 Pencarian Terbaik Pertama ...................................................... 12
2.1.4 Simulated Annealing ................................................................ 14
2.2 Struktur Umum Algoritma Genetika ................................................. 15
2.3 Komponen-Komponen Utama Algoritma Genetika ......................... 16
2.3.1 Teknik Penyandian ................................................................... 16
2.3 .2 Prosedur Inisialisasi ................................................................. 17
2.3.3 Fungsi Evaluasi ........................................................................ 17
2.3.4 Seleksi ...................................................................................... 17
2.3.5 Operator Genetika .................................................................... 18
2.3.6 Penentuan Parameter ................................................................ 18
2.4 Seleksi ............................................................................................... 19
2.4. l Rank Based Fitnees .................................................................. 19
2.4.2 Seleksi Roda Roulette .............................................................. 19
2.4.3 Stochastic Universal Sampling ................................................ 20

2.4.4 Seleksi Lokal ............................................................................ 20


2.4.5 Seleksi Dcngan Pemotongan .................................................... 20
2.4.6 Seleksi Dengan Tournament .................................................... 21
2.5 Rekombinasi ...................................................................................... 21
2.5. I Rekombinasi Diskret.. .............................................................. 21
2.5.2 Rekombinasi Menengah ........................................................... 22
2.5.3 Rekombinasi Garis .................................................................. 23
2.5.4 Penyilangan Satu Titik ............................................................. 24
2.5.5 Penyilangan Banyak Titik ........................................................ 24
2.5.6 Penyilangan Seragam ............................................................... 25
2.5.7 Penyilangan Dengan Permutasi.. .............................................. 26
2.6 Alat Perancangan Sistem ................................................................... 26
2.6.1 STD (State Transition Diagram) .............................................. 27
2.6.2 Spesipikasi Proses .................................................................... 29
2.6.3 Struktur Program ...................................................................... 29
2.7 Sekilas Tentang Delphi 6.0 ............................................................... 30
2. 7.1 Sejarah Delphi .......................................................................... 30
2.7.2 Mengenal IDE Delphi .............................................................. 31
2.8 Sekilas Tentang Paradox ................................................................... 36
2.8. I Menu ........................................................................................ 36
2.8.2 Tool Bar ................................................................................... 36

BAB III METODE PENELITIAN ................................................................... 38


3.1 Tahapan Pendekatan Sistem ........................................................... 38
3.2 Tahapan Pengembangan Sistem ..................................................... 39

BAB IV ANALISA DAN PERANCANGAN SISTEM ............................... 41


4.1 Analisa Kebutuhan Sistem ............................................................. 41
4.2 Konsep Penjadwalan Kuliah Menggunakan
Algoritma Genetika ........................................................................ 41
4.2.1 Prosedur Inisialisasi ............................................................... 42
4.2.2 Pembangkitan Populasi Awai ............................................... 45
'1.2.3 Evaluasi ................................................................................. 46
4.2.4 Seleksi ................................................................................... 46
4.2.5 Rekombinasi .......................................................................... 47
4.2.6 Mutasi .................................................................................... 48
4.3 Perancangan Sistem ....................................................................... 50
4.3. l Rancangan Proses .................................................................. 50
4.3 .2 Rancangan Basis Data ........................................................... 52
4.3.3 Rancangan Menu ................................................................... 56

BAB V IMPLEMENT ASI ................................................................................ 63


5.1 Sarana-Sarana Pendukung Sistem Penjadwalan Kuliah ................ 63
5 .1.1 Perangkat Keras .................................................................... 63
5.1.2 Perangkat Lunak .................................................................... 63

5.2 Gambaran Dan Fungsi Modul-Modul Program ............................. 64


5.3 Rancangan Modul .......................................................................... 66

BAB VI PENUTUP ............................................................................................ 72


6.1 Kesimpulan .................................................................................... 76
6.2 Saran ............................................................................................... 77
DAFTAR PUSTAKA ......................................................................................... 78
LAMPIRAN ........................................................................................................ 79

DAFTAR LAMPIRAN

A. Lampiran Source Code ................................................................................... 76

1. Modul Data Dosen ..................................................................................... 76


2. Modul Data Mata Kuliah ........................................................................... 80
3. Modul Set Data Lokal ................................................................................. 84
4. Modul Data Kesiapan Mengajar ................................................................ 86
5. Modul Data Kesiapan Waktu Mengajar..................................................... 89
6. Modul Proses Pembuatan Jadwal Kuliah ................................................... 90
7. Modul Jadwal Kuliah ................................................................................. 96

BABI
PENDAHULUAN

1.1 Latar Belalrnng

Universitas Islam Negeri (UIN) Syarif Hidayatullah Jakarta, merupakan


salah satu institusi pendidikan tinggi agama 1slam terbesar di Indonesia sejak
tahun 1963 yang kemudian berubah statusnya menjadi sebuah universitas pada
tahun 2002. Perubahan status ini memunculkan program-program studi baru yang
bersifat umum seperti teknik informatika, sistem informasi, agribisnis, MIPA,
ekonomi, manajemen, dan lain-lain. Program studi baru tersebut memerlukan
dosen-dosen yang berkualitas dalam ha! belajar mengajar, yang saat ini masih
menggunakan dosen-dosen dari luar. Adanya dosen-dosen :tuar ini menyebabkan
sulitnya menentukan jadwal kuliah yang tepat sesuai dengan kesiapan waktu
mereka dan lokal yang tersedia, dimana kesiapan waktu mengajar dosen (dosen
luar) dan lokal sangatlah terbatas.
Kesulitan menentukan jadwal kuliah tersebut dikarenakan proses
pembuatan jadwal kuliah yang masih bersifat manual dalam bentuk arsip dan filefile micro>oft excel. Proses seperti ini sangat membutuhkan ketelitian dan waktu
yang banyak, sehingga sering kali terjadi jadwal yang bentrok yang menyebabkan
proses belajar mengajar terhan1bat.
Untuk mengatasi kesulitan tersebut, salah satu fakultas yang memiliki
program studi barn, Fakultas Sains dan Teknologi, merasa pt:rlu dibuatnya sistem

yang dapat memudahkan pembuatan jadwal kuliah ym1g secara otomatis


menempatkan kesiapan mengajar dosen pada lokal yang tersedia secara optimal.
Optimalisasi kesiapan mengajar dosen ini penulis lakukan menggunakmi metode

algoritma genetika yang selmna ini banyak digunakmi untuk menyelesaikmi


masalah optimasi, Orvosh dan Davis (1997, 202).
Berdasarkan latar belakang permasalahan tersebut, maka dilakukan
penelitian terhadap jadwal kuliah Fakultas Sains dm1 Teknologi untuk membuat
fasilitas yang mmnpu mengatasi masalah-masalah diatas clengmi mengmnbil judul
OPTIMASI PENJADW ALAN KULIAH MENGGUNAKAN

METODE

ALGORITMA GENETIKA.

1.2 Perumusan Masalah


Permasalahan penelitian ini di runrnskmi sebagai berikut :
a. Bagaimana mernbuat jadwal dosen agar tidak terjadi bentrok.
b. Bagaimmia membuat jadwal kuliah ym1g secara otomatis menempatkmi
kesiapan mengajar dosen pada lokal yang terseclia secara optimal.
c. Bagaimmia menampilkan jadwal kuliah yang clapat dilihat oleh pihak
akaclemik, closen, dan mahasiswa.

1.3 Batasan Masalah


Berclasmkan penelitimi yang penulis lakukmi, kenyataarmya, bmiyak
sekal i parameter yang harus cligunakmi sehingga penulis merasa kesulitmi clalam

mengembangkan sistem ini. Untuk itu penulis batasi p~ngembangan sistem ini
hanya pada optimalisasi kesiapan mengajar dosen untuk shift yang telah
ditetapkan.

1.4 Tujuan dan Manfaat Penelitian


Tujuan penelitian yang penulis lakukan adalah untuk membuat sistem
(perangkat lunak) sebagai fasilitas yang membantu pihak akademik Fakultas
Sains dan Teknologi dalam pembuatan jadwal kuliah yang diharapkan dapat
ditcrapkan scbagai pengganti sistcm yang selama ini masih manual.
Sesuai dcngan pcnnasalahan pcnclitian yang sudah disebutkan, maka
manfaat penelitian dapat dirumuskan sebagai berikut:
a. Manfaat yang bersifat akademis, yaitu : Memberikan sumbangan ilmiah bagi
pengembangan sistem menggunakan metode algoritma genetika.
b. Manfaat yang bersifat praktis, yaitu : Membantu memecahkan kesulitankesulitan yang dihadapi dalam pembuatan jadwal kuliah, diantaranya:
c. Proses pembuatan jadwal kuliah tidak memerlukan waktu yang banyak
(cepat).
d. J adwal kuliah tidak ada yang bentrok.
e. Kendali lokal dapat dilakukan dengan cepat.
f.

Penggunaan lokal yang optimal.

1.6 Metodologi Pcnelitian


Untuk memperoleh data clan informasi yang cliperlukan, acla beberapa
metocle yang penulis lakukan :
1.6.1 Metode Studi Pustaka
Yaitu pengumpulan data dan infonnasi dengan ca.ra membaca buku-buku
referensi yang dapat dijadikan acuan pembahasan dalam masalah ini.
1.6.2 Metode Interview
Koentjaraningrat

(1985:167)

mengartikan

interview sebagai sebuah

tindakan pengumpulan informasi dengan cara mengajukan sejumla11


pertanyaan secara lisan dan dijawab secara lisan pula. Dalam ha! ini penulis
mengadakan tanya jawab dengan staff akademik Fakultas Sains dan
Teknologi yang mengurusi pembuatanjaclwal kuliah.
1.6.3 Metode Observasi
Observasi adalah sebuah metode pengumpulan informasi dengan cara
pengamatan atau peninjauan langsung terhaclap obyek penelitian, yaitu
mengumpulkan dan menelaah data-datajadwal kuliah yang telah cliterapkan
di Fakultas Sains dan Teknologi.
1.6.4 Metode Pengembangan Sistem
Pengembangan sistem dalam penelitian ini penulis lakukan menggunakan
tiga

tahap

siklus

pengembangan

model

RAD

(Rapid Aplication

Development), Kendal & Kendal (1998, 200), Gambar 1.1.

a. Perencanaan Syarat-Syarat
Pada tahap

ini

masalah,

tujuan,

dan

syarat-syarat informasi

didcfinisikan dari hasil pcngumpulan data dan informasi dari Fakultas


Sains dan Teknologi serta mempelajari proses-proses yang te1jadi
dalam pembuatan jadwal kuliah.
b. Workshop Desain
Pada tahap ini dilakukan perancangan dan kontruksi yang melibatkan
pengguna dan penganalisis dalam mendefinisikan proses-proses bisnis
yang te1jadi.
c. Pelaksanan
Pada tahap ini dilakukan pengujian terhadap sistem dan melakukan
pengenalan terhadap sistem.

1.7 Kerangka Pcmikiran

Jadwal kuliah terdiri dari 6 variabel yang menentukan yaitu dosen, mata
kuliah, hari, shift, semester, dan jurusan. Keenam variabel ini dikombinasikan
(inisialisasi) menjadi kesiapan mengajar dosen dan disimpan dalam basis data.
Agar kesiapan mengajar dosen dapat secara otomotis dibuat dan ditempatkan
pada lokal yang tersedia secara optimal maka semua kesiapan mengajar dosen ini
harus melalui proses algoritma genetika yang disebut GAs (Genetic Algorithms

Sistem) yang terdiri dari proses pembangkitan populasi awal, evaluasi, seleksi,
rekombinasi, dan mutasi (lihat Gambar 3.1 dibawah ini).

Data
MataKuliah

Data
Dosen

Shift
Hari

Semester

BASIS
DATA

=1

Jurusan

Inisialisasi Kesiapan Dosen

Bangki~ka w ~:P1 ~.~u.I~~

. ; . --1
(Kesiapan Mengajar
Dosen)
....

_(]/\ 5~ 1_=~----------__

Ya

Evaluasi Fungsi Tujuan

___.-
Tidak

Rekombinasi

Mutasi

OUTPUT
(Jadwal Kuliah)

f1---'

Gambar 1.2 Diagram Alir Sistem Penjadwalan Dosen

1.7.l Pembangkitan Populasi Awai


Pada proses ini dilakukan pembangkitkan kesiapan mengajar dosen yang
telah diinisialisasi menggunakan keenam data diatas.
1. 7.2 Evaluasi
Pada proses ini, kesiapan mengajar dosen yang sudah dibangkitkan diatas
dievaluasi dengan menjumlahkan kesiapan mengajar dosen masing-masing.
1.7.3 Seleksi
Proses ini akan menyeleksi kesiapan mengajar dosen yang telah dievaluasi
untuk menentukan kesiapan mengajar dosen mana yang sesuai untuk
menempati lokal yang tersedia. Proses seleksi ini dilakukan dengan
menggunakan hari dan shift yang telah ditetapkan.
1.7.4 Rekombinasi
Setelah proses seleksi dilakukan, kesiapan mengajar dosen hasil seleksi
akan mengalami rekombinasi dengan cara mengambil data hasil seleksi
sebanyak lokal yang tersedia dan melakukan penyilangan (crossover)
terhadap proses seleksi untuk hari dan shift berikutnya.
1.7.5 Mutasi
Proses mutasi akan dilakukan pada kesiapan mengajar dosen yang benarbenar be! um mendapatkan lokal.
Proses algoritma genetika ini akan dilakukan berulang-nlang sampai
kesiapan mengajar dosen yang telah di inisialisasi kosong (menempati lokal yang
tersedia).

1.8 Sistcmatika Penulisan

BAB I PENDAHULUAN
Dalam bab ini, penulis mengemukakan tentang latar belakang penelitian,
tujuan penelitian, perumusan masalah, batasan masalah, manfaat
penelitian, metodologi penelitian, kerangka pemikiran dan sistematika
penulisan.

BAB II TINJAUAN PUSTAKA


Dalam bab ini, penulis mengemukakan dan membahas teori tentang
pengertian A!goritma Genetika, struktur umum Algoritma Genetika,
komponen-komponen Algoritma Genelika, seleksi, rekombinasi, mutasi,
alat perancangan sistem, sekilas tentang delphi 6.0 sebagai aplikasi yang
digunakan dan paradox sebagai media penyimpanan data dalan1 sistem
penjadawalan kuliah.

BAB III METODE PENELITIAN


Dalam bab ini dijelaskan tahap-tahap pengembangan sistem yang
meliputi, ta11apan pendekatan sistem dan ta11apan pengembangan sistem.

BAB IV ANALISA DAN PERANCANGAN

Dalam bab ini, penulis menjelaskam analisa kebu.tuhan sistem, konsep


penjadwalan kuliah menggunakan algoritma genetika, perancangan
sistem yang meliputi perancangan proses, perancangan basis data,
perancangan menu perancangan masukan dan perancangan keluaran.

BAB V IMPLEMENT ASI

Dalam bab ini penulis mendeskripsikan sarana-sarana pendukung sistem


penjadwalan kuliah, gambaran modul-modul fungsi program dan rancangan
interface (antamrnka) masing-masing modul.
BAB VI PENUTUP

Dalarn

bab

ini

penulis

mencoba

rnenyimpulkan

pe1masalahan-

perrnasalahan yang dibahas serta mengemukakan saran-saran yang


dianggap perlu.

BABU
TINJAUAN PUSTAKA

2.1 Pcngcrtian Algoritma Genetika


Algoritma Genetika adalah algoritma pencarian heuristik yang didasarkan
alas mekanisme evolusi biologis, Sri Kusuma Dewi (2003, 279). Keberagaman
pada evolusi biologis adalah variasi dari kromosom antar individu organisme.
Variasi kromosom ini akan mempengaruhi laju reproduksi dan tingkat
kemampuan organisme untuk !etap hidup. Pada dasarnya1 ada 4 kondisi yang
sangat mempengaruhi proses evolusi, Sri Kusuma Dewi (2003, 279), yaitu :
a. Kemampuan organisme untuk melakukan reproduksi.
b. Keberadaan populasi organisme yang bisa melakukan reproduksi.
c. Keberagaman organisme dalam populasi
d. Perbedaan kemampuan untuk survive.
Ada 4 metode pencarian heuristik, Sri Kusuma Dewi (2003, 31) :
a. Pembamgkitan dan Pengujian (Generate and Test).
b. Pendakian Bukit (Hill Climbing).
c. Pencarian Terbaik Pertama (Best First Search).
d. Simulated Annealing

11

2.1.1 Pembangkitan Dan Pengujian (Generate a11d Test).


Pada prinsipnya metode ini merupakan penggabungan antara depth
first search dengan pelacakan mundur (backtracking), yaitu bergerak ke
belakang menuju pada suatu keadaan awal. Nilai pengujian berupajawaban
'ya' atau 'tidak'.

Gambar 2.1 Metode Generate clan Test

2.1.2 Pendakian Bulat (Hill Climbing).


Metode ini hampir sama dengan metode pembangkitan dan
pengujian, hanya saja proses pengujian dilakukan menggunakan fungsi

12

heuristik. Pembangkitan keadaan berikutnya sangat tergantung pada


feedback dari prosedure pengetesan. Tes yru1g berupa fungsi heuristik ini
akan menunjukkan seberapa baiknya nilai tekanan yang dirunbil terhadap
keadaan-keadaan lainnya yang mungkin.

ABCD

BACD

ABCD

ACBD

DBCA

DACB

BACD

DCAB

Gambar 2.2 Metode Hill Climbing


2.1.3 Pencarian Terbaik Pertama (Best First Search).

Metode Best First Search ini merupakan kombinasi dari metode

depth first search dan metode bread first search dengan mengrunbil
kelebihan dari kedua metode tersebut. Apabila

pada pencarian dengan

metode hill climbing tidak diperbolehkan untulc kemba.li ke node pada level
yang lebih rendah meskipun node pada level yang lebih rendah tersebut
memiliki nilai heuristik yang lebih baik, lain halnya dengan metode best

13

first search ini. Pada metode best first search, pencarian diperbolehkan
mengunjungi node yang ada di level yang lebih rendah, jika ternyata node
pada level yang lebih tinggi ternyata memiliki nilai heuristik yang lebih
buruk.

Gambar 2.3 Metode Best First Search

14

2.1.4 Simulated Annealing.


Ide dasar simulated annealing terbentuk dari pemrosesan logam.

Annealing (memanaskan kemudian mendinginkan) dalam pemrosesan


logam ini adalah suatu proses bagaimana membuat bentuk cair berangsurangsur menjadi bentuk yang lebih padat. Seiring dengan penurunan
temperatur. Simulated Annealing biasanya digunakan untuk penyelesaian
masalah yang mana perubahan keadaan dari suatu kondisi ke kondisi yang
lainnya membutuhkan ruang yang sangat luas, misalkan perubahan gerakan
dengan menggunakan permutasi pada traveling salesman problem.

Garn bar 2.4 Metode Simulated Annealing

15

2.2 Struktur Um um A/goritnw Genetika


Pada algoritma ini, teknik pencarian dilakukan sekaligus atas sejumlah
solusi yang mungkin yang dikenal dengan istilah populasi. Individu yang
terdapat dalam satu populasi disebut dengan istilah kromosom, Charles L Karr
(1999, 94). Kromosom ini merupakan suatu solusi yang masih berbentuk simbol.
Populasi awal dibangun secara acak, sedangkan populasi berikutnya merupakan
basil evolusi kromosom-kromosom melalui iterasi yang disebut dengan istilah
gcncrasi, Sri Kusuma Dewi (2003, 280). Pada setiap generasi kromosom akan
melalui proses evaluasi dengan menggunakan alat ukur yang disebut fungsi
fitnees. Nilai fitnees dari suatu kromosom akan menunjukkan kualitas kromosom
dalam populasi tersebut. Proses ini dapat direpresentasikan dalam algoritma
sederhana Algoritma Genetika sebagai berikut:

Bangkitkan
Populasi
Awai

Evaluasi
Fungsi Awai

Apakah
Kriteria
Optimasi
Tcrcapai

Ya

Tidak

Awai

Seleksi
._____,.__
Rekombinasi

Mutasi

Gambar 2.5 Diagram Alir Genetiic Algorithms Sederhana

Individu
Individu
Terbaik

16

2.3 Komponcn-Komponcn Utama Algoritma Ge11etika


Ada 6 komponen utama dalam A lgoritma Genetika Charles L Kan & L.
Michael Freeman (1999, 93-97) dan Sri Kusuma Dewi (2003, 280-283) yaitu:
2.3.1 Teknik Penyandian
Teknik penyandian disini meliputi penyandian gen dari kromosom.
Gen merupakan bagian dari kromosom. Satu gen biasanya akan mewakili
satu variabel. Gen dapat direpresentasikan dalam bentuk : string bit, pohon,
array, bilangan real, daftar aturan, elemen permutasi, elemen program, atau
representasi lainnya yang dapat di implementasikan untuk operator genetika.
Gambar 2.6 menunjukkan representasi string bit clan pohon.

String Biner
0

Gen 1

Gen 2

Pohon
(*(-(ab))( +(*(CD))(/(EF))))

0
Gen3

17

Demikian juga, kromosom dapat direpresentasikan dengan menggunakan :


String bit

: !OOOJ l,010011,001100, dan seternsnya.

Bilangan real

: 66,65,-67,68,69,567,578,987, dan seterusnya.

Elemen permutasi

: E2,E I O,E8,E20, dan seterusnya.

Daftar Aturan

: Rl,R2,R3, dan seterusnya.

Elemen program

: pemrograman genetika.

Struktur lainnya
2.3.2 Prosedur lnisialisasi
Ukuran populasi tcrganlung pada masalah yang akan dipecahkan clan
jenis operator genetika yang diimplementasikan. Setelah ukuran populasi
ditentukan, kemudian harus dilakukan inisialisasi terhadap kromosom yang
terdapat pada populasi tersebut.
2.3.3 Fungsi Evaluasi
Ada 2 hal yang harus dilakukan dalam melakukan evaluasi
kromosom, yaitu: evaluasi fungsi objektif (fungsi tujuan) clan konversi
fungsi objektif ke dalam fungsi fitnees. Secara mnum, fungsi fitnees
diturunkan dari fimgsi objektif dengan nilai yang tidak negatif. Apabila
ternyata fungsi objektif memiliki nilai negatif, maka perlu ditambahkan
suatu konstanta c agar nilai fitnees yang terbentuk mertjadi tidak negatif.
2.3.4 Seleksi
Seleksi ini bertujuan untuk memberikan kesempatan reproduksi yang
lebih besar bagi anggota populasi yang paling fit.

18

2.3.5 Operator Genetika.


Ada 2 operator genetika, yaitu :
a. Operator untuk rnelakukan rekombinasi, yang terdiri dari :

Rekombinasi bernilai real, yaitu : rekombinasi diskret, rekombinasi


intermediate (rnenengah), rekombinasi garis, dan rekombinasi garis
yang diperluas.

Rekombinasi bernilai biner (crossover), yaitu : crossover satu titik,


crossover banyak titik, dan crossover seragam.

Crossover dengan pennutasi.

b. Mutasi , yang terdiri dari :

Mutasi bernilai real.

Mutasi bernilai biner.

Kemungkinan te1jadinya mutasi sangat jarang sekali, dan diharapkan


tidak te1jadi.
2.3.6 Penentuan parameter.
Yang dimaksud dengan parameter disini adalah parameter kontro l
algoritma genetika, yaitu : ukuran populasi (popsize), peluang croosover
(pc) dan peluang muatasi (pm).

19

2.4 Seleksi
Seleksi akan menentukan individu-individu mana :mja yang akan dipilih
untuk dilakukan rekombinasi dan bagaimana offspring terbentuk dari individuindividu terpilih tersebut. Langkah pertama yang dilakukan dalam seleksi ini
adalah pencarian nilai fitnees. Masing-masing individu dalam suatu wadah seleksi
akan menerima probabilitas reproduksi yang tergantung pada nilai objektif dirinya
sendiri terhadap nilai objektif dari semua individu dalam wadah seleksi tersebut.
Nilai Jitnees inilah yang nantinya akan digunakan pada tahap-tahap seleksi
b<.:rikutnya. Ada beberapa rnetode seleksi dari induk, Sri Kusuma Dewi (2003,
283-289), yaitu:
2.4.1 Rank-Based Fitnees
Pada rank-based fitnees,

populasi

diurutkan

menurut

nilai

objektifnya. Nilai fitnees dari tiap-tiap individu hanya tergantung pada


posisi individu tersebut dalam urutan, dan tidak dipengaruhi oleh nilai
objektifnya.
2.4.2 Seleksi Roda Roulette (Roulette Whele Selection)
Metode seleksi roda roullette ini merupakan metode yang paling
sederhana, dan sering juga dikenal dengan nama stochastic sampling with

replacement. Pada metode ini, individu-individu dipetakan dalam suatu


segmen garis secara berurutan sedemikian hingga tiap-tiap segmen individu
merniliki ukuran yang sama dengan ukuran fitneesnya. Sebuah bilangan
random dibangkitkan dan individu yang memiliki segmen dalam kawasan

20

bilangan random tersebut akan terseleksi. Proses ini diulang hingga


diperoleh sejumlah individu yang diharapkan.
2.4.3 Stochastic Universal Sampling

Stochastic universal sampling memiliki nilai bias no! dan


penyebaran yang minimum. Pada metode ini, individu-individu dipetakan
dalam suatu segmen garis secara berurutan sedmikian hingga tiap-tiap
segmen individu memiliki ukuran yang sama dengan ukuran fitneesnya
seperti halnya pada seleksi roda roulette. Kemudian diberikan sejumlah
pointer sebanyak individu yang ingin diseleksi pada garis tersebut.
Andaikan N adalah jumlah individu yang akan diseleksi, maka jarak anatar
pointer adalah JIN, dan posisi pointer pe1tama diberikan secara acak pada
pada range [I, I IN].
2.4.4 Seleksi Lokal (Local Selection).
Pada seleksi lokal, setiap individu yang berada didalam konstrain
tertentu disebut dengan nama lingkungan lokal. Interaksi antar individu
hanya dilakukan didalam wilayah tersebut. Lingkungan tersebut ditetapkan
sebagai struktur dimana populasi tersebut didistribusi. Lingkungan tersebut
j uga dapat dipandang sebagai kelompok pasangan-pasangan yang potensial.

2.4.5 Seleksi dengan Pemotongan (Truncation Selection)


Pada metode-metode seleksi yang telah dijelaskan terdahulu, seleksi
dilakukan secara alami. Pada seleksi dengan pemotongan ini, lebih berkesan
sebagai seleksi buatan. Seleksi ini biasanya digunakan oleh populasi yang

21

jumlahnya sangat besar. Pada metode ini, individu-individu diurutkan


bcrdasarkan nilai fitncesnya. Hanya individu-individu yang terbaik saja yang
akan diseleksi scbagai induk. Parameter yang digunakan dalam metode ini
adalah suatu nilai an1bang trunc yang mengindikasikan ukuran populasi yang
akan diseleksi sebagai induk yang berkisar antara 50% - 10%. Individuindividu yang ada dibawah nilai ambang ini tidal< al<an menghasilkan
keturunan.
2.4.6 Seleksi dengan Turnamcn (Tournamen Selection)
Pada metode seleksi dengan tournarnen ini, al<an ditetapkan suatu
nilai tour imtuk individu-individu yang dipilih secara random dari suatu
populasi. Individu-individu yang terbaik dalam kelompok ini akan diseleksi
sebagai induk. Parameter yang digunakan pada metode ini adalal1 ukuran
tour yang bernilai antara 2 sampai N (jumlah individu dalarn suatu populasi).

2.5 Rekombinasi
Ada tujuh bentuk rekombinasi menurut Sri Kusuma Dewi (2003, 290-299)
yaitu:
2.5.1 Rekombinasi Diskret
Rekombinasi diskret akan menukar nilai variabel antar kromosom
induk. Misalkan ada 2 individu dengan 3 variabel, yai1u :
induk I :

12

25

induk2:

123

34

22

untuk tiap-tiap variabel induk yang menyumbangkan variabelnya ke anak


dipilih secara random dengan probabilitas yang sama.
Sampell :

Sampel2:

Setelah rekombinasi, kromosom-kromosom baru yang terbentuk :


Anakl :

123

Anak2:

12

Rekombinasi ini dapat digunakan untuk sembarang variabel (biner, real,


atau simbol).
2.5.2 Rekombinasi Menengah
Rekombinasi menengah merupakan metode rekombinasi yang
hanya dapat digunakan untuk variabel real (clan variabel yang bukan biner).
Nilai variabel anak dipilih disekitar dan antara nilai-nilai variabel induk.
Anak dihasilkan menurut aturan sebagai berikut :
Anak = indukl +alpha (induk2-indukl)
dengan alpha adalah faktor skala yang dipilih secara random pada interval
[-d, 1+d], biasanya d=0.25. Tiap-tiap variabel pada anak merupakan basil
kombinasi variabel-variabel menurut aturan diatas dengan nilai alpha
dipilih ulang untuk tiap variabel.
Misalkan ada 2 individu dengan 3 variabel, yaitu :
Induk I :

12

25

Induk2:

123

34

23

Misalkan nilai alpha yang dipilih adalah :


Sampell :

0,5

] ,1

-0,1

Sampel2:

0,1

0,8

0,5

setelah rekombinasi, kromosom-kromosom baru yang terbentuk :


Anakl :

67,5

1,9

2,1

Anak2:

23,1

8,2

19,5

Rekombinasi ini dapat digunakan untuk sembanmg variabel (biner, real,


atau simbol).
2.5.3 Rekombinasi Garis
Pada dasarnya rekombinasi gar1s ini sama dengan rekombinasi
menengah, hanya, saja nilai alpha untuk semua variabel sama. Misalkan ada
2 kromosom dengan 3 variabel, yaitu :
Indukl :

12

25

Induk2:

123

34

Untuk tiap-tiap variabel induk yang menyumbangkan variabelnya ke anak


dipilih secara random dengan probabilitas yang sania.
San1pell :

0,5

Sampel2 :

0, 1

setelah rekombinasi, kromosom-kromosom baru yang terbentuk :


Anakl:

67,5

14,5

19,5

Anak2:

23,l

22,9

7,9

24

2.5.4 Penyilangan Satu Titik


Pada penyilangan satu titik, posisi penyilangan k (k=l,2 ... ,N-1)
dengan N adalah panjang kromosom yang diseleksi secara random.
Variabel-variabel ditukar antar kromosom pada titik tersebut untuk
menghasilkan anak.
Misalkan ada 2 kromosom dengan panjang 12,
Jndukl :

0 1110

0101110

lnduk2:

1 10 10

0 0 0 1 10 1

posisi penyilangan terpilih misalkan 5, maka setelah penyilangan diperoleh


kromosom-kromosom barn :
Anakl:

01110

0001101

Jnduk2:

11010

0101110

2.5.5 Penyilangan Banyak Titik (Multi-Point Croosover)


Pada

penyilangan

banyak

titik,

posisi

penyilangan

k;

(k=l,2, ... ,N-1, i=l,2 ... ,m) dengan N adalah panjang kromosom diseleksi
secara random dan tidak diperbolehkan ada posisi yang sama, serta
diurutkan naik. Variabel-variabel ditukar antar kromosom pada titik
tersebut untuk menghasilkan anak.
Misalkan ada 2 kromosom dengan panjang 12,
Indukl :

011100101110

Induk2:

1 10 10 0 0 0 1 I 0 1

25

Posisi penyilangan yang terpilih,


Misalkan (m=3) :

10

Setelah penyilangan, diperoleh kromosom-kromosom baru :


Anakl:

01

0100

!Oil

01

Anak2:

11

1100

0011

10

2.5.6 Penyilangan Seragam (Unifilrm Croosover)


Pada penyilangan seragam, setiap lokasi memiliki potensi sebagai
tempat penyilangan. Sebuah mask penyilangan dibuat sepanjang panjang
kromosom secara random yang menwtjukkan bit-bit dalam mask yang
mana induk akan mensupply anak dengan bit-bit yang ada. Induk mana
yang akan menyumbangkan bit ke anak dipilih secara random dengan
probabilitas yang sama. Disini, anakl akan dihasilkan dari induk2 jika bit
mask bernilai 0. sedangkan anak2 dihasilkan dari kebalikan mask.
Misalkan ada 2 kromosom dengan panjang 12,
Indukl :

0 I I I00 I0 I I I0

Induk2:

110100001101

Maka bit,
Sampell :

100111001101

Sampel2:

011000110010

Setelah penyilangan diperoleh, kromosom-kromosom baru,


Indukl :

010100001100

Induk2:

11I I00 I0 I l I I

26

2.5.7 Penyilangan dengan Permutasi


Pada penyilangan dengan permutasi ini, kromosom-kromosom anak
diperoleh dengan cara memilih sub-barisan suatu tour dari satu induk
dengan tetap menjaga urutan dan posisi sejumlah kota yang mungkin
terhadap induk yang lainnya.
Misalnya:
lndukl :

(1 2 3

I 4 567 I

lnduk2:

(4 5 3

181 6

I 9 2)

Anakl :

(x x x

18 7 6

Anak2:

(xx x

4567

I xx)

8 9)

x x)

Disini, kita memperoleh pemetaan, 1-4, 8-5, 7-6, 6-7 kemudian kita copy
sisa gen di indukl ke anakl dengan menggunakan pemetaan yang sudah
ada.
Anakl :

(1-4 2 3

8 1 6

8-5 9)

Anakl :

( 4 2 3

8 7 6

9)

Lakukan hal yang sama untuk anak2


Anak2:

C4-1

Anak2:

5-8 3 I 4 5 6 7 / 9 2)

8 3

I 4 5 6 7 / 9 2)

2.6 Alat Perancangan Sistem


Menurut Pressman (1997, 186) ada tiga alasan dalam memakai rancangan
untuk membuat suatu sistem :

27

a. agar dapat terfokus pada bagian sistern yang penting.


b. Agar dapat terfokus pada bagian yang akan rnengalarni perubahan-perubahan
clan koreksi, serta clokumentasi.
c. Agar clapat rnengerti akan lingkungan pernakai, sehingga sistern tersebut lebih
baik.
2.6.1 STD (State Transition Diagram)

State

transition

diagram

merupakan

suatu

diagran1

yang

rnrnggarnbarkan bagairnana slate dihubungkan dengan slate yang lain pada


satu waktu. Stale Transition Diagram menggarnbarkan suatu stale yang
mernpunyai konclisi climana clapat rnenyebabkan perubahan satu state ke

state yang lain (Hoffer, George, clan Valacich, 1996, 364).


State Transition Diagram

pada dasarnya merupakan sebuah

diagram yang terdiri dari state clan transisi atau perpinclahan slate. Transisi
atau perpinclahan state tercliri dari kondisi clan aksi. Transisi cliantara keclua
keaclaan pada urnumnya clisebabkan oleh suatu konclisi. Kondisi aclalah
suatu kejadian yang dapat diketahui oleh system. Seclangkan aksi adalah
tinclakakn yang dilakukan oleh sistem apabila terjacli perubahan stale atau
rnerupakan reaksi clari sistern.
State 1

Aksi
State 2

Garn bar 2.6 Contoh Perubahan State

28

Adapun komponen atau simbol yang digunakan dalam diagram ini


aclalah:
a. Modul
Menggunakan simbol lingkaran kecil (Gambar 2.7) yang mewakili
modul yang dipanggil apabila te1jadi suatu tinclakan.

0
Gambar 2.7 Notasi Modul
b. Tam pi Ian kondisi (state)
Merupakan layer yang ditampilkan menurut keadaan atau atribut, untuk
memenuhi suatu tindakan pada waktu tertentu yang mewakili suatu
bentuk keberaclaan atau kondisi tertentu, disimbolkan dengan gambar
kotak (Gambar 2.8)

Gambar 2.8 Notasi Tampilan

c. Tinclakan (state transition)


Menggunakan symbol anak panah (Gambar 2.9) disertai keterangan
tindakan yang dilakukan.

Gambar 2.9 Notasi Tindakan

29

2.6.2 Spesifikasi Proses


Spesifikasi proses merupakan penjelasan dari proses-proses yang
te1jadi cliclalam sistem, spesifikasi proses harus dimengerti baik oleh
pemakai maupun pembuat sistem. Spesifikasi proses akan menjadi
pecloman bagi pembuat program dalam membuat kode program maupun
clokumentasi. Ada banyak cara untuk membuat spesifikasi proses antara
lain clnegan memakai (Pressman, 1997, 341-358):
a. Tabel keputusan (Decision Tables).
b. Bahasa terstruktur (pseudocode) dengan :

Bahasa inggris terstruktur.

Bahasa Indonesia terstruktur.

c. Bagan alur (flowchart).


cl. Diagram notasi - Shneiclerman (Diagram N - S)
e. Bentuk narasi atatu cerita (missal dalam bahasa lnggris, Indonesia).
2.6.3 Struktur Program
Struktur program menggambarkan bagan atau diagram control
distribusi yang bersipat top - down, penampilnya clibagi tingkat-pertingkat,
antara lain:
a. Top Level Module yaitu sebagai model yang menentukan atau
mengambil keputusan. (decision making).

30

b. Low level module yaitu digunakan sebagai masukan, pemrosesan atau


control sehingga menghasilkan keluaran.
Struktur program ini bertujuan untuk memb<:rikan gambaran proses
informasi yang masuk, mengalir dan keluar, pada program yang akan
dibuat secara garis besar dengan menggunakan bagan terstruktur
(Pressman, 1997, 337).

2.7 Sckilas Tentang Delphi 6.0


2.7.1 Sejarah Delphi

Ide munculnya delphi sebenarnya berasal dari bahasa pemrograman


terkenal, yaitu pascal, Antony Pranata (2001, 1-2). Bahasa pascal sendiri
telah diciptakan pada tahun 1971 oleh ilmuwan dari Swiss, yaitu Niklaus
Wirth. Nama pascal diambil dari ahli matematika dm1 filsafat dari prancis,
yaitu Blaise Pascal (1623 - 1662).
Sejak saat itu, muncul beberapa versi pascal diantaranya Turbo
Pascal yang dirilis oleh Borland International Incorporation tahun 1983.
Turbo Pascal ini memiliki sedikit perbedaan dengan pascal standar, antara
lain dalam ha! pengolahan string, penambahan beberapa prosedure, fungsi
dan sebagainya.
Turbo pascal yang muncul pertama kali hanya dapat dijalankan di
sistem operasi DOS. Namun dalam perkembangan selanjutnya, Borland

31

International Incorporation juga merilis Turbo pascal yang berjalan di


Windows 3.X, yaitu Turbo Pascal For Windows.
Pada tahun 1992, Borland International menggabungkan turbo
Pascal For Dos dan Turbo Pascal For Windows menjadi satu paket bahasa
pemrograman yang dikenal dengan nama Borland Pascal Versi 7. Karena
pemrograman Windows dengan Borland Pascal masih dirasa cukup sulit,
sejak tahun I 993 Borland International mengembangkan bahasa pascal
yang bcrsi l'at visual . hasi I dari pcngcmbangan ini adalah dirilisnya Delphi
1 pada tahun 1995.
Perkembangan delphi tidak sampai disitu. Satu tahun berikutnya,
pada tahun 1996, Borland International merilis delphi 2 yang sudah bersifat
32 bit. Dengan kata lain delphi 2 hanya bisa dijalankan pada windows 95
dan windows NT.
Pada tahun 1997, I 998, dan 1999, Borland International yang
berganti nama menjadi Inprise Corporation berturut-turut kembali merilis
menyempurnakan delphi, yaitu 3, 4, dan 5. Sampai sekarang 2004 Borland
International telah merilis delphi 7.
2.7.2 Mengenal IDE Delphi
Pada dasarnya IDE milik delphi dibagi menjadi enam bagian utama,
Antony Pranata (2001, 2) yaitu menu, speed bar, component palette, form
designer, code editor, dan objek inspector, dan objek treeview. Lihat
gambar 2.6 untuk lebih jelasnya.

32

At 19,Scm lfl 17

Ccl I

Object Inspector

Code Editor

Gambar 2.10 Bagian-bagian dari IDE Delphi

a. Menu
Menu pada delphi memiliki kegunaan seperti menu pada
aplikasi windows lainnya. Dari menu ini, kita bisa memanggil atau
menyimpan program, menjalankan dan melacak bug program, dan
sebagainya. Singkatnya segala sesuatu yang berhubungan dengan IDE
delphi, dapat anda lakukan dari menu.

33

b. Speed Bar
Speed bar atau sering juga disebut toolbar berisi kurnpulan
tombol yang tidak lain adalah pengganti beberapa item menu yang
sering digunakan. Dengan kata lain, setiap tombol pada speed bar
menggantikan salah satu item menu. Sebagai contoh, tombol kiri atas
aclalah pengganti menu File I New, tombol clisebelah kanannya aclalah
pengganti menu File I Open, dan seterusnya.
,' .
~x l!i. l'.I
';'_jLl;.J!Qlgi&l~~ ~
m~------

_J"

a tL:

- - - -

- -

=.I

2'1
i f!L:fl

H I a. 'il

Gambar 2.11 Speed Bar pada IDE Delphi


c. Component Palette
Component palette berisi kumpulan ikon yang melambangkan
komponen-komponen pada VCL (Visual Component Library). VCL
adalah pustaka komponen milik clelphi, yang clapat cligunakan untuk
membangun sebuah aplikasi. Pada Component Palette, terclapat
beberapa tab, yaitu Standard, Aclditionals, Data Access, dan sebagainya.
Untuk lebih jelasnya perhatikan gambar 2.8.
rn.J3JIJ.!r1ilj@fflh

'

AWifu4@&001

MmiUI

S<and&d IAd&iornii I Win32 I s...iem I DalaAccm I D~a Coniroisl DalaSnao I BDE I ADO I <lit"'""' I lnledl.,. j l\lebSeMce.il!.

:~~!__ ~-_A ~~ Ll!J ~---"-~ ~""' [j lgj D ril


Gnmbar 2.12 Component Palette

34

d. Form Designer
Sesuai dengan namanya, fo1m designer merupakan tempat
dimana kita merancang jendela dari aplikasi windows kita. Perancangan
forn1 dilakukan dengan meletakkan komponen-komponen yang diambil
dari Component Palette.
e. Code Editor
Code editor adalah tempat dimana kita menuliskan program.
Disini kita dapat meletakkan pernyataan-pernyataan dalam bahasa
object pascal. Pemrogram borland Pascal pasti tidak asing lagi dengan
code editor karena sangat serupa dengan editor milik Borland Pascal.
Yang perlu kita perhatikan pada code inspector adalah kita tidak perlu
menulis seluruh kode sumber. Delphi telal1 menuliskan semacam
kerangka w1tuk anda. Untuk lebih jelasnya perhatikan gambm 2.9
lci!fltibi!,f

"'!

lf<>1ml

Ur.ll

,!I)

....J v .. ..u..r/Cm 1 ~.,,,

unu. lhuc1i

....J Ua1

li'indmm,

fl""""1J""

!'lyallt:tl"' Va,,iQnt:D, Cl""""" <lr<1;;>htc .. ,

1>.1- .. t<>l:i"'
typ<1

1Tor>nl c.1-'1 p'Fo.-ru)


pro<>odoro ForlCro:<>te
JH'iyalo

-0

(Sea~"'

TCbj<!<::<;);

( p,_-~ ... ,,,,., ,/~"'""'""''" )

l'ubJ~<:

daci"rtion" /

.,nd;

"""oodu.-.. TTor:m1.roni:.c::c..tc(!;lo:nder' Ta>.l"'""l'

""""'
<>nd

.........
:~J

Gambar 2.13 Code Editor pada IDE Delphi

Con"ralo, T<>-""""

35

f.

Object Inspector
Object Inspector digunakan untuk mengubah karakteristik
sebuah komponen. Pada object inspector, ada 2 buah tab yaitu
properties dan event. Anda dapat mengaktiflrn.n salah satu tab

1111

dengan mengkl ik teks properties a.tau events (Iihat. gambar 2.10).


DmliiiW 1 ItMWWtiilt~WMi1!~EI'

CMt4;11.t1im;o

!Form1

!Form1

TForn-.1

Properties j Events

:.::J

Properties Events

TForm1

~~,-~~~~--.

I Action

...

I Ar.tiver.nntrnl
'......t\li.Qll....
AlphaBlf3f\d
AlphaBlellcfllalue... .
llAnchms
AutoScroH
AutoSize
BiDiMode
11 Borderlcons
. Borch;rtY,le
BmderWidth
caption

. (;li~~tJ:loi$#1\
ClientWidth
. ... c.a.1.or....

,11 constraints

alNone
Fal;e
255
(akleft,akT.opl....

oi\4CiiVate .........................................,.....................
iJnc;;Fie$ize.......................................,.......................
::i:foGli~:::::::::::::::::: : ::::::::::::: ::::::::::::

True
False
bdLefff oRiQbt.......

OnC!ose
.... i'inciOseQue;y ..........................................

rincoliSi;:;;;;Ji'i'e;t

lloiSY.stemtvl"nu,b,itvl
bsSizeable

. i:i~~i~~i~~;u.P.::::: ::::::::::::;::::'.:'.':::::
OnCreate
Fo1mCreate

i:m:i

anoiliclicl<"..................... -

273

a) Properties

i:JiiQ.fili~iiY.~::::::::;: :::::::::::::;::::;:;:::::::::

.... .IJ..".'P<l"\I!?~ ....................:.........................:::........:...........


OnDockDr!:le

onoockriver ..............,,...........,.:, . :...............

825

[]deii1Face

irsi2et:~r;;trainisi

r::::::\1~p :::::::::.::.::.::::::.::::::::: fru;;:.:::::::::::::.:J


[Alishown

Action
.. t\.ctiy.,~g~.~91.. ........................................................... .
......tvl..,n.u................................................................................. .
ObjectMenultom .

i:i i :i i i!P.1-;;P.::::::::::=::;:: :::::::::::::::::::r:::::::::::.:.i

,i 1A11 shown

,z

b) Events (kt:iadian)

Gambar 2.14 Object Inspector pada IDE Delphi


Pada tab properties kita dapat mengubah properti dari komponen
kita. Secara mudah, properti dapat dijelaskan sebagai data yang
menentukan karakteristik komponen. Sebagai contoh pada gan1bar
2.1 Oa kita lihat properti-properti milik sebuah form, seperti Active

36

Control, Auto Scrool, Auto Size, Border Icons, Border Style dan lainlain.
Pada tab events, kita dapat menyisipkan kode untuk menangani
kejadian tertentu. Kejadian bisa dibangkitkan karena beberapa ha!,
pengklikan mouse, penekanan tombol keyboard, penutupan jendela, dan
sebagainya. Untuk lebih jelasnya perhatikan gambar 2. lOb. pada
gambar ini kita bisa melihat beberapa kejadian, seperti onActive,
onClick, onClose, dan sebagainya.

2.8 Sekilas Tentang Paradox


Paradox adalah sebuah database yang berfungsi untuk menyimpan data.
Sama seperti database lainnya, paradox memiliki IDE yang dibagi menjadi dua
bagian yaitu menu dan tool bar (Gambar 2.15).
2.8.1 Menu
Menu pada paradox memiliki kegunaan seperti menu pada database
lai1mya. Dari menu ini, kita bisa memanggil atau menyimpan tabel,
membuat tabel baru dan lain-lain.
2.8.2 Toolbar
Toolbar berisi tombol-tombol yang berfungsi untuk membuka tabel,
menyimpan tabel dan membuat tabel barn.

37

Gambar2.15 IDE Paradox

BAB III
METODE PENELITIAN
Seperti yang telah dibahas pada bab I, dalam pengembangan sistem
penjadwalan kuliah ini, ada beberapa tahapan yang dilakukan diantaranya :
3.1 Tahapan Pendekatan Sistem

Tahapan ini dilakukan sebelum tahap pengembangan sistem. Pada talmp


ini dilakukan analisis kebutuhan dan identifikasi. sistem.
a. Analisis Kebutuhan
Pada talmp ini, ditentukan pengguna dan kebutuhannya terhadap
sistem. Pengguna dari sistem yang akan dibangun adalal1 pihalc akademik
Fakultas Sains dan Teknologi yang mengurusi penjadwalan kuliah.
b. Identifikasi Sistem
Jadwal kuliah merupalcan salah satu bentuk pengaturan proses belajar
mengajar yang diarahkan untuk mencapai tujuan y:mg diharapkan oleh
Fakultas Sains dan Teknologi. Dalam pembuatannya, pihalc Falcultas Sains
dan Teknologi merasa kesulitan. Hal ini disebabkan pembuatan jadwal kuliah
yang bersifat manual sehingga terjadi jadwal kuliah yang bentrok.

Oleh

karena itu pihak Fakultas Sains dan Teknologi merasa perlu dibuatnya suatu
sistem yang dapat menangani pembuatanjadwal kuliah tersebut.

39

3.2 Tahapan Pengembangan Sistem


Pengembangan sistem yang penulis Jakukan menggunakan tiga tahap
siklus pengembangan model RAD (Rapid Aplication Development), Kendall &
Kendall (2003 : 237), (Gambar 3.1).

Fasc Pcrencanaan
Syarat syarat

Menentukan
Tujuan dan syarat-syarat
lnformasi

Fase Kontruksi I Workshop Desain PAC

Umpan Balik
Pengguna

Membangun
Sistem

Bckerja dcngan
Pengguna untuk
Sistcrn Perancangan

Menggunakan
masukkan dari
pengguna

iI
rI
I'
'

+
Mernperkenalkan Sistern
Fase Pclaksnnaan

Gambar 4.1 Siklus Pengembangan Sistem Model RAD

40

a. Perencanaan Syarat-Syarat
Dalam fase ini, pengguna (pihak Fakultas Sains dan Teknologi) dan
penganalisis be1iemu untuk mengidentifikasi tujuantujuan aplikasi atau
sistem serta untuk mengidentifikasi syarat-syarat informasi yang ditimbulkan
dari tujuan-tujuan tersebut. Hal ini penulis uraikan sebagai analisa terhadap
sistem yang berjalan dan sistem yang akan diterapkan.
b. Workshop Deasin
Pada tahap ini dilakukan perancangan proses yaitu perancangan proses-proses
yang akan terjadi di dalam sistem, perancangan basis data yaitu perancangan
tabel-tabel yang akan digunakan, perancangan antarmuka yaitu perancangan
antarmuka masukkan dan antarmuka keluaran, serta dilakukan pengkodean
terhadap rancangan-rancangan yang telah didefinisikan.
c. Pelaksanan
Pada taliap ini dilalrnkan pengujian terhadap sistem dan melakukan
pengenalan terhadap sistem.

41

BAB IV
ANALISA DAN PERANCANGAN SISTEM

4.1 Analisa Kebntuhan Sistem


Proses pembuatan jadwal kulial1 pada Fakultas Sains dan Teknologi
selama ini masih secara manual menggunakan file-file excel. Proses ini dilakukan
oleh pihak jurusan rnasing-masing (Kepala Jurusan). Kepala jurusan akan
rneminta setiap dosen untuk bersedia mengajar mata kuliah yang telah ditetapkan
dan meminta kesiapan waktu mengajar pada hari dan jam yang telal1 ditetapkan
pula. Setelal1 semua kesiapan mengajar dosen terkumpul, dilakukan pembuatan
jadwal kulial1 berdasarkan lokal yang tersedia pada Fakultas Sains dan Teknologi.
Dari proses pembuatan jadwal kuliah tersebut penulis definisikan datadata yang diperlukan dalam pengembangan sistem yang akan dibuat, diantaranya,
data dosen, data mata kuliah, data hari, data jam (shift), data lokal, data jurusan,
dan data semester.

4.2 Konsep Penjadwalan Kuliah Menggunakan Metode Algoritma Genetika.


Data-data yang diperlukan dalam pembuatan jadwal kulial1 akan
dikombinasikan (prosedur inisialisasi) menjadi kesiapan mengajar dosen.
Kesiapan mengajar dosen ini akan diproses pada sistem Algoritma Genetika
(GAs) yang terdiri dari proses pembangkitan populasi awal, evaluasi, seleksi,
rekombinasi dan mutasi yang menghasilkan jadwal kulia11 yang optimal.

42

4.2.1 Prosedur Inisialisasi


Pada proses ini dilakukan inisialisasi kesiapan mengaJm dosen.
Sebagai contoh diberikan 5 data dosen dan 5 data mata kuliah (Tabel 3 .1
dan Tabel 3.2) yang akan ditempatkan pada lokal 401dan402.
NO

KODE

NAMA

DOSOOI

Dra. Nani Radiastuti

DOS002

Ria Arafiah, S.Si

DOS003

Budi Sudrajat, M. Hum

DOS004

Dra Nuriyah Thohir, MM

DOS005

Ir Rahmat Kurnia, M.Si

Tabel 3.1 Data Dosen Fakultas Sains dan Teknologi

NO

KODE

NAMA

MKOOI

Dasar-dasar Agronomi

MK002

Biologi

MK003

Matematika

MK004

Bhs. Arab

MKOOS

Kalkulus

Tabet 3.2 Data Mata Kuliah Fakultas Sains dan Teknologi

Dari 2 tabel diatas maka inisialisasi kesiapan mengajar dosen


dilakukan sebagai berikut:

43

a.

Kade Dasen

: DOSOOl

Nama

: Dra. Nani Radiastuti

Kade Mk : MKOOl
Mata Kuliah

: Dasar-dasar Agronon1i

Jurusan

: Teknik lnformatika

Semester : 1

~
ft

I. 07.30-09.10
II. 09.20-11.00
111.11.10-12.50
IV.13.00-14.40
v. 14.50-16.30
Vl.16.40-18.20
b.

SENIN

SELASA

RABU

KAMIS

JUMAT

SABTU

(l)

(2)

(3)

(4)

(5)

(6)

A
B

A
B

Kade Dasen

: DOS002

Nama

: Ria Arafiah, S.Si

Kade Mk : MK002
Mata Kuliah

: Bialogi

Jurusan

: Teknik lnformatika

Semester : I

~
ft

I. 07.30-09.10
1!. 09.20-11.00
111.11.10-12.50
lV.13.00-14.40
v. 14.50-16.30
Vl.16.40-18.20
c.

SENIN

SELASA

RABU

KAM IS

JUMAT

SA BTU

(l)

(2)

(3)

(4)

(5)

(6)

A
B

A
A
B

Kade Dasen

: DOS003

Na1na

: Budi Sudrajat, M. Hum

Kade Mk : MK003
Mata Kuliah

: Matematika

44

: Teknik lnforn1atika

Jurusan
Sen1ester

:I

SENIN

SE LAS A

RABU

KAMIS

JUMAT

SABTU

(I)

(2)

(3)

(4)

(5)

(6)

I. 07.30-09.10
11. 09.20-11.00
111.11.10-12.50
IV.13.00-14.40
v. 14.50-16.30
Vl.16.40-18.20

fi

d.

__J

Kode Dasen

: DOS004

Nania

: Dra Nuriyah Thohir, MM

Kade Mk : MK004
Mata Kuliah

: Algorit1na Pen1rogran1an

Jurusan

: Teknik lnfonnatika

Semester : I

~
fi

SENIN

SE LAS A

RABU

KAM JS

JUMAT

SABTU

(I)

(2)

(3)

(4)

(5)

(6)

I. 07.30-09.10
II. 09.20-11.00
Ill.I l.10-12.50
IV.13.00-14.40
v. 14.50-16.30
Vl.16.40-18.20

e.

Kade Dasen

: DOS005

Na1na

: Ir Rahmat Kurnia, M.Si

Kade MK : MK005
Mata Kuliah

: Kalkulus

Jurusan

: Teknik Informatika

Semester : I

45

~
\

SENIN

SELASA

RABU

KAMIS

JUMAT

SA BTU

(I l

(2)

(3)

(4)

(5)

(6)

I. 07.30-09.10
11. 09.20-11.00
II I. I I.I 0-12.50
IV .13.00-14.40
v. 14.50-16.30
Vl.16.40-18.20

13

4.2.2 Pembangkitan Populasi Awai


Pada proses ini dilakukan pembangkitan populasi (kesiapan
mengajar dosen) yang telah diinisialisasi diatas (Tabel 3.3).
Kodc

Nama

Kodc

Mata

Doscn

Dos en

ivlk

Kuliah

DOSOOI

Drn. Nani Radi<L'ituti

MKOOI

DOSOOI

Ora. Nani R<1diastuli

DOSOOI

Jurusan

SMT

Kc las

Hari

Shill

D<L'iar-dasar Agronomi

Tl

MKOOI

Dasar-dasar Agronomi

Tl

II

Dra. Nani Radiastuli

MKOOI

Dasar-dasar Agronomi

Tl

DOSOOI

Dra. Nani Radiastuti

MKOOI

Dasar-dasar Agronoml

Tl

II

DOS002

Ria Arafiah, S.Si

MK002

Biologi

Tl

Ill

DOS002

Ria Arafiuh, S.Si

MK002

Bio!ogi

Tl

Ill

II

DOS002

Ria Arafiah, S.Si

MK002

Biologi

Tl

Ill

II

DOS002

Ria Arafiah, S.Si

MK002

Biologi

Tl

Ill

Ill

DOS002

Ria Arafiah, S.Si

MK002

Biologi

Tl

Ill

DOS002

Ria Arafiah, S.Si

MK002

Biologi

TI

Ill

II

DOS003

Budi SudnUat, M. I-Im

MK003

Matematika

Tl

DOS003

Budi Sudrajat, M. Hn1

MK003

Matematika

Tl

II

DOS004

Ora Nuriyah Thohir

MK004

Bhs. Arab

Tl

lll

Ill

DOS004

Ora Nuriyah Thohir

MK004

Bhs. Arab

Tl

Ill

IV

DOSOOS

Ir Rah1ilat Kurnia

MK005

Kalkulus

TI

DOSOOS

Ir Rahmat Kurnia

MKOOS

Kalkulus

Tl

II

Tabel 3.3 Tabcl Pcmbangkitan Populasi (Kcsiapan Mcngajar Doscn)

46

4.2.3 Evaluasi
Pada proses ini, kesiapan mengajar dosen yang dibangkitkan diatas
dievaluasi dengan menjumlahkan kesiapan mengajar dosen masing-masing
(Tabel 3.4).
Kode MK
MKOOI

Banyak Kesiapan

DOS002
DOS003

MK002

MK003

DOS004

MK004

DOS005

MK005

No

Kode Dosen

1
2
3
4
5

DOSOOI

---

--

--

Tabel 3.4 Evaluasi Kesiapan Mcngajar Ji)osen

4.2.4 Seleksi
Setelah proses evaluasi dilakukan, kesiapan mengajar dosen akan
mengalami seleksi berdasarkan hari dan shift yang telah ditetapkan. Seleksi
ini bertujuan untuk menentukan kesiapan mengajar dosen mana yang sesuai
untuk menempati lokal yang tersedia. Seleksi yang penulis gunakan adalah
Rank-basedfitnees yaitu dengan cara mengurutkan kesiapan mengajar dosen

menurut nilai objektifnya (banyaknya kesiapan mengajar dosen). Penerapan


untuk contoh diatas, dapat dilihat pada Tabel 3.5 di bawah ini.
Seleksi (1,I) : Tampilkan semua kesiapan mengajar dosen dengan hari =
senin dan shift= l (07.30- 09.10) yang diurutkan secara tidak turun (naik)
berdasarkan banyaknya kesiapan mengajar dosen.

47

Kodc

Nmna

Kodc

Mata

Doscn

Dos en

Mk

Kuliah

Jurusan

SMT

Ke las

Hari

Shift

Total
Kcsia
pan

DOS003

Budi Sudrajat, M. Hin

MK003

Matc1natika

TI

DOSOOI

Dra. Nani Radiasluti

MKOOI

Dasar-dasar Agronomi

TI

JJOS002

Ria Aratiah, S.Si

MK002

Biologi

TI

III

Tabcl 3.5 Kcsiapan Mcngajar dosen Hasil Selcksi


4.2.5 Rekombinasi
Dari proses seleksi diatas, diambil kesiapan mengaJar dosen
sebanyak lokal yang tersedia dan disimpan pada tabel jadwal (Tabel 3.6).
Proses ini menyebabkan populasi (kesiapan mengajar dosen) berkurang I
mengalami rekombinasi (Tabel 3.7). Rekombinasi juga terjadi terhadap
proses seleksi dengan melakukan penyilangan satu titik (single point
crossover) untuk hari dan shift berikutnya terhadap kesiapan mengajar

dosen (seleksi(l ,II) dan seterusnya).

Ko de

Nama

Ko de

Mata

Dos en

Doscn

Mk

Kuliah

DOS003

Budi Sudrnjat, M. Hm

MK003

DOSOOI

Dra. Nani Radiastuti

MKOOI

Jurusan

SMT

Ke las

Hari

Shift

Lok al

Matcmatika

TI

40I

Dasar-dasar Agronomi

TI

402

Tabcl 3.6 Tabcl Jadwal (Generasi ke-1)

48

Jurusan

SMT

Ke las

Hari

Shift

Dasar-dasar Agronomi

Tl

II

MKOOJ

Dasar-dasar Agronomi

Tl

Dra. Nani Radiastuti

MKOOI

Dac;ar-dasar Agronomi

Tl

II

DOS002

Ria Arafiah, S.Si

MK002

Bio!ogi

Tl

Ill

II

ll0S002

Ria Arafiah, S.Si

MK002

Biologi

Tl

111

II

DOS002

Ria Arafiah, S.Si

MK002

Biologi

TI

III

III

DOS002

Ria Arafiah, S.Si

MK002

Bio!ogi

Tl

Ill

llOS002

Ria Aral1:1h, S.Si

MK002

13iologi

TI

111

II

DOSOOJ

Budi Sudrajal, M. 1-hn

MK003

Matcmatika

Tl

ll

II

lx)s~ Dni Nuriyah Thohir

MK004

Bhs. Arab

Tl

111

Ill

DOS001l

Dra Nuriyal1 Thohir

MK004

Bhs. Arab

Tl

111

ll

IV

Ir Rahmut Kurnia

MKOllS

Ka!kulus

TI

Ir Rahmal Kurnia

MKllOS

Kalkulus

Tl

ll

II

Kodc

Nama

Ko de

Mata

Doscn

Dosen

Mk

Kuliah

DOSOOJ

Dru. Nani Radiastuti

MKOOI

DOSOOJ

Dra. Nani Radiastuti

DOSOOI

DOSOOS
DOSll05

Tabcl 3. 7 Populasi Setclah Rekombinasi


4.2.6 Mutasi
Proses mutasi terjadi pada kesiapan mengajar dosen yang benarbenar belum mendapatkan lokal.
Proses 3 sampai 6 ini akan dilakukan berulang-ulang selama populasi (kesiapan
mengajar dosen) belum kosong. Basil akhir (generasi terakhir) merupakanjadwal
kuliah yang optimal, dapat dilihat pada tabel 3.8.

49

Jurusan

SMT

Kclas

Hari

Shift

Lokal

/vlatcmutika

Tl

401 --

MKOOI

Dasar-dasar Agrono1ni

Tl

402

Budi Sudn\iat, M. Hm

MK003

Matematika

Tl

11

401

DOSOOI

Dra. Nani Radiastuti

MKOOI

Dusar-dasar Agronmni

Tl

II

402

DOSOOS

Ir Rahmat Kurnia

MKOOS

Kalkulus

Tl

401

DOSOOS

Ir Rahmat Kurnia

MKOOS

Kalku!us

Tl

II

401

DOS002

Ria Arafiah, S.Si

MK002

Biologi

Tl

111

II

402

DOS004

Dra Nuriyah Thohir

MK004

Bhs. Arab

Tl

111

111

401

DOS002

Ria Arafiah, S.Si

MK002

Blologi

Tl

Ill

Ill

402

IJOS004

Ora Nuriyah Thohir

MK004

Bhs. Arab

Tl

Ill

IV

401

Kodc

Nama

Kodc

fvlata

Dos en

Dos en

Mk

Kuliah

DOS003

Budi Sudntjat, M. Hm

MK003

DOSOOI

Dra. Nani Radiastuti

DOS003

Tabcl 3.8 .Jadwal Kuliah (gcncrasi tcrakhir)


Proses penempatan kesiapan dosen mengajar diatas dapat di gambarkan dalam
grafik clibawah ini dari generasi pe1iama sampai generasi terakhir .
Lokal

402

401

~--<>-*-+-<11--<>-@---<>---e-<11-&---e-<11-+-<11-+-e--e- 9

GI

-e

Ii

1 2 3 4 5 6 7 8 910111213 14151617181920212223 ..
Gambar 3.1 Grafik Pertambahan Populasi

Populasi

50

4.3 Perancangan Sistem


Dalam merancang sistem ini penulis melakukan konsultasi dengan pihak
akadernik Fakultas Sains dan Teknologi untuk rnemperoleh kesepakatan antara
kedua belah pihak. Adapun rancangan ym1g diperoleh terdiri dari rancangan
proses, rancangan basis data, rancangan menu, rancangan masukkan, dan
rancangan keluaran.
4.3.1 Rancangan Proses
Rancangan proses ditujukan untuk menentukan urutan kejadian, sehingga
dihasilkan keluaran dan masukan yang diharapkan, meliputi :
a. Proses rnasukan, proses ini merupakan proses pemasukan data yaitu
tarnbah data dosen, tambah data mata kuliah, tambah data hari, tarnbah
data shift, tambah data jurusan, tmnbah data semester, tmnbah data lokal,
tambah data kesiapan rnengajm closen dan tan1bah data kesiapm1 waktu
rnengajar dosen. Proses ini dilakukan oleh pihak akademik yang
rnengurusi pernbuatan jadwal kuliah.
b. Proses GAs (Genetic Algorithms Sistem), yaitu proses algoritma
genctika untuk

rnelakukan otornatisasi dan optimalisasi kesiapan

rnengajar closen, meliputi pembangkitan populasi, evaluasi, seleksi,


rekornbinasi, clan mutasi.
STD (stale transition diagram) dari rancangm1 proses dapat dilihat pada
garnbar 3.2 dibawah ini :

51

Mulai

'---P_e_n_g_g_un_a_m.,.e_m_1_h-h_m_e_n_u_1_n_p_u_' . ' ' ]

Pengguna memasukan data dosen, data


mata kuliah, data lokal, data kesiapan
mengajar, data kesiapan waktu

Bangkitkan
Kesiapan dosen

Evaluasi

'--r--K_e_s_ia_p_a_n_d_o_s_e_n~-

........_
Optimasi
Tercapai

>-'Y"'---,

Tida~:

-~

Se!eksi
Kesiapan Dostm

-~

Rekombinasi
Kesiapan d~n

Selesai

}----l

Jadwal
Kuliah

Gambar 3.2 STD Proses Penjadwalan Kuliah

52

4.3.2 Rancangan Basis Data


Data-data yang diperlukan pada proses masukan disimpan dalam
basis data. Hal ini dimaksudkan agar data bersifat dinamis yaitu dapat
melakukan penambahan dan penghapusan data. Ada 9 tabel yang
clidefinisikan dari rancangan proses yaitu :
a. Tabel dosen, untuk menyimpan data dosen.
Field Name --~J TypeJ __.i.'!.e_J Key
!] A
10 ..
A I
70

II

A
A

IA

I
i

70

15
15

Gambar 3.3 Spcsifikasi Tabcl Dosen


b. Tabel mata kuliah, untuk menyimpan data mata kul.iah.

Gambar 3.4 Spesifikasi Tabel Mata Kuliah

53

c. Tabel hari, untuk menyimpan data hari.

Garn bar 3.5 Spesifikasi Tabel Hari

d. Tabel shift, untuk menyimpan data shift.


- -.. J

Field Name

1
21Jam

Gambar 3.6 Spesifikasi Tabel Shift

54

e. Tabel semester, untuk menyimpan data semester.

Gambar 3. 7 Spesifikasi Tabel Semester

f.

Tabel jurusan, untuk menyimpan data jurusan.

Gambar 3.8 Spesifikasi Tabel Jurusan

55

g. Tabel lokal, untuk menyimpan data lokal.

Gambar 3.9 Spcsifikasi Tabel Lokal

h. Tabel kesiapan mengaJar, untuk menyimpan data kesiapan mengajar


do sen.

Gambar 3. 7 Spcsifikasi Tabel Kesiapan Mengajar

56

1.

Tabel jadwal, untuk menyimpan hasil proses GAs (Genetic Algoritms

Sis/em).
jTypej Sii~Keyj

Field Name

~ IB!l~ii,}iiii
1J-ii~iiiii;~iili!;jj"_...

1111!1 ~

~~
2
2

3 l<ode)lari
4.Kode shift

A
A

5' Lokal-

6 ThnAk

1
1

10

A
A

50
50

7. Namados
8' Namamk

!
'

~~ ~i: - -----~-J1 -~-~~~


Garnhar 3.7 Spcsifikasi Tahcl .Ja<lwal

4.3.3 Rancangan Menu


Rancangan menu berfungsi untuk mernanggil sub-program lain
untuk dijalankan. STD (slale lransilion diagram) rancangan menu dapat
digambarkan dibawah ini (Gambar 3.8):

57

FrmDataDosen_Klik

Layar Intro

Form Data Dosen

FnnDataMk_Klik

/ Form Data Mata Kuliah


Fm1DataLokal_Klik

MENU
PILIHAN

.
FnnSctKesiapan_Klik

~rm Data Lokal


Form Set Kesiapan
Mengajar
F01m Set Kesiapan
Waktu Mengajar

FnnSet\Vaktu_Klik

frmProses_Klik

FnnJadwal_Klik

Form Proses
Pembuatan Jadwal
Form Proses
Tampilkan Jadwal

Tutup_Klik

Gambar 3.8 STD Rancangan Menu

a. Rancangan Masukan
Rancangan masukan dilakukan agar tingkatan keakuratan data
tinggi dan proses pemasukan data benar sehingga dapat diterima dan
dimengerti oleh penggnna sistem. Ada 5 rancangan masukkan yang
didefinisikan yaitu rancangan data dosen, rancangan mata kuliah,
rancangan data lokal, rancangan data kesiapan mengajar dosen, dan
rancangan data kesiapan waktu mengajar dosen. Kelima rancangan
masukan tersebut dapat dijelaskan sebagai berikut:

58

STD Rancangan Data Dosen


Rancangan Data Dosen, berfungsi untuk menambah data
dosen, mengurutkan data, menghapus data, mencari data, dan
navigasi untuk pindah ke record awal, record akhir, record sebelum,
dan record berikut. Hal ini digambarkan dalam STD dibawah ini
(Gambar 3.9).

SortingKlik

Pilihan Sorting
(Kode/Nama)

Tampilkan

FORM
DATADOSEN
NavigasiKlik

-,

AwalKlik

Pilihan Navigasi

AkhirKlik
~

BcrikutK\ik
~

Scbc\umKlik

r
~'

TambahData_Klik

orm Tambah Data Dosen

OK Kiik

Cancel K1ik

Gambar 3.9 STD Rancangan Masukan Data Dosen

STD Rancangan Data Mata Kuliah


Rancangan Data Mata Kuliah, berfungsi untuk menambah
data Mata Kuliah, mengumtkan data mata kuliah, menghapus data

59

mata kuliah, mencari data mata kuliah, dan navigasi untuk pindah ke
record awal, record akhir, record sebelum, dan record berikut. Hal
ini digambarkan dalam STD dibawah ini (Gambar 3.10).
Sorting

..

Pilihan Sorting
(Kode/Nama)

Tampilkan

FORM DATA
MATAKULIAH

NavigasiKlik

.
'

I
I

Awa!KJik

-Pilihan Navigasi

AkhirKlik
BerikutKlik
Scbclu1nKlik

OK Klik

Ta1nbahData_K!ik

"

Form Tambah Data Mk

Cancel Klik

Gambar 3.10 STD Data Mata Kuliah

60

STD Rancangan Data Lokal

FORM
DATALOKAL

NuvigasiKlik

.I

Pilihan Naviga

DelnilKlik

TutupKlik

: FormDetai!Lokal
TambahKlik

OK_Klik

FrmTambahLokal

Cancel_Klik

Garnbar 3.11 STD Rancangan Data Lokrnl

Rancangan data lokal, berfungsi untuk menampilkan data


local yang tersedia, menambah data local, clan rnenghapus data local.
STD rancangan data lokal dapat dilihat pada Gambar 3.11.

Rancangan Set Data Kesiapan Mengajar


Rancangan Set Data Kesiapan Mengajar Dosen, berfungsi
untuk mengisi kesiapan mengajar mata kuliah. STD rancangan set
data kesiapan mengajar dapat dilihat pada gambar dibawah ini
(Gambar 3.12).

61

Tampilkan

LookUpDosenKlik

FORM SET
KESIAPAN
MENGAJAR

LookUpDbGridKlik

Pilihan
DataDosen

- Pilihan Mata Kuliah


1

Tampilkan

Gambar 3.12 STD Rancangan Set Data Kusiapan Mengajar

Rancangan Set Kesiapan Waktu Mengajar Dosen


Rancangan

Set

Kesiapan

Waktu

Mengajar

Dosen,

berfungsi untuk mengisi kesiapan waktu mengajar dosen. STD


rancangan set data kesiapan waktu dosen dapat dilihat pada gambar
dibawah ini (Gambar 3.13)

ComboDosen_Klik

Pilihan
DataDosen

Tampilkan

FORM
SET KESIAP AN
WAKTU
MENGAJAR

LookUpDbgrid_Klik

Tampilkan
LookUpDbGrid Klik

'

Pilihan__Mata Kuliah

Pilihan_\Vaktu Mengajar

I
I

Tampilkan

Gambar 3.13 STD Rancangan Set Data Kesiapan Waktu Mengajar

62

b. Rancangan Keluaran
Rancangan keluaran ditujukan untuk mendapatkan basil sesuai
dengan yang diinginkan oleh pengguna. Keluaran sistem berupa jadwal
kuliah untuk masing-masing jurusan pada Fakultas Sains dan Teknologi.
STD untuk rancangan keluaran dapat dilihat pada gambar dibawah ini
(Gambar3.14)
ComboSemestcrK!ik

Pilihan Semester

---

ComboK!sKlik

Tampilkan

Pilihan Kelas
f-,..___

FORM
JADWAL

Pilihan Jurusan

CmnboJurusanKlik

--JADWAL
KULIAH

f----

Pilihan Lokal
Con1boHariK!ik

Tampilkan

Pilihan Hari
ComboLokalKlik

-~--

Gambar 3.14 STD Rancangan Kelnara111

BABV

IMPLEMENTASI
Kegiatan pada tahap implementasi meliputi pemrograman sistem dan
pengujian sistem. Pada bab ini membahas sarana-sarana pendukung yang diperlukan
agar sistem penjadwalan kuliah ini dapat be1jalan dengan baik dan modul-modul
fungsi program (kode program dapat dilihat pada lampiran).

5.1 Sarana-Sarana Pcndukung Sistcm Pcnjadwalan Kuliah


5.1.1 Perangkat Kcras
Perangkat keras untuk menjalankan sistem penjadwalan ini adalah
suatu unit komputer dengan konfigurasi sebagai berikut :
a. Prosesor setara Pentium II keatas.
b. A!femo1y minimal 64 MB.
c. Monitor dengan resolusi I 024 X 768
d. Keyboard dan Mouse.
e. VGA32MB.

5.1.2 Pcrangkat Lunak


Spesifikasi system operasi dan perangkat lunak yang digunakan
adalah sebagai berikut :
f.

Windows 98/2000/XP/NT

g. Borland Delphi 6.0


h. Paradox

64

5.2 Gambaran dan Fungsi Modul-Modul Program

Pada sistem ini terdapat 12 sub-program yang berbeda, dapat dilihat pada
gambar 4.1, yaitu:
a. Sub-program utama, berfungsi sebagai tempat sub-program lain dipanggil
untuk dijalankan dan gambaran keseluruhan program.
b. Sub-program data merupakan menu data yang terdiri dari data dosen, data
mata kuliab, data kurikulum dan data local.
c. Sub-program kesiapan, merupakan menu kesiapan megajar dan waktu
mengajar dosen.
d. Sub-program proses, merupakan menu proses pembuatan jadwal dan
menampilkan hasil Gadwal kuliuab).
e. Sub-program data dosen, berfungsi untuk pemasukan, penyimpanan,
pengubahan penghapusan, dan pencetakan data dosen.
f.

Sub-program data mata kuliab, berfungsi untuk pemasukan, penyimpanan,


pengubaban dan penghapusan data mata kuliah.

65

Pengguna

Sub-Program Utama

Sub-program
Kesiapan

Sub-Program
Data

Sub-Program Data
Dosen
Sub-Program Data
mata kuliah
Sub-Program
Kurikulum
Sub-Program Data
Lokal

Sub-program
Proses

Sub-program
Kesiapan Mengajar
Sub-program
Kesiapan Waktu
Mengajar

Sub-Program
Proses
Pembuatan
Jadwal Kuliah
Sub-Program
Jadwal (hasil)

Gambar 4.1 Gambaran dan Fungsi Modul-Modul Program.


g. Sub program data lokal, berfungsi untuk pemasukan, penyimpanan,
pengubahan, dan penghapusan data lokal.
h. Sub

program

kmikulum,

berfungsi

untuk

pemasukan,

pengubahan

penyimpanan dan penghapusan data kuriknlum tiap seme:ster.


1.

Sub

program

kesediaan

mengajar,

berfungsi

untuk

pemasukkan,

penyimpanan, pengubahan, dan penghapusan data kesiapan mengajar dosen.


J.

Sub program kesiapan waktu mengajar, berfungsi lll1tuk pemasukan,


penyimpanan, pengubahan dan penghapusan data kesia.pan waktu mengajar
do sen.

66

k. sub- program proses, berfungsi dalam pembuatan jadwal mengajar dosen dan
menampilkan hasil proses GAs (Genetic Algorithms Sistem) .
I.

Sub program jadwal, berfungsi untuk melihat jadwal kuliah tiap semester,
mlihat local yang tidak terpakai, dan mencetak jadwal kulia11.

5.3 Rancangan Modul


Sesuai dengan modul-modul fungsi program diatas, terdapat 9 rancangan
yang penulis buat, meliputi :
5.3.1 Rancangan Menu Utama
Rancangan ini berli.mgsi sebagai interface tempat sub program lain
dipanggil untuk dijalankan, yang terdiri dari set data, set kesiapan, clan
proses penjadwalan kuliah (Gambar 4.2).

Gambar 4.2 Form Menu Utama

67

5.3.2 Rancangan Data Dosen


Rancangan ini berfungsi sebagai interface untuk memodifikasi data
dosen yaitu menambah data dosen, mengubah data dosen, menyimpan data
dosen dan mencetak data dosen (Gambar 4.3).

Gambar 4.3 Form Data Dosen

5.3 .3 Rancangan Mata Kuliah


Rancangan ini berfungsi sebagai interface untuk memodifikasi data
mata kuliah yaitu menambah data mata kuliah, mengubah data mata kuliah,
rnenyimpan data rnata kuliah clan mencetak data rnata lrnliah (Gambar 4.3).

68

Gambar 4.3 Form Data Mata Kuliah

5.3.4 Rancangan Data Kurikulum


Rancangan ini berfungsi sebagai interface untuk memodifikasi data
kurikulum Fakultas Sains dan Teknologi. Kurikulum ini di buat untuk
setiap jurusan per semester. Interface ini memil iki fungsi tambah data
kurikulum, mengubah data kurikulum, mcnyimpan data kurikulum dan
mencetak data kurikulum (Gambar 4.4)

69

Gambar 4.4 Form Data Kurikulum

5.3.5 Rancangan Lokal


Rancangan ini berfi.mgsi sebagai interface untulc memodifikasi data
lokal yaitu menambah data lokal, mengubah data lokal, menyimpan data
lokal dan mencetak data lokal (Gambar 4.5).

70

Garn bar 4.5 Form Data Lokal

5.3.6 Rancangan Kesiapan ivlengajar Dosen


Rancangan ini berfungsi sebagai interface untuk memodifikasi data
kesiapan mengajar dosen yaitu menambah data kesiapan mengajar dosen,
mengubah data kesiapan mengajar dosen, clan menyimpan data kesiapan
mengajar dosen (Gambar 4.6).

71

Gambar 4.6 Form Set Kesiapan Mcngajar ])oscn

5.3.7 Rancangan Kesiapan Waktu Mengajar Dosen


Rancangan ini berfungsi sebagai interface untuk memodifikasi data
kesiapan waktu mengajar dosen yaitu menambah data kesiapan waktu
mengajar dosen, mengubah data kesiapan waktu mengajar dosen, dan
menyimpan data kesiapan waktu mengajar dosen (Garnbar 4.7).

72

Gambar 4. 7 Form Set Kcsiapan Waktu Mengajar Dosen

5.3.8 Rancangan Pembuatan Jadwal Kuliah


Rancangan ini berfungsi sebagai interface untuk membuat jadwal
kuliah. Fungsi-fungsi Proses algoritma genetika diterapakan pada form ini
(Gambar 4.8). pada form ini akan menampilkan hasil proses algoritma
genetika yang dapat dimodifikasi jika diperlukan.

73

Gambar 4.8 Form Proses Pcmbuatan Jadwal Kuliah

5.3.9 Rancangan Jadwal Kuliah


Rancangan ini berfungsi sebagai interface untuk menampilkan
jadwal kuliah setiap jurusan per semester per kelas dan untuk melihat lokal
kosong. Disini tcrdapatjuga fungsi untuk mencetakjadwal kuliah (Gambar
4.9, Gambar 4.10).

74

Gambar 4.9 Form .Jadwal Kuliah

75

~~w;~:~j;jii$<iftffi:Plfffffllliit~r;yya;W'""
[l)rifr~

.i

::

:ss!lil~!~

JAOWAL KULIAH FAKULTAS SAINS DAN TEKNOL,OQI


UNIVERSITAS !SLAM NEGERI SYARll' HIDAYATULLAH JllKARTA

Semester
Thn AkademD<

2004/2005

Jurusan
Kolas

TEKNIK INFORMATIKA
A
Ha~

Dos en

Mata KuBllh

Sks

07.30 - 09.10

GENIN

NANI RAD!ASlUTl, Orn

JAN!NGAN KCMPlITER

401

09.20- 11.00

SEN!N

NANI RAO!ASlUTI, D'a

JA@NGAN KCMPlITER

401

11.10-12.50

SENJN

NANJ RAOtA.SlUTI, D'a

ALGffilMA GENE11KA

401

Shift Jam

Garn bar 4.10 Form Mencetak Jadwal Kuliah

Lokal
"'':.~;_

'I

77

6.2 Saran
Penulisan slaipsi ini akan Jebih bermanfaat lagi apabila memperhatikan
ha! - ha! sebagai berikut :
a. Dalam pembuatan sistem penjadwalan kuliah ini untuk pengembangan
kedepan di harapkan pengesetan kesiapan mengajar dosen tidak hanya untuk
regular.
b. Kesiapan mengajar dosen setiap semester per tahun akademik seharusnya
disimpan per tabel. Hal ini agar membantu pihak akademik sebagai referensi
untuk pembuatan jadwal kuliah selanjutnya.
c. Ada baiknya bila pengguna sistem penjadwalan kuliah ini setidalmya
memiliki dasar kemampuan tentang pengoperasian komputer.

78

DAFT AR PUST AKA

Charles L. Karr, L. Michael Freeman, Industrial Applications Of Genetic Algorithms,


Series III: United State Of America: CRC Press LLC, 1999.
Sri Kusuma Dewi, Artificial Intelegence (Teknik dan Aplikasi), Edisi I ( Yogyakarta:
Graha llmu, 2003 ).
Mitsuo Gen, Runwei Cheng, Genetic Algorithms And Engineering Design, Third
Edition (New York: A Wiley-lnterscience Publication, 1997).
Jeffry L. Whitten, , Kevin C. Dittman, Lonny D. Bentley Systems Analysis And

Design Jvlethods, 5111 Edition (America, New York: McGrawHill Companies


Inc., 2000).
Kendal & Kendal, Analisis Dan Perancangan Sistem, Jilid Pertama Edisi Bahasa
Indonesia (Jakarta : Pearson Education Asia Pte. Ltd. clan PT. Prenhallindo,
2003).
Roger S. Pressman, Ph.D, Rekayasa Perangkat Lunak, Buku I (Yogyakarta : Andi
Yogyakrta, 2001 ).
Antony Pranata, Pemrograman Borland Delphi, Edisi ke-3 (Yogyakarta: Andi
Yogyakarta, 200 I).
Abdul Kadir, Pemrograman Database Menggunakan Delphi, Jilid ke-1 (Jakarta:
Salemba Infotek, 2001 ).

A. Lampiran Source Code


I. Modul Data Dosen
unit Dasen;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, ExtCtrls, DBCtrls, ComCtrls;
type
TfrmDosen = class(TForm)
DBGridl: TDBGrid;
Panel8: TPanel;
Tambah: TStaticText;
hapus: TStaticText;
Awai: TStaticText;
Akhir: TStaticText;
Sebelum: TStaticText;
Berikut: TStaticText;
Image 1: Tlmage;

In1age2: Tlinage;
In1age3: Thnage;
Image4: Tlmage;
hnage5: 'rimage;
I111age6: Tllnage;

Panel J : TPanel;
Label I: TLabel;
Pane12: TPanel;
Label2: TLabel;
linage?: Thnage;
Label4: TLabel;
Tutup: TStaticText;
RadioGroup I: TRadioGroup;
Edit!: TEdit;
StaticTextl: TStaticText;

hnage8: Thnage;
procedure TutupMouseMove(Sender: TObject; Shift: TShif!State; X,
Y: Integer);
procedure Fo1mMouseMove(Sender: TObject; Shift: TShif!State; X,
Y: Integer);
procedure FormActivate(Sender: TObject);
procedure FonnClose(Sender: TObject; var Action: TC!oseAction);
procedure TutupClick(Sender: TObject);
procedure hapusMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TambahMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);

80

procedure Awa!MouseMove(Sender: TObject;Shift: TShiftState; X, Y: Integer);


procedure akhirMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure sebelumMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure berikutMouseMove(Sender: TObject; Shift: TShiflState; X,
Y: Integer);
procedure RadioGroup I Click(Sender: TObject);
procedure TambahClick(Sender: TObject);
procedure Edit!KeyPress(Sender: TObject; var Key: Char);
procedure Edit! Change(Sender: TObject);
procedure hapusClick(Sender: TObject);
procedure AwalClick(Sender: TObject);
procedure AkhirClick(Sender: TObject);
procedure SebelumClick(Sender: TObject);
procedure BerikutClick(Sender: TObject);
procedure StaticTextl Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmDosen: TfrmDosen;
canst nmtbdos='Tdosen';
in1plementation
uses dmSchedule, TambahDosen, CetakDosen;
{$R *dfm}
procedure Tfm1Dosen.TutupMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Tutup.Font.Color := clRed;
Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;
Awai.Font.Color:= clSilver;
Akhir.Font.Color := clSilver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := clSilver;
end;

procedure TfrmDosen.FormMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
Tutup.Font.Color := c!Silver;
Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;

81

Awai.Font.Color:= clSilver;
Akhir.Font.Color := clSilver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := cJSilver;
end;

procedure TfrmDosen.FormActivate(Sender: TObject);


begin
DM.tbDosen.Open;
//animate l .Active:=true;
end;
procedure TfrmDosen.FonnClose(Sender: TObjeet; var Action: TCloseAction);
begin

DM.tbDosen.Close;
end;

procedure TfrmDosen.TutupClick(Sender: TObject);


begin
frmDosen.Close;
end;
procedure TfrmDosen.hapusMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
Tutup.Font.Color := clSilver;
Tambah.Font.Color := cJSilver;
hapus.Font.Color := clRed;
Awai.Font.Color:= clSilver;
Akhir.Font.Color := cJSilver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := clSilver;
end;

procedure TfrmDosen.TambahMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
Tutup.Font.Color := c!Silver;
Tambah.Font.Color := clred;
hapus.Font.Color := cJSilver;
Awai.Font.Color:= c!Silver;
Akhir.Font.Color := c!Silver;
Sebelum.Font.Color :=cl Silver;
Berikut.Font.Color :=cl Silver;
end;
procedure TfnnDosen.AwalMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin

Tutup.Font.Color := cJSilver;

82

Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;
Awai.Font.Color:= clred;
Akhir.Font.Color :=cl Silver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := clSilver;
end;
procedure TfrmDosen.akhirMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Tutup.Font.Color := clSilver;
Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;
Awai.Font.Color:= clSilver;
Akhir.Font.Color := clRed;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := clSilver;
end;

procedure TfrmDosen.sebelumMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
Tutup.Font.Color := clSilvcr;
Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;
Awai.Font.Color:= clSilver;
Akhir.Font.Color := clSilver;
Sebelum.Font.Color := clRed;
Berikut.Font.Color := clSilver;
end;
procedure TfrmDosen.berikutMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin

Tutup.Font.Color := clSilver;
Tambah.Font.Color := clSilver;
hapus.Font.Color := clSilver;
Awai.Font.Color:= c!Silvcr;
Akhir.Font.Color :=cl Silver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := c!Red;
end;

procedure TfrmDosen.RadioGroup I Click( Sender: TObject);


begin
if radiogroup I .ltemlndex = O then
Dm.tbDosen.IndexFieldNames := 'kode'
else

83

D1n.tbDosen.IndexNan1c := 'Dosen I';


end:
procedure TfrmDosen.TambahClick(Sender: TObject);
begin
frmTambah.ShowModal;
end;

procedure TfnnDoscn.Edit I KeyPress(Sendcr: TObject; var Key: Char);


begin

Drn.tbDosen.lndexFieldNames
end;

:~

'nama':

procedure TfnnDosen.Editl Change(Sender: TObject):


begin
Dn1.tbDosen.IndexNan1e:='dosen 1';
Dm.tbDosen. FindNearest([ edit I .Text]);
end;
procedure TfrrnDosen.hapusCJick(Sendcr: TObjcct);
begin

if Dm.tbDosen.IsEmpty then
MessageDlg('Data Sudah Kosong OK ... !',mtlnfonnation,[mbOK],O)
else
if MessageDlg('Anda yakin mau hapus data ini.', mtlnformation,
[rnbOk,mbCancel], O)~mrOk then
Dm.tbDosen.Delete ;
end;
procedure TfrmDosen.AwalClick(Sender: TObject);
begin
Dm.tbDosen.First;
end;

procedure TfrmDosen.AkhirCJick(Sender: TObject);


begin
Dm.tbDosen.Last;
end;
procedure TfrmDosen.SebelumClick(Sender: TObject);
begin
Dm.tbDosen.Prior;
end;

procedure TfrmDosen.BerikutC!ick(Sender: TObject);


begin
Dm.tbDosen.Next;
end;
procedure TfrmDosen.StaticText I Click(Sender: TObject);

84

begin
Form 1.QuickRep I .Preview;
end;
end.

2. Modul Data Mata Kuliah


unit MataKuliah;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forn1s,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids;
type
TfnnMk ~ class(TForm)
DBGrid I: TDBGrid;
Panel I: TPanel;
lmage2: Tlmage;
lmage3: Tlmage;
lmage4: Tlmage;
lmage5: Tlmage;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label?: TLabel;
lmage6: Tlmage;
Image!: Tlmage;
Label2: TLabel;
Panel2: TPanel;
Labell: TLabel;
Panel3: TPanel;
RadioGroup l: TRadioGroup;
Labell l: TLabel;
Label! 0: TLabel;
Edit!: TEdit;
Label9: TLabel;
Image?: Tlmage;
Label8: TLabel;
lmage8: Tlmage;
procedure FormActivate(Sender: TObject);
procedure Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);

85

procedure Label5MouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
procedure Label6MouseMovc(Scnder: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label9MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label9Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Label3Click(Sender: TObject);
procedure Label4Click(Sender: TObject);
procedure Label5Click(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure Label7Click(Sender: TObject);
procedure RadioGroup i Click(Sendcr: TObject);
procedure Edit l Change( Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

end;

var
frmMk: TfrmMk;

iluplementation
uses dmSchedule, TambahMk;
{$R *.dfm}
procedure TfrmMk.FormActivate(Sender: TObject);

begin
dm.tbMk.Open;
end;
procedure TfrmMk.Label2MouseMove(Sender: TObject; Shift: TShiftState;
Y: Integer);
begin
label2.Font.Color:=clred;
label3.Font.Color:=clsilver;
label3.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clsilver;
label?. Font.Color:=clsi Iver;
//label8.Font.Color:=clsilver;
label9.Font.Color:=clsilver;

x,

86

end;
procedure TfrmMk.Labe13MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2 .Font.Color:=clsi Iver;
label3.Font.Color:=clred;
label4.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clsilver;
label7.Font.Color:=clsilver;
//label8.Font.Color:=clsilver;
label9.Font.Color:=clsilver;

end;
procedure TfrmMk.Labe14MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2.Font.Color:=elsilver;
label3.Font.Color:=clsilvcr;
label4.Font.Color:=clred;
label5 .Font.Color:=clsi Iver;
labe16.Font.Color:=clsilver;
label? .Font.Color:=clsilver;
//label8.Font.Color:=clsilver;
label9.Font.Color:=clsilver;
end;
procedure TfrmMk.Label5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2.Font.Color:=clsilver;
labcl3.Font.Color:=clsilver;
label4.Font.Color:=clsilver;
label5.Font.Color:=clred;
label6.Font.Color:=clsilver;
label7.Font.Color:=clsilver;
//label8,Font.Color:=clsilver;
label9.Font.Color:=clsilver;

end;
procedure TfrmMk.Label6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2.Font.Color:=clsilver;
label3.Font.Color:=clsilver;
label3.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clred;
label? .Font.Color:=clsilver;
//label8.Font.Color:=clsilver;

87

la be 19. Fant.Co lor:=c lsi Iver:


end;
procedure TfrmMk.Label7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2.Font.Color:=clsilver;
iabel3.Font.Color:=clsilver;
label4.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clsilver;
label 7.Fant.Co lor:=clred;
l/label8.Font.Color:=clsilver;
label9.Font.Color:=clsilver;

end;
procedure TfrmMk.Label9MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label2.Font.Color:=clsilver;
labcl3. Font.Color:=clsilver;
labe14.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clsilvcr;
la be 17. Fant.Co lor:=clsi Iver;
II label8.Font.Color:=clsilvcr;
label9.Font.Color:=clred;

end;

procedure TfrmMk.FormMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
label2.Font.Color:=clsilver;
labe13.Font.Color:=clsilver;
label4.Font.Color:=clsilver;
label5.Font.Color:=clsilver;
label6.Font.Color:=clsilver;
labe17 .Font.Color:=clsilver;
//label8.Font.Color:=clsilver;
label9.Font.Color:=clsilver;

end;
procedure TfrmMk.Label9Click(Sender: TObject);
begin
close;
end;

88

procedure TfrmMk.Labe12Click(Sender: TObject);


begin
frmTambahMk.ShowModal;
frmTambahMk.Editl .Text:=";
frmTambahMk.Edit2. Text:=";
frmTambahMk.Edit3.Text:=";
frmTambahMk.Edit4.Text:=";

end;
procedure TfrmMk.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.tbMk.Close;

end;
procedure TfrmMk.Label3Click(Sender: TObject);
begin
ifDm.tbMk.lsEmpty then
MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O)
else
if messagedlg('Anda yak in mau hap us data ini?',mtconfirmation,
[mbyes,mbcancel],O)=mryes then
DM.tbMk.Delete;

end;
procedure TfrmMk.Label4Click(Sender: TObject);
begin
DM.tbMk.First;
dbgrid I.Canvas.Brush.Color := clred;
end;
procedure TfrmMk.Label5Click(Sender: TObject);
begin
dm.tbMk.Last;

end;
procedure TfrmMk.Label6Click(Sender: TObject);
begin
dm.tbMk.Prior;
end;
procedure TfrmMk.Label7Click(Sender: TObject);
begin
dm.tbMk.Next;
end;

procedure TfrmMk.RadioGroup I Click(Sender: TObject);


begin
ifradiogroup I.Item Index = 0 then
dm.tbMk.lndexFieldNames := 'kode'
else
dm.tbMk.lndexName := 'mkl ';

end;

89

procedure TfrmMk.Editl Change(Sender: TObject);


begin
dm.tbMk.lndexName :~ 'mkl';
dm.tbMk.FindNearest([edit I .Text]);

end;
end.

3. Modul Set Data Lokal


unit lokal;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DB, DBTables, TeEngine, Series, ExtCtrls, TeeProcs, Chart,
DbChart, ComCtrls, StdCtrls;
type
TfrmLokal ~ class(TForm)
Panel 1: TPanel;
lmage7: Tlmage;
Tutup: TStaticText;
StaticTextl: TStaticText;
lmage2: Tlmage;
DBChartl: TDBChart;

Series 1: TPieSeries;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TambahMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure StaticTextl MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TutupMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TutupClick(Sender: TObject);
procedure StatieTextlC!ick(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations )
end;
var
frmLokal: TfrmLokal;

90

i1nple111entation

uses tambahLokal, dmSchedule, DetailLokal;


{$R *.dfm}
procedure TfrmLokal.FormActivate(Sender: TObject);
begin
dm.tbLokal.Open;
//anilnate 1.Active :=true;
end;

procedure TfrmLokal.FormClose(Sender: TObject; var Action: TCloseAetion);


begin
dm.tbLokal.Close;
end;

procedure TfrmLokal.FormMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
tutup.Font.Color:=clsilver;
statictextl .Font.Color:=elsilver;
end;
procedure TfrmLokal.TambahMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
tutup.Font.Color:=clsilver;
statictext I .Font. Color:=cisi Iver;
end;

procedure TfrmLokal.StaticText I MouseMove(Sender: TObject;


Shift: TShiftState; X, Y: Integer);
begin
tutup.Font. Co lor:=clsi Iver;
statictext I .Font.Color:=clred;
end;

procedure TfrmLokal.TutupMouseMove(Sender: TObject; Shift: TShiftState; X,


Y: Integer);
begin
tutup.Font.Color:=clred;
statictext I .Font.Color:=clsi Iver;
end;

procedure TfrmLokal. TutupClick(Sender: TObject);

91

begin

close;
end;

procedure TfnnLokal.StaticText I Click(Sender: TObject);


begin
frmDetail.Showmodal;
end;

end.

4. Modul Kesiapan Mengajar Dosen


unit kesediaan;
intcrfrtcc

uses

Windo\VS: Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,


Dialogs, DBCtrls, Grids, DBGrids, StdCtrls, ComCtrls, ExtCtrls, Mask.,
Buttons, DB, DBTables;
type
TfrmMengajar ~ class(TForrn)
Panel4: TPanel;
Label l: TLabel;
Panell: TPanel;
Label4: TLabel;
Label5: TLabel;
Label2: TLabel;
DBLookupComboBox I: TDBLookupCornboBox;
hapus: TStaticText;
DBEdit I: TDBEdit;
DBGrid I: TDBGrid;
Tablel: TTable;
Table!Kode: TStringField;
Table !Nama: TStringField;
Table!Alamat: TStringField;
Table I Telp: TStringField;
Table I Hp: TStringField;
DataSource I: TDataSource;
Table2: TTable;
Table2Kode_dosen: TStringField;
Table2Kode_mk: TStringField;
Table2LUmk: TStringField;
DataSource2: TDataSource;
Panel2: TPanel;
Tutup: TStaticText;
StaticTextl: TStaticText;
I1nage7: TI1nage;

lmage3: Tlrnage;

92

procedure FormActivate(Sender: TObject);


procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure StaticText2MouseMove(Sender: TObject; Shift: TShiftStat<:; X,
Y: Integer);
procedure StaticTextl MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TutupMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure TutupClick(Sender: TObject);
procedure StaticText2Click(Sender: TObject);
procedure StaticTextl Click(Sender: TObject);
procedure SpeedButton I Click(Sender: TObject);
private
( Private declarations }
public
( Public declarations }
end;

var

fnnMengajar: 1'frn1Mcngajar;
implementation

uses dmSchedule, setWaktu, kesediaan I;

($R *.dfm}
procedure TfrmMengajar.Fo1111Activate(Sender: TObject);
begin
Tablel.Open;
table2.0pen;

end;
procedure TfrmMengajar.ForrnClose(Sender: TObject; var Action: TCloseAction);
begin
table 1.Close;
table2.Close;
end;
procedure TfrmMengajar.Fon11MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
tutup.Font.Color:=clsilver;
statictext I .Font.Color:=clsi Iver;
//statictext2.Font.Color:=clsilver;
end;
procedure TfrmMengajar.StaticText2MouseMove(Sender: TObject;

93

Shift: TShiftState; X, Y: Integer);


begin
tutup.Font.Color:=clsilver;
statictext I .Font.Color:=clsilver;
//statictext2.Font.Color:=clred;
end;
procedure TfrmMengajar.StaticTextl MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
begin
tutup.Font.Color:=clsilver;
statictext 1.Font.Color:=clrcd;
//statictext2.Font.Color:=clsilver;
end;
procedure TfrmMengajar.TutupMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
tutup.Font.Color:=clred;
statictextl .Font.Color:=clsilver;
//statictext2.Font.Color:=clsilver;

end;
procedure TfrmMengajar.TutupClick(Sender: TObject);
begin
close;
end;
procedure TfrrnMengajar.StaticText2Click(Sender: TOqject);
begin
if messagedlg('Yakin and a ha pus data ini ?' ,mtlnformation,[ mb Y es,mbNo ],O)=mrY es then
dm.tbKesediaan.Delete;
end;
procedure TfrmMengajar.StaticTextl Click(Sender: TObject);
begin
ifTable2.lsEmpty then
MessageDig('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O)
else
ifmessagedlg('Hapus data ini ?',mtConfirmation,[mbyes,mbNo],O)=mrYes then
table2.Delete;
end;
procedure TfrmMengajar.SpeedButton I Click(Sender: TObject);

begin
frmsetWaktu.ShowModal;
end;
end.

94

5. Modul Kcsiapan Waktu Mengajar Dosen


unit kesediaan 1;
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, ComCtrls, ExtCtrls, Grids, DBGrids, DB,
DB Tables;
type
TfrmKesediaan ~ class(TForm)
Panel2: TPanel;
Labell: TLabel;
Panel I: TPanel;
Labcl5: TLabcl;
Labcl4: TLabcl;
Label2: TLabel;
DBTextl: TDBText;
Label3: TLabel;
DBLookupComboBox I: TDBLookupComboBox;
DBGrid I: TDBGrid;
DBGrid2: TDBGrid;
Panel4: TPanel;
Image?: Tlmage;
Tutup: TStaticText;
StaticTextl: TStaticText;
Image I: Tlmage;
procedure FormActivate(Scndcr: TObjcct);
procedure TutupClick(Sender: TObject);
procedure DBLookupComboBox I Enter( Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure StaticTextl Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }

end;
var

frmKesediaan: TifmKesediaan;
implementation
uses dmSchedule;
{$R *.dfm}

procedure TfrmKesediaan.FormActivate(Sender: TObject);


begin

95

Dm.TMengajar.Open;
dm.tbDosen.Open;
dm.tbMk.Open;
dm.tbKesediaan.Open;
dm.tbShift.Open;
dm.tbHari.Open;
DM.tbJurusan.Open;
dm.tbKelas.Open;
dm. tbSemester. Open;
end;

procedure TfrmKesediaan.TutupClick(Sender: TObjeet);


begin
CLOSE;

end;
procedure TfimKesediaan.DBLookupComboBox I Enter( Sender: TObject);
begin
DbGrid I .DataSource:=Dm.dsMengajar;
end;

procedure TfrmKesediaan.FormClose(Sender: TObject;


var Action: TCloseAction);
begin

Dm.TMengajar.Close;
dm.tbKelas.Close;
DM.tbJurusan.Close;
dm.tbDosen.Close;
dm.tbMk.Close;
dm.tbKesediaan.Close;
dm.tbShift.Close;
dm.tbHari.Close;
dm.tbSemester.Close;

end;
procedure TfrmKesediaan.StaticText I Click(Sender: TObject);
begin
ifDm.tbKesediaan.lsEmpty then
MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O)
else
ifmessagedlg('Yakin mau hapus data ini ... !',mtConfirmation,[mbyes,mbno],O)=mrYes then
dm.tbKesediaan.Delete;
end;

end.

6. Modul Proses Pembuatan Jadwal


unit Proses;

interface

96

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, DbChart, StdCtrls, Buttons,
Grids, DBGrids, DBTables, DB;
type
TfrmProses ~ class(TForm)
DBGridl: TDBGrid;
Query I: TQuery;
DataSource 1: TDataSource;
tbJadwal: TTable;
Query2: TQuery;
Query3: TQuery;
Panel 1: TPanel;
Panel2: TPanel;
Button I: TButton;
BitBtn I: TBitBtn;
BitBtn2: TBitBtn;
tbJadwalKode_ dosen: TStringField;
tbJadwalKode_mk: TStringField;
tbJadwalKode_Hari: TStringField;
tbJadwalKode_shift: TStringField;
tbJadwalLokal: TFloatField;
tbJadwalNamados: TStringField;
tbJadwalNamamk: TStringField;
tbJadwalHari: TStringField;
tbJadwalJam: TStringField;
tbJadwalSks: TStringField;
tbJadwalJurusan: TStringField;
Panel3: TPanel;
Label l: TLabel;
ComboBox I: TComboBox;
tbJadwalThnAk: TStringField;
tbJadwalKelas: TStringFicld;
tbJadwalSmt: TStringField;
procedure Button l Click(Sender: TObject);
procedure inisialisasi;
procedure seleksi;
procedure so1ting;
procedure rekombinasi;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
procedure BitBtn !Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
( Private declarations }
public
( Public declarations }
end;

97

var
frn1Proses: TfimProses;
gen 1,gen2,gen3,gen4,gen5,gen6,gen7 : array[ I .. 1000] of string;
fitnees : array[ 1..1000] of integer;
h,s : array [I.. IOJ of string;
KHari, KShift: string;
i1nple1nentation
uses dmSchedule;
{$R *.dfm}

procedure TfrmProses.Button 1Click( Sender: TObject);


var i,j,k,jumHarijumShill,lok,jumlokal: integer;
begin

if combobox I .Text= " then


n1essageDlg('1~ahun

ajaran belun1 cliisi ... ! ! !',n1tConfinnation,[MBOI<],O)

else
begin

dm.tb Hari. First;


for ju1nHari:= I to dn1.tbl-lari.RecordCount do begin
h[j um Hari] :=dm. tbHari. tie ldbyname('kode_hari').AsStri ng;
dm.tbHari.Next;
end;
dm. tbSh ift. First;
for jumShit1:= I to dm.tbShift.RecordCounl do begin
sOmnshift]:=dm.tbShift.fieldbyname('shifl').AsString;
dm.tbShifl.Next;
end;

for i:= 1 to dm.tbHari.RecordCount do begin


for j:=l to dm.tbShift.RecordCount do begin
query I.Close;
quetyl.SQL.Clear;
KHari := h[i];
KShifl:= sOJ;
query! .SQL.Add('select *from TKesediaan where kode_hari =:kh and kode_shift =:ks');
query 1.ParamByName('kh').AsString:=KHari ;
query l .ParamByName('ks').AsString:=KShi fl ;
query I.Open;
inisialisasi;
Dm.tbShift.Next;
end;
dm.tbHari.Next;
jumLokal:=dm.tbLokal.RecordCount;
for lok:=l to jumLokal do begin
que1y2.Close;
que1y2.SQL.Clear;

98

query2.SQL.Add('Delete From TKesediaan Where kode_dosen =:kd and kode_Mk =:km');


query2.Prepare;
query2.ParamByName('kd').AsString:=gen I [lok];
que1y2.ParamByName('km').AsString:=gen2[lok];
query2.ExecSQL;
end;

end;
end;
end;

procedure TFrn1Proses. inisialisasi;


var
ij : integer;
begin
que1y I.First;
for i:=l to queryl .RecordCount do begin
gen I [i] := queryl.fieldbyname('kode_dosen').AsString;
gen2[i] :=query] .fieldbyname('kode_mk').AsString;
gen3[i] := query I .fieldbyname('kode_ Hari').AsString;
gen4[i] := queryl.fieldbyname('kode_shift').AsString;
gen5[il := que1yl .fieldbyname('.jurusan').AsString;
gen6[ ij := que1y l. lieldbyname('kelas').AsSlring;
gen7[i] :=query I .fieldbyname('smt').AsString;
query2.Close;
query2.SQL.Clear;
query2.SQL.Add('Select * From TKesediaan where kode_dosen =:kd and Kode_Mk =:km');
query2.Prepare;
que1y2.ParamByName('kd').AsString:=gen I [i];
que1y2.ParamByName('km').AsString:=gen2{i];
query2.0pen;
fitnees[i] := query2.RecordCount;
queryl .Next;
end;
sorting;
seleksi;

rcko1nbinasi;
end;
Procedure TFrmProses.sorting;
var ij,k,x: integer;

kd,km,kh,ks,jrs,kls,smt : string;
begin
for i:= I to queryl.RecordCount-1 do
begin k:=i; x:= fitnees[i];kd:=gen I [i]; km:=gen2[i]; kh:=gen3[i]; ks:=gen4[i];

jrs:=gen5[i];kls:=gen6[i];smt:=gen7[i];
for j :=i+ I to query I .RecordCount do
iffitnees[j] < x then begin
k:=j;
x:=fitnees[j];
kd:=gen I [j];
km:=gen2[j];

99

kh:=gen3[j];
ks:=gen4[j];
jrs:=gen5[j];
kls:=gen60J;
smt:=gen70J

end;
fitnees[k]:= fitnees[i]; fitnees[i]:=x;
gen I [k]:= gen I [i];
gen2[k]:= gen2[i];
gen3 [I<]:= gen3 [i);
gen4 [ k] :=gen4 [ i];
gen5 [k] :=gen5 [ i];
gen6[k]:=gen6[i];
gen 7[k] :=gen 7 [i];
gen! [i]:=kd;
gen2[i]:=km;
gen3[i]:=kh;
gen4[i]:=ks;
gen5[i]:=jrs;
gen6[i]:=kls;
gen7[i]:=smt;
end;
end;
pro.cedure 'fFrn1Proses.seleksi;

var ijjumLokal, JumKesediaan: integer;


begin
dm.tbLokal.First;
jumLokal:=dm.tbLokal.RecordCount;
jumKesediaan:=query I .RecordCount;
if jumKesediaan <= jumLokal then
for j:=l to jumKesediaan do begin
tbJadwal.Append;
tbJadwal.FieldByName('kode _dosen').AsString:=gen I [j];
tbJadwal.FieldB y N ame('kode_ mk').AsString:=gen2[j];
tbJadwal.FieldBy N ame('kode_ Hari').AsString:=gen3 [j];
tbJadwal .FieldB yName('kode _Shift') .AsString:=gen4 [j];
tbJadwal.FieldByName('smt').AsString:=gen7[j];
if dm.tbDosen.FindKey([gen 1[j]]) then
tbJadwal.FieldByName('Namados').AsString:=dm.tbDosen.fieldbyname('nama').AsString;
if dm.tbHari.FindKey([gen3[j]]) then
tbJadwal.FieldByName('Hari').AsString:=dm.tbHari.fieldbyname('Hari').AsString;
if dm.tbShift.FindKey([gen4[j]]) then
tbJadwal.FieldByName('Jam').AsString:=dm.tbShift.fieldbyname('Jam').AsString;
tbJadwal.FieldByName('ThnAK').AsString:=ComboBoxl .text;
if dm.tbMk.FindKey([gen2[j]J) then begin
tbJadwal.FieldByName('Namamk').AsString:=dm.tbMk.fieldbyname('nama').AsString;
tbJadwal.FieldByName('sks').AsString:=dm.tbMk.fieldbyname('sks').AsString;;
end;

if dm.tbJurusan.FindKey([genS[j]]) then
tbJadwal.FieldByName(jurusan').AsString:=dm.tbJurusan.fieldbyname('Nama').AsString;

100

if dm.tbKelas.FindKey([gen6U]]) then
tbJadwal.FieldByName('kelas').AsString:=dm.tbkelas.fieldbyname('kelas').AsString;
tbJadwal.FieldByName('Lokal').Aslnteger := dm.tbLokal.fieldbyname('Lokal').Aslnteger;
tbJadwal.Post;
dm.tb Lokal. Next;
end
else
for j:=I tojumLokal do begin
tbJadwal.Append;
tbJadwal.FieldByName('kode_ dosen').AsString:=gcn I UJ;
tbJ adwal .FieldByN ame('kode_mk').AsString:=gen2 Ul;
tbJ adwal. FieldByName('kode_Hari'). AsString:=gen3 Lil;
tbJ adwa I. FieldB y Namc('kode _Shi fl').AsString:=gen4[j];
tbJadwal.FieldByName('Lokal').Asl11leger := dm.tbLokal.fieldbyname('Lokal').Aslnteger;
tbJadwal.Post;
dm.tbLokal.Next;
query I .Next;

end;
end;
procedure TFnnProses.rekombinasi;

var jum:integer;
begin
jum:=query I .RecordCount;
query I.Close;
query l .SQL.Clear;
query I .SQL.J\dd('Delete from TKesediaan Where kode_hari =:kd and kode_shift =:ks');
query I .Prepare;
query I .ParamByName('kd').AsString:= KHari;
query I .ParamByName('ks').AsString:= KSh if!;
query I .ExecSQL;

end;
procedure TfrmProses.FormCiose(Sender: TObject; var Action: TCloseAction);
begin
tbJadwal.Close;
dm.tbLokal.Close;
dm.tbSh i fl. Close;
dm.tbHari.Close;
dm.tbDosen.Close;
dm.tbMk.Close;
dm. tbJ urusan. Close;
dm.tbKelas.Close;
dm.tbSemester.Close;
end;
procedure TfrmProses.FormActivate(Sender: TObject);
begin
dm.tbLokal.Open;
tbJadwal.Open;
Dm.tbShift.Open;
Dm.tbl-Jari.Open;

101

dm.tbDosen.Open;
dm.tbMk.Open;
dm.tbJurusan.Open;
dm.tbKelas.Open;
dm.tbSemester.Open;
end;

procedure TfrmProses.BitBtn I Click(Sender: TObject);


begin
close;
end;

procedure TfrmProses.BitBln2Click(Sender: TObject);


var i: integer;
begin

iftbJadwal.lsEmply then
MessageDlg('Data Sudah Kosong OK ... !',mtlnformation,[mbOK],O)
else
if MessageDlg('Yakin Hapus data ini ... !',mlConfirmation,[mbYes,mbNo],O)=mrYes then begin
tbJadwal.First;
for i:=J to tbJadwal.RecordCount do begin
tbJadwal.Delete;
tbJadwal.Next;
end;
end
end;
end.

7. Modul Jadwal Kuliah (Basil)


unitjadwal;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, QRCtrls, QuickRpt, ExtCtrls, StdCtrls, DB, DBTables, DBCtrls,
Grids, DBGrids, Mask, Buttons;
type
TfrmJadwal = class(TForm)
Query I : TQuery;
GroupBox I: TGroupBox;
Button I: TButton;
Labell: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
DB Edit I: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;

102

DBGridl: TDBGrid;
DataSource 1: TDataSource;
Labcl8: TLabel;
Table 1: TTable;
DataSource2: TDataSource;
Label9: TLabel;
Table2: rrable;
DataSource3: TDataSource;
Group8ox2: TGroupBox:
Label I 0: TLabel;
Labell2: TLabel;
ComboBox 1: TComboBox;
DBLookupComboBox2: TDBLookupComboBox;
Button2: TButton;
Panel 1: TPanel;
BitBtn I: TBitBtn;
Button3: TButton;
Button4: TButton;
Panel2: TPanel;
Combo8ox2: TComboBox;
Combo8ox3: TComboBox;
DBLookupComboBox I: TDBLookupComboBox;
Label7: TLabel;
DBEdit4: TDBEdit;
Panel3: TPanel;
procedure FormActivate(Sender: TObject);
procedure Button l Click( Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn 1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Bit8tn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frmJadwal: TfrmJadwal;

implementation
uses dmSchedule, Proses, CetakJadwal;

{$R *.dfm}
procedure TfrmJadwal.FormActivate(Sender: TObject);
begin
table I .Open;
Table2.0pen;

103

end;
procedure TfrmJadwal.Button 1Click(Sender: TObject);
begin
Query! .Close;
QUERYl .sq I.Clear;
query I .SQL.Add('select * from TJadwal Where Jurusan =:jrs and smt =:sand kelas =:kls order
by Kode_ Hari');
query 1. ParamByName('.jrs').AsString:=DbLookUpComboBox ! .Text;
query 1.ParamByName('s').AsString:=Combobox2. Text;
Query! .ParamByName('kls').AsString:=Combobox3 .Text ;
quc1yl.Open;
Db Edit I .DataField:='smt';
DbEdit2.DataField:='ThnAk';
Db Ed it3. DataField:='J urusan';
end;

procedure TfrmJadwal.Button2Click(Sender: TObject);


begin
Query! .Close;
Query! .SQL.Clear;
Queryl.SQL.Add('Select *From TJadwal Where Hari =:hand Lokal =:l Order by
Kode_Shift');
Query I. Prepare;
Query l .ParamByName('h').AsString:=combobox I .Text ;
Query! .ParamByName('l').Aslnteger:=strTolnt(DblookUpComboBox2.Text);
Query I.Open;
end;
procedure TfrmJadwal.BitBtn 1Click(Sender: TObject);
begin
Close;
end;
procedure TfrmJadwal.Bntton4Click(Sender: TObject);
begin
frmCetak.QuickRep ! .Preview;
end;
procedure TfrmJadwal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
table I.Close;
Table2.Close;
end;

procedure TfnnJadwal.BitBtn2Click(Sender: TObject);


begin
{with frmProses do begin
Query! .Close;
query I. SQ L. Clear;
queryl.SQL.Add('Select * From TJadwal Where Hari =:hr a)
}
end;
end.

Anda mungkin juga menyukai