RUSDIANA
(100091020205)
Oleh:
RUSDIANA
100091020205
Skripsi
Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer
Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
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,
...........
<.._,_..,~~--~~
--~~-~
Rusdiana
Nim
100091020205
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.
Pembimbing II,
Khodijah
ulliyah, S.Kom
Mengetahui,
De~,
Ketua Jurusan,
<JZy}i.{/L-~-
/l
PERNYATAAN
Rusdiana
100091020205
ABSTRAK
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
(alami
maupun
terminologi genetika yang merupakan simulasi dari proses evolusi Darwin dan
KATA PENGANTAR
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
DAFTAR LAMPIRAN
BABI
PENDAHULUAN
METODE
ALGORITMA GENETIKA.
mengembangkan sistem ini. Untuk itu penulis batasi p~ngembangan sistem ini
hanya pada optimalisasi kesiapan mengajar dosen untuk shift yang telah
ditetapkan.
(1985:167)
mengartikan
tahap
siklus
pengembangan
model
RAD
(Rapid Aplication
a. Perencanaan Syarat-Syarat
Pada tahap
ini
masalah,
tujuan,
dan
syarat-syarat informasi
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
. ; . --1
(Kesiapan Mengajar
Dosen)
....
_(]/\ 5~ 1_=~----------__
Ya
___.-
Tidak
Rekombinasi
Mutasi
OUTPUT
(Jadwal Kuliah)
f1---'
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.
Dalarn
bab
ini
penulis
mencoba
rnenyimpulkan
pe1masalahan-
BABU
TINJAUAN PUSTAKA
11
12
ABCD
BACD
ABCD
ACBD
DBCA
DACB
BACD
DCAB
depth first search dan metode bread first search dengan mengrunbil
kelebihan dari kedua metode tersebut. Apabila
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.
14
15
Bangkitkan
Populasi
Awai
Evaluasi
Fungsi Awai
Apakah
Kriteria
Optimasi
Tcrcapai
Ya
Tidak
Awai
Seleksi
._____,.__
Rekombinasi
Mutasi
Individu
Individu
Terbaik
16
String Biner
0
Gen 1
Gen 2
Pohon
(*(-(ab))( +(*(CD))(/(EF))))
0
Gen3
17
Bilangan real
Elemen permutasi
Daftar Aturan
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
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
20
21
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
Sampel2:
123
Anak2:
12
12
25
Induk2:
123
34
23
0,5
] ,1
-0,1
Sampel2:
0,1
0,8
0,5
67,5
1,9
2,1
Anak2:
23,1
8,2
19,5
12
25
Induk2:
123
34
0,5
Sampel2 :
0, 1
67,5
14,5
19,5
Anak2:
23,l
22,9
7,9
24
0 1110
0101110
lnduk2:
1 10 10
0 0 0 1 10 1
01110
0001101
Jnduk2:
11010
0101110
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
10
01
0100
!Oil
01
Anak2:
11
1100
0011
10
0 I I I00 I0 I I I0
Induk2:
110100001101
Maka bit,
Sampell :
100111001101
Sampel2:
011000110010
010100001100
Induk2:
11I I00 I0 I l I I
26
(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)
C4-1
Anak2:
5-8 3 I 4 5 6 7 / 9 2)
8 3
I 4 5 6 7 / 9 2)
27
State
transition
diagram
merupakan
suatu
diagran1
yang
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
28
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)
29
30
31
32
At 19,Scm lfl 17
Ccl I
Object Inspector
Code Editor
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
'
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!.
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)
unu. lhuc1i
....J Ua1
li'indmm,
fl""""1J""
1>.1- .. t<>l:i"'
typ<1
-0
(Sea~"'
TCbj<!<::<;);
l'ubJ~<:
daci"rtion" /
.,nd;
""""'
<>nd
.........
:~J
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
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.~::::::::;: :::::::::::::;::::;:;:::::::::
825
[]deii1Face
irsi2et:~r;;trainisi
Action
.. t\.ctiy.,~g~.~91.. ........................................................... .
......tvl..,n.u................................................................................. .
ObjectMenultom .
,i 1A11 shown
,z
b) Events (kt:iadian)
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.
37
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
Oleh
karena itu pihak Fakultas Sains dan Teknologi merasa perlu dibuatnya suatu
sistem yang dapat menangani pembuatanjadwal kuliah tersebut.
39
Fasc Pcrencanaan
Syarat syarat
Menentukan
Tujuan dan syarat-syarat
lnformasi
Umpan Balik
Pengguna
Membangun
Sistem
Bckerja dcngan
Pengguna untuk
Sistcrn Perancangan
Menggunakan
masukkan dari
pengguna
iI
rI
I'
'
+
Mernperkenalkan Sistern
Fase Pclaksnnaan
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
42
KODE
NAMA
DOSOOI
DOS002
DOS003
DOS004
DOS005
NO
KODE
NAMA
MKOOI
Dasar-dasar Agronomi
MK002
Biologi
MK003
Matematika
MK004
Bhs. Arab
MKOOS
Kalkulus
43
a.
Kade Dasen
: DOSOOl
Nama
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
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
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
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
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
Nama
Kodc
Mata
Doscn
Dos en
ivlk
Kuliah
DOSOOI
MKOOI
DOSOOI
DOSOOI
Jurusan
SMT
Kc las
Hari
Shill
D<L'iar-dasar Agronomi
Tl
MKOOI
Dasar-dasar Agronomi
Tl
II
MKOOI
Dasar-dasar Agronomi
Tl
DOSOOI
MKOOI
Dasar-dasar Agronoml
Tl
II
DOS002
MK002
Biologi
Tl
Ill
DOS002
MK002
Bio!ogi
Tl
Ill
II
DOS002
MK002
Biologi
Tl
Ill
II
DOS002
MK002
Biologi
Tl
Ill
Ill
DOS002
MK002
Biologi
Tl
Ill
DOS002
MK002
Biologi
TI
Ill
II
DOS003
MK003
Matematika
Tl
DOS003
MK003
Matematika
Tl
II
DOS004
MK004
Bhs. Arab
Tl
lll
Ill
DOS004
MK004
Bhs. Arab
Tl
Ill
IV
DOSOOS
Ir Rah1ilat Kurnia
MK005
Kalkulus
TI
DOSOOS
Ir Rahmat Kurnia
MKOOS
Kalkulus
Tl
II
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
---
--
--
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
47
Kodc
Nmna
Kodc
Mata
Doscn
Dos en
Mk
Kuliah
Jurusan
SMT
Ke las
Hari
Shift
Total
Kcsia
pan
DOS003
MK003
Matc1natika
TI
DOSOOI
MKOOI
Dasar-dasar Agronomi
TI
JJOS002
MK002
Biologi
TI
III
Ko de
Nama
Ko de
Mata
Dos en
Doscn
Mk
Kuliah
DOS003
Budi Sudrnjat, M. Hm
MK003
DOSOOI
MKOOI
Jurusan
SMT
Ke las
Hari
Shift
Lok al
Matcmatika
TI
40I
Dasar-dasar Agronomi
TI
402
48
Jurusan
SMT
Ke las
Hari
Shift
Dasar-dasar Agronomi
Tl
II
MKOOJ
Dasar-dasar Agronomi
Tl
MKOOI
Dac;ar-dasar Agronomi
Tl
II
DOS002
MK002
Bio!ogi
Tl
Ill
II
ll0S002
MK002
Biologi
Tl
111
II
DOS002
MK002
Biologi
TI
III
III
DOS002
MK002
Bio!ogi
Tl
Ill
llOS002
MK002
13iologi
TI
111
II
DOSOOJ
MK003
Matcmatika
Tl
ll
II
MK004
Bhs. Arab
Tl
111
Ill
DOS001l
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
MKOOI
DOSOOJ
DOSOOI
DOSOOS
DOSll05
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
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
MK002
Biologi
Tl
111
II
402
DOS004
MK004
Bhs. Arab
Tl
111
111
401
DOS002
MK002
Blologi
Tl
Ill
Ill
402
IJOS004
MK004
Bhs. Arab
Tl
Ill
IV
401
Kodc
Nama
Kodc
fvlata
Dos en
Dos en
Mk
Kuliah
DOS003
Budi Sudntjat, M. Hm
MK003
DOSOOI
DOS003
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
51
Mulai
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
52
II
A
A
IA
I
i
70
15
15
53
Field Name
1
21Jam
54
f.
55
56
1.
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
!
'
57
FrmDataDosen_Klik
Layar Intro
FnnDataMk_Klik
MENU
PILIHAN
.
FnnSctKesiapan_Klik
FnnSet\Vaktu_Klik
frmProses_Klik
FnnJadwal_Klik
Form Proses
Pembuatan Jadwal
Form Proses
Tampilkan Jadwal
Tutup_Klik
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
SortingKlik
Pilihan Sorting
(Kode/Nama)
Tampilkan
FORM
DATADOSEN
NavigasiKlik
-,
AwalKlik
Pilihan Navigasi
AkhirKlik
~
BcrikutK\ik
~
Scbc\umKlik
r
~'
TambahData_Klik
OK Kiik
Cancel K1ik
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
"
Cancel Klik
60
FORM
DATALOKAL
NuvigasiKlik
.I
Pilihan Naviga
DelnilKlik
TutupKlik
: FormDetai!Lokal
TambahKlik
OK_Klik
FrmTambahLokal
Cancel_Klik
61
Tampilkan
LookUpDosenKlik
FORM SET
KESIAPAN
MENGAJAR
LookUpDbGridKlik
Pilihan
DataDosen
Tampilkan
Set
Kesiapan
Waktu
Mengajar
Dosen,
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
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
-~--
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).
Windows 98/2000/XP/NT
64
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.
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)
program
kmikulum,
berfungsi
untuk
pemasukan,
pengubahan
Sub
program
kesediaan
mengajar,
berfungsi
untuk
pemasukkan,
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.
67
68
69
70
71
72
73
74
75
~~w;~:~j;jii$<iftffi:Plfffffllliit~r;yya;W'""
[l)rifr~
.i
::
:ss!lil~!~
Semester
Thn AkademD<
2004/2005
Jurusan
Kolas
TEKNIK INFORMATIKA
A
Ha~
Dos en
Mata KuBllh
Sks
07.30 - 09.10
GENIN
JAN!NGAN KCMPlITER
401
09.20- 11.00
SEN!N
JA@NGAN KCMPlITER
401
11.10-12.50
SENJN
ALGffilMA GENE11KA
401
Shift Jam
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
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
81
Awai.Font.Color:= clSilver;
Akhir.Font.Color := clSilver;
Sebelum.Font.Color := clSilver;
Berikut.Font.Color := cJSilver;
end;
DM.tbDosen.Close;
end;
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;
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;
83
Drn.tbDosen.lndexFieldNames
end;
:~
'nama':
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;
84
begin
Form 1.QuickRep I .Preview;
end;
end.
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
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
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;
end;
procedure TfrmMk.Label9Click(Sender: TObject);
begin
close;
end;
88
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;
end;
89
end;
end.
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
91
begin
close;
end;
end.
uses
lmage3: Tlrnage;
92
var
fnnMengajar: 1'frn1Mcngajar;
implementation
($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
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
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}
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;
end;
procedure TfimKesediaan.DBLookupComboBox I Enter( Sender: TObject);
begin
DbGrid I .DataSource:=Dm.dsMengajar;
end;
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.
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}
else
begin
98
end;
end;
end;
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;
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;
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.
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;