Anda di halaman 1dari 30

APLIKASI PENJUALAN SOUVENIR MENGGUNAKAN VB.

NET 2005 Laporan Ini Disusun untuk Memenuhi Tugas Mata Kuliah Pemrograman Visual Client Server

Oleh: Nama NIM : Yan Fi :41508120094

TEKNIK INFORMATIKA UNIVERSITAS MERCU BUANA JAKARTA 2012

PERANCANGAN APLIKASI Persyaratan Software: Microsoft Visual Studio 2005 Microsoft Access.

Toolbox VB.net yang digunakan: Common Control: Data: DataGridView Components: Timer Printing: PrintDialog PrintDocument PrintPreviewDialog Button Label Picture box

Struktur Database: Table Stock:

Gb.1.a Table Stock

Table Penjualan:

Gb.1.b Table Penjualan

Masing-masing product / barang dapat memiliki beberapa kali penjualan. Karena itu, dibuat table stock dan table penjualan secara terpisah dengan hubungan one to many.

Diagram Block

1 2 3 5 7 11 13 15 18 19 20 8 4 6 9 12 14 16 21 22 23 24 30 10 17 25 26 27 28 29

31

Gb.2. Diagram Block Keterangan: 1. Judul Aplikasi 2. Tampilan Waktu 3. Kode Product 4. Tempat pengisian kode product 5. Nama Product 6. Tempat pengisian nama product 7. Quantity dari produk / barang yang ingin dibeli 8. Tempat pengisian quantity 9. Unit atau Satuan 10. Tempat pengisian unit atau satuan 11. Harga satuan barang

12. Tempat pengisian harga satuan barang 13. Total harga 14. Tempat pengisian Total harga 15. Total harga yang sudah dikonversikan ke bentuk terbilang 16. Tempat pengisian total harga dalam bentuk terbilang 17. Tampilan gambar 18. Button Navigasi untuk menunjuk pada record paling awal. 19. Button Navigasi untuk menunjuk ke record sebelumnya. 20. Button Navigasi untuk menunjuk ke record selanjutnya. 21. Button Navigasi untuk menunjuk ke record paling akhir. 22. Button calculate. 23. Button buy it 24. Button print bill 25. Button new 26. Button commit 27. Button update 28. Button cancel 29. Button delete 30. Button exit 31. Datagrid.

ALGORITMA DAN KODE PROGRAM

Gb.3.a Source Code Form Load and Timer Dari source code di atas, pada saat form sedang loading, maka 1. sistem akan melakukan koneksi dengan database. Dalam hal ini, kita menggunakan microsoft Access sebagai database. 2. Setelah koneksi sudah ada, sistem akan memilih semua isi dari database 3. Sumber untuk dataGrid dari table stock pada database. 4. Inc dan MaxRows berfungsi untuk melakukan navigasi. 5. Tampilan waktu akan ada ketika form loading, dan agar waktu bisa berjalan terus maka perlu adanya timer.

Code di atas artinya now dalam bentuk format: dddd dd MMM yyyy Now.ToLongTimeString = hari = tanggal bulan tahun, contoh: 23 Feb 2012 = jam, menit, detik.

vbCrLf berfungsi untuk mengatur agar pindah baris.

Gb. 3.b Source code NavigateRecords

