BAB III PERANCANGAN SISTEM
3.1
Deskripsi Sistem
Gambar 3.1 Perancangan Penggunaan Sistem
Gambar di atas merupakan sebuah rancangan sistem dalam penggunaan tiket sebuah taman hiburan. Rancangan di atas dibuat dengan menggunakan gambar dengan tujuan untuk mempermudah pemahaman tentang rancangan sistem tiket masuk yang akan digunakan. Perancangan di atas memiliki asumsi-asumsi seperti berikut: Pengunjung membeli satu buah tiket (tag RFID) di loket, satu tiket dapat diisi dan digunakan untuk beberapa orang (satu rombongan/keluarga). Kasir akan mencatat berapa jumlah akses masuk yang dibeli oleh
33
34
pengunjung pada satu tag RFID dengan kode ID tertentu dan mencatatnya pada database. Setelah pengunjung memiliki tiket masuk maka pengunjung dapat menuju pintu masuk dan memberikan tiket tersebut kepada petugas untuk di-scan. Petugas harus menscan tiket, satu orang pengunjung yang akan masuk maka petugas akan menscan tiket juga sebanyak satu kali. Bila ada jumlah akses masuk di dalam tiket, maka pengunjung dapat masuk. Namun bila ketika discan ternyata tiketnya adalah atau sudah kosong, maka pengunjung tersebut tidak bisa masuk dan harus membeli tiket dan akses untuk masuk.
Dan berikut digram input-proses-output yang digunakan dalam perancangan ini:
INPUT
1. Tag RFID 2. Penjualan Tiket
PROSES
Reader RFID Pembacaan tag_RFID
Host Komputer 1. Pembacaan Record dari Database 2. Penyimpanan Record ke Database 3. Pengiriman Respon ke Reader RFID
Gambar 3.2 Digram Input-Proses-Output
OUTPUT
Reader RFID Respon Reader
Host Komputer 1. Laporan Jumlah Pengunjung 2. Laporan Penjualan Tiket
35
Pada gambar di atas dapat dilihat bahwa sistem ini memiliki input berupa data penjualan tiket yang akan langsung disimpan ke dalam database yang nantinya record pada database tersebut akan disusun kembali menjadi sebuah laporan pembelian tiket. Selain penjualan tiket sistem ini juga memiliki input berupa tag RFID, sistem ini juga dirancang untuk memeriksa kondisi yang akan terjadi apabila kode ID dari sebuah tag RFID diperiksa dan datanya dicocokan dengan database. Hal ini dimanfaatkan untuk mengetahui apakah pengunjung sebuah taman hiburan memiliki akses untuk masuk atau tidak. Sistem ini dirancang dengan merancang Reader RFID pada sisi hardware untuk pembacaan RFID yang didalamnya terdapat NFC Shield, Arduino UNO dan Ethernet Shield. Selain itu juga terdapat perancangan software yang terdapat di dalam host komputer yang menggunakan SQL Server sebagai database dan tiket.exe (yang dibangun dengan VB.NET) sebagai windows application. Berikut adalah diagram blok dari sistem: Reader RFID(hardware)
NFC SHIELD
Pembacaan ID tag
LED dan Buzzer Ethernet Arduino UNO
SHIELD
Request (ID tag & IP Address)
Response (“yes” atau “no”)
Database
Tiket.exe
(Sql Server)
(VB.NET)
Host Komputer (software)
Gambar 3.3 Blok Diagram Sistem Dari diagram blok di atas dapat dilihat beberapa komponen utama dasi sistem ini, diantaranya: 1. NFC Shield: sebuah Shield near field communication untuk Arduino yang dapat digunakan untuk membaca informasi dari tag RFID. Pada sistem,
36
Shield ini digunakan sebagai pembaca informasi dari tag RFID yang waktu pembacaannya diatur oleh Arduino UNO yang terhubung dengannya. 2. Arduino Uno: Sebuah sistem board mikrokontroler yang mengatur semua proses yang terjadi pada bagian hardware. Arduino Uno berfungsi sebagai pengatur kapan NFC reader harus membaca tag RFID, mengatur bagaimana Ethernet Shield mengirim dan menerima data dan mengatur nyala LED sebagai display kondisi yang terjadi. 3. Ethernet Shield: sebuah Shield untuk Arduino yang dapat digunakan agar Arduino
dapat
berkomunikasi
dengan
perangkat
lain
dengan
memanfaatkan ethernet. Ethernet Shield dapat digunakan untuk mengirim request dan menerima response http antara Arduino dengan perangkat lain. Pada sistem ini Ethernet Shield dimanfaatkan agar dapat berkomunikasi dengan komputer. 4. Tiket.exe: merupakan sebuah windows application yang penulis rancang dan bangun menggunakan VB.NET, yang dapat dijalankan di host komputer dengan spesifikasi tertentu dan menggunakan operating sistem “Windows” tentunya. Tiket.exe digunakan untuk membaca request dari Reader RFID dan mengirimkan response ke Reader RFID. Saat reaader station mengirimkan http request yang berupa ID tag RFID dan IP Address dari Reader RFID maka request tersebut akan diterima oleh tiket.exe dan kemudian Tiket.exe akan menjalankan query pada database untuk membaca kondisi dari isi pada kolom “jumlah” yang sesuai dengan nomor ID yang di pilih. Kondisi tersebut akan diterjemahkan oleh Tiket.exe dan dijadikan sebagai response yang akan dikirimkan ke Reader RFID. 5. Database pada sistem berisi sebuah tabel yang berisi dua buah kolom yaitu kolom ID dan kolom jumlah. Kolom “ID” berisi ID dari tag RFID yang telah didaftarkan, dan kolom “jumlah” berisi tentang jumlah yang akan digunakan oleh tag RFID dengan ID tertentu. 6. LED dan buzzer: sebagai peraga dari sistem untuk menunjukan kondisi yang terjadi. LED dan buzzer akan bekerja atas perintah dari Arduino UNO berdasarkan response. LED hijau akan menyala bila tag RFID yang
37
ditempel diizinkan untuk masuk dan LED merah akan menyala bila tag RFID yang ditempel tidak diizinkan untuk masuk. Untuk lebih menjelaskan tantang proses berjalannya sistem maka berikut adalah diagram alir (flowchart) dari sistem secara umum: Start
Membaca ID tag RFID tiap 1 detik
Ya
Ethernet Shield Membuka Koneksi antara Reader station dengan Host komputer
ID tag != 0 (ada tag yang ditempelkan)
LED_biru = ON LED_Merah=ON LED_Hijau = ON
Ethernet Shield dan Host komputer terkoneksi ya tidak
Mengirim request
Selama 1 detik Tiket.exe aktif
Tidak Mengirim response “Response=no”
Tidak
1<= Jumlah_akses
Ya LED_Merah=ON Selama 1 detik
Jumlah_pengunjung= Jumlah_Pengunjung+1
Jumlah_akses= jumlah_akses-1
LED_Hijau=ON Selama 1 detik
Mengirim response “Response=Yes”
Menulis Record ke Database
Gambar 3.4 Flowchart Sistem Secara Umum
ya Membaca Record Database
38
3.2
Perancangan Hardware (Reader RFID) Reader RFID terdiri dari beberapa komponen utama yaitu NFC Shield,
Arduino UNO, Ethernet Shield dan peraga yang berupa LED dan buzzer. Dalam perancangan ini penulis hanya menggunakan port-port digital pada Arduino UNO untuk dihubungkan ke NFC Shield, Ethernet Shield dan peraga. Berikut adalah tabel penggunaan port digital dari Arduino UNO:
Tabel 3.1 Penggunaan Port Digital Arduino UNO No. Port Digital
Terhubung ke-
Arduino UNO 0
-
1
-
2
-
3
-
4
SS – SD Ethetnet Shield
5
Resistor 100Ω buzzer
6
Resistor 330Ω LED_Hijau
7
Resistor 330Ω LED_Merah
8
Resistor 330Ω LED_Biru
9
SS - NFC Shield
10
SS - Ethernet Shield
11
MOSI (ICSP NFC)
12
MISO (ICSP NFC)
13
SCK (ICSP NFC)
MOSI (ICSP)
MOSI (ICSP Ethernet)
MISO (ICSP)
MISO (ICSP Ethernet)
SCK (ICSP)
SCK (ICSP Ethernet)
Reset (ICSP)
Reset (ICSP Ethernet)
Dalam perancangan ini juga dirancang bagian Reader RFID (hardware) secara keseluruhan, berikut adalah rancangan Reader RFID secara keseluruhan:
39
Peraga(Output) Buzzer
330Ω
330Ω
330Ω
330Ω
NFC Shield (input)
Gambar 3.5 Perancangan Reader RFID
3.2.1 Pembacaan RFID Pada perancangan NFC Shield diatur oleh Arduino Uno untuk setiap satu detik membaca tag RFID, bila tidak ada tag yang ditempelkan maka hasil pembacaan adalah nol, namun bila ada tag yang ditempelkan maka terdapat hasil pembacaan berupa kode ID dari tag RFID yang ditempelkan. Berikut adalah potongan listing proram untuk pembacaan RFID: //---------------------------------------------------------------------------------------------------------void loop()
(Ethernet Shield)
(Arduino UNO)
100Ω
40
{ if (millis()-time > 1000) { Serial.println("Checking NFC..."); // look for Mifare type cards every second time=millis(); digitalWrite(10, HIGH);//SPI deselect Ethernet nfc.backupSPIConf(); // BackUp SPIconf for Ethernet Serial.println("Start NFC read"); tagId = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A); Serial.println("End NFC read"); nfc.restoreSPIConf(); // Restore SPIconf for Ethernet if (tagId != 0) { Serial.print("Read card #"); Serial.println(tagId); //bila ada tagID tampilkan IDnya } time=millis(); return; } } //----------------------------------------------------------------------------------------------------------
Potongan listing program di atas adalah contoh dari program yang dapat digunakan untuk pembacaan RFID. RFID Shield akan meminta kode ID dari tag RFID setiap satu detik. Bila tagId tidak sama dengan nol maka berarti ada tag yang ditempelkan dan kode ID dari tag RFID dan dapat ditampilkan melalui komunikasi serial. Perlu diingat bahwa dalam hubungannya dengan Arduino UNO baik NFC shield ataupun Ethernet Shield. Port-port ICSP pada NFC Shield dan port-port Ethernet Shield harus terhubung dengan port ICSP pada Arduino UNO. Dan yang menjadi masalah adalah bahwa port-port ICSP tidak dapat digunakan secara bersamaan atau diparalel antara Arduino UNO, Ethernet Shield dan NFC Shield. Tetapi ada sebuah alternatif, yaitu dengan menghubungkan port-port ICSP pada NFC Shield dengan port digital pada Arduino UNO seperti yang tertera pada tabel 3.1.
3.2.2 Konfigurasi Ethernet Shield Untuk menghubungkan komunikasi antara Reader RFID dengan host komputer maka pengaturan Ethernet Shield harus diperhatikan. Pada perancangan ini digunakan protocol TCP dengan topologi LAN (Local Area Network) menggunakan port 80 dan memanfaatkan kemampuan Ethernet Shield mengirim
41
http request dan menerima http response dari komputer. Dalam perancangan ini diseting Arduino Uno + Ethernet Shield sebagai sisi client dan host komputer sebagai server. Dan berikut adalah contoh potongan dari listing program: //-------------------------------------------------------------------------------------------------------------#include <SPI.h> #include <Ethernet.h> #define ETH_SS 10 byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x53, 0x88 }; //MAC dari Ethernet Shield byte ip[] = { 192, 168, 1, 102 }; //Arduino LAN IP address byte server[] = { 192, 168, 1, 100 }; // laptop running tiket.exe LAN IP address EthernetClient client; //ethernet Shield bekerja sebagai sisi client //----------------------------------------------------------------------------------------------------------
Potongan listing di atas digunakan untuk mensetting MAC, IP client dan IP server pada Ethernet Shield. Dan berikut adalah perancangan konfigurasi Ethernet:
Port 80
Server IP Address: 192.168.1.100
Kabel UTP Port 80 (cross-over)
Client IP Address: 192.168.1.102
Gambar 3.6 Konfigurasi Ethernet setelah mengkonfigurasi port dan IP yang digunakan, selanjutnya adalah mengkonfigirasi ethernet shield untuk dapat mengirim request dan menerima response dari host komputer. Dan berikut potongan dari listing programnya: //============================================================ if (flowState==STATE_SENDDATA) { Serial.println("Connecting to server ..."); // if you get a connection, report back via serial:
42
if (client.connect(server, 80)) { Serial.println("Connected. Making PUT http request"); // Make a HTTP request: client.print(tagIdString);
//SEND Request dalam bentuk kode_ID
responseTime=millis(); flowState=STATE_RESPONSE; } else { Serial.println("Connection to server failed"); flowState=STATE_IDDLE;
//connection failed
digitalWrite(ledBiru, HIGH); delay(200); digitalWrite(buzzer, LOW); digitalWrite(ledBiru, HIGH); digitalWrite(ledHijau, HIGH); digitalWrite(ledMerah, HIGH); delay(5000); digitalWrite(ledBiru, LOW); digitalWrite(ledHijau, LOW); digitalWrite(ledMerah, LOW); } } if (flowState== STATE_RESPONSE) {
//bila respon diterima
if (client.available()) { char c = client.read(); respon = c; Serial.print(c); if (respon==respon_yes){ digitalWrite(ledBiru, HIGH); digitalWrite(buzzer, HIGH); delay(200); digitalWrite(ledBiru, LOW); digitalWrite(buzzer, LOW); digitalWrite(ledHijau, HIGH); delay(1000); digitalWrite(ledHijau, LOW); }
//respon = “YES”
else if (respon==respon_no){ digitalWrite(ledBiru, HIGH); digitalWrite(buzzer, HIGH); delay(200); digitalWrite(ledBiru, LOW); digitalWrite(buzzer, LOW); digitalWrite(ledMerah, HIGH);
//respon = “NO”
43
delay(1000); digitalWrite(ledMerah, LOW); } } if ((millis() - responseTime)>2000) { Serial.println(); Serial.println("Closing connection to server"); client.stop(); flowState=STATE_IDDLE; } }
Potongan listing program di atas digunakan untuk mengirimkan request dan respon dari host komputer. Request yang dikirim adalah sebuah kode ID dari sebuah tag RFID. Kemudian respon yang diterima dari host komputer adalah dua kondisi yaitu “yes” dan “no”.
3.2.3 Perancangan Peraga Seperti yang telah dijelaskan di atas dan ditampilkan pada gambar 3.4, bahwa sebagai peraga pada perancangan ini digunakan satu buah buzzer dan 4buah LED. Buzzer akan berbunyi yang menandakan bahwa sedang ada proses utama yang sedang dilakukan. Buzzer terhubung dengan resistor 100Ω yang terhubung dengan digital port no.5 dari Arduino, sehingga bunyi buzzer dapat diatur. Selain buzzer terdapat juga 4buah LED yang masing-masing anodanya terhubung dengan resistor 330Ω yang terhubung dengan port-port pada Arduino. Pada perancangan ini digunakan LED_putih yang terhubung dengan Vcc pada Arduini, LED ini digunakan sebagai indikator bahwa Arduino telah terhubung dengan sumber tegangan. Kemudian juga digunakan LED_hijau yang akan menyala selama 1 detik apabila response dari host komputer adalah “yes”, yang menandakan bahwa pengunjung dengan ID tersebut diberi akses untuk masuk. Sedangkan LED_merah yang akan menyala selama 1 detik apabila response dari host komputer adalah “no”, yang menandakan bahwa pengunjung dengan ID tersebut tidak diberi akses untuk masuk. Dan LED_biru akan menyala hanya ketika ada tag id yang terbaca dan kemudian mati ketika LED_hijau atau LED_merah menyala.
44
3.3
Perancangan Software (Host Komputer)
Seperti yang dijelaskan sebelumnya bahwa pada perancangan sistem ini dibutuhkan sebuah perangkat lunak yang dijalankan pada sebuah host komputer guna menunjang berjalannya sistem ini. Pada perancangan perangkat lunak terdiri dari perancangan program windows application dan database.
3.3.1 Perancangan Database Dalam memanfaatkan database guna menyimpan data tentunya dibutuhkan sebuah tabel dan beberapa query yang dapat dijankan untuk memenuhi kebutuhan penggunaan database, berikut perancangan beberapa tabel di dalam database “tiket”:
Gambar 3.7 Diagram Tabel Database Setiap pembuatan database pasti membutuhkan tabel-tabel seperti pada gambar 3.7. Pada perancangan ini terdapat satu buah Tabel_ID yang memiliki kolom ID yaitu kode ID dari tag RFID dan kolom jumlah yang menunjukan jumlah akses yang dimiliki oleh ID tertentu. Tabel Penjualan_Header dan Penjualan_detail adalah tabel yang akan digunakan sebagai tempat untuk menyimpan record dari sebuah penjualan tiket. Tabel Masuk_header dan masuk_detail digunakan sebagai tempat untuk menyimpan record dari banyaknya
45
pengunjung yang masuk pada jam tertentu. Selain tabel database tentunya dibutuhkan juga query-query yang digunakan untuk memanipulasi database dan berikut contohnya: ================================================================== -- Membuat Store Procedure (SP_cari) untuk mencari,, -- jumlah yang ID nya terbaca ================================================================== create procedure sp_cari (@id nvarchar (30)) as select jumlah from tabel_ID where ID=@id ------------------------------------------------------------------
Query di atas adalah untuk membuat sebuah store procedure yang bernama “SP_cari” yang digunakan untuk mencari isi dari kolom jumlah pada ID tertentu. Sebagai contoh, mengeksekusi “sp_cari” dengan kode ID adalah “1785141869” maka dapat dibuat sebuah perintah eksekusi exec sp_cari '1785141869', dan akan tampil:
Gambar 3.8 Kolom jumlah pada Tabel_ID
Dari gambar di atas dapat dilihat bahwa isi kolom jumlah dari ID=1785141869 adalah 6, yang berarti ID dengan kode 1785141869 memiliki 6 kali akses masuk. Selain perintah untuk select, pada perancangan ini juga dibutuhkan query lain, salah satunya adalah untuk mengurangi jumlah (mengurangi jumlah akses pada tiket) setiap kali ada kode ID yang terbaca. Dan berikut query nya yang dibentuk kedalam store procedure: ================================================================== -- Membuat Store Procedure (SP_dec) untuk mencari,, -- jumlah yang ID nya terbaca dan kemudian mengurangi jumlahnya ================================================================== Create procedure sp_dec (@id nvarchar (30)) as declare @jum int set @jum = (select jumlah from Tabel_ID where ID = @id) set @jum = @jum -1 update Tabel_ID Set jumlah = @jum where ID=@id ================================================================== -- Membuat Store Procedure (SP_inc_masuk) untuk menambahkan jumlah pengunjung yang masuk ================================================================== Create proc [dbo].[SP_inc_masuk] (@tanggal nvarchar(50), @jam int)
46
as declare @jum int set @jum = (select masuk from masuk_detail where tanggal = @tanggal and jam =@jam ) set @jum = @jum +1 update masuk_detail set masuk = @jum where tanggal = @tanggal and jam =jam ==================================================================
Selain query untuk mengurangi jumlah dari akses masuk dan menambah jumlah pengunjung yang masuk, pada perancangan ini juga query yang digunakan untuk menambahkan jumlah akses masuk yang dapat digunakan saat penjualan tiket: ================================================================= -- Membuat Store Procedure (SP_Tambah_akses) untuk mencari,, -- jumlah yang ID nya diinginkan dan kemudian menambah jumlah_aksesnya ================================================================== Create procedure sp_Tambah_akses (@id nvarchar (30), @jumlah_jual int) as declare @jum int set @jum = (select jumlah from Tabel_ID where ID = @id) set @jum = @jum +@jumlah_jual update Tabel_ID Set jumlah = @jum where ID=@id ==================================================================
Penjualan tiket juga membutuhkan sebuah query yang dapat digunakan program untuk menyimpan sebuah record ke database dari penjualan tiket: ================================================================== create proc SP_jual_tiket (@tanggal nvarchar(50), @time nvarchar(50), @ID nvarchar(50), @harga bigint, @jumlah int ) as INSERT INTO pembelian_detail(tanggal, time, ID, harga, jumlah)VALUES (@tanggal, @time, @ID, @harga, @jumlah) ==================================================================
3.3.2
Perancangan Tiket.exe (Windows Application) Tiket.exe adalah sebuah windows application atau program aplikasi yang
dibangun menggunakan VB.NET. Tiket.exe digunakan untuk menerima data dari Reader RFID kemudian membaca dan menerjemahkan isi di dalam database dan kemudian mengirimkan kondisi yang terjadi ke Reader RFID. Dan berikut tampilan dari Solution Explorer dari project (Tiket) yang menampilkan beberapa komponen utama dari project (program Tiket):
47
Gambar 3.9 Solution Explorer Project (program tiket)
Dari gambar di atas dapat dilihat beberapa komponen utama dari program ini adalah
FormMenuUtama
(frmMenu),
FormPenjualanTiket
(frmJualTiket),
FormTabel (frmTabel), form Jumlah Pengunjung (frm_jumlah_pengunjung), form Laporan Pembelian(frm_lap_Penjualan),
Module1 (Module), ID (Class) dan
smallServer (Class). Pada program ini terdapat 3 buah form, satu module dan 2 buah class.
Module1 (Module) Module1 adalah sebuah module dari project, logika atau syntax yang terdapat pada Module1 akan dijalankan paling awal saat program dibuka, dan berikut adalah syntax yang terdapat pada Module1: Imports System.Data.SqlClient Module Module1 Public con As New SqlConnection(“Password=sql2005;User ID=sa;Initial Catalog=tiket;Data Source=(local)”) End Module
Dan berikut penjelasannya: 1. Imports System.Data.SqlClient
48
Penjelasan: koneksi antara program dengan database menggunakan “SqlClient” 2. Public con As New SqlConnection(“Password=sql2005;User ID=sa;Initial Catalog=tiket;Data Source=(local)”)
Penjelasan: bahwa program dikoneksikan dengan database bernama “tiket” dengan ID_User = “sa”, password = “sql2005” dan sumber datanya berada di “local”.
SmallServer (Class) SmallServer adalah sebuah class pada project, class sendiri adalah sebuah blueprint dari sebuah objek yang nantinya akan dijalankan secara visual di form, berikut adalah rancangan dari smallServer:
Gambar 3.10 Perancangan smallServer (Class)
Dan berikut adalah potongan syntax yang akan digunakan untuk melengkapi fungsi dari SmallServer: 1. Untuk membaca IP_address dari EndPoint (dalam rancangan ini berarti adalah IP address dari Reader RFID) : IP_address = insocket.RemoteEndPoint.ToString()
2. Untuk membaca data(message) yang dikirimkan oleh Reader RFID: reclen = insocket.Receive(buffer, SocketFlags.None)
3. Untuk mengirim respon ke EndPoint (Reader RFID): insocket.Send(Encoding.UTF8.GetBytes("yes"), SocketFlags.None) insocket.Send(Encoding.UTF8.GetBytes("no"), SocketFlags.None)
49
ID_class (Class) ID_class (class) merupakan sebuah class yang dirancang untuk bertanggung jawab atas pembacaan dan penulisan yang dilakukan oleh program kepada Tabel_ID pada database Tiket. Berikut adalah rancangan dari ID_class:
Gambar 3.11 Perancangan ID (class)
Dan berikut adalah potongan syntax yang akan digunakan untuk melengkapi fungsi dari ID_class: 1. Untuk membaca semua record pada tabel_ID (Select Tabel_ID): Dim da As New SqlDataAdapter("select * from tabel_ID", con)
2. Untuk membaca jumlah akses pada sebuah kode ID yang tercatat pada database (Select Jumlah_akses): Dim cmd As New SqlCommand cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "sp_select_jumlah"
3. Untuk men-update seluruh record pada tabel_ID(Update Tabel_ID) da.Update(dt.Select(Nothing, Nothing,DataViewRowState.Deleted)) da.Update(dt.Select(Nothing,Nothing, DataViewRowState.ModifiedCurrent)) da.Update(dt.Select(Nothing, Nothing, DataViewRowState.Added))
Pengunjung_masuk (Class) Pengunjung_masuk (class) merupakan sebuah class yang dirancang untuk bertanggung jawab atas pembacaan dan penulisan yang dilakukan oleh program kepada Tabel “Pengunjung” dan kolom jumlah_akses pada “tabel_ID” pada database Tiket. Berikut adalah rancangan dari Pengunjung_masuk:
50
Gambar 3.12 Perancangan Pengunjung_masuk (class)
1. Untuk mengurangi 1 jumlah akses ketika sebuah kode ID terbaca oleh reader(Dec_jumlah_akses): Dim cmd As New SqlCommand cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "sp_dec"
2. Untuk memasukan data penjualan yaitu berupa penambahan jumlah data akses masuk pada sebuah kode ID (Inc_jumlah_pengunjung_masuk): Dim cmd As New SqlCommand cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "sp_masuk"
Gambar 3.13 Perancangan Penjualan_tiket (class)
1. Untuk memasukan data penjualan yaitu berupa penambahan jumlah data akses masuk pada sebuah kode ID (Input Penjualan_tiket): Dim cmd As New SqlCommand cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "sp_jual_tiket"
51
2. Untuk memasukan data penjualan yaitu berupa penambahan jumlah data akses masuk pada sebuah kode ID (Tambah_jumlah_akses): Dim cmd As New SqlCommand cmd.Connection = con cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "sp_Tambah_akses"
Form Menu Utama (frmMenu) Form Menu Utama merupakan form yang terdiri dari komponen menu seperti Tabel ID, Penjualan Tike. Selain terdiri dari beberapa menu, form ini juga terdapat monitor yang menampilkan IP address dari Reader RFID dan juga kode ID yang diterima. Berikut adalah tampilan Form Menu Utama program:
Gambar 3.14 Form Menu Utama dari Tiket.exe Dari gambar di atas dapat dilihat rancangan Form Menu Utama dari tiket.exe yang memiliki beberapa komponen diantaranya: 1. Tombol “start”: digunakan untuk mengaktifkan atau untuk membuka koneksi dan menunggu adanya request dari Reader RFID. 2. Tombol “stop”: untuk memutuskan koneksi. 3. Label “aktif/tidak aktif”: untuk menunjukan keadaan koneksi bila ditekan tombol start maka akan muncul aktif, bola yang ditekan adalah “stop” maka akan muncul sebaliknya.
52
4. TextBox „ID‟: untuk menampilkan id yang terbaca. 5. TextBox „IP Address‟: untuk menampilkan IP-address dari Reader RFID. 6. Menu “Tabel_ID”: membuka form tabel_ID 7. Menu “Penjualan_Tiket”: membuka form Penjuala Tiket
Agar form ini menerima kode ID dari Reader RFID dan mengirimkan respon, maka form ini harus dalam keadaan aktif dengan cara menekan tombol “start” yang mengakibatkan smallServer menjadi “active”. Dan bila form ini dalam keadaan tidak aktif (smallServer “deactive”) atau form ini tidak dalam keadaan terbuka (open) pada host komputer maka penerimaan kode ID ataupun respon yang seharusnya terjadi pada host komputer tidak akan berjalan. Dan berikut potongan syntaxnya: Dim _server As New smallServer(80) „koneksi Port 80 _server.startServer() „button Start Click event _server.closeServer() „button Stop Click event
Selain fungsi-fungsi di atas, form menu utama juga digunakan untuk memeriksa tanggal yang sedang aktif pada tabel masuk_header dan penjualan_header untuk dicocokan dengan tanggal pada sistem operasi (Windows), jika tidak cocok maka form akan men-generate tabel dengan query tertentu agar database dapat menyimpan record sesuai dengan tanggal yang sedang berlangsung.
Form Penjualan Tiket (frmJualTiket) Selain Form Menu Utama terdapat pula form yang digunakan untuk pembelian tiket:
3.15 Form Penjualan Tiket
53
Form di atas merupakan form yang digunakan untuk pembelian tiket atau akses masuk, pada dasarnya form ini digunakan untuk menambahkan jumlah akses masuk untuk tiket pada sebuah kode ID tertentu. Pada form ini juga terdapat harga tiket pada kondisi tertentu, hanya saja pada perancangan ini harga tiket bukanlah sebuah komponen yang akan disimpan ke dalam database. Jadi fungsi utama dalam form ini adalah sebagai penambah akses masuk pada sebuah tiket dengan kode ID tertentu.
Form Tabel (frmTabel) Selain form penjualan tiket pada perancangan ini juga terdapat form Tabel yang ditampilkan pada gambar berikut:
Gambar 3.16 Form Tabel Form Tabel digunakan untuk melihat tabel_ID pada database. Selain untuk melihat Tabel_ID pada form ini juga terdapat tombol untuk men-clear kan kolom jumlah isi dan tombol update digunakan untuk men-update data pada datagridview ke database. Dan pada bagian bawah terdapat bagian Insert New ID yang digunakan untuk menambahkan kode ID baru, jika sewaktu-waktu ada kode ID baru yang ditambahkan.
54
Form Laporan Penjualan Tiket Dalam membuat sebuah laporan pada program dibutuhkan suatu komponen yang dapat digunakan untuk menampilkan suatu laporan (report) pada perancangan ini digunakan Crystal Report sebgai komponen reportnya, berikut adalah gambar contoh dari laporan penjualan tiket:
Gambar 3.17 Form Laporan Penjualan Tiket Gambar di atas menunjukan rancangan dari form yang menunjukan laporan dari penjualan tiket. Form perlu memanggil sumber report yang telah dirancang pada crystal report berikut adalah contoh syntax nya: Dim cr As New Report_Penjualan cr.SetDataSource(ds.Tables("penjualan")) cr.DataDefinition.FormulaFields.Item("tanggal").Text = "'" + ComboBox1.SelectedValue.ToString + "'" CrystalReportViewer1.ReportSource = cr
55
Form Laporan Jumlah Pengunjung Berikut adalah contoh gambar perancangan dari form jumlah pengunjung:
Gambar 3.18 Form Laporan Jumlah Pengunjung Form jumlah pengunjung menampilkan sebuah grafik yang menunjukan jumlah pengunjung yang masuk ke taman hiburan yang dikelompokan menurut jam masuknya. Selain itu juga dapat menunjukan total pengunjung yang datang dalam satu hari. Form perlu memanggil sumber report yang telah dirancang pada crystal report berikut adalah contoh syntax nya: Dim cr As New Report_Pengunjung_masuk cr.SetDataSource(ds.Tables("pengunjung")) cr.DataDefinition.FormulaFields.Item("tanggal").Text = "'" + ComboBox1.SelectedValue.ToString + "'" CrystalReportViewer1.ReportSource = cr