kata - web viewdkk yang telah berbaik hati memberikan aplikasi inventory ini untuk dijadikan...
TRANSCRIPT
PROPOSALPROPOSALPENAWARAN SISTEM APLIKASI INVENTORY DI PENAWARAN SISTEM APLIKASI INVENTORY DI
TOKO PERLENGKAPAN KOMPUTER (DATALIMA)TOKO PERLENGKAPAN KOMPUTER (DATALIMA)
HENDRA KURNIAWAN107091002527
FAKULTAS SAINS DAN TEKNOLOGIJURUSAN TEKNIK INFORMATIKA
UNIVERSITAS SYARIF HIDAYATULLAH JAKARTA2009
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah swt, karena berkat izin dan
rahmat-Nya penulis dapat menyelesaikan proposal ini dengan baik dan tepat pada
waktunya. Shalawat serta salam semoga tercurah kepada penghulu alam Nabi
Muhammad saw.
Proposal yang berjudul SISTEM PENAWARAN APLIKASI INVENTORY
DI TOKO PERLENGKAPAN KOMPUTER(DATALIMA) ini disusun untuk
memenuhi kriteria tugas individu mata kuliah Rekayasa Perangkat Lunak Semester
IV. Adapun tema yang diangkat penulis dalam proposal ini adalah berkenaan dengan
inventory (inventarisasi/ persediaan) barang. Alasan penulis memilih tema tersebut
adalah karena pertama, penulis merasa tertarik untuk mengetahui seluk beluk bagian
inventory dalam sebuah perusahaan.
Kedua, penulis menganggap bahwa tema tersebut belum dipakai oleh
mahasiswa yang lain di kelas, sehingga merupakan tema yang baru dan satu-satunya.
Dengan demikian penilaian yang dilakukan bisa maksimal karena hanya satu tema
yang diangkat oleh satu mahasiswa.
Sekilas tentang inventory ̶ dalam bahasa indonesia inventory bisa disebut
sebagai barang persediaan. Barang-barang ini bisa berupa barang mentah, barang
setengah jadi, barang jadi atapun barang-barang spare part untuk keperluan
maintenance lainnya. Pada era sekarang ini, tentu saja untuk mengatur inventory
secara manual sangat sulit dilakukan. Maka untuk mengatasi masalah tersebut
diperlukan sebuah software (aplikasi) yang bertujuan untuk mengefisiensikan
kegiatan inventory. Dalam proposal ini, yang akan penulis bahas adalah inventory
untuk barang jadi atau barang penjualan di sebuah Toko Komputer Bernama
DATALIMA.
Dalam proposal ini akan dijelaskan mengenai tahapan-tahapan dalam
pengajuan sebuah software (aplikasi) kepada customer yang dalam hal ini adalah
sebuah toko perlengkapan komputer bernama DATALIMA. Tahapan-tahapan
tersebut meliputi bagaimana caranya menganalisis kondisi bisnis tok, peluang apa
yang sekiranya bisa diperoleh dari kondisi tersebut, dan bagaimana solusi untuk
mengatasi kekuarang bisnis proses pada toko tersebut.
Jadi, proposal ini adalah sebuah latihan untuk bagaimana caranya untuk
mengajukan sebuah project Perangkat Lunak pada seorang customer. Diasumsikan,
bahwa penulis adalah seorang perancang atau desainer sitem, dan dosen sebagai
customer. Penulis akan mempresentasikan aplikasi yang ditawarkan dan dosen
menilai apakah rancangan sitem aplikasi tersebut sudah sesuai dengan kriteria atau
belum.
Penulis berharap, proposal ini bisa mendapatkan apresiasi yang maksimal
dari dosen terkait. Akan tetapi, penulis menyadari pula bahwa proposal ini masih
jauh dari baik dan sempurna. Untuk itu, penulis berharap kepada dosen terkait
ataupun pembaca untuk bisa memberikan kritik ataupun saran kepada penuis
terhadap proposal ini. Hal tersebut diharapkan tidak lain untuk bahan evaluasi
penulis dalam menyusun proposal yang lebih baik dimasa yang akan datang.
Akhirnya, penulis ingin berterima kasih kepada pihak-pihak yang telah
membantu dalam penyusunan proposal ini. Kepada orang tua penulis yang selalu
memberikan dukungan moril maupun materiil dalam menjalankan peran di kampus.
Kepada Ibu A. Hanifah, S.Msi yang telah memberikan materi, dan dukungan moral
kepada penulis selaku mahasiswa yang diajar. Kepada Ka Alfian semester 5
peminatan Software Engineering, yang telah membantu penulis dalam meng-oprek
dan menyusun aplikasi inventory tersebut. Kepada Kevin dela Rosa, dkk yang telah
berbaik hati memberikan aplikasi inventory ini untuk dijadikan bahan makalah
(proposal) ini. Dan kepada teman-teman di kelas TI-4D maupun di luar kelas yang
telah banyak memberikan dukungan pula berupa waktu untuk diskusi dan tukar
pikiran. Semoga apa pihak-pihak tersebut lakukan senantiasa dibalas dan
dilipatganakan pahalanya oleh Allah swt.
Terima kasih
Jakarta, Juni 2009
Penulis
Hendra Kurniawan
DAFTAR ISI
KATA PENGANTAR.............................................................................................................2
DAFTAR ISI............................................................................................................................4
BAB I PENDAHULUAN........................................................................................................6
1.1. LATAR BELAKANG.............................................................................................6
1.2. PERMASALAHAN.................................................................................................6
1.3. MAKSUD DAN TUJUAN......................................................................................7
1.4. RUANG LINGKUP PEMBAHASAN...................................................................7
1.5. SISTEMATIKA PENYUSUNAN PROPOSAL...................................................7
BAB II TINJAUAN PUSTAKA.............................................................................................9
2.1. PERANCANGAN SISTEM...................................................................................9
2.1.1. Data Flow Diagram (DFD).............................................................................9
2.1.2. Entity Relationship Diagram (ERD)..............................................................10
2.1.3. Flowchart......................................................................................................12
2.2. PEMBUATAN SISTEM.......................................................................................13
2.2.1. Database Manajemen Systems (DBMS)........................................................13
2.2.2. Structure Query Language (SQL).................................................................13
2.2.3. MySQL...........................................................................................................14
BAB III METODOLOGI.....................................................................................................15
3.1. METODOLOGI....................................................................................................15
3.1. DESAIN SISTEM..................................................................................................15
3.2.1. Desain Data Flow Diagram (DFD)...............................................................15
BAB IV APLIKASI DAN PEMBAHASANNYA...............................................................18
4.1. ANALISIS BISNIS KNOWLAGE......................................................................18
4.2. ANALISIS BISNIS FUNCTION.........................................................................19
4.3. SOURCECODE.....................................................................................................19
4.4. ANALISIS SOURCECODE.................................................................................19
4.4.1. ANALISIS CLASS PROGRAM...................................................................19
4.4.2. ANALISIS FUNGSI PROGRAM.................................................................20
4.4.3. INTERFACE APLIKASI..............................................................................35
BAB V PENUTUP.................................................................................................................38
5.1. PENUTUP..............................................................................................................38
5.2. SARAN...................................................................................................................38
DAFTAR PUSTAKA............................................................................................................39
BAB I PENDAHULUAN
1.1. LATAR BELAKANG
Dalam sistem inventory Toko PK DATALIMA, proses pemasukan dan
pengeluaran barang merupakan hal yang umum terjadi. Dengan jenis barang
mencapai ± 100 dan stok barang yang mencapai ratusan dalam satuan kecil dan
besar, kedua proses tersebut bukan hal yang mudah untuk dilaksanakan.
Pasalnya, mengingat pencatatan pergudangan yang masih bersifat manual, maka
hal tersebut semakin sulit untuk dikerjakan dan diselesaikan.
Untuk proses pemasukan barang, ruang gudang yang terbatas, adanya aturan
peletakan dan kurang mempertimbangkan efisiensi penggunaan ruang
mengakibatkan pengaturan peletakan barang akan menjadi lebih sulit. Selain itu,
saat terjadi penempatan ulang pada barang dalam gudang, belum tentu disertai
dengan dokumentasi yang baik akan tempat dan posisi peletakan yang baru.
Akibatnya dapat terjadi kehilangan barang baik karena tercecer dalam gudang
atau karena ulah pegawai yang tidak bertanggungjawab.
Pada proses pengeluaran barang, penempatan dan perubahan posisi barang yang
kurang terdokumentasi dan terkontrol dengan baik. Hal ini menyebabkan barang
harus dicari terlebih dahulu. Apabila pencarian dilakukan oleh pegawai yang
tidak terlibat dalam proses penempatan atau pemindahan barang akan
menyebabkan kegiatan pengeluaran barang menjadi tidak efisien.
1.1. PERMASALAHAN
Permasalahan yang dikaji adalah berkaitan dengan permasalahan proses bisnis
Toko PK DATALIMA. Dalam hal ini karena ketidakefisienan proses
inventarisasi pada toko ini maka menyebabkan proses bisnis tidak berjalan secara
maksimal. Maka dengan pengajuan proposal aplikasi inventoryi ini, diharapkan
permasalahan tersebut dapat berkurang sehingga proses bisnis toko tersebut dapat
berjalan dengan baik dan maksimal sesuai dengan harapan pemiliknya.
1.2. MAKSUD DAN TUJUAN
Hasil pengajuan proposal ini diharapkan dapat memberikan sebuah solusi sistem
inventory kepada Toko PK DATALIMA yang dapat mempermudah pencatatan
pemasukan, pengeluaran, pencarian, dan penyediaan laporan inventory. Dengan
mudahnya pencatatan laporan inventory tersebut, maka diharapkan pula proses
bisnis dari Toko PK DATALIMA dapat lebih baik sehingga keuntungan (profit)
penjualan dapat meningkat.
1.3. RUANG LINGKUP PEMBAHASAN
Dalam proposal ini terdapat batasan-batasan, diantaranya:
a. Sales Data, pencatatan data penjualan barang,
b. New Orders, pencatatan pemesanan barang baru,
c. Liquidation, pencatatan likuidasi/ penghapusan barang,
d. New Item, pengaturan barang baru,
e. Update Price, pembaharuan harga,
f. Financial, Information, pencatatan informasi finansial toko,
g. Database, database yang digunakan adalah database ber-extensi DAT (.dat).
Database ini digunakan untuk memudahkan pengguna karena tidak harus
meng-install software pendukung database.
h. Perangkat lunak pengembang aplikasi adalah Java Development Kit (JDK
v1.6.11), dan Java Creator (J-Creator).
i. Sistem operasi yang digunakan adalah Windows Vista Home Premium
Genuin.
1.4. SISTEMATIKA PENYUSUNAN PROPOSAL
Propsal ini secara keseluruhan terdiri dari tiga bab, dimana secara garis besar
masing-masing bab membahas hal berikut:
BAB I Pendahuluan: berisi latar belakang, permasalahan, maksud
dan tujuan, ruang lingkup pembahasan, dan sitematika
penyusunan proposal.
BAB II Tinjauan Pustaka: berisi tentang teori-teori dasar yang
relevan berguna untuk menyelesaikan persoalan yang dibahas.
BAB III Metodologi: berisi tentang pembahasan mengenai metode apa
yang dipakai dalam perancangan aplikasi yang diajukan.
BAB IV Aplikasi dan Pembahasannya: berisi tentang analisis
aplikasi yang meliputi analisis kode, analisis class, method,
dan file-file pendukungnya, serta running dan interface
aplikasi.
BAB V Kesimpulan dan Saran: berisi kesimpulan yang mencakup
bebarapa hal penting pada hasil pembahasan sistem, dan
saran-saran yang diajukan bagi penyempurnaan proposal atau
sistem.
Data Storage
BAB II TINJAUAN PUSTAKA
2.1. PERANCANGAN SISTEM
Dalam melakukan perancangan sistem, ada dua hal ada dua model yang
dipergunakan yaitu process modeling dengan menggunakan Data Flow Diagram
(DFD) dan data modeling dengan menggunakan Entity Relationship Diagram
(ERD). Untuk memperjelas detail dari proses dipergunakan Flowchart.
2.1.1. Data Flow Diagram (DFD)
DFD merupakan penggambaran sistem yang menggunakan bentuk simbol untuk
menggambarkan aliran data dalam suatu proses yang saling berhubungan
(McLeod, Jr., Schell, 1979). Beberapa simbol yang dipergunakan untuk
menggambarkan sistem antara lain:
External Entity, merupakan simbol yang mewakili
elemen yang berada di luar sistem, tetapi memiliki
hubungan interaksi dengan sistem.
Proses, merupakan simbol yang mewakili kegiatan untuk
mengubah data menjadi informasi atau masukan untuk
data lain.
Data Store, merupakan simbol yang mewakili tempat
penyimpanan dari data dan dapat dipergunakan bila
dibutuhkan.
Data flow, merupakan simbol yang mewakili arah aliran
data yang berasal dari satu proses, data store atau elemen
lingkungan menuju ke satu proses, data store atau
enviromental element lainnya.
Permodelan sistem dengan menggunakan DFD memiliki level yang menandai
penggambaran sistem mulai dari umum hingga detail. Level yang menandai
hubungan yang paling umum dan menggambarkan sistem secara keseluruhan
disebut context diagram. Dari context diagram selanjutnya dapat diuraikan ke
External Entity
1Proses
Entity 1
dalam DFD level 0, 1, hingga level dimana proses dianggap cukup detail dan
jelas serta tidak bisa diuraikan lebih detail.
Dalam penggambaran proses, perlu diberikan penomoran, demikian juga dengan
level uraian dari proses tersebut. Contohnya proses dengan nomor “1“ pada DFD
level “0” bila diuraikan pada DFD level “1”, maka penomoran proses perlu
didahului dengan nomor proses yang diuraikan, yaitu “1.1”, “1.2”, “1.3” dan
seterusnya. Hal yang sama juga akan berlaku pada penomoran DFD level
selanjutnya.
2.1.2. Entity Relationship Diagram (ERD)
ERD merupakan data modeling yang dipergunakan untuk mendokumentasikan
data sistem. Dokumentasi dilakukan dengan cara menentukan kelompok data apa
saja yang terdapat dalam tiap entity dan bagaimana hubungan antara entity satu
dengan lainnya. Entity dapat berupa environmental element, resource dan
transaksi yang sangat diperlukan dan ddidokumentasikan dalam bentuk data.
Adapun simbol-simbol yang digunakan dalam ERD diantaranya adalah:
Entity, yang termasuk ke dalam entity antara lain
environmental element, resource, dan transaksi yang
sangat penting bagi sistem. Setiap entity memiliki
attribute merupakan karakteristik yang menandai atau
dimiliki oleh entity.
Relationship, menandakan hubungan diantara
entity,simbol relationship kadang diwakili sebagai
garis yang menghubungkan entitiy.
Selain istilah dan simbol di atas, terdapat juga istilah yang menggolongkan
jenis relasi yang dilakukan antar entity, yaitu:
a. Cardinality, menandai jumlah entity yang muncul dalam relasi dengan
entity lainnya. Nilai cardinality ada dua yaitu “1” atau “many”. Bentuk
relasi yang dapat dihasilkan ada tiga yaitu:
One to One Relationship, merupakan ralis antara entity dimana tiap satu
entity hanya dapat berpasangan dengan satu entity pasangannya.
Contohnya adalah relasi antara departemen (entity1) dan kepala
departemen (entity2), dimana satu departemen hanya memiliki satu
kepala departemen, demikian sebaliknya. Tanda lingkaran1
One to Many Relationship, merupakan relasi antar entity dimana tiap satu
entity dapat berpasangan dengan lebih dari satu pasangan pada entity lain.
Contohnya pada relasi antara entity salesman (entity1) dan entity
penjualan (entity2). Satu penjualan hanya dapat dilakukan oleh satu
salesman, sementara salesman dapat terlibat dalam beberapa penjualan
sekaligus.
Many to many relationship, merupakan relasi antar entity dimana
beberapa entity dapat berpasangan dengan lebih dari satu pasangan pada
entity lain. Contohnya pada relasi antara barang (entity 1) dengan
penjualan (entity 2), satu barang dapat terlibat dalam beberapa penjualan
sementara penjualan dapat melibatkan beberapa barang pada transaksi
yang berbeda.
b. Mondatory, menandai apakah semua anggota entity harus berelasi dengan
anggota entity lain atau tidak. Bila semua anggota harus berelasi maka diberi
1 Tanda lingkaran berwarna hanya menunjukkan simbol cardinality ratio
simbol “|” atau disebut juga mandatory/obligatory dan bila semua anggota
tidak harus berelasi maka diberi simbol “o” atau disebut non mandatory/non
obligatory. Contoh: mandatory entity 1 to entity 2 dengan one to one
relationship.
Dari gambar tersebut berarti semua anggota dari entity 1 harus berelasi
dengan anggota dari entitiy 2, dengan memberi simbol “|” di depan entity
2. Sementara dari entity 2 terhadap entity 1 diberi simbol “o” di depan
entity 1, berarti anggota dari entitiy 2 tidak harus berelasi seluruhnya
dengan anggota dari entitiy 1.
2.1.3. Flowchart
Merupakan diagram yang menggambarkan langkah dari sebuah proses.
Dengan menggunakan flowchart maka kerja dari suatu proses dapat dipantau
untuk pengembangan atau perbaikan. Beberapa simbol yang umum
dipergunakan sebagai berikut:
Gambar 1 Simbol Flowchart
2.2. PEMBUATAN SISTEM
2.2.1. Database Manajemen Systems (DBMS)
Yang dimaksud dengan Database adalah semua data yang tersimpan dengan
menggunakan sumberdaya komputer di dalam organisasi, sementara DBMS
merupakan perangkat lunak aplikasi yang menyimpan struktur dari database,
data, dan relasi data dalam database termasuk form dan laporan yang
berhubungan dengan database (McLeod, Jr., Schell, 1979).
Dalam mendesain database, perlu ditentukan jenis server database untuk
mekanisme kerja yang baik. Oleh karena itu diperlukan pertimbangan akan
kelemahan dan keunggulan dari masing-masing jenis. Dalam kasus inventory
pada Toko PK DATALIMA ini, aplikasi inventory yang diajukan masih
menggunakan database standar yaitu database yang berekstensi dot DAT
(.dat), belum menggunakan software khusus pengolah database seperti
MySQL.
Adapun alasan mengapa masih menggunakan database standar adalah karena
melihat efisiensi penggunaan aplikasi. Jika menggunakan database standar
tersebut, pengguna tidak perlu repot-repot meng-install program MySQL/
Xampp yang cukup rumit penggunaannya. Disamping itu, database
berektensi DAT juga dapat langsung berjalan pada komputer lain yang
berbeda -- selama komputer tersebut terdapat program JDK.
2.2.2. Structure Query Language (SQL)
SQL merupakan bahasa yang memungkinkan pemakai untuk melakukan akses
data ke DBMS dan pemakai dapat menggambarkan data yang ingin diperoleh
(Hoffman, 2001). SQL juga memungkinkan pemakai untuk melakukan
manipulasi data (input, edit, dan delete). Dalam perkembangannya, SQL telah
menjadi bahasa standar dalam kegiatan manipulasi data pada database dari
berbagai vendor yang ada di dunia.
2.2.3. MySQL
Merupakan produk dari MySQL AB yang merupakan database server yang
cepat, multi-theraded, multi user dan robust. Software MySQL memiliki dual
licenced dimana user dimana user dapat memilih untuk menggunakan
MySQL. Beberapa karakteristik dari MySQL adalah sebagai berikut:
a. Kode program ditulis dalam bahasa C dan C++
b. Fully multi-theraded, dapat menggunakan Multiple CPU juka tersedia
c. MySQL mendukung multi-platform hingga cross-platform. Beberapa
operating system dimana MySQL dapat berjalan dengan baik antara lain:
Linux, Mac OS X, NetBSD, Solaris 2.5, Windows 9.x, Me, NT, XP.
d. Previlege dan security yang terjamin karena pengiriman data antara client
dan server harus melalui enkripsi terlebih dahulu.
e. Mendukung database terdistribusi dengan kemampuan replikasi. Suatu
kemampuan dimana master server dapat menyimpan semua perubahan dari
database yang terjadi ke dalam binary log dan mengirimkannya ke slave
server untuk melakukan perubahan yang sama pada master server.
f. Memiliki banyak tipe kolom seperti float, double, char, varchar, text, BLOB,
date, time, datetime, timestamp, year, set, dan enum.
g. Mampu menangani database dalam jumlah besar hingga 60.000 tabel dan
5.000.000.000 baris record.
BAB III METODOLOGI
3.1. METODOLOGI
Metoda adalah suatu cara atau teknik untuk melakukan sesuatu. Sedangkan
metodologi sendiri berarti sebuah cara yang sistematis untuk mengerjakan
sesuatu.
Adapun dalam proposal ini, model metodologi yang digunakan adalah Model
Sekuensial Linear (water fall). Model ini sering disebut juga dengan siklus
kehidupan klasik atau model water fall. Model ini mengusulkan sebuah
pendekatan kepada perkembangan software yang sistematik dan sekuensial yang
mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode,
pengujian, dan pemeliharaan.
Gambar 2 Model Sikuensial Linear
3.1. DESAIN SISTEM
Disain sistem dimulai dengan penggambaran Data Flow Diagram dan Entity
Relationship Diagram kemudian dilanjutkan dengan pembuatan program
aplikasi.
3.2.1. Desain Data Flow Diagram (DFD)
Penggambaran sistem kerja diawali dengan Context diagram (diagram level 0),
sistem pemasukan barang dan pengeluaran barang yang akan dilanjutkan dengan
diagram level 1 dan level 2 untuk masing-masing sistem. Terdapat satu external
entity yang terlibat, yaitu administrator aplikasi.
ADMIN
Pada diagram konteks level 0 ini, dapat dilihat bahwa admin sebagai user
mendapatkan input dan output sebagai bagian dari business function sistem
inventory ini. Kegiatan seperti pencatatan permintaan barang, permintaan data
stok barang, dan pengimputan barang baru (new item) dilakukan sepenuhnya
oleh admin program.
Diagram level 1 diatas merupakan dekomposisi dari diagram level 0 dimana
diagram tersebut menggambarkan proses umum bagaimana pengaturan input-
output barang dalam sistem inventory tersebut. Dan selanjutnya diagram level 1
ini akan di-dekomposisi lagi menjadi diagram level 2.
0INVENTORY
SystemApplication
Name, ID. Item, Quantity, Sales Price, Description
Gambar 3 Contex Diagram System Inventory
ADMIN
1Penambahan/
Penghapusan Data Barang
Inventory.dat
2Merubah Data dan Harga
Barang
ID. Item, Nama Item, Jumlah ItemHarga Item
Record ID. Item, Nama Item, Jumlah ItemHarga Item
ID. Item, Nama Item, Jumlah ItemHarga Item
Record ID. Item Baru, Nama Item Baru, Jumlah Item Baru
Harga Item
Gambar 3 Diagram Level 1
Adapun diagram level 2 ini, menjelaskan mengenai fungsi-fungsi utama dari
aplikasi, diantaranya fungsi menambah stok barang, menambah barang baru
(item baru), menjual barang, menghapus barang, dan memperbaharui harga
barang:
ADMIN
1.1MenambahStok Barang Inventory.dat
ID. Item, Jumlah Barang
Record ID. Item, Jumlah Barang
ADMIN
1.2Menghapus Item
Barang Inventory.datID. Item, Record ID
ADMIN
1.3Menambah Item
Barang Inventory.dat
ID. Item, Nama Item, Deskripsi,
Harga Jual, Harga Penawaran
Jumlah
Record ID. Item, Nama Item,
Deskripsi, Harga Jual, Harga Penawaran
Jumlah
ADMIN
1.4Update Item
Inventory.dat
ID. Item, Harga Penjualan Baru,
Harga Penawaran Baru
Record ID. Item, Harga Penjualan
Baru, Harga Penawaran Baru
BAB IV APLIKASI DAN PEMBAHASANNYA
4.1. ANALISIS BISNIS KNOWLAGE
Perkembangan Teknologi Informasi saat ini sangat cepat di segala bidang. Salah
satu hasil dari perkembangan teknologi adalah komputer. Komputer sebagai alat
dan sistem pengolahan data yang mempunyai peranan sangat penting dalam
memecahkan berbagai masalah yang sedang dihadapi. Adapun bidang-bidang
kegiatan atau aplikasi yang menggunakan komputer sebagai sarana pengolahan
data untuk membantu memecahkan pekerjaan yang sedang dihadapi antara lain :
bidang keuangan, bidang perbankan, bidang penjualan, dan lain-lain. Oleh
karena itu, dengan menggunakan komputer segala masalah yang berhubungan
dengan pengolahan data dapat diselesaikan dengan lebih mudah, lebih efisien,
cepat dan akurat.
Komputer sebagai alat dan sistem pengolahan data, memiliki beberapa kelebihan
atau keistimewaan dibandingkan dengan menggunakan tenaga manusia,
diantaranya : • Mampu menangani pengolahan data dalam jumlah banyak dan
beragam dalam waktu yang relative singkat. • Mempunyai tingkat ketelitian yang
sangat tinggi.
Pengolahan data inventory barang dengan menggunakan komputer merupakan
keharusan karena banyaknya data yang harus diolah dan informasi yang
dihasilkan harus cepat dan tepat. Tentu saja kalau hanya mengandalkan buku
catatan dan nota akan sering terjadi kesalahan. Jika selama ini data yang diolah
masih menggunakan cara manual sehingga dalam pengolahannya masih sering
terjadi kerangkapan data dan keakuratan informasi yang dihasilkannya masih
kurang karena pengecekan ulang terhadap kesalahan informasi masih sering
terjadi, maka hal itu tentu saja sangat tidak efisien waktu dan biaya juga tenaga
mengingat data yang harus diolah sangat banyak, sedangkan informasi yang
dibutuhkan haruslah tersedia tepat waktu. Maka dari itu, program khusus untuk
inventory serta penjualan barang diperlukan.
4.2. ANALISIS BISNIS FUNCTION
Aktivitas inventory dijalankan dengan memanfaatkan fungsi-fungsi yang ada dan
tersedia dalam aplikasi. Dengan fungsi-fungsi tersebut diharapkan user dapat
mengunakannya untuk menyelesaikan proses bisnis dalam usahanya guna
memaksimalkan keuntungan bisnisnya. Fungsi-fungsi yang dimaksud
diantaranya:
1. Fungsi menyimpan dan menghapus data barang,
2. Fungsi menambah item barang,
3. Fungsi merubah data item barang,
4. Fungsi pendataan penjualan barang.
4.3. SOURCECODE
Sumber Sourcecodehttp://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=4260&lngWId=2
Nama Software : Inventory Delux v1.03
Pembuat : Kevin Dela Rosa
Tahun : 14 Juni 2004
Bahasa Pemrograman : Java (JDK)
Perkiraan Ukuran : 30,9 Kb
Sifat Software : freeware
4.4. ANALISIS SOURCECODE
4.4.1. ANALISIS CLASS PROGRAM
Aplikasi inventory ini memiliki beberapa file sourcecode diantaranya:
Company.java,
InventoryGui.java, dan
Item.java.
4.4.2. ANALISIS FUNGSI PROGRAM
Adapun fungsi yang dipakai dalam program ini diantaranya yang pertama
fungsi menyimpan data masukan yang ditampung dalam array://Matrix that contains the tool tips for the Inventory Table
private String toolTips[][];
// Refreshes the Data that is displayed in the inventory Table
Object[][] tableData = new Object[numRows][columnNames.length];
Fungsi matematik dan perhitungan aplikasi. Terdapat dalam class
Company.java.import java.io.*;
import java.text.*;
import java.util.*;
class Company
{
private String fileName;
// Stores the name of the file for save purposes
private ArrayList currentItems;
// Stores the inventory; collection of Item objects
private double currentFunds;
// Represents how much money the company has to spend on inventory
public Company() throws IOException
// Default constructor; loads all the inventory data from the file
{
currentItems = new ArrayList();
fileName = "inventory.dat";
BufferedReader cin = new BufferedReader(new
FileReader(fileName));
// For reading from the file
currentFunds = Double.parseDouble(cin.readLine());
String name;
String description;
String id;
int amt;
double sale;
double order;
while((name = cin.readLine()) != null)
{
description = cin.readLine();
StringTokenizer st = new
StringTokenizer(cin.readLine());
id = st.nextToken();
amt = Integer.parseInt(st.nextToken());
sale = Double.parseDouble(st.nextToken());
rder = Double.parseDouble(st.nextToken());
Item i = new Item(name, description,id,amt,sale,order);
currentItems.add(i);
// Adds the new Item to the list
}// end while
cin.close();
}// end constructor Company() throws IOException
public void openFile(String fileName) throws IOException
{
currentItems.clear();
BufferedReader cin = new BufferedReader(new
FileReader(fileName));
// For reading from the file
currentFunds = Double.parseDouble(cin.readLine());
String name;
String description;
String id;
int amt;
double sale;
double order;
while((name = cin.readLine()) != null)
{
description = cin.readLine();
StringTokenizer st = new
StringTokenizer(cin.readLine());
id = st.nextToken();
amt = Integer.parseInt(st.nextToken());
sale = Double.parseDouble(st.nextToken());
order = Double.parseDouble(st.nextToken());
Item i = new Item(name,
description,id,amt,sale,order);
currentItems.add(i);
// Adds the new Item to the list
}// end while
this.fileName = fileName;
cin.close();
}// end void openFile
public void sortByName()
// Implements an insertion/selection sort on currentItems, sorting by
item name
{
ArrayList temp = new ArrayList(); // Empty ArrayList (for
sorting)
Item smallest; // Stores the smallest item (for sorting)
Item go; // Temporary Item
while(currentItems.size() > 0)
{
smallest = (Item) currentItems.get(0);
for(int c = 0; c < currentItems.size(); c++)
{
go = (Item) currentItems.get(c);
if(go.getName().toUpperCase().compareTo(
smallest.getName().toUpperCase()) <= 0)
{
smallest = go;
}// end if
}// end for
temp.add(smallest);
currentItems.remove(smallest);
}// end while
currentItems = temp;
}// end void sortByName
public void sortById()
// Implements an insertion/selection sort on currentItems, sorting by
ID number
{
ArrayList temp = new ArrayList(); // Empty ArrayList (for
sorting)
Item smallest; // Stores the smallest item (for sorting)
Item go; // Temporary Item
while(currentItems.size() > 0)
{
smallest = (Item) currentItems.get(0);
for(int c = 0; c < currentItems.size(); c++)
{
go = (Item) currentItems.get(c);
if(Integer.parseInt(go.getId()) <
Integer.parseInt(smallest.getId()))
{
smallest = go;
}
}// end for
temp.add(smallest);
currentItems.remove(smallest);
}// end while
currentItems = temp;
}end void sortById
public boolean newSales(String id, int amt)
// Checks to see if id is in currentItems
// If it is not, returns false
// If it is, it sells amt Items if there are enough Items
// If amount is insufficient, returns false
// If all conditions are met it sells amt of Item and returns true
{
boolean checkID = false; // Determines if id is in the list
Item i = new Item();
for(int c = 0; c < currentItems.size(); c++)
{
if(id.equals(((Item) currentItems.get(c)).getId()))
{
checkID = true;
i = (Item) currentItems.get(c);
}// end if
}//end for
if(checkID)
{
if(amt > i.getAmount())
return false;
else
{
currentFunds += i.sellItem(amt);
return true;
}// end else
}// end if check ID
return false;
}// end boolean newSales
public boolean newOrders(String id, int amt)
//Checks to see if id is in currentItems
// If it is not, returns false
// If it is, it orders the passed amount if currentFunds is sufficient
// If money is insufficient, returns false
// If all conditions are met it orders amt of Item and returns true
{
boolean checkID = false;
Item i = new Item();
for(int c = 0; c < currentItems.size(); c++)
{
if(id.equals(((Item) currentItems.get(c)).getId()))
{
checkID = true;
i = (Item) currentItems.get(c);
}
}// end for
if(checkID)
{
if(currentFunds < i.getOrderPrice(amt))
return false;
else
{
currentFunds -= i.orderItem(amt);
return true;
}// end else
}// end if
return false;
}// end boolean newOrders
public boolean liquidateItem(String id)
//Sells all of one item at order price and adds the money to
currentFunds
//returns true if successful, and false if id is not an Item
{
Item i = new Item();
Item go = new Item();
boolean isInList = false;
for(int c = 0; c < currentItems.size(); c++)
{
go = ((Item)currentItems.get(c));
if(id.compareTo(go.getId()) == 0)
{
i = go;
isInList = true;;
}// end if
}// end for
if(isInList)
{
currentFunds += i.liquidate();
currentItems.remove(i);
}// end if
return isInList;
//returns true if you can liquidate
}// end boolean liquidateItem
public boolean makeItem(String n, String d, String id, double s,
double o, int a)
// If id is not a current id in currentItems, creates new item with
passes data and returns true
// Otherwise returns false
{
boolean isInList = false;
for(int c = 0; c < currentItems.size(); c++)
{
String temp = ((Item) currentItems.get(c)).getId();
if(id.equals(temp))
{
isInList = true;
}// end if
}
if(!isInList)
{
Item i = new Item(n,d,id,a,s,o);
if(currentFunds < i.getOrderPrice(a))
{
isInList = true;
}// end if
else
{
currentFunds -= a * o;
currentItems.add(i);
}// end else
}// end if
return !isInList;
// returns false if it is in the list, or
// if Company does not have enough money
}// end boolean makeItem
public void endProgram() throws IOException
// Saves the current data to the data file
{
BufferedWriter cout = new BufferedWriter(new
FileWriter(fileName));
String cf = new Double(currentFunds).toString();
cout.write(cf);
cout.newLine();
for(int c = 0; c < currentItems.size(); c++)
{
Item i = ((Item) currentItems.get(c));
cout.write(i.getName());
cout.newLine();
cout.write(i.getDescription());
cout.newLine();
cout.write(i.getId() + " " + i.getAmount() + " " +
i.getSalesPrice());
cout.write(" " + i.getOrderPrice());
cout.newLine();
}// end for
cout.close();
}// end void endProgram
public boolean changeSalesPrice(String id, double np)
//If the passed id is in the list, the Item's sales price is set to np
and returns true
//Otherwise, returns false
{
boolean checkID = false;
Item i = new Item();
for(int c = 0; c < currentItems.size(); c++)
{
if(id.equals(((Item) currentItems.get(c)).getId()))
{
checkID = true;
i = (Item) currentItems.get(c);
}// end if
}// end for
if(checkID)
{
i.setSalesPrice(np);
return true;
}// end if checkID
return false;
//returns true if it succeeded, false if id not in list
//Please protect the double for negativity and zero
}// end boolean changeSalesPrice
public boolean changeOrderPrice(String id, double np)
//If the passed id is in the list, the Item's order price is set to np
and returns true
//Otherwise, returns false
{
boolean checkID = false;
Item i = new Item();
for(int c = 0; c < currentItems.size(); c++)
{
if(id.equals(((Item) currentItems.get(c)).getId()))
{
checkID = true;
i = (Item) currentItems.get(c);
}
}// end for
if(checkID)
{
i.setOrderPrice(np);
return true;
}// end if
return false;
//returns true if it succeeded, false if id not in list
//Please protect the double for negativity and zero
}// end changeOrderPrice
public ArrayList getItems()
//Returns the current list of items
{
return currentItems;
}
public double getFunds()
//Returns the current amount of money being used for inventory
{
return currentFunds;
}
public int getNumItems()
//returns the current number of Items in currentItems
{
return currentItems.size();
}
public void setFunds(double f)
// Sets the company's funds to f
{
currentFunds = f;
}
public void setFileName(String name)
{
fileName = name;
}
}// end class Company
Fungsi mengolah, menampung Item barang. Fungsi ini terdapat dalam class
Item.java.public class Item
{
private String name;
private String description;
private String idNumber;
private int amount;
private double salesPrice;
private double orderPrice;
public Item()
{
name = "";
description = "";
idNumber = "";
amount = 0;
salesPrice = 0.0;
orderPrice = 0.0;
}// end constructor Item()
public Item(String n, String d, String id, int a, double s, double o)
{
name = n;
description = d;
idNumber = id;
amount = a;
salesPrice = s;
orderPrice = o;
}// end constructor Item()
public String getName()
// returns name of the item
{
return name;
}
public String getDescription()
// returns the description of the item
{
return description;
}
public String getId()
// returns the ID number of the item
{
return idNumber;
}
public int getAmount()
{
return amount;
}
public double getSalesPrice()
{
return salesPrice;
}
public double getSalesPrice(int a)
{
return salesPrice * a;
}
public double getOrderPrice()
{
return orderPrice;
}
public double getOrderPrice(int a)
{
return orderPrice * a;
}
public double orderItem(int orderAmount)
// Returns the cost of the order for the company
// Increases amount by orderAmount
{
amount += orderAmount;
return orderAmount * orderPrice;
}
public double sellItem(int sellAmount)
// Returns the cost of the order for the customer
// Decreases amount by sellAmount
{
amount -= sellAmount;
return sellAmount * salesPrice;
}
public double liquidate()
// Returns the price
{
return amount * orderPrice;
}
public void setSalesPrice(double a)
{
salesPrice = a;
}
public void setOrderPrice(double a)
{
orderPrice = a;
}
}// end class Item
Main coding.
Sourcecode utama dimana pengaturan jalannya aplikasi diatur dalam
sourcode ini. Didalamnya terdapat fungsi-fungsi GUI (grafic user interface)
serta main program sebagai pusat kendali aplikasi. Terdapat dalam file
InventoryGUI.java.import java.io.*;
import java.util.*;
import java.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
public class InventoryGui extends JFrame implements ActionListener{
private Company companyObject; // Company Object
private String toolTips[][]; // Matrix that contains the tool
tips for the Inventory Table
private boolean boolSortName; // Determines if the Inventory
Table should be sorted by name or
by item number
public InventoryGui() throws IOException
// Default Constructor that initializes the components
{
initComponents();
}
public void refreshFinancialInformation()
// Refreshes the data that is displayed in financial information
{
DecimalFormat dollar = new DecimalFormat("$ 0.00");
String funds = dollar.format(companyObject.getFunds());
jLabelFinancialStatement.setText("The company currently holds "
+ funds + " in cash.");
}
public void refreshTable()
// Refreshes the Data that is displayed in the inventory Table
{
DecimalFormat dollar = new DecimalFormat("$ 0.00");
if(boolSortName)
companyObject.sortByName();
else
companyObject.sortById();
ArrayList temp = companyObject.getItems();
int numRows = temp.size();
int newWidth = 650;
int newHeight = 0;
String[] columnNames = new String [] {"Name", "ID Item",
"Quantity", "Sales Price", "Order Price", "Descrpition"};
Object[][] tableData = new Object[numRows][columnNames.length];
toolTips = new String[numRows][columnNames.length];
for(int x = 0; x < numRows; x++)
{
Item i = (Item) temp.get(x);
String salesPrice = dollar.format(i.getSalesPrice());
String orderPrice = dollar.format(i.getOrderPrice());
tableData[x][0] = i.getName();
tableData[x][1] = i.getId();
tableData[x][2] = new Integer(i.getAmount());
tableData[x][3] = salesPrice;
tableData[x][4] = orderPrice;
tableData[x][5] = i.getDescription();
toolTips[x][0] = i.getName();
toolTips[x][1] = i.getId();
toolTips[x][2] = Integer.toString(i.getAmount());
toolTips[x][3] = salesPrice;
toolTips[x][4] = orderPrice;
toolTips[x][5] = i.getDescription();
}// end for
jTableInventory.setModel(new
javax.swing.table.DefaultTableModel(tableData,columnNames)
{
Class[] types = new Class [] {
java.lang.String.class,java.lang.String.class,
java.lang.String.class,java.lang.String.class,
java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false, false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int
columnIndex)
{
return canEdit [columnIndex];
}
});
newHeight = numRows * 16;
if(newHeight < 350)
newHeight = 350;
jTableInventory.setPreferredSize(new Dimension(newWidth,
newHeight));
refreshFinancialInformation();
}// end void refresh table
public void actionPerformed(ActionEvent evt)
// Handles the action events from the menus and buttons found on the
graphical user interface
{
String cmd = evt.getActionCommand();
if(cmd.equals("Sales"))
{
String itemNumber =
jTextFieldSalesItemNumber.getText();
try
{
jTextFieldSalesItemNumber.setText(null);
int quantity =
Integer.parseInt(jTextFieldSalesQuantity.getText());
if(quantity <= 0)
{
JOptionPane.showMessageDialog(this,
"Please only enter positive numbers.",
"Input Error",
JOptionPane.ERROR_MESSAGE);
}// end if
else if(!companyObject.newSales(itemNumber,
quantity)){
JOptionPane.showMessageDialog(this,
"Please enter a valid ID Item, or\nEnter
a valid value for the quantity of items
sold.","Input Error",
JOptionPane.ERROR_MESSAGE);
}// end else if
else{
JOptionPane.showMessageDialog(this,
"Sale Complete!", "Sales",
JOptionPane.INFORMATION_MESSAGE);
}// end else
}// end try
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please
enter valid values.", "Input
Error",JOptionPane.ERROR_MESSAGE);
}
jTextFieldSalesQuantity.setText(null);
refreshTable();
}// end if cmd.equals("sales")
if(cmd.equals("Order"))
{
String itemNumber = jTextFieldOrderItemNumber.getText();
jTextFieldOrderItemNumber.setText(null);
try
{
int quantity =
Integer.parseInt(jTextFieldOrderQuantity.getText());
if(quantity <= 0)
{
JOptionPane.showMessageDialog(this, "Please only
enter positive numbers.", "Input Error",
JOptionPane.ERROR_MESSAGE);
}
else if(!companyObject.newOrders(itemNumber, quantity))
{
JOptionPane.showMessageDialog(this, "Please
enter a valid ID Item, or\nEnter a valid value
for the quantity of items ordered.", "Input
Error", JOptionPane.ERROR_MESSAGE);
}
else{
JOptionPane.showMessageDialog(this, "Order
Complete!", "Orders",
JOptionPane.INFORMATION_MESSAGE);
}
}// end try
catch(Exception E)
{
JOptionPane.showMessageDialog(this, "Please enter valid
values.", "Input Error", JOptionPane.ERROR_MESSAGE);
}
jTextFieldOrderQuantity.setText(null);
refreshTable();
}// end if
if(cmd.equals("Liquidate"))
{
String itemNumber = jTextFieldlLiquidateItemNumber.getText();
jTextFieldlLiquidateItemNumber.setText(null);
if(!companyObject.liquidateItem(itemNumber))
{
JOptionPane.showMessageDialog(this, "Please enter a
valid ID Item", "Input Error",
JOptionPane.ERROR_MESSAGE);
}// end if
else
{
JOptionPane.showMessageDialog(this, "Item Liquidated!",
"Liquidation", JOptionPane.INFORMATION_MESSAGE);
}// end else
refreshTable();
}// end if
}// end class InventoryGUI
4.4.3. INTERFACE APLIKASI
Berikut adalah interface dari aplikasi inventory Deluxe v 1.03. Dikarenakan
barang-barang yang dijual di Toko PK DATALIMA adalah barang elektronik
yang harganya tergantung pada kurs dolar amerika (USD), maka satuan harga
dinyatakan dalam USD.
Gambar 4 Inventory Delux v 1.03
Gambar 5 File and Tools's Contents
Menu/ Fungsi Aplikasi
Input Data
Preview Data
Gambar 6 Liquidation
Gambar 7 New Item
Gambar 8 Update Price
4.1.
BAB V PENUTUP
5.1. PENUTUP
Demikian pembahasan mengenai aplikasi inventory yang akan ditawarkan pada
Toko PK DATALIMA. Tahap selanjutnya adalah penandatangan proposal
(kontrak) dengan toko tersebut. Tapi sebelumnya, jika customer menerima, maka
akan diadakan pertemuan selanjutnya untuk membicarakan kontrak secara
menditail lagi. Dan selanjutnya baru penandatanganan proposal.
Adapun untuk maintenance aplikasi, akan diberikan waktu selama enam bulan.
Dalam masa itu, apabila ada kendala, kebingunan, atau bug pada aplikasi maka
customer dapat meminta kepada pihak.
5.2. SARAN
Penulis menyadari bahwa pembahasan di atas masih jauh dari sempurna. Untuk
itu penulis sangat mengharapkan saran dari pembaca atau pihak yang berkait
sebagai bahan koreksi penulis dalam menyusun proposal yang lebih baik lagi di
masa yang akan datang.
DAFTAR PUSTAKA
Budi, Satia, Gregorius dkk. PEMBUATAN SISTEM INVENTORY DENGAN
PENGATURAN PELETAKAN DAN VISUALISASI POSISI BARANG
PADA UD ANEKA MAINAN. 2004: SURABAYA.
http://www.ar.itb.ac.id/hanson/?p=93
Pressman, Roger S, Software Engineering : A Practitioner’s Approach, McGraw-
Hill Companies, Inc. 1997.
Andri. SOFTWARE INVENTORY. 2008. - http://deteksi.org/31302_software_inventory.html ( 18 Nov 08)