Sistem Informasi Untuk Pelelangan Menggunakan Program Delphi.

(1)

i

Universitas Kristen Maranatha

ABSTRAK

Dengan semakin berkembangnya dunia Teknologi Informasi, maka

berbagai proses maupun kegiatan semakin mudah dikerjakan.Sebagai contoh

sebuah proses lelang. Dulu barang yang akan dilelang harus menunggu

satu-per-satu untuk ditampilkan, sehingga proses ini memakan waktu lama.

Untuk mengatasi masalah tersebut, maka pada Tugas Akhir ini dibuatlah

suatu

software

lelang dengan

program

Borland Delphi 7. Program ini dapat

menjalankan beberapa proses lelang secara paralel. Itu alasannya program ini

dapat mempercepat waktu pelelangan dan memudahkan pengguna lelang.


(2)

ii

Universitas Kristen Maranatha

ABSTRACT

The growth of Information Technology, most process nor activities can be

easier to work. For example a normal auction system. In the past, the items that

will be auctioned have to wait one-by-one to be released, and process was having

a long time.

To overcome this problem, in this Final Project an auction program using

Borland Delphi 7 has been created. This software can run more than one auction

process in the same time. Thats is the reason why this program can process faster

of the aunction’s time and it will also easier for auction users

.


(3)

iii

Universitas Kristen Maranatha

DAFTAR ISI

Abstrak ... i

Abstract

... ii

Kata Pengantar ... iii

Daftar Isi... iv

Daftar Gambar ... vi

Daftar Tabel ... viii

BAB I PENDAHULUAN ... 1

1 Latar Belakang ... 1

2 Perumusan Masalah ... 1

3 Tujuan ... 2

4 Pembatasan Masalah ... 2

5 Sistematika Penulisan ... 2

BAB II LANDASAN TEORI ... 4

2.1 Borland Delphi 7 ... 4

2.1.1 IDE

(Integrated Development Environment) ...

4

2.1.2

Main Window

(JendelaUtama) ... 5

2.1.3

Main Menu

(

Menu

Utama) ... 6

2.1.4

Toolbar ...

6

2.1.5

Component palette...

6

2.1.6

Form Designer ...

10

2.1.7

Form Designer ...

11

2.1.8

Code Editor ...

15

2.1.9

File-file

pada Delphi... 16

2.1.10 Dasar pembuatan program ... 17

2.2 Sistem Informasi ... 17

2.3 Lelang ... 18


(4)

iv

Universitas Kristen Maranatha

2.4.1 Tabel ... 19

2.4.2

Constraint ...

20

2.4.3

Structured Query Language ...

21

2.4.3.1

Data Definition Language ...

22

2.4.3.2

Data Manipulation Language

... 22

2.5 MySQL ... 24

2.5.1 Kelebihan MySQL ... 24

BAB III PERANCANGAN PROGRAM ... 25

3.1 Perancangan Tabel ... 25

3.2 Relasi Tabel ... 26

3.3 Perancangan Software ... 26

3.4 Diagram Alir ... 34

BAB IV HASIL DAN DATA PENGAMATAN ... 41

4.1 Pengujian

Software

bagian

Form

... 41

4.1.1

FormServer

... 41

4.1.2

Form Operator ...

42

4.1.3

Form Client

... 47

4.2 Pengujian Lelang ... 57

BAB V KESIMPULAN DAN SARAN ... 59

5.1 Kesimpulan ... 59

5.2 Saran ... 59

DAFTAR PUSTAKA ... 60

Lampiran - Listing Program ... A-1

Lampiran - Dokumentasi Percobaan ... B-1


(5)

v

Universitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1Bagian-bagiandari IDE ... 5

Gambar 2.2 Jendela Utama ... 5

Gambar 2.3

Component Palette ...

6

Gambar 2.4

Form Designer ...

10

Gambar 2.5

Object Inspector

... 12

Gambar 2.6

Code Editor ...

15

Gambar 2.7 Ilustrasi

Database

... 20

Gambar 3.1 Relasi Tabel ... 26

Gambar 3.2

Form Server

... 27

Gambar 3.3

Form Operator Main Menu

... 28

Gambar 3.4

Form Tambah User

... 28

Gambar 3.5

Form

Hapus

User

... 29

Gambar 3.6

Form

Tambah Barang ... 30

Gambar 3.7

Form

Hapus Barang ... 30

Gambar 3.8

Form Login

... 31

Gambar 3.9

Form User Mainmenu

... 32

Gambar 3.10

Form Bidroom

... 33

Gambar 3.11

Form

Pemenang ... 33

Gambar 3.12 Diagram Alir

OperatorMain Menu

... 34

Gambar 3.13 Diagram Alir

InputUser

... 35

Gambar 3.14 Diagram Alir

Input

Barang ... 35

Gambar 3.15 Diagram Alir Hapus

User ...

36

Gambar 3.16 Diagram Alir Hapus Barang ... 36

Gambar 3.17 Diagram Alir Proses Lelang Bagian 1... 38

Gambar 3.18 Diagram Alir Proses Lelang Bagian 2... 39

Gambar 3.19 Diagram Alir Proses Cari Barang... 40

Gambar 4.1

Form Server

... 41

Gambar 4.2

Form Operator Mainmenu

... 42


(6)

vi

Universitas Kristen Maranatha

Gambar 4.4

Form

Tambah

User

Dengan Isi ... 43

