bab iv rancangan sistem dan program usulan 4.1. … file31 bab iv rancangan sistem dan program...
Post on 05-May-2019
229 Views
Preview:
TRANSCRIPT
31
BAB IV
RANCANGAN SISTEM DAN PROGRAM USULAN
4.1. Analisis Kebutuhan Software
A. Tahapan Analisis
Sistem perpanjangan masa berlaku alat-alat keselamatan kapal berbasis web,
dimana teknisi tidak perlu membuka secara keseluruhan alat-alat keselamatan
kapal untuk melakukan perpanjangan masa berlaku teknisi hanya perlu membuka
melalui aplikasi perpanjangan masa berlaku menu yang menggunakan website.
Berikut adalah spesifikasi kebutuhan (system requirement) dari sistem berbasis
website.
Halaman Teknisi:
A1. Teknisi dapat mengelola data user login
A2. Teknisi dapat mengelola data item master
A3. Teknisi dapat melihat masa berlaku item master
A4. Teknisi dapat melihat laporan
Halaman Admin:
B1. Admin dapat mengelola data
B2. Admin dapat menerima permintaan
32
B. Use Case Diagram
1. Use Case Diagram Halaman User
Gambar IV.1 Use Case Diagram Halaman User
Pilih Kategori
Tampilkan Berdasarkan
Kategori
Pilih Jenis Perpanjangan
Tampilkan Detail
Perpanjangan
Tampilkan Masa Berlaku
Login
Masukan Data
<<include>>
<<include>>
<<include>>
<<include>>
Cetak Data
Menerima Email
<<include>>
<<include>>
33
a. Deskripsi Use Case Mengelola Data User Login
Tabel IV.1
Deskripsi Use Case Diagram Mengelola Data User Login
Use Case Name Mengelola Data User Login Requirements A1 Goal Admin dapat menambah, mengedit dan menghapus data user
login
Pre-conditions Admin telah login
Post-conditions Data user login tersimpan, terupdate atau terhapus
Failed and conditions Gagal menyimpan, mengupdate atau menghapus
Primary Actors Admin Main Flow / Basic Path 1. Admin Melihat daftar user login
2. Admin menambah data user login 3. Admin menyimpan data user login
Alternate Flow / Invariant 1 2a. Admin mengedit data user login
Invariant 2 2b. Admin menghapus data user login
b. Deskripsi Use Case Mengelola Data Item Master
Tabel IV.2
Deskripsi Use Case Diagram Mengelola Data Item Master
Use Case Name Mengelola Data Item Master Requirements A2 Goal Admin dapat menambah, mengedit dan menghapus data
item master
Pre-conditions Admin telah login
Post-conditions Data item master tersimpan, terupdate atau terhapus
Failed and conditions Gagal menyimpan, mengupdate atau menghapus
Primary Actors Admin Main Flow / Basic Path 1. Admin melihat daftar item master
2. Admin menambah data item master 3. Admin menyimpan data item master
Alternate Flow / Invariant 1 2a. Admin mengedit data item master
Invariant 2 2b. Admin menghapus data item master
34
c. Deskripsi Use Case View Masa Berlaku
Tabel IV.3
Deskripsi Use Case Diagram View Masa Berlaku
Use Case Name View Masa Berlaku Requirements A3 Goal Admin dapat melihat masa berlaku
Pre-conditions Admin telah login
Post-conditions Tampil data kapal
Failed and conditions Gagal tampil atau simpan
Primary Actors Admin Main Flow / Basic Path 1. Admin melihat masa berlaku
2. Admin menyimpan data masa berlaku
Alternate Flow / Invariant 1 2a. Admin mencetak masa berlaku
d. Deskripsi Use Case Laporan
Tabel IV.4
Deskripsi Use Case Diagram Laporan
Use Case Name View Laporan
Requirements A4 Goal Admin dapat melihat laporan
Pre-conditions Admin telah login
Post-conditions Report tampil atau disimpan
Failed and conditions Gagal tampil, simpan
Primary Actors Admin Main Flow / Basic Path 1. Admin menginput data
2. Admin menyimpan data laporan
Alternate Flow / Invariant 1 2a. Admin cetak laporan
35
2. Use Case Diagram Halaman Admin
Gambar IV.2 Use Case Diagram Halaman Admin
a. Deskripsi Use Case Mengelola Data
Tabel IV.5
Deskripsi Use Case Diagram Mengelola Data
Use Case Name Mengelola Data
Requirements B1 Goal Admin melihat status masa berlaku
Pre-conditions Admin telah login
Post-conditions Tampil data atau proses data
Failed and conditions Gagal tampil atau proses
Primary Actors Admin Main Flow / Basic Path 1. Admin menginput data
2. Admin mengirim data
Alternate Flow / Invariant 1 2a. Admin member status selesai pada data
b. Deskripsi Use Case Menerima Permintaan
36
Tabel IV.6
Deskripsi Use Case Diagram Menerima Permintaan
Use Case Name Menerima Permintaan
Requirements B2 Goal Admin dapat menerima permintaan
Pre-conditions Admin telah login
Post-conditions Tampil data
Failed and conditions Gagal tampil, simpan atau cetak
Primary Actors Admin Main Flow / Basic Path 1. Admin menginput data
2. Cashier menyimpan data
Alternate Flow / Invariant 1 2a. Admin cetak permintaan
Invariant 2 -
37
Menerima email
Mengisi Data Alat Keselamatan
Menyimpan Data
Memilih jenis perpanjangan
Tampilkan Item ILR dan PMK
Start
Mencetak Sertifikat
Lanjutkan permintaan yang lain
End
C. Activity Diagram
Activity Diagram menggambarkan berbagai alir aktifitas dalam sistem
yang sedang dirancang, bagaimana masing-masing alir berawal, decision
yang mungkin terjadi dan bagaimana mereka berakhir.
1. Activity Diagram Login Menu
Gambar IV.3 Activity Diagram Login Menu
38
Add
Edit
Memilih jenis
perpanjangan
Update data
Hapus Data
Input data Simpan Data
Start
End
Delete
2. Activity Diagram Admin Mengelola Data
Gambar IV.4 Activity Diagram Admin Mengelola Data
39
customer pesan permohonan
kategori
isi
cetak lakukan
Nm perusahaan
Alamat
Confm pass No hp
passwd
Nm kapal
tindakan Nm perusahaan
reques
owner
Date of inspect
Name of ship
capacity
Next of inspect
pmk ilr pmk ilr
4.2. Desain
4.2.1. Database
1. Entity Relationship Diagram (ERD)
Gambar IV.5 Entity Relationship Diagram (ERD)
40
2. Logical Record Structure (LRS)
Gambar IV.6 Logical Record Structure (LRS)
3. Spesifikasi File
a. Spesifikasi File Table User_login
Nama Database : DbMP
Nama File : Tabel User Login
Akronim : dbo.user_login
Tipe File : File Master
Akses File : Random
Panjang Record : 0.008 Megabyte
Kunci Field : userid
Customer
Nama perusahaan
Alamat
Email No. handphone
Password
Confrm password
Permohonan
Nama perusahaan
Nama kapal
tindakan
Isi
owner reques
date of inspection
Name of ship
capacity
next of inspection
kategori
pmk ilr
Cetak
Isi pmk
Isi ilr
41
Tabel IV.8
Spesifikasi File Tabel User Login
No. Elemen Data Nama Field Type Size Keterangan
1 User ID userid char 7 Primary Key
2 Nama User name char 50
3 Password password varchar 100
4 Level level char 10
b. Spesifikasi File Table Item Master
Nama Database : DbMP
Nama File : Tabel Item Master
Akronim : dbo.item_master
Tipe File : File Master
Akses File : Random
Panjang Record : 0.008 Megabyte
Kunci Field : plu
Tabel IV.9
Spesifikasi File Tabel Item Master
No. Elemen Data Nama Field Type Size Keterangan
1 Kode Item plu char 5 Primary Key
2 Deskripsi Item description varchar 50
3 Satuan unit char 15
4 Ukuran size char 10
5 Kategory category nchar 10
42
c. Spesifikasi File Table Order
Nama Database : DbMP
Nama File : Tabel Order
Akronim : dbo.order
Tipe File : File Master
Akses File : Sequence
Panjang Record : 0.008 Megabyte
Kunci Field : -
Tabel IV.10
Spesifikasi File Tabel Order
No. Elemen Data Nama Field Type Size Keterangan
1 No. Pemesanan order_number char 12
2 Waktu Pemesanan order_date datetime
3 No. Meja table_id char 2
4 No. POS pos_id char 2
5 Urutan Pemesanan sort_no int
6 Kode Item plu char 100 Foreign Key
7 Jumlah Pemesanan qty int
43
d. Spesifikasi File Table Status Order
Nama Database : DbMP
Nama File : Tabel Status Order
Akronim : dbo.statusorder
Tipe File : File Master
Akses File : Sequence
Panjang Record : 0.008 Megabyte
Kunci Field : -
Tabel IV.11
Spesifikasi File Tabel Status Order
No. Elemen Data Nama Field Type Size Keterangan
1 No. Pemesanan order_number char 12
2 Status Selesai Finish tinyint
3 Waktu Selesai FinishedOn datetime
44
e. Spesifikasi File Table Sales Order
Nama Database : DbMP
Nama File : Tabel Sales Order
Akronim : dbo.salesorder
Tipe File : File Master
Akses File : Sequence
Panjang Record : 0.008 Megabyte
Kunci Field : -
Tabel IV.12
Spesifikasi File Tabel Sales Order
No. Elemen Data Nama Field Type Size Keterangan
1 No. Pemesanan order_number char 12
2 Jenis Pembayaran payment_type char 5
3 Total Pembayaran amount numeric
4 Diskon discount numeric
5 Kembalian change numeric
6 Waktu Pembayaran paidon datetime
45
4.2.2. Software Architecture
A. Class Diagram
Gambar IV.10 Class Diagram
46
B. Sequence Diagram
1. Sequence Diagram Halaman Admin
a. Sequence Diagram Admin Login Menu
Gambar IV.11 Sequence Diagram Admin Login Menu
47
b. Sequence Diagram Admin Menerima Pembayaran
Gambar IV.12 Sequence Diagram Admin Menerima Pembayaran
48
c. Sequence Diagram Admin Mengelola Data User Login
Gambar IV.13 Sequence Diagram Admin Mengelola Data User Login
49
d. Sequence Diagram Admin Tambah Data User Login
Gambar IV.14 Sequence Diagram Admin Tambah Data User Login
50
e. Sequence Diagram Admin Ubah Data User Login
Gambar IV.15 Sequence Diagram Admin Ubah Data User Login
51
f. Sequence Diagram Admin Hapus Data User Login
Gambar IV.16 Sequence Diagram Admin Hapus Data User Login
52
g. Sequence Diagram Admin Cari Data User Login
Gambar IV.17 Sequence Diagram Admin Cari Data User Login
53
h. Sequence Diagram Admin Mengelola Data Item Master
Gambar IV.18 Sequence Diagram Admin Mengelola Data Item Master
54
i. Sequence Diagram Admin Tambah Data Item Master
Gambar IV.19 Sequence Diagram Admin Tambah Data Item Master
55
j. Sequence Diagram Admin Ubah Data Item Master
Gambar IV.20 Sequence Diagram Admin Ubah Data Item Master
56
k. Sequence Diagram Admin Hapus Data Item Master
Gambar IV.21 Sequence Diagram Admin Hapus Data Item Master
57
l. Sequence Diagram Admin Cari Data Item Master
Gambar IV.22 Sequence Diagram Admin Cari Data Item Master
58
m. Sequence Diagram Admin Melihat Report
Gambar IV.23 Sequence Diagram Admin Melihat Report
59
n. Sequence Diagram Admin Mengelola Pemesanan
Gambar IV.24 Sequence Diagram Admin Mengelola Pemesanan
60
2. Sequence Diagram Halaman Cashier
a. Sequence Diagram Cashier Login Menu
Gambar IV.25 Sequence Diagram Cashier Login Menu
61
b. Sequence Diagram Cashier Menerima Pembayaran
Gambar IV.26 Sequence Diagram Cashier Menerima Pembayaran
62
c. Sequence Diagram Cashier Mengelola Pemesanan
Gambar IV.27 Sequence Diagram Cashier Mengelola Pemesanan
63
C. Component Diagram
Gambar IV.28 Component Diagram
D. Deployment Diagram
Gambar IV.29 Deployment Diagram
64
4.2.3. User Interface
A. Form Order Menu
Pada form ini, waiter dapat menginput pesanan makanan
maupun minuman yang dipesan oleh customer.
Gambar IV.30 Tampilan Order Menu
65
B. Form Login Menu
Form ini digunakan untuk admin atau cashier untuk mengakses
menu yang ada didalam applikasi menu utama.
Gambar IV.31 Tampilan Login Menu
66
C. Form Main Menu
Form ini berisi menu-menu master yang akan digunakan admin
atau cashier untuk menginput data master maupun
pembayaran.
Gambar IV.32 Tampilan Main Menu
67
D. Form List Order
Form ini lebih digunakan untuk pastry cook untuk mengetahui
menu apa aja yang harus dibuat dan untuk menyatakan bahwa
menu telah selesai dibuat atau belum.
Gambar IV.33 Tampilan List Order
68
E. Form Point Of Sales
Form ini digunakan cashier untuk mengecek makanan atau
minuman apa saja yang sudah dipesan customer serta nominal
yang harus dibayar.
Gambar IV.34 Tampilan Point Of Sales
69
F. Form Payment
Form ini untuk melanjutkan pembayaran dari form point of
sales. Seperti menginput jenis pembayaran, diskon dan total
pembayaran yang harus dibayar customer.
Gambar IV.35 Tampilan Payment
70
G. Form User Login
Form ini digunakan oleh admin untuk mengelola data user
seperti user id, name, password dan level, baik itu data admin
maupun cashier.
Gambar IV.36 Tampilan User Login
71
H. Form Item Master
Form ini digunakan oleh admin untuk menambahkan,
mengubah maupun menghapus data item master yang ada.
Gambar IV.37 Tampilan Item Master
72
I. Form Report
Form ini digunakan oleh admin untuk melihat data item master
dan data penjualan dari café tersebut.
Gambar IV.38 Tampilan Report
73
4.3. Code Generation
A. Class Order
package com.example.dine.in.mobile; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog.Builder; import android.text.style.BulletSpan; import android.view.Menu; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.app.*; import android.os.*; import android.widget.TextView; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.res.Resources; import android.view.KeyEvent; import android.widget.Button; public class Order extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order); Spinner cmbpos=(Spinner) findViewById(R.id.cmbpos); String[] menuArray=new String[] {"01","02"}; ArrayAdapter<String> adapter; adapter=adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,menuArray); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); cmbpos.setAdapter(adapter); Spinner cmbmeja=(Spinner) findViewById(R.id.cmbmeja);
74
String[] menuArray1=new String[] {"1","2","3","4","5","6","7","8","9"}; ArrayAdapter<String> adapter1; adapter1=adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,menuArray1); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); cmbmeja.setAdapter(adapter); Spinner cmbmakanan=(Spinner) findViewById(R.id.cmbmakanan); //String[] menuArray2=new String[] {"-","Apple Crumble Slice APC01","Advocaad Mousse Slice AVM01","Blueberry Cheese Cake Slice BCC01","Chocolate Devil Cake Slice CDC01","Cheese Bacon","Chicken Pie"}; Resources res = getResources(); String[] menuArray2 = res.getStringArray(R.array.Food); ArrayAdapter<String> adapter2; adapter2=adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, menuArray2); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); cmbmakanan.setAdapter(adapter); Spinner cmbminuman=(Spinner) findViewById(R.id.cmbminuman); //String[] menuArray3=new String[] {"-","Green Tea Latte","Iced Coffee","Iced Chocolate","Coffee Milkshakes","Blackcurrant","English Breakfast"}; String[] menuArray3=res.getStringArray(R.array.Beverage); ArrayAdapter<String> adapter3; adapter3=adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, menuArray3); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); cmbminuman.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_order, menu);
75
return true; } public void getID_OnClick(View vw){ getOrderID(); } public void btnsend_OnClick(View vw){ SaveOrder(); } public void btnclose_OnClick(View vw){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Do you want to close?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); System.exit(0); } }) .setNegativeButton("No",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }).show(); } public void getOrderID(){ try { SoapObject request = new SoapObject("http://tempuri.org/", "getID"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE("http://192.168.43.168/ws/Service1.asmx"); androidHttpTransport.call("http://tempuri.org/getID", envelope); SoapObject result = (SoapObject)envelope.bodyIn; String resultData = result.getProperty(0).toString(); TextView txtId = (TextView)findViewById(R.id.txtid); txtId.setText(resultData); } catch (Exception e) {
76
e.printStackTrace(); Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); } } public void getFoodList(){ try { SoapObject request = new SoapObject("http://tempuri.org/", "getFoodList"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE("http://192.168.43.168/ws/Service1.asmx"); androidHttpTransport.call("http://tempuri.org/getFoodList", envelope); SoapObject result = (SoapObject)envelope.bodyIn; String resultData = result.getProperty(0).toString(); TextView txtId = (TextView)findViewById(R.id.txtid); txtId.setText(resultData); } catch (Exception e) { e.printStackTrace(); Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); } } public void getBeverageList(){ try { SoapObject request = new SoapObject("http://tempuri.org/", "getBvrgList"); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE("http://192.168.43.168/ws/Service1.asmx"); androidHttpTransport.call("http://tempuri.org/getBvrgList", envelope); SoapObject result = (SoapObject)envelope.bodyIn;
77
String resultData = result.getProperty(0).toString(); TextView txtId = (TextView)findViewById(R.id.txtid); txtId.setText(resultData); } catch (Exception e) { e.printStackTrace(); Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); } } public void SaveOrder(){ try { Spinner cboPosID = (Spinner)findViewById(R.id.cmbpos); Spinner cboTableID = (Spinner)findViewById(R.id.cmbmeja); Spinner cboFood = (Spinner)findViewById(R.id.cmbmakanan ); Spinner cboBvrg = (Spinner)findViewById(R.id.cmbminuman); EditText txtID = (EditText)findViewById(R.id.txtid); EditText txtQty = (EditText)findViewById(R.id.txtjumlahmakan); EditText txtQty2 = (EditText)findViewById(R.id.txtjumlahminum); if (cboPosID.getSelectedItem().toString().length() > 0 && cboTableID.getSelectedItem().toString().length() > 0 && cboFood.getSelectedItem().toString().length() > 0 && cboBvrg.getSelectedItem().toString().length() > 0 && txtID.getText().toString().length()> 0 && txtQty.getText().toString().length()> 0 && txtQty2.getText().toString().length()> 0 ) { SoapObject FoodOrder = new SoapObject("http://tempuri.org/", "saveOrder"); FoodOrder.addProperty("prmOrderID",txtID.getText().toString()); FoodOrder.addProperty("prmTableID",cboTableID.getSelectedItem().toString()); FoodOrder.addProperty("prmPosID",cboPosID.getSelectedItem().toString()); FoodOrder.addProperty("prmOrderFood",cboFood.getSelectedItem().toString());
78
FoodOrder.addProperty("prmFoodQty", txtQty.getText().toString()); FoodOrder.addProperty("prmOrderBeverage",cboBvrg.getSelectedItem().toString()); FoodOrder.addProperty("prmBeverageQty",txtQty2.getText().toString()); SoapSerializationEnvelope envFood = new SoapSerializationEnvelope(SoapEnvelope.VER11); envFood.dotNet=true; envFood.setOutputSoapObject(FoodOrder); HttpTransportSE androidHttpTransport = new HttpTransportSE("http://192.168.43.168/ws/Service1.asmx"); androidHttpTransport.call("http://tempuri.org/saveOrder", envFood); //SoapObject result = (SoapObject)envelope.bodyIn; //String resultData = result.getProperty(0).toString(); Toast.makeText(getApplicationContext(), "Order has been sent, proceed to next order please", Toast.LENGTH_LONG ).show(); } else Toast.makeText(getApplicationContext(), "Field must be input", Toast.LENGTH_LONG ).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(getApplicationContext(),e.getMessage(),Toast.LENGTH_LONG).show(); } } } /*Button btn_keluar = (Button) findViewById(R.id.btnclose); btn_keluar.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { close(); } });*/ /* public void close(){ public boolean onKeyDown(int keyCode, KeyEvent event) {
79
if (keyCode == KeyEvent.KEYCODE_BACK) { close(); } return super.onKeyDown(keyCode, event); } } } */
B. Class Service1
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Data
Imports System.Data.SqlClient
' To allow this Web Service to be called from script, using
ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")>
_
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.Bas
icProfile1_1)> _
<ToolboxItem(False)> _
Public Class Service1
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function HelloWorld() As String
Return "Hello World"
End Function
<WebMethod()> _
Public Function getID() As String
Dim sRetVal As String = ""
Using oConn As SqlConnection = New SqlConnection("initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd=")
Using oCmd As SqlCommand = New
SqlCommand("sp_CreateID", oConn)
oCmd.CommandType = CommandType.StoredProcedure
Dim oParam As SqlParameter = New
SqlParameter("@NewID", SqlDbType.Char, 12)
oParam.Direction = ParameterDirection.Output
oCmd.Parameters.Add(oParam)
oConn.Open()
oCmd.ExecuteNonQuery()
oConn.Close()
sRetVal = oParam.Value
End Using
End Using
Return sRetVal
End Function
80
<WebMethod()> _
Public Function saveOrder(ByVal prmOrderID As String, ByVal
prmTableID As String, ByVal prmPosID As String, ByVal prmOrderFood
As String, ByVal prmFoodQty As String, ByVal prmOrderBeverage As
String, ByVal prmBeverageQty As String) As Boolean
Using oConn As SqlConnection = New SqlConnection("initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd=")
If oConn.State = ConnectionState.Closed Then
oConn.Open()
Try
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = String.Format("INSERT INTO
[statusOrder] SELECT x.* FROM (SELECT '{0}' as a,0 as b,GETDATE()
as c) x Left Join statusOrder z on x.a=z.order_number WHERE
z.order_number is null", prmOrderID)
oCmd.ExecuteNonQuery()
oCmd.Dispose()
End Using
If prmOrderFood <> "-" Then
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = String.Format("INSERT
INTO [order] SELECT '{0}',GETDATE(),'{1}','{2}',isnull((select top
1 sort_no FROM [order] Where order_number='{0}' order by sort_no
desc),0) + 1,'{3}',{4}", prmOrderID, prmTableID, prmPosID,
Right(Trim(prmOrderFood), 5), prmFoodQty)
oCmd.ExecuteNonQuery()
oCmd.Dispose()
End Using
End If
If prmOrderBeverage <> "-" Then
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = String.Format("INSERT
INTO [order] SELECT '{0}',GETDATE(),'{1}','{2}',isnull((select top
1 sort_no FROM [order] Where order_number='{0}' order by sort_no
desc),0) + 1,'{3}',{4}", prmOrderID, prmTableID, prmPosID,
Right(Trim(prmOrderBeverage), 5), prmBeverageQty)
oCmd.ExecuteNonQuery()
oCmd.Dispose()
End Using
End If
Return True
Catch ex As Exception
Return False
End Try
End Using
End Function
<WebMethod()> _
Public Function getFoodList(ByRef prmArray As String()) As
Boolean
Dim thisList As New List(Of String)()
81
Using oConn As SqlConnection = New SqlConnection("initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd=")
If oConn.State = ConnectionState.Closed Then
oConn.Open()
Try
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = "select
rtrim([description]) + ' ' + rtrim([unit]) + ' ' + case
rtrim([size]) when '-' then '' else rtrim([size]) + ' cm ' end +
+ rtrim(plu) from item_master where category='FOOD'"
Dim oReader As SqlDataReader =
oCmd.ExecuteReader
Do While oReader.Read
thisList.Add(oReader.GetValue(0).ToString)
Loop
oReader.Close()
oCmd.Dispose()
End Using
prmArray = thisList.ToArray
Return True
Catch ex As Exception
prmArray = Nothing
Return False
End Try
End Using
End Function
End Class
C. Class login_menu
Imports System.Configuration
Imports System.Data.SqlClient
Public Class login_menu
Private Sub login_menu_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
txtpass.UseSystemPasswordChar = Not chkshow.Checked
End Sub
Private Sub btnexit_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnexit.Click
If MsgBox("Do you want to exit?", MsgBoxStyle.YesNo,
"Confirm") = vbYes Then
Application.Exit()
End If
End Sub
Private Sub chkshow_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
chkshow.CheckedChanged
txtpass.UseSystemPasswordChar = Not chkshow.Checked
End Sub
82
Private Sub btnlogin_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnlogin.Click
If txtid.Text.Trim <> "" And txtpass.Text.Trim <> "" Then
Dim fHasRow As Boolean = False, fPassCorrect As
Boolean = False
Dim sNama As String = "", sLevel As String = "",
sHashPass As String = ""
Using oConn As SqlConnection = New
SqlConnection("initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd=")
oConn.Open()
Using oCmd As SqlCommand = New
SqlCommand(String.Format("SELECT [name],[level],[password] FROM
user_login WHERE userid='{0}'", txtid.Text.Trim), oConn)
Dim oReader As SqlDataReader =
oCmd.ExecuteReader
fHasRow = oReader.HasRows
If oReader.HasRows Then
Do While oReader.Read
sNama = oReader.GetValue(0)
sLevel = oReader.GetValue(1)
sHashPass = oReader.GetValue(2)
Loop
End If
oReader.Close()
End Using
End Using
If Not fHasRow Then
MsgBox("User ID Doesn't Exist, Please
Correctly...!!", MsgBoxStyle.Information, "Verification")
txtid.Focus()
txtid.SelectAll()
txtpass.Text = ""
Else
Try
fPassCorrect = VerifyHash(txtpass.Text.Trim,
sHashPass)
If Not fPassCorrect Then
MsgBox("Password Not Match With User ID,
Check again...!!", MsgBoxStyle.Information, "Verification")
txtpass.Focus()
txtpass.SelectAll()
Else
MsgBox(String.Format("Welcome {0}{1} Your
Level : {2}", sNama, vbCr, sLevel), MsgBoxStyle.Information,
"Login")
gNama = sNama
gLevel = sLevel
'Dim fShow As New Main_Menu
'fShow.Show()
Main_Menu.Show()
Me.Hide()
End If
Catch exFormat As FormatException
MsgBox("Data hashed invalid, harap hubungi
admin", MsgBoxStyle.Exclamation, "Warning")
83
Catch ex As Exception
MsgBox("Aplikasi mengalami masalah intrnal.
silahkan hubungi IT support", MsgBoxStyle.Exclamation, "Warning")
End Try
End If
End If
End Sub
Private Sub txtpass_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles txtpass.KeyDown
If e.KeyCode = Keys.Enter Then
If txtpass.Text.Trim <> "" Then
btnlogin.Focus()
End If
End If
End Sub
End Class
D. Class Main_Menu
Public Class Main_Menu
Private Sub Main_Menu_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
Me.Dispose()
login_menu.Show()
End Sub
Private Sub Main_Menu_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
lbluser.Text = gNama
For Each oCtrl As Control In Me.Controls
If TypeOf oCtrl Is Button Then
If Not (oCtrl.Name.ToUpper = "BTNLIST" OrElse
oCtrl.Name.ToUpper = "BTNPOS" OrElse oCtrl.Name.ToUpper =
"BTNEND") Then
If gLevel.Trim.ToUpper = "ADMIN" Then
oCtrl.Enabled = True
Else
oCtrl.Enabled = False
End If
Else
oCtrl.Enabled = True
End If
End If
Next
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
lbltime.Text = Format(Now, "hh:mm:ss tt")
lbldate.Text = Format(Now, "dddd, dd MMMM yyyy")
84
End Sub
Private Sub btnitem_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnitem.Click
Item_Master.Show()
Me.Hide()
End Sub
Private Sub btnend_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnend.Click
Me.Dispose()
login_menu.Show()
End Sub
Private Sub btnuser_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnuser.Click
User_Login.Show()
Me.Hide()
End Sub
Private Sub btnreport_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnreport.Click
Report.Show()
End Sub
Private Sub btnpos_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnpos.Click
Point_Of_Sales.Show()
Me.Hide()
End Sub
Private Sub btnlist_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnlist.Click
List_Order.Show()
Me.Hide()
End Sub
End Class
E. Class List_Order
Imports System.Data
Imports System.Data.SqlClient
Public Class List_Order
Dim mProcess As Boolean = False
Private Sub pRefreshGridData()
Cursor.Current = Cursors.WaitCursor
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Dim _sqlView As String = "SELECT sort_no as [No
Urut],b.description as [Order],Qty as
[Jumlah],order_number,order_date,table_id FROM [order] a inner
join item_master b on rtrim(a.plu) = rtrim(b.plu) where
85
order_number in (select Top 1 order_number from statusOrder where
Finish = 0 order by FinishedOn)"
Dim _sqlDA As New SqlDataAdapter(_sqlView, oConn)
Dim _sqlDS As New DataSet
_sqlDA.Fill(_sqlDS)
dvMain.DataSource = _sqlDS.Tables(0)
_sqlDA.Dispose()
_sqlDS.Dispose()
End Using
If dvMain.RowCount > 0 Then
lblOrder.Text = dvMain.Rows(0).Cells(3).Value
lblOrderdate.Text = dvMain.Rows(0).Cells(4).Value
lblTable.Text = dvMain.Rows(0).Cells(5).Value
dvMain.Columns(3).Visible = False
dvMain.Columns(4).Visible = False
dvMain.Columns(5).Visible = False
End If
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Dim _sqlView As String = String.Format("Select a.*
FROM (select order_number as [Order ID],table_id as [Table
ID],count(order_number) as [Qty Order],sum(qty) as [Total Order]
from [order] group by order_number,table_id) a inner join
statusOrder b on a.[Order ID] = b.order_number where b.finish = 0
and b.finishedOn > (select FinishedOn from statusOrder where
order_number ='{0}')", lblOrder.Text.Trim)
Dim _sqlDA As New SqlDataAdapter(_sqlView, oConn)
Dim _sqlDS As New DataSet
_sqlDA.Fill(_sqlDS)
dvQueue.DataSource = _sqlDS.Tables(0)
_sqlDA.Dispose()
_sqlDS.Dispose()
End Using
Cursor.Current = Cursors.Default
End Sub
Private Sub List_Order_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
btnback_Click(Nothing, Nothing)
End Sub
Private Sub List_Order_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
mProcess = False
tmrMain.Enabled = True
End Sub
86
Private Sub btnFinish_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnFinish.Click
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = String.Format("UPDATE
statusOrder SET Finish=1, FinishedOn=GETDATE() WHERE
order_number='{0}'", lblOrder.Text.Trim)
oCmd.ExecuteNonQuery()
oCmd.Dispose()
End Using
End Using
pRefreshGridData()
End Sub
Private Sub btnback_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnback.Click
Me.Dispose()
Main_Menu.Show()
End Sub
Private Sub tmrMain_Tick(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles tmrMain.Tick
If Not mProcess Then
mProcess = True
pRefreshGridData()
mProcess = False
End If
End Sub
End Class
F. Class Point_Of_Sales
Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.Configuration
Public Class Point_Of_Sales
Friend lTotal As Long = 0, sOrderNo As String = ""
Private Sub btnback_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnback.Click
Me.Dispose()
Main_Menu.Show()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
lbltime.Text = Format(Now, "hh:mm:ss tt")
lbldate.Text = Format(Now, "dddd, dd MMMM yyyy")
87
End Sub
Private Sub Point_Of_Sales_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
btnback_Click(Nothing, Nothing)
End Sub
Private Sub Point_Of_Sales_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
lbluser.Text = gNama
txttableid.Focus()
End Sub
Private Sub txtsales_KeyDown(ByVal sender As Object, ByVal e
As System.Windows.Forms.KeyEventArgs) Handles txttableid.KeyDown
If e.KeyCode = Keys.Enter Then
If txttableid.Text.Trim <> "" Then
pShowOrderList(txttableid.Text.Trim)
End If
End If
End Sub
Private Sub pShowOrderList(ByVal prmTableNo As String)
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Dim _sqlView As String = String.Format("SELECT
b.description as [Order],b.price as [Harga/item],a.qty, [Total] =
b.price * a.qty,a.order_number FROM [order] a inner join
item_master b on rtrim(a.plu) = rtrim(b.plu) inner join
statusOrder c on a.order_number = c.order_number where
a.table_id='{0}' AND Finish = 1 and a.order_number not in (select
distinct order_number from Salesorder)", prmTableNo.Trim)
Dim _sqlDA As New SqlDataAdapter(_sqlView, oConn)
Dim _sqlDS As New DataSet
_sqlDA.Fill(_sqlDS)
gridpos.DataSource = _sqlDS.Tables(0)
_sqlDA.Dispose()
_sqlDS.Dispose()
gridpos.Columns(4).Visible = False
If gridpos.RowCount > 0 Then
lTotal = 0
lblnosales.Text = "No. Sales:"
lblOrder.Text = gridpos.Rows(0).Cells(4).Value
lblnosales.Visible = False
lblOrder.Visible = False
For Each oRow As DataGridViewRow In gridpos.Rows
lTotal = lTotal + oRow.Cells(3).Value
Next
txttotal.Text = String.Format("Rp. {0}",
FormatNumber(lTotal, 0, TriState.False, TriState.False,
TriState.True))
88
Else
lblnosales.Text = "Note :"
lblOrder.Text = "Order belum selesai diproses"
txttotal.Text = ""
lblnosales.Visible = True
lblOrder.Visible = True
End If
End Using
End Sub
Private Sub btnpayment_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btnpayment.Click
sOrderNo = lblOrder.Text.Trim
Payment.Show()
Me.Dispose()
End Sub
End Class
G. Class Payment
Imports System.Data
Imports System.Data.SqlClient
Public Class Payment
Friend mOrderNo As String, mTotal As Long
Private Sub Payment_Deactivate(ByVal sender As Object, ByVal e
As System.EventArgs) Handles Me.Deactivate
btncancel_Click(Nothing, Nothing)
End Sub
Private Sub Payment_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load
dvPayment.Columns.Clear()
dvPayment.Rows.Clear()
dvPayment.Columns.Add("No", "No.")
dvPayment.Columns("No").Width = 50
dvPayment.Columns.Add("Type", "Tipe Bayar")
dvPayment.Columns("Type").Width = 150
dvPayment.Columns.Add("Amount", "Jumlah Bayar")
dvPayment.Columns("Amount").Width = 220
lblOrderNo.Text = Point_Of_Sales.sOrderNo.Trim
lbltotal.Text = FormatNumber(Point_Of_Sales.lTotal, 0,
TriState.True, TriState.False, TriState.True)
txtdisc.Text = "0"
lblnetamount.Text = FormatNumber(Point_Of_Sales.lTotal, 0,
TriState.True, TriState.False, TriState.True)
lblbayar.Text = "0"
lblkembali.Text = "0"
End Sub
Private Sub txtdisc_GotFocus(ByVal sender As Object, ByVal e
As System.EventArgs)
If txtdisc.Text.Trim <> "" Then
89
txtdisc.Text = FormatNumber(txtdisc.Text, 0,
TriState.True, TriState.False, TriState.False)
End If
End Sub
Private Sub txtdisc_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs)
If e.KeyCode = Keys.Enter Then
If txtdisc.Text.Trim <> "" Then
cmbtype.Focus()
End If
End If
End Sub
Private Sub txtdisc_LostFocus(ByVal sender As Object, ByVal e
As System.EventArgs)
If txtdisc.Text.Trim <> "" Then
lblnetamount.Text =
FormatNumber(FormatNumber(lbltotal.Text, 0, TriState.True,
TriState.False, TriState.False) - CLng(txtdisc.Text), 0,
TriState.True, TriState.False, TriState.True)
txtdisc.Text = FormatNumber(txtdisc.Text, 0,
TriState.True, TriState.False, TriState.True)
End If
End Sub
Private Sub btncancel_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btncancel.Click
Point_Of_Sales.Show()
Me.Close()
Me.Dispose()
End Sub
Private Sub btnadd_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnadd.Click
If txtamount.Text.Trim <> "" And
IsNumeric(txtamount.Text.Trim) Then
dvPayment.Rows.Add()
Using oRow As DataGridViewRow =
dvPayment.Rows(dvPayment.RowCount - 1)
oRow.Cells(0).Value = dvPayment.RowCount
oRow.Cells(1).Value = IIf(cmbtype.SelectedIndex =
0, "CASH", "CARD")
oRow.Cells(2).Value =
FormatNumber(txtamount.Text.Trim, 0, TriState.False,
TriState.False, TriState.True)
End Using
Dim lRunTotal As Long = 0
For Each oRow As DataGridViewRow In dvPayment.Rows
lRunTotal = lRunTotal +
FormatNumber(oRow.Cells(2).Value, 0, TriState.False,
TriState.False, TriState.False)
Next
lblbayar.Text = FormatNumber(lRunTotal, 0,
TriState.False, TriState.False, TriState.True)
lblkembali.Text = FormatNumber(lRunTotal -
FormatNumber(lblnetamount.Text, 0, TriState.True, TriState.False,
TriState.False), 0, TriState.True, TriState.False, TriState.True)
End If
90
End Sub
Private Sub btnpaid_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnpaid.Click
If dvPayment.RowCount > 0 Then
If CLng(FormatNumber(lblkembali.Text, 0,
TriState.True, TriState.False, TriState.False)) > -1 Then
Dim dPaidTime As Date = Now()
For Each oRow As DataGridViewRow In dvPayment.Rows
Dim lDisc As Long = 0, lReturn As Long = 0
If oRow.Cells(1).Value = "CASH" Then
lReturn = FormatNumber(lblkembali.Text, 0,
TriState.True, TriState.False, TriState.False)
End If
If oRow.Index = dvPayment.RowCount - 1 Then
lDisc = FormatNumber(txtdisc.Text.Trim, 0,
TriState.True, TriState.False, TriState.False)
End If
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Using oCmd As New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText =
String.Format("INSERT INTO SalesOrder SELECT
'{0}','{1}',{2},{3},{4},'{5}'", lblOrderNo.Text.Trim,
oRow.Cells(1).Value, FormatNumber(oRow.Cells(2).Value, 0,
TriState.True, TriState.False, TriState.False), lDisc, lReturn,
dPaidTime.ToString("yyyy-MM-dd HH:mm:ss"))
oCmd.ExecuteNonQuery()
oCmd.Dispose()
End Using
End Using
Next
btncancel_Click(Nothing, Nothing)
Else
cmbtype.Focus()
End If
End If
End Sub
Private Sub cmbtype_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmbtype.SelectedIndexChanged
txtamount.Text = ""
txtamount.Focus()
End Sub
End Class
91
H. Class User_Login
Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.Configuration
Public Class User_Login
Private Sub User_Login_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
btnback_Click(Nothing, Nothing)
End Sub
Private Sub User_Login_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
lbluser.Text = gNama
Call pvRefreshGridData()
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
chkshow.Visible = False
txtpass.UseSystemPasswordChar = Not chkshow.Checked
End Sub
Private Sub btnadd_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnadd.Click
Call aktif()
Call clear()
txtid.Focus()
End Sub
Private Sub aktif()
txtid.Enabled = True
txtname.Enabled = True
txtpass.Enabled = True
rdbadmin.Enabled = True
rdbcashier.Enabled = True
btnadd.Enabled = False
btncancel.Enabled = True
btndelete.Enabled = False
btnsave.Enabled = True
chkshow.Visible = True
End Sub
Private Sub nonaktif()
txtid.Enabled = False
txtname.Enabled = False
txtpass.Enabled = False
rdbadmin.Enabled = False
rdbcashier.Enabled = False
chkshow.Visible = False
btnadd.Enabled = True
btncancel.Enabled = False
btndelete.Enabled = False
btnsave.Enabled = False
92
End Sub
Private Sub clear()
txtid.Text = ""
txtname.Text = ""
txtpass.Text = ""
'rdbadmin.Text = False
'rdbcashier.Text = False
End Sub
Private Sub pvRefreshGridData()
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Dim _sqlView As String = "SELECT userid as [User ID],
name as [Name], password as [Password], level as [Level] FROM
user_login"
Dim _sqlDA As New SqlDataAdapter(_sqlView, oConn)
Dim _sqlDS As New DataSet
_sqlDA.Fill(_sqlDS)
griduser.DataSource = _sqlDS.Tables(0)
_sqlDA.Dispose()
_sqlDS.Dispose()
End Using
End Sub
Private Sub btncancel_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btncancel.Click
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
End Sub
Private Sub btnsave_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnsave.Click
Dim squery As String = ""
Dim sLevel As String = ""
Using oConn As SqlConnection = New SqlConnection
oConn.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
oConn.Open()
Using oCmd As SqlCommand = New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = "select * from user_login where
userid='" & txtid.Text & "'"
If rdbadmin.Checked Then
sLevel = "Admin"
Else
93
sLevel = "Cashier"
End If
Using oReader As SqlDataReader =
oCmd.ExecuteReader
If oReader.HasRows Then
squery = String.Format("UPDATE user_login
SET name='{1}'," & _
"password='{2}',level='{3}' WHERE userid='{0}'", txtid.Text.Trim,
txtname.Text.Trim, ComputeHash(txtpass.Text.Trim, Nothing),
sLevel)
Else
squery = String.Format("INSERT into
user_login VALUES('{0}','{1}','{2}','{3}')", txtid.Text.Trim,
txtname.Text.Trim, ComputeHash(txtpass.Text.Trim, Nothing),
sLevel)
End If
MsgBox("Data has been saved...",
MsgBoxStyle.Information, "Info")
oReader.Close()
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
End Using
oCmd.CommandText = squery
oCmd.ExecuteNonQuery()
End Using
If oConn.State = ConnectionState.Open Then
oConn.Close()
End Using
Call pvRefreshGridData()
End Sub
Private Sub btnedit_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnedit.Click
btnedit.Visible = False
btnfind.Visible = True
Call aktif()
Call clear()
txtid.Focus()
btndelete.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
lbltime.Text = Format(Now, "hh:mm:ss tt")
lbldate.Text = Format(Now, "dddd, dd MMMM yyyy")
End Sub
Private Sub btnback_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnback.Click
Me.Dispose()
Main_Menu.Show()
End Sub
94
Private Sub chkshow_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
chkshow.CheckedChanged
txtpass.UseSystemPasswordChar = Not chkshow.Checked
End Sub
Private Sub griduser_CellContentClick(ByVal sender As
System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
griduser.CellContentClick
If griduser.RowCount > 0 Then
If
griduser.Rows(e.RowIndex).Cells(0).Value.ToString.Trim <> "" Then
txtid.Text =
griduser.Rows(e.RowIndex).Cells(0).Value
txtname.Text =
griduser.Rows(e.RowIndex).Cells(1).Value
txtpass.Text =
griduser.Rows(e.RowIndex).Cells(2).Value
rdbadmin.Text =
griduser.Rows(e.RowIndex).Cells(3).Value
End If
End If
End Sub
Private Sub btnfind_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnfind.Click
If txtid.Text <> "" Then
Dim okoneksi As New SqlConnection
okoneksi.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
okoneksi.Open()
Dim okomen As New SqlCommand
okomen.Connection = okoneksi
okomen.CommandType = CommandType.Text
okomen.CommandText = String.Format("select * from
user_login where userid='{0}'", txtid.Text)
Dim orider As SqlDataReader = okomen.ExecuteReader
If orider.HasRows Then
Do While orider.Read
txtid.Text = orider.GetValue(0).ToString
txtname.Text = orider.GetValue(1).ToString
txtpass.Text = orider.GetValue(2).ToString
If UCase(orider.GetValue(3).ToString.Trim) =
"ADMIN" Then
rdbadmin.Checked = True
Else
rdbcashier.Checked = True
End If
Loop
txtid.Enabled = False
Else
MsgBox("Data not found, please check again...!!",
MsgBoxStyle.Exclamation, "Verification")
txtid.Text = ""
txtid.Focus()
95
End If
orider.Close()
okomen.Dispose()
okoneksi.Close()
okoneksi.Dispose()
End If
End Sub
Private Sub btndelete_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btndelete.Click
Dim squery As String = ""
Using oConn As SqlConnection = New SqlConnection
oConn.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
oConn.Open()
If txtid.Text <> "" Then
If MsgBox("Are you sure to delete this data?",
MsgBoxStyle.YesNo, "Confirm") = vbYes Then
Dim okomen As New SqlCommand
okomen.Connection = oConn
okomen.CommandType = CommandType.Text
okomen.CommandText = "delete user_login where
userid='" & txtid.Text & "'"
okomen.ExecuteNonQuery()
MsgBox("Data has been delete...!!",
MsgBoxStyle.Information, "Info")
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
End If
End If
End Using
Call pvRefreshGridData()
End Sub
Private Sub txtid_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles txtid.KeyDown
If e.KeyCode = Keys.Enter Then
If txtid.Text.Trim <> "" Then
Dim okoneksi As New SqlConnection
okoneksi.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
okoneksi.Open()
Dim okomen As New SqlCommand
okomen.Connection = okoneksi
okomen.CommandType = CommandType.Text
okomen.CommandText = String.Format("select * from
user_login where userid='{0}'", txtid.Text)
Dim orider As SqlDataReader = okomen.ExecuteReader
If orider.HasRows Then
MsgBox("Data already exist, please check
again...!!", MsgBoxStyle.Exclamation, "Verification")
Do While orider.Read
txtid.Text = orider.GetValue(0).ToString
96
txtname.Text = orider.GetValue(1).ToString
txtpass.Text = orider.GetValue(2).ToString
If UCase(orider.GetValue(3).ToString.Trim)
= "ADMIN" Then
rdbadmin.Checked = True
Else
rdbcashier.Checked = True
End If
Loop
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
Else
txtname.Focus()
End If
orider.Close()
okomen.Dispose()
okoneksi.Close()
okoneksi.Dispose()
End If
End If
End Sub
Private Sub txtname_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles txtname.KeyDown
If e.KeyCode = Keys.Enter Then
txtpass.Focus()
End If
End Sub
End Class
I. Class Item_Master
Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.Configuration
Public Class Item_Master
Private Sub Item_Master_FormClosing(ByVal sender As Object,
ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
btnback_Click(Nothing, Nothing)
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the
'MPDataSet.item_master' table. You can move, or remove it, as
needed.
lbluser.Text = gNama
Call pvRefreshGridData()
Call clear()
Call nonaktif()
Call listcombobox()
97
Call listcombobox2()
btnedit.Visible = True
btnfind.Visible = False
End Sub
Private Sub btnsave_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnsave.Click
Dim squery As String = ""
Dim sCategory As String = ""
Using oConn As SqlConnection = New SqlConnection
oConn.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
oConn.Open()
Using oCmd As SqlCommand = New SqlCommand
oCmd.Connection = oConn
oCmd.CommandType = CommandType.Text
oCmd.CommandText = "select * from item_master
where plu='" & txtplu.Text & "'"
If rdbfood.Checked Then
sCategory = "Food"
Else
sCategory = "Beverage"
End If
Using oReader As SqlDataReader =
oCmd.ExecuteReader
If oReader.HasRows Then
squery = String.Format("UPDATE item_master
SET description='{1}'," & _
"unit='{2}',size='{3}',price='{4}', category='{5}' WHERE
plu='{0}'", txtplu.Text.Trim, txtdesc.Text.Trim,
cmbunit.Text.Trim, cmbsize.Text.Trim, txtprice.Text.Trim,
sCategory)
Else
squery = String.Format("INSERT into
item_master VALUES('{0}','{1}','{2}','{3}','{4}','{5}')",
txtplu.Text.Trim, txtdesc.Text.Trim, cmbunit.Text.Trim,
cmbsize.Text.Trim, txtprice.Text.Trim, sCategory)
End If
MsgBox("Data has been saved...",
MsgBoxStyle.Information, "Info")
oReader.Close()
Call clear()
Call nonaktif()
End Using
oCmd.CommandText = squery
oCmd.ExecuteNonQuery()
End Using
If oConn.State = ConnectionState.Open Then
oConn.Close()
End Using
98
Call pvRefreshGridData()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Timer1.Tick
lbltime.Text = Format(Now, "hh:mm:ss tt")
lbldate.Text = Format(Now, "dddd, dd MMMM yyyy")
End Sub
Private Sub clear()
txtplu.Text = ""
txtdesc.Text = ""
txtprice.Text = ""
End Sub
Private Sub listcombobox()
cmbunit.Text = "-"
cmbunit.Items.Add("Slice")
cmbunit.Items.Add("Pcs")
cmbunit.Items.Add("Individual")
cmbunit.Items.Add("Whole")
cmbunit.Items.Add("Small")
cmbunit.Items.Add("Medium")
cmbunit.Items.Add("Large")
End Sub
Private Sub listcombobox2()
cmbsize.Text = "-"
cmbsize.Items.Add("20")
cmbsize.Items.Add("22")
cmbsize.Items.Add("15x15")
cmbsize.Items.Add("30x30")
cmbsize.Items.Add("40x40")
End Sub
Private Sub nonaktif()
txtplu.Enabled = False
txtdesc.Enabled = False
cmbunit.Enabled = False
cmbsize.Enabled = False
txtprice.Enabled = False
btnadd.Enabled = True
btncancel.Enabled = False
btndelete.Enabled = False
btnsave.Enabled = False
cmbunit.Text = "-"
cmbsize.Text = "-"
rdbfood.Enabled = False
rdbbeverage.Enabled = False
End Sub
Private Sub btncancel_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btncancel.Click
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
End Sub
99
Private Sub btnadd_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnadd.Click
Call aktif()
Call clear()
txtplu.Focus()
End Sub
Private Sub aktif()
txtplu.Enabled = True
txtdesc.Enabled = True
cmbunit.Enabled = True
cmbsize.Enabled = True
txtprice.Enabled = True
btnadd.Enabled = False
btncancel.Enabled = True
btndelete.Enabled = False
btnsave.Enabled = True
rdbfood.Enabled = True
rdbbeverage.Enabled = True
End Sub
Private Sub btndelete_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles btndelete.Click
Dim squery As String = ""
Using oConn As SqlConnection = New SqlConnection
oConn.ConnectionString = "initial
catalog=MP;server=.\SQLEXPRESS;uid=sa;pwd="
oConn.Open()
If txtplu.Text <> "" Then
If MsgBox("Are you sure to delete this data?",
MsgBoxStyle.YesNo, "Confirm") = vbYes Then
Dim okomen As New SqlCommand
okomen.Connection = oConn
okomen.CommandType = CommandType.Text
okomen.CommandText = "delete item_master where
plu='" & txtplu.Text & "'"
okomen.ExecuteNonQuery()
MsgBox("Data has been delete...!!",
MsgBoxStyle.Information, "Info")
Call clear()
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
End If
End If
End Using
Call pvRefreshGridData()
End Sub
Private Sub btnfind_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnfind.Click
If txtplu.Text <> "" Then
Dim okoneksi As New SqlConnection
okoneksi.ConnectionString = "initial
catalog=MP;server=TEN_TEN\SQLEXPRESS;uid=sa;pwd="
100
okoneksi.Open()
Dim okomen As New SqlCommand
okomen.Connection = okoneksi
okomen.CommandType = CommandType.Text
okomen.CommandText = String.Format("select * from
item_master where plu='{0}'", txtplu.Text)
Dim orider As SqlDataReader = okomen.ExecuteReader
If orider.HasRows Then
Do While orider.Read
txtplu.Text = orider.GetValue(0).ToString
txtdesc.Text = orider.GetValue(1).ToString
cmbunit.Text = orider.GetValue(2).ToString
cmbsize.Text = orider.GetValue(3).ToString
txtprice.Text = orider.GetValue(4).ToString
If UCase(orider.GetValue(5).ToString.Trim) =
"FOOD" Then
rdbfood.Checked = True
Else
rdbbeverage.Checked = True
End If
Loop
txtplu.Enabled = False
Else
MsgBox("Data not found, please check again...!!",
MsgBoxStyle.Exclamation, "Verification")
txtplu.Text = ""
txtplu.Focus()
End If
orider.Close()
okomen.Dispose()
okoneksi.Close()
okoneksi.Dispose()
End If
End Sub
Private Sub btnedit_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnedit.Click
btnedit.Visible = False
btnfind.Visible = True
Call aktif()
Call clear()
txtplu.Focus()
btndelete.Enabled = True
End Sub
Private Sub pvRefreshGridData()
Using oConn As SqlConnection = New
SqlConnection("Server=.\SQLEXPRESS;Initial Catalog=MP;User
ID=sa;password=")
oConn.Open()
Dim _sqlView As String = "SELECT plu as [PLU],
description as [Description], unit as [Unit], size as [Size],
price as [Price], category as [Category] FROM item_master"
Dim _sqlDA As New SqlDataAdapter(_sqlView, oConn)
Dim _sqlDS As New DataSet
101
_sqlDA.Fill(_sqlDS)
griditem.DataSource = _sqlDS.Tables(0)
_sqlDA.Dispose()
_sqlDS.Dispose()
End Using
End Sub
Private Sub griditem_CellContentClick(ByVal sender As
System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
griditem.CellContentClick
If griditem.RowCount > 0 Then
If
griditem.Rows(e.RowIndex).Cells(0).Value.ToString.Trim <> "" Then
txtplu.Text =
griditem.Rows(e.RowIndex).Cells(0).Value
txtdesc.Text =
griditem.Rows(e.RowIndex).Cells(1).Value
cmbunit.Text =
griditem.Rows(e.RowIndex).Cells(2).Value
cmbsize.Text =
griditem.Rows(e.RowIndex).Cells(3).Value
txtprice.Text =
griditem.Rows(e.RowIndex).Cells(4).Value
rdbfood.Text =
griditem.Rows(e.RowIndex).Cells(3).Value
End If
End If
End Sub
Private Sub txtplu_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles txtplu.KeyDown
If e.KeyCode = Keys.Enter Then
If txtplu.Text.Trim <> "" Then
If txtplu.Text <> "" Then
Dim okoneksi As New SqlConnection
okoneksi.ConnectionString = "initial
catalog=MP;server=TEN_TEN\SQLEXPRESS;uid=sa;pwd="
okoneksi.Open()
Dim okomen As New SqlCommand
okomen.Connection = okoneksi
okomen.CommandType = CommandType.Text
okomen.CommandText = String.Format("select *
from item_master where plu='{0}'", txtplu.Text)
Dim orider As SqlDataReader =
okomen.ExecuteReader
If orider.HasRows Then
MsgBox("Data already exist, please check
again...!!", MsgBoxStyle.Exclamation, "Verification")
Do While orider.Read
102
txtplu.Text =
orider.GetValue(0).ToString
txtdesc.Text =
orider.GetValue(1).ToString
cmbunit.Text =
orider.GetValue(2).ToString
cmbsize.Text =
orider.GetValue(3).ToString
txtprice.Text =
orider.GetValue(4).ToString
If
UCase(orider.GetValue(5).ToString.Trim) = "FOOD" Then
rdbfood.Checked = True
Else
rdbbeverage.Checked = True
End If
Loop
Call nonaktif()
btnedit.Visible = True
btnfind.Visible = False
Else
txtdesc.Focus()
End If
orider.Close()
okomen.Dispose()
okoneksi.Close()
okoneksi.Dispose()
End If
End If
End If
End Sub
Private Sub btnback_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnback.Click
Me.Dispose()
Main_Menu.Show()
End Sub
Private Sub cmbunit_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmbunit.SelectedIndexChanged
cmbunit.Focus()
End Sub
Private Sub cmbsize_SelectedIndexChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
cmbsize.SelectedIndexChanged
txtprice.Focus()
End Sub
End Class
103
J. Class Report
Imports System.Data
Imports System.Text
Imports System.Data.SqlClient
Imports System.Configuration
Public Class Report
Private Sub Report_FormClosing(ByVal sender As Object, ByVal e
As System.Windows.Forms.FormClosingEventArgs) Handles
Me.FormClosing
btnback_Click(Nothing, Nothing)
End Sub
Private Sub Report_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub btnback_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnback.Click
Me.Dispose()
Main_Menu.Show()
End Sub
Private Sub pShowReport(ByVal prmReportName As String,
Optional ByVal prmArg() As Object = Nothing)
Try
Dim oCRApp As CRAXDRT.Application = New
CRAXDRT.Application
Dim oCR As CRAXDRT.Report =
oCRApp.OpenReport(String.Format("{0}\{1}",
My.Application.Info.DirectoryPath, prmReportName).Replace("//",
"/"))
With oCR
Dim sServer As String = ".\SQLEXPRESS"
Dim sDB As String = "MP"
Dim sUID As String = "sa"
Dim sPass As String = ""
For Each oLogonTable As CRAXDRT.DatabaseTable In
.Database.Tables
oLogonTable.SetLogOnInfo(sServer, sDB, sUID,
sPass)
Next
If Not prmArg Is Nothing Then
For Each oParam As
CRAXDRT.ParameterFieldDefinition In oCR.ParameterFields
If
oParam.ParameterFieldName.ToUpper.ToString.Contains("START") Then
oParam.ClearCurrentValueAndRange()
oParam.AddCurrentValue(prmArg(0))
ElseIf
oParam.ParameterFieldName.ToUpper.ToString.Contains("END") Then
oParam.ClearCurrentValueAndRange()
oParam.AddCurrentValue(prmArg(1))
104
End If
Next
End If
'.SQLQueryString = prmQuery
.ExportOptions.FormatType =
CRAXDRT.CRExportFormatType.crEFTPortableDocFormat
.ExportOptions.DestinationType =
CRAXDRT.CRExportDestinationType.crEDTDiskFile
Try
If
IO.File.Exists(String.Format("{0}\tmpReport.pdf",
My.Application.Info.DirectoryPath).Replace("\\", "\")) Then
IO.File.Delete(String.Format("{0}\tmpReport.pdf",
My.Application.Info.DirectoryPath).Replace("\\", "\"))
End If
Catch e As Exception
End Try
.ExportOptions.DiskFileName =
String.Format("{0}\tmpReport.pdf",
My.Application.Info.DirectoryPath).Replace("\\", "\")
.ExportOptions.PDFExportAllPages =
.ExportOptions.PDFExportAllPages
.ExportOptions.PDFFirstPageNumber =
.ExportOptions.PDFFirstPageNumber
.ExportOptions.PDFLastPageNumber =
.ExportOptions.PDFLastPageNumber
.Export(False)
End With
oCR = Nothing
oCRApp = Nothing
If IO.File.Exists(String.Format("{0}\tmpReport.pdf",
My.Application.Info.DirectoryPath).Replace("\\", "\")) Then
System.Diagnostics.Process.Start(String.Format("{0}\tmpReport.pdf"
, My.Application.Info.DirectoryPath).Replace("\\", "\"))
End If
Catch ex As Exception
End Try
End Sub
Private Sub optItem_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
optItem.CheckedChanged
dtpStart.Enabled = False
dtpEnd.Enabled = False
End Sub
Private Sub optOrder_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
optOrder.CheckedChanged
dtpStart.Enabled = True
105
dtpEnd.Enabled = True
End Sub
Private Sub optTable_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
optTable.CheckedChanged
dtpStart.Enabled = True
dtpEnd.Enabled = True
End Sub
Private Sub optPos_CheckedChanged(ByVal sender As
System.Object, ByVal e As System.EventArgs) Handles
optPos.CheckedChanged
dtpStart.Enabled = True
dtpEnd.Enabled = True
End Sub
Private Sub btnview_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles btnview.Click
If optItem.Checked Then
pShowReport("RptItemMaster.rpt")
ElseIf optOrder.Checked Then
Dim dStartDate As Date = dtpStart.Value
Dim dEndDate As Date = dtpEnd.Value
Dim arg(1) As Object
arg(0) = dStartDate
arg(1) = dEndDate
pShowReport("RptSalesByOrder.rpt", arg)
ElseIf optTable.Checked Then
Dim dStartDate As Date = dtpStart.Value
Dim dEndDate As Date = dtpEnd.Value
Dim arg(1) As Object
arg(0) = dStartDate
arg(1) = dEndDate
pShowReport("RptSalesByTable.rpt", arg)
ElseIf optPos.Checked Then
Dim dStartDate As Date = dtpStart.Value
Dim dEndDate As Date = dtpEnd.Value
Dim arg(1) As Object
arg(0) = dStartDate
arg(1) = dEndDate
pShowReport("RptSalesByPos.rpt", arg)
End If
End Sub
End Class
106
4.4. Testing
A. Form Order
Tabel IV.13
Hasil Pengujian Black Box Testing Form Order
B. Form Login Menu
Tabel IV.14
Hasil Pengujian Black Box Testing Form Login Menu
107
C. Form Main Menu
Tabel IV.15
Hasil Pengujian Black Box Testing Form Main Menu
D. Form Point Of Sales
Tabel IV.16
Hasil Pengujian Black Box Testing Form Point Of Sales
108
E. Form User Login
Tabel IV.17
Hasil Pengujian Black Box Testing Form User Login
F. Form Item Master
Tabel IV.18
Hasil Pengujian Black Box Testing Form Item Master
109
4.5. Support
Dalam pembuatan applikasi pemesanan makanan dan minuman ini,
penulis menggunakan 2 bahasa pemrograman yaitu java dan vb. Untuk
mendukung itu semua, masing-masing memiliki spesifikasi hardware dan
software tersendiri. Untuk java, disini penulis menggunakan software
eclipse, untuk vb menggunakan vb.net, sedangkan untuk databasenya
sendiri menggunakan SQL SERVER 2005 EXPRESS.
Untuk penggunaan hardware, penulis menyarankan memakai
processor Core I3 atau sesudahnya dengan RAM minimal 2GB. Sebab
software eclipse itu sendiri lumayan banyak menggunakan resources
memory.
4.5.1. Spesifikasi Hardware dan Software
Tabel IV.19
Spesifikasi Hardware dan Software
Kebutuhan Keterangan
Sistem Operasi : Windows 7
Processor : Core I 3, 2.10 GHz
RAM : 2 GB
Harddisk : 600 GB
CD-ROM : DVD R/W
Monitor : 14"
Keyboard : 85 keys
Printer : Dot Matrik (Struk), Laser Jet (Report)
Mouse : Optical Mouse USB
Browser : Mozilla Firefox, Google Chrome
Software : Eclipse, VB.Net, SQL Server 2005 EXPRESS
110
4.6. Spesifikasi Dokumen Sistem Usulan
Berikut ini akan dibahas dokumen sistem usulan dari sistem
pemesanan makanan dan minuman pada Michel’s Patisserie :
a. Nama Dokumen : Struk Pembayaran
Fungsi : Sebagai bukti pembayaran
Sumber : Cashier
Tujuan : Pelanggan
Media : Kertas
Frekuensi : Setiap pelanggan melakukan pembayaran
Format : Lampiran B – 1
b. Nama Dokumen : Laporan Data Item Master
Fungsi : Sebagai acuan menu untuk cashier atau waiters
Sumber : Admin
Tujuan : cashier atau waiters
Media : Kertas
Frekuensi : Setiap dibutuhkan untuk laporan
Format : Lampiran B – 2
c. Nama Dokumen : Laporan Penjualan Per Sales Order
Fungsi : Sebagai laporan penjualan per nomor sales
Sumber : Admin
Tujuan : Store Manager
Media : Kertas
Frekuensi : Setiap store manager memerlukan data tersebut
Format : Lampiran B – 3
111
d. Nama Dokumen : Laporan Penjualan Per Table ID
Fungsi : Sebagai laporan penjualan per nomor meja
Sumber : Admin
Tujuan : Store Manager
Media : Kertas
Frekuensi : Setiap store manager memerlukan data tersebut
Format : Lampiran B – 4
e. Nama Dokumen : Laporan Penjualan Per POS ID
Fungsi : Sebagai laporan penjualan per nomor POS
Sumber : Admin
Tujuan : Store Manager
Media : Kertas
Frekuensi : Setiap store manager memerlukan data tersebut
Format : Lampiran B – 5
top related