Implementasi algoritma 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
(2)
(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
(3)
(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
(4)
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
(5)
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.
(6)
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.
(7)
vi
Penulis selalu menerima saran dan kritik dari pembaca. Semoga tulisan ini bermanfaat bagi kita semua. AMIN.
Jakarta, Mei 2010
(8)
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
(9)
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
(10)
ix
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
(11)
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
(12)
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
(13)
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
(14)
xiii
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
(15)
BAB I
PENDAHULUAN
1.1. LATAR BELAKANGKepuasan 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
(16)
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.
(17)
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.
(18)
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
(19)
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.
(20)
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.
(21)
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
(22)
simbol-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.
(23)
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:
(24)
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
(25)
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
(26)
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).
(27)
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
(28)
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 :
(29)
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
(30)
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 :
(31)
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
(32)
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
(33)
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
(34)
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)
(35)
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)
(36)
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).
(37)
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.
(38)
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.
(39)
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
(40)
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
(41)
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.
(42)
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
(43)
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
(44)
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.
(45)
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.
(46)
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:
(47)
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
(48)
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.
(49)
35
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.
(50)
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.
(51)
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
(52)
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 accountadministrator, 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
(53)
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
(54)
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
(55)
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.Flowchartinput data kertas
Data kertas input = kertas dbase
Y
N Data kertas input
Selesai
Simpan data kertas
(56)
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.Flowchartupdate 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.
(57)
Mulai
Pilih data kertas
Tampilkan data kertas
Data kertas pilihan
Deletedata kertas
Selesai
Gambar 4.4.Flowchartdelete 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
(58)
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.
(59)
Mulai
Pilih jenis proses
Tampilkan jenis proses
jenis proses pilihan
Delete data proses
Selesai
Gambar 4.7.Flowchartdelete 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.Flowchartinput data finishing
Jenis finishing
Selesai
Y
N
Simpan jenis finishing
(60)
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.Flowchartupdate 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.
(61)
Mulai
Pilih jenis finishing
Tampilkan jenis finishing
jenis finishing pilihan
Delete data finishing
Selesai
Gambar 4.10.Flowchartdelete 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
uk
put=jenis ukuran dbase
Jenis ukuraninput
Y
N
Selesai
Simpan jenis ukuran
Gambar 4.11.Flowchartinput data ukuran kertas 47
(62)
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.Flowchartupdate 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.
(63)
Mulai
Pilih ukuran kertas
Tampilkan ukuran kertas
Ukuran kertas pilihan
Deleteukuran kertas
Selesai
Gambar 4.13.Flowchartdelete 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
(64)
14.Flowchartupdate password administrator
Mulai
inputpassword
lama dan
passwordbaru 1
md5.password lama
Password lama enkrip
input
Passwordlama
enkrip dbase
N
Passwordlama enkrip
input = passwordlama enkrip dbase
Gambar 4.15.Flowchartupdate password administrator Password baru 1
= password baru
md5.password baru
Password baru enkrip
Y
N
Y
UpdatePassword
Selesai
(65)
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
(66)
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
(67)
3. Perancangan tampilan input data kertas.
Berikut merupakan tampilan untuk memasukkan data kertas setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form update data kertas
Gambar 4.20. Rancangan tampilan update data kertas 53
(68)
5. Perancangan tampilan delete data kertas.
Berikut merupakan tampilan untuk menghapus data kertas setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form input data proses
Gambar 4.22. Rancangan tampilan input data proses
(69)
7. Perancangan tampilan update data proses.
Berikut merupakan tampilan untuk merubah data proses setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form delete data proses
Gambar 4.24. Rancangan tampilan delete data proses
(70)
9. Perancangan tampilan input data finishing
Berikut merupakan tampilan untuk memasukkan data finishing setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form update finishing
Gambar 4.26. Rancangan tampilan update data finsihing
(71)
11.Perancangan tampilan delete data finishing
Berikut merupakan tampilan untuk menghapus data finishing setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form input data ukuran
Gambar 4.28. Rancangan tampilan input data ukuran
(72)
13.Perancangan tampilan update data ukuran kertas.
Berikut merupakan tampilan untuk merubah data ukuran kertas setelah login dengan accountadministrator.
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 accountadministrator.
Header
Menu aplikasi
Form delete data ukuran
Gambar 4.30. Rancangan tampilan delete data ukuran
(73)
15.Perancangan tampilan update password administrator
Berikut merupakan tampilan untuk merubah data password administrator setelah login dengan accountadministrator.
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
(74)
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
(75)
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
(76)
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
(77)
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
(78)
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
(79)
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
(80)
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.
(81)
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
(82)
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.
(83)
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
(84)
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.
(1)
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"; ?>
(2)
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);
(3)
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>";}
(4)
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>";
} }
} }
}
(5)
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; }
(6)
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; 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;
} }?>