Gambar 4.5

Form

Hapus

User

... 44

Gambar 4.6

Form

Tambah Barang ... 45

Gambar 4.7 Penambahan Barang ... 46

Gambar 4.8

Form

Hapus Barang ... 47

Gambar 4.9

Form Login

... 48

Gambar 4.10

Form Client Main Menu

... 48

Gambar 4.11 Pesan

Error

... 49

Gambar 4.12 Keterangan Barang ... 50

Gambar 4.13 Urutan Berdasarkan Nama Barang ... 51

Gambar 4.14 Urutan Berdasarkan Harga Barang

...

51

Gambar 4.15 Urutan Berdasarkan Tanggal Lelang

...

52

Gambar 4.16

Searchbox

... 53

Gambar 4.17 Tombol

Join

Tidak Dapat Diklik ... 54

Gambar 4.18 Tombol

Join

Dapat Diklik... 54

Gambar 4.19

Form Bidroom

... 55

Gambar 4.20

Form

Pemenang ... 56


(7)

vii

Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 2.1 Contoh Tabel ... 19

Tabel 3.1 Tabel

User

... 25

Tabel 3.2 Tabel Barang ... 25

Tabel 4.1 Hasil penambahan

username

... 43

Tabel 4.2

Database

sebelum

user

dihapus ... 44

Tabel 4.3

Database

setelah

user

dihapus ... 44

Tabel 4.4

Database

setelah barang

ditambah ... 46

Tabel 4.5

Database

setelah barang dihapus ... 47

Tabel 4.6 Tabel Pengujian Proses

Login

... 57

Tabel 4.7 Tabel Pengujian Proses Lelang ... 58


(8)

LAMPIRAN A

Listing Program


(9)

A-1

 Form Server unit UServer; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, DB, mySQLDbTables;

type

TfrmServer = class(TForm)

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

Timer1: TTimer; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; txtTotalBarang: TLabel; txtBarangMasuk: TLabel; txtSedangLelang: TLabel; txtTerlelang: TLabel; pb: TProgressBar; Label13: TLabel; Label15: TLabel; txtCek: TEdit; btRefresh: TButton; btExit: TButton; qry2: TmySQLQuery;

