• Tidak ada hasil yang ditemukan

BAB 3 PERANCANGAN PROGRAM APLIKASI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 3 PERANCANGAN PROGRAM APLIKASI"

Copied!
36
0
0

Teks penuh

(1)

29

PERANCANGAN PROGRAM APLIKASI

3.1. Gambaran Umum Perancangan

Program aplikasi yang dirancang ini akan menggunakan database sebagai sumber data yang dibutuhkan. Database tersebut akan berisi data pintu tol yang ada, data user yang terdaftar, dan data transaksi yang terjadi. Sedangkan untuk program aplikasinya sendiri akan terbagi menjadi dua, yaitu server dan client.

Aplikasi Server akan bertugas untuk me-routing data yang diterima untuk dicatat ke dalam database ataupun mengecek data user. Aplikasi ini hanya akan mempunyai dua tombol utama yaitu untuk mengaktifkan dan menon-aktifkan kondisi server.

Aplikasi Client bertugas untuk mengambil data dari user, mengolahnya dan kemudian mengirimkan data tersebut ke aplikasi Server. Aplikasi ini harus dikenali dahulu oleh server untuk dapat menjalankan fungsinya. Untuk itu disediakan dua tombol, yaitu untuk menjalin koneksi ke server dan memutuskan koneksi tersebut. Selain itu terdapat pula satu tombol lain yang berguna untuk mengolah data user dan mengirimkan data tersebut ke server.

(2)

3.2. Perancangan

3.2.1. Perancangan Database

Perancangan database pada skripsi ini menggunakan Microsoft Access 2000 yang bernama dbTOL. Pada database ini akan terdapat tabel sebagai berikut:

a. Tabel ‘Biaya’

Fungsi : sebagai acuan nilai yang harus dibayarkan pada pintu tol yang bersangkutan.

Primary key : Pintu_Tol, Key_Gol. Tabel 3.1. Tabel Biaya

Nama field Tipe data Size Keterangan

Pintu_Tol Text 50 Nama pintu tol

Key_Gol Number Integer Tipe golongan kendaraan Biaya Number Integer Biaya pada pintu tol

b. Tabel ‘Golongan’

Fungsi : sebagai acuan tipe golongan kendaraan. Primary key : Key_Gol.

Tabel 3.2. Tabel Golongan

Nama field Tipe data Size Keterangan

Key_Gol Number Integer Tipe golongan kendaraan Gol_Kendaraan Text 5 Tipe golongan kendaraan aktual

c. Tabel ‘Loket’

Fungsi : sebagai acuan nama pintu tol dan jumlah loket yang tersedia di setiap lokasi.

(3)

Tabel 3.3. Tabel Loket

Nama field Tipe data Size Keterangan

Pintu_Tol Text 50 Nama pintu tol

Max_Loket Number Integer Jumlah loket yang tersedia

d. Tabel ‘Total Transaksi’

Fungsi : untuk mencatat total tansaksi setiap user. Primary key : ID_User.

Tabel 3.4. Tabel Total Transaksi

Nama field Tipe data Size Keterangan

ID_User Text 15 Nomor ID user

Total_Biaya Number Double Total biaya transaksi user

e. Tabel ‘Total Transaksi per Bulan’

Fungsi : untuk mencatat total tansaksi per user setiap bulannya. Primary key : ID_User.

Tabel 3.5. Tabel Total Transaksi per Bulan

Nama field Tipe data Size Keterangan

ID_User Text 15 Nomor ID user

Bulan_Transaksi Text 10 Bulan transaksi Total_Biaya Number Double Total biaya per bulan

f. Tabel ‘Transaksi’

Fungsi untuk mencatat transaksi-transaksi yang terjadi. Primary key : ID_User,Tanggal,Waktu,Pintu_Tol,Loket.

(4)

Tabel 3.6. Tabel Transaksi

Nama field Tipe data Size Keterangan

ID_User Text 15 Nomor ID user

Tanggal Date/time Short date Tanggal transaksi Waktu Date/time Long time Waktu transaksi Pintu_Tol Text 50 Tempat transaksi Loket Number Integer Loket transaksi

g. Tabel ‘User’

