• Tidak ada hasil yang ditemukan

Perancangan Sistem Absensi Elektronik Menggunakan ATMega 16.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan Sistem Absensi Elektronik Menggunakan ATMega 16."

Copied!
68
0
0

Teks penuh

(1)

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

(2)

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.

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

xvi Universitas Kristen Maranatha

DAFTAR LAMPIRAN

Lampiran A ... A-1

Lampiran B ... B-1

Lampiran C ... C-1

(12)

LAMPIRAN A

(13)

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;

(14)

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;

(15)

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);

(16)

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;

(17)

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);

(18)

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;

(19)

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);

(20)

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;

(21)

LAMPIRAN B

(22)

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

(23)

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;

(24)

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

(25)

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;

(26)

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

(27)

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

(28)

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

(29)

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;

(30)

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

(31)

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;

(32)

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;

(33)

B-12

Universitas Kristen Maranatha

procedure TfrmData.Tampilkan; begin

with 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

(34)

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

(35)

B-14

Universitas Kristen Maranatha

begin

close; 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;

(36)

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

(37)

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.

(38)

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;

(39)

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;

(40)

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');

(41)

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

(42)

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;

(43)

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;

(44)

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

(45)

B-24

Universitas Kristen Maranatha

end

else

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;

(46)

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;

(47)

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;

(48)

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;

(49)

B-28

Universitas Kristen Maranatha

showmessage('PIN salah !!') else

begin

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;

(50)

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;

(51)

LAMPIRAN C

(52)

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 (

(53)

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),

(54)

LAMPIRAN D

Flow Chart

Program Absen

(55)

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

(56)

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

(57)

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

(58)

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

(59)

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

(60)

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

(61)

D-7

Universitas Kristen Maranatha

Flow Chart Hapus Data Bagi Kelas

Hapus Data Bagi Kelas

Data yang akan Dihapus

Hapus Data pada Database

Database

(62)

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

(63)

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

(64)

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

(65)

4 Universitas Kristen Maranatha

BAB V KESIMPULAN DAN SARAN

Pada bab ini dilakukan pengambilan kesimpulan dari penelitian yang telah

(66)

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

(67)

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,

(68)

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

Referensi

Dokumen terkait

yang menyatakan “Terdakwa Agus Gusnawan bin Asdali telah terbukti secara sah dan meyakinkan bersalah melakukan tindak pidana “penganiayaan” adalah tepat dan benar,

Daerah Irigasi Air Gaung Kecil (Dinas Pekerjaan Umum Pengairan Provinsi Sumatera Selatan, 2014) yang terletak di Desa Talang Tinggi, Kecamatan Muara Payang Kabupaten Lahat

Based on the statement of the problem above, the specific objective of this research can be formulated as follows: To find out whether there is a significant difference of the

dalam praktek penanaman modal ( istitsmar ) dengan menggunakan dana zakat yang terkumpul di lembaga-lembaga amil zakat di

Kalimat yang tepat untuk melengkapi isi teks pidato tersebut adalah. Akhirnya kami atas nama panitia mengucapkan selamat mengunjungi pameran buku ini. Puji syukur senantiasa kita

Dalam rangka menyelesaikan skripsi yang berjudul “Pengaruh Karakteristik Tujuan Anggaran, Sumber Daya Manusia, dan Pengadaan Barang dan Jasa Terhadap Penyerapan

Penelitian ini bertujuan untuk mengetahui pengaruh tingkat kesehatan bank dengan metode RGEC yang terdiri dari dari risk profile , good corporate governance, earnings

Bakteri Salmonella typhi adalah yang menyebabkan infeksi pada manusia yang ditularkan oleh manusia juga. Bakteri inimasuk mulut