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.
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
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
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
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
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
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
LAMPIRAN A
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}
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;
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;
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
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;
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;
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
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}
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;
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
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');
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;
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;
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;
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
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;
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
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;
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);
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.
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;
LAMPIRAN B
B-1
Program dijalankan
B-2
Tampilan Login 2
B-3
Client Login
B-4
Pemenang 1 Ditampilkan
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
Universitas Kristen Maranatha1.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
3
Universitas Kristen Maranatha13.
Bab V Kesimpulan dan Saran
Bab ini membahas tentang kesimpulan dari pembuatan
Software
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.
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.