APLIKASI BANTU UNTUK PERBAIKAN HASIL PROSES PLATING DI LINE NICKEL CHROME PLATING
TugasAkhir Ini Diajukan Untuk Memenuhi Persyaratan Kurikulum Strata Satu (S-1) Program Studi Teknik Informatika Fakultas Teknologi Industri Universitas Mercubuana
Disusun Oleh : NAMA
: ELISA BHARKA
NIM
: 0150311-033
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS MERCU BUANA JAKARTA 2007
LEMBAR PENGESAHAN TUGAS AKHIR
Nama
:
Elisa Bharka
N.I.M
:
0150311-033
Program Studi
:
S1 Teknik Informatika
Judul Skripsi
:
Aplikasi Bantu untuk Perbaikan Hasil Proses Plating di Line Nickel Chrome Plating.
Disetujui oleh
Tanggal : Dosen Pembimbing
(Drs. Achmad Kodar,MT)
Ketua Program Studi Teknik Informatika
(Abdusy Syarif, ST.MT)
ABSTRAK
Untuk membantu menangani kerusakan pada suatu proses produksi khususnya di Line Nickel Chrome Plating. Sangat dibutuhkan suatu aplikasi bantu yang bertujuan membantu operator dalam menangani kerusakan atau pun permasalahan yang ada walaupun tidak ada seorang pakar. Dalam tugas akhir ini penulis menyajikan Aplikasi Bantu untuk perbaikan Hasil Proses Plating yaitu suatu sitem yang digunakan untuk membantu operator dalam menangani kerusakan yang terjadi pada hasil proses plating nickel chrome. Informasi yang jelas dan langkah –langkah apa yang harus dilakukan oleh operator adalah sasaran akhir penulis dari pembuatan tugas ahir ini Dengan demikian solusi dari analisa yang ada data segera dilakukan dan akhirnya hasil akhir dari proses plating ini pun dapat berjalan dengan baik terutama dengan meminimalisasikan kerusakan-kerusakan yang ada. Dan rancangan program penulis menggunakan bahasa pemrograman Borland Delphi.
Kata kunci : Aplikasi Bantu, Perbaikan hasil proses Nickel Chrome Plating.
DAFTAR ISI ABSTRAK KATA PENGANTAR…………………………………………………………………i DAFTAR ISI………………………………………………………………………....iii DAFTAR GAMBAR ……………………………………………………………….vii DAFTAR TABEL……………………………………………………………………ix BAB I
PENDAHULUAN 1.1
Latar Belakang……..……………………………………….…………1
1.2
Identifikasi Permasalahan………..……………………………………1
1.3
Batasan masalah..……………………………..……………………….2
1.4
Tujuan penelitian……………………………………………………...2
1.5
Metode Penelitian……………………………………………………..2
1.6
Sistematika Penulisan…………………………………………………3
BAB II LANDASAN TEORI 2.1
Pengertian Sistem Pakar……………………………………………....5 2.1.1 Ciri Sistem Pakar……….……………….………………………7 2.1.2 Keuntungan Sistem Pakar…………………...……………….….7 2.1.3 Kemampuan Tambahan Sistem Pakar……………………….….8 2.1.4 Komponen-komponen Sistem pakar…………………………….9 2.1.5 Pengertian Kecerdasan Buatan………………………….……..10 2.1.6 Aplikasi Kecerdasan Buatan………………………………...…12 2.1.7 Fasilitas Akuisisi Pengetahuan………………………………...15
iii
2.1.8 Basis Pengetahuan dan Basis Aturan……...……………….…..15 2.1.9 Basis Data……………………………………………………...16 2.1.10 Mekanisme Inferensi…………………………………………16 2.1.11Antarmuka pemakai…...………………………………………19 2.1.12 Tahapan Dalam Pengembangan Sistem Pakar.……………....20 2.2 Delphi………………...……………………………...……………...…21 2.2.1 Pernyataan Dasar………………………………………………23 2.2.1.1 Pernyataan If dan If…Else…………………………………...23 2.2.1.2 Ppernyataan Case Of…………………………………………24 2.2.1.3 Pernyataan For……………………………………………….25 2.2.1.4 Pernyataan While Do………………………………………...26 2.2.2 Pengakesan Database…………………………………………..27 2.2.2.1 Borland Database Enging (Bde)……………………………..27 2.2.2.2 Komponen Bde………………………………………………28 2.3 Database……………………………………………………………….30 2.3.1 Pengertian Database………………………………………...….30 2.3.2 Struktur Database………………………………………….…...31 2.3.3 Operasi Database………………………………………………33 2.3.4 Manajemen Database………………………………………………...34 2.4 Perancangan Sistem……………………………………………………34 2.4.1 Data Flow Diagram (Dfd)……………………………..………34 2.4.2 Entity Relationship Diagram……………………………….….36
iv
2.4.2.1 Komponen Entity Relationship Diagram (Erd)………..36 2.4.2.2 Kardinalitas Dalam Relationship.…………..………….38 2.4.2.3 Derajat (Tingkat) Relationship.………………………..39 BAB III ANALISA DAN PERANCANGAN 3.1 Akuisisi Pengetahuan………………….……………………………….41 3.2 Analisa Penelusuran………………….……….…..……………………42 3.3 Data Flow Diagram……………………..……………………….……..42 3.4 Entity Relationship Diagram…………...……………………….……..43 3.5 Nickel Chrome Plating…………………………………………..…….44 3.6 Basis Pengetahuan dan Basis Aturan………………………………….60 3.7 Mekanisme Inferensi…………………………………………………..64 3.8 Antarmuka Pemakai……………………………………………………65 3.9 Fasilitas Penjelas Sistem……………………………………………….69 BAB IV IMPLEMENTASI 4.1 Login……..…………………….………………………………………71 4.2 Account…………………………………………………..………….…74 4.3 Sistem Penjelas…………………………………………..………….…76 4.4 Database………………………………………………………………..78 4.5 Basis Aturan……………………………………………………………82 4.6 Penelusuran...………………………………………………………..…83 4.7 Pengujian………………………………………………………...…….85
v
BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan…..……………………….………………………………..87 5.2 Saran.. ….……………………………………………………………...87 DAFTAR PUSTAKA LAMPIRAN
vi
DAFTAR TABEL
2.1 Komponen-komponen yang ada pada tab BDE……………………………..…..29 2.2 Contoh Struktur Database……………………………………………………….31 3.1 Entitas aplikasi perbaikan hasil proses plating…………………………………..43 3.2 Tabel Solusi.……………………………………………………………………..64 3.3 Tabel Kerusakan…………….………………………………………………..….64 3.4 Tabel Analisa……………….…………………………………………………....64 4.1 Struktur Utama Database….……………………………………………………..79 4.2 Tabel Pengujian………………………………………………………………….85
ix
DAFTAR GAMBAR
2.1 Komponen-komponen Sistem Pakar…………………..……………………………10 2.2 Diagram Aplikasi Artificial Intellegence…………………………………………...13 2.3 Teknik pelacakan ke depan………………………………………………………....17 2.4 Teknik pelacakan ke belakang...…………………………………………………....17 2.5 Teknik Penelusuran depth-first search……………...……………………………....18 2.6 Teknik Penelusuran breadth-first search…………...……………………………....18 2.7 Teknik Penelusuran best-first search..……………...……………………………....19 2.8 Flowchart pernyataan If…………………………………………………………….23 2.9 Flowchart pernyataan If…else..…………………………………………………….24 2.10 Flowchart pernyataan Case Of..…………………………………………………….25 2.11 Flowchart pernyataan For….....…………………………………………………….26 2.12 Flowchart pernyataan while do.…………………………………………………….27 2.13 Arsiteltur BDE pada Delphi………………………………………………………...28 2.14 Simbol Entitas………………………………………………………………………37 2.15 Simbol Relationship………………………………………………………………...37 2.16 Simbol Atribut……………………………………………………………………...38 2.17 Relasi 1 : 1………………………………………………………………………….38 2.18 Relasi 1 : M..………………………………………………………………………..39 2.19 Relasi M : N….……………………………………………………………………..39 2.20 Unary Degree……………………………………………………………………….40 2.21 Binary Degree………………………………………………………………………40
vii
2.22 Ternary Degree……………………………………………………………………..40 3.1 DFD Level 0 ……………………….………………………………………………..43 3.2 ERD Diagram …………….…………………………………………………………44 3.3 Diagram Line Nickel Chrome Plating……………………………………………….44 3.4 Diagram Blok Akuisisi data….……………………………………………………...62 3.5 Flowchart akuisisi data…..………………………………………………………….63 3.6 Flowchart Mekanisme Inferensi………………………………………………….….65 3.7 Design Form Login….……………………………………………………………….66 3.8 Design Form Penelusuran…...……………………………………………………….67 3.9 Design Form Pakar/database…..…………………………………………………….68 3.10 Design Form Sistem penjelas……………………………………………………….70 4.1 Tampilan utama/login………………………………………………………………..72 4.2 Tampilan form account.……………………………………………………………...74 4.3 Tampilan sistem penjelas…...………………………………………………………..77 4.4 Tampilan pakar/database...…………………………………………………………..79 4.5 Tampilan basis aturan………………………………………………………………..82 4.6 Tampilan form operator/penelurusuran…………………………………………...…84
viii
BAB I PENDAHULUAN
1.1
Latar Belakang Untuk kelancaran dalam proses Plating di Line Nickel Chrome Plating
diperlukan suatu langkah-langkah yang baik khususnya di dalam penanganan masalah (trouble Shooting) yang ada di Plating khususnya hasil proses yang tidak bagus (reject) misalnya buram, kuning, doph, flek, white wash, kasar atau bintik dan sebagainya. Untuk memperbaiki hasil proses yang problem itu diperlukan suatu solusisolusi agar dapat memudahkan teknisi atau plater (ahli plating) untuk memperbaiki trouble shooting itu. Langkah utama yang bisa dilakukan adalah mendidik orang-orang baru untuk dijadikan teknisi atau plater tetapi biaya yang yang harus dikeluarkan perusahaan sangatlah mahal dan jika harus mempelajari dari buku manual akan membutuhkan waktu yang lama disamping pengaruh daya ingat yang berbeda-beda. Sehingga diharapkan ada suatu program bantu yang dapat menerima beberapa input untuk pembelajaran, kemudian program tersebut dapat menganalisa dan memberikan alternatif solusi dari setiap permasalahan yang terjadi.
1.2
Identifikasi Permasalahan Permasalahan yang timbul dalam perbaikan hasil proses Plating yaitu : 1
2
1. Kurangnya tenaga ahli, karena tingkat kemampuan yang kurang merata. 2. Minimnya pemahaman dalam hal perbaikan hasil proses plating.
1.3
Batasan Masalah Dalam hal proses plating ada beberapa Line yaitu Nickel Chrome Plating,
Acid Zinc Plating, Alkali Zinc Plating. Karena permasalahan pada bidang perbaikan hasil proses plating ini sangat luas, maka pada penelitian ini hanya akan membahas perbaikan hasil proses di Line Nickel Chrome Plating. Pengujian dilakukan pada Line Nickel Chrome Plating.
1.4
Tujuan Penelitian •
Membuat program bantu yang dapat digunakan untuk pembelajaran bagi teknisi atau plater baru.
•
Membuat suatu program bantu yang dapat mempercepat dalam menyelesaikan perbaikan hasil proses Nickel Chrome Plating.
1.5
Metode Penelitian Dalam melakukan penelitian untuk memperoleh data-data dan informasi
yang diperlukan dalam analisa sistem pakar ini, ada beberapa metode pendekatan penelitian yang penulis lakukan, metode – metode tersebut diantaranya adalah :
3
•
Kepusatakaan Dalam metode pendekatan ini penulis mengambil data secara teoritis,
yaitu dengan cara membaca dan mempelajari buku-buku yang berhubungan dengan judul skripsi yang penulis susun serta literatur sumber tertulis lainnya yang bisa mendukung untuk terselesaikannya penyusunan skripsi ini. •
Lapangan Dengan metode ini penulis melakukan pengumpulan data dengan cara
melakukan wawancara dengan beberapa orang
yang terkait langsung
dengan sistem. Selain dengan cara wawancara penulis juga melakukan observasi langsung kelapangan tempat kegiatan-kegiatan berlangsung. •
Metoda Water Fall Metode ini sangat diperlukan terutama untuk mengembangkan suatu
sistem karena dimulai dari analisis, design, coding, testing dan pemeliharaan.
1.6 Sistematika Penulisan Bab I
Pendahuluan Bab ini menjelaskan tentang hal-hal yang berhubungan dengan pelaksanaan tugas akhir yang berisi uraian mengenai Latar Belakang masalah, Identifikasi Masalah, Batasan Masalah, Tujuan Masalah, Metode Penelitian serta Sistematika Penulisan.
4
Bab II
Landasan Teori Bab ini berisi tentang teori-teori yang menunjang dalam pembuatan Tugas Akhir.
Bab III
Analisa dan Perancangan Pada bab ini membahas tentang permasalahan dan perancangan program aplikasi.
Bab IV
Implementasi dan Pengujian Bab ini menjelaskan tentang implementasi dari sebuah program yang telah dibuat dan sebagai gambaran bagaimana cara mengoperasikannya.
Bab V
Kesimpulan dan Saran Bab ini berisi kesimpulan dari pembahasan, serta saransaran.
5
BAB II LANDASAN TEORI
2.1
Pengertian Sistem Pakar Pengertian sistem pakar adalah sebuah perangkat lunak komputer yang
memiliki basis pengetahuan untuk domain tertentu dan menggunakan penalaran infrensi menyerupai seorang pakar dalam memecahkan masalah. Sistem pakar merupakan hasil dari kecerdasan tiruan yang memiliki beberapa definisi sebagai berikut : a. Menurut
Turban
dan
Efraim
adalah
sebuah
program
yang
mengkomputerisasikan laporan yang mencoba untuk menirukan proses pemikiran dan pengetahuan dari pakar-pakar dalam memecahkan tipe tertentu dari suatu masalah. b. Menurut Hart dan Anna sebuah nama yang diberikan ke sebuah apliksai praktis dari kecerdasan tiruan. Dalam pengembangannya saat ini sistem pakar telah banyak digunakan diberbagai bidang aplikasi yang pada dasarnya dibangun untuk : 1. Penyebaran ke pakar yang jarang dan mahal. 2. Integrasi sumber-sumber pengetahuan yang terbesar (kepakaran dari beberapa pakar yang digabungkan kedalam satu basis pengetahuan sehingga dapat dipelajari konsistensi ke andalan penalarannya).
5
6
Beberapa hal penting yang dimiliki sistem pakar antara lain : 1. Membatasi domain tertentu 2. Memiliki kemampuan mengolah data yang tidak pasti dengan menggunakan probabilitas 3. Memiliki kemampuan memberikan penalaran 4. Dirancang untuk dikembangkan secara bertahap 5. Pemisahan mekanisme infrensi terhadap basis pengetahuan 6. Keluaran bersifat memberikan anjuran (advis) 7. Basis pengetahuan pada umumnya berdasarkan pada kaidah (rule base). Kemampuan sistem pakar didalamnya terdapat basis pengetahuan non formal yang sebagian besar berasal dari pengalaman, bukan dari “teks book” dan pengetahuan ini diperoleh seorang pakar dari pengalamannya bekerja bertahun-tahun pada bidang tertentu. Artificial Intellegence merupakan sub-bidang pengetahuan komputer yang khusus ditujukan untuk membuat software dan hardware yang sepenuhnya bisa menirukan beberapa fungsi otak manusia. Dengan demikian diharapkan komputer bisa membantu manusia di dalam memecahkan berbagai masalah yang lebih rumit. Dari sini kita dapat menyimpulkan bahwa sistem pakar merupakan suatu aplikasi dari kecerdasan tiruan yang dapat menyelesaikan masalah-masalah tertentu dengan bertindak sebagai pakar dimana solusi-solusi yang dihasilkan memiliki kualitas pakar.
7
2.1.1
Ciri-ciri Sistem Pakar Sebuah perangkat lunak dapat dimasukkan kedalam kategori sistem pakar
jika mempunyai ciri-ciri sebagai berikut : a. Terbatas pada domain keahlian tertentu. b. Dapat memberikan penalaran untuk data yang tidak pasti. c. Dapat mengemukakan rangkaian alasan-alasan yang diberikannya dengan cara yang dapat dipahami. d. Berdasarkan pada ketentuan/kaidah tertentu. e. Dirancang guna dapat dikembangkan secara bertahap nantinya. f. Keluaran/solusinya bersifat memberi anjuran atau keterangan. g. Sistem dapat mengaktifkan kaidah secara searah yang dituntun oleh dialog dengan pemakai.
2.1.2
Keuntungan Sistem Pakar Beberapa keuntungan dan kelebihan dari penggunaan sistem pakar adalah
sebagai beikut : a. Membuat seorang yang awam dapat bekerja seolah-olah seperti seorang pakar. b. Meningkatkan
produktivitas
akibat
meningkatnya
pekerjaan, disebabkan meningkatnya efisiensi kerja. c. Dapat menghemat waktu kerja. d. Menyederhanakan pekerjaan.
kualitas
hasil
8
e. Merupakan arsip yang terpercaya dari sebuah keahlian, sehingga bagi setiap pemakai sistem pakar akan seolah-olah berkonsultasi langsung dengan pakarnya, walaupun sang pakar sudah tidak ada. f. Memperluas jangkauan suatu keahlian dari seorang pakar atau beberapa cabang pakar. Sebuah sistem pakar yang telah disahkan akan sama saja artinya dengan seorang pakar yang tersedia dalam jumlah besar.
2.1.3
Kemampuan Tambahan Sistem Pakar Untuk dapat meningkatkan kemampuan program sistem pakar, diperlukan
komponen-komponen tambahan, yaitu : a. Fasilitas penjelas Sistem pakar harus mampu menjelaskan pemikiran yang dilakukan untuk mencapai kesimpulan atau keputusan. Penjelasan ini terdiri dari identifikasi,
langkah-langkah
proses
pemikiran
dan
pernyataan
kebenaran setiap langkah serta penjelasan operasi yang sedang dilaksanakan. b. Kemudahan memodifikasi Kemudahan memodifikasi merupakan suatu hal yang penting, karena dengan cepatnya perkembangan ilmu pengetahuan maka kemampuan sang pakar pun akan bertambah. Oleh karena itu salah satu komponen yang perlu dimiliki oleh sistem pakar adalah kemudahan untuk dimodifikasi, terutama dalam hal basis pengetahuan dari sistem pakar tersebut.
9
c. Kompatibilitas Kompatibilitas adalah kemampuan dari program sistem pakar untuk dijalankan pada suatu komputer. Biasanya program sistem pakar dibuat hanya untuk dijalankan pada suatu komputer dengan konfigurasi tertentu saja. Hal tersebut sangat menyulitkan bagi pemakai. Kemampuan suatu program sistem pakar yang dapat dijalankan pada berbagai jenis komputer merupakan suatu nilai lebih dari pada program sistem pakar yang hanya berjalan pada komputer jenis tertentu, sebab akan memperluas pemakai sistem pakar tersebut. d. Kemampuan belajar Yang dimaksud dengan kemampuan belajar disini adalah kemampuan suatu program sistem pakar untuk menambah sendiri pengetahuannya, selama berinteraksi dengan pemakai. Beberapa program sistem pakar saat ini telah memiliki kemampuan tersebut, kemampuan tersebut merupakan syarat utama bagi program sistem pakar dimasa depan.
2.1.4
Komponen-komponen Sistem Pakar Suatu sistem dapat disebut sebagai sistem pakar jika mempunyai ciri dan
karakteristik tertentu. Hal ini juga harus didukung oleh komponen-komponen sistem pakar yang mampu menggambarkan tentang ciri dan karakteristik tersebut. Komponen sistem pakar dapat digambarkan seperti pada gambar dibawah ini.
10
User Interface
Pakar User
Fasilitas Akuisisi Pengetahuan Basis Pengetahuan dan Basis Aturan
Mekanisme Inferensi
Fasilitas Penjelasan Sistem
Fasilitas Belajar Mandiri
Gambar 2.1. Komponen-komponen Sistem Pakar
Kelima komponen penting pada gambar tersebut adalah akuisisi pengetahuan, basis pengetahuan dan basis aturan, mekanisme inferensi, fasilitas penjelasan program dan antarmuka pemakai yang merupakan satu kesatuan yang tidak dapat dipisahkan. Sedangkan fasilitas belajar mandiri merupakan komponen yang mendukung sistem pakar sebagai suatu kecerdasan buatan tingkat lanjut. Dari gambar diatas dapat disimpulkan bahwa ada 3 unsur penting dalam pengembangan sistem pakar, yaitu pakar, pemakai dan sistem. Pakar adalah orang yang mempunyai pengalaman khusus terhadap suatu masalah. Dalam sistem, pengalaman tersebut disimpan sebagai basis pengetahuan dan basis aturan. Sedangkan pemakai adalah orang yang ingin berkonsultasi dengan pakar lewat sistem. Sedangkan sistem sendiri menyediakan berbagai fasilitas untuk menghubungkan pakar dan pemakai.
11
2.1.5
Pengertian Kecerdasan Buatan Intelligence atau Intelegensia artinya adalah seseorang yang pandai
melaksanakan pengetahuan yang dimilikinya. Inteligensia juga dapat diartikan sebagai kemampuan manusia untuk memperoleh pengetahuan dan pandai melaksanakannya dalam praktek. Hal ini berarti kemampuan berfikir dan menalar pada batas-batas tertentu artificial intelegensia memungkinkan komputer bisa menerima pengetahuan melalui input manusia dan menggunakan pengetahuannya itu melalui simulasi proses penalaran dan berfikir manusia untuk memecahkan berbagai masalah. Bagian utama aplikasi artificial intelligence adalah pengetahuan (knowledge), suatu pengertian tentang beberapa wilayah subjek yang diperoleh melalui pendidikan dan pengalaman. Walaupun komputer tidak mungkin mendapat pengalaman atau belajar dan meneliti seperti manusia, tapi ia dapat memperoleh pengetahuan yang dibutuhkannya itu melalui upaya yang diberikan oleh seorang pakar manusia. Pengetahuan terdiri dari fakta, pemikiran, teori, prosedur dan hubungannya satu sama lain. Pengetahuan juga merupakan informasi terorganisasi dan teranalisis agar bisa lebih mudah dimengerti dan bisa diterapkan pada pemecahan masalah dan pengambilan keputusan. Hampir semua pangkalan keputusan (knowledge base) sangat terbatas dalam arti terfokuskan kepada suatu masalah khusus. Pada saat pangkalan pengetahuan itu sudah terbentuk, maka teknik artificial inteligence bisa digunakan untuk memberi, menalar, dan membuat inferensi (mengambil keputusan
12
berdasarkan pengalaman) dan membuat pertimbangan-pertimbangan yang didasarkan kepada fakta dan hubungan-hubungannya yang terkandung dalam pangkalan pengetahuan itu. Dengan pangkalan dan kemampuan untuk menarik kesimpulan melalui pengalaman (inferensi), komputer dapat disejajarkan sebagai alat bantu yang bisa digunakan secara praktis dalam memecahkan masalah. Tujuan dari Artificial Intelligence (AI) adalah untuk bisa memahami intelegensia manusia. Dengan menerapkan model intelegensia manusia pada komputer, kita dipaksa untuk belajar bagaimana cara kita menyimpan pengetahuan dalam otak kita dan bagaimana cara kita mengaplikasikannya. Terlebih dahulu kita harus mengerti betul tentang pola berfikir kita sendiri, bagaimana teknik penalarannya, dan bagaimana teknik pendekatannya dalam memecahkan suatu masalah.
2.1.6
Aplikasi Kecerdasan Buatan Berkat perkembangan ilmu pengetahuan dan teknologi yang begitu pesat,
software kecerdasan buatan tidak hanya terbatas pada komputer besar saja melainkan juga bisa diaplikasikan pada mini komputer bahkan mikro komputer atau komputer pribadi (PC). Aplikasi AI pertama-tama diterapkan dalam memecahkan permasalahan permainan (games) dan memecahkan masalah teka-teki. Selain aplikasi pada bidang permainan, AI dapat dikembangkan untuk kepentingan yang lebih luas yaitu aplikasi pemecahan masalah (problem solving), sistem pakar (expert
13
system), pengolahan bahasa alami (natural language processing), computer vision, robot dan pendidikan. Semua itu dapat dilihat dalam Gambar 1. Dalam memecahkan masalah atau membantu membuat keputusan dalam suatu domain tertentu, semua aplikasi tersebut di atas sudah menggunakan pangkalan pengetahuan dan teknik inferensi.
Gambar 2.2 Diagram Aplikasi Artificial Intellegence
1. General Problem Solving Pemecahan masalah secara umum merupakan suatu masalah yang dikerjakan AI dengan sangat baik. Kemampuan ini bisa diterapkan pada objek yang sangat luas. Pemecahan masalah umum ini dapat dilakukan dengan cara melacak dan mengkombinasikan berbagai cara atau metoda sehingga menghasilkan solusi terbaik ditinjau dari aspek prioritas dan kepentingan. 2. Expert Systems Penggunaan teknik AI ini, pada umumnya dilakukan untuk membuat software Expert System, yaitu suatu program yang bertindak sebagai penasihat atau konsultan pintar. Dengan mengambil pengetahuan yang
14
disimpan
dalam
domain
tertentu,
seorang
pemakai
yang
tidak
berpengalaman sekalipun bisa memecahkan suatu masalah yang bagaimanapun rumitnya dan bisa mengambil keputusan yang tepat dan akurat seperti yang selalu dilakukan seorang pakar. 3. Natural Language Processing Program pengolahan bahasa alami (Natural Language Processing) menggunakan teknik AI dalam analisis input bahasa yang dimasukan melalui papan tombol komputer (keyboard). Program tersebut berusaha mengidentifikasikan sintak, semantik dan konteks yang terkandung dalam satu kalimat agar ia bisa sampai pada kesimpulan untuk bisa memberikan jawaban. 4. Komputer Vision Komputer vision adalah aplikasi lain dalam artificial intellegence. Komputer visi merupakan alat analisis dan evaluasi informasi visual dengan menggunakan komputer. Teknik AI memungkinkan komputer bisa menguji sebuah gambar atau adegan nyata dengan mengidentifikasikan obyek, ciri-cirinya atau pola-polanya. 5. Robotics Robotics adalah suatu bidang rekayasa yang mencurahkan perhatiannya kebidang duplikasi kemampuan phisik manusia, yaitu suatu komponen alami dalam bidang AI yang berusaha menirukan kemampuan mental manusia.
15
6. Education Dengan menggunakan metode AI, software bentuk baru yaitu ComputerBased-Training (CBT) bisa dibuat, yang hasilnya bisa merubah komputer menjadi tutor yang pintar.
2.1.7
Fasilitas Akuisisi Pengetahuan Fasilitas ini merupakan suatu proses untuk mengumpulkan data-data
pengetahuan akan suatu masalah dari pakar. Bahan pengetahuan dapat ditempuh dengan beberapa cara, misalnya mendapatkan pengetahuan dari buku, jurnal ilmiah, para pakar dibidangnya, laporan, literatur dan lain sebagainya. Sumber tersebut dijadikan dokumentasi untuk dipelajari, diolah dan diorganisasikan secara tersetruktur menjadi basis pengetahuan.
2.1.8
Basis Pengetahuan dan Basis Aturan Setelah proses akuisisi pengetahuan selesai dilakukan, selanjutnya
direpresentasikan menjadi basis pengetahuan dan basis aturan. Kemudian dikumpulkan, dikodekan, diorganisasikan dan digambarkan dalam bentuk rancangan yang sistematis. Basis pengetahuan adalah basis data yang menyimpan informasi dan aturan-aturan tertentu bagi sistem pakar. Basis pengetahuan terdiri dari daftar obyek dengan aturan tertentu sebagai atribut. Obyek adalah kesimpulan yang didefinisikan dari aturan yang saling terkait. Atribut adalah suatu kualitas tertentu dengan aturan tertentu yang membantu mendefinisikan obyek.
16
Obyek dapat didefinisikan dengan menggunakan sejumlah atribut yang dimiliki atau tidak dimiliki oleh obyek. Walaupun tidak semua basis pengetahuan memiliki aturan sesederhana tersebut. Aturan yang lebih kompleks dari sekedar atribut yang dimiliki atau tidak dimiliki oleh obyek.
2.1.9
Basis Data Basis data (database) merupakan bagian dari sistem pakar yang berisi
fakta-fakta yang sudah dimasukkan sebelum sistem pakar bekerja. Fakta-fakta ini semua berasal dari pengetahuan pakar.
2.1.10 Mekanisme Inferensi Mekanisme inferensi adalah bagian dari sistem pakar yang melakukan penalaran dengan menggunakan isi daftar aturan berdasarkan urutan dan pola tertentu yang digunakan oleh seorang pakar. Mekanisme inferensi berguna sebagai pusat pengendali atau penerjemah aturan. Mekanisme inferensi akan menganalisa suatu masalah tertentu dan selanjutnya akan mencari jawaban, kesimpulan atau keputusan yang terbaik. Teknik Inferensi ada dua macam yaitu : Pelacakan ke belakang (Backward Chaining) yang memulai penalarannya dari sekumpulan hipotesa menuju fakta yang mendukungnya. Dan Pelacakan ke depan (Forward Chaining) yang merupakan kebalikan dari pelacakan ke belakang, memulai dari sekumpulan data menuju keputusan.
17
Dua macam teknik pelacakan tersebut dapat digambarkan dalam bagan seperti berikut : a. Pelacakan ke depan (Forward Chaining)
Gambar 2.3. Teknik pelacakan ke depan (Forward Chaining)
b. Pelacakan ke belakang (Backward Chaining)
Gambar 2.4. Teknik pelacakan ke belakang (Backward Chaining)
Sebenarnya metode tersebut dipengaruhi oleh tiga macam teknik penelusuran yaitu: depth-first search (melakukan penelusuran kaidah secara mendalam dari simpul akar bergerak menurun ke tingkat dalam yang berurutan), breadth-first search (Bergerak dari simpul akar, simpul yang ada pada setiap tingkat diuji sebelum pindah ke tingkat selanjutnya), dan best-first search (bekerja berdasarkan kombinasi dari kedua teknik tersebut).
18
Ketiga teknik penelusuran tersebut dapat digambarkan dalam diagram sebagai berikut : a. Depth-first search
Gambar 2.5. Teknik penelusuran depth-first search
b. Breadth-first search
Start
Gambar 2.6. Teknik penelusuran breadth-first search
19
c. Best-first search Start
Gambar 2.7. Teknik penelusuran best-first search
2.1.11 Antarmuka Pemakai Antarmuka pemakai memberikan fasilitas komunikasi antara pemakai dan sistem. Selain itu juga memberikan berbagai fasilitas informasi dan berbagai keterangan yang bertujuan untuk membantu mengarahkan alur penelusuran masalah sampai ditemukan solusi. Pada umumnya, antarmuka pemakai juga berfungsi untuk memasukkan pengetahuan baru kedalam basis pengetahuan sistem pakar. Menampilkan fasilitas penjelas sistem secara menyeluruh sehingga pemakai mengerti apa yang harus dilakukan terhadap sistem. Syarat utama membangun antarmuka pemakai adalah kemudahan dalam menjalankan sistem. Semua kesulitan dalam membangun suatu program harus disembunyikan, yang ditampilkan hanyalah tampilan yang interaktif, komunikatif dan kemudahan pakai.
20
2.1.12 Tahapan Dalam Pengembangan Sistem Pakar Dalam pengembangan sistem pakar terdapat 6 tahap, yaitu : a. Identifikasi Tahap ini sebagai dasar dalam pengembangan sistem pakar. Pada tahap ini dilakukan analisa, membatasi masalah dan menentukan tujuan pembuatan sistem. b. Konseptualisasi Hasil identifikasi masalah dikonseptualisasikan dalam bentuk relasi antar data, hubungan antar pengetahuan dan konsep-konsep penting dan ideal yang akan diterapkan dalam sistem. c. Formalisasi Pada tahap ini konsep-konsep yang sudah jadi diimplementasikan secara formal seperti yang biasanya digunakan oleh sistem pakar. d. Implementasi Tahap ini merupakan tahap yang sangat penting karena disinilah sistem pakar yang dibuat akan diterapkan. Pada tahap ini keahlian seorang pakar akan diterapkan dalam bentuk program komputer. e. Evaluasi Sistem pakar yang selesai dibangun perlu dilakukan evaluasi untuk menyempurnakan dengan cara menguji dan mencari kesalahan yang timbul. Dalam evaluasi akan ditemukan bagian-bagian yang harus dikoreksi untuk menyamakan permasalahan dan tujuan akhir pembuatan sistem.
21
f. Pengembangan sistem Pengembangan sistem diperlukan sehingga sistem yang dibangun tidak menjadi usang dan investasi sistem tidak sia-sia. Hal pengembangan sistem yang paling berguna adalah proses dokumentasi sistem dimana didalamnya tersimpan semua hal penting yang dapat menjadi tolok ukur pengembangan sistem dimasa mendatang termasuk didalamnya adalah kamus pengetahuan masalah yang diselesaikan.
2.2
Delphi Dewasa ini bahasa pemrograman berbasis RAD (Rapid Application
Development) makin digemari. Hal ini dikarenakan kemudahan yang ditawarkan bahasa tersebut. Salah satu bahasa pemrograman RAD yang cukup handal adalah Borland Delphi, generasi lanjutan dari bahasa Pascal. Umumnya delphi lebih banyak digunakan untuk pengembangan aplikasi desktop dan enterprise berbasis database, tapi sebagai perangkat pengembangan yang bersifat general-purpose ia juga mampu dan digunakan dalam berbagai jenis proyek pengembangan software. Delphi dirilis pertama tahun 1995 untuk windows 16 bit dan menjadi salah satu pembawa istilah RAD (Rapid Application Development) tool. Satu tahun kemudian dirilis Delphi 2 yang mendukung windows 32 bit. Dengan satu rilis baru setiap tahunnya, pada tahun 2002 dukungan untuk Linux (melalui Kylix dan CLX component library) ditambahkan. Dan tahun 2003 .NET mulai didukung dengan munculnya Delphi.Net (Delphi 8).
22
Delphi 2005 (nama lain dari Delphi 9) mensupport code generation baik untuk win32 maupun .NET, dan seperti yang telah dikenal, fitur-fitur manipulasi data secara live dari database secara design-time. Ia juga membawa banyak pembaruan pada IDE (Integrated Development Environment) secara signifikan. Para penganjur delphi mengklaim dengan bahasa pemrograman Delphi, IDE dan component library (VCL/CLX) yang disediakan oleh vendor tunggal memungkinkan satu package yang lebih konsisten dan mudah dikenali. Produk delphi ini didistribusikan dalam beberapa suite: Personal, Professional, Enterprise (sebelumnya Client/Server) dan Architect. Delphi membawa keuntungan-keuntungan berikut: a. Komunitas pengguna yang besar pada Usenet maupun web (contoh: news://forums.borland.com dan List newsgroup delphi milik borland). b. Dapat mengkompilasi menjadi single executable, memudahkan distribusi dan meminimalisir masalah yang terkait dengan versioning dll. c. Banyaknya dukungan dari pihak ketiga terhadap VCL (biasanya tersedia berikut source codenya) ataupun tools pendukung lainnya (dokumentasi, tool debugging, dll). d. Optimasi kompiler yang cukup cepat. e. Mendukung multiple platform dari source code yang sama.
23
2.2.1 2.2.1.1
Pernyataan Dasar Pernyataan If dan If … Else Pernyataan if dapat dipakai untuk mengambil keputusan berdasarkan suatu
kondisi dengan dua macam hasil/keluaran. Penulisan pernyataan if : If (kondisi) then Pernyataan; Endif Flowchart :
Gambar 2.8. Flowchart pernyataan if
Penulisan pernyataan if … else : If (kondisi) then Pernyataan1; Else Pernyataan2; Endif
24
Flowchart :
Gambar 2.9. Flowchart pernyataan if … else
2.2.1.2
Pernyataan Case Of Pernyataan case of digunakan untuk pengambilan keputusan berdasarkan
suatu kondisi dengan beberapa macam hasil/keluaran. Penulisan pernyataan case of Case (kondisi) of Kondisi1: Pernyataan1; Kondisi2: Pernyataan2; Kondisi3: Pernyataan3; Kondisi4: Pernyataan4; End;
25
Flowchart:
Gambar 2.10. Flowchart pernyataan case of
2.2.1.3
Pernyataan For Pernyataan perulangan for biasanya dipakai untuk melakukan perulangan
yang sudah pasti. Penulisan pernyataan for : For (Nilai=Nilai1) to (Nilai2) do begin Pernyataan; Endif
26
Flowchart :
Gambar 2.11. Flowchart pernyataan for
2.2.1.4
Pernyataan While do Pernyataan perulangan while do digunakan untuk melakukan perulangan
selama kondisi tertentu terpenuhi. Penulisan pernyataan while do : While (kondisi) do begin Pernyataan; Endif
27
Flowchart :
Gambar 2.12. Flowchart pernyataan while do
2.2.2 Pengaksesan Database Sebagai bahasa pemrograman yang fleksibel, delphi menyediakan banyak sekali komponen yang dapat memudahkan penggunanya. Begitu juga dalam pembuatan aplikasi database, Delphi telah menyediakan komponen-komponen yang dapat dipakai untuk mengakses database, baik local maupun remote. Borland Database Engine (BDE) merupakan salah satu pendekatan untuk membangun aplikasi-aplikasi database. Selain menggunakan BDE, Delphi juga menyediakan beberapa pendekatan lain seperti ADO, dbExpress, maupun InterBase (khusus untuk InterBase server).
2.2.2.1 Borland DataBase Engine (BDE) Borland DataBase Engine (BDE) merupakan mesin khusus untuk melakukan pemrograman database yang dibuat oleh Borland. Dengan
28
menggunakan BDE inilah kita dapat mengakses database tanpa peduli akan format database yang sedang kita akses. Sederhananya BDE menjadikan format database dapat ditangani secara transparan oleh mesin database. Normalnya BDE hanya digunakan khusus untuk menangani database local semacam paradox dan dBase. Namun dengan adanya ODBC (Open DataBase Connectivity), kita dapat mengakses database-database lain. Untuk mengetahui lebih jelas tentang BDE, arsitektur BDE pada Delphi dapat digambarkan sebagai berikut :
Gambar 2.13. Arsitektur BDE pada Delphi
2.2.2.2 Komponen BDE Delphi 7 Mengelompokkan komponen-komponen pembuatan aplikasi database dengan BDE dalam tab khusus, yaitu tab BDE. Tab BDE pada Delphi 7 hampir sama dengan Delphi 6. Komponen-komponen yang ada pada tab BDE adalah sebagai berikut :
29
Tabel 2.1. Komponen-komponen yang ada pada tab BDE
Komponen
Nama Table
Deskripsi Untuk mengakses table dari database, baik local maupun remote. Selain itu juga untuk membuat, menghapus dan mengganti nama table.
Query
Untuk melakukan operasi query melalui statementstatement SQL.
StoredProc
Untuk mengakses stored procedure pada server.
Database
Untuk melakukan koneksi permanen (tetap) pada database.
Session
Menyediakan kontrol global group pada komponen database. Serta mampu menampilkan databasedatabase aktif.
BatchMove
Untuk melakukan sekumpulan operasi seperti meng-copy struktur maupun isi table, modifikasi, memasukkan data dan sebagainya.
UpdateSQL
Untuk menuliskan statemen SQL dalam menjalankan bermacam operasi pada dataset.
NestedTable
Untuk mendapatkan master-detail pada sub table.
30
2.3
Database
2.3.1
Pengertian Database Database merupakan kumpulan dari beberapa data dalam jumlah yang
banyak, saling berhubungan dan mempunyai arti tertentu. Database yang baik harus tersusun dalam suatu struktur tertentu dan data yang ada terhubung dengan alur yang jelas sehingga memudahkan dalam pengaksesan dan manajemen dari data yang ada pada database tersebut. Beberapa hal yang muncul jika database tidak memenuhi syarat sebagai database yang baik : •
Pengulangan data (Redudancy Data) Pengolahan data secara manual dan tidak adanya penamaan standard pada penamaan elemen-elemen data mengakibatkan data yang sama disimpan pada database.
•
Ketergantungan data (Data Dependency) Hal ini terjadi ketika hubungan antar data tidak diatur secara benar dalam database. Akibat yang muncul adalah data yang seharusnya berubah ketika ada data baru masuk atau ketika ada perubahan data pada tabel yang lain, tidak berubah sesuai dengan apa yang diharapkan.
•
Kepemilikan data yang tersebar Kesalahan dalam pengelompokan data mengakibatkan data yang seharusnya mudah didapatkan akan menjadi berbelit-belit dalam pengaksesannya. Dampak yang muncul dari hal ini adalah suatu sistem yang tidak mampu memberikan informasi yang konsisten, andal dan akurat.
31
2.3.2
Struktur Database Database secara global terdiri atas kumpulan table yang memuat baris dan
kolom. Setiap baris pada tabel mewakili satu unit dari data yang disebut dengan record dan kolom dalam table (dinamakan field) merupakan keterangan dari masing-masing isi record. Struktur database dapat dicontohkan seperti database dibawah ini : Tabel 2.2. Contoh struktur database Kode KN
Kerusakan Plating Kuning
Analisa
Solusi
Cek Ampere
sesuaikan Ampere dengan
meter , cek tip jig
kapasitas part/jig, jika tip jig sudah banyak deposit segera repair jig tersebut.
TL
Thickness too low
Cek temperatur,
apabila terlalu tinggi
Cek Additive
kembalikan ke level standart asam khloride terlalu tinggi di tank, tambahkan Silver Karbonat
TB
Plating terbakar
Cek temperatur,
apabila terlalu tinggi
Cek Ampere
kembalikan ke level standart sesuaikan Ampere dengan kapasitas part/jig
DP
Plating Doph
Cek Temperatur di
apabila terlalu tinggi
tank
kembalikan ke level
14(semibright)
standart ( 55-650C)
32
Dari database/table diatas, yang disebut record adalah satu kelompok data dalam satu baris misalnya record pertama yaitu terdiri dari KN, Plating Kuning, Cek Ampere meter dan cek tip jig, sesuaikan Ampere dengan kapasitas part/jig jika tip jig sudah banyak deposit segera repair jig tersebut. Jadi database/tabel diatas terdiri dari 4 record. Sedangkan yang disebut field adalah setiap kolom pada database/tabel, yaitu kode, kerusakan, Analisa, dan Solusi Jadi database/tabel diatas terdiri dari 4 field. Setiap data yang disimpan dalam satu field memiliki tipe data yang sama. Dalam satu database/tabel, field-fieldnya bisa memiliki tipe data yang berbedabeda, tergantung pada data yang akan disimpan. Setiap program pengolah database memiliki simbol yang berbeda untuk merepresentasikan tipe data yang digunakan. Secara umum tipe data dapat dibagi dalam beberapa kelompok : •
Karakter : -
Char, untuk menyimpan data yang terdiri dari 1 karakter/huruf.
-
String/Alpha, untuk menyimpan data yang terdiri rangkaian karakter/huruf dengan maksimal dapat menyimpan 255 karakter.
-
Memo, untuk menyimpan data yang terdiri rangkaian karakter/huruf dengan maksimal dapat menyimpan 240 karakter, data disimpan pada file yang berbeda.
•
Angka -
Integer, untuk menyimpan data angka -32768 sampai 32767.
-
Byte, untuk menyimpan data angka 0 sampai 255.
33
-
ShortInt, untuk menyimpan data angka -128 sampai 127.
-
LongInt,
untuk
menyimpan
data
angka
-2,147,483,648
hingga
2,147,483,647. •
•
Float/real/Number, untuk menyimpan data angka desimal.
Tanggal dan Jam -
Date, untuk menyimpan data tanggal.
-
Time, untuk menyimpan data jam.
-
DateTime, untuk menyimpan data tanggal dan jam.
Logical -
Logical/boolean, untuk menyimpan data bertipe logical, yang memiliki nilai true/false.
2.3.3
Operasi Database Operasi-operasi dalam database meliputi :
•
membuat database (create database) Ini merupakan operasi dasar dalam database sebelum melakukan operasioperasi yang lain.
•
menghapus database (delete database) Operasi ini berguna jika : -
terjadi kesalahan dalam pembuatan database
-
database sudah tidak digunakan lagi
34
-
data didalamnya sudah tidak dapat ditampung dalam tempat penyimpanan yang ada sehingga perlu dipindahkan ketempat penyimpanan lain. Agar dapat digunakan untuk menyimpan data baru.
•
membuat table (create table)
•
menghapus table (delete table)
•
menambah data pada table (add record to table)
•
menghapus data pada table (delete record from table)
•
mencari data dari table (select record from table)
•
mengubah data pada table (update record from table)
2.3.4
Manajemen Database Manajemen database pada dasarnya adalah suatu cara memiliki database
sehingga pengguna dapat menjalankan operasi dalam database seperti memasukkan, mengubah, menghapus, memanipulasi dan mengambil data dengan mudah.
2.4
Perancangan Sistem Alat yang digunakan untuk merancang sistem ada bermacam-macam
diantaranya adalah DFD (Data Flow Diagram) dan ERD (Entity Relationship Diagram).
2.4.1
Data Flow Diagram (DFD) Data Flow Diagram adalah alat pembuatan model yang memungkinkan
profesional sistem untuk menggambarkan sistem sebagai suatu jaringan proses
35
fungsional yang dihubungankan satu sama lain dengan alir data baik secara manual maupun komputerisasi. DFD ini sering disebut juga dengan nama Bubble Chart atau diagram, model proses, diagram alur kerja atau model fungsi. DFD ini adalah salah satu alat pembuatan model yang sering digunakan, khususnya bila fungsi-fungsi sistem merupakan bagian yang lebih penting dan kompleks daripada data yang digunakan untuk menjelaskan aliran informasi dan transformasi data yang bergerak dari pemasukan data hingga keluaran. Untuk memudahkan pembacaan DFD, maka penggambaran DFD disusun berdasarkan tingkatan atau level dari atas ke bawah, yaitu : a.
Diagram Konteks (Level 0) Merupakan diagram yang paling atas yang terdiri dari suatu proses
dan menggambarkan ruang lingkup proses. Hal yang digambarkan dalam diagram konteks adalah hubungan terminator dengan sistem dan juga sistem dalam suatu proses, sedangkan hal yang tidak digambarkan dalam diagram konteks adalah hubungan antara terminator dengan data store. b.
Diagram Zero (Level 1) Merupakan diagram yang berada diantara Diagram Konteks dan
Diagram Detail serta menggambarkan proses utama dari DFD. Hal yang digambarkan dalam Diagram Zero adalah proses utama dari sistem serta hubungan dari entity, proses, alur data dan data store.
36
c.
Diagram Detail
Merupakan penguraian dalam proses yang ada dalam diagram zero. Diagram Detail adalah diagram yang paling rendah dan tidak dapat diuraikan lagi.
2.4.2
Entity Relationship Diagram (ERD) Entity Relationship Diagram (ERD) adalah suatu model jaringan
(network) yang menggunakan susunan data yang disimpan dalam sistem secara abstrak. Tujuan utama dari penggambaran ERD adalah untuk menunjukkan struktur objek data (entity) dan hubungan (relationship) yang ada pada objek tersebut. ERD berguna bagi profesional sistem, karena ERD memperlihatkan hubungan antara data store pada DFD.
2.4.2.1 Komponen Entity Relationship Diagram Komponen utama ERD terdiri dari : 1. Entitas atau objek data (entity) Adalah sesuatu yang dapat dibedakan dalam dunia nyata dengan keberadaan yang bebas baik secara fisik maupun secara abstrak (konsep), mempunyai karakteristik tertentu, dimana informasi yang berkaitan dengannya dikumpulkan. Tipe entitas adalah sekumpulan entitas yang menggunakan sifat dan karakteristik yang sama, sedangkan instance entitas adalah satu kejadian tunggal dari tipe entitas. Simbol yang
37
digunakan adalah empat persegi panjang serta pemberian nama biasanya dengan menggunakan kata benda, seperti terlihat pada gambar.
SUPLIER
Gambar 2.14 Simbol Entitas
2. Relasi (relationship) Adalah hubungan yang terjadi antara instance dari satu atau lebih tipe entitas. Relationship tidak mempunyai keberadaan fisik kecuali yang mewarisi dari hubungan entitas tersebut. Relationship set adalah kumpulan relationship yang sejenis. Simbol yang digunakan adalah bentuk wajik dan pemberian nama biasanya dengan menggunakan kata kerja, seperti terlihat pada gambar
Produksi
Gambar 2.15 Simbol Relationship 3. Atribut Adalah sifat dan karakteristik suatu entitas yang menyediakan penjelasan detail tentang entitas tersebut. Nilai atribut (attribute value) adalah suatu data aktual atau informasi yang disimpan pada suatu atribut dalam suatu entitas atau relationship. Terdapat dua jenis atribut, yaitu
38
identifier (key) yang digunakan untuk menentukan suatu entitas secara unik, dan descriptor (nonkey attribute) yang digunakan untuk menspesifikasikan karakteristik dari suatu entitas yang tidak unik. Bukan hanya
entitas
yang
memiliki
atribut
tapi
relationship
juga
dapatmemilikinya. Simbol yang digunakan adalah bentuk oval, seperti terlihat pada gambar.
CUSTOMER
Gambar 2.16 Simbol Atribut
2.4.2.2 Kardinalitas dalam Relationship Cardinality Ratio menjelaskan batasan jumlah keterhubungan satu entitas dengan entitas lainnya. Terdapat tiga jenis Cardinality Ratio, yaitu: 1.
1 : 1 (one to one) Entity hanya boleh berhubungan dengan satu entity kedua dan sebaliknya.
Contoh : satu pegawai memiliki satu jabatan (gambar )
1 Pegawai
1 Memiliki
Gambar 2.17 Relasi 1 : 1
Jabatan
39
2. 1 : M (one to many ) atau M : 1 (many to one) Entity pertama boleh banyak berhubungan dengan entity kedua, tetapi entity kedua hanya boleh berhubungan dengan satu entity atau sebaliknya. Contoh : satu pegawai memiliki banyak proyek (gambar ) 1
N
Pegawai
Proyek
Memiliki
Gambar 2.18 Relasi 1 : M 3. M : N (many to many) Entity pertama boleh banyak berhubungan dengan Entity kedua dan sebaliknya. Contoh : banyak pembeli membeli banyak barang (gambar ) M Pembeli
N Membeli
Barang
Gambar 2.19 Relasi M : N
2.4.2.3 Derajat (tingkat) Relationship Derajat relationship menyatakan jumlah entitas yang berpartisipasi dalam suatu Relationship. Terdapat tiga macam derajat dari relationship, yaitu: 1. Unary Degree ( tingkat satu ) Merupakan suatu Relationship dihubungkan dengan satu Entity, penghubungnya ada 2. Relationship ini sering disebut juga Relationship Rekursif.
40
Contoh : Pegawai
Lapor
Gambar 2.20 Unary Degree
2. Binary Degree ( Derajat Dua ) Merupakan suatu Relationship yang menghubungkan dua Entity yang berbeda. Relationship ini paling umum digunakan dalam pembuatan Model data. Contoh : Pegawai
Departemen
Kerja
Gambar 2.21 Binary Degree 3. Ternary Degree ( Derajat Tiga ) Merupakan satu Relationship menghubungkan tiga Entity yang berbeda satu sama lain.
Contoh : Pegawai
Kerja
Departeme
Kota
Gambar 2.22 Ternary Degree
BAB III ANALISA DAN PERANCANGAN
Dalam pembuatan aplikasi bantu harus memenuhi lima komponen penting, yaitu akuisisi pengetahuan, basis pengetahuan dan basis aturan, mekanisme inferensi, fasilitas penjelasan program dan antarmuka pemakai yang merupakan satu kesatuan yang tidak dapat dipisahkan. Aplikasi Bantu ini dapat ditambahkan fasilitas belajar mandiri yang merupakan komponen pendukung sebagai suatu kecerdasan buatan tingkat lanjut. Untuk memenuhi kelima komponen sistem pakar tersebut, dalam pembuatan sistem pakar harus melalui 6 tahapan, yaitu : a. Identifikasi b. Konseptualisasi c. Formalisasi d. Implementasi e. Evaluasi f. Pengembangan sistem
3.1
Akuisisi Pengetahuan Pada saat mengerjakan komponen akuisisi pengetahuan ini, dilakukan
melalui tahap identifikasi dan konseptualisasi.
41
42
Sistem yang akan dibuat adalah aplikasi bantu untuk mengerjakan perbaikan hasil proses plating di Line Nickel Chrome Plating. Aplikasi ini dibuat untuk membantu mengerjakan hasil proses plating dan untuk pembelajaran ahli plater baru, karena mengingat mahalnya harga untuk mengadakan training tentang ahli plater. Saat ini hasil plating Nickel Chrome sangat banyak diminati oleh para consumen khususnya di industri otomotif . Sehingga sistem pakar yang akan dibuat ini diharapkan dapat membantu dalam mengerjakan perbaikan hasil proses plating, karena dalam proses plating sangat banyak sekali problem yang timbul.
3.2 Analisa Penelusuran Sebelum pembuatan aplikasi bantu ini terlebih dahulu dilakukan penelusuran, tehnik penelusuran yang digunakan yaitu Depth first Search (melakukan penelusuran kaidah secara mendalam dari simpul akar bergerak menurun ke tingkat dalam yang berurutan).
3.3 Data Flow Diagram Untuk mempermudah analisa aplikasi bantu ini maka dibuatkan Data Flow Diagram (DFD) pada proses penganalisaan ini.
43
ID LOGIN REQUEST KERUSAKAN
APLIKASI PERBAIKAN
USER SOLUSI PEMECAHAN MASALAH
HASIL
ID LOGIN USER LOGIN
Gambar 3.1. DFD Level 0 Sistem Pakar Perbaikan Hasil Plating
3.4
Entity Relationship Diagram (ERD) Berikut ini entitas dari aplikasi perbaikan hasil proses plating :
Tabel. 3.1 Entitas aplikasi perbaikan hasil proses plating Entitas
Keterangan
Kerusakan
Data kerusakan yang ada
Analisa
Data analisa penyebab dari kerusakan
Solusi
Data solusi pemecahan
User
Data user (Username & Login) Login
44
User
1
User Name Password Expert
Kerusakan
M Mempunyai
Kode Kerusakan 1 Mempunyai
M Solusi
Analisa N
Kode Kerusakan Kode analisa
Mempunyai
M
Kode Kerusakan Kode analisa
Gambar 3.2. ERD sistem pakar perbaikan hasil plating 3.5 Nickel Chrome Plating
Gambar 3.3. Gambar Line Nickel Chrome Plating
45
Nickel Chrome Plating memiliki 30 tanki proses, yaitu : NO 1
NAMA TANKI Degreasing
SPESIFIKASI Uniclean 157
60 – 80 gram/liter
Temperatur
75 (65 – 85)0C
Air
City Water (Air Bersih)
Dipping Time
376 detik
Penggantian larutan
Per 10 juta dm2
Fungsi
Menghilangkan oli,, minyak, compound yang menempel pada Part
2
3
Rinsing
Anodic Cleaner-1
Jumlah Carrier
8
Volume
24.000 liter
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Uniclean 291
95 (85 – 105) gram/liter
Temperatur
60 (55 – 65)0C
Air
City Water (Air Bersih)
Dipping Time
141 detik
Penggantian larutan
Per 6 – 8 juta dm2
Fungsi
Menghilangkan oli,, minyak, compound yang menempel pada part.
4
Rinsing
Jumlah Carrier
3
Ampere
4 – 10 amp/dm2
Volume
9.300 liter
Temperatur
Room (30 – 36)0C
46
5
6
Rinsing
Cathodic Cleaner
Air
City Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Sulfuric Acid
13 (10 – 15) %
Uniclean 501#1
0.6 (0.4 – 0.8)%
Uniclean 501#2
2.5 (1 – 4)%
Temperatur
35 (25 – 50)0C
Air
City Water (Air Bersih)
Dipping Time
188 detik
Penggantian larutan
Per 6 juta dm2
Fungsi
Untuk membersihkan raw Material dari kerak welding,sisa Compound, dan sebagai Penahan agar tidak terjadi Korosi
7
Rinsing
Jumlah Carrier
4
Ampere
4 – 10 amp/dm2
Volume
11.000 liter
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
47
8
9
Rinsing
Anodic Cleaner-2
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Uniclean 291
70 (60 – 80) gram/liter
Temperatur
60 (40 – 80)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
Penggantian larutan
Per 10 juta dm2
Fungsi
Menghilangkan oli,, minyak, compound yang menempel pada part.
10
11
Rinsing
Rinsing
Jumlah Carrier
2
Ampere
4 – 10 amp/dm2
Volume
7.000 liter
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
City Water (Air Bersih)
48
12
Acid Dipping
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Sulfuric Acid
7 (5 – 10)%
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
13
Rinsing
Dipping Time
47 detik
Penggantian larutan
1 minggu sekali (100 ribu dm2)
Fungsi
Sebagai aktivator
Jumlah Carrier
1
Ampere
-
Volume
2.200 liter
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
14
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Semi Bright
Nickel Sulphate
275 (250 – 300) gram/liter
Nickel
Nickel Chloride
75 (60 – 80) gram/liter
Boric Acid
45 (40 – 50) gram/liter
M – 803
1 (0,5 – 1,5) gram/liter
M – 801
5 (3 – 8) gram/liter
NPA
3 (2 – 5) gram/liter
Temperatur
60 (40 – 80)0C
Air
DI Water (Air yang telah
49
di ionisasi)
Dipping Time
658 detik
Penggantian larutan
- hanya penambahan atau jika Maintenance/ make up
Fungsi
Memberikan warna semi kilat Pada part
15
Bright Nickel
Jumlah Carrier
14
Ampere
3 – 7 amp/dm2
Volume
31.000 liter
Nickel Sulphate
225 (200 – 250) gram/liter
Nickel Chloride
75 (60 – 80) gram/liter
Boric Acid
45 (40 – 50) gram/liter
ZD-sls
0,5 (0 – 1) gram/liter
ZD-230
1,12 (0.75 – 1,5) gram/liter
NPA
2 (1 – 3) gram/liter
NLC
30 (25 – 35) gram/liter
Temperatur
57 (50 – 65)0C
Air
DI Water (Air yang telah di ionisasi)
Dipping Time
564 detik
Penggantian larutan
- hanya penambahan atau jika Maintenance/ make up
Fungsi
Memberikan warna mengkilat Pada part
16
Drag Out
Jumlah Carrier
12
Ampere
3 – 7 amp/dm2
Volume
29.000 liter
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
Dipping Time
47 detik
50
17
Rinsing
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
-
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
18
Rinsing
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
19
Rinsing
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
20
Rinsing
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
DI Water (Air yang telah di ionisasi)
51
21
Chrome Plating
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Lumachrome Plus
225 (200 – 250) gram/liter
Sulfuric Acid
0,7 (0,5 – 1,2) gram/liter
Asam Sulfat
0,7 (0,1 –1,2) gram/liter
Temperatur
43,5(38 – 49)0C
Air
DI Water (Air yang telah di ionisasi)
Dipping Time
188 detik
Penggantian larutan
- hanya penambahan atau jika Maintenance/ make up
Fungsi
Memberikan warna mengkilat Pada part
22
23
Drag Out
Rinsing
Jumlah Carrier
4
Ampere
10,8 – 27 amp/dm2
Volume
10.000 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
-
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
-
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
52
24
25
26
27
Rinsing
Rinsing
Rinsing
Rinsing
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air Bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
53
28
29
Rinsing
Drag Out
Temperatur
Room (30 – 36)0C
Air
Cyty Water (Air bersih)
Dipping Time
47 detik
Fungsi
Untuk pembilasan part
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
Room (30 – 36)0C
Air
-
Dipping Time
47 detik
Fungsi
Pengeringan part sebelum Masuk oven
30
Oven
Jumlah Carrier
1
Volume
2.200 liter
Agitasi
4
Temperatur
180 0C
Dipping Time
975 detik
Kerusakan – kerusakan yang terjadi pada hasil proses plating yaitu : a. Hasil Proses Plating Kasar Analisa Penyebab : ¾ Konsentrasi electrocleaner rendah, menyebabkan kebakar pada steel ¾ Arus listrik terlalu tinggi ¾ Temperatur di electrocleaner terlalu rendah ¾ Rinsing kurang baik ¾ Anoda bag kotor pada tanki 14 dan 15 Solusi Pemecahan : ¾ Terjadi pada tanki 3 dan tanki 6
54
¾ Tambahkan chemical uniclean 291 pada tanki 3 sesuai dengan standard 95 (85 – 105) gram/liter ¾ Tambahkan Sulfuric Acid standard 13 (10 – 15) %, Uniclean 501#1 standard 0.6 (0.4 – 0.8)%, Uniclean 501#2 standard 2.5 (1 – 4)%. ¾ Setting ampere pada tanki 3 dan tanki 9 antara 4-10 ampere/Dm2 ¾ Setting atau adjustment temperatur pada tanki 3 ke level standart 600C(55-65)0C dan tanki 9 ke angka 60 (40 – 80)0C. ¾ Periksa agitasi pada semua tanki rinsing, jika ada yang tidak bekerja segera perbaiki. ¾ Segera ganti anoda bag jika telah rusak atau apabila masih bagus tetapi kotor lakukan pencucian anoda bag.
b. Hasil Proses Plating Blistering (menggelembung) Analisa Penyebab : ¾ Terjadi pada tanki Rinsing ¾ Pembilasan tidak bersih ¾ Waktu celup terlalu cepat (Dipping time) ¾ Cleaner sudah jenuh dengan minyak Solusi Pemecahan : ¾ Periksa agitasi semua tanki rinsing pastikan bahwa agitasi bekerja dengan baik, segera perbaiki agitasi jika ada yang tidak bekerja untuk memaximalisasi pembilasan.
55
¾ Periksa dipping time pada semua tanki rinsing segera setting ke standart dipping time (47 detik). ¾ Segera ganti atau kuras tanki rinsing jika kondisi air sudah terlihat jenuh.
c. Hasil Proses Plating Peeling (mengelupas) Analisa Penyebab : ¾ Terjadi pada tanki Rinsing ¾ Pembilasan tidak bersih ¾ Waktu celup terlalu cepat (Dipping time) ¾ Cleaner sudah jenuh dengan minyak Solusi Pemecahan : ¾ Periksa agitasi semua tanki rinsing pastikan bahwa agitasi bekerja dengan baik, segera perbaiki agitasi jika ada yang tidak bekerja untuk memaximalisasi pembilasan. ¾ Periksa dipping time pada semua tanki rinsing segera setting ke standart dipping time (47 detik). ¾ Segera ganti atau kuras tanki rinsing jika kondisi air sudah terlihat jenuh. d. Hasil Proses Plating Buram Analisa Penyebab : ¾ Terjadi pada tanki 21 ¾ Agitasi kurang maksimal
56
¾ Temperatur terlalu rendah ¾ Komposisi larutan kurang ¾ Arus terlalu rendah ¾ pH air rendah ¾ Terjadi Grounding (loncatan arus) Solusi Pemecahan : ¾ Periksa agitasi, segera perbaiki jika ada agitasi yang bekerja tidak maksimal, atau bila perlu tambahkan agitasi. ¾ Setting temperatur ke level standart 43,5(38 – 49)0C. 6
¾ Balancing larutan Lumachrome Plus (CR +) ke level 225 (200 – 250) 2
4
gram/liter dan Asam Sulfat (H SO ) ke level 0,7 (0,1 –1,2) gram/liter. ¾ Setting atau adjusment arus pada tanki 21 ke level 10,8 – 27 amp/dm2 ¾ Naikan pH air dengan menggunakan Nickel Carbonate ¾ Periksa apakah ada part yang jatuh ke tanki, apabila ada ambil segera dengan menggunakan magnet yang diikat menggunakan tambang plastik.
e. Hasil Proses Plating Doph Analisa Penyebab : ¾ Jarak antar part pada jig terlalu dekat ¾ Pencucian kurang bersih pada tanki rinsing. ¾ Konsentrasi acid dipping terlalu tinggi pada tanki 12 ¾ Agitasi kurang maksimal
57
Solusi Pemecahan : ¾ Perbaiki jig dan improve ke bagian maintenance untuk komposisi part per jig sesuai dengan Dm part. ¾ Segera ganti atau kuras tanki rinsing jika kondisi air sudah terlihat jenuh. ¾ Encerkan dengan menggunakan air. ¾ Periksa agitasi semua tanki rinsing pastikan bahwa agitasi bekerja dengan baik, segera perbaiki agitasi jika ada yang tidak bekerja untuk memaximalisasi pembilasan. f. Hasil Proses Plating Terbakar (burn) Analisa Penyebab : ¾ Terjadi pada tanki 14 dan 15 ¾ Kandungan Boric Acid rendah ¾ Temperatur terlalu rendah ¾ Nickel content rendah ¾ Arus listrik terlalu tinggi ¾ Kontaminasi iron/besi Solusi Pemecahan : ¾ Tambahkan Boric Acid dengan komposisi level standart 45 (40 – 50) gram/liter. ¾ Setting temperatur ke level standart 60 (40 – 80)0C untuk tanki 14 dan 57 (50 – 65)0C untuk tanki 15.
58
¾ Tambahkan Nickel Sulfat dengan komposisi standart 225 (200 – 250) gram/liter dan Nickel Chloride dengan komposisi 75 (60 – 80) gram/liter. ¾ Setting arus listrik ke level standart 3 – 7 amp/dm2 ¾ Naikan pH air dengan menggunakan Nickel Carbonate lakukan pencucian pada filter air.
g. Hasil Proses Plating TM (Tampak Material) Analisa Penyebab : ¾ Pencucian tidak bersih pada tanki Rinsing ¾ Raw Material part tidak bersih ¾ Tip Jig menempel pada part Solusi Pemecahan : ¾ Periksa agitasi semua tanki rinsing pastikan bahwa agitasi bekerja dengan baik, segera perbaiki agitasi jika ada yang tidak bekerja untuk memaximalisasi pembilasan. ¾ Periksa Raw Material Part sebelum melakukan proses Nickel Chrome Plating untuk meminimalisasi terjadinya problem ini. ¾ Periksa Tip pada Jig untuk tempat pemasangan part jangan sampai ada yang menempel pada bagian luar part, atau Grade A part. Jika ada yang menempel segera perbaiki tip jig, apabila masih terjadi juga segera design ulang untuk penempatan tip jig pada part.
59
h. Hasil Proses Plating Kuning Analisa Penyebab : ¾ Terjadi Pada tanki 14 dan 15 ¾ Tip jig kendor ¾ Tip jig banyak bunga nickel ¾ Kandungan larutan kurang Solusi Pemecahan : ¾ Perbaiki jig, sesuaikan dengan ukuran part ¾ Perbaiki jig, biasanya dengan cara diketok
i. Hasil Proses Plating Scratch (Tergores) Analisa Penyebab : ¾ Part banyak yang bersentuhan satu sama lainnya ¾ Raw Material tidak bagus Solusi Pemecahan : ¾ Buat jarak antar part, bisa juga dengan menggunakan sekat pada saat part masih berupa raw material maupun setelah diproses plating. ¾ Periksa Raw Material Part sebelum melakukan proses plating agar tidak terjadi problem ini.
j. Hasil Proses Plating Bintik Analilsa Penyebab : ¾ Terjadi pada tanki 14 dan 15
60
¾ pH air telalu tinggi ¾ Kandungan Boric Acid rendah ¾ Ada udara yang terlarut Solusi Pemecahan : ¾ Turunkan pH dengan menggunakan asam sulfat ¾ Tambahkan Boric Acid ke level standard 45 (40 – 50) gram/liter ¾ Periksa kebocoran pada pipa filter.
3.6 Basis Pengetahuan dan Basis Aturan Pembuatan komponen basis pengetahuan dan basis aturan dilakukan pada tahap formalisasi. Pada tahap ini yang dilakukan adalah merepresentasikan datadata yang telah diakuisisi menjadi bentuk yang sistematis. Ada beberapa cara merepresentasikan data menjadi basis pengetahuan, yaitu data dalam bentuk atribut, aturan-aturan, jaringan semantik, frame dan logika.
Semua
bentuk
representasi
data
tersebut
bertujuan
untuk
menyederhanakan data sehingga mudah dimengerti dan mengefektifkan proses pengembangan program. Data-data yang terkumpul dapat direpresentasikan dengan teknik IF THEN, tetapi teknik ini memerlukan aturan yang sangat banyak dan sulit untuk dikembangkan karena bersifat statis. Jika ada data baru maka pengeditan dilakukan oleh programmer dan harus menelusuri semua listing program. Hal ini bertentangan dengan prinsip sistem pakar yang bersifat fleksibel dan mudah dimodifikasi setiap saat oleh pakar dibidangnya.
61
Berikut ini contoh teknik IF THEN : If Nama Proses=’NiCr’ then If Hasil Plating=’Kasar’ then If analisa penyebab =’ Arus listrik terlalu tinggi di anodic cleaner’ then Solusi pemecahan Setting ampere pada tanki 3 dan tanki 9 antara 410 ampere/Dm2
else ......... Untuk mempermudah dalam menganalisa masalah yang akan di buat aplikasi bantunya, maka data hasil akuisisi dapat digambarkan dalam diagram blok. Diagram blok ini bertujuan untuk memberikan gambaran tentang ruang lingkup masalah yang akan dibuat sistem pakarnya. Diagram blok untuk data yang telah diakusisi dapat digambarkan sebagai berikut :
62
Jenis Kerusakan
Plating Kasar
Arus Listrik tinggi
Temperatur rendah
Setting ampere
Arus Listrik tinggi
Plating Buram
Gambar 3.4. Diagram blok akuisi data
Sedangkan untuk mempermudah dalam menganalisa alur penyelesaian sistem pakar dapat dibuat menggunakan flowchart. Selain itu pembuatan flowchart ini dapat mempermudah dalam pembuatan aplikasi sistem pakar. Flowchart untuk data yang telah diakuisisi diatas dapat digambarkan sebagai berikut :
START
63
JENIS KERUSAKAN
T
? Y
PROSES UNTUK KERUSAKAN LAIN
ANALISA
T
ARUS TINGGI
Y SOLUSI : SETTING AMPERE
PROSES UNTUK ANALISA LAIN
END
Gambar 3.5. Flowchart akuisisi data
Dari data akuisisi yang telah terkumpul diperlukan suatu database untuk menyimpannya. Data-data yang akan disimpan yaitu pilihan/analisa/solusi yang akan ditampilkan kepada pemakai. Untuk
mempermudah
dalam
menunjukkan
pilihan/analisa/solusi
selanjutnya dibuatkan suatu kode untuk masing-masing pilihan/analisa/solusi. Sehingga dibuat suatu database dengan struktur sebagai berikut :
64
Tabel 3.2. Tabel Solusi No.
Nama field
Tipe
Panjang
Keterangan
1.
Kode
String
3
Untuk menyimpan kode solusi
2.
Solusi
String
240
Untuk menyimpan data solusi
Tabel 3.3 Tabel Kerusakan No.
Nama field
Tipe
Panjang
Keterangan
1.
Kode
String
3
Untuk menyimpan kode kerusakan
2.
Kerusakan
String
30
Untuk menyimpan data kerusakan
3.
Kode Analisa
String
3
Untuk menyimpan kode analisa
Tabel 3.4 Tabel Analisa No.
Nama field
Tipe
Panjang
Keterangan
1.
Kode
String
3
Untuk menyimpan kode analisa
2.
Kerusakan
String
30
Untuk menyimpan data analisa
3.
Kode Solusi
String
3
Untuk menyimpan kode solusi
3.7 Mekanisme Inferensi Mekanisme inferensi merupakan bagian utama dalam pembuatan sistem pakar. Dalam membangun mekanisme inferensi perlu dipertimbangkan metode dan teknik penelusuran. Karena sistem pakar yang akan dibuat digunakan untuk menyelesaikan suata permasalahan berdasarkan kerusakan awal maka digunakan penalaran maju.
65
Mekanisme inferensi diatas secara garis besar dapat digambarkan dalam flowchart sebagai berikut :
START
TAMPILKAN KERUSAKAN
TAMPILKAN ANALISA
TAMPILKAN SOLUSI
END
Gambar 3.6. Flowchart mekanisme inferensi
3.8
Antarmuka Pemakai Karena pada aplikasi sistem pakar ini memiliki 2 macam pemakai, yaitu
pakar dan operator, maka dibuat 2 macam antarmuka. Karena antarmuka untuk pakar merupakan antarmuka yang terbatas, yaitu hanya boleh diakses oleh pakar maka harus disediakan password. Sedangkan antarmuka operator digunakan untuk umum maka tidak diperlukan password.
66
Sehingga pada saat membuka aplikasi disediakan antarmuka untuk login sebagai berikut :
Gambar 3.7. Designer form login
Penjelasan form diatas adalah : a. pemakai dapat memilih sebagai operator untuk melakukan penelusuran dan pakar untuk menambahkan basis data dalam database. b. User Name dan Password digunakan jika pemakai memilih sebagai pakar. c. Account digunakan untuk menambah, mengubah dan menghapus user name dan password. d. Database, Basis Aturan digunakan oleh sistem pakar untuk mengubah data yang ada dan update. e. Login untuk masuk ke program aplikasi sistem pakar
67
f. Close untuk menutup form login dan aplikasi sistem pakar.
Untuk operator disediakan antarmuka yang digunakan untuk penelusuran, yang menyediakan form untuk memilih kerusakan/analisa/solusi. Antarmuka muka tersebut adalah :
Gambar 3.8. Designer form penelusuran
Penjelasan form operator diatas adalah: a. Kerusakan digunakan untuk memilih kerusakan yang akan diselesaikan. b. Analisa digunakan untuk memilih analisa penyebab dari kerusakan c. Proses digunakan untuk menampilkan solusi
68
d. Solusi digunakan untuk menampilkan solusi yang harus dikerjakan oleh operator e. Close digunakan untuk menutup form penelusuran.
Antarmuka pakar harus menyediakan suatu form yang dapat digunakan untuk memasukkan basis data dan basis aturan yang telah diakuisisi. Sehingga antarmuka untuk pakar dibuat seperti :
Gambar 3.9. Designer form pakar/database Penjelasan form pakar adalah : a. Kerusakan digunakan untuk memilih kerusakan yang akan diberikan solusinya. b. Analisa penyebab digunakan untuk menampilkan analisa yang telah dimasukkan dan disimpan dalam database.
69
c. Kotak kosong digunakan untuk menginput jenis kerusakan baru ke dalam database. d. Add digunakan untuk menyimpan jenis kerusakan yang telah di input ke dalam kotak kosong diatas. e. Close digunakan untuk menutup form pakar.
3.9 Fasilitas Penjelas Sistem Fasilitas penjelas sistem diberikan untuk menjelaskan kepada pemakai tentang aplikasi yang dibuat, rekomendasi kepada pemakai, mengakomodasi kesalahan pemakai dan menjelaskan bagaimana suatu masalah terjadi Data fasilitas penjelas ini disimpan dalam file teks dan ditampilkan pada form sebagai berikut :
70
Gambar 3.10. Designer form sistem penjelas Penjelasan form penjelasan sistem adalah : a. form diatas digunakan untuk menampilkan data penjelas yang telah disimpan kedalam file teks. b. Save digunakan untuk menyimpan text yang ditulis di form penjelas. c. Close digunakan untuk menutup form penjelas sistem.
BAB IV IMPLEMENTASI DAN PENGUJIAN
Implementasi program yang telah dibuat bertujuan untuk mengetahui apakah program sudah sesuai dengan tujuan pembuatan aplikasi. Hal ini untuk menghindari kesalahan pada saat aplikasi sudah dipakai, karena jika dilakukan perbaikan pada saat aplikasi sudah dipakai bisa menimbulkan kerugian lebih banyak. Pada aplikasi sistem pakar sebagai program bantu untuk perbaikan hasil proses plating memiliki beberapa menu, yaitu : a. Login b. Account c. Sistem Penjelas d. Database e. Basis Aturan f. Penelusuran
4.1 Login Menu login merupakan tampilan awal yang digunakan menentukan hak akses masing-masing pemakai. Pada menu ini ditampilkan pilihan tipe user yang akan memakai aplikasi, yaitu operator, expert dan admin. Tipe operator dipakai oleh pemakai umum yang akan menggunakan aplikasi untuk penelusuran, pada
71
72
tipe ini tidak perlu memasukkan password. Tipe expert dipakai untuk pemakai yang berstatus pakar dan perlu memasukkan password, user tipe expert dapat mengakses menu database. Menu database ini digunakan untuk memasukkan atau mengubah basis pengetahuan dari pakar. Sedangkan tipe admin digunakan untuk mengakses menu account yang dipakai untuk menambah dan menghapus pemakai maupun mengganti password. Pada tipe admin juga diperlukan password. Pada menu login ini juga disediakan tempat untuk memasukkan nama pemakai dan password. Untuk memulai aplikasi dapat dilakukan dengan menekan tombol login. Tampilan menu login adalah sebagai berikut :
Gambar 4.1. Tampilan utama/login
Pada saat tombol login di tekan maka akan melakukan proses sebagai berikut : 1. Pertama akan dilakukan pengecheckan, apakah nama pemakai sudah diisi, jika belum akan ditampilkan keterangan bahwa nama pemakai belum diisi.
73
2. Kemudian di check apakah pemakai sudah login, jika sudah login maka proses logout dilakukan. 3. Jika belum login maka akan melakukan proses login, yaitu membandingkan password yang diinput dengan password dalam database. Untuk tipe pemakai expert dan admin akan melakukan proses login jika kedua password sama, sedangkan tipe pemakai operator tidak memperhatikan hasil perbandingan password. Sehingga script program pada saat tombol login ditekan adalah sebagai berikut : procedure TFRM_Utama.Button1Click(Sender: TObject); var namafile : string[40]; Psw : string[30]; Logon : Boolean; i : byte; begin if Trim(UserName.Text)<>'' then begin if Button1.Caption='LOGIN' then begin Logon:=false; namafile:='User.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TbAccount do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='UserName'; Active:=True; end; ..............................
74
4.2 Account Menu account digunakan untuk menambah dan menghapus nama pemakai atau untuk mengganti password. Pada menu account terdapat form untuk memasukkan nama pemakai dan passwordnya, daftar nama pemakai yang terdaftar. Selain itu juga terdapat beberapa tombol, yaitu tombol simpan untuk menyimpan nama pemakai dan password yang dimasukkan, tombol hapus digunakan untuk menghapus nama pemakai yang sudah terdaftar dan tombol tutup digunakan untuk menutup form account. Tampilan form account adalah sebagai berikut :
Gambar 4.2. Tampilan form account Proses yang dilakukan pada form account adalah : a. Pada saat tombol simpan ditekan, maka prosesnya adalah sebagai berikut : -
Dilakukan pengecheckan apakah database pemakai sudah dibuka.
75
-
Jika database sudah dibuka maka dilakukan enkripsi password yang akan disimpan.
-
Cari nama pemakai dalam data base, jika ditemukan ganti password lama dengan yang baru, kemudian simpan dalam database. Jika tidak ditemukan tambah record baru.
Listing program yang dibuat adalah sebagai berikut : procedure TFrmAccount.Button1Click(Sender: TObject); var i : byte; Psw : string[30]; begin if DM.TbAccount.Active then begin Psw:=''; for i:=1 to length(Password.Text) do Psw:=Psw+chr(ord(Password.Text[i]) XOR 27); if not DM.TbAccount.FindKey([UserName.Text]) then begin DM.TbAccount.Append; with DM.DSAccount.DataSet do begin fields[0].AsString:=UserName.Text; fields[1].AsString:=Psw; end; DM.TbAccount.Post; DM.TbAccount.FlushBuffers; end else .........................
b. Pada saat tombol hapus ditekan, maka dilakukan proses sebagai berikut : -
check apakah database user sudah dibuka ?
-
Jika sudah, check apakah nama user adalah Admin ? jika ya, maka tampilkan keterangan bahwa nama pemakai “Admin” tidak boleh dihapus.
76
-
Jika nama pemakai tidak sama dengan Admin, cari nama pemakai dalam database.
-
Jika ditemukan, tampilkan pertanyaan apakah nama user tersebut akan dihapus ? jika dijawab ya, hapus nama pemakai dalam database.
-
Jika tidak ditemukan, tampilkan informasi bahwa nama pemakai tidak ada dalam database.
Listing programnya adalah : procedure TFrmAccount.Button2Click(Sender: TObject); begin if DM.TbAccount.Active then begin if UserName.Text='Admin' then begin messagedlg('Nama pemakai "Admin" tidak boleh dihapus !',mtError,[mbOk],0); end else begin if DM.TbAccount.FindKey([UserName.Text]) then begin if messagedlg('Apakah nama pemakai "'+UserName.Text+'" dihapus ?',mtConfirmation,[mbYes,mbNO],0)=mrYes then begin DM.TbAccount.Delete; end; end else ...................
4.3 Sistem Penjelas Menu sistem penjelas berisi penjelasan pembuatan aplikasi sistem pakar dan fasilitas-fasilitas atau kegunaan dari aplikasi sistempakar yang dibuat. Pemakai yang mengakses menu ini adalah expert dan operator, tetapi dibedakan
77
haknya. Pemakai tipe expert dapat melakukan menambah atau memodifikasi isi dari sistem penjelas. Sedangkan pemakai tipe operator hanya dapat membaca isi dari sistem penjelas.Tampilan menu sistem penjelas adalah sebagai berikut :
Gambar 4.3. Tampilan form sistem penjelas
Proses utama pada form penjelas sistem adalah sebagai berikut : a. Proses menyimpan teks ke dalam file text procedure TFrmPenjelas.Button2Click(Sender: TObject); var namafile : string[30]; begin namafile:='penjelas.txt'; SaveDialog1.FileName:=DirData+'\'+namafile; Memo1.Lines.SaveToFile(SaveDialog1.FileName);
78
b. end;Proses membaca file text dan menampilkan isinya. procedure TFrmPenjelas.FormShow(Sender: TObject); var namafile : string[30];
begin namafile:='penjelas.txt'; if fileexists(DirData+'\'+namafile) then begin OpenDialog1.FileName:=DirData+'\'+namafile; Memo1.Lines.LoadFromFile(OpenDialog1.FileName); Memo1.SelStart := 0; end; end;
4.4 Database Menu database digunakan oleh pakar untuk menambah atau memodifikasi basis data/pengetahuan pada aplikasi sistem pakar yang dibuat. Pada menu database ini terdapat tampilan permasalahan dan solusi atau langkah selanjutnya yang harus dilakukan. Selain itu juga terdapat beberapa tombol, yaitu tombol add new digunakan untuk menambahkan solusi pada permasalahan yang ada, tombol edit untuk mengubah solusi yang sudah dimasukkan dan tombol hapus digunakan untuk menghapus solusi yang sudah ada. Juga terdapat tombol navigasi, antara lain tombol back digunakan untuk melihat ke permasalahan sebelumnya, tombol Next digunakan untuk menampilkan permasalahan berikutnya atau solusi yang dipilih.Tampilan menu database adalah sebagai berikut :
79
Gambar 4.4. Tampilan form pakar/database
Struktur utama database dan hubungan antar record yang digunakan dapat digambarkan dalam tabel dan diagram sebagai berikut :
Tabel 4.1. Struktur utama database Kode
Kerusakan
Kode Analisa
002
Hasil Plating Kasar
001,002,003,004,005
003
Hasil Plating Buram
006,007,008,009,010,011,012
…
…..
…
Proses menampilkan dalam form adalah sebagai berikut :
80
-
Menampilkan kerusakan pada sheet Kerusakan
-
Jika di pilih jenis kerusakan, dan pilih sheet Analisa Penyebab maka akan ditampilkan daftar analisa
-
Untuk menambah data, ketik pada kotak input kemudian klik tombol Add.
Listing program : procedure TFRM_DataBase.Button2Click(Sender: TObject); var Kd : string[3]; begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin DM.TB_Kerusakan.Last; Kd:=DM.DS_Kerusakan.DataSet.Fields[0].AsString; Kd:=IntToStr(StrToInt(Kd)+1); Kd:=copy('000',1,3-length(Kd))+Kd; end else begin Kd:='001'; end; .........................
Proses-proses yang dilakukan pada form database adalah sebagai berikut : a. Pada saat terjadi perubahan pemindahan sheet, maka data yang ditampilkan sesuai dengan sheet yang dipilih b. Jika ingin meng-edit data bisa dilakukan dengan cara klik kanan lalu pilih edit
81
Listing program : procedure TFRM_DataBase.Edit1Click(Sender: TObject); var sp : string; begin case PageControl1.TabIndex of 0:begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin sp:=DM.DS_Kerusakan.DataSet.Fields[1].AsString; sp:= InputBox('Edit Kerusakan','Kerusakan',sp); if sp<>DM.DS_Kerusakan.DataSet.Fields[1].AsString then begin DM.TB_Kerusakan.Edit; with DM.DS_Kerusakan.DataSet do begin Fields[1].AsString:=sp; end; DM.TB_Kerusakan.Post; DM.TB_Kerusakan.FlushBuffers; end; .........................
c. Jika ingin menghapus data, klik kanan dan pilih delete Listing program : procedure TFRM_DataBase.Delete1Click(Sender: TObject); begin Case pagecontrol1.TabIndex of 0:begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin DM.TB_Kerusakan.Delete; end; end; end; 1:begin if DM.TB_Analisa.Active then begin
82
if DM.TB_Analisa.RecordCount>0 then begin DM.TB_Analisa.Delete; end; end; end; end; end;
4.5 Basis Aturan Menu Basis aturan digunakan oleh Pakar untuk menentukan hubungan antara data kerusakan, analisa penyebab dan solusi pemecahan.
Gambar 4..5. Tampilan form Basis Aturan
Proses-proses yang dilakukan pada form Basis Aturan yaitu : a. Klik tombol update untuk mengupdate perubahan data solusi Listing Program :
83
procedure TFrm_Aturan.Button2Click(Sender: TObject); var Kd : string[3]; begin if DM.TB_Solusi.Active and DM.TB_Analisa.Active then begin if DM.TB_Analisa.FindKey([copy(Analisa.Text,1,3)]) then begin if DM.TB_Solusi.RecordCount>0 then begin DM.TB_Solusi.Last; Kd:=DM.DS_Solusi.DataSet.Fields[0].AsString; Kd:=IntToStr(StrToInt(Kd)+1); Kd:=copy('000',1,3-length(Kd))+Kd; end else begin Kd:='001'; end; ..............................
4.6 Penelusuran Menu penelusuran digunakan oleh operator untuk mencari solusi dari permasalahan yang ada. Pada menu ini terdapat tampilan kerusakan, analisa penyebab dan solusi pemecahannya, Tombol proses untuk menampilkan solusi pemecahan. Tombolclose untuk menutup form penelusuran. Tampilan pada menu penelusuran adalah :
84
Gambar 4.6. Tampilan form operator/penelusuran Proses-proses yang dilakukan pada form penelusuran antara lain : Pilih Jenis kerusakan dan analisa penyebab lalu klik tombol Proses
Listing Program : procedure TFrm_Penelusuran.Button2Click(Sender: TObject); begin Solusi.Text:=''; if DM.TB_Analisa.Active then begin if DM.TB_Analisa.FindKey([copy(Analisa.Text,1,3)]) then begin if DM.TB_Solusi.Active then begin if DM.TB_Solusi.FindKey([DM.DS_Analisa.DataSet.Fields[2].AsStri ng]) then begin Solusi.Text:=DM.DS_Solusi.DataSet.Fields[1].AsString; end;
85
end; end; end; end;
4.7 Pengujian Beberapa contoh pengujian program diperoleh data penyelesaian perbaikan sebagai berikut :
4.2 Tabel Pengujian No. 1.
Kerusakan/Analisa
Solusi
Hasil
- Periksa agitasi, segera perbaiki jika ada agitasi yang bekerja tidak maksimal, atau bila perlu tambahkan agitasi. Setting temperatur ke level standart 43,5(38 – 49)0C. - Setting atau adjusment arus pada tanki 21 ke level 10,8 – 27 amp/dm2 - Naikan pH air dengan menggunakan Nickel Carbonate
Masih Rusak
- Jenis Kerusakan - Hasil Plating Buram ? - Agitasi kurang maksimal
- Temperatur terlalu rendah - Arus Terlalu rendah
- pH air rendah
2.
Masih Rusak Masih Rusak
OK
- Jenis Kerusakan - Hasil Plating Terbakar ? - Kandungan Boric Acid rendah - Temperatur terlalu rendah
- Tambahkan Boric Acid Masih Rusak dengan komposisi level standart 45 (40 – 50) gram/liter. - Setting temperatur ke level Masih Rusak standart 60 (40 – 80)0C untuk
86
tanki 14 dan 57 (50 – 65)0C untuk tanki 15. - Nickel content rendah
- Kontaminasi iron/besi
Masih Rusak - Tambahkan Nickel Sulfat dengan komposisi standart 225 (200 – 250) gram/liter dan Nickel Chloride dengan komposisi 75 (60 – 80) gram/liter. OK - Naikan pH air dengan menggunakan Nickel Carbonate lakukan pencucian pada filter air.
Dari beberapa kali pengujian, kerusakan dapat diselesaikan dengan cepat dan tepat karena solusi dapat diambil sesuai analisa yang ditampilkan.
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan Berdasarkan pembahasan aplikasi sistem pakar sebagai program bantu untuk perbaikan hasil proses plating pada line Nickel chrome Plating, maka dapat diambil kesimpulan yaitu : 1.
Dengan dibuatnya aplikasi bantu ini dapat memudahkan operator dalam menangani setiap kerusakan yang ada sesuai prosedur teknisnya, dalam waktu yang relatif singkat tanpa harus melihat atau pun mencari analisa dan solusi kerusakan pada manual book.
2.
Dengan adanya aplikasi bantu ini dapat meringankan tugas ahli plater dalam melakukan perbaikan hasil proses plating, serta dalam penanganan kerusakan pun dapat lebih terfokus dan cepat.
5.2 Saran Saran yang dapat penulis berikan untuk pengembangan aplikasi bantu untuk perbaikan hasil proses plating pada Line Nickel Chrome adalah : 1.
Hendaknya aplikasi bantu yang dibuat atau dikembangkan selanjutnya merupakan aplikasi terdistribusi atau multiuser.
2.
Aplikasi bantu dapat dikembangkan menjadi aplikasi yang dapat menerima input atau masukan dari operator tentang kerusakan yang terjadi berupa teks.
87
DAFTAR PUSTAKA
1. Marlon Leong, Pengembangan Sistem Pakar Menggunakan Visual Basic, Andi Offset, Yogyakarta, 2003. 2. M. Agus J. Alam, Belajar Sendiri Pemrograman Database Lokal dan Server Menggunakan Borland Delphi 2005, PT Elex Media Komputindo, Jakarta, 2005. 3. Didik Dwi Prasetyo, Aplikasi Database Client/Server Menggunakan Delphi dan MySQL, PT Elex Media Komputindo, Jakarta, 2004. 4. Uus Musalini, Membangun Aplikasi Supercantik dan Full Animasi dengan
Delphi, PT Elex Media Komputindo, Jakarta, 2004. 5. Manual Book for Nickel Chrome Plating, Athotech, 1998
Lampiran 1. Form Login
Listing Program : unit Utama; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBTables; type TFRM_Utama = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; UserType: TComboBox; UserName: TEdit; Password: TEdit; Button1: TButton; Button2: TButton; Btn_Penelusuran: TButton; Btn_Database: TButton; Btn_Aturan: TButton; Btn_Penjelas: TButton; Btn_Account: TButton; procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Btn_DatabaseClick(Sender: TObject); procedure Btn_AturanClick(Sender: TObject); procedure Btn_PenelusuranClick(Sender: TObject); procedure Btn_PenjelasClick(Sender: TObject); procedure Btn_AccountClick(Sender: TObject); procedure UserTypeChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button1Click(Sender: TObject); private
a
{ Private declarations } public { Public declarations } end; var FRM_Utama: TFRM_Utama; DirData:string; implementation uses DataBase, Aturan, Penelusuran, Penjelas, Account, Data_Module; {$R *.dfm} procedure TFRM_Utama.Button2Click(Sender: TObject); begin close end; procedure TFRM_Utama.FormCreate(Sender: TObject); begin Getdir(0,dirdata); UserName.Text:=''; Password.Text:=''; end; procedure TFRM_Utama.Btn_DatabaseClick(Sender: TObject); begin FRM_DataBase.ShowModal; end; procedure TFRM_Utama.Btn_AturanClick(Sender: TObject); begin Frm_Aturan.ShowModal; end; procedure TFRM_Utama.Btn_PenelusuranClick(Sender: TObject); begin Frm_Penelusuran.ShowModal; end; procedure TFRM_Utama.Btn_PenjelasClick(Sender: TObject); begin FrmPenjelas.Showmodal; end; procedure TFRM_Utama.Btn_AccountClick(Sender: TObject); begin FrmAccount.ShowModal; end; procedure TFRM_Utama.UserTypeChange(Sender: TObject); begin UserName.Text:=''; Password.Text:=''; Password.Enabled:=(UserType.ItemIndex<>0);
b
if UserType.ItemIndex=2 then begin UserName.Text:='Admin'; end; UserName.ReadOnly:=(UserType.ItemIndex=2); end; procedure TFRM_Utama.FormShow(Sender: TObject); begin UserTypeChange(nil); end; procedure TFRM_Utama.Button1Click(Sender: TObject); var namafile : string[40]; Psw : string[30]; Logon : Boolean; i : byte; begin if Trim(UserName.Text)<>'' then begin if Button1.Caption='LOGIN' then begin Logon:=false; namafile:='User.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TbAccount do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='UserName'; Active:=True; end; Psw:=''; if DM.TbAccount.FindKey([UserName.Text]) then begin with DM.DSAccount.DataSet do begin for i:=1 to length(fields[1].AsString) do Psw:=Psw+chr(ord(fields[1].AsString[i]) XOR 27); end; if Password.Text=psw then logon:=true; end; DM.TbAccount.Active:=false; end; case UserType.ItemIndex of 0:begin Logon:=true; Btn_Penjelas.Enabled:=true; Btn_Penelusuran.Enabled:=true; end;
c
1:if Logon then begin Btn_Penjelas.Enabled:=true; Btn_Database.Enabled:=true; Btn_Aturan.Enabled:=true; end; 2:if Logon then begin Btn_Account.Enabled:=true; end; end; if Logon then begin UserType.Enabled:=false; UserName.Enabled:=false; Password.Enabled:=false; Button1.Caption:='LOGOUT'; end else begin messagedlg('Nama pemakai atau password salah !'+#13+'Perhatikan penggunaan huruf besar/kecil !',mtError,[mbOk],0) end; end else begin Button1.Caption:='LOGIN'; Btn_Penjelas.Enabled:=false; Btn_Penelusuran.Enabled:=false; Btn_Database.Enabled:=false; Btn_Aturan.Enabled:=false; Btn_Account.Enabled:=false; UserType.Enabled:=true; UserName.Enabled:=true; UserTypeChange(nil); end; end else begin messagedlg('Nama pemakai belum diisi !',mtError,[mbOk],0) end; end; end.
2. Penelusuran
d
Listing Program : unit Penelusuran; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBTables; type TFrm_Penelusuran = class(TForm) Label1: TLabel; Kerusakan: TComboBox; Analisa: TComboBox; Label2: TLabel; Label3: TLabel; Solusi: TMemo; Button2: TButton; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button2Click(Sender: TObject); procedure KerusakanChange(Sender: TObject); procedure AnalisaChange(Sender: TObject); private { Private declarations } public { Public declarations } end;
e
var Frm_Penelusuran: TFrm_Penelusuran; implementation uses Data_Module, Utama; {$R *.dfm} procedure TFrm_Penelusuran.Button1Click(Sender: TObject); begin close; end; procedure TFrm_Penelusuran.FormShow(Sender: TObject); var namafile : string[40]; begin namafile:='Solusi.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Solusi do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; namafile:='Kerusakan.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Kerusakan do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; namafile:='Analisa.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Analisa do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox;
f
IndexFieldNames:='Kode'; Active:=True; end; end; DM.TB_Kerusakan.First; while not DM.TB_Kerusakan.Eof do begin with DM.DS_Kerusakan.DataSet do begin Kerusakan.Items.Add(Fields[0].AsString+''+Fields[1].AsString); end; DM.TB_Kerusakan.Next; end; Kerusakan.ItemIndex:=0; KerusakanChange(nil); end; procedure TFrm_Penelusuran.Button2Click(Sender: TObject); begin Solusi.Text:=''; if DM.TB_Analisa.Active then begin if DM.TB_Analisa.FindKey([copy(Analisa.Text,1,3)]) then begin if DM.TB_Solusi.Active then begin if DM.TB_Solusi.FindKey([DM.DS_Analisa.DataSet.Fields[2].AsString]) then begin Solusi.Text:=DM.DS_Solusi.DataSet.Fields[1].AsString; end; end; end; end; end; procedure TFrm_Penelusuran.KerusakanChange(Sender: TObject); var kd : string[100]; begin Solusi.Text:=''; kd:=''; if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.FindKey([copy(Kerusakan.Text,1,3)]) then begin kd:=DM.DS_Kerusakan.DataSet.Fields[2].AsString; end; end; Analisa.Clear; if DM.TB_Analisa.Active then
g
begin DM.TB_Analisa.First; while not DM.TB_Analisa.Eof do begin with DM.DS_Analisa.DataSet do begin if pos(Fields[0].AsString,kd)>0 then Analisa.Items.Add(Fields[0].AsString+'-'+Fields[1].AsString); end; DM.TB_Analisa.Next; end; end; Analisa.ItemIndex:=0; end; procedure TFrm_Penelusuran.AnalisaChange(Sender: TObject); begin Solusi.Text:=''; end; end.
3. Database
h
Listing Program : unit DataBase; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Grids, DBGrids, DB, DBTables, Menus; type TFRM_DataBase = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Button1: TButton; DBGrid1: TDBGrid; Kerusakan: TEdit; Button2: TButton; DBGrid2: TDBGrid; Analisa: TEdit; Button3: TButton; PopupMenu1: TPopupMenu; Delete1: TMenuItem; Edit1: TMenuItem; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Delete1Click(Sender: TObject); procedure Edit1Click(Sender: TObject); procedure KerusakanChange(Sender: TObject); procedure AnalisaChange(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FRM_DataBase: TFRM_DataBase; implementation uses Data_Module, Utama; {$R *.dfm} procedure TFRM_DataBase.Button1Click(Sender: TObject); begin close; end; procedure TFRM_DataBase.FormShow(Sender: TObject);
i
var NewTable : TTable; namafile : string[40]; begin namafile:='Kerusakan.db'; if not fileexists(DirData+'\'+namafile) then begin NewTable:=Nil; Newtable:=TTable.Create(NewTable); With NewTable do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; with FieldDefs do begin Clear; Add('Kode',ftString,3,true); Add('Kerusakan',ftString,30,False); Add('KodeAnalisa',ftString,100,False); end; Indexdefs.Add('PrimaryIndex','Kode',[ixPrimary,ixUnique]); CreateTable; end; end; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Kerusakan do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; namafile:='Analisa.db'; if not fileexists(DirData+'\'+namafile) then begin NewTable:=Nil; Newtable:=TTable.Create(NewTable); With NewTable do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; with FieldDefs do begin Clear; Add('Kode',ftString,3,true); Add('Analisa',ftString,30,False);
j
Add('KodeSolusi',ftString,3,False); end; Indexdefs.Add('PrimaryIndex','Kode',[ixPrimary,ixUnique]); CreateTable; end; end; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Analisa do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; end; procedure TFRM_DataBase.Button2Click(Sender: TObject); var Kd : string[3]; begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin DM.TB_Kerusakan.Last; Kd:=DM.DS_Kerusakan.DataSet.Fields[0].AsString; Kd:=IntToStr(StrToInt(Kd)+1); Kd:=copy('000',1,3-length(Kd))+Kd; end else begin Kd:='001'; end; DM.TB_Kerusakan.Append; with DM.DS_Kerusakan.DataSet do begin Fields[0].AsString:=Kd; Fields[1].AsString:=Kerusakan.Text; Fields[2].AsString:=''; end; DM.TB_Kerusakan.Post; DM.TB_Kerusakan.FlushBuffers; Kerusakan.Text:=''; end; end; procedure TFRM_DataBase.Button3Click(Sender: TObject); var Kd : string[3];
k
begin if DM.TB_Analisa.Active then begin if DM.TB_Analisa.RecordCount>0 then begin DM.TB_Analisa.Last; Kd:=DM.DS_Analisa.DataSet.Fields[0].AsString; Kd:=IntToStr(StrToInt(Kd)+1); Kd:=copy('000',1,3-length(Kd))+Kd; end else begin Kd:='001'; end; DM.TB_Analisa.Append; with DM.DS_Analisa.DataSet do begin Fields[0].AsString:=Kd; Fields[1].AsString:=Analisa.Text; Fields[2].AsString:=''; end; DM.TB_Analisa.Post; DM.TB_Analisa.FlushBuffers; Analisa.Text:=''; end; end; procedure TFRM_DataBase.Delete1Click(Sender: TObject); begin Case pagecontrol1.TabIndex of 0:begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin DM.TB_Kerusakan.Delete; end; end; end; 1:begin if DM.TB_Analisa.Active then begin if DM.TB_Analisa.RecordCount>0 then begin DM.TB_Analisa.Delete; end; end; end; end; end; procedure TFRM_DataBase.Edit1Click(Sender: TObject); var sp : string;
l
begin case PageControl1.TabIndex of 0:begin if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.RecordCount>0 then begin sp:=DM.DS_Kerusakan.DataSet.Fields[1].AsString; sp:= InputBox('Edit Kerusakan','Kerusakan',sp); if sp<>DM.DS_Kerusakan.DataSet.Fields[1].AsString then begin DM.TB_Kerusakan.Edit; with DM.DS_Kerusakan.DataSet do begin Fields[1].AsString:=sp; end; DM.TB_Kerusakan.Post; DM.TB_Kerusakan.FlushBuffers; end; end; end; end; 1:begin if DM.TB_Analisa.Active then begin if DM.TB_Analisa.RecordCount>0 then begin sp:=DM.DS_Analisa.DataSet.Fields[1].AsString; sp:= InputBox('Edit Spare Part','Spare Part',sp); if sp<>DM.DS_Analisa.DataSet.Fields[1].AsString then begin DM.TB_Analisa.Edit; with DM.DS_Analisa.DataSet do begin Fields[1].AsString:=sp; end; DM.TB_Analisa.Post; DM.TB_Analisa.FlushBuffers; end; end; end; end; end; end; procedure TFRM_DataBase.KerusakanChange(Sender: TObject); begin button2.Enabled:=(Kerusakan.Text<>''); end; procedure TFRM_DataBase.AnalisaChange(Sender: TObject); begin button3.Enabled:=(Analisa.Text<>''); end; procedure TFRM_DataBase.FormCreate(Sender: TObject);
m
begin Analisa.Text:=''; Kerusakan.Text:=''; end; end.
4. Basis Aturan
Listing Program : unit Aturan; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, CheckLst, DB, DBTables; type TFrm_Aturan = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; Button2: TButton; TabSheet2: TTabSheet; Button1: TButton; Label1: TLabel; Label2: TLabel; Kerusakan: TComboBox; Analisa: TComboBox;
n
Solusi: TMemo; Label3: TLabel; Label4: TLabel; Analisa_Rsk: TComboBox; AnalisaPenyebab: TCheckListBox; Button3: TButton; Label5: TLabel; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button2Click(Sender: TObject); procedure KerusakanChange(Sender: TObject); procedure Analisa_RskChange(Sender: TObject); procedure Button3Click(Sender: TObject); procedure AnalisaChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var Frm_Aturan: TFrm_Aturan; implementation uses Data_Module, Utama; {$R *.dfm} procedure TFrm_Aturan.Button1Click(Sender: TObject); begin close; end; procedure TFrm_Aturan.FormShow(Sender: TObject); var NewTable : TTable; namafile : string[40]; begin namafile:='Solusi.db'; if not fileexists(DirData+'\'+namafile) then begin NewTable:=Nil; Newtable:=TTable.Create(NewTable); With NewTable do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; with FieldDefs do begin Clear; Add('Kode',ftString,3,true); Add('Solusi',ftmemo,400,False); end;
o
Indexdefs.Add('PrimaryIndex','Kode',[ixPrimary,ixUnique]); CreateTable; end; end; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Solusi do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; namafile:='Kerusakan.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Kerusakan do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; namafile:='Analisa.db'; if fileexists(DirData+'\'+namafile) then begin With DM.TB_Analisa do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='Kode'; Active:=True; end; end; Kerusakan.Items.Clear; Analisa_rsk.Items.Clear; DM.TB_Kerusakan.First; while not DM.TB_Kerusakan.Eof do begin with DM.DS_Kerusakan.DataSet do begin Kerusakan.Items.Add(Fields[0].AsString+'-'+Fields[1].AsString); Analisa_Rsk.Items.Add(Fields[0].AsString+'-'+Fields[1].AsString); end; DM.TB_Kerusakan.Next;
p
end; Kerusakan.ItemIndex:=0; Analisa_Rsk.ItemIndex:=0; KerusakanChange(nil); Analisa_RskChange(nil); end; procedure TFrm_Aturan.Button2Click(Sender: TObject); var Kd : string[3]; begin if DM.TB_Solusi.Active and DM.TB_Analisa.Active then begin if DM.TB_Analisa.FindKey([copy(Analisa.Text,1,3)]) then begin if DM.TB_Solusi.RecordCount>0 then begin DM.TB_Solusi.Last; Kd:=DM.DS_Solusi.DataSet.Fields[0].AsString; Kd:=IntToStr(StrToInt(Kd)+1); Kd:=copy('000',1,3-length(Kd))+Kd; end else begin Kd:='001'; end; DM.TB_Solusi.Append; with DM.DS_Solusi.DataSet do begin Fields[0].AsString:=Kd; Fields[1].AsString:=Solusi.Text; end; DM.TB_Solusi.Post; DM.TB_Solusi.FlushBuffers; DM.TB_Analisa.Edit; DM.DS_Analisa.DataSet.Fields[2].AsString:=Kd; DM.TB_Analisa.Post; DM.TB_Analisa.FlushBuffers; end else begin messagedlg('Kode Analisa '+copy(Analisa.Text,1,3)+' tidak ditemukan !',mtError,[mbOk],0); end; end else begin messagedlg('Tidak dapat membuka table Analisa atau Solusi !',mtError,[mbOk],0); end; end; procedure TFrm_Aturan.KerusakanChange(Sender: TObject);
q
var kd : string[100]; begin kd:=''; if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.FindKey([copy(Kerusakan.Text,1,3)]) then begin kd:=DM.DS_Kerusakan.DataSet.Fields[2].AsString; end; end; Analisa.Clear; if DM.TB_Analisa.Active then begin DM.TB_Analisa.First; while not DM.TB_Analisa.Eof do begin with DM.DS_Analisa.DataSet do begin if pos(Fields[0].AsString,kd)>0 then Analisa.Items.Add(Fields[0].AsString+'-'+Fields[1].AsString); end; DM.TB_Analisa.Next; end; end; Analisa.ItemIndex:=0; AnalisaChange(nil); end; procedure TFrm_Aturan.Analisa_RskChange(Sender: TObject); var kd : string[100]; begin kd:=''; if DM.TB_Kerusakan.Active then begin if DM.TB_Kerusakan.FindKey([copy(Analisa_Rsk.Text,1,3)]) then begin kd:=DM.DS_Kerusakan.DataSet.Fields[2].AsString; end; end; AnalisaPenyebab.Clear; if DM.TB_Analisa.Active then begin DM.TB_Analisa.First; while not DM.TB_Analisa.Eof do begin with DM.DS_Analisa.DataSet do begin AnalisaPenyebab.Items.Add(Fields[0].AsString+''+Fields[1].AsString);
r
if pos(Fields[0].AsString,kd)>0 then AnalisaPenyebab.Checked[AnalisaPenyebab.Items.Count-1]:=true; end; DM.TB_Analisa.Next; end; end; end; procedure TFrm_Aturan.Button3Click(Sender: TObject); var i : byte; kd : string[100]; begin if DM.Tb_Kerusakan.Active then begin if DM.Tb_Kerusakan.FindKey([copy(Analisa_Rsk.Text,1,3)]) then begin kd:=''; for i:=0 to (AnalisaPenyebab.Items.Count-1) do begin if AnalisaPenyebab.Checked[i] then begin kd:=kd+copy(AnalisaPenyebab.Items.Strings[i],1,3)+';'; end; end; DM.Tb_Kerusakan.Edit; DM.DS_Kerusakan.DataSet.Fields[2].AsString:=kd; DM.Tb_Kerusakan.Post; DM.Tb_Kerusakan.FlushBuffers; end else begin messagedlg('Kode kerusakan '+copy(Analisa_Rsk.Text,1,3)+' tidak ditemukan !',mtError,[mbOk],0); end; end else begin messagedlg('Tidak dapat membuka table kerusakan !',mtError,[mbOk],0); end; end; procedure TFrm_Aturan.AnalisaChange(Sender: TObject); begin Solusi.Text:=''; if DM.TB_Analisa.Active then begin if DM.TB_Analisa.FindKey([copy(Analisa.Text,1,3)]) then begin if DM.TB_Solusi.Active then begin if DM.TB_Solusi.FindKey([DM.DS_Analisa.DataSet.Fields[2].AsString]) then begin
s
Solusi.Text:=DM.DS_Solusi.DataSet.Fields[1].AsString; end; end; end; end; end; end.
5. Sistem Penjelas
Listing Program : unit Penjelas; interface uses
t
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFrmPenjelas = class(TForm) Memo1: TMemo; Button1: TButton; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Memo1Change(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPenjelas: TFrmPenjelas; implementation uses Utama; {$R *.dfm} procedure TFrmPenjelas.Button1Click(Sender: TObject); begin close; end; procedure TFrmPenjelas.FormShow(Sender: TObject); var namafile : string[30]; begin Button2.Enabled:=false; namafile:='penjelas.txt'; if fileexists(DirData+'\'+namafile) then begin OpenDialog1.FileName:=DirData+'\'+namafile; Memo1.Lines.LoadFromFile(OpenDialog1.FileName); Memo1.SelStart := 0; end; end; procedure TFrmPenjelas.Button2Click(Sender: TObject); var namafile : string[30];
u
begin namafile:='penjelas.txt'; SaveDialog1.FileName:=DirData+'\'+namafile; Memo1.Lines.SaveToFile(SaveDialog1.FileName); Button2.Enabled:=false; end; procedure TFrmPenjelas.FormActivate(Sender: TObject); begin FormResize(FrmPenjelas); memo1.SetFocus; Memo1.SelStart := 0; end; procedure TFrmPenjelas.FormResize(Sender: TObject); begin Button1.Top:=height-(2*button1.Height)-30; button2.Top:=button1.Top; Memo1.Width:=width-20; Memo1.Height:=button1.Top-20; if FRM_Utama.UserType.ItemIndex=0 then begin Button1.Left:=(width-button1.Width) div 2; end else begin Button1.Left:=(width div 2)+10; Button2.Left:=((width div 2) - button2.Width)-10; end; end; procedure TFrmPenjelas.FormCreate(Sender: TObject); begin Height:=431; width:=480; Memo1.Text:=''; end; procedure TFrmPenjelas.Memo1Change(Sender: TObject); begin Button2.Enabled:=true; end; end.
6. Account
v
Listing Program : unit Account; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, DB, DBTables; type TFrmAccount = class(TForm) Label1: TLabel; Label2: TLabel; UserName: TEdit; Password: TEdit; Button1: TButton; Button2: TButton; DBGrid1: TDBGrid; Button3: TButton; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure DBGrid1CellClick(Column: TColumn); procedure Button2Click(Sender: TObject);
w
procedure UserNameChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmAccount: TFrmAccount; implementation uses Data_Module, Utama; {$R *.dfm} procedure TFrmAccount.Button3Click(Sender: TObject); begin close; end; procedure TFrmAccount.Button1Click(Sender: TObject); var i : byte; Psw : string[30]; begin if DM.TbAccount.Active then begin Psw:=''; for i:=1 to length(Password.Text) do Psw:=Psw+chr(ord(Password.Text[i]) XOR 27); if not DM.TbAccount.FindKey([UserName.Text]) then begin DM.TbAccount.Append; with DM.DSAccount.DataSet do begin fields[0].AsString:=UserName.Text; fields[1].AsString:=Psw; end; DM.TbAccount.Post; DM.TbAccount.FlushBuffers; end else begin if messagedlg('Nama pemakai "'+UserName.Text+'" sudah ada !'+#13+'Apakah password diganti baru ?',mtConfirmation,[mbYes,mbNO],0)=mrYes then begin DM.TbAccount.Edit; DM.DSAccount.DataSet.fields[1].AsString:=Psw; DM.TbAccount.Post; DM.TbAccount.FlushBuffers; end; end; end; end;
x
procedure TFrmAccount.FormShow(Sender: TObject); var NewTable : TTable; namafile : string[40]; begin UserName.Text:=''; Password.Text:=''; namafile:='User.db'; if not fileexists(DirData+'\'+namafile) then begin NewTable:=Nil; Newtable:=TTable.Create(NewTable); With NewTable do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; with FieldDefs do begin Clear; Add('UserName',ftString,30,true); Add('Password',ftString,30,False); end; Indexdefs.Add('PrimaryIndex','UserName',[ixPrimary,ixUnique]); CreateTable; end; end; if fileexists(DirData+'\'+namafile) then begin With DM.TbAccount do begin Active:=false; DataBaseName:=''; TableName:=DirData+'\'+namafile; TableType:=ttParadox; IndexFieldNames:='UserName'; Active:=True; end; end; end; procedure TFrmAccount.FormClose(Sender: TObject; var Action: TCloseAction); begin DM.TbAccount.Active:=false; end; procedure TFrmAccount.DBGrid1CellClick(Column: TColumn); var i : byte; Psw : string[30]; begin
y
if DM.TbAccount.Active then begin with DM.DSAccount.DataSet do begin UserName.Text:=fields[0].AsString; Psw:=''; for i:=1 to length(fields[1].AsString) do Psw:=Psw+chr(ord(fields[1].AsString[i]) XOR 27); Password.Text:=Psw; end; end; end; procedure TFrmAccount.Button2Click(Sender: TObject); begin if DM.TbAccount.Active then begin if UserName.Text='Admin' then begin messagedlg('Nama pemakai "Admin" tidak boleh dihapus !',mtError,[mbOk],0); end else begin if DM.TbAccount.FindKey([UserName.Text]) then begin if messagedlg('Apakah nama pemakai "'+UserName.Text+'" dihapus ?',mtConfirmation,[mbYes,mbNO],0)=mrYes then begin DM.TbAccount.Delete; end; end else begin messagedlg('Nama pemakai "'+UserName.Text+'" tidak ada !',mtError,[mbOk],0); end; end; end; end; procedure TFrmAccount.UserNameChange(Sender: TObject); begin Button1.Enabled:=UserName.Text<>''; Button2.Enabled:=UserName.Text<>''; end; end.
z