Fungsi : sebagai acuan data user-user yang telah terdaftar. Primary key : ID_User

Tabel 3.7. Tabel user

Nama field Tipe data Size Keterangan

ID_User Text 15 Nomor ID user

Nama Text 50 Nama user

Alamat Text 20 Alamat user

Kota Text 20 Kota user

Key_Gol Number Integer Tipe golongan kendaraan user

(5)

3.2.2. Perancangan Layar

3.2.2.1. Perancangan Layar Server

Aplikasi server memiliki dua tombol dan dua menu. Dua tombol itu adalah tombol [Activate] untuk mengaktifkan server dan untuk [Deactivate] menonaktifkan server. Sedangkan kedua menu tersebut adalah menu [Exit] untuk keluar dari program, dan menu [About] yang menunjukkan sekilas informasi mengenai program. Pada aplikasi ini terdapat pula suatu listbox yang berisi client-client mana saja yang telah aktif. Aplikasi server ini terhubung langsung pada database sehingga setiap data yang dikirimkan oleh client dapat langsung diolah oleh aplikasi ini dan sekaligus berdampak pada isi database yang bersangkutan. Contohnya untuk database transaksi dan sejenisnya.

(6)

3.2.2.2. Perancangan Layar Client

Pada aplikasi ini pertama-tama client (petugas tol) diminta untuk memasukkan data nama pintu tol dan loket ke berapa dari pintu tol tersebut yang hendak diaktifkan. Selain itu client (petugas tol) juga harus memasukkan alamat (tcp/ip) dari server host yang dituju, yang dalam skripsi ini alamat yang digunakan ialah ‘localhost’ dan mengirimkannya ke server dengan menekan tombol [Connect].

Pada penggunaannya, setelah client ini diaktifkan maka setiap pelanggan jalan tol yang ingin menggunakan fasilitas ini tinggal memasukkan kode kartu, maka transaksi akan diproses secara langsung oleh client dan data hasil proses tersebut akan dikirimkan ke server. Setiap kode yang dimasukkan akan diurai (didekripsi) menjadi data yang dapat digunakan oleh server, dan kemudian dikirimkan kepada server untuk diolah dan dicatat kedalam database.

Setelah penggunaan aplikasi client ini selesai untuk memutuskan koneksi disediakan tombol [Disconnect]. Selain itu terdapat pula menu [Exit] dan [About] yang berfungsi sama seperti yang terdapat pada aplikasi server.

(7)

Gambar 3.3. Rancangan layar aplikasi Client

3.2.2.3. Perancangan layar form About

Form ini dapat diakses dari klik-menu About yang tersedia pada aplikasi server dan client. Form about ini berfungsi untuk memberikan sekilas informasi mengenai program. Untuk menutup form about ini cukup dengan menekan tombol [OK] di bagian bawah form.

(8)

About

Ok Keterangan

Gambar 3.4. Rancangan layar Form About

3.3. State Transition Diagram

3.3.1. State Transition Diagram Server

Modul formUtama_server

Modul Activate

Modul de-Activate

Modul menu_click Klik menu

Panggil modul menu_click Klik Activate Panggil modul aktifasi_server Klik Activate Panggil modul aktifasi_server Klik Deactivate Panggil modul de-aktifasi_server

(9)

3.3.2. State Transition Diagram Client

Modul formUtama_client

Modul Connect Modul dis-Connect

Modul menu_click Modul Send

Klik menu

Panggil modul menu_click Klik Connect Panggil modul connect Klik Disconnect Panggil modul disconnect Klik Send Panggil modul dekrip-kirim_pesan

Gambar 3.6. State transition Diagram aplikasi Client

3.3.3. State Transition Diagram Modul menu_Click

Modul menu_click

Modul Exit Modul About

Form About

Layar Aktif Akhir Program

Klik About Tampil Form About Klik Exit

Keluar dari program

Klik Ok / Tutup Form About Tampil Layar Aktif

(10)

3.4. Pseudocode

3.4.1. Pseudocode Aplikasi Server

Modul formUtama_server

Fungsi: inisialisasi kondisi awal server procedure TForm1.FormCreate begin Button_aktifkan_server.Enabled := True Button_nonaktifkan_server.Enabled := False end Modul aktivasi_server

