IMPLEMENTASI ALGORITMA DYNAMIC...

125
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

Transcript of IMPLEMENTASI ALGORITMA DYNAMIC...

Page 1: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 2: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 3: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 4: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 5: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 6: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 7: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 8: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 9: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 10: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 11: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 12: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 13: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 14: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 15: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 16: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 17: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 18: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 19: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 20: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 21: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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-

Page 22: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 23: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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:

Page 24: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 25: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 26: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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).

Page 27: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 28: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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 :

Page 29: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 30: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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 :

Page 31: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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).

Page 32: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 33: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 34: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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)

Page 35: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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)

Page 36: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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).

Page 37: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 38: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 39: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 40: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 41: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 42: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 43: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 44: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 45: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 46: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 47: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 48: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 49: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 50: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 51: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 52: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 53: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 54: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 55: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 56: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 57: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 58: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 59: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 60: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 61: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 62: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 63: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 64: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 65: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 66: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 67: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 68: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 69: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 70: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 71: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 72: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 73: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 74: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 75: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 76: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 77: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 78: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 79: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 80: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 81: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 82: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 83: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 84: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 85: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 86: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 87: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 88: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 89: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 90: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 91: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 92: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 93: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 94: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 95: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 96: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 97: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 98: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 99: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 100: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 101: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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.

Page 102: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 103: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 104: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 105: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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]

Page 106: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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'];

Page 107: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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)

Page 108: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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']; }

Page 109: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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!");

Page 110: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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

Page 111: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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 ""; } ?>

Page 112: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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'];

Page 113: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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;

Page 114: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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'];

Page 115: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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)

Page 116: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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']; }

Page 117: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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)

Page 118: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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 ""; } ?>

Page 119: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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); ?>

Page 120: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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"; ?>

Page 121: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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); ?>

Page 122: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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>";}

Page 123: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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>"; } } } }

} ?>

Page 124: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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; }

Page 125: IMPLEMENTASI ALGORITMA DYNAMIC PROGRAMMINGrepository.uinjkt.ac.id/dspace/bitstream/123456789/21149/1/ARIEF... · menggunakan PHP sebagai bahasa pemrograman untuk membuat aplikasi

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; } }?>