procedure Timer1Timer(Sender: TObject); procedure txtCekExit(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btExitClick(Sender: TObject); private

{ Private declarations } procedure getData(); procedure processBarang(); public

{ Public declarations } end;

var

frmServer: TfrmServer; a : integer;

implementation {$R *.dfm}


(10)

A-2

begin

//panggil fungsi

pb.Max := StrToInt(txtCek.Text); a := a+1;

if a > StrToInt(txtCek.Text) then begin

a := 0; // hoorror getData(); processBarang(); end;

pb.Position := a; if a = 0 then begin end; end;

procedure TfrmServer.processBarang(); var

jam : word; menit : word; detik : word; mili : word; begin qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_STATUS,BARANG_JAM_MULAI,BARANG_ID from barang where BARANG_STATUS = 0');

qry1.Open;

while qry1.Eof = false do begin

if qry1.Fields.Fields[0].AsInteger = 0 then begin

DecodeTime(now,jam,menit,detik,mili); if qry1.Fields.Fields[1].AsInteger = jam then begin

qry2.Close; qry2.SQL.Clear;

qry2.SQL.Add('update barang set BARANG_STATUS = :status where BARANG_ID = :ID');

qry2.ParamByName('status').AsInteger := 1;

qry2.ParamByName('ID').AsInteger := qry1.Fields.Fields[2].AsInteger; qry2.ExecSQL; end; qry1.Next; end; end; end; procedure TfrmServer.getData(); begin


(11)

A-3

//mengambil nilai statistik, total //ambil total aja

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang'); qry1.Open;

txtTotalBarang.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 0'); qry1.Open;

txtBarangMasuk.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 1'); qry1.Open;

txtSedangLelang.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 2'); qry1.Open;

txtTerlelang.Caption := qry1.Fields.Fields[0].AsString; //mengambil nilai statistik, total

//ambil total aja qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang'); qry1.Open;

txtTotalBarang.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 0'); qry1.Open;

txtBarangMasuk.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 1'); qry1.Open;

txtSedangLelang.Caption := qry1.Fields.Fields[0].AsString; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select count(BARANG_ID) from barang where BARANG_STATUS = 2'); qry1.Open;

txtTerlelang.Caption := qry1.Fields.Fields[0].AsString; end;


(12)

A-4

procedure TfrmServer.txtCekExit(Sender: TObject); var

a : integer; begin

a := StrToInt(txtCek.Text); pb.Max := a;

end;

procedure TfrmServer.FormCreate(Sender: TObject); begin

a := 0; end;

procedure TfrmServer.btExitClick(Sender: TObject); begin

frmServer.Close; end;

end.

 Form operator main menu unit UOperator;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, mySQLDbTables, Menus, StdCtrls;

type

TfrmOperator = class(TForm)

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

btTambahUser: TButton; btTambahBarang: TButton; btExit: TButton;

Label1: TLabel; Label2: TLabel; Label3: TLabel; btHapusUser: TButton; btHapusBarang: TButton; Label4: TLabel;

Label5: TLabel;

procedure btTambahUserClick(Sender: TObject); procedure btTambahBarangClick(Sender: TObject); procedure btExitClick(Sender: TObject);

procedure btHapusUserClick(Sender: TObject); procedure btHapusBarangClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;


(13)

A-5

var

frmOperator: TfrmOperator; implementation

uses UDaftarBarang, UDaftarUser, UHapusUser, UHapusBarang; {$R *.dfm}

procedure TfrmOperator.btTambahUserClick(Sender: TObject); begin

frmDaftarUser.Show; frmOperator.Hide; end;

procedure TfrmOperator.btTambahBarangClick(Sender: TObject); begin

frmDaftarBarang.Show; frmOperator.Hide; end;

procedure TfrmOperator.btExitClick(Sender: TObject); begin

Application.Terminate; end;

procedure TfrmOperator.btHapusUserClick(Sender: TObject); begin

frmHapusUser.Show; frmOperator.Hide; end;

procedure TfrmOperator.btHapusBarangClick(Sender: TObject); begin

frmHapusBarang.Show; frmOperator.Hide; end;

end.

 Form operator unit UDaftarUser; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, mySQLDbTables, ExtCtrls;

type

TfrmDaftarUser = class(TForm) Panel1: TPanel;

txtUsername: TLabeledEdit; txtUserpass: TLabeledEdit;


(14)

A-6

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

Button1: TButton; Button2: TButton;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmDaftarUser: TfrmDaftarUser; implementation

Uses UOperator; {$R *.dfm}

procedure TfrmDaftarUser.Button1Click(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('insert into users (USER_NAME,USER_PASS) values(:NAME,:PASS)'); qry1.ParamByName('NAME').AsString := txtUsername.Text;

qry1.ParamByName('PASS').AsString := txtUserpass.Text; qry1.ExecSQL;

end;

procedure TfrmDaftarUser.Button2Click(Sender: TObject); begin

frmOperator.Show; frmDaftarUser.Hide; end;

end.

 Form hapus user unit UHapusUser; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, mySQLDbTables;

type

TfrmHapusUser = class(TForm) mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

txtUsername: TLabeledEdit; btHapus: TButton;


(15)

A-7

procedure btHapusClick(Sender: TObject); procedure btKembaliClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmHapusUser: TfrmHapusUser; implementation

uses UOperator; {$R *.dfm}

procedure TfrmHapusUser.btHapusClick(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add(‘select USER_ID from user where USER_NAME = :name’);

qry1.ParamByName(‘name’).AsString := txtUserName.Text;

qry1.Open;

if qry1.Eof = false then begin

MessageBox(0,’Barang masih terhunbung, tolong hapus user terlebih dahulu’,’ERROR’,0);

end else begin qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('delete from users where USER_NAME = :id'); qry1.ParamByName('id').AsString := txtUsername.Text; qry1.ExecSQL;

end; end; end;

procedure TfrmHapusUser.btKembaliClick(Sender: TObject); begin

frmOperator.Show; frmHapusUser.Hide; end;

end.

 Form daftar barang unit UDaftarBarang; interface

uses


(16)

A-8

Dialogs, StdCtrls, DB, mySQLDbTables, ExtCtrls; type

TfrmDaftarBarang = class(TForm) mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery; Panel1: TPanel; Label2: TLabel; txtNamaBarang: TLabeledEdit; txtUserID: TLabeledEdit; txtTanggalLelang: TLabeledEdit; txtHargaAwal: TLabeledEdit; txtBid: TLabeledEdit; txtKeterangan: TMemo; Button1: TButton; Button2: TButton; txtJamMulai: TLabeledEdit; txtJamBerakhir: TLabeledEdit; txtTimeout: TLabeledEdit; Label3: TLabel; Label4: TLabel; Label5: TLabel;

procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end; var frmDaftarBarang: TfrmDaftarBarang; implementation uses UOperator; {$R *.dfm}

procedure TfrmDaftarBarang.Button1Click(Sender: TObject); begin qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('insert into barang(BARANG_NAMA,USER_ID,BARANG_TANGGAL_LELANG,BARANG_HARGA ,BARANG_NILAI_TAWAR,BARANG_KETERANGAN,BARANG_JAM_MULAI,BARAN G_JAM_SELESAI,BARANG_STATUS,BARANG_TIMEOUT) values'); qry1.SQL.Add('(:NAMA,:ID,:TANGGAL_LELANG,:HARGA,:BID,:KETERANGAN,:JAM _MULAI,:JAM_SELESAI,:STATUS,:TIMEOUT);'); qry1.ParamByName('NAMA').AsString:=txtNamaBarang.Text; qry1.ParamByName('ID').AsInteger:=StrToInt(txtUserID.Text); qry1.ParamByName('TANGGAL_LELANG').AsDate:=StrToDate(txtTanggalLelang.Text); qry1.ParamByName('HARGA').AsInteger:=StrToInt(txtHargaAwal.Text); qry1.ParamByName('BID').AsInteger:=StrToInt(txtBid.Text); qry1.ParamByName('KETERANGAN').AsString:=txtKeterangan.Text;


(17)

A-9

qry1.ParamByName('JAM_MULAI').AsInteger:= StrToInt(txtJamMulai.Text); qry1.ParamByName('JAM_SELESAI').AsInteger := StrToInt(txtJamBerakhir.Text); qry1.ParamByName('STATUS').AsInteger := 0;

qry1.ParamByName('TIMEOUT').AsInteger := StrToInt(txtTimeout.Text); qry1.ExecSQL;

end;

procedure TfrmDaftarBarang.Button2Click(Sender: TObject); begin

frmDaftarBarang.Hide; frmOperator.Show; end;

end.

 Form hapus barang unit UHapusBarang; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, mySQLDbTables, StdCtrls, ExtCtrls;

type

TfrmHapusBarang = class(TForm) btHapus: TButton;

btKembali: TButton;

mySQLDatabase1: TmySQLDatabase; txtNamaBarang: TLabeledEdit; qry1: TmySQLQuery;

procedure btKembaliClick(Sender: TObject); procedure btHapusClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmHapusBarang: TfrmHapusBarang; implementation

uses UOperator; {$R *.dfm}

procedure TfrmHapusBarang.btHapusClick(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add(‘select USER_ID from barang where BARANG_NAMA = :brg’);

qry1.ParamByName(‘brg’).AsString := txtBarangNama.Text;


(18)

A-10

if qry1.Eof = false then begin

MessageBox(0,’Barang masih terhunbung, tolong hapus user terlebih dahulu’,’ERROR’,0);

end else begin qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('delete from barang where BARANG_NAMA = :brg'); qry1.ParamByName('brg').AsString := txtNamaBarang.Text; qry1.ExecSQL;

end; end; end;

procedure TfrmHapusBarang.btKembaliClick(Sender: TObject); begin

frmOperator.Show; frmHapusBarang.Close; end;

end.

 Form user login unit UUserLogin; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, mySQLDbTables, StdCtrls, ExtCtrls, iniFiles;

type

TfrmLogin = class(TForm) Panel1: TPanel;

txtUsername: TLabeledEdit; txtPassword: TLabeledEdit; btLogin: TButton;

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

btQuit: TButton;

procedure btLoginClick(Sender: TObject); procedure btQuitClick(Sender: TObject); procedure FormCreate(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmLogin: TfrmLogin; user_id : integer; ipaddress : string;


(19)

A-11

konfig : TIniFile; implementation

Uses UMainMenu, UBidRoom; {$R *.dfm}

procedure TfrmLogin.btLoginClick(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select USER_NAME from users where USER_NAME = :a'); qry1.ParamByName('a').AsString := txtUsername.Text;

qry1.Open;

if qry1.Eof = false then //false

begin qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select USER_PASS,USER_ID from users where USER_NAME = :a'); qry1.ParamByName('a').AsString := txtUsername.Text;

qry1.Open;

if qry1.Fields[0].AsString = txtPassword.Text then begin

user_id := qry1.Fields.Fields[1].AsInteger; frmLogin.Hide;

frmMainMenu.Show; end

else begin

MessageBox(0,'Password Salah !!','ERROR !!',0); end;

end else begin //true

MessageBox(0,'User tidak ditemukan !!','ERROR !!',0); end;

end;

procedure TfrmLogin.btQuitClick(Sender: TObject); begin

Application.Terminate; end;

procedure TfrmLogin.FormCreate(Sender: TObject); begin

mySQLDatabase1.Connected := false; mySQLDatabase1.KeepConnection := false;

konfig := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'konfig.ini'); ipaddress := konfig.ReadString('setting','IPAddress','localhost');


(20)

A-12

if ipaddress = '' then begin

ShowMessage('Konfigurasi kosong. Digunakan IP Address localhost.'); end;

// setiap form dengan komponen myDatabase mySQLDatabase1.Host := ipaddress; mySQLDatabase1.Connected := true; mySQLDatabase1.KeepConnection := true; end;

end.

 Form user main menu unit UMainMenu; interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, mySQLDbTables, StdCtrls, ExtCtrls, iniFiles;

type

TfrmMainMenu = class(TForm) Panel1: TPanel;

Label2: TLabel; Label3: TLabel; Panel2: TPanel; Label4: TLabel; Label5: TLabel; Label1: TLabel; txtCariBarang: TEdit; btCariBarang: TButton; lbBarang: TListBox; cbUrut: TComboBox; btAscending: TRadioButton; btDescending: TRadioButton; txtNamaBarang: TLabeledEdit; txtPenjual: TLabeledEdit; txtStatusBarang: TLabeledEdit; txtTanggalLelang: TLabeledEdit; txtHarga: TLabeledEdit;

txtBid: TLabeledEdit; btJoin: TButton; btExit: TButton;

memoKeterangan: TMemo;

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

txtJamMulai: TLabeledEdit; txtJamSelesai: TEdit; Label6: TLabel; Timer1: TTimer; Label7: TLabel;


(21)

A-13

txtJam: TLabel; btRefresh: TButton;

procedure FormCreate(Sender: TObject); procedure lbBarangClick(Sender: TObject); procedure btCariBarangClick(Sender: TObject); procedure btJoinClick(Sender: TObject); procedure btExitClick(Sender: TObject); procedure cbUrutChange(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure btRefreshClick(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmMainMenu: TfrmMainMenu; brgID : integer;

implementation

uses UUserLogin,UBidRoom; {$R *.dfm}

procedure TfrmMainMenu.FormCreate(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_NAMA from barang'); qry1.Open;

while not qry1.Eof do begin

lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next;

end; qry1.Close;

// setiap form dengan komponen myDatabase mySQLDatabase1.Host := ipaddress; end;

procedure TfrmMainMenu.lbBarangClick(Sender: TObject); begin qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('select BARANG_NAMA,USER_ID,BARANG_STATUS,BARANG_TANGGAL_LELANG,BARA NG_JAM_MULAI,BARANG_JAM_SELESAI,BARANG_HARGA,BARANG_NILAI_TAW AR,BARANG_KETERANGAN from barang where BARANG_NAMA = :LB');

qry1.ParamByName('LB').AsString := lbBarang.Items.Strings[lbBarang.ItemIndex]; qry1.Open;

txtNamaBarang.Text := qry1.Fields[0].AsString; txtPenjual.Text := qry1.Fields[1].AsString; txtStatusBarang.Text := qry1.Fields[2].AsString; txtTanggalLelang.Text := qry1.Fields[3].AsString;


(22)

A-14

txtJamMulai.Text := (qry1.Fields[4].AsString)+':00'; txtJamSelesai.Text := qry1.Fields[5].AsString+':00'; txtHarga.Text := qry1.Fields[6].AsString;

txtBid.Text := qry1.Fields[7].AsString;

memoKeterangan.Text := qry1.Fields[8].AsString; if qry1.Fields[2].AsInteger = 0 then

begin

txtStatusBarang.Text := 'Belum Dimulai'; end;

if qry1.Fields[2].AsInteger = 1 then begin

txtStatusBarang.Text := 'Sudah Dimulai'; end;

if qry1.Fields[2].AsInteger = 2 then begin

txtStatusBarang.Text := 'Terjual'; end;

timer1.Enabled := true; end;

procedure TfrmMainMenu.btCariBarangClick(Sender: TObject); begin

//nyari barang qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_NAMA from barang where BARANG_NAMA = :namabarang');

qry1.ParamByName('namabarang').AsString := txtCariBarang.Text; qry1.Open;

//ditampilin ke listbox lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end;

procedure TfrmMainMenu.btJoinClick(Sender: TObject); begin

if lbBarang.ItemIndex > -1 then begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_ID from barang where BARANG_NAMA = :nama'); qry1.ParamByName('nama').AsString := lbBarang.Items.Strings[lbBarang.ItemIndex]; qry1.Open;

brgID := qry1.Fields.Fields[0].Value; frmBidRoom.Show;

frmBidRoom.txtKeterangan.Caption := memoKeterangan.Text; frmMainMenu.Close;

end else begin


(23)

A-15

MessageBox(0,'Pilih Salah Satu Barang','ERROR !!',0); end;

end;

procedure TfrmMainMenu.btExitClick(Sender: TObject); begin

frmLogin.Show; frmMainMenu.Close; end;

procedure TfrmMainMenu.cbUrutChange(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

if (cbUrut.ItemIndex = 0) and (btAscending.Checked = true) then begin

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_NAMA ASC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end

else if (cbUrut.ItemIndex = 0) and (btDescending.Checked = true) then begin

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_NAMA DESC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end

else if (cbUrut.ItemIndex = 1) and (btAscending.Checked = true) then begin

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_HARGA ASC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end

else if (cbUrut.ItemIndex = 1) and (btDescending.Checked = true) then begin


(24)

A-16

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_HARGA DESC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end

else if (cbUrut.ItemIndex = 2) and (btAscending.Checked = true) then begin

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_TANGGAL_LELANG ASC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end

else if (cbUrut.ItemIndex = 2) and (btDescending.Checked = true) then begin

qry1.SQL.Add('select BARANG_NAMA from barang order by BARANG_TANGGAL_LELANG DESC');

qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end; end;

procedure TfrmMainMenu.Timer1Timer(Sender: TObject); var

Sekarang : TDateTime; formattedDate : String; waktu_sekarang : word; waktu_limit : word;

myHour, myMin, mySec, myMilli : Word; begin

sekarang := now;

DateTimeToString(formattedDate, 't', Sekarang); txtJam.Caption := formattedDate;

DecodeTime(Sekarang, myHour, myMin, mySec, myMilli); qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_STATUS,BARANG_JAM_MULAI from barang where BARANG_NAMA = :barang');


(25)

A-17

qry1.ParamByName('barang').AsString := lbBarang.Items.Strings[lbBarang.ItemIndex]; qry1.Open;

waktu_sekarang := (myHour*60)+myMin;

waktu_limit := (qry1.Fields.Fields[1].AsInteger*60) + 15; if qry1.Fields.Fields[0].AsInteger = 1 then

begin

if waktu_sekarang < waktu_limit then begin

btJoin.Enabled := true; end

else begin

btJoin.Enabled := false; end; end else begin btJoin.Enabled :=false; end; end;

procedure TfrmMainMenu.btRefreshClick(Sender: TObject); begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_NAMA from barang'); qry1.Open;

lbBarang.Items.Clear; while not qry1.Eof do begin lbBarang.Items.Add(qry1.Fields[0].AsString); qry1.Next; end; qry1.Close; end; end.

 Form bid room unit UBidRoom; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, mySQLDbTables;

type

TfrmBidRoom = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; txtBidder: TLabel; txtNilaiBid: TLabel; txtKeteranganWaktu: TLabel;


(26)

A-18

txtTimer: TLabel; GroupBox1: TGroupBox; txtKeterangan: TLabel; btnBid: TButton;

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject); procedure btnBidClick(Sender: TObject); procedure FormCreate(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmBidRoom: TfrmBidRoom; a : integer;

b : integer; bidder : integer; implementation

uses UMainMenu, UUserLogin, UPemenang; {$R *.dfm}

procedure TfrmBidRoom.Timer1Timer(Sender: TObject); var

kosong : boolean;

waktu_sekarang : TDateTime; waktu_tabel : TDateTime; perhitungan_raw : integer; // timeout

timeout_detik_raw : word; // sekarang

skrg_jam : word; skrg_menit : word; skrg_detik : word; skrg_msec : word; skrg_detik_raw : word; // tabel

tabel_jam : word; tabel_menit : word; tabel_detik : word; tabel_msec : word; tabel_detik_raw : word; // tampilan

disp_jam : word; disp_menit : word; disp_detik : word;


(27)

A-19

disp_str : string; begin

qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('select

BARANG_BIDDER,BARANG_HARGA,BARANG_LSTBID,BARANG_TIMEOUT from barang where BARANG_ID = :ID');

qry1.ParamByName('ID').AsInteger := brgID; qry1.Open;

if qry1.Fields.Fields[1].Value > 0 then begin

txtNilaiBid.Caption := IntToStr(qry1.Fields.Fields[1].Value); kosong := qry1.Fields.Fields[2].IsNull;

bidder := qry1.Fields.Fields[0].AsInteger; if kosong = false then

begin // sekarang

waktu_sekarang := Now;

DecodeTime(waktu_sekarang,skrg_jam,skrg_menit,skrg_detik,skrg_msec); skrg_detik_raw := (skrg_jam * 3600) + (skrg_menit * 60) + skrg_detik; // tabel

waktu_tabel := StrToTime(qry1.Fields.Fields[2].AsString);

DecodeTime(waktu_tabel,tabel_jam,tabel_menit,tabel_detik,tabel_msec); tabel_detik_raw := (tabel_jam * 3600) + (tabel_menit * 60) + tabel_detik; // timeout

timeout_detik_raw := qry1.Fields.Fields[3].AsInteger; // perhitungan waktu tampilan

perhitungan_raw := (tabel_detik_raw+timeout_detik_raw)-skrg_detik_raw; //txtTimer.Caption := IntToStr(perhitungan_raw);

if perhitungan_raw = 0 then begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('update barang set BARANG_STATUS = :status where BARANG_ID = :bid' );

qry1.ParamByName('status').AsInteger := 2; qry1.ParamByName('bid').AsInteger := brgID; qry1.ExecSQL;

frmPemenang.Show; frmBidRoom.Close; end;

// konversi dari integer ke waktu //integer -> string -> time

disp_jam := trunc(perhitungan_raw/3600);


(28)

A-20

disp_detik := perhitungan_raw-(trunc(perhitungan_raw/3600)*3600)-(trunc((perhitungan_raw-(trunc(perhitungan_raw/3600)*3600))/60)*60);

disp_str := IntToStr(disp_jam)+':'+IntToStr(disp_menit)+':'+IntToStr(disp_detik); txtTimer.Caption := disp_str;

end; qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select USER_NAME from users where USER_ID = :bidder'); qry1.ParamByName('bidder').AsInteger := bidder;

qry1.Open;

txtBidder.Caption := qry1.Fields.Fields[0].AsString; end;

end;

procedure TfrmBidRoom.btnBidClick(Sender: TObject); var

Nilai_Barang : Integer; begin

qry1.Close; qry1.SQL.Clear;

qry1.SQL.Add('select BARANG_HARGA,BARANG_NILAI_TAWAR from barang where BARANG_ID = :ID');

qry1.ParamByName('ID').AsInteger := brgID; qry1.Open;

Nilai_barang := qry1.Fields.Fields[0].AsInteger + qry1.Fields.Fields[1].AsInteger; qry1.Close;

qry1.SQL.Clear;

qry1.SQL.Add('update barang set BARANG_LSTBID = :waktu, BARANG_BIDDER = :bidder, BARANG_HARGA = :harga_baru where BARANG_ID =:bid');

qry1.ParamByName('waktu').AsString := TimeToStr(Time); qry1.ParamByName('bid').AsInteger := brgID;

qry1.ParamByName('bidder').AsInteger := user_id;

qry1.ParamByName('harga_baru').AsInteger := Nilai_Barang; qry1.ExecSQL;

end;

procedure TfrmBidRoom.FormCreate(Sender: TObject); begin

Timer1.Enabled := true;

// setiap form dengan komponen myDatabase mySQLDatabase1.Host := ipaddress; end;

end.

 Form pemenang unit UPemenang;


(29)

A-21

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, mySQLDbTables;

type

TfrmPemenang = class(TForm) Label1: TLabel;

txtPemenang: TLabel; btOK: TButton;

mySQLDatabase1: TmySQLDatabase; qry1: TmySQLQuery;

procedure btOKClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private

{ Private declarations } public

{ Public declarations } end;

var

frmPemenang: TfrmPemenang; implementation

uses UBidRoom, UMainMenu, UUserLogin; {$R *.dfm}

procedure TfrmPemenang.btOKClick(Sender: TObject); begin

frmMainMenu.Show; frmPemenang.Close; end;

procedure TfrmPemenang.FormShow(Sender: TObject); begin

txtPemenang.Caption := frmBidRoom.txtBidder.Caption; end;

procedure TfrmPemenang.FormCreate(Sender: TObject); begin

// setiap form dengan komponen myDatabase mySQLDatabase1.Host := ipaddress; end;


(30)

LAMPIRAN B

Dokumentasi Percobaan


(31)

B-1

Program dijalankan


(32)

B-2

Tampilan Login 2


(33)

B-3

Client Login


(34)

B-4

Pemenang 1 Ditampilkan


(35)

1

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1

Latar Belakang

Dengan semakin berkembangnya dunia Teknologi Informasi atau

yang dikenal dengan sebutan IT, maka segala proses maupun kegiatan

dapat dipermudah dengan bantuan teknologi tersebut. Contohnya, adanya

suatu program pada komputer yang dapat dibuat oleh seorang

programmer

yang dapat berguna untuk suatu aktivitas seperti Faktur Penjualan Toko,

Stock Barang, dan lainnya.

Pada kesempatan ini, akan dibahas mengenai pembuatan program

yang dapat digunakan dalam proses pelelangan. Dengan penggunaan

program ini diharapkan dapat membuat proses pelelangan dapat berjalan

lebih cepat dan mempermudah proses lelang.

1.2

Rumusan Masalah

Beberapa masalah yang akan dibahas pada Tugas Akhir ini adalah:

1.

Bagaimana caranya untuk membuat sebuah pelelangan secara

elektronik ?

2.

Bagaimana membuat program pelelangan ini agar mudah digunakan

dalam proses pelelangan ?

1.3

Tujuan

Tujuan dari Tugas Akhir ini adalah :

1.

Dapat membuat program pelelangan secara elektronik

2.

Dapat membuat program yang mudah untuk digunakan dalam proses

pelelangan.


(36)

2

Universitas Kristen Maranatha

1.4

Pembatasan Masalah

1.

Software

yang digunakan dalam Tugas Akhir ini antara lain adalah

Borland Delphi 7.

2.

Pembuatan

Database

yang digunakan dalam Tugas Akhir ini

adalah menggunakan

program

MySQL.

3.

Jaringan yang digunakan adalah

wireless LAN

.

4.

Pengetesan dilakukan di laboratorium multimedia dengan total

empat

client

dan satu komputer bertindak sebagai

server

dan

operator.

5.

Pelelangan hanya dapat dilakukan satu jam setelah barang

dimasukkan.

6.

Komputer

client

disediakan oleh penyelenggara lelang.

7.

Keterangan barang ditentukan oleh

client

yang mendaftarkan

barang.

8.

Jika

client

mengikuti salah satu sesi lelang, maka

client

harus

mengikuti sesi lelang tersebut sampai selesai.

1.5

Sistematika Penulisan

Penyusunan laporan tugas akhir terdiri dari 5 bab sebagai berikut :

9.

Bab I Pendahuluan

Bab ini membahas tentang latar belakang, rumusan, tujuan dan

batasan masalah serta sistematika penulisan.

10.

Bab II Landasan Teori

Bab ini membahas tentang teori-teori yang menunjang topik Tugas

Akhir.

11.

Bab III Perancangan dan Realisasi

Bab ini membahas tentang perancangan struktur program serta

algoritma yang digunakan.

12.

Bab IV Hasil dan Analisis


(37)

3

Universitas Kristen Maranatha

13.

Bab V Kesimpulan dan Saran

Bab ini membahas tentang kesimpulan dari pembuatan

Software


(38)

59

Universitas Kristen Maranatha

BAB V

KESIMPULAN DAN SARAN

5.1

Kesimpulan

Dengan pengujian yang sudah dilakukan, maka kesimpulan yang

didapat dari tugas akhir ini adalah :

1.

Sistem informasi lelang berhasil dibuat dan dijalankan.

2.

Delay waktu selalu terjadi saat form pemenang ditampilkan.

Dikarenakan adanya perbedaan waktu antara komputer

client

dengan

komputer

server.

3.

Pada pengujian,

client

berpendapat bahwa proses lelang menjadi lebih

mudah.

5.2

Saran

Saran untuk perkembangan lebih lanjut dari Tugas Akhir ini adalah :

1. Untuk perkembangan lebih lanjut, program ini dapat menggunakan

jaringan internet sehingga dapat dilakukan pelelangan secara

online

.

2. Untuk menjaga validitas penyelenggaraan lelang, sebaiknya dilengkapi

dengan sistem pemantau lelang.

3. Untuk lebih memperjelas barang yang akan dilelang, fitur gambar

barang dapat ditambahkan


(39)

60

Universitas Kristen Maranatha

DAFTAR PUSTAKA

1.

Raharjo, Budi. 2011.

Belajar Otodidak Membuat Database

Menggunakan MySQL. Bandung: Informatika

2.

MADCOMS. 2002. Pemrograman Borland Delphi 7. Yogyakarta: ANDI

3.

Martina, Inge. 2002.

Database Client/Server Menggunakan Delphi.

Jakarta: Elex Media Komputindo

4.

Wahana Komputer. 2010. SQL Server 2008 Express. Yogyakarta: ANDI

5.

Utami, Ema dan Anggit Dwi Hartanto. 2012.

Sistem Basis Data

Menggunakan Microsoft SQL Server 2005. Yogyakarta: ANDI

6.

http://www.delphibasics.co.uk/index.html

,

diakses pada 8 April 2013.

7.

http://www.digitalcoding.com/tutorials/delphi/

,

diakses pada 10 April 2013.

8.

http://www.delphiarea.com/

,

diakses pada 11 April 2013.

9.

http://www.cenadep.org/?cat=5, diakses pada 20 Mei 2013.

10.

http://kidprogrammer.wordpress.com/2012/04/22/koneksi-mysql-ke-delphi-7/, diakses pada 26 Mei 2013.

11.

http://jokorb.wordpress.com/2008/03/26/koneksi-database-dengan-delphi-mysql/, diakses pada 29 Mei 2013.


(1)

Pemenang 1 Ditampilkan


(2)

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dengan semakin berkembangnya dunia Teknologi Informasi atau yang dikenal dengan sebutan IT, maka segala proses maupun kegiatan dapat dipermudah dengan bantuan teknologi tersebut. Contohnya, adanya suatu program pada komputer yang dapat dibuat oleh seorang programmer yang dapat berguna untuk suatu aktivitas seperti Faktur Penjualan Toko, Stock Barang, dan lainnya.

Pada kesempatan ini, akan dibahas mengenai pembuatan program yang dapat digunakan dalam proses pelelangan. Dengan penggunaan program ini diharapkan dapat membuat proses pelelangan dapat berjalan lebih cepat dan mempermudah proses lelang.

1.2 Rumusan Masalah

Beberapa masalah yang akan dibahas pada Tugas Akhir ini adalah:

1. Bagaimana caranya untuk membuat sebuah pelelangan secara elektronik ?

2. Bagaimana membuat program pelelangan ini agar mudah digunakan dalam proses pelelangan ?

1.3 Tujuan

Tujuan dari Tugas Akhir ini adalah :

1. Dapat membuat program pelelangan secara elektronik

2. Dapat membuat program yang mudah untuk digunakan dalam proses pelelangan.


(3)

1.4 Pembatasan Masalah

1. Software yang digunakan dalam Tugas Akhir ini antara lain adalah Borland Delphi 7.

2. Pembuatan Database yang digunakan dalam Tugas Akhir ini adalah menggunakan program MySQL.

3. Jaringan yang digunakan adalah wireless LAN.

4. Pengetesan dilakukan di laboratorium multimedia dengan total empat client dan satu komputer bertindak sebagai server dan operator.

5. Pelelangan hanya dapat dilakukan satu jam setelah barang dimasukkan.

6. Komputer client disediakan oleh penyelenggara lelang.

7. Keterangan barang ditentukan oleh client yang mendaftarkan barang.

8. Jika client mengikuti salah satu sesi lelang, maka client harus mengikuti sesi lelang tersebut sampai selesai.

1.5 Sistematika Penulisan

Penyusunan laporan tugas akhir terdiri dari 5 bab sebagai berikut :

9. Bab I Pendahuluan

Bab ini membahas tentang latar belakang, rumusan, tujuan dan batasan masalah serta sistematika penulisan.

10.Bab II Landasan Teori

Bab ini membahas tentang teori-teori yang menunjang topik Tugas Akhir.

11.Bab III Perancangan dan Realisasi

Bab ini membahas tentang perancangan struktur program serta algoritma yang digunakan.


(4)

13.Bab V Kesimpulan dan Saran

Bab ini membahas tentang kesimpulan dari pembuatan Software dan saran yang diperlukan untuk perkembangan lebih lanjut.


(5)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dengan pengujian yang sudah dilakukan, maka kesimpulan yang didapat dari tugas akhir ini adalah :

1. Sistem informasi lelang berhasil dibuat dan dijalankan.

2. Delay waktu selalu terjadi saat form pemenang ditampilkan. Dikarenakan adanya perbedaan waktu antara komputer client dengan komputer server.

3. Pada pengujian, client berpendapat bahwa proses lelang menjadi lebih mudah.

5.2 Saran

Saran untuk perkembangan lebih lanjut dari Tugas Akhir ini adalah : 1. Untuk perkembangan lebih lanjut, program ini dapat menggunakan

jaringan internet sehingga dapat dilakukan pelelangan secara online. 2. Untuk menjaga validitas penyelenggaraan lelang, sebaiknya dilengkapi

dengan sistem pemantau lelang.

3. Untuk lebih memperjelas barang yang akan dilelang, fitur gambar barang dapat ditambahkan


(6)

DAFTAR PUSTAKA

1. Raharjo, Budi. 2011. Belajar Otodidak Membuat Database Menggunakan MySQL.Bandung: Informatika

2. MADCOMS. 2002. Pemrograman Borland Delphi 7. Yogyakarta: ANDI 3. Martina, Inge. 2002. Database Client/Server Menggunakan Delphi.

Jakarta: Elex Media Komputindo

4. Wahana Komputer. 2010. SQL Server 2008 Express. Yogyakarta: ANDI 5. Utami, Ema dan Anggit Dwi Hartanto. 2012. Sistem Basis Data

Menggunakan Microsoft SQL Server 2005. Yogyakarta: ANDI 6. http://www.delphibasics.co.uk/index.html, diakses pada 8 April 2013. 7. http://www.digitalcoding.com/tutorials/delphi/, diakses pada 10 April 2013.

8. http://www.delphiarea.com/, diakses pada 11 April 2013. 9. http://www.cenadep.org/?cat=5, diakses pada 20 Mei 2013.

10. http://kidprogrammer.wordpress.com/2012/04/22/koneksi-mysql-ke-delphi-7/, diakses pada 26 Mei 2013.

11. http://jokorb.wordpress.com/2008/03/26/koneksi-database-dengan-delphi-mysql/, diakses pada 29 Mei 2013.