IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMING
PADA APLIKASI PERHITUNGAN BIAYA PRODUKSI
PRODUK PERCETAKAN BERBASIS WEB
(STUDI KASUS : CV. TUNAS UTAMA)
ARIEF ARDIYUANDA
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
JAKARTA
2010 M
IMPLEMENTASI 0-1 KNAPSACK MENGGUNAKAN METODE DYNAMIC
PROGRAMMING PADA APLIKASI PERHITUNGAN HARGA SATUAN
PRODUK PERCETAKAN BERBASIS WEB
(STUDI KASUS: CV TUNAS UTAMA)
Skripsi
Sebagai Salah Satu Syarat Untuk Memperoleh Gelar Sarjana Komputer
Pada Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta
Oleh:
ARIEF ARDI YUANDA
105091002862
Menyetujui,
Pembimbing I,
Yusuf Durachman, MIT, M.Sc NIP. 1971 0522 2006 04 1 002
Pembimbing II,
Husni Teja Sukmana, PhD NIP. 1977 1030 2001 12 1 003
Mengetahui,
Ketua Program Studi Teknik Informatika
Yusuf Durrachman, MIT, M.Sc NIP. 1971 0522 2006 04 1 002
IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMING
PADA APLIKASI PERHITUNGAN BIAYA PRODUKSI
PRODUK PERCETAKAN BERBASIS WEB
(STUDI KASUS : CV. TUNAS UTAMA)
Oleh:
ARIEF ARDIYUANDA
105091002862
Skripsi
Sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI
SYARIF HIDAYATULLAH
JAKARTA
2010 M / 1431 H
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR-
BENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN
SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI
ATAU LEMBAGA MANAPUN.
JAKARTA, JUNI 2010
ARIEF ARDIYUANDA
105091002862
iii
ARIEF ARDIYUANDA. Implementasi Algoritma Dynamic Programming pada Aplikasi Perhitungan Biaya Produksi Produk Percetakan Berbasis Web. Dibimbing oleh: YUSUF DURACHMAN MSc,MIT dan HUSNI TEJA SUKMANA PhD.
Harga merupakan salah satu faktor kepuasan pelanggan. Perusahaan harus menentukan harga yang sesuai dengan harapan konsumen. Dalam menentukan harga satuan produk maka perusahaan harus mengetahui biaya produksi produk tersebut. Untuk mengetahui biaya produksi maka dibutuhkan perhitungan terhadap faktor produksi dan salah satunya adalah biaya bahan baku. Bahan baku kertas pada bidang percetakan diasumsikan sebagai permasalahan 0 1 knapsack dan menggunakan dynamic programming dalam penyelesaiannya. Metode pengembangan sistem menggunakan model proses rapid application development karena aplikasi yang akan dibuat menggunakan komponen-komponen yang sudah ada dan merupakan aplikasi sederhana. Aplikasi dibuat berbasis web dengan menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi dan MySQL sebagai perangkat lunak Sistem Manajemen Basis Data. Aplikasi dapat memaksimalkan bahan baku sehingga meminimalisir biaya produksi dan berdampak langsung pada harga satuan produk. Kata kunci : 0 1 knapsack, dynamic programming, Biaya Produksi.
iv
KATA PENGANTAR
Puji dan syukur, penulis panjatkan kehadirat ALLAH SWT yang telah
memberikan kesabaran, semangat serta petunjuk dalam proses penyelesaian
skripsi ini.
Penulisan skripsi ini adalah sebagai syarat kelulusan untuk memperoleh
gelar Sarjana Komputer.
Penulis mengucapkan terima kasih berkat bimbingan, dorongan dan
bantuan kepada:
1. Bpk. DR. Syopiansyah Jaya Putra, M.Sis, selaku Dekan Fakultas Sains &
Teknologi.
2. Bpk. Yusuf Durachman, MIT, selaku Ketua Program Studi Teknik
Informatika dan juga selaku Dosen Pembimbing I yang senantiasa sabar
dalam membimbing penulis serta telah memberikan ilmunya yang sangat
berharga bagi penulis.
3. Bpk. Husni Teja Sukmana, PhD, selaku Dosen Pembimbing II yang juga
senantiasa sabar dalam membimbing penulis serta telah memberikan
ilmunya yang sangat berharga bagi penulis.
4. Kedua Orang Tua Tercinta, yang telah memberikan motivasi serta
dukungan moril maupun materil.
5. Karyawan CV. TUNAS UTAMA.
6. Dosen dan Pegawai Tata Usaha Fakultas Sains dan Teknologi.
7. Teman-teman D’Kans Organizer.
8. Teman-teman kelas TI-C 2005.
v
vi
9. Dan pihak lain yang tidak bisa disebutkan namanya satu per satu., yang
telah berjasa membentuk kepribadian penulis hingga saat ini.
Penulis selalu menerima saran dan kritik dari pembaca. Semoga tulisan ini
bermanfaat bagi kita semua. AMIN.
Jakarta, Mei 2010
Arief Ardiyuanda
DAFTAR ISI
Halaman
HALAMAN JUDUL……………………………………………………… i
HALAMAN PENGESAHAN .................................................................... ii
HALAMAN PERNYATAAN...................................................................... iii
ABSTRAK.................................................................................................... iv
KATA PENGANTAR.................................................................................. v
DAFTAR ISI................................................................................................. vii
DAFTAR TABEL......................................................................................... x
DAFTAR GAMBAR..................................................................................... xi
BAB I. PENDAHULUAN............................................................................ 1
1.1. LATAR BELAKANG..................................................................... 1
1.2. RUMUSAN MASALAH................................................................. 2
1.3. BATASAN MASALAH.................................................................. 3
1.4. TUJUAN DAN MANFAAT PENELITIAN................................... 3
1.4.1. Tujuan Penelitian................................................................... 3
1.4.2. Manfaat Penelitian................................................................. 3
1.5. METODOLOGI PENELITIAN....................................................... 4
1.5.1. Metode Pengumpulan Data.................................................... 4
1.5.2. Metode Pengembangan Sistem.............................................. 4
1.6. SISTEMATIKA PENULISAN......................................................... 5
BAB II. LANDASAN TEORI........................................................................ 6
2.1. ALGORITMA.................................................................................... 6
vii
2.1.1. Penyajian Algoritma............................................................... 7
2.1.2. Struktur Dasar Algoritma....................................................... 9
2.1.3. Dasar Penyusunan Algoritma................................................. 11
2.1.4. Kompleksitas Waktu.............................................................. 13
2.2. DYNAMIC PROGRAMMING............................................................ 13
2.3. KNAPSACK PROBLEM..................................................................... 15
2.4. BIAYA............................................................................................... 20
2.5. PRODUKSI........................................................................................ 20
2.6. BIAYA PRODUKSI........................................................................ 21
2.6.1. Analisis Biaya Jangka Pendek............................................... 22
2.7. WEB BASED APPLICATION........................................................... 23
2.8. PHP.................................................................................................... 23
2.9. MySQL............................................................................................... 24
2.10. STUDI SEJENIS............................................................................. 26
BAB III. METODOLOGI PENELITIAN..................................................... 30
3.1. METODE PENGUMPULAN DATA............................................... 30
3.2. METODE PENGEMBANGAN SISTEM........................................ 31
3.2.1. Communication...................................................................... 33
3.2.2. Planning................................................................................. 33
3.2.1. Modelling............................................................................... 33
3.2.2. Construction........................................................................... 33
3.2.1. Deployment............................................................................ 34
3.3. ALASAN MENGGUNAKAN RAD................................................ 34
viii
ix
BAB IV. HASIL DAN PEMBAHASAN...................................................... 35
4.1. COMMUNICATION........................................................................... 35
4.2. PLANNING......................................................................................... 35
4.3. MODELLING..................................................................................... 36
4.3.1. Business Modelling................................................................. 36
4.3.2. Data Modelling....................................................................... 37
4.3.3. Process Modelling.................................................................. 40
4.3.4. Perancangan Interface............................................................ 51
4.4. CONSTRUCTION............................................................................... 58
4.5. DEPLOYMENT................................................................................... 59
4.5.1. Spesifikasi Hardware dan Software....................................... 59
4.5.2. Pengenalan Tampilan............................................................. 59
4.5.3. Pengujian................................................................................ 69
4.5.3. Implementasi........................................................................... 81
BAB V. KESIMPULAN DAN SARAN....................................................... 82
5.1. KESIMPULAN.................................................................................. 82
5.2. SARAN............................................................................................... 82
DAFTAR PUSTAKA...................................................................................... 83
LAMPIRAN.................................................................................................... 86
DAFTAR TABEL
Tabel 2.1. Simbol-simbol yang dipergunakan dalam flowchart...................8
Tabel 4.1. Data Admin ..................................................................................37
Tabel 4.2. Data Kertas ...................................................................................38
Tabel 4.3. Data Proses ...................................................................................38
Tabel 4.4. Data Finishing ..............................................................................39
Tabel 4.5. Data Ukuran .................................................................................39
x
DAFTAR GAMBAR
Gambar 2.1. Hubungan masalah, algoritma, dan solusi............................... 7
Gambar 2.2. Contoh algoritma menggunakan pseudocode ..........................7
Gambar 2.3. Contoh flowchart perhitungan luas..........................................9
Gambar 2.4. Struktur Runtunan....................................................................10
Gambar 2.5. Struktur Percabangan...............................................................10
Gambar 2.6. Struktur Perulangan .................................................................11
Gambar 2.7. Algoritma Dynamic Programming Pada 0 1 Knapsack ..........17
Gambar 2.8. Hasil perhitungan aplikasi optimasi biaya...............................27
Gambar 2.9. Hasil perhitungan salah satu fitur pada sistem informasi
percetakan .....................................................................................................29
Gambar 3.1. The RAD Model .......................................................................32
Gambar 4.1. Use Case Diagram...................................................................36
Gambar 4.2. Flowchart input data kertas .....................................................40
Gambar 4.3. Flowchart update data kertas...................................................41
Gambar 4.4. Flowchart delete data kertas....................................................42
Gambar 4.5. Flowchart input data proses.....................................................42
Gambar 4.6. Flowchart update data proses..................................................43
Gambar 4.7. Flowchart delete data proses ...................................................44
Gambar 4.8. Flowchart input data finishing ................................................44
Gambar 4.9. Flowchart update data finishing .. ...........................................45
Gambar 4.10. Flowchart delete data finishing ............................................46
xi
Gambar 4.11. Flowchart input data ukuran kertas ......................................46
Gambar 4.12. Flowchart update data ukuran kertas ...................................47
Gambar 4.13. Flowchart delete data ukuran kertas......................................48
Gambar 4.14. Flowchart perhitungan biaya bahan baku ............................48
Gambar 4.15. Flowchart update password administrator ............................49
Gambar 4.16. Flowchart proses perhitungan biaya produksi.......................50
Gambar 4.17. Rancangan tampilan home pengguna ....................................51
Gambar 4.18. Rancangan tampilan home Administrator ............................51
Gambar 4.19. Rancangan tampilan input data kertas ..................................52
Gambar 4.20. Rancangan tampilan update data kertas ...............................52
Gambar 4.21. Rancangan tampilan delete data kertas.................................53
Gambar 4.22. Rancangan tampilan input data proses .................................53
Gambar 4.23. Rancangan tampilan update data proses...............................54
Gambar 4.24. Rancangan tampilan delete data proses ................................54
Gambar 4.25. Rancangan tampilan input data finishing .............................55
Gambar 4.26. Rancangan tampilan update data finsihing...........................55
Gambar 4.27. Rancangan tampilan delete data finishing ............................56
Gambar 4.28. Rancangan tampilan input data ukuran.................................56
Gambar 4.29. Rancangan tampilan update data ukuran..............................57
Gambar 4.30. Rancangan tampilan delete data ukuran ...............................57
Gambar 4.31. Rancangan tampilan update password administrator ...........58
Gambar. 4.32. Tampilan home pengguna.....................................................60
Gambar. 4.32. Tampilan home administrator...............................................60
xii
xiii
Gambar. 4.34. Tampilan input data kertas....................................................61
Gambar. 4.35. Tampilan update data kertas.................................................62
Gambar. 4.36. Tampilan delete data kertas ..................................................62
Gambar. 4.37. Tampilan input data proses cetak .........................................63
Gambar.4.38. Tampilan update data proses cetak........................................64
Gambar. 4.39. Tampilan delete data proses cetak ........................................64
Gambar. 4.40. Tampilan input data finishing...............................................65
Gambar. 4.41. Tampilan update data finishing ............................................66
Gambar. 4.42. Tampilan delete data finishing..............................................66
Gambar. 4.43. Tampilan input data ukuran kertas .......................................67
Gambar. 4.44. Tampilan update data ukuran kertas.....................................68
Gambar. 4.45. Tampilan delete data ukuran kertas ......................................68
Gambar. 4.46. Tampilan update password administrator ............................69
1
BAB I
PENDAHULUAN
1.1. LATAR BELAKANG
Kepuasan pelanggan (Customer Satisfaction) ditentukan oleh
persepsi pelanggan atas performance produk atau jasa dalam memenuhi
harapan pelanggan. Pelanggan merasa puas apabila harapannya terpenuhi
atau akan sangat puas jika harapan pelanggan terlampaui. Terdapat lima
faktor utama yang menentukan tingkat kepuasan pelanggan yaitu kualitas
produk, harga, kualitas pelayanan, emosional, kemudahan untuk
mendapatkan produk atau jasa tersebut (Irawan,2003:37).
CV. Tunas Utama merupakan salah satu perusahaan yang bergerak
di bidang percetakan. Layaknya sebuah perusahaan pada umumnya,
kepuasan pelanggan sangat dikedepankan terutama masalah harga. Dalam
menentukan harga sebuah produk, diperlukan perhitungan biaya produksi
yang dikeluarkan. Terdapat empat faktor yang mempengaruhi biaya
produksi yaitu bahan baku, tenaga kerja, overhead pabrik, dan pengusaha.
( Soeharno,2009:97).
Perusahaan harus menghitung empat faktor yang telah disebutkan,
salah satunya adalah biaya bahan baku. Pada bidang percetakan bahan
baku yang digunakan adalah kertas. Terdapat beberapa jenis kertas yang
memiliki beberapa ukuran panjang dan lebar, perusahaan harus bisa
memilih ukuran mana yang akan digunakan untuk meminimalisir biaya
bahan baku sehingga dapat meminimalisir biaya produksi yang berdampak
2
pada harga pokok produksi. Harga pokok produksi yang didapat digunakan
untuk menentukan harga jual sebuah produk.
Berdasarkan permasalahan yang ada pada CV. Tunas Utama,
penulis menginginkan agar perangkat teknologi, seperti komputer dapat
dipergunakan untuk melakukan perhitungan biaya produksi yang terjadi,
sehingga penulis akan melakukan penelitian dengan judul
“IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMING PADA
APLIKASI PERHITUNGAN BIAYA PRODUKSI PRODUK
PERCETAKAN BERBASIS WEB (Studi Kasus : CV. Tunas Utama)”.
1.2. RUMUSAN MASALAH
Seperti yang telah dijabarkan dalam subbab sebelumnya, masalah
yang timbul yaitu:
1. Perhitungan biaya produksi yang masih manual.
2. Menentukan ukuran kertas mana yang akan digunakan sebagai bahan
baku produksi.
Dari masalah tersebut maka penulis merumuskan masalah pada
penelitian ini yaitu bagaimana merancang sebuah aplikasi yang dapat
melakukan perhitungan penentuan bahan baku yang digunakan sehingga
dapat menghitung biaya produksi produk percetakan dengan perangkat
teknologi seperti komputer.
3
1.3. BATASAN MASALAH
Batasan permasalahan pada penelitian ini adalah:
1. Melakukan perhitungan biaya produksi produk percetakan seperti:
brosur, undangan, kalender dan nota.
2. Perhitungan penentuan bahan baku kertas yang digunakan pada proses
pembuatan produk percetakan.
3. Implementasi 0 1 knapsack menggunakan dynamic programming.
1.4. TUJUAN DAN MANFAAT PENELITIAN
1.4.1. Tujuan Penelitian
Tujuan dari penelitian ini yaitu:
1. Menghitung biaya produksi produk percetakan secara
terkomputerisasi.
2. Menentukan ukuran bahan baku kertas yang akan digunakan.
1.4.2. Manfaat Penelitian
Manfaat dari penelitian ini adalah:
1. Aplikasi ini dapat melakukan perhitungan biaya produksi produk
percetakan.
2. Aplikasi ini dapat menentukan ukuran kertas yang akan digunakan
sebagai bahan baku produksi.
4
1.5. METODOLOGI PENELITIAN
1.5.1. Metode Pengumpulan Data
1. Observasi
Yaitu terjun langsung ke CV. Tunas Utama, Dengan cara
observasi ini akan diperoleh data yang lengkap dan tepat. Selain itu,
metode observasi mempunyai kelebihan yaitu peneliti mengetahui
sendiri dengan jelas tentang masalah knapsack yang terjadi serta
mengetahui perhitungan biaya produksi.
2. Studi Pustaka
Penelitian yang dilakukan dengan data atau keterangan dari
perpustakaan serta mencari referensi yang diperlukan dari buku–buku
acuan yang ada berhubungan dengan masalah knapsack dan
perhitungan biaya produksi.
1.5.2. Metode Pengembangan Sistem
Metode pengembangan sistem yang akan digunakan dalam penelitian
ini menggunakan RAD (Rapid Application Development) yang
dikembangkan oleh James Martin pada tahun 1971. Metode ini memiliki
lima tahapan (Pressman, 2005:81 ), yaitu :
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
5
1.6. SISTEMATIKA PENULISAN
Dalam skripsi ini, pembahasan yang penulis sajikan terbagi dalam
lima bab, yang secara singkat dapat diuraikan sebagai berikut :
BAB I PENDAHULUAN
Bab ini membahas tentang latar belakang, perumusan
masalah, batasan masalah, tujuan dan manfaat penelitian,
metodologi penelitian dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini membahas secara singkat teori yang diperlukan
dalam penelitian skripsi.
BAB III METODOLOGI PENELITIAN
Pada bab ini akan dijelaskan metodologi yang digunakan
penulis dalam melakukan penelitian.
BAB IV HASIL DAN PEMBAHASAN
Dalam bab ini diuraikan hasil analisis dan perancangan
sistem yang dibuat.
BAB V KESIMPULAN DAN SARAN
Bab ini adalah bab terakhir yang menyajikan kesimpulan
serta saran dari apa yang telah diterangkan dan diuraikan
pada bab-bab sebelumnya.
6
BAB II
LANDASAN TEORI
2.1. ALGORITMA
Untuk menyelesaikan persoalan-persoalan yang kita hadapi, kita
perlu menyusun langkah dan strategi. Langkah dan stratergi dalam
menyelesaikan suatu persoalan disebut algoritma. Algoritma berasal dari
kata algorism, yaitu penulis buku arab yang terkenal, Abu Ja’far
Muhammad Ibnu Musa Al-Khowarizmi (Sismoro,2005:29).
Algoritma adalah kumpulan instruksi/perintah/langkah yang
berhingga jumlahnya, dituliskan secara sistematis, dan digunakan untuk
menyelesaikan masalah/persoalan logika dan matematika dengan bantuan
komputer (Sismoro,2005:29).
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu
masalah (Munir,2007:4)
Algoritma adalah alur pikiran dalam menyelesaikan suatu
pekerjaan, yang dituangkan dalam bentuk tertulis yang dapat dimengerti
oleh orang lain (Sjukani,2007:1).
Algoritma adalah deretan langkah-langkah komputasi yang
mentransformasikan data masukan menjadi keluaran (Cormen,2002:5)
Dari beberapa penjabaran di atas, maka dapat disimpulkan bahwa
algoritma adalah tahapan-tahapan yang diproses untuk memperoleh
pemecahan suatu masalah.
7
Bila digambarkan maka proses penyelesaian masalah sampai
memperoleh pemecahannya adalah sebagai berikut :
Masalah Algoritma Solusi
Gambar 2.1. Hubungan masalah, algoritma dan solusi
2.1.1. Penyajian Algoritma
Algoritma disajikan dengan tulisan atau gambar. Algoritma yang
disajikan dengan tulisan memiliki struktur bahasa tertentu dan
pseudocode, sedangkan yang disajikan dengan gambar, misalnya
flowchart program, data flow diagram, diagram chart dan lain-lain.
1. Pseudocode berasal dari kata pseudo (mirip/menyerupai) dan code,
yang berarti kode yang mirip dengan kode program yang sebenarnya.
Sebagai contoh, algoritma yang ditulis dengan pseudocode untuk
menyelesaikan permasalahan akan menukarkan isi dari dua nilai yang
berbeda, yaitu A = 10 dan B = 20.
C B B A A C Output (A,B)
Gambar 2.2. Contoh algoritma menggunakan pseudocode
2. flowchart adalah bagan yang menggambarkan urutan logika dari suatu
prosedur pemecahan masalah. Tabel 2.1. menjelaskan tentang simbol-
8
simbol yang dipergunakan dalam flowchart beserta dengan nama dan
fungsi masing-masing simbol.
Tabel. 2.1. Simbol-simbol yang dipergunakan dalam flowchart
Simbol Nama Fungsi
terminal symbol menunjukkan awal dan akhir dari
program
preparation symbol memberikan nilai awal pada suatu
variabel
processing symbol Menunjukkan pengolahan
aritmatika dan pemindahan data
input/output symbol menunjukkan proses input atau
output
desicion symbol mewakili operasi perbandingan
dengan logika.
predefined process
symbol
proses yang ditulis sebagai
subprogram, yaitu prosedur/fungsi
connector symbol penghubung pada halaman yang
sama
off page connector
symbol
penghubung pada halaman yang
berbeda.
arrow arah proses
9
Gambar 2.3 memperlihatkan flowchart untuk menghitung luas lingkaran,
pertama memulai program kemudian memasukkan jari-jari dan program akan
menghitung luas sesuai dengan rumus yang telah dibuat dan menghasilkan
keluaran berupa luas:
Mulai
Masukan jari_jari
Luas 3,14 x jari_jari x jari_jari
Keluaran
Luas
Selesai
Gambar 2.3. Contoh flowchart perhitungan luas
2.1.2. Struktur Dasar Algoritma
Algoritma berisi langkah-langkah penyelesaian suatu masalah.
Langkah-langkah tersebut bisa berupa aksi (kejadian/tindakan), pemilihan
aksi, dan pengulangan aksi. Berikut adalah tiga struktur dasar algoritma,
yaitu:
10
1. Sequence Structure (Struktur Runtunan)
Struktur runtunan adalah struktur dasar algoritma di mana instruksi
akan dieksekusi secara berurutan. Digunakan untuk program yang
instruksinya berurutan. Gambar 2.4. menjelaskan algoritma dengan
struktur runtunan, jika langkah 1 telah dikerjakan maka lanjut ke
langkah 2 tanpa ada persyaratan.
Langkah 1
Langkah 2
Gambar 2.4. Struktur Runtunan
2. Selection Structure (Struktur percabangan)
Struktur percabangan adalah struktur dasar algoritma di mana
instruksi/pernyataan akan dieksekusi apabila memerlukan atau
memnuhi suatu kondisi. Gambar 2.5. menggambarkan algoritma yang
berstruktur percabangan, jika kondisi telah terpenuhi maka akan
menjalankan langkah 1 dan menghasilkan output tetapi jika kondisi
tidak terpenuhi maka akan menjalankan langkah 2.
F kondisi
T
Gambar 2.5. Struktur Percabangan
Langkah 1 Langkah 2
output
11
3. Repetition Structure (Struktur Perulangan)
Struktur perulangan adalah struktur dasar algoritma di mana instruksi
akan dieksekusi secara berulang-ulang apabila memenuhi atau tidak
memenuhi suatu kondisi. Gambar 2.5. menggambarkan algoritma
yang berstruktur percabangan, jika kondisi terpenuhi maka akan
berulang sampai kondisi tidak terpenuhi.
Gambar 2.6. Struktur Perulangan
2.1.3. Dasar Penyusunan Algoritma
Sejauh ini tidak ada standarisasi tentang bagaimana menyusun
algoritma. Secara prinsip anda mempunyai kebebasan untuk menyusun
algoritma. Anda dapat menggunakan kata-kata dalam bahasa manusia
ataupun flowchart untuk mewujudkan suatu algoritma.
Walaupun begitu ada beberapa hal yang perlu diperhatikan dalam
menyusun suatu algoritma. Menurut Knuth yang terkutip dalam
(Kadir,2005:42), ada lima ciri penting yang harus dimiliki sebuah
algoritma, yaitu berupa finiteness, definiteness, masukan, keluaran, dan
efektifitas.
F
T
Kondisi
Prosedur
12
1. Finiteness, menyatakan bahwa suatu algoritma harus berakhir untuk
semua kondisi setelah memproses sejumlah langkah.
2. Definiteness, menyatakan setiap langkah harus dinyatakan dengan
jelas (tidak rancu atau mendua-arti).
3. Masukan, setiap algoritma dapat tidak memiliki masukan atau
mempunyai satu atau beberapa masukan. Masukan merupakan suatu
besaran yang diberikan diawal sebelum algoritma diproses.
4. Keluaran, setiap algoritma memiliki keluaran, entah hanya sebuah
keluaran atau banyak keluaran. Keluaran merupakan besaran yang
mempunyai kaitan atau hubungan dengan masukan.
5. Efektifitas, setiap algoritma diharapkan bersifat efektif, dalam arti
semua operasi yang dilaksanakan oleh algoritma harus sederhana
dan dapat dikerjakan dalam waktu yang terbatas. Secara prinsip,
setiap instruksi dalam algoritma dapat dikerjakan oleh orang hanya
dengan menggunakan kertas dan pensil.
Sebuah algoritma dikatakan benar, untuk beragam masukan, jika
algoritma berakhir dengan keluaran yang benar. Pada keadaan ini
algoritma menyelesaikan masalah komputasi yang diberikan.
(Cormen,2002:6).
13
2.1.4. Kompleksitas Waktu
Kompleksitas waktu adalah lamanya waktu tempuh sebuah
algoritma. Terdapat tiga keadaan yang bisa muncul selama masa tempuh
algoritma yaitu worst case, average case, best case. Penjelasan masing-
masing kompleksitas adalah sebagai berikut :
1. Worst Case
Merupakan waktu tempuh yang bernilai maksimum dari suatu fungsi
f(n) untuk setiap input yang mungkin. Keadaan ini disebut sebagai
keadaan terburuk dari sebuah algoritma.
2. Average Case
Merupakan seuatu keadaan dari waktu tempuh yang ekivalen dengan
nilai suatu fungsi f(n).
3. Best Case
Merupakan waktu tempuh yang bernilai minimum dari suatu fungsi f(n)
untuk setiap input yang mungkin. Keadaan ini disebut keadaan terbaik
dari sebuah proses algoritma dalam menyelesaikan masalah.
2.2. DYNAMIC PROGRAMMING
Dynamic Programming merupakan prosedur optimasi yang
dikembangkan oleh Richar Bellman pada tahun 1952.
Dynamic Programming adalah desain algoritma yang dapat
digunakan ketika solusi untuk masalah dapat dilihat sebagai hasil dari
14
rangkaian keputusan. Menghitung semua urutan keputusan dan kemudian
memilih yang terbaik (Hanchate,2007:3-1).
Dynamic Programming merupakan metode yang secara umum
memecahkan masalah optimasi yang melibatkan urutan keputusan, solusi
optimal dari masalah yang asli dapat ditemukan dari solusi optimal
subproblem. (Lew,2007:5)
Dynamic Programming adalah sebuah metode yang dapat
digunakan saat permasalahan dapat diurai menjadi beberapa permasalahan.
Dynamic programming menyelesaikan setiap permasalahan hanya sekali
kemudian jawaban tersebut disimpan dalam sebuah tabel, itu dilakukan
untuk menghindari perhitungan kembali permasalahan yang ditemui
selanjutnya.(Cormen,2002:323).
Dari beberapa pengertian yang telah dipaparkan sebelumnya, maka
dapat disimpulkan bahwa dynamic programming adalah sebuah metode
yang digunakan untuk mendapatkan sebuah solusi masalah utama dengan
cara menyatukan solusi-solusi optimal sub masalah.
Dynamic Programming biasa digunakan dalam permasalahan
optimalisasi. Pada sebuah masalah bisa didapatkan banyak kemungkinan
solusi. Tiap solusi mempunyai nilai dan kita ingin menemukan sebuah
nilai yang optimal pada masalah tersebut.
Algoritma dynamic programming dapat dipecah menjadi 4 langkah
rangkaian :
15
1. Karakteristikan bahwa masalah adalah solusi optimal.
2. Secara berulang mendefinisikan nilai dari solusi optimal.
3. Menghitung nilai solusi optimal dengan cara bottom-up.
4. Membangun solusi optimal dari informasi yang telah didapat.
Pada dynamic programming menggunakan teknik bottom-up. Ada
tiga maksud dalam teknik bottom-up yaitu;
1. Mulai dengan bagian permasalahan yang paling kecil
2. Kombinasikan solusi yang didapatkan dan ukuran dinaikkan
3. Kerjakan hingga dicapai solusi permasalah asli.
Dynamic programming menggunakan prinsip-prinsip optimal,
artinya setiap bagian dari penyelesaian yang dijalankan harus optimal,
solusi bagian tersebut lalu dikombinasikan sehingga menghasilkan solusi
yang optimal.
2.3. KNAPSACK PROBLEM
Knapsack Problem dapat digambarkan sebagai berikut terdapat
sebuah wadah dengan kapasitas (W) akan diisi dengan benda sebanyak (n),
masing-masing benda memiliki keuntungan berupa value (v) dan berat
berupa weight (w). (Kellerer,2004:2)
Knapsack Problem dapat digambarkan sebagai berikut: Seorang
Pencuri merampok toko, menemukan sejumlah n benda, benda ke i
memiliki keuntungan v dollar dan berat w pon. Pencuri ingin mengambil
16
barang yang berharga sebanyak mungkin, namun ia hanya bisa membawa
barang seberat W pon.( Cormen,2002:382)
Dari penggambaran yang dipaparkan dapat ditarik kesimpulan
bahwa Knapsack Problem dapat digambarkan sebagai memilih dari antara
berbagai macam barang yang paling bernilai mengingat bahwa wadah
memiliki kapasitas terbatas. Tujuannya adalah memilih benda yang ada
sehingga keuntungan total yang dipilih dapat menjadi maksimal serta
ukuran tidak melebihi batasan.
Dari penjabaran di atas maka muncul dua permasalahan knapsack
yaitu fractional knapsack dan 0-1 knapsack problem. Contoh penerapan
dari permasalahan knapsack adalah pemotongan bahan baku manufaktur.
Penjelasan dari kedua versi adalah sebagai berikut :
1. Fractional knapsack problem
Maksud dari fractional knapsack adalah objek-objek yang
tersedia boleh diambil sebagian saja. Misal terdapat objek yang
mempunyai berat 5 kg dengan nilai Rp. 5000, maka diperbolehkan
hanya mengambil 2 kg dengan nilai Rp. 2000.
2. 0-1 knapsack problem
Inti dari knapsack 0-1 adalah objek yang tersedia harus diambil
secara keseluruhan atau tidak sama sekali
Solusi dynamic programming pada 0-1 knapsack problem
digambarkan sebagai berikut :
17
Algoritma mengambil masukan maksimum dengan berat W,
jumlah objek berupa n, dan dua urutan yaitu v= (v1,v2…,vn) dan w=
(w1,w2,….,wn). Keadaan ini akan disimpan dalam tabel
c[0…n,0…W] yang didalamnya terdapat hasil perhitungan pada baris
pertama dari kolom kiri ke kanan sepanjang W kemudian dilanjutkan
pada baris kedua dan seterusnya sebanyak objek n. Pada akhir
perhitungan akan terdapat c[n,W] yang berisi nilai maksimum.
Gambar 2.7. merupakan algoritma dynamic programming pada
penyelesaian masalah 0 1 knapsack, pada penyelesaiannya algoritma
ini menyimpan nilai optimal dalam sebuah array :
for w ← 0 to W do c[0,w] ←0 end for for i ← 1 to n do c[i,0] ← 0 end for for i ← 1 to n do for w=0 to W do if w[i] ≤ w then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c[i-1,w]
end if end for end for
Gambar. 2.7. Algoritma Dynamic Programming Pada 0 1 Knapsack
(cormen, 2002,16-12).
18
Dengan melihat tabel c[n,W], maka dapat ditelusuri dari mana
nilai optimal itu didapat. Jika c[i,w] = c[i-1,w], maka objek ke i bukan
bagian dari solusi, dan melanjutkan penelusuran dengan c[i,w] = c[i-
1,w], Jika objek ke i merupakan bagian dari solusi maka melanjutkan
penelusuran dengan c[i,w] = v[i] + c[i-1,w-w[i]], algoritma ini
memakan waktu n x W.
Berikut contoh kasus penggunaan metode dynamic
programming dalam menyelesaikan masalah 0 1 knapsack :
Terdapat knapsack dengan ruang maksimal W = 6. Kemudian
ingin dimasukkan beberapa jenis barang (n) = 4. Masing-masing
barang memiliki berat(w) dan keuntungan(v) sebagai berikut :
(w1,w2,w3,w4) = (3,2,5,4) , (v1,v2,v3,v4) = (6,5,9,8)
Berapakah keuntungan maksimal yang bisa didapat?
Langkah 1 : inisialisasikan array [0,0] dengan nilai 0 karena tidak ada
objek yang dipilih.
Kondisi : i=0 v[0]=0 w[0]=0 for w ← 0 to W do c[0,w] ←0 for i ← 1 to n do c[i,0] ← 0
i/w 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 2 0 3 0 4 0
19
if w[i] ≤ w then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c[i-1,w]
end if
Kondisi : i=1 v[1]=6 w[1]=3
i/w 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 0 0 6 6 6 12 2 0 3 0 4 0
Kondisi : i=2 v[2]=5 w[2]=2
i/w 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 0 0 6 6 6 12 2 0 0 5 6 10 11 15 3 0 4 0
Kondisi : i=3 v[3]=9 w[3]=5
i/w 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 0 0 6 6 6 12 2 0 0 5 6 10 11 15 3 0 0 5 6 10 11 15 4 0
20
Kondisi : i=4 v[4]=8 w[4]=4
i/w 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 1 0 0 0 6 6 6 12 2 0 0 5 6 10 11 15 3 0 0 5 6 10 11 15 4 0 0 5 6 10 11 15
2.4. BIAYA
Biaya adalah semua pengeluaran untuk mendapatkan barang/jasa
dari pihak ketiga (Kuswadi,2006:60).
Dalam hal ini biaya adalah uang tunai atau kas atau ekivalen kas
(harta non-kas yang dapat ditukar untuk barang atau jasa yang diinginkan)
yang dikorbankan untuk barang atau jasa yang diharapkan dapat
memberikan laba baik untuk masa kini maupun masa mendatang.
(Kuswadi,2006:60).
Biaya adalah uang yg dikeluarkan untuk mengadakan (mendirikan,
melakukan, dsb) sesuatu.(Kamus Besar Bahasa Indonesia).
Berdasarkan dua penjelasan di atas, maka dapat disimpulkan
bahwa biaya adalah pengeluaran untuk mendapatkan sesuatu yang dinilai
dalam bentuk uang.
2.5. PRODUKSI
Produksi ialah suatu proses mentransfer masukan-masukan (inputs)
dari sumber daya manusia dan akan menjadi keluara-keluaran (outputs)
yang dibutuhkan oleh para konsumen.(Musseleman,1996:12)
21
Produksi adalah suatu usaha atau kegiatan untuk menambah
kegunaan (nilai guna) suatu barang. Kegunaan suatu barang akan
bertambah bila memberikan manfaat baru atau lebih dari bentuk semula
(Putong,2005:203).
Produksi adalah suatu kegiatan untuk meningkatkan manfaat
dengan cara mengkombinasikan faktor-faktor produksi kapital, tenaga
kerja, teknologi, managerial skill (Soeharno,2009:67)
Dari beberapa definisi yang disebutkan, maka dapat ditarik
kesimpulan bahwa produksi adalah proses mengubah masukan sebagai
nilai guna/manfaat sebuah barang menjadi keluaran sebagai barang yang
memiliki pertambahan nilai guna.
2.6. BIAYA PRODUKSI
Biaya Produksi adalah semua pengeluaran yang dilakukan oleh
perusahaan untuk memperoleh faktor-faktor produksi dan bahan-bahan
mentah yang akan digunakan untuk menciptakan barang-barang yang di
produksikan perusahaan tersebut (sadono,2006:205)
Biaya Produksi adalah adalah semua pengorbanan yang
dikeluarkan untuk suatu proses produksi yang dinyatakan dalam bentuk
uang menurut harga yang berlaku. ( Sumarsono,2007:154)
Biaya Produksi adalah semua pengeluaran yang digunakan dalam
proses produksi untuk menghasilkan barang atau jasa. (Soeharno,2009:97)
22
Berdasarkan beberapa pengertian di atas, dapat disimpulkan bahwa
biaya produksi adalah pengeluaran dalam bentuk uang untuk memperoleh
faktor-faktor produksi, yang digunakan dalam proses produksi sehingga
menghasilkan suatu produk.
Produksi meliputi empat unsur penting, yang disebut faktor-faktor
produksi, yaitu:
1. Biaya bahan baku
Biaya yang dikeluarkan untuk pembelian bahan baku produk.
2. Biaya tenaga kerja
Biaya yang dikeluarkan sebagai upah pekerja dalam melakukan proses
produksi dari bahan mentah menjadi barang jadi.
3. Biaya overhead pabrik (BOP)
Biaya yang dikeluarkan sebagai sarana pembantu yang digunakan
dalam memproduksi barang.
4. Pengusaha
Biaya atas resiko yang diambil oleh para inisiator suatu perusahaan.
Hasil biaya produksi yang telah didapat akan digunakan untuk
menentukan harga satuan produk.
2.6.1. Analisis Biaya jangka pendek
Analisis biaya jangka pendek adalah analisis biaya dengan
membedakan biaya tetap dengan biaya variabel (Soeharno,2009:99).
23
Dalam analisis jangka pendek konsep-konsep biaya yang digunakan
adalah :
1. Biaya tetap, yaitu biaya yang tidak tergantung pada banyak sedikitnya
produk yang dihasilkan.
2. Biaya variabel , yaitu biaya yang tergantung pada banyak sedikitnya
produk yang dihasilkan.
3. Biaya total, yaitu biaya tetap yang ditambah dengan biaya variabel.
4. Biaya rata-rata yaitu biaya total dibagi produk yang dihasilkan.
5. Biaya marginal yaitu tambahan terhadap biaya total sebagai akibat
ditambahnya satu unit produk yang dihasilkan.
6.
2.7. HARGA SATUAN PRODUK
Harga satuan produk atau harga pokok produksi adalah
perhitungan yang mencakup semua biaya yang telah diadakan untuk suatu
produk sampai barang itu terjual, memberikan informasi yang penting
untuk penentuan harga jual(Gilarso,2003:128).
Tujuan kalkulasi harga pokok adalah
1. Sebagai dasar untuk menentukan harga jual.
2. Sebagai alat untuk mengawasi efisiensi perusahaan.
3. Untuk penentuan besarnya laba/rugi.
4. Sebagai pegangan dalam memilih cara produksi yang paling efisien.
24
2.8. WEB BASED APPLICATION
Web based application adalah sebuah aplikasi yang berjalan pada
jaringan sebagai sebuah sarana aplikasi yang melakukan fungsi atau
kemampuannya. (Shi,2003:257). Web based application berjalan pada web
browser untuk saling berinteraksi dengan users dan menggunakan protocol
HTTP (HyperText Transfer Protocol) yang memungkinkan user
berinteraksi dengan web pages, menyebarkan dan menghubungkan
aplikasi.
2.9. PHP
PHP (Hypertext Preprocessing) adalah bahasa pemrograman yang
cocok untuk pengembangan web dan dapat ditanamkan kedalam HTML
(http://www.php.net). PHP adalah bahasa pemrograman script yang paling
banyak dipakai saat ini. PHP banyak dipakai untuk memrogram situs web
dinamis, walaupun tidak tertutup kemungkinan digunakan untuk
pemakaian lain
Keuntungan menggunakan PHP :
1. Open Source, PHP didistribusikan dibawah lisensi Apache yang
membolehkan penggunaan pada sisi komersil maupun nonkomersil.
2. Komunitas, PHP memiliki basis komunitas dann pengembang yang
luas. Sangat mudah menemukan programmer yang mahir
menggunakan PHP sehingga mudah mendapatkan informasi yang
bermanfaat.
25
3. Database support, PHP mendukung koneksi database open source
seperti MySQL dan PostgreSQL, dan komersial seperti Microsoft
SQL Server.
4. Multiplatform, PHP bisa berjalan pada berbagai sistem operasi seperti
windows, unix, Mac OS 2, OS/2 dan sistem operasi lainnya.
2.10. MySQL
Basis data MySQL telah menjadi basis data open source paling
populer karena memiliki kecepatan performa yang tetap, tingkat keamanan
yang tinggi dan mudah digunakan (http://www.mysql.com/why-mysql).
MySQL adalah sebuah perangkat lunak Sistem Manajemen Basis Data
SQL (Database Management Sistem) yang multithread, multi-user, dengan
sekitar 6 juta instalasi di seluruh dunia.
MySQL dimiliki dan disponsori oleh sebuah perusahaan komersial
Swedia MySQL AB, dimana memegang hak cipta hampir atas semua kode
sumbernya. Kedua orang Swedia dan satu orang Finlandia yang
mendirikan MySQL AB adalah: David Axmark, Allan Larsson, dan
Michael "Monty" Widenius.
MySQL adalah Relational Database Management Sistem
(RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL
(General Public License). Dimana setiap orang bebas untuk menggunakan
MySQL, namun tidak boleh dijadikan produk turunan yang bersifat
komersial. MySQL sebenarnya merupakan turunan salah satu konsep
26
utama dalam basis data sejak lama, yaitu SQL (Structured Query
Language). SQL adalah sebuah konsep pengoperasian basis data, terutama
untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan
pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan
suatu sistem basis data (DBMS) dapat diketahui dari cara kerja optimizer-
nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user
maupun program-program aplikasinya. Sebagai basis data server, MySQL
dapat dikatakan lebih unggul dibandingkan basis data server lainnya dalam
query data.
2.11. STUDI SEJENIS
Studi sejenis merupakan salah satu kegiatan penting dalam
melakukan penelitian ilmiah.
Pada penelitian ini penulis menggunakan studi sejenis yang akan
digunakan sebagai acuan pembuatan aplikasi untuk membedakan hal-hal
yang sudah dilakukan dan menentukan hal-hal yang perlu dilakukan. Studi
literatur ini di ambil dari beberapa penelitian yang telah dilakukan
sebelumnya.
Penelitian yang dilakukan oleh Ryan (2007). “Perancangan
Program Aplikasi Optimalisasi Biaya Produksi Cetak Dengan Metode
27
Pendekatan Mundur” Pada Percetakan Paperindo Harsa. Hingga saat
ini pelanggan yang akan mencetak kebutuhan masing-masing, sulit
untuk menentukan jumlah biaya yang harus disiapkan untuk
kebutuhan cetak mereka. Tujuan penelitian ini adalah merancang sebuah
program komputer untuk menyelesaikan model yang dapat
mengoptimalkan biaya produksi dengan mengaplikasikan pemodelan
matematika dalam dunia industri pada suatu perusahaan dengan metode
pendekatan mundur. Aplikasi yang dibuat peneliti dapat memenuhi
perhitungan yang biasa dilakukan perusahaan dalam merekomendasikan
produk sesuai budget yang tersedia. Kekurangan aplikasi ini tidak bisa
merubah ukuran kertas sesuai kehendak pengguna, aplikasi ini hanya
menghitung jenis brosur saja.
28
Gambar 2.8. Hasil perhitungan aplikasi optimasi biaya
Gambar 2.8. mengilustrasikan tampilan aplikasi optimasi biaya,
terdapat form yang harus diisi oleh pengguna sesuai kebutuhannya.
Setelah form terisi dan diproses maka akan menghasilkan rekomendasi
sesuai dengan input yang dilakukan pengguna sebelumnya.
Penelitian yang dilakukan oleh Kevin Tanadi (2008).
“Perbandingan Algoritma yang dipakai dalam 2D Knapsack
Problem”. Permasalahan Knapsack yang biasa ditemui adalah
29
persoalan Integer Knapsack dimana terdapat n buah objek dan sebuah
knapsack (karung, tas, buntilan, dsb) dengan kapasitas bobot k. Setiap
objek memiliki sebuah bobot (weight) w dan keuntungan (profit) p.
Tujuan dari permasalahan ini adalah dengan mengunakan Knapsack
yang hanya dapat menampung beban maksimal k mendapatkan
keuntungan sebesar - besarnya. Kita dapat mengimplementasi algoritma
sesuai dengan keperluan kita, kita dapat mengimplementasi
algoritma Greedy jika kita hanya memiliki sedikit waktu dan jawaban
yang optimal tidak terlalu diperlukan. Kita dapat memilih metode
Kombinasi Brute-Force dan Runut balik apabila ukuran kertas yang
dipakai kecil. Dan kita dapat mengimplementasikan algoritma Program
Dinamis apabila kita memiliki cukup waktu untuk
mengimplementasikannya dan solusi yang optimal sangatlah
penting. Kekurangan karya ilmiah ini hanya sebatas perbandingan dan
tidak diimplementasikan pada suatu kasus.
Penelitian yang dilakukan oleh Henrywae (2008). “Sistem
Informasi Percetakan”. Permasalahan perhitungan pola pemotongan
yang terjadi pada percetakan dalam hal ini adalah kertas sebagai bahan
baku produksi. Tujuan aplikasi sebagai salah satu fitur yang terdapat pada
sistem ini adalah menghitung jumlah potongan kertas yang dihasilkan
serta membuat pola pemotongannya. Aplikasi ini dapat menghitung dan
membuat pola pemotongan sesuai masukan pengguna. Kekurangan
30
aplikasi ini, tidak menggunakan database kertas sehingga pengguna harus
menghapal jenis kertas beserta ukuran dan harganya.
Gambar 2.9. Hasil perhitungan salah satu fitur
dalam sistem informasi percetakan
Gambar 2.9. mengilustrasikan hasil perhitungan fitur yang tersedia dalam
sistem informasi percetakan, setelah pengguna memasukan ukuran awal dan
ukuran potong kemudian aplikasi memprosesnya maka akan menghasilkan pola
pemotongan.
BAB III
METODOLOGI PENELITIAN
3.1. METODE PENGUMPULAN DATA
Untuk memenuhi data yang diperlukan dalam penelitian ini, maka
dilakukan pengumpulan data dengan menggunakan beberapa teknik
pengumpulan data yaitu:
1. Observasi
Pada teknik observasi ini, penulis mempelajari secara langsung
proses perhitungan biaya produksi di CV. Tunas Utama, hal ini
dilakukan untuk memahami dan mendapatkan informasi jelas seputar
proses perhitungan bahan baku secara khusus maupun perhitungan
biaya produksi secara umum.
2. Studi Pustaka
Penulis membaca dan mempelajari buku-buku mengenai
dynamic programming terutama pada masalah 0 1 knapsack yang
menjadi masalah pada penentuan bahan baku yang akan digunakan
pada proses produksi serta mempelajari perhitungan yang dikeluarkan
pada tahap produksi atau biasa disebut biaya produksi, serta buku-
buku lainnya yang berkaitan dengan masalah pada penulisan ini.
31
3.2. METODE PENGEMBANGAN SISTEM
Dalam penelitian ini metode pengembangan sistem yang
digunakan adalah Rapid Application Development (RAD). RAD adalah
sebuah model proses pengembangan perangkat lunak sekuensial linear
yang menekankan siklus pengembangan cepat. Model RAD ini merupakan
adaptasi "kecepatan tinggi" dari model sekuensial linear di mana
pengembangan cepat dicapai dengan menggunakan model pendekatan
konstruksi berbasis komponen. Jika kebutuhan dipahami dengan baik,
proses RAD memungkinkan tim pengembang menciptakan "sistem
fungsional yang utuh" dalam periode waktu periode yang sangat pendek
kira-kira 60-90 hari. (Pressman,2010: 82).
Model RAD digunakan dengan tujuan mempersingkat waktu
pengerjaan aplikasi serta proses yang dihasilkan, didapatkan secara cepat
dan tepat. ilustrasi model RAD seperti berikut:
32
Gambar 3.1. The RAD Model
Communication
Modelling Planning Business modelling Data modeling Process modelling
Construction Component reuse Automatic code generation
60 – 90 days
Deployment Integration Delivery Feedback
33
3.2.1. Communication
Pada tahap ini melakukan observasi untuk memahami
permasalahan yang terjadi sehingga dapat diketahui, informasi yang harus
diakomodasi oleh aplikasi yang akan dibuat. Dengan pemahaman terhadap
masalah dan informasi yang akan diakomodasi tadi diharapkan aplikasi
yang akan dibuat ini dapat menjadi solusi yang baik terhadap masalah
serta mengakomodasi informasi yang dibutuhkan pengguna.
3.2.2. Planning
Pada tahap ini melakukan perencanaan proses yang terjadi,
perencanaan data yang diperlukan serta pembagian tugas pembuatan
aplikasi kepada beberapa tim yang bekerja secara bersamaan.
3.2.3. Modelling
Pada tahap ini melakukan pemodelan informasi yang harus di
akomodasi, proses-proses yang terjadi pada aplikasi, interface yang akan
dipergunakan, dan data yang diperlukan selama penggunaan aplikasi.
3.2.4 Construction
Pada tahap ini melakukan pembuatan aplikasi dengan
menggunakan komponen yang sudah ada seandainya itu dapat dilakukan
dan menggunakan tools yang dapat mempermudah dan mempercepat
proses pembuatan aplikasi. Hal ini dilakukan sampai aplikasi dapat
berjalan dengan baik dan dapat dipergunakan untuk memecahkan masalah
yang ada.
34
35
3.2.5 Deployment
Pada tahap ini melakukan integrasi dan penyebaran aplikasi yang
telah dibuat, melakukan pengarahan kepada pengguna dalam
menggunakan aplikasi baru tersebut serta mendapatkan feedback dari
pengguna.
3.3. ALASAN MENGGUNAKAN RAD
Alasan penulis menggunakan RAD dalam implementasi algoritma
dynamic programming pada aplikasi perhitungan biaya produksi berbasis
web yaitu:
• Karena aplikasi yang dibuat merupakan aplikasi sederhana yang
mengimplementasikan beberapa baris algoritma dan memerlukan
waktu yang singkat yaitu selama 60 - 90 hari, sehingga metode RAD
tepat dipergunakan karena menekankan siklus perkembangan yang
pendek.
• Karena menggunakan kembali komponen-komponen yang sudah ada
sehingga mempercepat proses pengembangannya.
BAB IV
HASIL DAN PEMBAHASAN
4.1. COMMUNICATION
Berdasarkan pada latar belakang permasalahan yang telah
dijabarkan pada sub-bab 1.1, CV. Tunas Utama membutuhkan adanya
aplikasi yang berguna untuk melakukan perhitungan biaya produksi
terutama pada perhitungan penentuan bahan baku yang akan digunakan
pada proses produksi. Sehingga bahan baku yang digunakan sesuai dengan
kebutuhan produksi.
Perhitungan biaya produksi yang telah didapatkan sebagai output
aplikasi perhitungan biaya produksi ini, digunakan sebagai pertimbangan
penentuan harga jual kepada konsumen.
4.2. PLANNING
Berdasarkan permasalahan yang telah diketahui pada tahap
sebelumnya, maka dapat diketahui fungsi-fungsi yang harus diakomodasi
oleh aplikasi yang akan dibuat seperti perhitungan biaya bahan baku yang
digunakan untuk menghitung biaya produksi, kemudian perhitungan biaya
produksi yang digunakan untuk menghitung harga pokok produksi dan
selanjutnya perhitungan harga jual kepada konsumen. Dapat diketahui juga
proses bisnis yang terjadi serta data-data yang diperlukan seperti data
ertas, proses dan finishing yang akan digunakan untuk perhitungan biaya
produksi itu sendiri.
36
4.3. MODELLING
4.3.1. Business Modelling
Pemodelan ini dilakukan untuk menggambarkan urutan
aktifitas yang menghasilkan suatu nilai atau objek yang dapat
dilihat bagi satu pihak atau entitas tertentu.
pengguna
Menghitung biaya produksi
Menghitung biaya bahan baku
Memasukkan data kertas
Merubah data kertas
Menghapus data kertas
Memasukkan data proses
Administrator Merubah data proses
Menghapus data proses
Memasukkan data finishing
Merubah data finishing
Menghapus data finishing
Memasukkan data ukuran
Merubah data ukuran
Menghapus data ukuran
Merubah password
Menghitung biaya produksi
37
Gambar 4.1. Use Case Diagram
4.3.2. Data Modelling
Tahap selanjutnya adalah menyimpan variabel-variabel
statis yang akan dipergunakan nantinya pada saat proses
perhitungan dilakukan. Oleh karena itu variabel-variabel tersebut
penulis masukkan ke dalam database dengan menggunakan
MYSQL.
Berdasarkan observasi yang telah dilakukan peneliti, maka
dibutuhkan tabel-tabel untuk penyimpanan data, seperti tabel admin
sebagai penyimpan data account administrator, tabel kertas sebagai
penyimpan data jenis kertas, harga kertas dan ukuran awal kertas,
tabel proses sebagai penyimpan data proses dan harga cetak, tabel
finishing sebagai penyimpan data proses dan harga finishing, dan
tabel ukuran sebagai penyimpan data ukuran potong standar kertas.
Lima tabel tersebut terdapat pada database tunasutama.dbf.
Adapun rincian pembuatan tabel sebagai berikut :
1. admin
Nama Tabel : admin
Keterangan : account admin
Tabel 4.1. Data Admin
Nama_field Tipe Panjang Keterangan
Username
Password
Varchar
Varchar
25
60
Username admin
Password admin
38
2. kertas
Nama Tabel : kertas
Keterangan : data kertas
Primary Key : id_kertas
Tabel 4.2. Data Kertas
Nama_field Tipe Panjang Keterangan
id_kertas
jenis
panjang_1
lebar_1
harga_1
panjang_2
lebar_2
harga_2
panjang_3
lebar_3
harga_3
int
varchar
int
int
int
int
int
int
int
int
int
5
50
23
23
23
23
23
23
23
23
23
Id kertas
Jenis kertas
Panjang kertas 1
Lebar kertas 1
Harga kertas 1
Panjang kertas 2
Lebar kertas 2
Harga kertas 2
Panjang kertas 3
Lebar kertas 3
Harga kertas 3
3. proses
Nama Tabel : proses
Keterangan : data proses
Primary Key : id_proses
Tabel 4.3. Data Proses
Nama_field Tipe Panjang Keterangan
Id_proses
Jenis_proses
Gestener
int
varchar
int
5
20
8
Id proses
Nama proses
Harga gestener
39
GTO_46
GTO_52
Oliver_66
Sorm_S
int
int
int
int
10
10
10
10
Harga GTO 46
Harga GTO 52
Harga Oliver 66
Harga GTO 72
4. finishing
Nama Tabel : finishing
Keterangan : data finishing
Primary Key : id_finishing
Tabel 4.4. Data Finishing
Nama_field Tipe Panjang Keterangan
Id_finishing
Jenis_finishing
Harga
Harga_minimal
int
varchar
int
int
5
20
5
8
Id Finishing
Nama finishing
Harga per cm
Harga minimal
5. ukuran
Nama Tabel : ukuran
Keterangan : data ukuran kertas
Primary Key : id_ukuran
Tabel 4.5. Data Ukuran
Nama_field Tipe Panjang Keterangan
Id_ukuran
nama_ukuran
panjang
lebar
int
varchar
int
int
5
10
5
5
Id ukuran
Nama ukuran
Ukuran panjang
Ukuran lebar
40
4.3.3. Process Modelling
Pada tahap sebelumnya telah didefinisikan data yang
dibutuhkan, data ini kemudian ditransformasi untuk mendapatkan
aliran informasi yang mungkin dan diperlukan untuk
mengimplementasikan fungsi bisnis. Penulis menggunakan
flowchart untuk menggambarkan proses bisnis yang telah
dimodelkan sebelumnya. Flowchart aplikasi perhitungan biaya
produksi :
1. Flowchart proses input data kertas.
Gambar 4.2. menjelaskan proses input data kertas, setelah
memasukkan data kemudian di cek oleh aplikasi, jika data
kertas belum ada maka data yang dimasukkan akan disimpan
tetapi jika sudah ada maka akan keluar.
Mulai
input data kertas
Gambar 4.2. Flowchart input data kertas
Data kertas input = kertas dbase
Y
N
Data kertas input
Selesai
Simpan data kertas
41
2. Flowchart proses update data kertas
Gambar 4.3. menjelaskan proses update data kertas, setelah
memilih jenis kertas, kemudian aplikasi menampilkan data
kertas tersebut, setelah data dirubah maka akan disimpan
kembali ke dalam database.
Mulai
Pilih data kertas
Tampilkan data
kertas Data kertas pilihan Update data kertas Selesai
Gambar 4.3. Flowchart update data kertas
3. Flowchart proses delete data kertas.
Gambar 4.4. menjelaskan proses hapus data kertas, setelah data
kertas ditampilkan kemudian memilih data kertas yang akan
dihapus, lalu hapus data kertas tersebut maka data kertas yang
dipilih akan terhapus dari database.
42
Mulai
Pilih data kertas
Tampilkan data kertas
Data kertas pilihan
Delete data kertas
Selesai
Gambar 4.4. Flowchart delete data kertas
4. Flowchart proses input data proses
Gambar 4.5 menjelaskan proses input data proses, setelah
memasukkan data kemudian di cek oleh aplikasi, jika data
proses belum ada maka data yang dimasukkan akan disimpan
tetapi jika sudah ada maka akan keluar.
Mulai
input jenis proses
Jenis proses input = jenis proses dbase
Jenis Proses input
Selesai
Y
N
Simpan jenis proses
43 Gambar 4.5. Flowchart input data proses
5. Flowchart proses update data proses
Gambar 4.6. menjelaskan proses update data proses, setelah
memilih proses, kemudian aplikasi menampilkan data proses
tersebut, setelah data dirubah maka akan disimpan kembali ke
dalam database.
Mulai
Pilih jenis proses
Tampilkan jenis proses
Jenis Proses pilihan
Update jenis proses Selesai
Gambar 4.6. Flowchart update data proses
6. Flowchart proses delete data proses
Gambar 4.7. menjelaskan proses hapus data proses, setelah
data proses ditampilkan kemudian memilih data proses yang
akan dihapus, lalu hapus data proses tersebut maka data proses
yang dipilih akan terhapus dari database.
44
Mulai
Pilih jenis proses
Tampilkan jenis proses
jenis proses pilihan
Delete data proses
Selesai
Gambar 4.7. Flowchart delete data proses
7. Flowchart proses input data finishing
Gambar 4.8. menjelaskan proses input data finishing, setelah
memasukkan data kemudian di cek oleh aplikasi, jika data
finishing belum ada maka data yang dimasukkan akan
disimpan tetapi jika sudah ada maka akan keluar.
Mulai
input jenis finishing
jenis finishing input= jenis finishing dbase
Gambar 4.8. Flowchart input data finishing
Jenis finishing
Selesai
Y
N
Simpan jenis finishing
45
8. Flowchart proses update data finishing.
Gambar 4.9. menjelaskan proses update data finishing, setelah
memilih finishing, kemudian aplikasi menampilkan data
finishing tersebut, setelah data dirubah maka akan disimpan
kembali ke dalam database.
Mulai
Pilih finishing
Tampilkan finishing
Finishing pilihan
Update finishing
Selesai
Gambar 4.9. Flowchart update data finishing
9. Flowchart proses delete data finishing.
Gambar 4.10 menjelaskan proses hapus data finishing, setelah
data finishing ditampilkan kemudian memilih data finishing
yang akan dihapus, lalu hapus data finishing tersebut maka
data finishing yang dipilih akan terhapus dari database.
46
Mulai
Pilih jenis finishing
Tampilkan jenis finishing
jenis finishing pilihan
Delete data finishing
Selesai
Gambar 4.10. Flowchart delete data finishing
10. Flowchart proses input data ukuran kertas.
Gambar 4.11. menjelaskan proses input data ukuran kertas,
setelah memasukkan data kemudian di cek oleh aplikasi, jika
data ukuran kertas belum ada maka data yang dimasukkan
akan disimpan tetapi jika sudah ada maka akan keluar.
Mulai
input jenis ukuran
11. Flowchart proses update data ukuran kertas.
jenis uran in
ukput= jenis uran dbase uk
Jenis ukuran input
Y
N
Selesai
Simpan jenis ukuran
Gambar 4.11. Flowchart input data ukuran kertas
47
11. Flowchart proses delete data ukuran kertas.
Gambar 4.12. menjelaskan proses update data ukuran kertas,
setelah memilih ukuran kertas, kemudian aplikasi
menampilkan data ukuran kertas tersebut, setelah data dirubah
maka akan disimpan kembali ke dalam database.
Mulai
Pilih ukuran kertas
Tampilkan ukuran kertas
Ukuran kertas pilihan
Update ukuran kertas
Selesai
Gambar 4.12. Flowchart update data ukuran kertas
12. Flowchart proses delete data ukuran kertas.
Gambar 4.13. menjelaskan proses hapus data ukuran kertas,
setelah data ukuran kertas ditampilkan kemudian memilih data
ukuran kertas yang akan dihapus, lalu hapus data ukuran kertas
tersebut maka data ukuran kertas yang dipilih akan terhapus
dari database.
48
Mulai
Pilih ukuran kertas
Tampilk an ukuran kertas
Ukur
an kertas pilihan
Delete ukuran kertas
Selesai
Gambar 4.13. Flowchart delete data ukuran kertas
13. Flowchart proses perhitungan biaya bahan baku.
Gambar 4.14. menjelaskan proses perhitungan biaya bahan
baku, setelah memasukan quantity, jenis kertas kemudian
ukuran potong, maka aplikasi akan melakukan perhitungan
sesuai rumus yang telah dimasukkan dan akan menghasilkan
biaya bahan baku produksi.
Mulai
Quantitty, jenis kertas,ukuran, potongan
14. Flowchart proses update data password administrator Gambar 4.14. Flowchart perhitungan biaya bahan baku
Selesai
Biaya bahan baku Quantity/potongan x harga
Biaya bahan baku
49
14. Flowchart update password administrator
Mulai
input password lama dan
password baru 1
md5.password lama
Password lama enkrip input
Passwordlama enkrip dbase
N Passwordlama enkrip input = passwordlama
enkrip dbase
Gambar 4.15. Flowchart update password administrator
Password baru 1 = password baru
md5.password baru
Password baru enkrip
Y
N
Y
Update Password
Selesai
50
Gambar 4.15 menjelaskan tentang proses perubahan password
administrator, pertama masukan password lama dan password
baru, kemudian password lama di enkripsi dan di cek oleh
aplikasi. Jika password lama sama dengan password dalam
database maka password baru di enkripsi dan di simpan ke
dalam database.
15. Flowchart proses perhitungan biaya produksi
Gambar 4.16 menjelaskan tentang proses perhitungan biaya
produksi, setelah memasukan quantity, jenis kertas, proses
ukuran potong kemudian finishing, maka aplikasi akan
melakukan perhitungan sesuai rumus yang telah dimasukkan
dan akan menghasilkan harga jual persatuan produk.
Gambar 4.16. Flowchart proses perhitungan biaya produksi
Biaya bahan baku Quantity/potongan x harga
Mulai
quantity, ukuran, jenis kertas, proses, finishing,potongan
Biaya produksi biaya bahan baku + proses + finishing quantity
Biaya produksi
Selesai
51
4.3.4. Perancangan Interface
Berikut ini adalah perancangan halaman tampilan pada aplikasi
perhitungan biasa produksi produk percetakan yang penulis buat.
1. Perancangan halaman home pengguna.
Berikut merupakan tampilan awal yang disajikan pada saat
mengakses aplikasi ini.
Header
Form Login
Form masukan variabel biaya
produksi
Harga satuan produk
Gambar 4.17. Rancangan tampilan home pengguna
2. Perancangan tampilan home Administrator
Berikut merupakan tampilan awal admin setelah login
dengan account administrator.
Header
Menu
Form masukan variabel biaya
bahan baku Biaya bahan
baku
52
Gambar 4.18. Rancangan tampilan home administrator
3. Perancangan tampilan input data kertas.
Berikut merupakan tampilan untuk memasukkan data kertas
setelah login dengan account administrator.
Header
Menu aplikasi
Form input data kertas
Gambar 4.19. Rancangan tampilan input data kertas
4. Perancangan tampilan update data kertas
Berikut merupakan tampilan untuk merubah data kertas
setelah login dengan account administrator.
Header
Menu aplikasi
Form update data kertas
Gambar 4.20. Rancangan tampilan update data kertas
53
5. Perancangan tampilan delete data kertas.
Berikut merupakan tampilan untuk menghapus data kertas
setelah login dengan account administrator.
Header
Menu aplikasi
Form delete data kertas
Gambar 4.21. Rancangan tampilan delete data kertas
6. Perancangan tampilan input data proses
Berikut merupakan tampilan untuk memasukkan data proses
setelah login dengan account administrator.
Header
Menu aplikasi
Form input data proses
Gambar 4.22. Rancangan tampilan input data proses
54
7. Perancangan tampilan update data proses.
Berikut merupakan tampilan untuk merubah data proses
setelah login dengan account administrator.
Header
Menu aplikasi
Form update data proses
Gambar 4.23. Rancangan tampilan update data proses
8. Perancangan tampilan delete data proses
Berikut merupakan tampilan untuk menghapus data kertas
setelah login dengan account administrator.
Header
Menu aplikasi
Form delete data proses
Gambar 4.24. Rancangan tampilan delete data proses
55
9. Perancangan tampilan input data finishing
Berikut merupakan tampilan untuk memasukkan data
finishing setelah login dengan account administrator.
Header
Menu aplikasi
Form input data finishing
Gambar 4.25. Rancangan tampilan input data finishing
10. Perancangan tampilan update data finishing
Berikut merupakan tampilan untuk merubah data finishing
setelah login dengan account administrator.
Header
Menu aplikasi
Form update finishing
Gambar 4.26. Rancangan tampilan update data finsihing
56
11. Perancangan tampilan delete data finishing
Berikut merupakan tampilan untuk menghapus data
finishing setelah login dengan account administrator.
Header
Menu aplikasi
Form delete data finishing
Gambar 4.27. Rancangan tampilan delete data finishing
12. Perancangan tampilan input data ukuran kertas.
Berikut merupakan tampilan untuk memasukkan data ukuran
kertas setelah login dengan account administrator.
Header
Menu aplikasi
Form input data ukuran
Gambar 4.28. Rancangan tampilan input data ukuran
57
13. Perancangan tampilan update data ukuran kertas.
Berikut merupakan tampilan untuk merubah data ukuran
kertas setelah login dengan account administrator.
Header
Menu aplikasi
Form update ukuran
Gambar 4.29. Rancangan tampilan update data ukuran
14. Perancangan tampilan delete data ukuran
Berikut merupakan tampilan untuk menghapus data ukuran
kertas setelah login dengan account administrator.
Header
Menu aplikasi
Form delete data ukuran
Gambar 4.30. Rancangan tampilan delete data ukuran
58
15. Perancangan tampilan update password administrator
Berikut merupakan tampilan untuk merubah data password
administrator setelah login dengan account administrator.
Header
Menu aplikasi
update password
administrator
Gambar 4.31. Rancangan tampilan update password
administrator
4.3.5. Pemodelan knapsack
Tahap ini merupakan pemodelan knapsack yang terjadi serta
pembahasan algoritma sebagai solusi dari masalah knapsack tersebut.
Berikut merupakan algoritma dynamic programming pada
penyelesaian masalah knapsack :
for w ← 0 to W do c[0,w] ←0 end for for i ← 1 to n do c[i,0] ← 0 end for for i ← 1 to n do for w=0 to W do if w[i] ≤ w then
59
if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c[i-1,w]
end if end for end for
Algoritma dynamic programming akan digunakan sebagai
penentuan bahan baku yang akan digunakan pada proses produksi.
Berikut merupakan contoh implementasi algoritma dynamic
programming pada suatu kasus yang terjadi pada aplikasi:
Terdapat ukuran awal kertas pada gambar A dengan P= 3 dan L=2
akan di potong pada gambar B menjadi ukuran P1=2 dan L1=1,
berapakan potongan yang akan dihasilkan?
Langkah 1 : menentukan variabel-variabel yang akan dipergunakan
untuk perhitungan knapsack. Berikut variabel yang telah ditentukan:
Ruang -> W = L = 2
Jumlah objek yang akan dipotong -> n=(P1,L1) = 2
Berat -> w =(w1,w2)=(P1,L1)= (2,1)
Keuntungan -> v=(v1,v2)=(P/P2, P/P1)= (3,1)
1 2 2
3
A B
60
Langkah 2 : inisialisasikan array [0,0] dengan nilai 0 karena tidak
ada objek yang dipilih.
Langkah 3 : isi tabel berupa array dengan algoritma yang telah
diketahui.
for w ← 0 to W do c[0,w] ←0
i/w 0 1 2 0 0 0 0 1 2
for w ← 0 to 2 do c[0,0] ←0 for w ← 1 to 2 do c[0,1] ←0 for w ← 2 to 2 do c[0,2] ←0 for i ← 1 to n do c[i,0] ← 0
i/w 0 1 2 0 0 0 0 1 0 2 0
for i ← 1 to 2 do c[1,0] ← 0 for i ← 2 to 2 do c[2,0] ← 0
Langkah 4 : isi tabel berupa array berikutnya dengan algoritma
yang telah diketahui.
if w[i] ≤ w then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c[i-1,w]
end if
61
if 2 ≤ 0 then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[1,0] ← c[0,0]
end if
0
i/w 0 1 2 0 0 0
1 0 2 0
if 2 ≤ 1 then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[1,1] ← c[0,1]
end if
i/w 0 1 2 0 0 0 0 1 0 0 2 0
if 2 ≤ 2 then if 3 + c[ 1,0 ] > c[0, 2 ] then c[1,2] ←3 + c[1,0] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c[i-1,w]
end if
62
0
i/w 0 1 2 0 0 0
1 0 0 3 2 0
if 1 ≤ 0 then if v[i] + c[ i,w-w[i] ] > c[i – 1, w ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[i,w] ← c [i–1,w] end if
else c[2,0] ← c[0,0]
end if
i/w 0 1 2 0 0 0 0 1 0 0 3 2 0
if 1 ≤ 1 then if 1 + c[2,0] > c[1, 1 ] then c[2,1] ←1 + c[2,0 ] else
c[i,w] ← c [i–1,w] end if
else c[i,w] ← c [i–1,w]
end if
i/w 0 1 2 0 0 0 0 1 0 0 3 2 0 1
63
if 1 ≤ 2 then if 1 + c[ 2,1 ] > c[1, 2 ] then c[i,w] ←v[i] + c[i-1, w-w[i] ] else
c[2,2] ← c [1,2] end if
else c[i,w] ← c [i–1,w]
end if
0
4.4. CONSTRUCTION
Penulis membuat aplikasi perhitungan biaya produksi produk
percetakan ini dengan bahasa pemrograman PHP versi 5.2.2 serta
MYSQL versi 5.0.41 sebagai tempat penyimpan data yang diperlukan.
Penulis juga memanfaatkan komponen yang sudah ada untuk
mempercepat dan mempermudah proses pembuatan aplikasi.
4.5. DEPLOYMENT
Pada tahap akhir dari metode pengembangan cepat ini dilakukan
integrasi dan penyebaran aplikasi yang akan dijabarkan sebagai berikut :
4.5.1. Spesifikasi hardware dan software
Penulis memerlukan dua macam perangkat, yaitu perangkat
keras (hardware) dan juga perangkat lunak (software). Berikut adalah
spesifikasi yang penulis akan gunakan dalam tahap pengujian :
i/w 0 1 2 0 0 0
1 0 0 3 2 0 1 3
Hasil Akhir Potongan
2
1 1 1
64
1. Perangkat keras (hardware)
Penulis menggunakan sebuah laptop.
2. Perangkat Lunak (software)
Beberapa perangkat lunak yang digunakan untuk membuat
aplikasi ini yaitu :
a. PHP versi 5.2.2
b. MYSQL versi 5.0.41
c. Notepad ++
d. Mozilla firefox 3.5.4
4.5.2. Pengenalan tampilan
Tampilan aplikasi perhitungan biaya produksi produk percetakan
yang telah dibuat adalah sebagai berikut :
1. Tampilan home pengguna.
Berikut merupakan tampilan home bagi pengguna saat mengakses
aplikasi ini. Terdapat form yang harus diisi sehingga pengguna
mendapatkan harga satuan produk.
65
Gambar. 4.32. Tampilan home pengguna
2. Tampilan home administrator
Berikut merupakan tampilan home bagi administrator setelah
melakukan login terlebih dahulu. Terdapat form untuk menghitung
biaya bahan baku produksi.
Gambar. 4.33. Tampilan home administrator
3. Tampilan input data kertas.
Berikut merupakan tampilan input data kertas bagi administrator
setelah melakukan login terlebih dahulu. Terdapat form yang harus
diisi sebagai masukkan data kertas, jenis kertas yang akan
dimasukkan memiliki minimal satu ukuran berupa panjang dan lebar
serta satu satuan harga dan maksimal memliki tiga ukuran berupa
panjang dan lebar serta tiga satuan harga.
66
Gambar. 4.34. Tampilan input data kertas
4. Tampilan update data kertas
Berikut merupakan tampilan update data kertas bagi administrator
setelah melakukan login terlebih dahulu. Terdapat form untuk
merubah data kertas yang telah dipilih, yang kemudian akan
disimpan kembali ke dalam database.
Gambar. 4.35. Tampilan update data kertas
67
5. Tampilan delete data kertas.
Berikut merupakan tampilan delete data kertas bagi administrator
setelah melakukan login terlebih dahulu. Terdapat data kertas yang
telah ditampilkan kemudian memilih data mana yang akan dihapus.
Gambar. 4.36. Tampilan delete data kertas
6. Tampilan input data proses cetak
Berikut merupakan tampilan input data proses cetak bagi
administrator setelah melakukan login terlebih dahulu. Terdapat
beberapa form yang harus diisi. Form diisi dengan harga proses
cetak masing-masing mesin.
68
Gambar. 4.37. Tampilan input data proses cetak
7. Tampilan update data proses cetak
Berikut merupakan tampilan update data proses cetak bagi
administrator setelah melakukan login terlebih dahulu. Terdapat
form untuk merubah data proses cetak yang telah dipilih, kemudian
akan disimpan kembali ke dalam database setelah perubahan data
selesai.
Gambar.4.38. Tampilan update data proses cetak
69
8. Tampilan delete data proses cetak
Berikut merupakan tampilan delete data proses cetak bagi
administrator setelah melakukan login terlebih dahulu. Terdapat data
proses cetak yang telah ditampilkan, kemudian memilih proses cetak
mana yang akan dihapus.
Gambar. 4.39. Tampilan delete data proses cetak
9. Tampilan input data finishing
Berikut merupakan tampilan input data finishing bagi administrator
setelah melakukan login terlebih dahulu. Terdapat form yang harus
diisi dengan jenis finishing termasuk harga finishing tersebut,
kemudian akan disimpan ke dalam database.
70
Gambar. 4.40. Tampilan input data finishing
10. Tampilan update data finishing
Berikut merupakan tampilan update data finishing bagi
administrator setelah melakukan login terlebih dahulu. Terdapat
form untuk merubah data finishing yang telah dipilih, kemudian
disimpan kembali ke dalam database setelah perubahan selesai
dilakukan.
Gambar. 4.41. Tampilan update data finishing
71
11. Tampilan delete data finishing
Berikut merupakan tampilan delete data finishing bagi administrator
setelah melakukan login terlebih dahulu. Terdapat data finishing
yang ditampilkan, kemudian memilih data mana yang akan dihapus.
Gambar. 4.42. Tampilan delete data finishing
12. Tampilan input data ukuran kertas
Berikut merupakan tampilan update data ukuran kertas bagi
administrator setelah melakukan login terlebih dahulu. Terdapat
form untuk memasukkan data ukuran standar yang sering digunakan.
Setelah diisi, kemudian akan disimpan ke dalam database.
72
Gambar. 4.43. Tampilan input data ukuran kertas
13. Tampilan update data ukuran kertas
Berikut merupakan tampilan update data ukuran bagi administrator
setelah melakukan login terlebih dahulu. Terdapat form untuk
merubah data kertas yang telah dipilih, kemudian disimpan kembali
ke dalam database setelah perubahan selesai dilakukan.
Gambar. 4.44. Tampilan update data ukuran kertas
73
14. Tampilan delete data ukuran kertas
Berikut merupakan tampilan delete data ukuran kertas bagi
administrator setelah melakukan login terlebih dahulu. Terdapat data
ukuran kertas yang telah ditampilkan, kemudian pilih data mana
yang akan dihapus.
Gambar. 4.45. Tampilan delete data ukuran kertas
15. Tampilan update password administrator
Berikut merupakan tampilan update password administrator bagi
administrator setelah melakukan login terlebih dahulu. Terdapat
form yang harus diisi untuk melakukan perubahan password.
74
Gambar. 4.46. Tampilan update password administrator
4.5.3. Pengujian
Pada tahap ini penulis melakukan pengujian aplikasi dengan menggunakan
blackbox testing yang berguna untuk menguji komponen yang ada pada
aplikasi.
1. Pengujian perhitungan harga brosur
Tujuan : Untuk menghitung harga satuan brosur
Menu : Halaman awal aplikasi
Hasil : Dari hasil pengujian perhitungan harga brosur, kemudian
didapatkan harga satuan brosur.
75
2. Pengujian perhitungan harga undangan
Tujuan : Untuk menghitung harga satuan undangan
Menu : Halaman awal aplikasi
Hasil : Dari hasil pengujian perhitungan harga undangan,
kemudian didapatkan harga satuan produk undangan.
76
3. Pengujian perhitungan harga kalender
Tujuan : Untuk menghitung harga satuan kalender
Menu : Halaman awal aplikasi
Hasil : Dari hasil pengujian perhitungan harga kalender,
kemudian didapatkan harga satuan produk kalender.
4. Pengujian perhitungan harga nota
Tujuan : Untuk menghitung harga nota per buku
Menu : Halaman awal aplikasi
Hasil : Dari hasil pengujian perhitungan harga nota, kemudian
didapatkan harga satuan produk nota
77
5. Pengujian perhitungan biaya bahan baku
Tujuan : Untuk menghitung biaya bahan baky
Menu : Login sebagai admin → Halaman awal admin
Hasil : Dari hasil pengujian perhitungan harga bahan baku,
kemudian didapatkan harga bahan baku produksi.
6. Pengujian input data kertas
Tujuan : Untuk memasukkan data kertas
Menu : Login sebagai admin → Kertas → input data kertas
Hasil : Dari hasil pengujian input data kertas, kemudian
didapatkan informasi bahwa input data berhasil.
78
7. Pengujian update data kertas
Tujuan : Untuk merubah data kertas yang dipilih
Menu : Login sebagai admin → Kertas → edit data kertas
Hasil : Dari hasil pengujian update data kertas,
kemudian didapatkan informasi berupa highlight
terhadap data yang dirubah.
8. Pengujian delete data kertas
Tujuan : Untuk menghapus data kertas yang ada
Menu : Login sebagai admin → Kertas → delete data kertas
Hasil : Dari hasil pengujian delete data kertas, kemudian
didapatkan informasi kertas dengan id sekian telah
terhapus dari database
79
9. Pengujian input data proses
Tujuan : Untuk memasukan data proses
Menu : Login sebagai admin → Proses → input data proses
Hasil : Dari hasil pengujian input data proses, kemudian
didapatkan informasi bahwa input data proses berhasil.
10. Pengujian update data proses
Tujuan : Untuk merubah data proses
Menu : Login sebagai admin → Proses → edit data proses
Hasil : Dari hasil pengujian update data proses,
kemudian didapatkan informasi berupa highlight
terhadap data yang dirubah.
80
11. Pengujian delete data proses
Tujuan : Untuk menghapus data proses
Menu : Login sebagai admin → Proses → edit data proses
Hasil : Dari hasil pengujian delete data proses, kemudian
didapatkan informasi proses dengan id sekian telah
terhapus dari database.
12. Pengujian input data finishing
Tujuan : Untuk memasukkan data finishing
Menu : Login sebagai admin → Finishing → input data
Finishing
Hasil : Dari hasil pengujian input data finishing, kemudian
didapatkan informasi bahwa input data finishing
berhasil.
81
13. Pengujian update data finishing
Tujuan : Untuk merubah data finishing
Menu : Login sebagai admin → Finishing → edit data
finishing
Hasil : Dari hasil pengujian update data finishing,
kemudian didapatkan informasi berupa highlight
terhadap data yang dirubah.
14. Pengujian delete data finishing
Tujuan : Untuk menghapus data finishing
Menu : Login sebagai admin → Finishing → edit data
Finishing
Hasil : Dari hasil pengujian delete data finishing, kemudian
didapatkan informasi finishing dengan id sekian telah
terhapus dari database.
82
15. Pengujian input data ukuran
Tujuan : Untuk memasukkan data ukuran
Menu : Login sebagai admin → Ukuran → input data Ukuran
Hasil : Dari hasil pengujian input data ukuran, Kemudian
didapatkan informasi input data finishing berhasil.
16. Pengujian update data ukuran
Tujuan : Untuk merubah data ukuran
Menu : Login sebagai admin → Ukuran → update data
Ukuran
Hasil : Dari hasil pengujian update data ukuran,
kemudian didapatkan informasi berupa highlight
terhadap data yang dirubah.
83
17. Pengujian delete data ukuran
Tujuan : Untuk menghapus data ukuran
Menu : Login sebagai admin → Ukuran → update data
Ukuran
Hasil : Dari hasil pengujian delete data ukuran, kemudian
didapatkan informasi ukuran dengan id sekian telah
terhapus dari database.
18. Pengujian update password administrator
Tujuan : Untuk merubah password administrator
Menu : Login sebagai admin → Password → update data
password
Hasil : Dari hasil pengujian update data password,
kemudian didapatkan informasi update berhasil.
84
Tabel di bawah ini merupakan hasil pengujian dengan blackbox testing.
Tabel 4.6. Hasil pengujian dengan blackbox testing.
No Modul Prasyarat Hasil yang
diharapkan
Hasil
Pengujian
1 Perhitungan
harga brosur -
Menghitung harga
satuan produk
brosur
OK
2 Perhitungan
harga
undangan
-
Menghitung harga
satuan produk
undangan
OK
3 Perhitungan
harga
kalender
-
Menghitung harga
satuan produk
kalender
OK
4 Perhitungan
harga nota -
Menghitung harga
satuan produk nota OK
5 Perhitungan
biaya bahan
baku
Login
sebagai
administrator
Menghitung biaya
bahan baku
produksi
OK
6 Input data
kertas
Login
sebagai
administrator
Memasukkan data
kertas sesuai form
yang tersedia
OK
7 Update data
kertas
Login
sebagai
administrator
Merubah data kertas
yang telah dipilih
sebelumnya
OK
8 Delete data
kertas
Login
sebagai
administrator
Menghapus data
kertas yang ada
pada database
OK
9
Input data
proses
Login
sebagai
administrator
Memasukkan data
proses sesuai form
yang tersedia
OK
85
10 Update data
proses
Login
sebagai
administrator
Merubah data
proses yang telah
dipilih sebelumnya
OK
11 Delete data
proses
Login
sebagai
administrator
Menghapus data
proses yang ada
pada database
OK
12 Input data
finishing
Login
sebagai
administrator
Memasukkan data
finishing sesuai
form yang tersedia
OK
13 Update data
finishing
Login
sebagai
administrator
Merubah data
finishing yang telah
dipilih sebelumnya
OK
14 Delete data
finishing
Login
sebagai
administrator
Menghapus data
finishing yang ada
pada database
OK
15 Input data
ukuran kertas
Login
sebagai
administrator
Memasukkan data
ukuran kertas sesuai
form yang tersedia
OK
16 Update data
ukuran kertas
Login
sebagai
administrator
Merubah data
ukuran kertas yang
telah dipilih
sebelumnya
OK
17 Delete data
ukuran kertas
Login
sebagai
administrator
Menghapus data
ukuran kertas yang
ada pada database
OK
18 Update data
password
administrator
Login
sebagai
administrator
Merubah data
password yang
sudah ada
OK
86
87
4.5.4. Implementasi
Pada tahap ini dilakukan pengarahan cara penggunaan aplikasi
perhitungan. Setelah dapat berjalan dengan baik maka aplikasi ini sudah
dapat diterapkan pada perusahaan percetakan.
BAB V
KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan untuk menjawab permasalahan yang ada serta
saran yang bermanfaat bagi peneliti yang ingin mengembangkan sistem ini.
5.1. KESIMPULAN
Berdasarkan hasil penulisan skripsi, maka dapat diambil kesimpulan
antara lain sebagai berikut:
1. Aplikasi dapat menghitung biaya produksi dengan variabel input yang
telah ditentukan perusahaan.
2. Aplikasi mampu menentukan ukuran kertas yang akan dipakai sebagai
bahan baku produksi.
3. Berhasil mengimplementasikan metode dynamic programming pada
masalah optimalisasi knapsack yang terdapat pada aplikasi perhitungan
biaya produksi produk percetakan.
5.2. SARAN
Berdasarkan kesimpulan diatas penulis memberikan saran, yaitu:
1. Menambahkan produk-produk percetakan lainnya.
2. Menambahkan fitur print untuk mencetak pola pemotongan kertas
88
DAFTAR PUSTAKA
Cormen, Thomas H., et all. 2002. Introduction to Algorithms.
New York: McGraw Hill.
Hanchate, D. B dan Kurmi, A. J. 2007. Design and Analysis of Algorithms.
Pune: Technical Publications Pune.
Henrywae.2008. Sistem Informasi Percetakan.[Online]. Tersedia:
http://www.ziddu.com/download/2703645/Plano.zip.html.[4 Mei 2010].
Irawan, Handi. 2002. 10 Prinsip Kepuasan Pelanggan.
Jakarta: PT Elex Media Komputindo.
Kadir, Abdul dan Heriyanto. 2005. Algoritma Pemrograman Menggunakan C++.
Jogyakarta: CV Andi Offset.
Kamus Besar Bahasa Indonesia.
Kellerer, Hans., et all. 2004. Knapsack Problems. Berlin: Springer.
Kuswadi. 2006. Memahami Rasio-Rasio Keuangan Bagi Orang Awam.
Jakarta: PT Elex Media Komputindo.
Lew, A dan Mauch, H. 2007. Dynamic Programming A Computational Tool.
Berlin: Springer.
89
Munir, Rinaldi. 2007. Algoritma dan Pemrograman Dalam Bahasa PASCAL dan C.
Bandung: Informatika.
Musselman, A. Vernon dan Jackson, John H. 1996. Pengantar Ekonomi Perusahaan.
Jakarta: Erlangga.
Pressman, Roger S. 2010. Software Engineering “A Practitioner’s Approach”.
New York: McGraw Hill.
Purwanto, Eko Budi. 2008. Perancangan dan Analisis Algoritma.
Jogyakarta: Graha Ilmu.
Putong,Iskandar. 2005. Teori Ekonomi Mikro : Kajian Konvensional dan Wacana
Syariah. Jakarta: Mitra Wacana Media.
Ryan. 2007. Perancangan Program Aplikasi Optimalisasi Biaya Produksi Cetak
Dengan Metode Pendekatan Mundur (Studi Kasus : Percetakan Paperindo
Harsa).[Online].Tersedia:http://library.binus.ac.id/eColls/eThesis/Abstrak/2
007-2-00473-MTIF%20Abstrak.pdf. [11 April 2010].
Sismoro, Heri. 2005. Logika Informatika, Algoritma dan Pemrograman Komputer.
Jogyakarta: Jogyakarta.
Sjukani. Moh. 2007. Algoritma (Algoritma dan Struktur Data 1) dengan C, C++ dan
Java. Jakarta: Mitra Wacana Media.
Shi, Nansi dan Murthy, V.K. 2003. Architectural Issues of Web-Enabled Electronic
Business. Hershey: Idea Group Publishing.
90
91
Soeharno. 2009. Teori Mikroekonomi. Jogyakarta: CV Andi Offset.
Sukirno, Sadono. 2006. Pengantar Teori Mikro Ekonomi.
Jakarta: PT Raja Grafindo Persada.
Sumarsono, Sonny. 2007. Ekonomi Mikro Teori dan Soal Latihan.
Jogyakarta: Graha Ilmu.
Tanadi, Kevin.2008. Perbandingan Algoritma yang dipakai dalam 2D Knapsack
Problem.[Online].Tersedia:http://www.informatika.org/~rinaldi/Stmik/2007
-2008/Makalah2008/MakalahIF2251-2008-055.pdf. [30 Maret 2010]
86
LAMPIRAN
1. Kode Pemrograman Koneksi ke Database <?php $host = "localhost"; $user = "root"; $password_lagi = ""; $databasename = "tunasutama"; $connection = mysql_connect($host, $user, $password_lagi) or die ("Kesalahan Koneksi ... !!"); mysql_select_db($databasename, $connection) or die("Databasenya Error"); ?>
2. Kode Pemrograman Perhitungan Harga Brosur <? session_start(); include "../koneksi/koneksi.php"; include "../class/controller.php"; if (isset($_POST['id_ukuran'])) { $tes=$_POST['id_ukuran'];
$result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran=$tes", $connection) or die ("Pilih ukuran!");
$row = mysql_fetch_array ($result); $panjang=$row['panjang']; $lebar=$row['lebar']; } else { $panjang = $_POST['panjang']; $lebar = $_POST['lebar']; } if (isset($_POST['kertas'])) { $tes_1=$_POST['kertas']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas=$rows['jenis']; $P=$rows['panjang_1']; $L=$rows['lebar_1']; $harga=$rows['harga_1']; $P1=$rows['panjang_2']; $L1=$rows['lebar_2']; $harga1=$rows['harga_2']; $P2=$rows['panjang_3']; $L2=$rows['lebar_3']; $harga2=$rows['harga_3']; } if (isset($_POST['proses'])) { $tes_2=$_POST['proses']; $result=mysql_query("SELECT * FROM proses WHERE id_proses=$tes_2", $connection)
or die ("Pilih Proses!"); $row_2 = mysql_fetch_array ($result); $warna = $row_2['jenis_proses']; if($panjang<=330 && $lebar<=210){ $proses = $row_2['gestener']; } else if($panjang<=440 && $lebar<=340){ $proses = $row_2['GTO_46']; } else if($panjang<=500 && $lebar<=360){ $proses = $row_2['GTO_52']; } else if($panjang<=650 && $lebar<=440){ $proses = $row_2['GTO_66'];
87
} else if($panjang<=700 && $lebar<=500){ $proses = $row_2['GTO_72']; } } if (isset($_POST['finishing'])) { $tes_3=$_POST['finishing']; $result=mysql_query("SELECT * FROM finishing WHERE id_finishing=$tes_3", $connection) or die ("Pilih finishing!"); $row_3 = mysql_fetch_array ($result); $finish=$row_3['jenis_finishing']; $harga_finish=$row_3['harga']; $harga_minimal=$row_3['harga_minimal']; } $quantity=$_POST['quantity']; if ($panjang >=$lebar) {$P_2=$panjang; $L_2=$lebar;} else {$P_2=$lebar; $L_2=$panjang;} if ($panjang != NULL && $lebar != NULL) { $profit_1 = floor($P/$L_2); $profit_2 = floor($P/$P_2); $profit_3 = floor($P1/$L_2); $profit_4 = floor($P1/$P_2); $profit_5 = floor($P2/$L_2); $profit_6 = floor($P2/$P_2); } if($quantity<0 || $panjang<0 || $lebar<0) { echo "Masukkan variabel tidak boleh kurang dari 0"; } else if ($quantity != NULL ) { $a = new Controller(); $pertama = $a->hitung_Knapsack($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); $b = new Controller(); $kedua = $b->hitung_Knapsack($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $c = new Controller(); $ketiga = $c->hitung_Knapsack($P_2,$L_2,$profit_1,$profit_2,$L,$P); if($pertama>0) { $hitung = (floor($quantity/$pertama)) * $harga2; } if($kedua>0) { $hitung_1= (floor($quantity/$kedua)) * $harga1; } if($ketiga>0) { $hitung_2= (floor($quantity/$ketiga)) * $harga; } if ($hitung_1>0 && $hitung<=$hitung_1 && $hitung<=$hitung_2) { $bahan = $hitung; } else if($hitung_1>0 && $hitung_1<=$hitung && $hitung_1<=$hitung_2){ $bahan = $hitung_1; } else {$bahan=$hitung_2;} $finishing=($harga_finish/100) * $panjang *$lebar; if($finishing<$harga_minimal)
88
{ $finishing=$harga_minimal; } if ($ketiga>0 || $kedua>0 || $kesatu>0) { if ($proses>0) { $kk = new Controller(); $harga_pro= $bahan + $proses + $finishing; $satuan = round(($harga_pro/$quantity) * 2); $satuan_lagi = $kk->rupiah($satuan); $total = round($satuan*$quantity); $total_lagi = $kk->rupiah($total); echo "Jumlah Brosur= ".$quantity."</br>"; echo "Kertas = ".$kertas."</br>"; echo "Panjang = ".$panjang." mm</br>"; echo "lebar = ".$lebar." mm</br>"; echo "Warna = ".$warna."</br>"; echo "finishing = ".$finish."</br>"; echo "Harga Satuan ".$satuan_lagi."</br>"; echo "<b >Harga total ".$total_lagi ."</b></br>"; echo "</br>"; } } } else { echo ""; } ?>
3. Kode Pemrograman Perhitungan Harga Undangan
<? session_start(); include "../koneksi/koneksi.php"; include "../class/controller.php"; if (isset($_POST['id_ukuran'])) { $tes=$_POST['id_ukuran']; $result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran=$tes",
$connection) or die ("Pilih ukuran!"); $row = mysql_fetch_array ($result); $panjang=$row['panjang']; $lebar=$row['lebar']; } else { $panjang = $_POST['panjang']; $lebar = $_POST['lebar']; } if (isset($_POST['kertas'])) { $tes_1=$_POST['kertas']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas=$rows['jenis']; $P=$rows['panjang_1']; $L=$rows['lebar_1']; $harga=$rows['harga_1']; $P1=$rows['panjang_2']; $L1=$rows['lebar_2']; $harga1=$rows['harga_2']; $P2=$rows['panjang_3']; $L2=$rows['lebar_3']; $harga2=$rows['harga_3']; }
89
if (isset($_POST['proses'])) { $tes_2=$_POST['proses']; $result=mysql_query("SELECT * FROM proses WHERE id_proses=$tes_2", $connection)
or die ("Pilih Proses!"); $row_2 = mysql_fetch_array ($result); $warna = $row_2['jenis_proses']; if($panjang<=330 && $lebar<=210){ $proses = $row_2['gestener']; } else if($panjang<=440 && $lebar<=340){ $proses = $row_2['GTO_46']; } else if($panjang<=500 && $lebar<=360){ $proses = $row_2['GTO_52']; } else if($panjang<=650 && $lebar<=440){ $proses = $row_2['GTO_66']; } else if($panjang<=700 && $lebar<=500){ $proses = $row_2['GTO_72']; } } if (isset($_POST['finishing'])) { $tes_3=$_POST['finishing']; $result=mysql_query("SELECT * FROM finishing WHERE id_finishing=$tes_3",
$connection) or die ("Pilih finishing!"); $row_3 = mysql_fetch_array ($result); $finish=$row_3['jenis_finishing']; $harga_finish=$row_3['harga']; $harga_minimal=$row_3['harga_minimal']; } if (isset($_POST['id_ukuran_1'])) { $tes=$_POST['id_ukuran_1']; $result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran_1=$tes",
$connection) or die ("Pilih ukuran!"); $row = mysql_fetch_array ($result); $panjang_1=$row['panjang']; $lebar_1=$row['lebar']; } else { $panjang_1 = $_POST['panjang']; $lebar_1 = $_POST['lebar']; } if (isset($_POST['kertas_1'])) { $tes_1=$_POST['kertas_1']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas_1=$rows['jenis']; $P_1=$rows['panjang_1']; $L_1=$rows['lebar_1']; $harga_1=$rows['harga_1']; $P1_1=$rows['panjang_2']; $L1_1=$rows['lebar_2']; $harga1_1=$rows['harga_2']; $P2_1=$rows['panjang_3']; $L2_1=$rows['lebar_3']; $harga2_1=$rows['harga_3']; } if (isset($_POST['proses_1'])) { $tes_2=$_POST['proses']; $result=mysql_query("SELECT * FROM proses WHERE id_proses=$tes_2", $connection)
or die ("Pilih Proses!");
90
$row_2 = mysql_fetch_array ($result); $warna_1 = $row_2['jenis_proses']; if($panjang<=330 && $lebar<=210){ $proses_1 = $row_2['gestener']; } else if($panjang<=440 && $lebar<=340){ $proses_1 = $row_2['GTO_46']; } else if($panjang<=500 && $lebar<=360){ $proses_1 = $row_2['GTO_52']; } else if($panjang<=650 && $lebar<=440){ $proses_1 = $row_2['GTO_66']; } else if($panjang<=700 && $lebar<=500){ $proses_1 = $row_2['GTO_72']; } } $quantity=$_POST['quantity']; if ($panjang >=$lebar) {$P_2=$panjang; $L_2=$lebar;} else {$P_2=$lebar; $L_2=$panjang;} if ($panjang != NULL && $lebar != NULL) { $profit_1 = floor($P/$L_2); $profit_2 = floor($P/$P_2); $profit_3 = floor($P1/$L_2); $profit_4 = floor($P1/$P_2); $profit_5 = floor($P2/$L_2); $profit_6 = floor($P2/$P_2); } if($quantity<0 || $panjang<0 || $lebar<0) { echo "Masukkan variabel tidak boleh kurang dari 0"; } else if ($quantity != NULL ) { if (isset($_POST['poly'])) { $poly=100000; $ya_1='ya'; } else { $poly=0; $ya_1='tidak'; } if (isset($_POST['emboss'])) { $emboss=100000; $ya_2='ya'; } else { $emboss=0; $ya_2='tidak'; } if (isset($_POST['rel'])) { $rel=100000; $ya_3='ya'; } else
91
{ $rel=0; $ya_3='tidak'; } $a = new Controller(); $pertama = $a->hitung_Knapsack($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); $b = new Controller(); $kedua = $b->hitung_Knapsack($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $c = new Controller(); $ketiga = $c->hitung_Knapsack($P_2,$L_2,$profit_1,$profit_2,$L,$P); if($pertama>0) { $hitung = (floor($quantity/$pertama)) * $harga2; } if($kedua>0) { $hitung_1= (floor($quantity/$kedua)) * $harga1; } if($ketiga>0) { $hitung_2= (floor($quantity/$ketiga)) * $harga; } if ($hitung_1>0 && $hitung<=$hitung_1 && $hitung<=$hitung_2) { $bahan = $hitung; } else if($hitung_1>0 && $hitung_1<=$hitung && $hitung_1<=$hitung_2){ $bahan = $hitung_1; } else {$bahan=$hitung_2;} $finishing=($harga_finish/100) * $panjang *$lebar; if($finishing<$harga_minimal) { $finishing=$harga_minimal; } if ($ketiga>0 || $kedua>0 || $kesatu>0) { if ($proses>0) { $ss = new Controller(); $harga_pro= $bahan + $proses + $finishing + $poly + $rel +
$emboss; $satuan = round(($harga_pro/$quantity) * 2); $satuan_lagi = $ss->rupiah($satuan); $total = round($satuan*$quantity); $total_lagi = $ss->rupiah($total); echo "Jumlah Undangan = ".$quantity."</br>"; echo "Kertas = ".$kertas."</br>"; echo "Panjang = ".$panjang." mm</br>"; echo "lebar = ".$lebar." mm</br>"; echo "Warna = ".$warna."</br>"; echo "Finishing = ".$finish."</br>"; echo "Poly = ".$ya_1."</br>"; echo "Rel = ".$ya_2."</br>"; echo "Emboss = ".$ya_3."</br>"; echo "Harga Satuan ".$satuan_lagi."</br>"; echo "<b >Harga total ".$total_lagi ."</b></br>"; echo "</br>"; } } } else { echo ""; } ?>
92
4. Kode Pemrograman Perhitungan Harga Kalender <? session_start(); include "../koneksi/koneksi.php"; include "../class/controller.php"; if (isset($_POST['id_ukuran'])) { $tes=$_POST['id_ukuran']; $result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran=$tes",
$connection) or die ("Pilih ukuran!"); $row = mysql_fetch_array ($result); $panjang=$row['panjang']; $lebar=$row['lebar']; } else { $panjang = $_POST['panjang']; $lebar = $_POST['lebar']; } if (isset($_POST['kertas'])) { $tes_1=$_POST['kertas']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas=$rows['jenis']; $P=$rows['panjang_1']; $L=$rows['lebar_1']; $harga=$rows['harga_1']; $P1=$rows['panjang_2']; $L1=$rows['lebar_2']; $harga1=$rows['harga_2']; $P2=$rows['panjang_3']; $L2=$rows['lebar_3']; $harga2=$rows['harga_3']; } if (isset($_POST['proses'])) { $tes_2=$_POST['proses']; $result=mysql_query("SELECT * FROM proses WHERE id_proses=$tes_2", $connection)
or die ("Pilih Proses!"); $row_2 = mysql_fetch_array ($result); $warna = $row_2['jenis_proses']; if($panjang<=330 && $lebar<=210){ $proses = $row_2['gestener']; } else if($panjang<=440 && $lebar<=340){ $proses = $row_2['GTO_46']; } else if($panjang<=500 && $lebar<=360){ $proses = $row_2['GTO_52']; } else if($panjang<=650 && $lebar<=440){ $proses = $row_2['GTO_66']; } else if($panjang<=700 && $lebar<=500){ $proses = $row_2['GTO_72']; } } if (isset($_POST['finishing'])) { $tes_3=$_POST['finishing']; $result=mysql_query("SELECT * FROM finishing WHERE id_finishing=$tes_3",
$connection) or die ("Pilih finishing!"); $row_3 = mysql_fetch_array ($result); $finish=$row_3['jenis_finishing']; $harga_finish=$row_3['harga']; $harga_minimal=$row_3['harga_minimal'];
93
} $quantity=$_POST['quantity']; $rangkap=$_POST['rangkap']; $jilid=$_POST['jilid']; if ($panjang >=$lebar) {$P_2=$panjang; $L_2=$lebar;} else {$P_2=$lebar; $L_2=$panjang;} if ($panjang != NULL && $lebar != NULL) { $profit_1 = floor($P/$L_2); $profit_2 = floor($P/$P_2); $profit_3 = floor($P1/$L_2); $profit_4 = floor($P1/$P_2); $profit_5 = floor($P2/$L_2); $profit_6 = floor($P2/$P_2); } if($quantity<0 || $panjang<0 || $lebar<0) { echo "Masukkan variabel tidak boleh kurang dari 0"; } else if ($quantity != NULL ) { if ($jilid==1) { $jilid=(300 * $lebar); $ya_1='spiral'; } else if($jilid==2) { $jilid=1200; $ya_1='kawat'; } $a = new Controller(); $pertama = $a->hitung_Knapsack($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); $b = new Controller(); $kedua = $b->hitung_Knapsack($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $c = new Controller(); $ketiga = $c->hitung_Knapsack($P_2,$L_2,$profit_1,$profit_2,$L,$P); if($pertama>0) { $hitung = (floor($quantity/$pertama)) * $harga2; } if($kedua>0) { $hitung_1= (floor($quantity/$kedua)) * $harga1; } if($ketiga>0) { $hitung_2= (floor($quantity/$ketiga)) * $harga; } if ($hitung_1>0 && $hitung<=$hitung_1 && $hitung<=$hitung_2) { $bahan = $hitung; } else if($hitung_1>0 && $hitung_1<=$hitung && $hitung_1<=$hitung_2){ $bahan = $hitung_1; } else {$bahan=$hitung_2;} $finishing=($harga_finish/100) * $panjang *$lebar; if($finishing<$harga_minimal) { $finishing=$harga_minimal;
94
} if ($ketiga>0 || $kedua>0 || $kesatu>0) { if ($proses>0) { $jj = new Controller(); $harga_pro= ($rangkap * $bahan) + $proses + $finishing +
$jilid; $satuan = round(($harga_pro/$quantity) * 2); $satuan_lagi = $jj->rupiah($satuan); $total = round($satuan*$quantity); $total_lagi = $jj->rupiah($total); echo "Jumlah Kalender= ".$quantity."</br>"; echo "Kertas = ".$kertas."</br>"; echo "Panjang = ".$panjang." mm</br>"; echo "lebar = ".$lebar." mm</br>"; echo "Warna = ".$warna."</br>"; echo "Rangkap = ".$rangkap."</br>"; echo "Finishing = ".$finish."</br>"; echo "Jilid = ".$ya_1."</br>"; echo "Harga Satuan ".$satuan_lagi."</br>"; echo "<b >Harga total ".$total_lagi ."</b></br>"; echo "</br>"; } } } else { echo ""; } ?>
5. Kode Pemrograman Perhitungan Harga Nota
<? session_start(); include "../koneksi/koneksi.php"; include "../class/controller.php"; if (isset($_POST['id_ukuran'])) { $tes=$_POST['id_ukuran']; $result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran=$tes",
$connection) or die ("Pilih ukuran!"); $row = mysql_fetch_array ($result); $panjang=$row['panjang']; $lebar=$row['lebar']; } else { $panjang = $_POST['panjang']; $lebar = $_POST['lebar']; } if (isset($_POST['kertas'])) { $tes_1=$_POST['kertas']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas=$rows['jenis']; $P=$rows['panjang_1']; $L=$rows['lebar_1']; $harga=$rows['harga_1']; $P1=$rows['panjang_2']; $L1=$rows['lebar_2']; $harga1=$rows['harga_2']; $P2=$rows['panjang_3']; $L2=$rows['lebar_3']; $harga2=$rows['harga_3'];
95
} if (isset($_POST['proses'])) { $tes_2=$_POST['proses']; $result=mysql_query("SELECT * FROM proses WHERE id_proses=$tes_2", $connection)
or die ("Pilih Proses!"); $row_2 = mysql_fetch_array ($result); $warna = $row_2['jenis_proses']; if($panjang<=330 && $lebar<=210){ $proses = $row_2['gestener']; } else if($panjang<=440 && $lebar<=340){ $proses = $row_2['GTO_46']; } else if($panjang<=500 && $lebar<=360){ $proses = $row_2['GTO_52']; } else if($panjang<=650 && $lebar<=440){ $proses = $row_2['GTO_66']; } else if($panjang<=700 && $lebar<=500){ $proses = $row_2['GTO_72']; } } if (isset($_POST['finishing'])) { $tes_3=$_POST['finishing']; $result=mysql_query("SELECT * FROM finishing WHERE id_finishing=$tes_3",
$connection) or die ("Pilih finishing!"); $row_3 = mysql_fetch_array ($result); $finish=$row_3['jenis_finishing']; $harga_finish=$row_3['harga']; $harga_minimal=$row_3['harga_minimal']; } $q=$_POST['quantity']; $quantity=50 * $q; $rangkap=$_POST['rangkap']; if ($panjang >=$lebar) {$P_2=$panjang; $L_2=$lebar;} else {$P_2=$lebar; $L_2=$panjang;} if ($panjang != NULL && $lebar != NULL) { $profit_1 = floor($P/$L_2); $profit_2 = floor($P/$P_2); $profit_3 = floor($P1/$L_2); $profit_4 = floor($P1/$P_2); $profit_5 = floor($P2/$L_2); $profit_6 = floor($P2/$P_2); } if($quantity<0 || $panjang<0 || $lebar<0) { echo "Masukkan variabel tidak boleh kurang dari 0"; } else if ($quantity != NULL ) { $a = new Controller(); $pertama = $a->hitung_Knapsack($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); $b = new Controller(); $kedua = $b->hitung_Knapsack($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $c = new Controller(); $ketiga = $c->hitung_Knapsack($P_2,$L_2,$profit_1,$profit_2,$L,$P); if($pertama>0)
96
{ $hitung = (floor($quantity/$pertama)) * $harga2; } if($kedua>0) { $hitung_1= (floor($quantity/$kedua)) * $harga1; } if($ketiga>0) { $hitung_2= (floor($quantity/$ketiga)) * $harga; } if ($hitung_1>0 && $hitung<=$hitung_1 && $hitung<=$hitung_2) { $bahan = $hitung; } else if($hitung_1>0 && $hitung_1<=$hitung && $hitung_1<=$hitung_2){ $bahan = $hitung_1; } else {$bahan=$hitung_2;} if ($ketiga>0 || $kedua>0 || $kesatu>0) { if ($proses>0) { $pp = new Controller(); $harga_pro= ($rangkap * $bahan) + $proses; $satuan = round(($harga_pro/$q) * (13/10)); $satuan_lagi = $pp->rupiah($satuan); $total = round($satuan*$q); $total_lagi = $pp->rupiah($total); echo "Jumlah buku= ".$q."</br>"; echo "Kertas = ".$kertas."</br>"; echo "Panjang = ".$panjang." mm</br>"; echo "lebar = ".$lebar." mm</br>"; echo "Warna = ".$warna."</br>"; echo "Rangkap = ".$rangkap."</br>"; echo "Harga Satuan ".$satuan_lagi."</br>"; echo "<b >Harga total ".$total_lagi ."</b></br>"; echo "</br>"; } } } else { echo ""; } ?>
6. Kode Pemrograman Perhitungan Biaya Bahan Baku <? //session_start(); include "../koneksi/koneksi.php"; include "../class/controller.php"; if (isset($_POST['id_ukuran'])) { $tes=$_POST['id_ukuran']; $result=mysql_query("SELECT * FROM ukuran WHERE id_ukuran=$tes",
$connection) or die ("Pilih ukuran!"); $row = mysql_fetch_array ($result); $panjang=$row['panjang']; $lebar=$row['lebar']; }
97
else { $panjang = $_POST['panjang']; $lebar = $_POST['lebar']; } if (isset($_POST['kertas'])) { $tes_1=$_POST['kertas']; $result=mysql_query("SELECT * FROM kertas WHERE id_kertas=$tes_1", $connection)
or die ("Pilih Kertas!"); $rows = mysql_fetch_array ($result); $kertas=$rows['jenis']; $P=$rows['panjang_1']; $L=$rows['lebar_1']; $harga=$rows['harga_1']; $P1=$rows['panjang_2']; $L1=$rows['lebar_2']; $harga1=$rows['harga_2']; $P2=$rows['panjang_3']; $L2=$rows['lebar_3']; $harga2=$rows['harga_3']; } $quantity=$_POST['quantity']; if ($panjang >=$lebar) {$P_2=$panjang; $L_2=$lebar;} else {$P_2=$lebar; $L_2=$panjang;} if ($panjang != NULL && $lebar != NULL) { $profit_1 = floor($P/$L_2); $profit_2 = floor($P/$P_2); $profit_3 = floor($P1/$L_2); $profit_4 = floor($P1/$P_2); $profit_5 = floor($P2/$L_2); $profit_6 = floor($P2/$P_2); } if (isset($_POST['quantity'])) { if ($quantity <0) { echo ""; } else if ($quantity >0) { $c = new Controller(); $kesatu = $c->hitung_Knapsack($P_2,$L_2,$profit_1,$profit_2,$L,$P); $b = new Controller(); $kedua = $b->hitung_Knapsack($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $a = new Controller(); $ketiga = $a->hitung_Knapsack($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); if($ketiga>0) { $hitung = (floor($quantity/$kesatu)) * $harga; $hitung_1= (floor($quantity/$kedua)) * $harga1; $hitung_2= (floor($quantity/$ketiga)) * $harga2; if ($hitung<=$hitung_1 && $hitung<=$hitung_2) { $d = new Controller(); $d>hitung_Knapsack_2($P_2,$L_2,$profit_1,$profit_2,$L,$P); $panjang_bahan=$P; $lebar_bahan=$L; $bahan = $hitung; $beli= ceil($quantity/$kesatu); } else if($hitung_1<=$hitung && $hitung_1<=$hitung_2)
98
{ $d = new Controller(); $d>hitung_Knapsack_2($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $panjang_bahan=$P1; $lebar_bahan=$L1; $bahan = $hitung_1; $beli= ceil($quantity/$kedua); } else { $d = new Controller(); $d->hitung_Knapsack_2($P_2,$L_2,$profit_5,$profit_6,$L2,$P2); $panjang_bahan=$P2; $lebar_bahan=$L2; $bahan=$hitung_2; $beli= ceil($quantity/$ketiga); } } else if($kedua>0) { $hitung = (floor($quantity/$kesatu)) * $harga; $hitung_1= (floor($quantity/$kedua)) * $harga1; if($hitung<=$hitung_1) { $d = new Controller(); $d->hitung_Knapsack_2($P_2,$L_2,$profit_1,$profit_2,$L,$P); $panjang_bahan=$P; $lebar_bahan=$L; $bahan = $hitung; $beli= ceil($quantity/$kesatu); } else { $d = new Controller(); $d->hitung_Knapsack_2($P_2,$L_2,$profit_3,$profit_4,$L1,$P1); $panjang_bahan=$P1; $lebar_bahan=$L1; $bahan=$hitung_1; $beli= ceil($quantity/$kedua); } } else if($kesatu>0) { $hitung = (floor($quantity/$kesatu)) * $harga; $d = new Controller(); $d->hitung_Knapsack_2($P_2,$L_2,$profit_1,$profit_2,$L,$P); $panjang_bahan=$P; $lebar_bahan=$L; $bahan=$hitung; $beli= ceil($quantity/$kesatu); } if ($ketiga>0 || $kedua>0 || $kesatu>0) { $hh = new Controller(); echo "</br>"; echo "Jumlah Kertas= ".$quantity."</br>"; echo "Kertas = ".$kertas."</br>"; echo "Panjang = ".$panjang_bahan." mm</br>"; echo "Lebar = ".$lebar_bahan." mm</br>"; echo "Beli = ".$beli." lbr</br>"; echo "<B>Harga= ".$hh->rupiah($bahan)."</B>"; echo "</br>"; } } } else { echo ""; } ?>
99
7. Kode Pemrograman Input Data Kertas <?php $jenis = $_POST['jenis']; $panjang_1 = $_POST['panjang_1']; $lebar_1 = $_POST['lebar_1']; $harga_1 = $_POST['harga_1']; $panjang_2 = $_POST['panjang_2']; $lebar_2 = $_POST['lebar_2']; $harga_2 = $_POST['harga_2']; $panjang_3 = $_POST['panjang_3']; $lebar_3 = $_POST['lebar_3']; $harga_3 = $_POST['harga_3']; $a = new Model(); Echo $l=$a>insert_Paper($jenis,$panjang_1,$lebar_1,$harga_1,$panjang_2,$lebar_2,$harga_2,$panjang_3,$lebar_3,$harga_3); ?>
8. Kode Pemrograman Update Data Kertas <? session_start();
include "session.php"; include "session.php"; include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $id_kertas = $_POST['id_kertas']; $jenis = $_POST['jenis'];
$panjang_1 = $_POST['panjang_1']; $lebar_1 = $_POST['lebar_1']; $harga_1 = $_POST['harga_1']; $panjang_2 = $_POST['panjang_2']; $lebar_2 = $_POST['lebar_2']; $harga_2 = $_POST['harga_2']; $panjang_3 = $_POST['panjang_3']; $lebar_3 = $_POST['lebar_3']; $harga_3 = $_POST['harga_3'];
$sql="UPDATE kertas SET jenis='$jenis', panjang_1='$panjang_1', lebar_1='$lebar_1',harga_1='$harga_1',panjang_2='$panjang_2', lebar_2='$lebar_2',harga_2='$harga_2',
panjang_3='$panjang_3', lebar_3='$lebar_3',harga_3='$harga_3' WHERE id_kertas='$id_kertas'"; echo "<div style='margin:70 0 0 50';>Berhasil Update"; include "update_and_delete.php"; include "footer.php"; ?>
9. Kode Pemrograman Delete Data Kertas <?php session_start(); include "session.php"; include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $sql=" DELETE FROM ukuran WHERE id_ukuran='$_GET[id_ukuran]'"; echo "<div style='margin:70 0 0 50';>Berhasil Delete Dengan Id_ukuran:$_GET[id_ukuran]"; include "info_ukuran.php"; ?>
10. Kode Pemrograman Input Data Proses <?php $proses = $_POST['proses'];$h1 = $_POST['gestener']; $h2 = $_POST['GTO_46']; $h3 = $_POST['GTO_52'];$h4 = $_POST['GTO_66']; $h5 = $_POST['GTO_72']; $harga = new Model(); echo $tes = $harga->insert_Proses($proses,$h1,$h2,$h3,$h4,$h5); ?>
100
11. Kode Pemrograman Update Data Proses <? session_start(); include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $id_proses = $_POST['id_proses']; $jenis = $_POST['jenis'];
$gestener = $_POST['gestener']; $GTO_46 = $_POST['GTO_46']; $GTO_52 = $_POST['GTO_52'];
$GTO_66 = $_POST['GTO_66']; $GTO_72 = $_POST['GTO_72']; $sql="UPDATE proses SET jenis_proses='$jenis', gestener='$gestener', GTO_46='$GTO_46',GTO_52='$GTO_52', GTO_66='$GTO_66',GTO_72='$GTO_72'
WHERE id_proses='$id_proses'"; echo "<div style='margin:70 0 0 50';>Berhasil Update"; include "info_proses.php"; include "footer.php"; ?>
12. Kode Pemrograman Delete Data Proses <?php session_start(); include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $sql=" DELETE FROM proses WHERE id_proses='$_GET[id_proses]'";
echo "<div style='margin:70 0 0 50';>Berhasil Delete Dengan Id_proses:$_GET[id_proses]";
include "info_proses.php"; ?>
13. Kode Pemrograman Input Data Finishing <?php
$finishing = $_POST['finishing'];$harga = $_POST['harga']; $harga_minimal = $_POST['harga_minimal']; $a = new Model();
echo $l = $a->insert_Finishing( $finishing,$harga,$harga_minimal); ?>
14. Kode Pemrograman Update Data Finishing <? session_start(); include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $id_finishing = $_POST['id_finishing'];
$finishing = $_POST['finishing']; $harga = $_POST['harga']; $harga_minimal = $_POST['harga_minimal'];
$sql="UPDATE finishing SET jenis_finishing='$finishing', harga='$harga', harga_minimal='$harga_minimal'WHERE id_finishing='$id_finishing'";
echo "<div style='margin:70 0 0 50';>Berhasil Update"; include "info_finishing.php"; include "footer.php"; ?>
101
15. Kode Pemrograman Delete Data Finishing <?php session_start(); include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php";
$sql=" DELETE FROM finishing WHERE id_finishing='$_GET[id_finishing]'"; echo "<div style='margin:70 0 0 50';>Berhasil Delete Dengan Id_finishing:$_GET[id_finishing]";
include "info_finishing.php"; ?>
16. Kode Pemrograman Input Data Ukuran <?php $nama = $_POST['ukuran'];$panjang = $_POST['panjang']; $lebar = $_POST['lebar']; $a = new Model(); echo $l = $a->insert_Ukuran($nama,$panjang,$lebar); ?>
17. Kode Pemrograman Update Data Ukuran <? session_start(); include "session.php"; include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php"; $id_ukuran = $_POST['id_ukuran']; $ukuran = $_POST['ukuran']; $panjang = $_POST['panjang']; $lebar = $_POST['lebar'];
$sql="UPDATE ukuran SET nama_ukuran='$ukuran', panjang='$panjang', lebar='$lebar' WHERE id_ukuran='$id_ukuran'";
echo "<div style='margin:70 0 0 50';>Berhasil Update"; include "info_ukuran.php"; include "footer.php"; ?>
18. Kode Pemrograman Delete Data Ukuran <?php session_start(); include "session.php"; include "header.php"; include "../koneksi/koneksi.php"; include "../class/model.php";
$sql=" DELETE FROM ukuran WHERE id_ukuran='$_GET[id_ukuran]'"; echo "<div style='margin:70 0 0 50';>Berhasil Delete Dengan Id_ukuran:$_GET[id_ukuran]";
include "info_ukuran.php"; ?>
19. Kode Pemrograman Update Data Password Administrator <?php $passwordlama = $_POST['oldPass']; $passwordbaru1 = $_POST['newPass1']; $passwordbaru2 = $_POST['newPass2']; $atas = new Model(); $atas->update_Password($passwordlama,$passwordbaru1,$passwordbaru2); ?>
102
20. Kode Pemrograman Fungsi Model <? //session_start(); include "../koneksi/koneksi.php"; class Model{ function update_Password($password,$password_baru,$confirm) { include "../koneksi/koneksi.php"; $query = "SELECT password FROM admin WHERE password = '$_SESSION[password]'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); if (isset($_POST['submit'])) { if ($data['password'] == md5($confirm)) { if ($password_baru == $confirm) { $passwordbaruenkrip = md5($password_baru);
$query = "UPDATE admin SET password = '$passwordbaruenkrip' WHERE password = '$_SESSION[password]'";
$hasil = mysql_query($query); if ($hasil) echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Update Password Admin Sukses</div>";
} else echo "<div style='width:300px; float:left; margin:10 0 10 320;'> Password Baru Anda Tidak Sama !</div>"; }else echo "<div style='width:300px; float:left; margin:10 0 10 320;' > Anda Salah Memasukkan Password Lama !</div>";
} } Functioninsert_Paper($jenis,$panjang_1,$lebar_1,$harga_1,$panjang_2,$lebar_2,$harga_2,$panjang_3,$lebar_3,$harga_3) { include "../koneksi/koneksi.php"; if (isset($_POST['submit'])) { if(empty($jenis) ||empty($panjang_1) || empty($lebar_1) || empty($harga_1) ) {
echo "<div style='width:300px; float:left; margin:10 0 10 320;' >Maaf minimal isi 1 checkbox !</div><br>";
} else {
$sql="INSERT INTO kertas VALUES ('','$jenis','$panjang_1','$lebar_1','$harga_1','$panjang_2','$lebar_2','$harga_2', '$panjang_3','$lebar_3','$harga_3')";
$sql_view=mysql_query("SELECT jenis FROM kertas"); $cek = mysql_fetch_array ($sql_view); $finish=$cek['jenis']; if ($finish == $jenis){
echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Input Gagal, Jenis sudah ada
</div>"; }else if (mysql_query($sql,$connection) ) { echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Berhasil Input </div>"; } } } } function insert_Ukuran($nama,$panjang,$lebar) { include "../koneksi/koneksi.php"; if (isset($_POST['submit'])) { if(empty($nama) || empty($panjang) || empty($lebar) ) {
echo "<div style='width:300px; float:left; margin:10 0 10 320;' >Maaf harus diisi semua</div><br>";}
103
else {$sql="INSERT INTO ukuran VALUES('','$nama','$panjang','$lebar')"; sql_view=mysql_query("SELECT nama_ukuran FROM ukuran");
$cek = mysql_fetch_array ($sql_view); $finish=$cek['nama_ukuran']; if ($finish == $nama){ echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Input Gagal,
Jenis sudah ada</div>"; }else if (mysql_query($sql,$connection)) { echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Berhasil Input </div>"; } } } } function insert_Proses($proses,$h1,$h2,$h3,$h4,$h5) { include "../koneksi/koneksi.php"; if (isset($_POST['submit'])) { if(empty($proses)) {
echo "<div style='width:300px; float:left; margin:10 0 10 320;' >Maaf harus isi semua !</div><br>";
} else {
$sql="INSERT INTO proses VALUES('','$proses','$h1','$h2','$h3','$h4','$h5')"; $sql_view=mysql_query("SELECT jenis_proses FROM proses"); $cek = mysql_fetch_array ($sql_view); $finish=$cek['jenis_proses']; if ($finish == $proses){
echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Input Gagal, Proses sudah ada</div>";
}else if (mysql_query($sql,$connection)) { echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Berhasil Input </div>"; } } } } function insert_Finishing($finishing,$harga,$harga_minimal) { include "../koneksi/koneksi.php"; if (isset($_POST['submit'])) { if(empty($finishing) || empty($harga) || empty($harga_minimal) ) {
echo "<div style='width:300px; float:left; margin:10 0 10 320;' >Maaf harus isi semua !</div><br>";
} else { $sql="INSERT INTO finishing VALUES('','$finishing','$harga','$harga_minimal')"; $sql_view=mysql_query("SELECT jenis_finishing FROM finishing"); $cek = mysql_fetch_array ($sql_view); $finish=$cek['jenis_finishing']; if ($finish == $finishing){ echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Input Gagal,
Jenis sudah ada</div>"; }else if ( mysql_query($sql,$connection))
{ echo"<div style='width:300px; float:left; margin:10 0 10 320;' >Berhasil Input </div>"; } } } }
} ?>
104
21. Kode Pemrograman Fungsi Controller <? //session_start(); class Controller{ function hitung_Knapsack($p_1,$p_2,$v_1,$v_2,$width,$height) { $n = 2; $size = array ($p_1,$p_2); $value = array ($v_1, $v_2); $W = $width; for ($h=0; $h<$W; $h++) { $cost[0][$W]=0; } for ($q=0; $q<$n; $q++) { $cost[$n][0]=0; } for($i=0; $i<$n; $i++){ echo "<tr>"; for($w=1; $w<=$W; $w++)
{ if ($size[$i] <= $w) { if($cost[$i-1][$w]<$cost[$i][$w - $size[$i]] + $value[$i]) { cost[$i][$w] = $cost[$i][$w - $size[$i]] + $value[$i];
$objek[$w] = $i; } else { $cost[$i][$w] = $cost[$i-1][$w]; } } else {
$cost[$i][$w] = $cost[$i-1][$w]; } } } $aux = $W; while ($aux > 0) { $objek[$aux] + 1 ; $aux =$aux-$size[$objek[$aux]]; } return $c[$W]."</br>"; echo "</div>"; } function hitung_knapsack_2($p_12,$p_22,$v_12,$v_22,$width2,$height2) {
$n = 2; $size = array ($p_12,$p_22); $value = array ($v_12, $v_22); $W = $width; for ($h=0; $h<$W; $h++) { $cost[0][$W]=0; } for ($q=0; $q<$n; $q++) { $cost[$n][0]=0; }
105
for($i=0; $i<$n; $i++){ echo "<tr>"; for($w=1; $w<=$W; $w++)
{ if ($size[$i] <= $w) { if($cost[$i-1][$w]<$cost[$i][$w - $size[$i]] + $value[$i]) { cost[$i][$w] = $cost[$i][$w - $size[$i]] + $value[$i];
$objek[$w] = $i; } else { $cost[$i][$w] = $cost[$i-1][$w]; } } else {
$cost[$i][$w] = $cost[$i-1][$w]; } } }
$width2_lagi = ($height2/4) ; $height2_lagi = ($width2/4) ; $p_12_lagi = ($p_12/4)-1; $p_22_lagi = ($p_22/4)-1; $aux = $W; while ($aux > 0) { if(($objek[$aux]+1)==1)// jika objek 1 { for ($i=0; $i<$value[$objek[$aux]]; $i++) {
echo "<div style='width:$p_22_lagi; height:$p_12_lagi; float:left;background:#99d6ad; border-right:1px solid #ffffff; border-bottom:1px solid #ffffff'></div>";
} } else { for ($i=0; $i<$vlue[$objek[$aux]]; $i++) { echo "<div style='width:$p_12_lagi; height:$p_22_lagi; float:left; background:#99d6ad; border-right:1px solid #ffffff; border-bottom:1px solid
#ffffff'></div>"; } } $aux =$aux-$size[$objek[$aux]]; } echo "</div>"; echo "<div style='width:200; height=100;'>"; return $c[$W]."</br>"; echo "</div>"; } function rupiah($angka) { $rupiah=""; $rp=strlen($angka); while ($rp>3) { $rupiah = ".". substr($angka,-3). $rupiah; $s=strlen($angka) - 3; $angka=substr($angka,0,$s); $rp=strlen($angka); } $rupiah = "Rp." . $angka . $rupiah; return $rupiah; } }?>
Recommended