iv Universitas Kristen Maranatha
ABSTRAK
Di suatu perguruan tinggi absensi mahasiswa memegang peranan penting dalam setiap kegiatan perkuliahan. Absensi mahasiswa merupakan salah satu penunjang yang dapat mendukung atau memotivasi setiap kegiatan perkuliahan yang dilakukan di dalam sebuah perguruan tinggi. Di samping itu, absensi mahasiswa bisa juga sebagai informasi tentang kedisiplinan mahasiswa yang bersangkutan.
Saat ini sistem absensi pada sebagian besar perguruan tinggi masih memakai sistem secara manual. Hal ini dapat dilihat dari masih terlibatnya dosen yang bersangkutan untuk mendata kehadiran mahasiswa sehingga dapat mengganggu kegiatan perkuliahan dalam perguruan tinggi. Ini dapat mengalihkan perhatian mahasiswa dan bisa membuat suasana kelas tidak tertib.
Pada penelitian ini akan dirancang sebuah sistem absensi yang dapat memudahkan dosen dalam mengabsen kehadiran mahasiswa di dalam suatu kelas. Perancangan sistem absensi ini meliputi tiga bagian, yaitu perancangan alat untuk menginput data mahasiswa yang mengikuti kuliah tersebut, perancangan database yang berguna sebagai penyimpanan data mahasiswa bersangkutan, dan perancangan program interface penghubung antara alat dan
v
ABSTRACT
In a college, student attendance plays an important role in any college activities. Attendace of student can support or motivate every college activities, which are conducted in a college. In addition, student attendance can be a information about student’s discipline.
Currently the attendance system in most universities are still using manual systems. It can be seen from the involvement of the lecturers to record student attendance. It can be a very disturbing activities in the lecture. This can distract students attention and can make the atmosphere of the class disorderly.
viii Universitas Kristen Maranatha
DAFTAR ISI
ABSTRAK ... iv
ABSTRACT ... v
KATA PENGANTAR ... vi
DAFTAR ISI ... viii
DAFTAR TABEL ... xi
DAFTAR GAMBAR ... xii
DAFTAR LAMPIRAN ... xvi
BAB I PENDAHULUAN 1.1 Latar Belakang Masalah ... 1
1.2 Identifikasi Masalah ... 2
1.3 Tujuan Penelitian ... 2
1.4 Batasan Masalah ... 2
1.5 Sistematika Penulisan ... 3
BAB II LANDASAN TEORI 2.1 Atmel AVRATmega16 ... 5
2.1.1 Fitur ATmega16 ... 5
2.1.2 Konfigurasi PinAVRATmega16 ... 7
2.1.3 Blok Diagram ATmega16 ... 10
2.1.4 Arsitektur Mikrokontroller AVR RISC ... 11
2.1.5 General Purpose Register AVR ... 12
2.1.6 Stack Pointer ... 12
2.1.7 Peta Memori AVR ATmega16 ... 13
2.1.7.1 Memori Program ... 13
2.1.7.2 Memori Data (SRAM) ... 14
2.1.7.3 EEPROM ... 15
2.1.8 Status Register (SREG) ... 16
ix
2.2 Pemograman Mikrokontroller AVRATmega16 ... 18
2.2.1 Bahasa C ... 19
2.2.1.1 Identifiers ... 19
2.2.1.2 Konstanta ... 19
2.2.1.3 Tipe Data ... 20
2.2.1.4 Operator ... 20
2.2.1.5 Program Kontrol ... 22
2.2.1.5.1 Percabangan ... 22
2.2.1.5.2 Looping (Pengulangan)... 23
2.2.1.6 Array ... 24
2.2.1.7 Fungsi ... 25
2.2.2 Library Function ... 26
2.2.2.1 Fungsi Input / Output ... 27
2.2.2.2 Fungsi Tipe Karakter ... 28
2.2.2.3 StandardLibrary Function ... 28
2.2.2.4 Fungsi Matematika ... 29
2.2.2.5 Fungsi Delay ... 29
2.2.2.6 Fungsi LCD... 30
2.3 CodeVision AVR ... 31
2.4 LCD 2x16 ... 36
2.5 Keypad 3x4 ... 37
2.6 Komponen Elektronika ... 38
2.6.1 Resistor... 39
2.6.2 Kapasitor... 39
2.6.3 IC Regulator (L7805CV) ... 40
2.7 SerialPort (Connector DB 9) ... 40
2.8 RS 232 ... 42
2.9 InterBase ... 43
2.10 Delphi 7 ... 47
BAB III PERANCANGAN DAN PEMODELAN 3.1 Blok Diagram ... 52
3.2 Hardware ... 53
x Universitas Kristen Maranatha
3.4 Software ... 60
3.4.1 CodeVision AVR ... 60
3.4.2 Borland Delphi 7... 64
3.4.2.1 Data Module ... 64
3.4.2.2 Menu Utama ... 66
3.4.2.3 Form Log In ... 69
3.4.2.4 Menu Utama (Log In Dosen) ... 71
3.4.2.5 Log In Administrator ... 73
3.4.2.6 Menu Utama (Log In Admin) ... 74
3.4.2.7 Form Data Mahasiswa ... 76
3.4.2.8 Form Mata Kuliah ... 78
3.4.2.9 Form Jadwal Kuliah ... 80
3.4.2.10 Form Dosen ... 84
3.4.2.11 Form Pembagian Kelas Mahasiswa ... 85
3.5 Database ... 87
3.5.1 InterBase ... 88
3.5.1.1 Tabel Data Mahasiswa ... 88
3.5.1.2 Tabel Dosen ... 89
3.5.1.3 Tabel Mata Kuliah ... 90
3.5.1.4 Tabel Jadwal ... 91
3.5.1.5 Tabel Bagi Kelas ... 92
BAB IV PENGUJIAN 4.1 Pengujian ... 94
4.2 Data Pengujian ... 111
BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 116
5.2 Saran ... 116
DAFTAR PUSTAKA ... 117
xi
DAFTAR TABEL
Tabel 2.1 Fungsi Khusus Port B ... 8
Tabel 2.2 Fungsi Khusus Port C ... 8
Tabel 2.3 Fungsi Khusus Port D ... 9
Tabel 2.4 Alamat EEPROM... 16
Tabel 2.5 Tipe Data ... 20
Tabel 2.6 Operator Kondisi ... 20
Tabel 2.7 Operator Aritmatika ... 20
Tabel 2.8 Operator Logika ... 21
Tabel 2.9 OperatorBitwise ... 21
Tabel 2.10 OperatorAssignment ... 21
Tabel 2.11 Pin LCD ... 37
Tabel 2.12 Kombinasi Hexadecimal Keypad ... 38
Tabel 2.13 Fungsi Pin DB 9 ... 41
Tabel 2.14 Keterangan Fungsi ... 42
Tabel 3.1 Komponen Data Module ... 65
Tabel 3.2 Komponen Menu Utama ... 66
Tabel 3.3 Komponen Form Log In Dosen ... 70
Tabel 3.4 Komponen Form Data Mahasiswa ... 77
Tabel 3.5 Komponen Form Mata Kuliah ... 79
Tabel 3.6 Komponen Form Jadwal Kuliah ... 82
Tabel 3.7 Komponen Form Dosen ... 84
Tabel 3.8 Komponen Form Pembagian Kelas Mahasiswa ... 87
Tabel 3.9 Komponen Tabel Data Mahasiswa ... 88
Tabel 3.10 Komponen Tabel Dosen ... 89
Tabel 3.11 Komponen Tabel Mata Kuliah ... 90
Tabel 3.12 Komponen Tabel Jadwal ... 91
Tabel 3.13 Komponen Tabel Bagi Kelas ... 92
Tabel 4.1 Tabel Waktu Elektronika ... 112
Tabel 4.2 Tabel Waktu Pemrograman Database ... 113
xii Universitas Kristen Maranatha
DAFTAR GAMBAR
Gambar 2.1 Konfigurasi PinAVRATmega16 ... 7
Gambar 2.2 Blok Diagram ATmega16 ... 10
Gambar 2.3 Arsitektur Mikrokontroller AVR RISC ... 11
Gambar 2.4 General Purpose Register AVR ... 12
Gambar 2.5 Stack Pointer ... 13
Gambar 2.6 Peta Memori Program AVR ATmega16 ... 14
Gambar 2.7 Memori Data AVR ATmega16 ... 15
Gambar 2.8 Status Register ... 17
Gambar 2.9 Tampilan Awal CodeVision AVR ... 32
Gambar 2.10 Membuat File Project ... 32
Gambar 2.11 Project Menggunakan CodeVision AVR ... 32
Gambar 2.12 Konfigurasi Program ... 33
Gambar 2.13 Code Program (source code) ... 34
Gambar 2.14 Compile dan Make... 34
Gambar 2.15 Programmer Setting ... 35
Gambar 2.16 Mengisi Program ... 35
Gambar 2.17 LCD 2x16 ... 36
Gambar 2.18 Keypad 3x4 ... 38
Gambar 2.19 Resistor ... 39
Gambar 2.20 Kapasitor ... 40
Gambar 2.21 IC Regulator L7805CV ... 40
Gambar 2.22 DB 9 Male ... 41
Gambar 2.23 IC Max 232 ... 43
Gambar 2.24 Tampilan Awal InterBase ... 44
Gambar 2.25 Create Local Server... 44
Gambar 2.26 Create Database ... 45
Gambar 2.27 Register Database ... 46
Gambar 2.28 Tampilan Database ... 46
Gambar 2.29 IDE Delphi 7... 47
xiii
Gambar 3.1 Blok Diagram ... 52
Gambar 3.2 Skema Hardware ... 53
Gambar 3.3 Mikrokontroller ATMega16 ... 54
Gambar 3.4 Rangkaian Regulator L7805CV ... 56
Gambar 3.5 Hardware ... 57
Gambar 3.6 Desain Hardware ... 57
Gambar 3.7 Tombol Reset ... 58
Gambar 3.8 Skema ISP ... 59
Gambar 3.9 Downloader... 59
Gambar 3.10 Flow Chart Program CodeVision AVR ... 61
Gambar 3.11 Setting-an Code Wizard 1 ... 62
Gambar 3.12 Setting-an Code Wizard 2 ... 63
Gambar 3.13 Data Module ... 65
Gambar 3.14 Form Menu Utama ... 68
Gambar 3.15 Flow ChartForm Menu Utama ... 69
Gambar 3.16 Form Log In Dosen ... 70
Gambar 3.17 Flow Chart Form Log In Dosen ... 70
Gambar 3.18 Form Menu Utama (Log In Dosen) ... 71
Gambar 3.19 Flow Chart Form Menu Utama (Log In Dosen)... 72
Gambar 3.20 Form Absensi Mahasiswa ... 73
Gambar 3.21 Input Query Log In Admin ... 73
Gambar 3.22 Form Menu Utama (Log In Admin)... 74
Gambar 3.23 Flow Chart Form Menu Utama (Log In Admin) ... 75
Gambar 3.24 Flow Chart Akses Database ... 76
Gambar 3.25 Form Data Mahasiswa ... 76
Gambar 3.26 Flow Chart Form Data Mahasiswa ... 78
Gambar 3.27 Form Mata Kuliah ... 78
Gambar 3.28 Flow Chart Form Mata Kuliah ... 80
Gambar 3.29 Form Jadwal Kuliah ... 81
Gambar 3.30 Rave Report... 83
Gambar 3.31 Flow ChartForm Jadwal Mata Kuliah ... 83
Gambar 3.32 Form Dosen ... 84
Gambar 3.33 Flow ChartForm Dosen ... 85
xiv Universitas Kristen Maranatha
Gambar 3.35 Flow Chart Form Pembagian Kelas Mahasiswa ... 86
Gambar 3.36 Tabel Data Mahasiswa ... 89
Gambar 3.37 Tabel Dosen ... 90
Gambar 3.38 Tabel Jadwal... 92
Gambar 3.39 Tabel Bagi Kelas ... 93
Gambar 4.1 Tampilan Awal Program ... 94
Gambar 4.2 Proses Log In Admin ... 94
Gambar 4.3 Tampilan Menu Utama setelah Log In Admin... 95
Gambar 4.4 Pengisian Form Data Mahasiswa ... 95
Gambar 4.5 Data Mahasiswa Tersimpan ... 96
Gambar 4.6 Hapus dan Cari PIN Mahasiswa ... 96
Gambar 4.7 InputForm Mata Kuliah ... 97
Gambar 4.8 Message Mata Kuliah ... 97
Gambar 4.9 Hapus dan Simpan Data ... 98
Gambar 4.10 Input Jadwal 1 ... 98
Gambar 4.11 Input Jadwal 2 ... 99
Gambar 4.12 Input Jadwal 3 ... 99
Gambar 4.13 Data Jadwal Tersimpan pada Database ... 100
Gambar 4.14 Data Jadwal Dihapus ... 100
Gambar 4.15 Preview Print Jadwal ... 101
Gambar 4.16 Input Dosen ... 101
Gambar 4.17 Data Dosen Tersimpan ... 102
Gambar 4.18 Data Dosen Terhapus ... 102
Gambar 4.19 Input Jadwal Mahasiswa 1 ... 103
Gambar 4.20 Input Jadwal Mahasiswa 2 ... 103
Gambar 4.21 Hasil Data Jadwal Mahasiswa Tersimpan ... 103
Gambar 4.22 Message Jadwal Mahasiswa ... 104
Gambar 4.23 Hasil Penghapusan Data ... 104
Gambar 4.24 Proses Log In Dosen ... 105
Gambar 4.25 Form Menu Utama Dosen ... 105
Gambar 4.26 Input Form Menu Utama Dosen 1 ... 106
Gambar 4.27 Input Form Menu Utama Dosen 2 ... 106
Gambar 4.28 Form Menu Utama Dosen Terisi ... 107
xv
Gambar 4.30 PIN benar ... 108
Gambar 4.31 PIN Salah ... 108
Gambar 4.32 Mahasiswa Terabsen ... 109
Gambar 4.33 Password Salah ... 109
Gambar 4.34 Mahasiswa Terabsen pada Form Absensi ... 110
Gambar 4.35 Form Absensi Kosong ... 111
Gambar 4.36 Absensi Elektronika Kosong ... 112
Gambar 4.37 Absensi Elektronika Isi ... 112
Gambar 4.38 Absensi Pemrograman Database Kosong ... 113
Gambar 4.39 Absensi Pemrograman Database Isi ... 113
Gambar 4.40 Absensi Pemrograman Web Kosong ... 114
Gambar 4.41 Absensi Pemrograman Web Isi ... 114
Gambar 4.42 Data Absensi Kosong ... 115
xvi Universitas Kristen Maranatha
DAFTAR LAMPIRAN
Lampiran A ... A-1
Lampiran B ... B-1
Lampiran C ... C-1
LAMPIRAN A
A-1
Universitas Kristen Maranatha
LAMPIRAN A
#include <mega16.h> #include <delay.h>
// Alphanumeric LCD Module functions #asm
.equ __lcd_port=0x1B ;PORTA #endasm
#include <lcd.h>
// Standard Input/Output functions #include <stdio.h>
// Declare your global variables here
unsigned char keypin[9],keypass[10],datapin[9],datapass[10]; unsigned char bacakeypad();
char terima; int i,j,k;
void main(void) {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00;
A-2
// Func7=Out Func6=Out Func5=Out Func4=In Func3=Out Func2=In Func1=Out Func0=In
// State7=0 State6=1 State5=1 State4=P State3=1 State2=P State1=1 State0=P PORTC=0x7F;
DDRC=0xEA;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;
A-3
Universitas Kristen Maranatha
// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: Off
// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On
// USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00;
UCSRB=0x18; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47;
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
// INISIALISASI DAN TAMPILAN AWAL LCD lcd_init(16);
lcd_gotoxy(0,0);
A-4
delay_ms(2000);
while (1) {
// TAMPILAN AWAL MINTA PIN lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("PIN Anda =");
i=0; // BACA KEYPAD 7 KARAKTER j=0;
while(i<=6) {
datapin[j]='a';
while(datapin[j]=='a') {
keypin[i]=bacakeypad(); lcd_gotoxy(i,1); switch(keypin[i]) {
case '1' : lcd_putsf("1"); datapin[j]=''; delay_ms(200); break;
case '2' : lcd_putsf("2"); datapin[j]=''; delay_ms(200); break;
case '3' : lcd_putsf("3"); datapin[j]=''; delay_ms(200); break;
case '4' : lcd_putsf("4"); datapin[j]=''; delay_ms(200); break;
case '5' : lcd_putsf("5"); datapin[j]=''; delay_ms(200); break;
A-5
Universitas Kristen Maranatha
case '7' : lcd_putsf("7"); datapin[j]=''; delay_ms(200); break;case '8' : lcd_putsf("8"); datapin[j]=''; delay_ms(200); break;
case '9' : lcd_putsf("9"); datapin[j]=''; delay_ms(200); break;
case '*' : lcd_putsf("*"); datapin[j]=''; delay_ms(200); break;
case '0' : lcd_putsf("0"); datapin[j]=''; delay_ms(200); break;
case '#' : lcd_putsf("#"); datapin[j]=''; delay_ms(200); break;
} } i=i+1; j=j+1; }
for(k=0;k<=6;k++) //KIRIM KE KOMPUTER 7 KARAKTER {
printf("%c",keypin[k]); }
terima=''; //TERIMA SINYAL DARI KOMP terima=getchar();
while(terima=='') {
terima=getchar(); }
if (terima=='b') //B = PIN BENAR, MINTA PASSWORD {
lcd_clear(); lcd_gotoxy(0,0);
A-6
i=0; j=0;
while(i<=7) //BACA PASSWORD {
datapass[j]='a';
while(datapass[j]=='a') {
keypass[i]=bacakeypad(); lcd_gotoxy(i,1); switch(keypass[i]) {
case '1' : lcd_putsf("1"); datapass[j]=''; delay_ms(200); break;
case '2' : lcd_putsf("2"); datapass[j]=''; delay_ms(200); break;
case '3' : lcd_putsf("3"); datapass[j]=''; delay_ms(200); break;
case '4' : lcd_putsf("4"); datapass[j]=''; delay_ms(200); break;
case '5' : lcd_putsf("5"); datapass[j]=''; delay_ms(200); break;
case '6' : lcd_putsf("6"); datapass[j]=''; delay_ms(200); break;
case '7' : lcd_putsf("7"); datapass[j]=''; delay_ms(200); break;
A-7
Universitas Kristen Maranatha
case '9' : lcd_putsf("9"); datapass[j]=''; delay_ms(200); break;case '*' : lcd_putsf("*"); datapass[j]=''; delay_ms(200); break;
case '0' : lcd_putsf("0"); datapass[j]=''; delay_ms(200); break;
case '#' : lcd_putsf("#"); datapass[j]=''; delay_ms(200); break;
} } i=i+1; j=j+1; }
for(k=0;k<=7;k++) //KIRIM KE KOMPUTER {
printf("%c",keypass[k]); }
terima='';
terima=getchar();
while(terima=='') //TERIMA SINYAL {
terima=getchar(); }
if(terima=='e') //E = PASS SALAH, KEMBALI KE AWAL {
lcd_clear(); lcd_gotoxy(0,0);
lcd_putsf("Password salah! Ulangi"); delay_ms(2000);
}
else if (terima=='d') //D=PASS BENAR, KEMBALI KE AWAL {
lcd_clear(); lcd_gotoxy(0,0);
A-8
} }
else if (terima=='c') //C=PIN SALAH, KEMBALI KE AWAL {
lcd_clear(); lcd_gotoxy(0,0);
lcd_putsf("PIN salah! Masukkan lagi"); delay_ms(2000);
}
else if (terima=='f') //F=PIN SUDAH TERABSEN, KEMBALI KE AWAL {
lcd_clear(); lcd_gotoxy(0,0);
lcd_putsf("PIN sudah terabsen"); delay_ms(2000);
} }; }
unsigned char bacakeypad() //FUNGSI BACA KEYPAD {
PORTC = 0b01111101; if (PINC.2==0) return ('*'); if (PINC.0==0) return ('2'); if (PINC.4==0) return ('3');
//========================== PORTC = 0b00111111;
if (PINC.2==0) return ('1'); if (PINC.0==0) return ('5'); if (PINC.4==0) return ('6');
//========================== PORTC = 0b01011111;
if (PINC.2==0) return ('4'); if (PINC.0==0) return ('8'); if (PINC.4==0) return ('9');
//========================== PORTC = 0b01110111;
LAMPIRAN B
B-1
LAMPIRAN B
Form Menu Utama var
frmUtama: TfrmUtama;
implementation uses
UModule,UDatamahasiswa,UMatakuliah,UBagikelas,UDosen,ULogin,UAbsen; {$R *.dfm}
var datapin,datapass,simpanpin,simpanpass,x:string; var y:integer;
procedure TfrmUtama.ComPort1RxChar(Sender: TObject; Count: Integer); begin
if checkbox1.Checked = false then //BACA PIN begin
comport1.ReadStr(datapin,count); edpin.Text :=datapin;
end
else if checkbox1.Enabled = true then //BACA PASSWORD begin
comport1.ReadStr(datapass,count); edpass.Text :=datapass;
end end;
procedure TfrmUtama.FormActivate(Sender: TObject); begin
comport1.Open;
checkbox1.Checked := false; end;
procedure TfrmUtama.edPINChange(Sender: TObject); begin
if edPIN.Text <> '' then begin
y:=cbKuliah.ItemIndex+1;
With dm.qData Do //CEK DENGAN DATABASE Begin
B-2
Universitas Kristen Maranatha
Sql.Clear;Sql.Add('Select PIN,Kuliah1,Kuliah2,Kuliah3,Kuliah4,Kuliah5,'+ 'Kuliah6,Kuliah7,Kuliah8,Kuliah9,Kuliah10,Kuliah11,Kuliah12,'+ 'Kuliah13,Kuliah14,Kuliah15 From Bagikelas');
Sql.Add('Where KodeMK =:km and PIN =:p and Ket=:kt and Kls=:kl'); Prepare;
parambyname('km').AsString := edKodeMK.Text+' '; ParamByName('p').AsString := edpin.Text+' '; parambyname('kl').AsString:=cbKelas.Text; parambyname('kt').AsString:=cbKet.Text; Open;
if fields[0].IsNull then begin
comport1.WriteStr('c'); //C BERARTI SALAH end
else begin
if fields[y].IsNull then //PERIKSA STATUS ABSEN begin
simpanpin := Trim(Fields[0].AsString); if simpanpin = edpin.Text then
comport1.WriteStr('b'); //B BERARTI BENAR checkbox1.Checked:=true;
end else begin
comport1.WriteStr('f'); //F BERARTI SUDAH ADA end
end; End; end; end;
procedure TfrmUtama.edPassChange(Sender: TObject); begin
if edpass.Text <> '' then
begin
With dm.qData Do //CEK PASSWORD
Begin Close; Sql.Clear;
B-3
'Kuliah13,Kuliah14,Kuliah15 From Bagikelas');
Sql.Add('Where KodeMK =:km and PIN =:p and Ket=:kt and Kls=:kl'); Prepare;
Parambyname('km').AsString := edKodeMK.Text; ParamByName('p').AsString := edpin.Text; parambyname('kl').AsString:=cbKelas.Text; parambyname('kt').AsString:=cbKet.Text; Open;
simpanpass := Trim(Fields[0].AsString); if simpanpass = edpass.Text then begin
x:=cbKuliah.Text;
comport1.WriteStr('d'); //PASSWORD BENAR
edPass1.Text:='********'; checkbox1.Checked:=false; dm.qData.Close;
dm.qData.SQL.Clear;
dm.qData.SQL.Add('Update Bagikelas Set Kuliah'+x+' =:a');
dm.qData.SQL.Add('Where KodeMK=:km and PIN=:p and Ket=:kt and Kls=:kl');
Prepare;
Parambyname('km').AsString := edKodeMK.Text; ParamByName('p').AsString := edpin.Text+' '+' '; parambyname('kl').AsString:=cbKelas.Text; parambyname('kt').AsString:=cbKet.Text; ParamByName('a').asstring := '1';
ExecSql; end
else begin
comport1.WriteStr('e'); //PASSWORD SALAH
checkbox1.Checked:=false; edPIN.Clear;
edPass.Clear; edPass1.Clear; end;
End;
dm.trData.Commit; end
else begin
B-4
Universitas Kristen Maranatha
end;end;
procedure TfrmUtama.btHadirClick(Sender: TObject); begin
x:=cbKuliah.Text;
with dm.qData do //MENAMPILKAN JUMLAH HADIR begin
close; sql.Clear;
sql.Add('Select count(*) from Bagikelas'); sql.Add('Where Kuliah'+x+'=:a');
prepare;
parambyname('a').AsString:='1'; open;
edhadir.Text:=trim(fields[0].AsString); end
end;
procedure TfrmUtama.FormShow(Sender: TObject); begin
edtanggal.Text:=datetostr(date);
cbMK.Clear; //TARIK NAMA KE CBKODEMK
with dm.qProses do begin
close; sql.Clear;
sql.Add('select distinct NamaMK from Matakuliah'); sql.Add('Order by NamaMK');
open;
while not Eof do begin
cbMK.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
procedure TfrmUtama.Timer1Timer(Sender: TObject); var
Time1 : TDateTime; begin
Time1 := Time;
B-5
end;
procedure TfrmUtama.cbMKChange(Sender: TObject); begin
with dm.qData do begin
close; sql.Clear;
sql.Add('Select KodeMK from Matakuliah'); sql.Add('Where NamaMK =:nm');
prepare;
parambyname('nm').AsString :=cbMK.Text; open;
edKodeMK.Text := Trim(Fields[0].AsString); end;
cbKet.Clear;
with dm.qData do //TARIK KET KE CBKET begin
close; sql.Clear;
sql.Add('Select Distinct Ket from Bagikelas'); sql.Add('Where KodeMK=:km');
sql.Add('Order by Ket'); prepare;
parambyname('km').AsString:=edKodeMK.Text; open;
while not Eof do begin
cbKet.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
procedure TfrmUtama.Exit1Click(Sender: TObject); begin
application.Terminate; end;
procedure TfrmUtama.ComPort2Click(Sender: TObject); begin
B-6
Universitas Kristen Maranatha
procedure TfrmUtama.Mahasiswa1Click(Sender: TObject); begin
frmdata.ShowModal; end;
procedure TfrmUtama.MataKuliah1Click(Sender: TObject); begin
frmmatakuliah.ShowModal; end;
procedure TfrmUtama.PembagianKelas1Click(Sender: TObject); begin
frmKelas.ShowModal; end;
procedure TfrmUtama.Dosen2Click(Sender: TObject); begin
frmDosen.ShowModal; end;
procedure TfrmUtama.Dosen1Click(Sender: TObject); begin
frmLogin.ShowModal; end;
procedure TfrmUtama.LogOut1Click(Sender: TObject); begin
B-7
Label8.Visible:=false; Label9.Visible:=false; cbKelas.Visible:=false; cbKet.Visible:=false; Label10.Visible:=false; label11.Visible:=false; label12.Visible:=false; edJam.Visible:=false; edHari.Visible:=false; edRuang.Visible:=false; Absensi1.Enabled:=false; cbKet.Text:='';
cbKelas.Text:=''; edJam.Clear; edHari.Clear; edRuang.Clear; cbMK.Text:=''; cbKuliah.Text:=''; end;
procedure TfrmUtama.Admin1Click(Sender: TObject); var pass:string;
begin
InputQuery('Log In Admin', 'Password :',pass); if pass='admin' then
begin
B-8
Universitas Kristen Maranatha
Label9.Visible:=true;cbKelas.Visible:=true; cbKet.Visible:=true; Label10.Visible:=true; label11.Visible:=true; label12.Visible:=true; edJam.Visible:=true; edHari.Visible:=true; edRuang.Visible:=true; absensi1.Enabled:=true; end
else
showmessage('Password salah !!'); end;
procedure TfrmUtama.cbKetChange(Sender: TObject); begin
cbKelas.Clear; //TARIK KELAS KE CBKELAS with dm.qData do
begin close; sql.Clear;
sql.Add('Select Distinct Kls from Bagikelas'); sql.Add('Where KodeMK=:km and Ket=:kt'); sql.Add('Order by Kls');
prepare;
parambyname('km').AsString:=edKodeMK.Text; parambyname('kt').AsString:=cbKet.Text; open;
while not Eof do begin
cbKelas.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
procedure TfrmUtama.cbKelasChange(Sender: TObject); begin
with dm.qData do begin
close; sql.Clear;
B-9
sql.Add('Where KodeMK =:km and Ket=:kt and Kls=:kl'); prepare;
parambyname('km').AsString :=edKodeMK.Text; parambyname('kt').AsString :=cbKet.Text; parambyname('kl').AsString :=cbKelas.Text; open;
edJam.Text := Trim(Fields[0].AsString); edHari.Text := Trim(Fields[1].AsString); edRuang.Text := Trim(Fields[2].AsString); end;
end;
Form Data Mahasiswa var
frmData: TfrmData;
implementation uses umodule; {$R *.dfm}
procedure TfrmData.btSimpanClick(Sender: TObject); begin
//CEK PIN JIKA SUDAH ADA DATA TIDAK MASUK, JIKA TIDAK ADA DATA MASUK
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Select PIN From Datamahasiswa'); Sql.Add('Where PIN =:p');
Prepare;
ParamByName('p').AsString := edIpin.Text; Open;
if fields[0].Text = edIpin.Text + ' ' + ' ' then begin
MessageDlg('PIN sudah ada', mtInformation,[mbOk], 0); end
else
if fields[0].IsNull then begin
with dm.qData do begin
B-10
Universitas Kristen Maranatha
sql.Clear;sql.Add('Insert Into Datamahasiswa(PIN, Kode, Nama)'+ 'values(:p,:k,:n)');
prepare;
parambyname('p').AsString := edIpin.Text; parambyname('k').AsString := edPass.Text; parambyname('n').AsString := edNama.Text; execsql;
end;
dm.trData.Commit; edIpin.Clear; edPass.Clear; edNama.Clear; edIpin.SetFocus;
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select PIN, Kode, Nama from datamahasiswa'); open;
end; end; end; end;
procedure TfrmData.btExitClick(Sender: TObject); begin
close; end;
procedure TfrmData.FormActivate(Sender: TObject); begin
Tampilkan; edipin.SetFocus; end;
procedure TfrmData.edNamaChange(Sender: TObject); begin
with dm.qProses do begin
close; sql.Clear;
B-11
sql.Add('where PIN like :p'); prepare;
parambyname('p').AsString:='%'+edCari.Text+'%'; open;
end; end;
procedure TfrmData.edCariChange(Sender: TObject); begin
//MENCARI PIN MAHASISWA with dm.qProses do
begin close; sql.Clear;
sql.Add('select PIN, Kode, Nama from datamahasiswa'); sql.Add('where PIN like :p');
prepare;
parambyname('p').AsString := '%'+edCari.Text+'%'; open;
end; end;
procedure TfrmData.dbgMahasiswaDblClick(Sender: TObject); begin
//HAPUS DATA MAHASISWA
If MessageDlg('Benar Mau Hapus Data Ini !',mtConfirmation, [mbYes,mbNo],0)=mrYes Then
Begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Delete From DataMahasiswa'); Sql.Add('Where PIN =:p');
Prepare;
ParamByName('p').AsString := dbgMahasiswa.Fields[0].AsString; ExecSql;
End;
dm.trData.Commit;
Tampilkan; end;
B-12
Universitas Kristen Maranatha
procedure TfrmData.Tampilkan; beginwith dm.qProses do begin
close; sql.Clear;
sql.Add('Select PIN, Kode, Nama from Datamahasiswa'); open;
end; end;
end.
Form Mata Kuliah var
frmMataKuliah: TfrmMataKuliah;
implementation
uses UModule,UJadwal; {$R *.dfm}
procedure TfrmMataKuliah.btSimpanClick(Sender: TObject); begin
//SIMPAN DATA MATA KULIAH PADA DATABASE With dm.qData Do
Begin Close; Sql.Clear;
Sql.Add('Select KodeMK From Matakuliah'); Sql.Add('Where KodeMK=:km');
Prepare;
ParamByName('km').AsString:=cbKodeMK.Text+' - '+edKodeMK.Text; Open;
if Trim(Fields[0].Text) = cbKodeMK.Text+' - '+edKodeMK.Text then begin
MessageDlg('Mata Kuliah sudah ada', mtInformation,[mbOk], 0); end
else
if fields[0].IsNull then begin
B-13
close; sql.Clear;
sql.Add('Insert Into
Matakuliah(KodeMK,NamaMK,SKS,Sem)values(:km,'+ ':nm,:sk,:sm)');
prepare;
parambyname('km').AsString := cbKodeMK.Text+' - '+edKodeMK.Text; parambyname('nm').AsString := edNamaMK.Text;
parambyname('sk').AsString := edSKS.Text; parambyname('sm').AsString := cbSem.Text; execsql;
end;
dm.trData.Commit; cbKodeMK.Text := ''; cbSem.Text :=''; edKodeMK.Clear; edNamaMK.Clear; edSKS.Clear;
cbKodeMK.SetFocus;
tampilkan; end;
end; end;
procedure TfrmMataKuliah.FormActivate(Sender: TObject); begin
cbKodeMK.SetFocus; tampilkan;
end;
procedure TfrmMataKuliah.btKeluarClick(Sender: TObject); begin
cbKodeMK.Text := ''; cbSem.Text :=''; edKodeMK.Clear; edNamaMK.Clear; edSKS.Clear; close;
end;
procedure TfrmMataKuliah.Tampilkan; begin
B-14
Universitas Kristen Maranatha
beginclose; sql.Clear;
sql.Add('Select KodeMK,NamaMK,SKS,Sem from Matakuliah'); open;
end; end;
procedure TfrmMataKuliah.dbgMatakuliahDblClick(Sender: TObject); begin
If MessageDlg('Benar Mau Hapus Data Ini !',mtConfirmation, [mbYes,mbNo],0)=mrYes Then
Begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Delete From Matakuliah'); Sql.Add('Where KodeMK=:km'); Prepare;
ParamByName('km').AsString := dbgMataKuliah.Fields[0].AsString; ExecSql;
End;
dm.trData.Commit; end;
tampilkan end;
procedure TfrmMataKuliah.btJadwalClick(Sender: TObject); begin
frmJadwal.ShowModal; end;
end.
Form Dosen var
frmDosen: TfrmDosen;
implementation
uses UModule;
B-15
procedure TfrmDosen.btSimpanClick(Sender: TObject); begin
//SIMPAN DATA DOSEN PADA DATABASE With dm.qData Do
Begin Close; Sql.Clear;
Sql.Add('Select PIND From Dosen'); Sql.Add('Where PIND =:pd');
Prepare;
ParamByName('pd').AsString := edPIN.Text; Open;
if fields[0].Text = edPIN.Text then begin
MessageDlg('PIN sudah ada', mtInformation,[mbOk], 0); end
else
if fields[0].IsNull then begin
with dm.qData do begin
close; sql.Clear;
sql.Add('Insert Into Dosen(PIND, Nama)'+ 'values(:p,:n)');
prepare;
parambyname('p').AsString := edPIN.Text; parambyname('n').AsString := edNama.Text; execsql;
end;
dm.trData.Commit; edPIN.Clear; edNama.Clear; edPIN.SetFocus;
Tampilkan end;
end; end;
procedure TfrmDosen.btExitClick(Sender: TObject); begin
B-16
Universitas Kristen Maranatha
close;end;
procedure TfrmDosen.dbgDosenDblClick(Sender: TObject); begin
If MessageDlg('Benar Mau Hapus Data Ini !',mtConfirmation, [mbYes,mbNo],0)=mrYes Then
Begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Delete From Dosen'); Sql.Add('Where PIND =:pd'); Prepare;
ParamByName('pd').AsString := dbgDosen.Fields[0].AsString; ExecSql;
End;
dm.trData.Commit; Tampilkan
end; end;
procedure TfrmDosen.Tampilkan; begin
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select PIND, Nama from Dosen'); open;
end; end;
procedure TfrmDosen.FormActivate(Sender: TObject); begin
Tampilkan; end;
end.
B-17
frmJadwal: TfrmJadwal;
implementation uses UModule;
{$R *.dfm}
procedure TfrmJadwal.FormShow(Sender: TObject); begin
//TARIK MATA KULIAH KE CBNAMAMK cbNamaMK.Clear;
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select Distinct NamaMK from Matakuliah'); sql.Add('Order by NamaMK');
open;
while not Eof do begin
cbNamaMK.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end;
//TARIK PIN DOSEN KE CBPIND cbNamad.Clear;
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select Distinct Nama from Dosen'); sql.Add('Order by Nama');
open;
while not Eof do begin
cbNamad.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
B-18
Universitas Kristen Maranatha
cbNamaMK.SetFocus;tampilkan; end;
procedure TfrmJadwal.btExitClick(Sender: TObject); begin
edKodeMK.Clear; edPIND.Text:=''; cbMulai.Text := ''; cbSelesai.Text := ''; edKelas.Clear; cbKet.Text :=''; cbHari.Text :=''; cbNamad.Text:=''; edRuang.Clear; close;
end;
procedure TfrmJadwal.btSimpanClick(Sender: TObject); begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Select KodeMK From Jadwal');
Sql.Add('Where KodeMK=:km and Ket=:kt and Kls=:kl'); Prepare;
ParamByName('km').AsString:=edKodeMK.Text; ParamByName('kt').AsString:=cbKet.Text; ParamByName('kl').AsString:=edKelas.Text; Open;
if Trim(Fields[0].Text) = edKodeMK.Text then begin
MessageDlg('Jadwal sudah ada', mtInformation,[mbOk], 0); end
else
if fields[0].IsNull then begin
with dm.qData do begin
close; sql.Clear;
B-19
prepare;
parambyname('km').AsString := edKodeMK.Text; parambyname('nm').AsString := cbNamaMK.Text;
ParamByName('jk').AsString := cbMulai.Text+' - '+cbSelesai.Text; parambyname('kl').AsString := edKelas.Text;
parambyname('kt').AsString := cbKet.Text; parambyname('h').AsString := cbHari.Text; parambyname('d').AsString := cbNamad.Text; parambyname('rg').AsString := edRuang.Text; execsql;
end;
dm.trData.Commit; edKodeMK.Clear; edPIND.Text:=''; cbMulai.Text := ''; cbSelesai.Text := ''; edKelas.Clear; cbKet.Text :=''; cbHari.Text :=''; cbNamad.Text:=''; edRuang.Clear; cbNamaMK.Text:=''; cbNamaMK.SetFocus;
tampilkan; end;
end; end;
procedure TfrmJadwal.Tampilkan; begin
with dm.qProses do begin
close; sql.Clear; sql.Add('Select
Jadwal.Hari,Jadwal.JamMK,Matakuliah.Sem,Jadwal.KodeMK,'+
'Jadwal.Ket,Jadwal.NamaMK,Jadwal.Kls,Matakuliah.SKS,Jadwal.Dosen,'+ 'Jadwal.Ruang from Jadwal');
sql.Add('inner join Matakuliah on matakuliah.KodeMK = Jadwal.KodeMK'); sql.Add('Order By Jadwal.Hari');
B-20
Universitas Kristen Maranatha
procedure TfrmJadwal.dbgJadwalDblClick(Sender: TObject); begin
If MessageDlg('Benar Mau Hapus Data Ini !',mtConfirmation, [mbYes,mbNo],0)=mrYes Then
Begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Delete From Jadwal');
Sql.Add('Where KodeMK=:km and Ket=:kt and Kls=:kl'); Prepare;
ParamByName('km').AsString := dbgJadwal.Fields[3].AsString; ParamByName('kt').AsString := dbgJadwal.Fields[4].AsString; ParamByName('kl').AsString := dbgJadwal.Fields[6].AsString; ExecSql;
End;
dm.trData.Commit; end;
tampilkan end;
procedure TfrmJadwal.cbNamaMKChange(Sender: TObject); begin
//TAMPILKAN NAMA MATA KULIAH with dm.qData do
begin close; sql.Clear;
sql.Add('Select KodeMK from Matakuliah'); sql.Add('Where NamaMK =:nm');
prepare;
parambyname('nm').AsString :=cbNamaMK.Text; open;
edKodeMK.Text := Trim(Fields[0].AsString); end;
end;
procedure TfrmJadwal.cbNamadChange(Sender: TObject); begin
//TAMPILKAN NAMA DOSEN with dm.qData do
B-21
close; sql.Clear;
sql.Add('Select PIND from Dosen'); sql.Add('Where Nama =:nd'); prepare;
parambyname('nd').AsString :=cbNamad.Text; open;
edPIND.Text := Trim(Fields[0].AsString); end;
end;
procedure TfrmJadwal.btPrintClick(Sender: TObject); begin
rvproject1.Execute; end;
end.
Form Jadwal Mahasiswa var
frmKelas: TfrmKelas;
implementation
uses umodule,ujadwal; {$R *.dfm}
procedure TfrmKelas.btKeluarClick(Sender: TObject); begin
close;
cbNamaMK.Text := ''; cbPIN.Text :=''; cbKet.Text :=''; cbKelas.Text :=''; edKodeMK.Clear; edNama.Clear; edPass.Clear; edJam.Clear; edHari.Clear; edRuang.Clear; end;
B-22
Universitas Kristen Maranatha
//TARIK NAMA MATA KULIAH KE CBNAMAMK cbNamaMK.Clear;
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select Distinct NamaMK from Matakuliah'); sql.Add('Order by NamaMK');
open;
while not Eof do begin
cbNamaMK.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end;
//TARIK PIN MAHASISWA KE CBPIN cbPIN.Clear;
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select Distinct PIN from DataMahasiswa'); sql.Add('Order by PIN');
open;
while not Eof do begin
cbPIN.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
procedure TfrmKelas.cbNamaMKChange(Sender: TObject); begin
//TAMPILKAN KODE MATA KULIAH with dm.qData do
begin close; sql.Clear;
sql.Add('Select KodeMK from Matakuliah'); sql.Add('Where NamaMK =:nm');
prepare;
B-23
edKodeMK.Text := Trim(Fields[0].AsString); end;
//TARIK KETERANGAN KE CBKET cbKet.Clear;
with dm.qData do begin
close; sql.Clear;
sql.Add('Select Distinct Ket from Jadwal'); sql.Add('Where KodeMK=:km');
sql.Add('Order by Ket'); prepare;
parambyname('km').AsString:=edKodeMK.Text; open;
while not Eof do begin
cbKet.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
procedure TfrmKelas.FormActivate(Sender: TObject); begin
tampilkan; end;
procedure TfrmKelas.btSimpanClick(Sender: TObject); begin
with dm.qData do begin
close; sql.Clear;
sql.Add('Select PIN from Bagikelas');
sql.Add('Where KodeMK =:km and Ket =:kt and PIN =:p'); prepare;
parambyname('km').AsString := edKodeMK.Text; parambyname('p').AsString := cbPIN.Text; parambyname('kt').AsString := cbKet.Text; open;
if Trim(fields[0].Text) = cbPIN.Text then begin
B-24
Universitas Kristen Maranatha
endelse
if fields[0].IsNull then begin
with dm.qData do begin
close; sql.Clear;
sql.Add('Insert into Bagikelas(KodeMK,Kls,Ket,PIN,Kode)values(:km,'+ ':kl,:kt,:p,:k)');
prepare;
parambyname('km').AsString := edKodeMK.Text; parambyname('kl').AsString := cbKelas.Text; parambyname('kt').AsString := cbKet.Text; parambyname('p').AsString := cbPIN.Text; parambyname('k').AsString := edPass.Text; execsql;
end;
dm.trData.Commit; cbNamaMK.Text := ''; cbPIN.Text :=''; cbKet.Text :=''; cbKelas.Text :=''; edKodeMK.Clear; edNama.Clear; edPass.Clear; edJam.Clear; edHari.Clear; edRuang.Clear; cbNamaMK.SetFocus;
tampilkan end;
end; end;
procedure TfrmKelas.btResetClick(Sender: TObject); begin
with dm.qData do begin
close; sql.Clear;
B-25
end;
dm.trData.Commit;
tampilkan end;
procedure TfrmKelas.dbgKuliahDblClick(Sender: TObject); begin
If MessageDlg('Benar Mau Hapus Data Ini !',mtConfirmation, [mbYes,mbNo],0)=mrYes Then
Begin
With dm.qData Do Begin
Close; Sql.Clear;
Sql.Add('Delete From Bagikelas');
Sql.Add('Where KodeMK =:km and Ket =:kt and PIN =:p'); Prepare;
ParamByName('km').AsString := dbgKuliah.Fields[4].AsString; ParamByName('kt').AsString := dbgKuliah.Fields[7].AsString; ParamByName('p').AsString := dbgKuliah.Fields[0].AsString; ExecSql;
End;
dm.trData.Commit; end;
tampilkan end;
procedure TfrmKelas.Tampilkan; begin
with dm.qProses do begin
close; sql.Clear; sql.Add('Select
Jadwal.Hari,Jadwal.JamMK,Jadwal.Ruang,Bagikelas.KodeMK,'+ 'Jadwal.NamaMK,Bagikelas.Kls,Bagikelas.Ket,Bagikelas.PIN from Bagikelas');
sql.Add('inner join jadwal on ((jadwal.kodemk=bagikelas.kodemk) and'+ ' (jadwal.ket=bagikelas.ket) and (jadwal.kls=bagikelas.kls))');
sql.Add('Order By Jadwal.Hari'); open;
B-26
Universitas Kristen Maranatha
end;procedure TfrmKelas.cbPINChange(Sender: TObject); begin
//TAMPILKAN NAMA MAHASISWA with dm.qData do
begin close; sql.Clear;
sql.Add('Select Nama,Kode from Datamahasiswa'); sql.Add('Where PIN =:p');
prepare;
parambyname('p').AsString :=cbPIN.Text; open;
edNama.Text := Trim(Fields[0].AsString); edPass.Text := Trim(Fields[1].AsString); end;
end;
procedure TfrmKelas.cbKetChange(Sender: TObject); begin
//TARIK KELAS KE CBKELAS cbKelas.Clear;
with dm.qData do begin
close; sql.Clear;
sql.Add('Select Distinct Kls from Jadwal'); sql.Add('Where KodeMK=:km and Ket=:kt'); sql.Add('Order by Kls');
prepare;
parambyname('km').AsString:=edKodeMK.Text; parambyname('kt').AsString:=cbKet.Text; open;
while not Eof do begin
cbKelas.Items.Add(Trim(Fields[0].Asstring)); Next;
end; end; end;
B-27
with dm.qData do begin
close; sql.Clear;
sql.Add('Select JamMK,Hari,Ruang from Jadwal'); sql.Add('Where KodeMK =:km and Ket=:kt and Kls=:kl'); prepare;
parambyname('km').AsString :=edKodeMK.Text; parambyname('kt').AsString :=cbKet.Text; parambyname('kl').AsString :=cbKelas.Text; open;
edJam.Text := Trim(Fields[0].AsString); edHari.Text := Trim(Fields[1].AsString); edRuang.Text := Trim(Fields[2].AsString); end;
end;
end.
Form Log In var
frmLogIn: TfrmLogIn;
implementation
uses UModule,UMenuutama; {$R *.dfm}
procedure TfrmLogIn.btCancelClick(Sender: TObject); begin
close; end;
procedure TfrmLogIn.btLoginClick(Sender: TObject); begin
with dm.qData do begin
close;
sql.Add('Select PIND from Dosen'); sql.Add('where PIND=:pd');
prepare;
parambyname('pd').AsString:=edPIN.Text; open;
B-28
Universitas Kristen Maranatha
showmessage('PIN salah !!') elsebegin
showmessage('Log In telah berhasil'); frmutama.Label1.Visible:=true;
frmutama.Label2.Visible:=true; frmutama.Label3.Visible:=true; frmutama.Label4.Visible:=true; frmutama.Label5.Visible:=true; frmutama.Label6.Visible:=true; frmutama.Label7.Visible:=true; frmutama.edPIN.Visible:=true; frmutama.edPass1.Visible:=true; frmutama.edHadir.Visible:=true; frmutama.edtanggal.Visible:=true; frmutama.edWaktu.Visible:=true; frmutama.btHadir.Visible:=true; frmutama.CheckBox1.Visible:=true; frmutama.cbMK.Visible:=true; frmutama.cbKuliah.Visible:=true; frmutama.Label8.Visible:=true; frmutama.Label9.Visible:=true; frmutama.cbKelas.Visible:=true; frmutama.cbKet.Visible:=true; frmutama.Label10.Visible:=true; frmutama.label11.Visible:=true; frmutama.label12.Visible:=true; frmutama.edJam.Visible:=true; frmutama.edHari.Visible:=true; frmutama.edRuang.Visible:=true; frmutama.Absensi1.Enabled:=true; frmlogin.Close;
end end; end;
B-29
Form Absen var
frmAbsen: TfrmAbsen;
implementation
uses UModule,UMenuutama,ULogin; {$R *.dfm}
procedure TfrmAbsen.btExitClick(Sender: TObject); begin
close; end;
procedure TfrmAbsen.FormActivate(Sender: TObject); begin
with dm.qProses do begin
close; sql.Clear;
sql.Add('Select KodeMK,Kls,Ket,PIN,Kuliah1,Kuliah2,Kuliah3,Kuliah4,'+ 'Kuliah5,Kuliah6,Kuliah7,Kuliah8,Kuliah9,Kuliah10,Kuliah11,Kuliah12,'+ 'Kuliah13,Kuliah14,Kuliah15 from Bagikelas');
sql.Add('where KodeMK=:km and Kls=:kl and Ket=:kt'); prepare;
parambyname('km').AsString:=frmutama.edKodeMK.Text; parambyname('kl').AsString:=frmutama.cbKelas.Text; parambyname('kt').AsString:=frmutama.cbKet.Text; open;
end; end;
LAMPIRAN C
C-1
LAMPIRAN C
Tabel Bagi Kelas
CREATE TABLE BAGIKELAS (
KODEMK CHAR(10) NOT NULL, KLS CHAR(1),
KET CHAR(6) NOT NULL, PIN CHAR(9) NOT NULL, KODE CHAR(8),
KULIAH1 CHAR(1), KULIAH2 CHAR(1), KULIAH3 CHAR(1), KULIAH4 CHAR(1), KULIAH5 CHAR(1), KULIAH6 CHAR(1), KULIAH7 CHAR(1), KULIAH8 CHAR(1), KULIAH9 CHAR(1), KULIAH10 CHAR(1), KULIAH11 CHAR(1), KULIAH12 CHAR(1), KULIAH13 CHAR(1), KULIAH14 CHAR(1), KULIAH15 CHAR(1),
CONSTRAINT PKBGKELAS PRIMARY KEY (KODEMK, PIN, KET) );
Tabel Data Mahasiswa
CREATE TABLE DATAMAHASISWA (
PIN CHAR(9) NOT NULL, KODE CHAR(8) NOT NULL, NAMA CHAR(20),
CONSTRAINT PKPIN PRIMARY KEY (PIN) );
Tabel Dosen
CREATE TABLE DOSEN (
C-2
Universitas Kristen Maranatha
NAMA CHAR(40),CONSTRAINT PKPIND PRIMARY KEY (PIND) );
Tabel Jadwal
CREATE TABLE JADWAL (
HARI CHAR(6),
JAMMK CHAR(13),
KODEMK CHAR(10) NOT NULL, KET CHAR(6) NOT NULL, NAMAMK CHAR(25),
KLS CHAR(1) NOT NULL, DOSEN CHAR(40),
RUANG CHAR(11),
CONSTRAINT PKJADWAL PRIMARY KEY (KODEMK, KET, KLS));
Tabel Mata Kuliah
CREATE TABLE MATAKULIAH (
KODEMK CHAR(10) NOT NULL, NAMAMK CHAR(25),
SKS CHAR(1), SEM CHAR(1),
LAMPIRAN D
Flow Chart
Program Absen
D-1
Universitas Kristen Maranatha
Lampiran D
Flow Chart Kehadiran Mahasiswa
Kehadiran Mahasiswa
Menjumlahkan Total Kehadiran
Mahasiswa
Database
Jumlah Total Hadir Mahasiswa pada Form Menu Utama
Return Data Mata Kuliah dan Mahasiswa Form Menu
Utama
Flow Chart Tambah Data Mahasiswa
Tambah Data Mahasiswa
Data Mahasiswa
Menyimpan Data pada Database
Database
D-2
Flow Chart Hapus Data Mahasiswa
Hapus Data Mahasiswa
Data yang akan Dihapus
Hapus Data pada Database
Database
Return
Flow Chart Cari Data Mahasiswa
Cari Data Mahasiswa
Data pada Field Cari
PIN
Cari Data pada Database
Database
D-3
Universitas Kristen Maranatha
Flow Chart Tambah Data Mata Kuliah
Tambah Data Mata Kuliah
Data Mata Kuliah
Menyimpan Data pada Database
Database
Return
Flow Chart Hapus Data Mata Kuliah
Hapus Data Mata Kuliah
Data yang akan Dihapus
Hapus Data pada Database
Database
D-4
Flow Chart Cari Data Mahasiswa
Cari Data Mata Kuliah
Data pada Field Cari
PIN
Cari Data pada Database
Database
Return Data yang Sudah Dicari
Flow Chart Tambah Data Jadwal Kuliah
Tambah Data Jadwal Kuliah
Data Mata Kuliah &Jadwal
Menyimpan Data pada Database
Database
D-5
Universitas Kristen Maranatha
Flow Chart Hapus Data Mata Kuliah
Hapus Data Jadwal Kuliah
Data yang akan Dihapus
Hapus Data pada Database
Database
Return
Flow Chart Tambah Data Dosen
Tambah Data Dosen
Data PIN & Dosen
Menyimpan Data pada Database
Database
D-6
Flow Chart Hapus Data Dosen
Hapus Data Dosen
Data yang akan Dihapus
Hapus Data pada Database
Database
Return
Flow Chart Tambah Data Bagi Kelas
Tambah Data Bagi Kelas
Data Jadwal Kuliah & Mahasiswa
Menyimpan Data pada Database
Database
D-7
Universitas Kristen Maranatha
Flow Chart Hapus Data Bagi Kelas
Hapus Data Bagi Kelas
Data yang akan Dihapus
Hapus Data pada Database
Database
1
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Perkembangan ilmu pengetahuan di segala bidang dalam era globalisasi
saat ini begitu pesat. Terutama dalam bidang IT yang semakin maju seiring
dengan kebutuhan pemakai (user) untuk memperoleh suatu karya atau inovasi
maksimal serta memperoleh kemudahan dalam segala aktivitas untuk mencapai
suatu tujuan.
Penggunaan komputer dalam sistem informasi tidak lepas dari
penyediaan sarana berupa software dan hardware. Sarana tersebut harus
memiliki kecepatan proses yang sebanding dengan tingkat pekerjaan sehingga
kinerja user yang menjalankan sistem tersebut mengalami peningkatan. Waktu
pun menjadi tidak sia-sia karena kekurangan sarana untuk user.
Di suatu perguruan tinggi absensi mahasiswa memegang peranan
penting dalam setiap kegiatan perkuliahan. Absensi mahasiswa merupakan
salah satu penunjang yang dapat mendukung atau memotivasi setiap kegiatan
perkuliahan yang dilakukan di dalam sebuah perguruan tinggi. Di samping itu,
absensi mahasiswa bisa juga sebagai informasi tentang kedisiplinan mahasiswa
yang bersangkutan.
Saat ini sistem absensi pada sebagian besar perguruan tinggi masih
memakai sistem secara manual. Hal ini dapat dilihat dari masih terlibatnya dosen
yang bersangkutan untuk mendata kehadiran mahasiswa sehingga dapat sangat
2 Universitas Kristen Maranatha
manual ini dapat mengalihkan perhatian mahasiswa dan bisa membuat suasana
kelas tidak tertib. Untuk mengatasi hal tersebut maka dibutuhkan suatu sistem
absensi yang berguna untuk memudahkan dosen untuk mengabsen kehadiran
mahasiswa.
Berdasarkan latar belakang di atas, maka penulis mencoba untuk
merancang suatu sistem absensi dalam perguruan tinggi dengan judul
Perancangan Sistem Absensi Elektronik Menggunakan ATMega16.
1.2 Identifikasi Masalah
Bagaimana merancang suatu sistem absensi yang dapat memudahkan
dosen dalam mengabsen kehadiran mahasiswa ?
1.3 Tujuan Penelitian
Menghasilkan suatu rancangan sistem absensi yang dapat memudahkan
dosen dalam mengabsen kehadiran mahasiswa
1.4 Batasan Masalah
Pembatasan penelitian yang digunakan adalah :
1. Perancangan sistem ini menggunakan komputer sebagai server database
mahasiswa.
2. Perancangan sistem ini menggunakan alat yang berguna untuk menginput
data mahasiswa ( PIN dan password ). PIN dan password berupa angka dan
dibatasi jumlah karakternya ( PIN harus 7 karakter dan password harus 8
3 3. Perancangan sistem ini terdiri dari keypad, untuk menginput data, LCD,
tampilan yang berguna untuk membantu penginputan data, koneksi serial,
untuk menghubungkan alat dengan komputer.
1.5 Sistematika Penulisan
Laporan tugas akhir ini disusun dalam lima bagian dengan penjelasan
sebagai berikut :
BAB I PENDAHULUAN
Bab ini berisi latar belakang masalah, identifikasi masalah, rumusan masalah,
tujuan penelitian, batasan masalah, dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini terdiri dari teori penunjang, algoritma / metode, dan teknologi yang
digunakan ketika mengerjakan karya ilmiah ini.
BAB III PERANCANGAN DAN PEMODELAN
Bab ini memuat perancangan sistem dan proses pembuatan sistem dari awal
sampai akhir hingga alat siap diuji coba.
BAB IV PENGUJIAN
Bab ini memuat pengujian rancangan sistem, menganalisa kinerja, analisa dan
4 Universitas Kristen Maranatha
BAB V KESIMPULAN DAN SARAN
Pada bab ini dilakukan pengambilan kesimpulan dari penelitian yang telah
116
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil pengujian yang telah dilakukan dapat disimpulkan
bahwa perancangan sistem absensi elektronik ini telah berfungsi sebagai suatu
sistem absensi yang dapat berjalan dengan baik. Rancangan sistem ini
mempermudah semua pihak dalam kegiatan pengabsenan dalam perkuliahan ini.
Program Absen Elektronik telah berjalan dengan baik, hal ini dibuktikan
dari pengujian yang dilakukan dan tidak terdapat error ketika pengujian
berlangsung. Hardware sebagai media penginputan juga telah berjalan dengan
baik. Hal ini dibuktikan dengan tidak adanya error ketika pengujian.
5.2 Saran
Berdasarkan kesimpulan yang telah dibuat, dapat dihasilkan saran untuk
penelitian selanjutnya. Saran–saran tersebut adalah :
1. Hardware yang digunakan perlu dikembangkan lebih lanjut terutama pada
faktor keamanannya. Penggunaan keypad dalam penginputan data bisa
menimbulkan kecurangan sehingga disarankan agar media penginputan
dikembangkan dengan memakai pendeteksi sidik jari.
2. Hardware dapat dikembangkan dengan menggunakan bluetooth sebagai
media untuk mengirimkan data ke komputer agar tidak sulit dalam
117 Universitas Kristen Maranatha
DAFTAR PUSTAKA
Andrianto, Heri. 2008. Pemrograman Mikrokontroler AVR ATMEGA 16
Menggunakan Bahasa C (CodeVision AVR). Bandung : Informatika.
Bahri, Kussnassriyanto Saiful. 2008. Teknik Pemrograman Delphi. Edisi Revisi.
Bandung : Informatika.
http://bank-je.com/ilmu-listrik/kapasitor-komponen-pasif-elektonika/ , terakhir
diakses tanggal 26 Juni 2009.
http://bank-je.com/ilmu-listrik/komponen-dasar-elektronika-resistor/, terakhir
diakses tanggal 26 Juni 2009.
http://www.datasheetcatalog.com/datasheets_pdf/A/T/M/E/ATMEGA16.shtml,
terakhir diakses tanggal 26 Juni 2009.
http://electricalcenter.blogspot.com/, terakhir diakses tanggal 26 Juni 2009.
http://www.elektroda.pl/rtvforum/topic429963.html, terakhir diakses tanggal 26
Juni 2009
http://elektronika-elektronika.blogspot.com/2007_05_01_archive.html, terakhir
diakses tanggal 26 Juni 2009.
http://elka.brawijaya.ac.id/info/info_artikel.php?subaction=showfull&id=11670222
11&archive=&start_from=&ucat=3&, terakhir diakses tanggal 26 Juni
2009.
http://elka.brawijaya.ac.id/praktikum/tak/tak.php?page=3, terakhir diakses tanggal
26 Juni 2009.
http://elkaubisa.blogspot.com/2009/04/transistor-sebagai-saklar-bagian-1.html,
118
http://www.germes-online.com/catalog/87/381/206104/sell_potential_relays_hlr3800_series.h
tml, terakhir diakses tanggal 26 Juni 2009.
http://www.htmldatasheet.com/atmel/atmega16.htm, terakhir diakses tanggal 26
Juni 2009.
http://www.ittelkom.ac.id/library/index.php?view=article&catid=16%3Amikroproce
Amikroprocesso&id=46%3Amikrokontroler-avr-atmega
8535&option=com_content&Itemid=15, terakhir diakses tanggal 26 Juni
2009.
http://www.reuk.co.uk/What-is-a-Transistor.htm, terakhir diakses tanggal 26 Juni
2009.
http://saft7.com/?p=228, terakhir diakses tanggal 26 Juni 209.
http://zone.ni.com/devzone/cda/tut/p/id/3450, terakhir diakses tanggal 26 Juni
2009.
http://cn.100y.com.tw/PNoInfo/11333.htm, terakhir diakses tanggal 16 Juli