Fungsi: mengaktifkan server dan menginisialisasi variabel-variabel terkait procedure TForm1.Button_activeClick

var i : integer begin

for i := 0 to 99 do nick[i] := '' cetaknick

set socket port set server aktif true

inisialisasi jumlah koneksi awal = 0 tampilkan jumlah koneksi aktif inisialisasi jumlah user awal = 0 button_active.Enabled := False button_deactive.Enabled := True

(11)

end

Modul de-aktifasi _server Fungsi: menon-aktifkan server

procedure TForm1.Button_deactiveClick begin

set server aktif false kosongkan isi data client edit1.text:= '' list_active_client.items.clear label_active_client.caption:='0' button_active.Enabled := False button_deactive.Enabled := True end Modul client_error

Fungsi: mengirimkan pesan kesalahan client procedure TForm1.ServerSocket1ClientError begin

ErrorCode := 0 end

(12)

Fungsi: untuk menampilkan jumlah koneksi yang aktif bila ada tambahan koneksi

procedure TForm1.ServerSocket1ClientConnect begin

Inc(n_koneksi)

tampilkan jumlah koneksi yang aktif end

Modul dis-koneksi_client

Fungsi: untuk menampilkan jumlah koneksi yang aktif bila ada permintaan diskoneksi dari client

procedure TForm1.ServerSocket1ClientDisconnect begin

Dec(n_koneksi)

tampilkan jumlah koneksi aktif end

Modul cetak_Nick

Fungsi: menampilkan nama-nama client yang aktif procedure TForm1.CetakNick()

var i: integer begin

list_active_client.clear for i := 0 to max_user - 1 do

(13)

cetak nick di listbox end

Modul terima_pesan_client

Fungsi: untuk menerima pesan dari client, permintaan koneksi, diskoneksi ataupun pengiriman data

procedure TForm1.ServerSocket1ClientRead begin

terima pesan dari client id := pos('ô',pesan); temp_nk := -1;

case strtoint(copy(pesan,1,id-1)) of //client meminta koneksi

1: begin

ambil nama pintu tol dari pesan ambil nomor loket dari pesan

cek apakah nick sudah ada atau belum

jika sudah ada maka beri pesan ke client bahwa nick tersebut sudah aktif jika belum dipakai maka

begin

cek ke data base apakah pintu tol tersebut ada jika ada maka

begin

(14)

bila belum maksimal,

aktifkan koneksi dari client tersebut tambahkan jumlah max_user cetakNick;

bila sudah maksimal tolak client end

else tolak client end

// client memutuskan koneksi 2: begin

ambil nama pintu tol

cari posisi nama pintu tol pada listbox hapus nama pada posisi itu

Dec(max_user) CetakNick End

//pengiriman data dari client 3: begin

ambil nama pintu tol ambil nomor loket

pisahkan pesan menjadi data user

cek apakah nomor user ada dalam database if ada then

(15)

if (Nama = nama_user) and (gol = Key_Gol) then begin

balas := 1;

with tbTransaksi do tambahkan transaksi ke dalam database end

else balas := 2; end

else balas := 0; if balas = 0 then