Berdasarkan source code NavigateRecords, penjelasannya: 1. Deklarasi variable untuk digunakan hanya di dalam subroutine ini. 2. Textkode, textnama, textsatuan, textHjual diambil dari database dengan nama table: tableStock dan setiap rowsnya dihitung dengan inc yang sudah dicantumkan pada code Form_Load, dan berdasarkan item atau kolom masing-masing. 3. txtHJual.text merupakan harga jual setiap barang. Dalam hal ini, bertipe string padahal ini merupakan harga dalam satuan Rupiah. Karena itu, untuk menampilkan nilai dari text tersebut dalam bentuk currency, maka ditulis dalam bentuk Format (Val (txtHJual.text),Rp #,##.00) 4. untuk menampilkan picturebox sesuai dengan barang yang muncul, maka source code:

Jika kode barang kosong, maka image tidak akan muncul. Sedangkan bila kode barang sudah terisi, maka program akan mencari gambar di dalam path sesuai dengan yang tercantum pada picpat. Picpat adalah picture path yang variablenya sudah dideklarasikan sebelumnya.

5. TxtTerbilang, quantity, dan total diberikan agar bila ada yang membeli barang pada record sebelumnya, isi perhitungan tidak muncul lagi pada aplikasi untuk record yang selanjutnya.

Gb.3.c Source code Tombol navigasi Setiap tombol navigasi akan memanggil subroutine dari NavigateRecords.

Gb.3.d Source Code Tombol New Penjelasan untuk source code tombol New: Pada saat tombol new diklik, tombol commit akan enabled sedangkan tombol new, update, delete menjadi disable. Semua text dan Gambar akan diberi tempat kosong untuk mengisi produk baru.

Gb.3.e Source code Tombol Commit dan tombol update Penjelasan tombol commit dan tombol update: Pada database akan diinsert sebuah baris baru yang akan diisikan data baru sesuai masukan dari pengguna. Table stock akan terupdate sesuai dengan masukan dari pengguna juga. Saat program sudah selesai melakukan update terhadap database maka akan muncul message box yang fungsinya untuk memberitahukan pengguna bahwa data baru sudah tersimpan ke dalam database. Kemudian, tombol commit sudah tidak dapat diklik lagi kecuali pengguna mengklik tombol new terlebih dahulu. Jika semua inputan yang harus diisi ada yang tidak lengkap maka akan muncul message box yang bertujuan agar pengguna melengkapi datanya.

Gb.3.f Source code Tombol Cancel, dan tombol Delete Penjelasan tombol cancel, dan tombol delete: Apabila sudah mengisi data baru dan ternyata tidak jadi disimpan ke dalam database (belum klik commit), maka pengguna dapat mengklik cancel untuk membatalkannya.

Namun apabila sudah terklik commit, maka untuk membatalkan, pengguna harus melakukan delete terhadap data yang diinginkan.

Gb. 3.g Source code Tombol Exit, dan tombol Buy it

Penjelasan source code tombol exit dan tombol buy it / order: Tombol exit digunakan untuk menutup aplikasi / program. Tombol order ini bertujuan untuk mencatat setiap pembelian yang terjadi ke dalam database pada table penjualan.

Gb.3.h Source code Function Terbilang untuk digunakan dalam tombol Calculate

Penjelasan untuk function Terbilang: Contoh: 5.643.502 maka algoritmanya: Int(5.643.502 / 1.000.000) = lima + juta + 643502 Sisa: 643.502. 643.000 < 1.000.000 maka Int(643.000 / 1000) = 643 + ribu + 502

643 <1000 maka Int(643 /100) = enam + ratus + 43 Sisa: 43 43 < 100 maka Int(43 / 10) = empat + puluh + 3 Sisa: 3 3 < 12 maka + tiga

Sisa: 502 502 < 1000 maka: Int(502 / 100) = 5 + ratus Sisa: 2 karena 2 < 12 maka: + 2

Sehingga terbilang: Lima juta enam ratus empat puluh tiga ribu lima ratus dua.

Gb. 3.i Source code Tombol calculate Penjelasan untuk tombol Calculate: Jika quantity terisi dan nilai dari quantity adalah bertipe integer, maka total harga adalah perkalian antara integer dari quantity dan harga jual. Pada function pembilang diatas, hanya bisa dikonversikan hingga batas tertentu. Jika hasil perhitungan total harga 100.000.000, program akan memberikan message kepada pengguna untuk mengecek masukan yang diberikan.

Begitu pula, bila quantity belum dimasukkan ataupun nilai quantity yang dimasukkan bukan integer, maka program juga akan memberikan message yang sama.

Gb. 3.j Source code Tombol Print bill Untuk tombol print bill, 1. Tombol ini hanya bekerja bila semua masukkan sudah lengkap. Apabila ada yang kurang, maka program akan meminta pengguna untuk mengecek ulang. 2. Print preview akan memanggil subroutine dari printDocument. Kemudian memunculkan preview sebelum dicetak. Bila pengguna menutup preview, maka akan muncul printDialog secara otomatis. 3.
Isi yang mau diprint

Font / Ukuran untuk dicetak

Warna tulisan

e.graphics.drawstring berfungsi untuk mencetak dalam bentuk kata / string.

IMPLEMENTASI SISTEM Tampilan awal setelah program dijalankan:

Gb. 4.a. Awal Program

Tampilan setelah klik navigasi ke awal Record:

Gb. 4.b Awal Record

Tampilan setelah klik navigasi ke kanan:

Gb. 4.c.1. navigasi ke kanan (1)

Gb. 4.c.2. navigasi ke kanan (2)

Tampilan navigasi ke kanan hingga akhir record:

Gb.4.c.3 navigasi ke kanan hingga akhir record

Tampilan navigasi ke kiri:

Gb.4.d.1. navigasi ke kiri

Tampilan navigasi ke kiri hingga awal record:

Gb.4.d.2 navigasi ke kiri hingga awal record

Tampilan navigasi ke akhir record:

Gb.4.e navigasi ke akhir Record

Tampilan setelah tombol calculate diklik:

Gb.4.f.1 calculate tanpa quantity

Gb.4.f.2 calculate dengan quantity

Tampilan setelah tombol buy it diklik:

Gb. 4.g.1 Tombol buy it tanpa isian yang lengkap

Gb.4.g.2 Tombol buy it dengan isian sudah lengkap

Gb.4.g.3 hasil table penjualan setelah tombol buy it terklik. Tampilan setelah tombol print bill diklik:

Gb.4.h.1 Tampilan awal tombol print bill diklik (preview)

Gb.4.h.2 Tampilan setelah keluar dari halaman preview

Tampilan Tombol New diklik

Gb.4.i.1 Tombol new diklik

Gb.4.i.2 Pengisian product yang baru Tampilan tombol commit diklik:

Gb.4.j.1 Tombol commit diklik, record di datagrid pun ikut bertambah. Pastikan gambar baru sudah diupload ke resources.

Gb.4.j.2 Gambar baru sudah diupload ke resources.

Gb.4.j.3 produk baru sudah ada di dalam form

Tampilan tombol delete diklik:

Gb. 4.k.1 Tombol Delete diklik

Gb.4.k.2 Tampilan bila tidak jadi menghapus record

Gb.4.k.3 Tampilan bila jadi menghapus record

Gb.4.k.4 Record yang tadi dihapus pun ikut terhapus di database

DAFTAR PUSTAKA http://www.homeandlearn.co.uk/net/vbnet.html http://www.istanasouvenir.com/ http://www.vbdotnetheaven.com/

LAMPIRAN SOURCE CODE


Public Class Form1 Dim c As New OleDb.OleDbConnection 'koneksi ke database Dim dbprov As String Dim dbs As String Dim ds As New DataSet 'dataset tablestock Dim ds1 As New DataSet 'dataset table penjualan Dim da As OleDb.OleDbDataAdapter 'dataAdapter tablestock Dim da1 As OleDb.OleDbDataAdapter 'dataAdapter table penjualan Dim s As String Dim s1 As String Dim maxrows As Integer Dim inc As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\bin\Debug\data.mdb

dbprov = "Provider=Microsoft.Jet.OLEDB.4.0;" dbs = "Data Source=" & Application.StartupPath & "\data.mdb" c.ConnectionString = dbprov & dbs DataGrid1.DataSource = ds.DefaultViewManager c.Open() s = "select * from tablestock" da = New OleDb.OleDbDataAdapter(s, c) da.Fill(ds, "tablestock") s1 = "select * from penjualan" da1 = New OleDb.OleDbDataAdapter(s1, c) da1.Fill(ds1, "Penjualan") c.Close() DataGrid1.DataSource = ds DataGrid1.DataMember = "tablestock" inc = 1 maxrows = ds.Tables("tablestock").Rows.Count LblWkt.Text = Format(Now, "dddd" & vbCrLf & "dd MMMM yyyy") _ & vbCrLf & (Now.ToLongTimeString)
End Sub

Private Sub navigateRecords() Dim a As Integer Dim b As String Dim picpat As String
txtKode.Text = ds.Tables("tablestock").Rows(inc).Item("kodebarang") txtNama.Text = ds.Tables("tablestock").Rows(inc).Item("namaBarang") txtSatuan.Text = ds.Tables("tablestock").Rows(inc).Item("satuan") txtHJual.Text = ds.Tables("tablestock").Rows(inc).Item("hargajual")

txtHJual.Text = Format(Val(txtHJual.Text), "Rp #,##.00") For a = 1 To maxrows b = ds.Tables("tablestock").Rows(inc).Item("kodebarang") If (b <> "") Then
picpat = Application.StartupPath & "\resources\" & b & ".jpg"

PictBox1.Load(picpat) Else PictBox1.Image = Nothing End If a = a + 1 Next Txtterbilang.Text = "" txttotal.Text = "" txtqty.Text = "" End Sub

Private Sub btnFirst_Click If inc <> 0 Then inc = 0 navigateRecords() End If End Sub Private Sub BtnKiri_Click(ByVal sender As System.Object, If inc > 0 Then inc = inc - 1 navigateRecords() Else End If End Sub Private Sub btnKanan_Click If inc <> maxrows - 1 Then inc = inc + 1 navigateRecords() Else End If End Sub

(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click

ByVal e As System.EventArgs) Handles BtnKiri.Click

MsgBox("First Record", MsgBoxStyle.Information, "Information")

(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnKanan.Click

MsgBox("Last Record", MsgBoxStyle.Information, "Information")

Private Sub BtnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLast.Click If inc <> maxrows - 1 Then inc = maxrows - 1 navigateRecords() End If End Sub Private Sub BtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click btnCommit.Enabled = True btnNew.Enabled = False BtnUpdate.Enabled = False BtnDelete.Enabled = False txtKode.Clear() txtNama.Clear() txtqty.Clear() txtSatuan.Clear() txtHJual.Clear() txttotal.Clear() Txtterbilang.Clear() PictBox1.Image = Nothing End Sub Private Sub btnCommit_Click If inc <> -1 Then Dim cb As New OleDb.OleDbCommandBuilder(da) Dim dsNewRow As DataRow If txtKode.Text <> "" And txtHJual.Text <> "" And _ txtNama.Text <> "" And txtSatuan.Text <> "" Then dsNewRow = ds.Tables("tablestock").NewRow() dsNewRow.Item("kodebarang") = txtKode.Text dsNewRow.Item("namaBarang") = txtNama.Text dsNewRow.Item("satuan") = txtSatuan.Text dsNewRow.Item("hargajual") = txtHJual.Text ds.Tables("tablestock").Rows.Add(dsNewRow) da.Update(ds, "tablestock")
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCommit.Click

MsgBox("New Record added to the Database: Stock", MsgBoxStyle.Information, "Hi")

btnCommit.Enabled = False btnNew.Enabled = True

BtnUpdate.Enabled = True BtnDelete.Enabled = True Else


MsgBox("Please complete your input", MsgBoxStyle.Exclamation,"Hi")

End If End If End Sub Private Sub BtnSave_Click da.Update(ds, "tablestock") MsgBox("Data updated") End Sub Private Sub BtnCancel_Click btnCommit.Enabled = False btnNew.Enabled = True BtnUpdate.Enabled = True BtnDelete.Enabled = True

(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnUpdate.Click

(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCancel.Click

inc = 0 navigateRecords() End Sub Private Sub BtnDelete_Click Dim cb As New OleDb.OleDbCommandBuilder(da) "Delete", MessageBoxButtons.YesNo, _

(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDelete.Click

If MessageBox.Show("Do you really want to Delete this Record?", _

MessageBoxIcon.Warning) = Windows.Forms.DialogResult.No Then

MsgBox("Operation Cancelled") Exit Sub End If ds.Tables("tablestock").Rows(inc).Delete() maxrows = maxrows - 1 inc = 0 navigateRecords() da.Update(ds, "tablestock") End Sub Private Sub btnExit_Click c.Close() Me.Close() End Sub Private Sub BtnOrder_Click If inc <> -1 And txttotal.Text <> "" Then Dim cb As New OleDb.OleDbCommandBuilder(da1) Dim dsNewRow1 As DataRow dsNewRow1 = ds1.Tables("Penjualan").NewRow() dsNewRow1.Item("kodebarang") = txtKode.Text dsNewRow1.Item("namaBarang") = txtNama.Text dsNewRow1.Item("unit") = txtSatuan.Text dsNewRow1.Item("tanggalterjual") = LblWkt.Text dsNewRow1.Item("hjual") = _ ds.Tables("tablestock").Rows(inc).Item("hargajual") dsNewRow1.Item("qty") = txtqty.Text dsNewRow1.Item("totalharga") = CInt(txtqty.Text) * _ CInt(ds.Tables("tablestock").Rows(inc).Item("hargajual"))
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnBeli.Click

ds1.Tables("penjualan").Rows.Add(dsNewRow1) da1.Update(ds1, "penjualan") MsgBox("New Record added to Database: Penjualan", _ MsgBoxStyle.Information, "Hi")

btnCommit.Enabled = False btnNew.Enabled = True BtnUpdate.Enabled = True BtnDelete.Enabled = True Else MsgBox("Please complete your input", _ MsgBoxStyle.Exclamation, "Hi") End If End Sub Private Sub BtnCount_Click Dim hasil As Integer Dim i As String hasil = 0 If ((Val(txtqty.Text) <> 0)) And (Int(Val(txtqty.Text)) = _ Val(txtqty.Text)) Then i = ds.Tables("tablestock").Rows(inc).Item("hargajual") hasil = CInt(txtqty.Text) * CInt(i) If (hasil < 100000000) Then txttotal.Text = CStr(hasil) 'convert numeric to string txttotal.Text = Format(Val(txttotal.Text), _ "Rp #,##.00") 'format string ke dalam bentuk currency (Rupiah) Txtterbilang.Text = Terbilang(hasil) & "Rupiah" 'memanggil fungsi Terbilang End If Else MsgBox("Please Check your input again", _ MsgBoxStyle.OkOnly, "Hi") txtqty.Text = "" Txtterbilang.Text = "" txttotal.Text = "" End If
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCalc.Click

End Sub Public Function Terbilang(ByVal x As Integer) As String


Dim bilangan As String() = {"", "Satu", "Dua", "Tiga", "Empat", "Lima", _ "Enam", "Tujuh", "Delapan", "Sembilan", "Sepuluh", "Sebelas"}

Dim bil As String = "" If x < 12 Then bil = " " + bilangan(x) ElseIf (x < 20) Then bil = Terbilang(x - 10).ToString + " Belas" ElseIf x < 100 Then
bil = Terbilang(Int(x / 10)) + " Puluh" + Terbilang(x Mod 10)

ElseIf x < 200 Then bil = " Seratus" + Terbilang(x - 100) ElseIf x < 1000 Then
bil = Terbilang(Int(x / 100)) + " Ratus" + Terbilang(x Mod 100)

ElseIf x < 2000 Then bil = " Seribu" + Terbilang(x - 1000) ElseIf x < 1000000 Then
bil = Terbilang(Int(x / 1000)) + " Ribu" + Terbilang(x Mod 1000)

ElseIf x < 2000000 Then bil = " Sejuta" + Terbilang(x - 1000000) ElseIf x < 100000000 Then
bil = Terbilang(Int(x / 1000000)) + " Juta" + Terbilang(x Mod 1000000)

End If Return bil End Function Private Sub Timer2_Tick_1 LblWkt.Text = Format(Now, "dddd" & vbCrLf & "dd MMMM yyyy") _
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick

& vbCrLf & (Now.ToLongTimeString) End Sub Private Sub Button1_Click If (Txtterbilang.Text <> "") Then PrintPreviewDialog1.Document = PrintDocument1 'printpreview memanggil subroutine dari printdocument1 PrintPreviewDialog1.ShowDialog() PrintDialog1.ShowDialog() Else MsgBox("Please Check your input again", _ MsgBoxStyle.OkOnly, "Hi") End If End Sub Private Sub PrintDocument1_PrintPage
(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnPrint.Click
(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

e.Graphics.DrawString("Receipt of Payment", New Font("arial", 12, FontStyle.Bold),_ Brushes.Black, 200, 100) e.Graphics.DrawString("============================================================", _ New Font("arial", 12, FontStyle.Bold), Brushes.Black, 100, 120) e.Graphics.DrawString(LblWkt.Text, LblWkt.Font, Brushes.Black, 500, 150) e.Graphics.DrawString(LblCode.Text & vbTab & ":", LblCode.Font, Brushes.Black, 100, 200) e.Graphics.DrawString(txtKode.Text, txtKode.Font, Brushes.Black, 250, 200) e.Graphics.DrawString(lblName.Text & vbTab & ":", lblName.Font, Brushes.Black, 100, 250) e.Graphics.DrawString(txtNama.Text, txtNama.Font, Brushes.Black, 250, 250) e.Graphics.DrawString(LblQty.Text & vbTab & vbTab &":",LblQty.Font,Brushes.Black,100, 300) e.Graphics.DrawString(txtqty.Text, txtqty.Font, Brushes.Black, 250, 300) e.Graphics.DrawString("/" & txtSatuan.Text, txtSatuan.Font, Brushes.Black, 350, 300) e.Graphics.DrawString("______________________________________________________________", _ New Font("arial", 10, FontStyle.Bold), Brushes.Black, 100, 320) e.Graphics.DrawString(LblTotal.Text & vbTab & ":", LblTotal.Font, Brushes.Black, 100, 350) e.Graphics.DrawString(txttotal.Text, txttotal.Font, Brushes.Black, 250, 350) e.Graphics.DrawString(LblBlg.Text & vbTab & ":", LblBlg.Font, Brushes.Black, 100, 400) e.Graphics.DrawString(Txtterbilang.Text, Txtterbilang.Font, Brushes.Black, 250, 400) e.Graphics.DrawString("Thank You", New Font("arial", 12, FontStyle.Bold), _ Brushes.Blue, 400, 500)

e.Graphics.PageUnit = GraphicsUnit.Inch End Sub End Class