KUISIONER
Berilah penilaian anda mengenai aplikasi sistem perpustakaan ini dengan memilih angka antara 1 – 4 (angka 4 merupakan penilaian yang tertinggi)
1. Tampilan dari aplikasi sistem perpustakaan 1 2 3 4 5 2. Kemudahan Penggunaan aplikasi ini 1 2 3 4 5 3. Fasilitas-fasilitas yang ada 1 2 3 4 5 4. Penilaian aplikasi secara keseluruhan 1 2 3 4 5
Silahkan tuliskan komentar atau saran anda pada kolom yang sudah tersedia untuk pengembangan aplikasi ini di masa yang akan datang :
Nama :
Lama bekerja :
Susunan pengurus Perpustakaan Solomon Hall adalah sebagai berikut:
• Ketua umum : Kwo Kuang
• Wakil ketua : Lucy Kumala
• Bendahara : Yu Ching
• Sekretaris : Erna Hartanti
• Inventaris : Daniel
• Finishing : Margaret
• Promosi : Yucca
• Koord. Shift I : Suk Lien
• Koord. Shift II : Welly Sudjioadi
• Koord. Shift III : Yu Siauw Tjen Team work
Promosi : Susan, Jimmy Bambang Finishing : Robby, Hartanto, Margaret Inventaris : Azwan, Ivan, Lucy
Shift I : Margaret, Daniel Yu Ching
Shift II : Erna, Sah Ban, Yong Yao
Shift III : Djufri, Lokhmarno
Pengklasifikasian koleksi perpustakaan Solomon Hall
KODE JENIS BUKU KODE JENIS KASET
A Cerita A I Instrumen
B Kesaksian, Biografi A II Praise
C Doktrin Alkitab A III Praise and Worship D Kehidupan Kristen A IV Worship
E Pendidikan, Psikologi A V Praise
F Penginjilan B I Praise and Worship
G English B II Worship
H Pengajaran PA Alkitab B III Lagu anak-anak I Lain-lain B IV Mandarin
Mandarin B V Christmas
Khotbah
Mandarin
KODE JENIS CD KODE JENIS VCD
A Instrument V A Cerita Alk Kartun B I Praise V B Cerita Alk Non Kartun B II Praise and Worship V C Kristen Praktis B III Worship V D Psikologi
C I Praise V E Tokoh-tokoh alkitab C II Praise and Worship V F Karaoke
C III Worship V G Sejarah
C IV Lagu anak-anak V H Tokoh-tokoh kristen
M Mandarin V I Discovery
N Christmas V J Kesaksian
Sp Special DOC Document
JUDUL TUGAS AKHIR : Perancangan dan Pembuatan Sistem Pengolahan, Sirkulasi dan Katalog dari Perpustakaan Solomon Hall
NRP : 26499114
NAMA : Robby Daniel Umboh
Dosen Pembimbing I : Arlinah Imam Rahardjo, SIP, MLIS
Dosen Pembimbing II : Arie Wirawan Margono, S kom
TAHUN LULUS : 2004/2005
aplikasinya menggunakan Borland Delphi 7.0.
Implementasi pada Microsoft Access
Membangun database adalah langkah awal dari pembuatan suatu aplikasi dan konsep manajemen database adalah konsep yang dipakai untuk membangun database tersebut.
Pembuatan Database
Langkah pertama adalah pembuatan database dengan nama
“SolomonHall”. Untuk membuat database ini, pertama-tama membuka aplikasi microsoft access 2000. Klik Blank Access Database setelah aplikasi ini terbuka dan tekan ok dan simpan dengan nama SolomonHall. Bentuk tampilan dapat dilihat pada Gambar 4.1.
Gambar 4.1. Database SolomonHall
Pembuatan Tabel
Pembuatan tabel pada Microsoft Access dilakukan pada database
“SolomonHall” sesuai dengan rancangan tabel pada ERD yang telah dibuat sebelumnya, yaitu dengan cara pilih menu Create Table in Design View pada database yang sesuai dan mengisi field-field yang akan ditampilkan, dapat dilihat pada Gambar 4.2.
Gambar 4.2. Design view Tabel pada Microsoft Access 2000
Hasilnya akan tampak di bawah ini dengan isi field login adalah admin,
isi field password adalah admin dan isi field status adalah administrator.
Gambar 4.3. Datasheet view Tabel login pada Microsoft Access 2000
Setelah membuat tabel-tabel yang diperlukan, hasilnya terlihat seperti pada Gambar 4.4. berikut ini:
Gambar 4.4. Hasil pembuatan tabel-tabel dalam database SolomonHall
Koneksi Database
Untuk koneksi database digunakan Microsoft ODBC Administrator, dan
database dengan nama “SolomonHall”. Setelah itu masukkan alamat file database
yang telah dibuat sebelumnya. Gambar 4.5. menunjukkan cara setting ODBC.
Gambar 4.5. Koneksi Delphi 7.0 dengan Microsoft Access 2000
Implementasi Program
Langkah selanjutnya dari pembuatan suatu aplikasi membangun database adalah coding atau pengkodean yang menggunakan Borland Delphi 7.0.
Program di bawah ini adalah program yang digunakan untuk dapat menjalankan SolomonHall.exe.
Form Login
Form login adalah form yang pertama kali aktif ketika program dijalankan, dimana dilakukan pengecekan username, password dan status user.
Hanya user yang telah tersimpan datanya yang bisa menjalankan program.
Kemudian program akan mengaktifkan semua menu untuk bagian administrator,
mengaktifkan menu file dan transaksi bila memilih bagian katalog, mengaktifkan
menu file dan transaksi sirkulasi bila memilih bagian sirkulasi, dan mengaktifkan menu file dan master data koleksi buku dan audio visual, data subyek judul, data penerbit dan jenis audio visual.
Di bawah ini adalah contoh procedure untuk pengecekan username, password, status dan menu yang diaktifkan sesuai dengan statusnya:
procedure Tfrm_login.btn_okClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Text :='select * from login where username=:p1';
Query1.ParamByName('p1').AsString :=edt_username.Text;
Query1.Open;
if not Query1.Eof then begin
//jika username benar
if edt_password.Text=Query1.FieldByName('password').AsString then
begin
//jika password benar
if cmb_status.Text=Query1.fieldbyname('status').AsString then
begin
//jika status benar
StatusLogin :=edt_username.Text;
//visible semua menu
frm_main.File1.Visible :=true;
frm_main.Logout1.Visible :=true;
frm_main.Exit1.Visible :=true;
frm_main.Master1.Visible :=true;
frm_main.Tablebukuav1.Visible :=true;
frm_main.Tablepenerbit1.Visible :=true;
frm_main.Tablejenisav1.Visible :=true;
frm_main.tablesubyek1.Visible :=true;
frm_main.tablestandar1.Visible :=true;
frm_main.Member1.Visible :=true;
frm_main.Operator1.Visible :=true;
frm_main.Transaksi1.Visible :=true;
frm_main.Katalog1.Visible :=true;
frm_main.sirkulasi1.Visible :=true;
frm_main.Laporan1.Visible :=true;
//cek bagian (Katalog, Sirkulasi, dll) case cmb_status.ItemIndex of
0 : begin
frm_main.Master1.Visible :=false;
frm_main.Laporan1.Visible :=false;
frm_main.sirkulasi1.Visible :=false;
end;
1 : begin
frm_main.Master1.Visible :=false;
frm_main.Laporan1.Visible :=false;
frm_main.Katalog1.Visible :=false;
end;
2 : begin
frm_main.Transaksi1.Visible :=false;
frm_main.tablestandar1.Visible :=false;
frm_main.Member1.Visible :=false;
frm_main.Operator1.Visible :=false;
frm_main.Laporan1.Visible :=false;
end;
end;
modalresult:=mrok;
frm_main.Show;
end else begin
//jika status salah
messagedlg('Bagian tidak sesuai !!!',mtError,[mbok],0);
cmb_status.ItemIndex :=0;
cmb_status.SetFocus;
end;
end else begin
//jika password salah
messagedlg('Input Password Salah !!!',mtError,[mbok],0);
edt_password.Text :='';
edt_password.SetFocus;
end;
end else begin
//jika username salah
messagedlg('Input Username Salah !!!',mtError,[mbOK],0);
edt_password.Text :='';
edt_username.Text :='';
cmb_status.ItemIndex :=0;
edt_username.SetFocus;
end;
Query1.close;
end;
Form Main
Form ini akan ditampilkan apabila username, password dan status yang
diinputkan pada form login sudah benar. Form ini berisi menu lengkap yang
terdiri dari File, Master, Transaksi, Laporan dan Help. Pada menu ini terdapat
sub menu- sub menu lain. Pada saat login berhasil, form main akan mengupdate
beberapa data yang perlu. Berikut adalah data yang perlu diupdate saat program dipanggil:
procedure Tfrm_main.UpdateDataSirkulasi;
var
lama_terlambat : integer;
biaya_denda, total_denda : Currency;
begin
//cari data pinjaman yg terlambat dikembalikan Query1.Close;
Query1.SQL.Text :='select p.*, ''Buku'' as Jenis '+
'from table_pinjam p, table_buku_av ba, table_judul_buku jb '+
'where p.kode_pinjaman=ba.no_induk and ba.no_katalog=jb.no_katalog and '+
'p.tgl_batas_kembali<:p1 '+
'UNION '+
'select p.*, jna.bentuk_av as Jenis '+
'from table_pinjam p, table_buku_av ba, table_judul_av jda, table_jenis_av jna '+
'where p.kode_pinjaman=ba.no_induk and ba.no_katalog=jda.kode_av and '+
'jda.kode_jenis_av=jna.kode_jenis_av and p.tgl_batas_kembali<:p1 ';
Query1.ParamByName('p1').AsDateTime :=date;
Query1.Open;
while not query1.Eof do begin
//hitung brp lama keterlambatan
lama_terlambat :=DaysBetween(date,
Query1.fieldbyname('tgl_batas_kembali').AsDateTime);
//lama keterlambatan dlm satuan minggu lama_terlambat :=ceil(lama_terlambat/7);
//ambil biaya denda (berbeda, berdsrkan jenis) Query2.Close;
Query2.SQL.Text :='select nilai from table_standar where standar=:p1';
if Query1.FieldByName('Jenis').AsString='Buku' then Query2.ParamByName('p1').AsString :='denda_buku'
else if Query1.FieldByName('Jenis').AsString='Kaset' then Query2.ParamByName('p1').AsString :='denda_kaset'
else if Query1.FieldByName('Jenis').AsString='Compact Disc' then Query2.ParamByName('p1').AsString :='denda_cd'
else if Query1.FieldByName('Jenis').AsString='Video Compact Disc' then Query2.ParamByName('p1').AsString :='denda_vcd';
Query2.Open;
biaya_denda :=Query2.fieldbyname('nilai').AsCurrency;
//hitung total denda
total_denda :=lama_terlambat * biaya_denda;
//update besar dan status denda
Query2.Close;
Query2.SQL.Text :='update table_pinjam set denda=:p1, status_denda=''Tunggakan'' where kode_pinjaman=:p2';
Query2.ParamByName('p1').AsCurrency :=total_denda;
Query2.ParamByName('p2').AsString
:=Query1.fieldbyname('kode_pinjaman').AsString;
Query2.ExecSQL;
Query1.Next;
end;
//hapus data pesanan yg sdh melewati tgl batas pesanan Query1.Close;
Query1.SQL.Text :='delete from table_pesan where tgl_batas_pesan<:p1';
Query1.ParamByName('p1').AsDateTime :=date;
Query1.ExecSQL;
end;
Contoh program pada form main yang memanggil sub-sub menu, dapat dilihat seperti di bawah ini:
procedure Tfrm_main.Logout1Click(Sender: TObject);
begin
frm_main.Hide;
frm_login.ShowModal;
end;
procedure Tfrm_main.Exit1Click(Sender: TObject);
begin close;
end;
procedure Tfrm_main.Member1Click(Sender: TObject);
begin
frm_data_member.ShowModal;
end;
procedure Tfrm_main.About1Click(Sender: TObject);
begin
frm_about.ShowModal;
end;
procedure Tfrm_main.Tablebukuav1Click(Sender: TObject);
begin
frm_table_buku_av.ShowModal;
end;
procedure Tfrm_main.Table_judulav1Click(Sender: TObject);
begin
with frm_table_judul_av do begin
btn_new.Enabled:=true;
btn_delete.Enabled:=true;
btn_edit.Enabled:=true;
mode:='normal';
ShowModal;
end;
end;
procedure Tfrm_main.Tablejenisav1Click(Sender: TObject);
begin
frm_table_jenis_av.ShowModal;
end;
procedure Tfrm_main.tablestandar1Click(Sender: TObject);
begin
frm_table_standar.ShowModal;
end;
procedure Tfrm_main.tablesubyek1Click(Sender: TObject);
begin
with frm_table_subyek do begin
btn_new.Enabled:=true;
btn_delete.Enabled:=true;
btn_edit.Enabled:=true;
btn_close.Enabled:=true;
mode :='normal';
ShowModal;
end;
end;
procedure Tfrm_main.Tablepenerbit1Click(Sender: TObject);
begin
frm_table_penerbit.ShowModal;
end;
procedure Tfrm_main.Table_judul1Click(Sender: TObject);
begin
with frm_table_judul_buku do begin
btn_new.Enabled:=true;
btn_delete.Enabled:=true;
btn_edit.Enabled:=true;
mode:='normal';
ShowModal;
end;
end;
procedure Tfrm_main.Katalog1Click(Sender: TObject);
begin
frm_data_katalog.ShowModal;
end;
procedure Tfrm_main.Operator1Click(Sender: TObject);
begin
frm_table_operator.ShowModal;
end;
Form Master Member
Form ini digunakan untuk menyaring, menambah, menghapus dan merubah data member perpustakaan serta menutup form master member yang telah dibuka. Form ini ditunjukkan oleh gambar 4.6. berikut ini
Gambar 4.6. Bentuk form master member
program dibawah ini digunakan untuk melakukan pencarian data member perpustakaan berdasarkan field yang telah diisi pada form master member.
Program ini dapat mencari data pada tabel member berdasarkan kode member,
nama member, komisi, alamat, kota, telp, hp, fax, email, kode pos, tanggal daftar,
tanggal selesai dan deskripsi.
procedure Tfrm_data_member.SetupSQL;
var
where:string;
begin
where:='';
if chb_kode.Checked then
where:=where+' Kode_Member like ''%'+edt_kode.text+'%'' and ';
if chb_nama.Checked then where:=where+' Nama_Member like ''%'+edt_nama.text+'%'' and ';
if chb_komisi.Checked then where:=where+' Komisi like ''%'+cmb_komisi.text+'%'' and ';
if chb_alamat.Checked then where:=where+' alamat like ''%'+edt_alamat.text+'%'' and ';
if chb_kota.Checked then where:=where+' kota like ''%'+edt_kota.text+'%'' and ';
if chb_tgl_daftar.Checked then where:=where+'tgl_daftar>=:t1 and tgl_daftar<=:t2 and ';
if chb_tgl_selesai.Checked then where:=where+'tgl_selesai>=:t3 and tgl_selesai<=:t4 and ';
if chb_telp.Checked then where:=where+' telp like ''%'+edt_telp.text+'%'' and ';
if chb_hp.Checked then where:=where+' hp like ''%'+edt_hp.text+'%'' and ';
if chb_fax.Checked then where:=where+' fax like ''%'+edt_fax.text+'%'' and ';
if chb_email.Checked then where:=where+' email like ''%'+edt_email.text+'%'' and ';
if chb_kodepos.Checked then where:=where+' kodepos like ''%'+edt_kodepos.text+'%'' and ';
if where<>'' then //memeriksa apakah where ada isi begin
delete(where, length(where)-4, 4); //hapus variabel where dr posisi 4 dr belakang sebanyak 4 text atau menghapus tulisan 'and' where :=' where '+where;//var where diisi kata where dan isi var where
end;
TQuery(dbg_m.DataSource.DataSet{mengakses datasource dari Dbgrid master yi sql_m1}).SQL.Text:=sql_awal+where;
//isi parameter tgl daftar if chb_tgl_daftar.checked then begin
TQuery(dbg_m.DataSource.DataSet).parambyname('t1').AsDateTime:=dtp _tgl_daftar1.DateTime;
TQuery(dbg_m.DataSource.DataSet).parambyname('t2').AsDateTime:=dtp _tgl_daftar2.DateTime;
end;
//isi parameter tgl selesai if chb_tgl_selesai.checked then begin
TQuery(dbg_m.DataSource.DataSet).parambyname('t3').AsDateTime:=dtp
_tgl_selesai1.DateTime;
TQuery(dbg_m.DataSource.DataSet).parambyname('t4').AsDateTime:=dtp _tgl_selesai2.DateTime;
end;
end;
Dengan penekanan tombol new dan edit pada form data member, maka akan ditampilkan form isian member seperti berikut ini:
Gambar 4.6. Bentuk form input member baru
Form input dan edit adalah sama. Yang menjadi perbedaan antara form input dan edit data member adalah judul form dan isi form, jika pada inputan data member mempunyai judul form input data member, maka edit member mempunyai judul form edit data member. Perbedaan yang kedua adalah saat kita menekan tombol new, maka tiap nilai DBEdit adalah kosong (‘’); tetapi nilai DBEdit adalah data terakhir yang dipilih untuk penekanan tombol edit.
Di dalam mengisikan member baru, diperlakukan fungsi generate kode member. Berikut adalah program fungsi tersebut:
procedure Tfrm_isian_member.dbe_nama_memberChange(Sender:
TObject);
var
s,ch:string;
ct:byte;
begin
if (dbe_nama_member.text<>'') and
(copy(dbe_nama_member.text,1,1)<>' ') then begin
s:=copy(dbe_nama_member.text,1,1);
s:=uppercase(s);
//tambahkan no pada kode ct:=1;
table1.open;
while not table1.EOF do begin
if copy(table1.fieldbyname('kode_member').asstring,1,1)=s then
if
strtoint(copy(table1.fieldbyname('kode_member').asstring,2,3))=ct then
inc(ct);
table1.next;
end;
table1.close;
ch:=inttostr(ct);
while length(ch)<3 do ch:='0'+ch;
s:=s+ch;
dbe_kode_member.text:=s;
end;
end;
Sedangkan untuk menginputkan data anggota yang akan diisikan pada form isian member dan setelah itu merefresh tabel member yang ada pada form master member, dapat dilihat pada program di bawah ini:
procedure Tfrm_data_member.btn_newClick(Sender: TObject);
var Month,Day,Year:word;
begin
with frm_isian_member do begin
jns_form:=1;
TQuery(dbe_kode_member.DataSource.DataSet).ParamByName('kode_membe r').AsString := '';
DateTimePicker1.Date:=date;
DecodeDate(Date,Year,Month,Day);
inc(Year);
DateTimePicker2.Date:=EncodeDate(Year, Month, Day);
showmodal;
end;
refresh;
end;
Program di bawah ini untuk mengedit data member yang telah dipilih menjadi sesuai dengan data member yang baru diisikan pada form edit member lalu merefresh tabel member yang ada pada form master member.
procedure Tfrm_data_member.btn_editClick(Sender: TObject);
begin
if not dbg_m.DataSource.DataSet.Eof then begin
with frm_isian_member do begin
jns_form:=2;
TQuery(dbe_kode_member.DataSource.DataSet).ParamByName('kode_membe r').AsString
:=self.dbg_m.DataSource.DataSet.FieldByName('kode_member').asstrin g;
showmodal;
end;
refresh;
end else
showmessage('Data tidak ada.');
end;
Jika menekan tombol new atau edit, maka akan ditampilkan form isian member dimana perintah new akan menampilkan form isian member dalam keadaan kosong sedangkan perintah edit akan menampilkan form isian member dengan data lama yang dipilih. Berikut adalah program yang dijalankan bila telah melakukan pengisian pada form isian member:
procedure Tfrm_isian_member.btn_okClick(Sender: TObject);
begin
if dbe_kode_member.Text = '' then
showmessage('Kode Member belum diisi') else
if dbe_nama_member.Text = '' then
showmessage('Nama Member belum diisi') else
begin
TQuery(dbe_kode_member.DataSource.DataSet).FieldByName('tgl_daftar ').AsDateTime :=DateTimePicker1.Date;
TQuery(dbe_kode_member.DataSource.DataSet).FieldByName('tgl_selesa
i').AsDateTime :=DateTimePicker2.Date;
TQuery(dbe_kode_member.DataSource.DataSet).ApplyUpdates;
close;
end;
end;
Program dibawah ini berfungsi untuk menghapus data member dari tabel member berdasarkan data yang telah dipilih oleh user. Sebelumnya data benar- benar dihapus dari database, user dipastikan apakah akan menghapus member tersebut.
procedure Tfrm_data_member.btn_deleteClick(Sender: TObject);
begin
if not dbg_m.DataSource.DataSet.Eof then begin
if messagedlg('Delete record ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
//delete record
TQuery(dbg_m.DataSource.DataSet).Delete;
TQuery(dbg_m.DataSource.DataSet).ApplyUpdates;
refresh;
end;
end else
showmessage('Data tidak ada.');
end;
Program di bawah ini digunakan untuk mengembalikan ke bentuk default atau menampilkan kembali semua data member yang sebelumnya telah disaring lalu merefresh DBGrid master member.
procedure Tfrm_data_member.SpeedButton2Click(Sender: TObject);
begin
chb_kode.Checked :=false;
chb_nama.Checked :=false;
chb_komisi.Checked :=false;
chb_alamat.Checked :=false;
chb_kota.Checked :=false;
chb_telp.Checked :=false;
chb_hp.Checked :=false;
chb_fax.Checked :=false;
chb_email.Checked :=false;
chb_kodepos.Checked :=false;
chb_tgl_daftar.Checked :=false;
chb_tgl_selesai.Checked :=false;
edt_kode.text :='';
edt_nama.text :='';
cmb_komisi.ItemIndex :=0;
edt_alamat.text :='';
edt_kota.text :='';
edt_telp.text :='';
edt_hp.text :='';
edt_fax.text :='';
edt_email.text :='';
edt_kodepos.text :='';
//set tgl daftar & tgl selesai dtp_tgl_daftar1.Date :=Date;
dtp_tgl_daftar2.Date :=Date;
dtp_tgl_selesai1.Date :=Date;
dtp_tgl_selesai2.Date :=Date;
refresh;
end;
Di bawah ini adalah bentuk laporan member yang akan ditampilkan.
Gambar 4.8. Bentuk form laporan member
Program di bawah ini digunakan untuk menampilkan laporan seluruh
anggota member dari tabel member beserta username yang saat itu login dan
tanggal hari itu.
procedure Tfrm_data_member.SpeedButton1Click(Sender: TObject);
begin
frm_laporan_member.QuickRep1.Preview;
end;
Perintah-perintah pada menu Master: Data Subyek Judul, Data Penerbit, Jenis Audio Visual, Data Standar, Operator secara garis besar memiliki kode program yang serupa. Disamping itu juga mempunyai cara kerja/penggunaan yang konsisten untuk memudahkan user.
Form Master Judul buku.
Form ini adalah form yang akan dipanggil oleh form buku av bila terjadi penambahan buku baru. Di dalam form akan ada dilakukan pemilihan subyek buku dengan memanggil form subyek. Berikut ini adalah program untuk memanggil form subyek saat melakukan pengisian judul buku baru:
procedure Tfrm_isian_table_judul_buku.dbg_mEditButtonClick(
Sender: TObject);
begin
with frm_table_subyek do begin
mode :='browse';
btn_new.Enabled:=false;
btn_edit.Enabled:=false;
btn_delete.Enabled:=false;
btn_close.Enabled:=false;
ShowModal;
Self.dbg_m.DataSource.DataSet.Edit;
Self.dbg_m.DataSource.DataSet.FieldByName('no_katalog').AsString :=dbe_no_katalog.Text;
Self.dbg_m.DataSource.DataSet.FieldByName('kode_subyek').AsString :=kode_subyek;
Self.dbg_m.DataSource.DataSet.FieldByName('nama_subyek').AsString :=nama_subyek;
end;
end;
Tombol yang digunakan untuk melakukan transaksi diatas menggunakan
mode browse. Fungsi browse digunakan untuk memudahkan pengambilan data
penerbit atau subyek sehingga data tidak perlu diketik, hal ini membantu untuk menghindari salah ketik.
Form Master Data Buku dan Audio Visual
Terdapat master lain yang bentuk penyaringannya sedikit berbeda dengan master member diatas, yaitu master data koleksi buku dan audio visual.
Dibawah ini adalah program penyaringan pada master data koleksi buku dan audio visual:
procedure Tfrm_table_buku_av.SetupSQL;
begin
if chb_no_katalog.Checked then
TQuery(dbg_m.DataSource.DataSet).ParamByName('no_katalog').AsSt ring :='%'+edt_no_katalog.Text+'%'
else
TQuery(dbg_m.DataSource.DataSet).ParamByName('no_katalog').AsSt ring :='%';
if chb_no_induk.Checked then
TQuery(dbg_m.DataSource.DataSet).ParamByName('no_induk').AsStri ng :='%'+edt_no_induk.Text+'%'
else
TQuery(dbg_m.DataSource.DataSet).ParamByName('no_induk').AsStri ng :='%';
if chb_keterangan.Checked then
TQuery(dbg_m.DataSource.DataSet).ParamByName('keterangan').AsSt ring :='%'+cmb_keterangan.Text+'%'
else
TQuery(dbg_m.DataSource.DataSet).ParamByName('keterangan').AsSt ring :='%';
if chb_judul.Checked then
TQuery(dbg_m.DataSource.DataSet).ParamByName('judul').AsString :='%'+edt_judul.Text+'%'
else
TQuery(dbg_m.DataSource.DataSet).ParamByName('judul').AsString :='%';
end;
Pada procedure SetupSQL dalam master data koleksi buku dan audio visual, pengecekan penyaringan adalah sama, tetapi menggunakan metode yang berbeda karena dirasa lebih mudah penggunaannya pada query berparameter.
Sedangkan pada inputan dan edit master koleksi data buku dan audio
visual juga terdapat sedikit perbedaan dengan master yang lain. Di bawah ini akan
ditampilkan gambar form inputan dan edit master koleksi data buku dan audio
visual.
Gambar 4.9. Bentuk form input data buku dan audio visual
Akibat hubungan many to many antara tabel subyek dengan tabel buku dan tabel audio visual, maka muncul tabel baru. Kedua tabel ini diberi nama tabel judul buku subyek dan tabel judul av subyek.
Berikut akan ditampilkan perintah sql dari master data buku dan audio visual:
a. sql_m1 adalah query yang melakukan pemanggilan-pemanggilan komponen- komponen field yang diperlukan untuk ditampilkan pada DBGrid. Berikut adalah perintah query tersebut:
select ba.*, jb.judul_seri, jb.nama_pengarang_utama, 'Buku' as Jenis
from Table_buku_av ba, table_judul_buku jb where ba.no_katalog=jb.no_katalog and
(ba.no_induk like :no_induk and ba.no_katalog like :no_katalog and
ba.keterangan like :keterangan and jb.judul_seri like :judul)
UNION
select ba.*, jda.judul_av, jda.penyanyi, jna.bentuk_av as Jenis
from Table_buku_av ba, table_judul_av jda, table_jenis_av jna where ba.no_katalog=jda.kode_av and
jda.kode_jenis_av=jna.kode_jenis_av and
(ba.no_induk like :no_induk and ba.no_katalog like :no_katalog and
ba.keterangan like :keterangan and jda.judul_av like :judul)
Dari perintah tersebut diatas, akan dipilih semua master data koleksi buku dan audio visual dari table_buku_av, field yang ditampilkan adalah: judul seri, nama pengarang utama dari tabel judul buku, dan membuat field jenis yang isinya buku. Union merupakan salah satu perintah sql untuk menggabungkan tabel buku dan tabel audio visual. Di dalam perintah ini, akan dipanggil semua field dari tabel buku dan audio visual, field judul av dan penyanyi dari tabel judul av, dll.
b. sql_m2 adalah query untuk melakukan insert dan edit data koleksi buku dan audio visual. Inilah perintah query tersebut:
Perintah query insert:
insert into table_buku_av
(no_induk, no_katalog, keterangan, deskripsi) values
(:no_induk, :no_katalog, :keterangan, :deskripsi)
Perintah query update/edit : update table_buku_av set
no_katalog = :no_katalog, keterangan = :keterangan, deskripsi = :deskripsi where
no_induk = :OLD_no_induk
Untuk penginputan, penghapusan, perubahan dan menutup form data
master buku dan audio visual, hampir sama dengan program penginputan,
penghapusan, perubahan dan penutupan form master member diatas.
Form Transaksi Sirkulasi
Form transaksi sirkulasi digunakan untuk mencatatkan semua aktivitas sirkulasi, seperti peminjaman, perpanjangan, pengembalian dan pemesanan koleksi bahan pustaka. Di bawah ini adalah form untuk penyaringan berdasarkan atas kode member dan no induk koleksi bahan pustaka. Kedua pencarian tersebut menampilkan data anggota perpustakaan pada DBText. Pencarian berdasarkan kode member menampilkan data anggota pada DBText, sedangkan pencarian berdasarkan no induk menampilkan data anggota yang sedang melakukan peminjaman koleksi bahan pustaka tersebut. Di bawah ini akan ditampilkan gambar form transaksi sirkulasi:
Gambar 4.10. Bentuk form transaksi sirkulasi
Di bawah adalah program pencarian anggota perpustakaan berdasarkan kedua
dasar pencarian diatas:
procedure Tfrm_data_sirkulasi.btn_searchClick(Sender: TObject);
var
kode_member : string;
begin
//jika pencarian berdsrkan kode member if cmb_by.ItemIndex=0 then
kode_member :=edt_keyword.Text else
begin
with dtm_sirkulasi do begin
Query1.Close;
Query1.SQL.Text :='select kode_member from table_pinjam where kode_pinjaman=:p1';
Query1.ParamByName('p1').AsString :=edt_keyword.Text;
Query1.Open;
kode_member :=Query1.fieldbyname('kode_member').AsString;
end;
end;
//tampilkan data member
dbt_kode.DataSource.DataSet.Close;
TQuery(dbt_kode.DataSource.DataSet).ParamByName('p1').AsString :=kode_member;
dbt_kode.DataSource.DataSet.Open;
//tampilkan data pinjaman dbg1.DataSource.DataSet.Close;
TQuery(dbg1.DataSource.DataSet).ParamByName('p1').AsString :=kode_member;
dbg1.DataSource.DataSet.Open;
//tampilkan data pesanan dbg2.DataSource.DataSet.Close;
TQuery(dbg2.DataSource.DataSet).ParamByName('p1').AsString :=kode_member;
dbg2.DataSource.DataSet.Open;
//jika data ditemukan
if not dbt_kode.DataSource.DataSet.Eof then begin
//aktifkan tombol2
btn_pinjam.Enabled :=true;
btn_kembali.Enabled :=true;
btn_perpanjang.Enabled :=true;
btn_batal_pinjam.Enabled :=true;
btn_bayar.Enabled :=true;
btn_pesan.Enabled :=true;
btn_batal_pesan.Enabled :=true;
end else begin
ShowMessage('Data Kode Member tidak ditemukan');
//non-aktifkan tombol2 btn_pinjam.Enabled :=false;
btn_kembali.Enabled :=false;
btn_perpanjang.Enabled :=false;
btn_batal_pinjam.Enabled :=false;
btn_bayar.Enabled :=false;
btn_pesan.Enabled :=false;
btn_batal_pesan.Enabled :=false;
end;
end;
Setelah berhasil menemukan kode anggota, maka tombol peminjaman, pengembalian, pemesanan, pengembalian dan pembayaran denda akan diaktifkan.
Di bawah ini adalah program yang akan memanggil procedure peminjaman, bila menekan tombol button pinjam:
procedure Tfrm_data_sirkulasi.btn_pinjamClick(Sender: TObject);
var
max_pinjam, jml_pinjam : integer;
begin
//cek apakah membership sdh habis if
dbt_kode.DataSource.DataSet.FieldByName('tgl_selesai').AsDateTime
>= date then begin
//cek apakah ada tunggakan with dtm_sirkulasi do begin
Query1.Close;
Query1.SQL.Text :='select * from table_pinjam where kode_member=:p1 and status_denda=''Tunggakan''';
Query1.ParamByName('p1').AsString :=dbt_kode.Caption;
Query1.Open;
//jika tdk ada tunggakan if query1.Eof then
begin
//cek apakah jml pinjaman sdh max
//ambil jml pinjaman yg diijinkan di table standar Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''max_pinjam''';
Query1.Open;
max_pinjam :=Query1.fieldbyname('nilai').AsInteger;
//ambil jml pinjaman member saat ini Query1.Close;
Query1.SQL.Text :='select count(*) as jum from
table_pinjam where kode_member='''+dbt_kode.DataSource.DataSet.fieldbyname('kode_memb
er').AsString+'''';
Query1.Open;
jml_pinjam :=Query1.fieldbyname('jum').AsInteger;
if jml_pinjam < max_pinjam then begin
with frm_isian_sirkulasi do begin
jns_form:=1;
showmodal;
end;
refresh;
end else
showmessage('Jumlah pinjaman sudah maksimum');
end else
showmessage('Tunggakan pinjaman belum dilunasi');
end;
end else
showmessage('Membership sudah habis');
end;
Data anggota yang meminjam koleksi bahan pustaka akan disimpan dalam tabel pinjam. Jika menekan tombol batal pinjam, maka data akan dihapus dari tabel pinjam. Koleksi bahan pustaka yang dipinjam akan ditampilkan pada DBGrid1. Pada program peminjaman ini akan dilakukan pengecekan apakah membership sdh habis, apakah ada tunggakan dan apakah jml pinjaman sdh max.
Di bawah ini adalah procedure yang akan dilakukan bila kita menekan button perpanjangan pada form sirkulasi:
procedure Tfrm_data_sirkulasi.btn_perpanjangClick(Sender:
TObject);
var
max_perpanjangan, lama_pinjam, count_perpanjangan : integer;
status_sirkulasi : string;
begin
//cek apakah membership sdh habis if
dbt_kode.DataSource.DataSet.FieldByName('tgl_selesai').AsDateTime
>= date then begin
//cek apakah ada tunggakan with dtm_sirkulasi do begin
Query1.Close;
Query1.SQL.Text :='select * from table_pinjam where kode_member=:p1 and status_denda=''Tunggakan''';
Query1.ParamByName('p1').AsString :=dbt_kode.Caption;
Query1.Open;
//jika tdk ada tunggakan if query1.Eof then
begin
//cek apakah koleksi tsb sdg dipesan Query1.Close;
Query1.SQL.Text :='select
p.kode_pesanan,p.kode_member,m.nama_member ' +
'from table_pesan p, table_member m ' + 'where p.kode_pesanan=:p1 and p.kode_member=m.kode_member';
Query1.ParamByName('p1').AsString
:=dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString;
Query1.Open;
//jika sdg tdk dipesan if query1.Eof then begin
//cek apakah sdh max perpanjangan
//ambil nilai max perpanjangan dr table standar Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''max_perpanjangan''';
Query1.Open;
max_perpanjangan
:=Query1.fieldbyname('nilai').AsInteger;
status_sirkulasi
:=dbg1.DataSource.DataSet.FieldByName('status_sirkulasi').AsString
;
if (status_sirkulasi='Peminjaman') or (strtoint(status_sirkulasi[length(status_sirkulasi)])<max_perpanja ngan) then
begin
if MessageDlg('Perpanjang koleksi:
'+dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString+#1 3+
dbg1.DataSource.DataSet.fieldbyname('judul_seri').AsString, mtConfirmation, [mbOK, mbCancel], 0)=mrOk then
begin
//ambil lama pinjam dr table standar Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''lama_pinjam''';
Query1.Open;
lama_pinjam :=Query1.fieldbyname('nilai').AsInteger;
//ambil jml perpanjangan saat ini if status_sirkulasi='Peminjaman' then count_perpanjangan :=0
else
count_perpanjangan
:=strtoint(status_sirkulasi[length(status_sirkulasi)]);
//lakukan perpanjangan koleksi
inc(count_perpanjangan);
Query1.Close;
Query1.SQL.Text :='update table_pinjam set tgl_batas_kembali=:p1,status_sirkulasi=:p2 where kode_pinjaman=:p3 and kode_member=:p4';
Query1.ParamByName('p1').AsDateTime :=Date+lama_pinjam;
Query1.ParamByName('p2').AsString :='Perpanjangan '+inttostr(count_perpanjangan);
Query1.ParamByName('p3').AsString
:=dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString;
Query1.ParamByName('p4').AsString :=dbt_kode.Caption;
Query1.ExecSQL;
refresh;
end;
end else
ShowMessage('Perpanjangan koleksi sdh maksimum');
end else
ShowMessage('Koleksi tersebut sedang dipesan oleh :
'+Query1.fieldbyname('kode_member').AsString+' : '+Query1.fieldbyname('nama_member').AsString);
end else
showmessage('Tunggakan pinjaman belum dilunasi');
end;
end else
showmessage('Membership sudah habis');
end;
Procedure diatas akan menambahkan waktu pengembalian koleksi tetapi tidak mengubah tanggal peminjamannya.
Di bawah ini adalah procedure yang akan dijalankan bila kita menekan button pengembalian yang ada dalam form transaksi sirkulasi:
procedure Tfrm_data_sirkulasi.btn_kembaliClick(Sender: TObject);
begin
//cek apakah koleksi yg akan dikembalikan ada tunggakan if
dbg1.DataSource.DataSet.FieldByName('status_denda').AsString<>'Tun ggakan' then
begin
//jika tdk ada tunggakan
if MessageDlg('Kembalikan koleksi:
'+dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString+#1 3+
dbg1.DataSource.DataSet.fieldbyname('judul_seri').AsString, mtConfirmation, [mbOK, mbCancel], 0)=mrOk then
begin
with dtm_sirkulasi do begin
//hapus data dr table pinjam Query1.Close;
Query1.SQL.Text :='delete from table_pinjam where kode_pinjaman=:p1 and kode_member=:p2';
Query1.ParamByName('p1').AsString
:=dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString;
Query1.ParamByName('p2').AsString
:=dbt_kode.DataSource.DataSet.fieldbyname('kode_member').AsString;
Query1.ExecSQL;
//input data ke table history pinjam Query1.Close;
Query1.SQL.Text :='insert into table_history_pinjam values(:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8)';
Query1.ParamByName('p1').AsString
:=dbg1.DataSource.DataSet.fieldbyname('kode_pinjaman').AsString;
Query1.ParamByName('p2').AsString
:=dbt_kode.DataSource.DataSet.fieldbyname('kode_member').AsString;
Query1.ParamByName('p3').AsDateTime
:=dbg1.DataSource.DataSet.fieldbyname('tgl_pinjam').AsDateTime;
Query1.ParamByName('p4').AsDateTime
:=dbg1.DataSource.DataSet.fieldbyname('tgl_batas_kembali').AsDateT ime;
Query1.ParamByName('p5').AsDateTime :=Date;
Query1.ParamByName('p6').AsCurrency
:=dbg1.DataSource.DataSet.fieldbyname('denda').AsCurrency;
Query1.ParamByName('p7').AsString
:=dbg1.DataSource.DataSet.fieldbyname('status_denda').AsString;
Query1.ParamByName('p8').AsString
:=dbg1.DataSource.DataSet.fieldbyname('status_sirkulasi').AsString
;
Query1.ExecSQL;
refresh;
end;
end;
end else
showmessage('Tunggakan pinjaman belum dilunasi');
end;
Program ini akan menghapus data pinjaman anggota tersebut pada
DBGrid1 dan mencatatkannya pada tabel history pinjam.
Di bawah ini adalah procedure yang akan dijalankan bila menekan button pemesanan:
procedure Tfrm_data_sirkulasi.btn_pesanClick(Sender: TObject);
var
max_pesan, jml_pesan : integer;
begin
//cek apakah membership sdh habis if
dbt_kode.DataSource.DataSet.FieldByName('tgl_selesai').AsDateTime
>= date then begin
//cek apakah ada tunggakan with dtm_sirkulasi do begin
Query1.Close;
Query1.SQL.Text :='select * from table_pinjam where kode_member=:p1 and status_denda=''Tunggakan''';
Query1.ParamByName('p1').AsString :=dbt_kode.Caption;
Query1.Open;
//jika tdk ada tunggakan if query1.Eof then
begin
//cek apakah jml pesanan sdh max
//ambil jml pesanan yg diijinkan di table standar Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''max_pesan''';
Query1.Open;
max_pesan :=Query1.fieldbyname('nilai').AsInteger;
//ambil jml pesanan member saat ini Query1.Close;
Query1.SQL.Text :='select count(*) as jum from table_pesan where
kode_member='''+dbt_kode.DataSource.DataSet.fieldbyname('kode_memb er').AsString+'''';
Query1.Open;
jml_pesan :=Query1.fieldbyname('jum').AsInteger;
if jml_pesan < max_pesan then begin
with frm_isian_sirkulasi do begin
jns_form:=2;
showmodal;
end;
refresh;
end else
showmessage('Jumlah pesanan sudah maksimum');
end else
showmessage('Tunggakan pinjaman belum dilunasi');
end;
end else
showmessage('Membership sudah habis');
end;
Setelah dapat melalui kondisi diatas, maka akan dicatat pemesanan atau peminjaman koleksi bahan pustaka. Di bawah ini adalah form inputan transaksi sirkulasi:
Gambar 4.11. Bentuk form inputan transaksi sirkulasi
Sebelum benar-benar disetujui, maka akan dilakukan pengecekan lagi untuk peminjaman dan pemesanan. Program pengecekan tersebut, seperti tampak di bawah ini:
procedure Tfrm_isian_sirkulasi.btn_okClick(Sender: TObject);
var
pinjam, pesan : boolean;
lama_pinjam, lama_pesan : integer;
kode_member, nama_member : string;
begin
if edt_no_induk.Text = '' then
showmessage('No Induk belum diisi')
else
begin
//jika melakukan peminjaman if jns_form=1 then
begin
//cek apakah no induk tsb sdg dipinjam with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select p.kode_pinjaman, m.kode_member, m.nama_member ' +
'from table_pinjam p, table_member m ' + 'where p.kode_pinjaman=:p1 and p.kode_member=m.kode_member';
Query1.ParamByName('p1').AsString :=edt_no_induk.Text;
Query1.Open;
if Query1.Eof then pinjam :=false else
begin
pinjam :=true;
kode_member
:=Query1.fieldbyname('kode_member').AsString;
nama_member
:=Query1.fieldbyname('nama_member').AsString;
end;
end;
if not pinjam then begin
//cek apakah no induk tsb sdg dipesan with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select p.kode_pesanan, m.kode_member, m.nama_member ' +
'from table_pesan p, table_member m ' +
'where p.kode_pesanan=:p1 and p.kode_member=m.kode_member';
Query1.ParamByName('p1').AsString :=edt_no_induk.Text;
Query1.Open;
if Query1.Eof then pesan :=false else
begin
pesan :=true;
kode_member
:=Query1.fieldbyname('kode_member').AsString;
nama_member
:=Query1.fieldbyname('nama_member').AsString;
end;
end;
if not pesan then begin
//ambil lama pinjam dr table standar with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''lama_pinjam''';
Query1.Open;
lama_pinjam :=Query1.fieldbyname('nilai').AsInteger;
//lakukan peminjaman koleksi Query1.Close;
Query1.SQL.Text :='insert into table_pinjam values(:p1,:p2,:p3,:p4,:p5,:p6,:p7)';
Query1.ParamByName('p1').AsString :=edt_no_induk.Text;
Query1.ParamByName('p2').AsString :=lb_kode_member.Caption;
Query1.ParamByName('p3').AsDateTime :=date;
Query1.ParamByName('p4').AsDateTime :=date+lama_pinjam;
Query1.ParamByName('p5').AsCurrency :=0;
Query1.ParamByName('p6').AsString :='Lunas';
Query1.ParamByName('p7').AsString :='Peminjaman';
Query1.ExecSQL;
frm_data_sirkulasi.refresh;
close;
end;
end else
ShowMessage('Koleksi dengan no induk tsb sudah dipesan oleh : '+kode_member+' - '+nama_member);
end else
ShowMessage('Koleksi dengan no induk tsb sudah dipinjam oleh : '+kode_member+' - '+nama_member);
end else begin
//jika melakukan pemesanan
//cek apakah no induk tsb sdg dipinjam with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select kode_pinjaman,kode_member from table_pinjam where kode_pinjaman='''+edt_no_induk.Text+'''';
Query1.Open;
if Query1.Eof then pinjam :=false else
begin
pinjam :=true;
kode_member
:=Query1.fieldbyname('kode_member').AsString;
end;
end;
if pinjam then begin
//cek apakah dipinjam oleh diri sendiri
if not(kode_member=lb_kode_member.Caption) then
begin
//cek apakah no induk tsb sudah dipesan org lain with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select p.kode_pesanan, m.kode_member, m.nama_member ' +
'from table_pesan p, table_member m ' +
'where p.kode_pesanan=:p1 and p.kode_member=m.kode_member';
Query1.ParamByName('p1').AsString :=edt_no_induk.Text;
Query1.Open;
if Query1.Eof then pesan :=false else
begin
pesan :=true;
kode_member
:=Query1.fieldbyname('kode_member').AsString;
nama_member
:=Query1.fieldbyname('nama_member').AsString;
end;
end;
if not pesan then begin
//ambil lama pesan dr table standar with dtm_sirkulasi do
begin
Query1.Close;
Query1.SQL.Text :='select nilai from table_standar where standar=''lama_pesan''';
Query1.Open;
lama_pesan :=Query1.fieldbyname('nilai').AsInteger;
//lakukan pemesanan koleksi Query1.Close;
Query1.SQL.Text :='insert into table_pesan values(:p1,:p2,:p3,:p4)';
Query1.ParamByName('p1').AsString :=edt_no_induk.Text;
Query1.ParamByName('p2').AsString :=lb_kode_member.Caption;
Query1.ParamByName('p3').AsDateTime :=date;
Query1.ParamByName('p4').AsDateTime :=date+lama_pesan;
Query1.ExecSQL;
frm_data_sirkulasi.refresh;
close;
end;
end else
ShowMessage('Koleksi dengan no induk tsb sudah dipesan oleh : '+kode_member+' - '+nama_member);
end
else
ShowMessage('Koleksi dengan no induk tsb sdg anda pinjam');
end else
ShowMessage('Koleksi dengan no induk tsb sedang tidak dipinjam');
end;
end;
end;
Program diatas akan benar-benar mencatatkan peminjaman dan pemesanan koleksi bahan pustaka oleh anggota perpustakaan. Data koleksi bahan pustaka yang dipinjam akan dicatat pada DBGrid1, sedang data koleksi bahan pustaka yang dipesan akan dicatatkan pada DBGrid2.
Form Transaksi katalog
Form transaksi katalog ini diperuntukkan bagi member perpustakaan,
tetapi selain itu form ini juga dapat dibuka oleh bagian admin. Form transaksi
katalog ini akan bisa mencari semua koleksi bahan pustaka yang diinginkan oleh
member. Berikut ini adalah gambar form transaksi katalog:
Gambar 4.12. Bentuk form transaksi katalog
Teknik untuk searching bahan pustaka adalah sama dengan teknik search yang sudah dilakukan pada form data master.
Bab ini akan membahas mengenai pengujian sistem dari sistem yang telah dibuat. Pengujian sistem ini bertujuan untuk mengetahui apakah masih ada yang kurang, atau masih ada kesalahan dari sistem yang telah dibuat.
Pengujian Login
Pada halaman pertama akan muncul login untuk user, agar dapat
mengakses aplikasi ini. Terdapat empat macam status login yaitu login untuk
katalog, sirkulasi, pengolahan & inventaris serta login untuk admin. Seperti pada
Gambar 5.1.
Gambar 5.1. Gambar Form Login
Apabila username, password atau status yang dimasukkan dalam form login tidak sesuai atau tidak terdapat dalam database, maka akan keluar pesan seperti pada gambar 5.2.
Dibawah ini adalah contoh tampilan apabila status yang diinputkan pada saat login tidak sesuai atau tidak terdapat dalam database.
Gambar 5.2. Pesan Kesalahan Login
Pengujian Input dan Edit member
Input member hanya dapat dilakukan oleh admin saja, dengan memilih
menu master-operator dan klik new pada form tabel operator. Di bawah ini adalah
contoh bentuk form input member:
Gambar 5.3. Form Input Member
Kemudian dengan mengklik tombol OK maka data ini akan masuk ke dalam tabel member pada database SolomonHall.
Jika mengklik tombol edit maka akan keluar Form seperti gambar 5.4
yang semua data fieldnya sesuai dengan data pada dbgrid yang dipilih. Kemudian
data ini dapat diubah-ubah.
Gambar 5.4. Form Edit Member
Kemudian dengan mengklik tombol OK maka data ini akan diupdate/diganti dengan data yang baru dirubah.
Pengujian Search Member dan Hapus Data Member
Admin dapat mencari member yang diinginkan dengan mengklik menu
master kemudian member. Akan keluar form data member seperti gambar 5.5.
Gambar 5.5. Gambar Form Search member
Jika menekan tombol delete, maka data yang terpilih di DBgrid akan dihapus. Sebelum data yang dipilih dihapus dari tabel, maka akan diberi konfirmasi untuk memastikannya, seperti gambar 5.6.
Gambar 5.6. Gambar Delete Data Member
Pengujian Form Master Buku dan Audio Visual
Bentuk form untuk input data buku dan audio visual akan diperlihatkan di bawah ini:
Gambar 5.7. Gambar form input buku atau audio visual baru
Pengujian Form Data Transaksi Sirkulasi
Input transaksi sirkulasi dapat dilakukan oleh bagian sirkulasi dan admin, dimana bagian sirkulasi dan admin harus login terlebih dahulu. Setelah memasuki form main dapat melakukan pilihan sub menu transaksi dan klik bagian sirkulasi.
Form transaksi akan muncul seperti gambar 5.8. berikut:
Gambar 5.8. Gambar form transaksi sirkulasi
Jika pencarian kode member yang dilakukan berdasarkan kode member atau no. induk tidak ada, maka akan muncul pesan sebagai berikut ini:
Gambar 5.9. Pesan input kode member tidak berhasil
Jikalau pencarian berdasarkan kode member atau no. induk berhasil,
maka akan diaktifkan tombol peminjaman, perpanjangan, pengembalian dan
pemesanan serta tombol-tombol yang lain seperti tampak pada gambar di bawah
ini:
Gambar 5.10. Gambar form transaksi sirkulasi saat input berhasil
Pengujian transaksi peminjaman
Setelah tombol-tombol pada form transaksi sirkulasi dapat ditekan, maka pertama-tama akan dilakukan pengujian pada tombol peminjaman. Pada saat kita menekan tombol peminjaman, maka akan dilakukan pengecekan antara lain:
a. Apakah keanggotaan yang berlaku 1 tahun sudah expired? Untuk mengetahui
tanggal kadaluarsa member, maka perlu diadakan hubungan dengan tabel
member. Di bawah ini akan ditampilkan pesan bahwa keanggotaan sudah
expired:
Gambar 5.11. Peringatan membership sudah habis
b. Apakah ada tunggakan? Untuk mengetahui status ‘tunggakan’, maka perlu dihubungkan dengan field kode_member dan status pinjam dari tabel pinjam.
Akan muncul pesan ‘Tunggakan pinjaman belum dilunasi’ bila memang ada tunggakan. Di bawah ini akan ditampilkan pesan larangan pinjam karena adanya tunggakan:
Gambar 5.12. Peringatan adanya tunggakan
c. Apakah koleksi bahan pustaka yang dipinjam sudah maksimal? Untuk
pengecekan ini maka perlu untuk berhubungan dengan tabel standar yang
mencatat setiap standar yang berlaku dalam perpustakaan. Di bawah ini akan
ditampilkan display yang menampilkan pesan bahwa pinjaman sudah
maksimal:
Gambar 5.13. Peringatan pinjaman koleksi sudah maksimal
Jika melewati semua kondisi diatas maka anggota dapat melakukan peminjaman. Di bawah ini akan ditampilkan form yang akan ditampilkan ketika klik tombol peminjaman:
Gambar 5.14. Gambar form inputan peminjaman
Jika sudah sudah dapat melewati semua kondisi diatas dan dapat melakukan peminjaman maka sebelum disetujui maka akan dilakukan pengecekan lagi seperti berikut ini:
a. apakah no induk tsb sdg dipinjam? Untuk mengetahui apakah no induk tersebut
sedang dipinjam atau tidak, maka perlu dihubungkan dengan tabel pinjam dan
tabel member untuk mengetahui kode pinjaman dan detil peminjam koleksi bahan pustaka tersebut. Jika koleksi tersebut memang dipinjam, maka akan ditampilkan pesan ‘Koleksi dengan no induk tsb sudah dipinjam oleh : '. Di bawah ini akan ditampilkan pesan seperti diatas:
Gambar 5.15. Peringatan bahwa no induk yang dicari sedang dipinjam
b. apakah no induk tsb sdg dipesan? Untuk mengetahui apakah no induk tersebut sedang dipesan atau tidak, maka perlu dihubungkan dengan tabel pesan dan tabel member untuk mengetahui kode pesanan dan detil pemesan koleksi bahan pustaka tersebut. Jika koleksi tersebut memang dipesan, maka akan ditampilkan pesan ‘Koleksi dengan no induk tsb sudah dipesan oleh : '. Di bawah ini akan ditampilkan pesan seperti diatas:
Gambar 5.16. Peringatan no induk sedang dipesan
Pengujian transaksi perpanjangan
Di dalam tombol peminjaman ini akan diadakan pengecekan sebagai berikut:
a. Apakah koleksi tersebut sedang dipinjam? Untuk mengetahui kode pesanan dan
anggota yang meminjam, maka perlu untuk dihubungkan dengan tabel pesan
dan tabel member. Di bawah ini akan ditampilkan pesan bahwa koleksi yang akan diperpanjang sedang dipesan:
Gambar 5.17. Koleksi yang akan diperpanjang sedang dipesan
b. Apakah sudah maksimal dalam melakukan perpanjangan? Untuk melakukan pengecekan ini maka perlu dihubungkan dengan tabel standar.
Di bawah ini akan ditampilkan form pesan bahwa perpanjangan sudah maksimal:
Gambar 5.18. Pesan perpanjangan koleksi sudah maksimal
Pengujian transaksi pengembalian
Pada saat anggota perpustakaan mengembalikan koleksi bahan pustaka yang dipinjam, maka akan dilakukan pengecekan apakah ada tunggakan yang masih belum dilunasi? Jika tidak ada tunggakan, maka data koleksi dan member akan dihapus dari DBGrid peminjaman dan disimpan dalam Tabel history pinjam. Pesan adanya tunggakan dapat dilihat di gambar 5.12.