kirim pesan ke client (‘Data tidak terdapat dalam database') if balas = 1 then

kirim pesan ke client (‘Transaksi Berhasil') if balas = 2 then

kirim pesan ke client (‘Data tidak sesuai dengan data dalam database') end

end

Modul exit_server

Fungsi: untuk keluar dari program server procedure TForm1.Exit2Click

begin

set server aktif false Application.Terminate end

(16)

3.4.2. Pseudocode Aplikasi Client

Modul subbyte

Fungsi: mengambil nilai result dari s_box

function TForm1.ByteSub(nilai : integer) : integer begin

result := s_box[nilai] end

Modul subbyte_invers

Fungsi: mengambil nilai result dari s_box

function TForm1.ByteSubInv(nilai : integer) : integer begin

result := s_box_inv[nilai] end

Modul kali

Fungsi: digunakan untuk perkalian pada tahap mixcolums function TForm1.Kali(nilai1, nilai2 : integer) : integer var i,j : integer

temp1, temp2 : array [0..7] of integer temp : array [0..15] of integer

begin

for i := 0 to 7 do begin

(17)

temp1[i] := 0 temp2[i] := 0 end

//rubah nilai1 ke bentuk biner simpan ke temp1 i := 0

repeat

temp1[i] := nilai1 mod 2 nilai1 := nilai1 div 2 Inc(i)

until nilai1 = 0

//rubah nilai2 ke dalam bentuk biner simpan ke temp2 i := 0

repeat

temp2[i] := nilai2 mod 2 nilai2 := nilai2 div 2 Inc(i)

until nilai2 = 0

for i := 0 to 15 do temp[i] := 0

//kalikan temp1 dan temp2 simpan di temp for i := 0 to 7 do

begin

if temp1[i] = 1 then begin

(18)

begin

if temp2[j] = 1 then begin

temp[i+j] := (temp[i+j] + 1) mod 2 end

end end end

//cari nilai desimal temp dan simpan ke result Result := 0

for i := 0 to 15 do begin

Result := Result + temp[i] * Round(Power(2,i)) end

if Result > $FF then Result := Modulo(Result) end

Modul modulo

Fungsi: mencari nilai modulo setelah di xor dengan 100011011 function TForm1.Modulo(nilai : integer) : integer

var

i : integer

temp : array [0..15] of integer begin

(19)

for i := 0 to 15 do temp[i] := 0 i := 0

//rubah nilai ke biner simpan ke temp repeat

temp[i] := nilai mod 2 nilai := nilai div 2 Inc(i)

until nilai = 0

//nilai temp di modulo dengan 100011011 for i := 15 downto 8 do

begin

if temp[i] = 1 then begin

// di xor 100011011

temp[i] := 0; //temp[i] xor 1 temp[i-4] := temp[i-4] xor 1 temp[i-5] := temp[i-5] xor 1 temp[i-7] := temp[i-7] xor 1 temp[i-8] := temp[i-8] xor 1 end

end

//kembalikan temp ke dalam bentuk desimal Result := 0

(20)

begin

Result := Result + temp[i] * Round(Power(2,i)) end

end

Modul KeySchedule

Fungsi: mencari nilai keyschedule untuk digunakan pada tahap addroundkey procedure TForm1.KeySchedule()

var

i,j,k,temp : integer begin

//masukkan nilai awal chiper_key dari chip_key for i := 0 to 3 do

for j := 0 to 3 do

chiper_key[0,i,j] := chip_key[i,j]

//masukkan nilai-nilai awal chipher_key pada tiap kolom pertama for i := 1 to 10 do begin for j := 0 to 3 do begin chiper_key[i,j,0] := chiper_key[i-1,j,3] end

//tentukan nilai rotword nya temp := chiper_key[i,0,0]

(21)

chiper_key[i,0,0] := chiper_key[i,1,0] chiper_key[i,1,0] := chiper_key[i,2,0] chiper_key[i,2,0] := chiper_key[i,3,0] chiper_key[i,3,0] := temp //bytesub for j := 0 to 3 do begin chiper_key[i,j,0] := ByteSub(chiper_key[i,j,0]) end //kali [0*key*Rcon] for j := 0 to 3 do begin if j <> 0 then

chiper_key[i,j,0] := chiper_key[i,j,0] xor chiper_key[i-1,j,0] else

begin

temp := Round( Power(2, i-1) )

if temp > $FF then temp := Modulo(temp)

chiper_key[i,j,0] := chiper_key[i,j,0] xor chiper_key[i-1,j,0] xor temp end

end

for j := 1 to 3 do begin

(22)

begin

chiper_key[i,k,j] := chiper_key[i,k,j-1] xor chiper_key[i-1,k,j] end

end end end

Modul connect

Fungsi: untuk mengaktifkan koneksi dengan server procedure TForm1.Button1Click(Sender: TObject)

begin

if (length(edit1.text)=0) then begin

messagedlg('Pintu Tol Kosong',mtWarning,[mbOK],0) edit1.SetFocus

end

else if (length(edit2.text)=0) then begin

messagedlg('No Loket Kosong',mtWarning,[mbOK],0) edit2.SetFocus

end

else if (length(edit3.text)=0) then begin

(23)

messagedlg('Server Host Kosong',mtWarning,[mbOK],0) edit3.SetFocus end else begin ClientSocket1.Port :=8080 ClientSocket1.Host := Edit3.Text ClientSocket1.Active := True end end Modul koneksi_aktif

Fungsi: mengeset kondisi-kondisi form pada saat telah terjadi koneksi procedure TForm1.ClientSocket1Connect begin Edit1.Enabled := False Edit2.Enabled := False Edit3.Enabled := False Button1.Enabled := False Button2.Enabled := True Edit4.Enabled := True Edit5.Enabled := True Button3.Enabled := True

(24)

end

Modul interupsi_error

Fungsi: melakukan interrupt agar tidak terjadi program error pada saat ada kesalahan

procedure TForm1.ClientSocket1Error begin

if ErrorEvent = eeConnect then

messagedlg('Connection failed',mtWarning,[mbOK],0) if ErrorEvent = eeDisconnect then

messagedlg('Disconnection failed',mtWarning,[mbOK],0) if ErrorEvent = eeSend then

messagedlg('Send Data failed',mtWarning,[mbOK],0) if ErrorEvent = eeReceive then

messagedlg('Receive Data failed',mtWarning,[mbOK],0) errorcode:=0

end

Modul diskoneksi

Fungsi: melakukan diskoneksi ke server

procedure TForm1.Button2Click(Sender: TObject) begin

ClientSocket1.socket.sendtext('2' + 'ô' + edit1.text + '§' + edit2.text) ClientSocket1.Active := False

(25)

end

Modul terima_pesan_server

Fungsi: menerima pesan dari server berupa pemutusan koneksi atau reply dari pengiriman data

procedure TForm1.ClientSocket1Read var pesan : string id : integer begin pesan := socket.receivetext Memo1.Lines.Add(pesan) id := pos('ô',pesan) case strtoint(copy(pesan,1,id-1)) of 1: begin {kick from server}

messagedlg(copy(pesan,id+1,length(pesan)-id),mtWarning,[mbOK],0) ClientSocket1.Active := False

end

2: begin {recieve reply from server}

messagedlg(copy(pesan,id+1,length(pesan)-id),mtWarning,[mbOK],0) end

end end

(26)

Modul dekrip-kirim_pesan

Fungsi: mendekripsi pesan yang diterima dari user dan mengirimkannya ke server

procedure TForm1.Button3Click() var i,j, ulang, flag : integer

state, temp_state : array [0..3, 0..3] of integer hasil_str : string

Kode, nama, gol : string begin

if Length(Edit4.Text) <> 64 then begin

messagedlg('Input yang dikirim harus 64 karakter',mtWarning,[mbOK],0) edit4.SetFocus Exit end //decrypt data //blok - I for i := 0 to 15 do begin

state[i mod 4, i div 4] := strtoint('$' + copy(edit4.text,i*2+1,2)) end

//mulai decrypt

for ulang := 10 downto 1 do begin

(27)

//add round key - chiperkey[ulang] for i := 0 to 3 do

for j := 0 to 3 do

state[i,j] := state[i,j] xor chiper_key[ulang,i,j] if ulang <> 10 then begin //mixcolomns for i := 0 to 3 do for j := 0 to 3 do temp_state[i,j] := state[i,j] for i := 0 to 3 do begin

state[0,i] := Kali($0e, temp_state[0,i]) xor Kali($0b, temp_state[1,i]) xor Kali($0d, temp_state[2,i]) xor Kali($09, temp_state[3,i])

state[1,i] := Kali($09, temp_state[0,i]) xor Kali($0e, temp_state[1,i]) xor Kali($0b, temp_state[2,i]) xor Kali($0d, temp_state[3,i])

state[2,i] := Kali($0d, temp_state[0,i]) xor Kali($09, temp_state[1,i]) xor Kali($0e, temp_state[2,i]) xor Kali($0b, temp_state[3,i])

state[3,i] := Kali($0b, temp_state[0,i]) xor Kali($0d, temp_state[1,i]) xor Kali($09, temp_state[2,i]) xor Kali($0e, temp_state[3,i])

end end //shiftrow for i := 0 to 3 do

(28)

for j := 0 to 3 do

temp_state[i,j] := state[i,j] for i := 0 to 3 do

for j := 0 to 3 do

state[i,j] := temp_state[i, (j+4-i) mod 4] //subbytes

for i := 0 to 3 do for j := 0 to 3 do

state[i,j] := ByteSubInv(state[i,j]) end

//add round key - chiperkey[0] for i := 0 to 3 do

for j := 0 to 3 do

state[i,j] := state[i,j] xor chiper_key[0,i,j] Hasil_str := ''

for i := 0 to 3 do for j := 0 to 3 do

Hasil_str := Hasil_str + char(state[j,i]) //blok - II

for i := 0 to 15 do begin

state[i mod 4, i div 4] := strtoint('$' + copy(edit4.text,i*2+33,2)) end

(29)

for ulang := 10 downto 1 do begin

//add round key - chiperkey[ulang] for i := 0 to 3 do

for j := 0 to 3 do

state[i,j] := state[i,j] xor chiper_key[ulang,i,j] if ulang <> 10 then begin //mixcolomns for i := 0 to 3 do for j := 0 to 3 do temp_state[i,j] := state[i,j] for i := 0 to 3 do begin

state[0,i] := Kali($0e, temp_state[0,i]) xor Kali($0b, temp_state[1,i]) xor Kali($0d, temp_state[2,i]) xor Kali($09, temp_state[3,i])

state[1,i] := Kali($09, temp_state[0,i]) xor Kali($0e, temp_state[1,i]) xor Kali($0b, temp_state[2,i]) xor Kali($0d, temp_state[3,i])

state[2,i] := Kali($0d, temp_state[0,i]) xor Kali($09, temp_state[1,i]) xor Kali($0e, temp_state[2,i]) xor Kali($0b, temp_state[3,i])

state[3,i] := Kali($0b, temp_state[0,i]) xor Kali($0d, temp_state[1,i]) xor Kali($09, temp_state[2,i]) xor Kali($0e, temp_state[3,i])

end end

(30)

//shiftrow for i := 0 to 3 do for j := 0 to 3 do temp_state[i,j] := state[i,j] for i := 0 to 3 do for j := 0 to 3 do

state[i,j] := temp_state[i, (j+4-i) mod 4] //subbytes

for i := 0 to 3 do for j := 0 to 3 do

state[i,j] := ByteSubInv(state[i,j]) end;

//add round key - chiperkey[0] for i := 0 to 3 do

for j := 0 to 3 do

state[i,j] := state[i,j] xor chiper_key[0,i,j] for i := 0 to 3 do

for j := 0 to 3 do

Hasil_str := Hasil_str + char(state[j,i]) //pengecekan signature data

flag := 1

if pos('#',hasil_str) <> 16 then flag := 0 if pos('$',hasil_str) = 0 then flag := 0 if pos('?',hasil_str) = 0 then flag := 0

(31)

if pos('@',hasil_str) <> 32 then flag := 0 for i := 1 to 15 do

begin

if ((hasil_str[i] < '0') or (hasil_str[i] > '9')) then flag := 0 end

if pos('$',hasil_str) > 17 then begin

for i := 17 to pos('$',hasil_str) - 1 do begin

if ((hasil_str[i] < 'A') or (hasil_str[i] > 'Z')) and ((hasil_str[i] < 'a') or (hasil_str[i] > 'z')) and (hasil_str[i] <> ' ') then flag := 0

end

if pos('?',hasil_str) > pos('$',hasil_str) then begin

for i := pos('$',hasil_str) to pos('?',hasil_str) - 1 do begin

if (hasil_str[i] <> '$') then flag := 0; end end else begin flag := 0 end end

(32)

else begin flag := 0 end

if ((hasil_str[31] < '0') or (hasil_str[31] > '9')) then flag := 0 if flag = 1 then begin kode := copy(hasil_str,1,15) nama := copy(hasil_str,17,13) nama := copy(nama,1,Pos('$',nama) - 1) gol := copy(hasil_str,31,1)

if gol = edit5.text then

ClientSocket1.socket.sendtext('3' + 'ô' + edit1.text + '§' + edit2.text + '¦' + kode + 'æ' + nama + '»' + gol)

else begin

messagedlg('Tipe kendaraan tidak sesuai dengan data pada kartu',mtWarning,[mbOK],0) edit4.SetFocus end end else begin

(33)

edit4.SetFocus end

end

Modul init_client

Fungsi: mengeset kondisi awal form pada saat program baru berjalan procedure TForm1.FormCreate(Sender: TObject)

begin KeySchedule Edit1.Enabled := True Edit2.Enabled := True Edit3.Enabled := True Button1.Enabled := True Button2.Enabled := False Edit4.Enabled := False Edit5.Enabled := False Button3.Enabled := False end Modul koneksi_putus

Fungsi: mengeset kondisi form setelah terjadi diskoneksi procedure TForm1.ClientSocket1Disconnect

begin

(34)

Edit2.Enabled := True Edit3.Enabled := True Button1.Enabled := True Button2.Enabled := False Edit4.Enabled := False Edit5.Enabled := False Button3.Enabled := False end

Modul val _pintuTol

Fungsi: mengecek kevalidan input data nama pintu tol

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char) begin

if ((key < 'A') or (key > 'Z')) and ((key < 'a') or (key > 'z')) and (key <> char(8)) and (key <> ' ') then key := char(0)

end

Modul val _loket

Fungsi: mengecek kevalidan input data nomor loket

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char) begin

if ((key < '0') or (key > '9')) and (key <> char(8)) then key := char(0) end

(35)

Modul val _dataUser

Fungsi: mengecek kevalidan input enkripsi data user

procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char) begin

if ((key < 'A') or (key > 'F')) and ((key < 'a') or (key > 'f')) and ((key < '0') or (key > '9')) and (key <> char(8)) then key := char(0)

end

Modul val _golKend

Fungsi: mengecek kevalidan input data golongan kendaraan

procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char) begin

if ((key < '0') or (key > '9')) and (key <> char(8)) then key := char(0) end

Modul exit_client

Fungsi: memutuskan koneksi ke server dan keluar dari program procedure TForm1.Exit2Click

begin

ClientSocket1.socket.sendtext('2' + 'ô' + edit1.text + '§' + edit2.text) ClientSocket1.Active := False

Application.Terminate end

(36)

Modul about

Fungsi: menampilkan informasi mengenai program procedure TForm1.About1Click(Sender: TObject) begin

AboutBox.ShowModal end

Gambar

Gambar 3.1. Entity Relation Diagram Database Tol
Gambar 3.2. Rancangan layar aplikasi Server
Gambar 3.3. Rancangan layar aplikasi Client
Gambar 3.5. State transition Diagram aplikasi Server
+2

Referensi

Dokumen terkait

alasan bahwa jika hanya terpaku pada RPP yang ada dengan tidak efisiennya waktu mengajar di sesuaikan dengan tenaga pengajar yang ada maka seluruh muatan yang ada di dalam kurikulum

Pada perlakuan dosis pupuk organik cair memberikan pengaruh terhadap semua variabel pengamatan kecuali bobot 1000 butir gabah bernas dan hasil panen per petak. Interaksi

Bertanya atau menjawab pertanyaan merupakan dua aktivitas penting dalam pembelajaran. Dulu pernah orang berceloteh, bertanya itu lebih mudah daripada menjawab

[r]

Dalam penelitiannya, Akelbek dan Kirkland (2009a) membahas mengenai scrambling index pada graf primitif berarah dan memberikan batas atas dari scrambling index pada graf

[r]

Dengan adanya masalah yang ditimbulkan, penyusun mencoba merencanakan Proposal Tugas Akhir dengan judul METODE PELAKSANAAN, WAKTU, DAN BIAYA PEMBANGUNAN JEMBATAN KALIPEPE JALUR

Undang-Undang Republik Indonesia Nomor 11 Tahun 2009 tentang Kesejahteraan Sosial.. Undang-Undang Republik Indonesia Nomor 3 Tahun 2014