Laporan Praktik Industri U N Y [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

HALAMAN SAMPUL LAPORAN PRAKTIK INDUSTRI APLIKASI MOBILE SISTEM INFORMASI PENCARIAN TENTOR BIMBINGAN BELAJAR (BIMBELKU) BERBASIS VISUAL STUDIO 2013 DI PT. AIR MEDIA PERSADA YOGYAKARTA Jl. Magelang Km. 4,6 Yogyakarta



DISUSUN OLEH: AZHIM ROSYED IBRAHIM NIM. 13520241005 PROGRAM STUDI PENDIDIKAN TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA 2015



1



LEMBAR PENGESAHAN LAPORAN PRAKTIK INDUSTRI Aplikasi Mobile Sistem Informasi Pencarian Tentor Bimbingan Belajar (BIMBELku) Berbasis Visual Studio 2013 di PT. Air Media Persada Yogyakarta Azhim Rosyed Ibrahim 13520241005 Laporan ini Disusun Guna Memenuhi Salah Satu Persyaratan Menempuh Mata Kuliah Praktik Industri Program Studi Pendidikan Teknik Informatika Fakultas Teknik UNY Menyetujui/ Mengesahkan: Pembimbing Industri,



Dosen Pembimbing,



Gasta Kanda Pratama



Dr. Ratna Wardani, S.Si., M.T. NIP. 19701218 200501 2 001



Wakil Dekan I Fakultas Teknik



Koordinator PI Jurusan,



Universitas Negeri Yogyakarta,



Dr. Sunaryo Soenarto



Dessy Irmawati, M.T



NIP. 19580630 198601 1 001



NIP. 19791214 201012 2 002



2



KATA PENGANTAR Puji syukur atas kehadirat Allah SWT yang telah melimpahkan rahmat dan hidayah-Nya sehingga penulis dapat melaksanakan kegiatan Praktik Industri di PT. Air Media Persada Yogyakarta selama dua setengah bulan dengan baik serta dapat menyelesaikan penyusunan Laporan Praktik Industri yang digunakan sebagai bentuk pertanggungjawaban untuk memenuhi salah satu persyaratan menempuh mata kuliah Praktik Industri di Program Studi Pendidikan Teknik Informatika Fakultas Teknik Universitas Negeri Yogyakarta. Penulis menyadari bahwa Laporan Praktik Industri ini dapat tersusun karena bimbingan, pengarahan dan bantuan dari berbagai pihak. Maka dari itu penulis mengucapkan terima kasih kepada: 1. Bapak Dr. Bruri Triyono, selaku Dekan Fakultas Teknik Universitas Negeri Yogyakarta. 2. Bapak Dr. Sunaryo Soenarto, selaku Wakil Dekan I Fakultas Teknik UNY. 3. Bapak Putut Hargiyanto, M.Pd., selaku koordinator Praktik Industri Fakultas Teknik UNY. 4. Ibu Dessy Irmawati, M.T., selaku koordinator Praktik Industri Fakultas Teknik UNY. 5. Ibu Dr. Ratna Wardani, S.Si., M.T. selaku Dosen Pembimbing Praktik Industri. 6. Bapak Sri Bagus Respati Nugroho, M.T. selaku Direktur PT. Air Media Persada Yogyakarta. 7. Gasta Kanda Pratama selaku Pembimbing Industri di PT. Air Media Persada Yogyakarta. 8. Ayah, Ibu, keluarga, dan semua orang yang telah memberikan semangat dan motivasi untuk selalu belajar dan bekerja keras. 9. Adi Kurniawan, Ajeng Restu Putri, Angga Tri Cahyo Prasetyo, Deni Kurnianto Nugroho, Fahmi Tyastomo, Muh Hadi Abdul Aziz, dan Tri Wahyuni selaku rekan Praktik Industri di PT. Air Media Persada. 10. Semua pihak yang telah membantu dalam penyelesaian laporan selama melaksanakan Praktik Industri di PT. Air Media Persada Yogyakarta yang tidak dapat penulis sebutkan satu persatu.



3



Penulis menyadari bahwa Laporan Praktik Industri ini masih jauh dari kesempurnaan mengingat keterbatasan ilmu, pengalaman serta waktu. Penulis mengharapkan saran dan kritik yang membangun guna menyempurnakan laporan Praktik Industri ini sehingga dapat memberikan manfaat untuk semua pihak.



Yogyakarta, 24 Oktober 2015



Penulis



4



DAFTAR ISI Halaman HALAMAN SAMPUL............................................................................................i LEMBAR PENGESAHAN...................................................................................ii KATA PENGANTAR............................................................................................iii DAFTAR ISI...........................................................................................................v DAFTAR GAMBAR.............................................................................................vi DAFTAR LAMPIRAN........................................................................................vii BAB I PENDAHULUAN.......................................................................................1 A. Latar Belakang..................................................................................................1 B. Tujuan Praktik Industri.....................................................................................2 C. Manfaat Praktik Industri...................................................................................3 BAB II PROFIL INDUSTRI.................................................................................4 A. Manajemen Industri..........................................................................................4 B. Jenis Pekerjaan yang Sesuai dengan Bidang Gerak Industri............................7 C. Proses Produksi.................................................................................................8 D. Peralatan dan Bahan yang Diperlukan untuk Mewujudkan Produk yang Diharapkan........................................................................................................8 BAB III KEGIATAN KEAHLIAN.....................................................................10 A. Kegiatan Mahasiswa Praktik di Industri.........................................................10 B. Tugas Khusus..................................................................................................10 C. Pembahasan Hasil Pengamatan.......................................................................11 BAB IV KESIMPULAN DAN SARAN.............................................................39 A. Kesimpulan.....................................................................................................39 B. Saran...............................................................................................................40 DAFTAR PUSTAKA...........................................................................................42



5



DAFTAR GAMBAR Gambar 1. Logo PT. Air Media Persada..................................................................4 Gambar 2. Bagan Struktur Organisasi PT. Air Media Persada................................5 Gambar 3. Logo BIMBELku.................................................................................11 Gambar 4. Logo Visual Studio...............................................................................11 Gambar 5. Logo JSON...........................................................................................13



6



DAFTAR LAMPIRAN Lampiran 1. Piagam Lulus Pembekalan Praktik Industri Lampiran 2. Surat Tugas dari Dekan Lampiran 3. Jadwal Rencana Kegiatan Praktik Industri Lampiran 4. Catatan Kegiatan Harian Praktik Industri Lampiran 5. Matriks Program Kegiatan Praktik Industri Lampiran 6. Kesan dan Rekomendasi Industri Lampiran 7. Ucapan Terima Kasih dari Fakultas kepada Industri Lampiran 8. Kartu Bimbingan Praktik Industri



7



BAB I PENDAHULUAN



A. Latar Belakang 1. Alasan Pemilihan Tempat Praktik Industri PT. Air Media Persada atau lebih dikenal dengan AirMedia adalah Perusahaan Software di Indonesia dengan Badan Hukum (Perseroan Terbatas) yang mengembangkan Sistem Informasi (SI) berbasis Web. Layanan AirMedia secara umum meliputi Layanan Jasa Teknologi Informasi - Perancangan Software Sistem Informasi berbasis Web (Web based Information Systems). Beberapa produk dan layanan mereka, meliputi: perancangan Sistem Informasi Akademik, Perpustakaan, Kepegawaian, Keuangan, Pengelolaan Aset, Portal Web/ Web Design, Pengadaan Hardware, Networking/ Jaringan serta Pelatihan di bidang Teknologi Informasi. Saat ini, SI Akademik menjadi salah satu Software utama dan terbaik dari AirMedia. Mulai dari tahun 2004, AirMedia telah berpengalaman menangani berbagai macam segmen klien dari seluruh Indonesia, mulai dari instansi



pemerintah



daerah,



Institusi



Pendidikan



(Perguruan



Tinggi/Sekolah), Perusahaan BUMN dan Swasta sampai dengan Organisasi Nirlaba dan Personal. AirMedia berusaha memberikan solusi dan produk secara optimal, agar teknologi yang mereka berikan dapat tepat guna dan bermanfaat bagi



user/



pengguna.



Sebagai



Perusahaan



Software



yang



berpengalaman, AirMedia bukan hanya berfokus pada tahap awal implementasi, layanan yang mereka berikan juga mencakup pelatihan, pendampingan dan sosialisasi terkait dengan teknologi/ software yang diterapkan. Tenaga-tenaga pelaksana di AirMedia terdiri dari tenagatenaga pengajar di Universitas terkemuka di Indonesia dan juga praktisi-praktisi profesional yang telah berpengalaman di bidangnya, serta



1



2 didukung oleh tenaga teknis yang berasal dari mahasiswa-mahasiswa lulusan terbaik dari universitas terkemuka di kota Yogyakarta. Komitmen dalam industri Teknologi Informasi khususnya pada Software SI berbasis Web yang digeluti PT. Air Media Persada dirasa berkaitan dengan tujuan praktik industri sehingga sangat tepat dijadikan mitra dan tempat menambah ilmu pengetahuan dan pengalaman kerja di lapangan. Dengan pertimbangan tersebut, PT. Air Media Persada menjadi pilihan penulis sebagai mitra untuk melaksanakan praktik industri. 2. Alasan Pemilihan Bidang yang Dipelajari Dalam pelaksanaan praktik industri penulis memilih bidang Software SI berbasis Web Service yang juga merupakan fokus bisnis dari PT. Air Media Persada. Bidang ini erat kaitannya dengan Program Studi yang ditempuh oleh penulis yaitu Pendidikan Teknik Informatika. Dengan mempelajari bidang Software SI berbasis Web Service dan juga Mobile, penulis bisa menyiapkan diri untuk mampu bersaing dan mendapatkan ilmu sesuai kompetensi yang dibutuhkan industri saat ini. B. Tujuan Praktik Industri Setelah menempuh praktik industri di PT. Air Media Persada, secara khusus tujuan praktik industri adalah sebagai berikut: 1. Memperoleh pengetahuan tentang manajemen perusahaan terutama mengenai struktur organisasi, data-data produksi, dan deskripsi tugas staf teknik. 2. Dapat mempelajari berbagai jenis aktivitas yang dikerjakan dalam lingkungan kerja. 3. Dapat secara langsung melengkapi ilmu yang didapat pada masa kuliah di dunia kerja. 4. Dapat mempersiapkan diri untuk menghadapi lingkungan industri sehingga dapat beradaptasi sebelum memasuki dunia kerja.



3 5. Menambah pengetahuan dan pengalaman baru yang berhubungan dengan Program Studi Pendidikan Teknik Informatika, sesuai dengan Program studi yang sedang ditempuh pengusul proposal.



C. Manfaat Praktik Industri 1. Bagi Mahasiswa a. Menambah pengetahuan dan pengalaman kerja di Industri. b. Menambah gambaran dunia kerja industri dan mengetahui kebutuhan



kompetensi



industri



saat



ini



sehingga



bisa



mempersiapkan diri lebih dini. c. Mampu mengaplikasikan teori yang didapatkan selama kuliah dan menambah pengetahuan baru yang belum di dapat di perkuliahan. 2. Bagi Universitas a. Menjadi bahan masukan dan evaluasi terhadap kurikulum yang dipakai dengan kebutuhan terampil di industri. b. Meningkatkan dan menjalin kerjasama antara UNY dengan pihak industri. 3. Bagi Industri a. Terjalin kerjasama antara PT. Air Media Persada dengan Universitas Negeri Yogyakarta. b. Semakin dikenalnya PT. Air Media Persada di dunia pendidikan.



BAB II PROFIL INDUSTRI



A. Manajemen Industri 1. Profil Perusahaan Nama Perusahaan Alamat Perusahaan



: PT. Air Media Persada : Ruko Permai Magelang No.8 Lantai 2 dan 3, Jalan Magelang Km. 4,6 Yogyakarta : Perancangan



Bidang Usaha Utama



SI



Perpustakaan,



Akademik, Kepegawaian,



Keuangan, Pengelolaan Aset, Portal Web/



Web



Design,



Pengadaan



Hardware, Networking/ Jaringan serta Pelatihan



di



bidang



Teknologi



Informasi. : www.airmediapersada.com



Website 2. Logo Perusahaan



Gambar 1. Logo PT. Air Media Persada 3. Visi PT. Air Media Persada bertekad untuk menjadi sebuah Perusahaan Software dan Layanan Teknologi Informasi, dengan Kualifikasi dan Kompetensi Internasional, serta berorientasi Bisnis secara Profesional.



4



5 4. Misi a. Mengembangkan



Industri



Teknologi



Informasi



dengan



orientasi



memasyarakatkan Penggunaan Teknologi Informasi, serta berorientasi Bisnis dan Pelayanan yang Profesional. b. Mengakomodasikan Potensi Sumber Daya Manusia dan mengembangkan Peluang Bisnis dalam bidang Teknologi Informasi yang ada. c. Memberikan Kontribusi bagi Perkembangan dan Kemajuan Teknologi Informasi. 5. Manajemen Perusahaan 6. Garis instruksi dan koordinasi yang digunakan oleh PT. Air Media Persada adalah sebagai berikut: 7.



6 8.



Sri Bagus Respati Nugroho, M.T. Direktur



Ifwan Chaniago, S.T. Marketing and Support



Muhammad Irfan Ashshidiq, M.Kom.



Novareza Khifartha, S.T. Muhammad Irfan Ashshidiq, M.Kom. Aries Kadarisman, S.T. Gasta Kanda Pratama



Andri Kusuma Budi, S.T. Finance and Accounting



Sri Bagus Respati Nugroho, M.T.



Wara Payrall



HRD



Developer



Project Manager 9. Gambar 2. Bagan Struktur Organisasi PT. Air Media Persada 10. 11.



Berdasarkan pada gambar 2, garis instruksi atau garis



vertikal bermakna bahwa bagan yang berada di atas memiliki fungsi memberikan instruksi kepada bagan yang ada di bawahnya. Sedangkan bagan yang sejajar (horizontal) memiliki fungsi garis koordinasi, yaitu saling berkoordinasi untuk melaksanakan proyek dalam industri tersebut.



7 12.



Sesuai dengan bagan struktur organisasi di atas, PT. Air



Media Persada memiliki pimpinan perusahaan yang disebut sebagai Direktur, yang memiliki pangkal garis instruksi tertinggi. Setelahnya, ada lima bagian yang dibawahi oleh Direktur secara langsung, yaitu Marketing and Support, Developer, FinandACC, HRD, Payroll. Kemudian bidang Marketing and Support membawahi satu bidang a.



yaitu Project Manager. Berikut penjelasannya: Direktur 13. Tugas Direktur diantaranya adalah menentukan kebijakan tertinggi perusahaan, bertanggung jawab terhadap keuntungan dan kerugian perusahaan, mengangkat dan memberhentikan karyawan perusahaan, bertanggung jawab dalam memimpin dan membina perusahaan secara efektif dan efisien, mewakili



perusahaan, mengadakan perjanjian-perjanjian. b. Marketing and Support 14. Mendukung kelancaran tugas marketing memenuhi



kebutuhan



marketing



perusahaan,



perusahaan, membantu



marketing perusahaan, melaporkan hal-hal yang berhubungan dengan marketing. Developer 15. Membuat SI yang dipesan kepada perusahaan. d. Fin and ACC (Finance and Accounting) 16. Finance fokus pada usaha mencari dana (uang), mengelola, c.



mengalokasikan dan melakukan pembayaran/ transaksi. Secara sederhana semua proses menerima dan mengeluarkan uang merupakan job description dari bagian finance atau keuangan. Karena Fin and ACC digabungkan menjadi satu, maka secara spesifik bagian Accounting bertugas mencatat dan melakukan ikhtisar dan pengelompokkan transaksi-transaksi tersebut, dan e.



melakukan analisis keuangan dan kegiatan administrasi lain. HRD 17. Bertanggung jawab di dalam pengelolaan dan pengembangan



sumber



daya



manusia,



yaitu



dalam



hal



perencanaan, pelaksanaan dan pengawasan kegiatan sumber daya



8 manusia,



termasuk



pengembangan



kualitasnya



dengan



berpedoman pada kebijaksanaan dan prosedur yang berlaku di perusahaan. Bertanggung jawab terhadap hal-hal yang berkaitan dengan kegiatan-kegiatan pembinaan government and industrial serta mempunyai memelihara dan menjaga citra perusahaan. 18. A Jenis Pekerjaan yang Sesuai dengan Bidang Gerak Industri 19.



Jika dilihat dari produk-produk dan bidang gerak produksi,



maka jenis pekerjaan yang sesuai adalah: 1. Software Developer 20.Software Developer adalah tenaga/ praktisi pengembangan perangkat lunak, perangkat lunak yang dimaksud di sini adalah SI. Di bagian Software Developer inilah dibuka kesempatan bagi lulusan/ sarjana ilmu komputer/ informatika untuk bekerja di bidang pemrograman/ pengembangan perangkat lunak. Maka di sinilah peluang besar bagi jasa para pengembang. 2. Administration Officer 21.Administration Officer mengatur segala keperluan administrasi di dalam perusahaan AirMedia sendiri, maupun keperluan administrasi yang berhubungan dengan pihak luar AirMedia. Keperluan itu dapat berupa keperluan kerjasama, keperluan pemesanan dan keperluankeperluan administratif lain. 3. Marketing 22.Pihak Marketing yang menyusun strategi pemasaran produk, lewat promosi, beriklan, sosialisasi dan strategi-strategi lainnya agar banyak klien yang tertarik menggunakan produk AirMedia. 23. D. Proses Produksi 1. Costumer memesan produk dan mendefinisikan produk tersebut. 2. Marketing menerima dan menjelaskan aturan produksi kepada costumer.



9 3. Developer menindak-lanjuti laporan dari Marketing untuk pembuatan pesanan SI dengan kesepakatan kedua belah pihak mengenai waktu pengerjaan. 24. E. Peralatan dan Bahan yang Diperlukan untuk Mewujudkan Produk yang Diharapkan 25.



Peralatan dan bahan yang sesuai untuk melaksanakan



proses produksi adalah sebagai berikut: 1. Komputer atau laptop 26.Komputer atau laptop digunakan sebagai alat utama produksi. Spesifikasi



yang



digunakan



bermacam-macam,



namun



yang



diharapkan adalah spesifikasi yang memenuhi syarat bagi softwaresoftware yang nantinya akan digunakan sebagai sarana produksi SI. Sistem operasi yang dapat digunakan adalah Windows XP SP2, Windows Vista, Windows 7, Windows 8, dan Windows 10. 2. Koneksi Internet 27.Koneksi internet dibutuhkan untuk mengumpulkan informasi yang dibutuhkan dan melakukan proses prototyping produk yang dihasilkan berupa SI. Di dalam kantor AirMedia sendiri terdapat fasilitas Wi-Fi sebagai sarana koneksi yang dapat digunakan bersama bagi karyawan AirMedia. 28. 3. XAMPP 29.Digunakan untuk pembuatan backend web service serta database sistem. 4. Notepad 30.Penggunaan software pengolah kata sebagai standar pembuatan sistem informasi. 5. CorelDRAW 31.Untuk desain user interface dari sistem yang diciptakan. 6. Web Browser 32.Untuk tes apakah tampilan, algoritma, dan seluruh sistem sudah berjalan dengan baik atau belum. 33. 34.



35. BAB III KEGIATAN KEAHLIAN



A Kegiatan Mahasiswa Praktik di Industri Kegiatan Praktik Industri dilaksanakan di PT. Air Media Persada Yogyakarta selama 2,5 bulan, dimulai dari tanggal 1 Juli 2015 sampai dengan 11 September 2015. Kegiatan Praktik Industri dilaksanakan sesuai dengan hari kerja PT. Air Media Persada, yaitu 5 hari kerja dalam 1 minggu dari hari senin sampai hari jumat. Untuk jam kerja pelaksanaan Praktik Industri dimulai dari pukul 09.00 WIB sampai 16.00 WIB pada hari biasa, dan dari pukul 09.00 WIB sampai 15.00 WIB pada bulan Ramadhan. Selama Praktik Industri, penulis diberi kesempatan untuk mengenal industri lebih baik, terutama di bidang software development. Penulis juga diberi kesempatan untuk mengenal bagian dan divisi dalam PT. Air Media Persada. F. Tugas Khusus Tugas khusus yang penulis ambil selama kegiatan Praktik Industri di PT. Air Media Persada adalah berupa proyek akhir. Proyek akhir tersebut berupa pembuatan sistem informasi pencarian tentor bimbingan belajar yang dinamai dengan BIMBELku. Proyek ini diselesaikan secara bertahap dan berkelompok. Mulai dari pembahasan dan analisis tema dengan pembimbing industri hingga tahap evaluasi. Penulis mendapatkan bagian pembuatan modul program untuk aplikasi mobile BIMBELku. Berikut merupakan langkah–langkah dalam pembuatan modul program aplikasi mobile BIMBELku: 1. Menentukan modul apa saja yang akan digunakan untuk pembuatan aplikasi. 2. Menentukan metode pengiriman data dari aplikasi ke dalam database pada server dengan web service.



10



11 3. Menentukan metode pengambilan data dari database pada server ke 4. 5. 6. 7. 8. 9.



dalam aplikasi dengan menggunakan JSON. Pembuatan modul program. Testing modul program. Testing aplikasi. Debug modul program. Finishing aplikasi mobile BIMBELku



G. Pembahasan Hasil Pengamatan 10.



BIMBELku merupakan aplikasi yang memberikan wadah



untuk mempertemukan tentor bimbingan belajar dengan murid pencari bimbingan belajar hingga dapat terjadi kesepakatan untuk melakukan proses bimbingan belajar. BIMBELku dilengkapi dengan fitur buat akun baru, pemberitahuan, profil, pencarian tentor berdasarkan nama, tingkat, dan keahlian, tentor favorit, chatting, dan kontak. 11.



12. Gambar 3. Logo BIMBELku 13. 14.



Pembuatan aplikasi dilakukan dengan menggunakan Visual



Studio 2013 dengan bahasa C# sebagai bahasa pemrogramannya. Visual Studio adalah IDE besutan Microsoft sebagai alat untuk membuat aplikasi, mulai dari desktop, mobile dan web. Bahasa C# sendiri juga merupakan bahasa yang dikembangkan oleh Microsoft.



15. 16. Gambar 4. Logo Visual Studio 17.



12 18.



Microsoft menggunakan XAML untuk tampilan dari



aplikasi yang berbasiskan bahasa C#. Extensible Application Markup Language, atau XAML (diucapkan "zammel"), adalah sebuah bahasa berbasis XML markup yang dikembangkan oleh Microsoft. XAML adalah bahasa di belakang tampilan dari sebuah aplikasi yang dikembangkan dengan Microsoft Expression Blend, seperti halnya HTML adalah bahasa di belakang tampilan dari suatu halaman Web. 19. Untuk pengiriman data ke dalam database, penulis menggunakan web client sebagai sarana pengiriman data user ke dalam web server. Web Server merupakan suatu Program Komputer yang mempunyai tanggung jawab/ tugas menerima permintaan HTTP dari komputer klien, yang dikenal dengan nama web browser/ web client, dan melayani mereka dengan menyediakan respon HTTP berupa konten data, biasanya berupa halaman web yang terdiri dari dokumen HTML, dan obyek yang terkait seperti gambar, dll. 20. Sementara untuk



mengambil



data



dan



mengimplementasikan data ke dalam aplikasi, penulis menggunakan JSON sebagai penghubung pertukaran data antara data yang dikirimkan melalui PHP dengan C# sebagai penerima data. JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman JavaScript, Standar ECMA-262 Edisi ke-3 - Desember 1999. JSON merupakan format teks yang tidak bergantung pada bahasa pemprograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll. Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data.



13



21. 22.



Gambar 5. Logo JSON 23.



24.



JSON yang dikirim dari server memerlukan sebuah kelas



dari bahasa C# untuk mengkonversinya ke dalam bentuk format yang bisa ditampilkan oleh XAML. Untuk aplikasi ini kelas yang digunakan adalah sebagi berikut: 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54.



public class Profil { public string username { get; set; } public string password { get; set; } public string email { get; set; } public string status { get; set; } public string nama { get; set; } public string id { get; set; } public string jk { get; set; } public string alamat { get; set; } public string telp { get; set; } public string keahlian { get; set; } public string tingkat { get; set; } public string rating { get; set; } public string foto { get; set; } } public class Product { public string sender { get; set; } public string waktu { get; set; } public string username { get; set; } public string nama { get; set; } public string pesan { get; set; } public string status { get; set; } public string keahlian { get; set; } public string tingkat { get; set; } public string rating { get; set; } public string foto { get; set; } public string teksket { get; set; }



14 55. } 56. 57. public class RootObject 58. { 59. public List profils { get; set; } 60. public List status { get; set; } 61. public int success { get; set; } 62. public List products { get; set; } 63. public List product { get; set; }



64. } 65. 66.



BIMBELku memiliki 11 activity yang berbentuk XAML



sebagai user interface dari BIMBELku. Activity dan fungsi yang terdapat di dalamnya adalah sebagai berikut: 1. MainPage a. Login b. Pendaftaran tahap 1 2. Daftar a. Pendaftaran tahap 2 3. Home a. Pemberitahuan b. Tentor favorit c. Profil user d. Kontak e. Daftar pesan 4. Cari a. Pencarian berdasarkan nama tentor b. Pencarian berdasarkan tingkat yang diampu oleh tentor c. Pencarian berdasarkan keahlian tentor 5. Chat a. Pesan dalam bentuk percakapan dari pengguna 6. OpenProfil a. Profil tentor 7. OpenKontak a. Profil kontak 8. Persetujuan a. Profil pengirim permintaan bimbingan b. Persetujuan bimbingan 9. Help a. Bantuan dalam penggunaan aplikasi 10. About a. Tentang aplikasi dan pengembangnya 67.



15 68.



Sementara itu terdapat 27 modul yang meng-handle system



dari aplikasi BIMBELku. Modul-modul yang ada di dalam BIMBELku adalah sebagai berikut: 1. Modul cek e-mail 69. Modul ini berfungsi untuk cek e-mail yang dimasukkan ketika pendaftaran tahap pertama. E-mail yang dimasukkan akan dicek dengan database user yang ada pada server apakah sudah ada yang memakai e-mail tersebut atau tidak. 70. private void check_email(object sender, RoutedEventArgs e) 71. { 72. WebClient webClient = new WebClient(); 73. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(cekEmail); 74. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/cek_email.php?email= %22" + mail.Text + "%22")); 75. } 76. 77. void cekEmail(object sender, DownloadStringCompletedEventArgs e) 78. { 79. if (mail.Text != "") 80. { 81. try 82. { 83. if (mail.Text.Contains('@') || mail.Text.Contains('.')) 84. { 85. jsonString = e.Result.ToString(); 86. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 87. ser = new DataContractJsonSerializer(TotalList.GetType()); 88. TotalList = ser.ReadObject(ms) as RootObject; 89. var d = TotalList.success; 90. 91. if (d == 1) 92. { 93. image_mail.Source = new BitmapImage(new Uri("Assets/Other/tolak.png", UriKind.Relative)); 94. tombol_lanjut.IsEnabled = false; 95. } 96. else if (d == 0) 97. { 98. cek_email = true; 99. image_mail.Source = new BitmapImage(new Uri("Assets/Other/terima.png", UriKind.Relative)); 100. if (cek_user == true) 101. {



16 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114.



tombol_lanjut.IsEnabled = true; } } ms.Close(); } else MessageBox.Show("Cek penulisan email"); } catch (Exception err) { MessageBox.Show("Periksa koneksi internet anda"); } }



115. } 2. Modul cek username 116. Modul ini berfungsi untuk cek username yang dimasukkan ketika pendaftaran tahap pertama. Username yang dimasukkan akan dicek dengan database user yang ada pada server apakah sudah ada yang memakai username tersebut atau tidak. 117. private void check_username(object sender, RoutedEventArgs e) 118. { 119. WebClient webClient = new WebClient(); 120. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(cekUsername); 121. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_tentorbyusername.ph p?username=%22" + user.Text + "%22")); 122. } 123. void cekUsername(object sender, DownloadStringCompletedEventArgs e) 124. { 125. if (user.Text != "") 126. { 127. try 128. { 129. jsonString = e.Result.ToString(); 130. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 131. ser = new DataContractJsonSerializer(TotalList.GetType()); 132. TotalList = ser.ReadObject(ms) as RootObject; 133. var d = TotalList.success; 134. 135. if (d == 1) 136. { 137. image_username.Source = new BitmapImage(new Uri("Assets/Other/tolak.png", UriKind.Relative));



17 138. tombol_lanjut.IsEnabled = false; 139. } 140. else if (d == 0) 141. { 142. image_username.Source = new BitmapImage(new Uri("Assets/Other/terima.png", UriKind.Relative)); 143. cek_user = true; 144. if (cek_email == true) 145. { 146. tombol_lanjut.IsEnabled = true; 147. } 148. } 149. ms.Close(); 150. } 151. catch (Exception ee) 152. { 153. MessageBox.Show("Periksa koneksi internet anda"); 154. } 155. } 156. }



3. Modul pendaftaran tahap 1 157. Modul ini digunakan untuk pengecekan e-mail, username, dan password apakah sudah benar dan terisi atau belum. 158. private void lanjut(object sender, RoutedEventArgs e) 159. { 160. if (mail.Text == "") 161. { 162. MessageBox.Show("Email belum diisi!"); 163. } 164. else if (user.Text == "") 165. { 166. MessageBox.Show("Username belum diisi!"); 167. } 168. else if (pass.Password == "") 169. { 170. MessageBox.Show("Password belum diisi!"); 171. } 172. else 173. { 174. NavigationService.Navigate(new Uri("/Daftar.xaml?em=" + mail.Text + "☼" + user.Text + "☼" + pass.Password, UriKind.Relative)); 175. }



176. } 177. 178. 4. Modul pendaftaran tahap 2



18 179.



Modul ini digunakan untuk pengecekan lanjutan data user



dari pendaftaran tahap 1 apakah sudah benar dan terisi atau belum. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223.



private void daftar_Click(object sender, RoutedEventArgs e) { if (tsd.IsChecked == true) { ti = ti + "SD "; } else ti = ti + " "; if (tsmp.IsChecked == true) { ti = ti + "SMP "; } else ti = ti + " "; if (tsma.IsChecked == true) { ti = ti + "SMA "; } else ti = ti + " "; if (identitas.Text == "") { MessageBox.Show("No. Identitas belum diisi!"); } else if (namalengkap.Text == "") { MessageBox.Show("Nama belum diisi!"); } else if (tgllahir.Text == "") { MessageBox.Show("Tanggal lahir belum diisi!"); } else if (alamatdiri.Text == "") { MessageBox.Show("Alamat belum diisi!"); } else if (notelp.Text == "") { MessageBox.Show("No. Telepon belum diisi!"); } else { PostJson(); }



224. } 5. Modul kirim data pendaftaran



19 225.



Modul ini digunakan untuk mengirim data pendaftaran ke



server yang selanjutnya akan disimpan ke dalam database. 226. private async void PostJson() 227. { 228. try 229. { 230. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/send_profil.php ?"); 231. HttpClient aClient = new HttpClient(); 232. string json = "username=" + u + "&password=" + p + "&email=" + m + "&status=" + s + "&nama=" + namalengkap.Text + "&id=" + identitas.Text + "&jk=" + j + "&alamat=" + alamatdiri.Text + "&telp=" + notelp.Text + "&keahlian=" + ahli.Text + "&tingkat=" + ti + "&rating=" + "" + "&foto=" + str; 233. StringContent stringContent = new StringContent( 234. json, 235. UnicodeEncoding.UTF8, 236. "application/x-www-form-urlencoded"); 237. HttpResponseMessage response = await aClient.PostAsync( 238. theUri, 239. stringContent); 240. if (response.IsSuccessStatusCode) 241. { 242. MessageBox.Show("Pendaftaran berhasil"); 243. NavigationService.GoBack(); 244. } 245. else 246. { 247. MessageBox.Show("Pendaftaran gagal"); 248. } 249. } 250. catch (Exception er) 251. { 252. MessageBox.Show(er + "\nPendaftaran gagal, periksa koneksi internet anda"); 253. }



254. } 6. Modul login 255. Modul ini digunakan untuk login ke dalam aplikasi dengan menyamakan data username dan password dari database dengan data yang diinput oleh pengguna. 256. 257.



private void masuk_Click(object sender, RoutedEventArgs e) {



20 258. if (username.Text == "") 259. { 260. MessageBox.Show("Username belum diisi!"); 261. } 262. else if (password.Password == "") 263. { 264. MessageBox.Show("Password belum diisi!"); 265. } 266. else 267. { 268. WebClient webClient = new WebClient(); 269. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 270. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_profil.php?username= %22" + username.Text + "%22&password=%22" + password.Password + "%22&junk=" + DateTime.Now)); 271. page_login.IsEnabled = false; 272. } 273. } 274. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 275. { 276. try 277. { 278. jsonString = e.Result.ToString(); 279. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 280. ser = new DataContractJsonSerializer(TotalList.GetType()); 281. TotalList = ser.ReadObject(ms) as RootObject; 282. var d = TotalList.success; 283. string v = ""; 284. foreach (var x in TotalList.profils) 285. { 286. v = x.username; 287. } 288. 289. if (d == 1) 290. { 291. NavigationService.Navigate(new Uri("/Home.xaml?id=" + v, UriKind.Relative)); 292. } 293. else if (d == 0) 294. { 295. MessageBox.Show("Username atau password salah!"); 296. page_login.IsEnabled = true; 297. } 298. 299. ms.Close();



21 300. 301. 302. 303. 304. 305.



} catch { MessageBox.Show("login gagal, silahkan coba kembali."); page_login.IsEnabled = true; }



306. } 7. Modul global variable 307. Modul ini digunakan untuk menyimpan global variable dari username yang digunakan penggu pada saat melakukan login. 308. 309. 310. 311. 312. 313. 314. 315.



public class GlobalVariabel { private static string idUser = ""; public static string ID { get { return idUser; } set { idUser = value; } }



316. } 8. Modul profil user 317. Modul ini digunakan untuk menampilkan data dari pengguna yang login ke dalam aplikasi. 318. protected override void OnNavigatedTo(NavigationEventArgs e) 319. { 320. bool get_value = NavigationContext.QueryString.TryGetValue("id", out ID); 321. WebClient webClient = new WebClient(); 322. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(getUserID); 323. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_tentorbyusername.ph p?username=%22" + ID + "%22")); 324. base.OnNavigatedTo(e); 325. } 326. 327. async void getUserID(object sender, DownloadStringCompletedEventArgs e) 328. { 329. try 330. { 331. jsonString = e.Result.ToString(); 332. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 333. ser = new DataContractJsonSerializer(TotalList.GetType()); 334. TotalList = ser.ReadObject(ms) as RootObject; 335. 336. UserMe = new ObservableCollection();



22 337. 338. foreach (var a in TotalList.profils) 339. { 340. UserMe.Add(new Profil() { username = a.username, nama = a.nama, rating = a.rating, keahlian = a.keahlian, tingkat = a.tingkat, status = a.status, foto = a.foto }); 341. } 342. 343. foreach (var t in UserMe) 344. { 345. GlobalVariabel.ID = t.username; 346. nama.Text = t.nama; 347. peringkat.Text = t.rating + " / 5.0"; 348. keahlian.Text = t.keahlian; 349. ti = t.tingkat; 350. j = t.status; 351. } 352. 353. if (j == "2") 354. { 355. piv_cari.IsEnabled = false; 356. ket.Visibility = Visibility.Visible; 357. } 358. else 359. { 360. keahlian.Visibility = Visibility.Collapsed; 361. xperingkat.Visibility = Visibility.Collapsed; 362. peringkat.Visibility = Visibility.Collapsed; 363. xtingkatan.Visibility = Visibility.Collapsed; 364. xkeahlian.Visibility = Visibility.Collapsed; 365. sd.Visibility = Visibility.Collapsed; 366. smp.Visibility = Visibility.Collapsed; 367. sma.Visibility = Visibility.Collapsed; 368. } 369. 370. if (ti.Contains("SD")) 371. { 372. sd.IsChecked = true; 373. } 374. 375. if (ti.Contains("SMP")) 376. { 377. smp.IsChecked = true; 378. } 379. 380. if (ti.Contains("SMA")) 381. { 382. sma.IsChecked = true; 383. } 384.



23 385. 386. 387. 388. 389. 390. 391. 392.



getkontaksakiki(); getPemberitahuan(); getpesan(); } catch (Exception eds) { MessageBox.Show("erore : " + eds); }



393. } 9. Modul tentor favorit 394. Modul ini digunakan untuk mendapatkan dan menampilkan data dari tentor dengan rating tertinggi dari database server. 395. private void fav_Click(object sender, RoutedEventArgs e) 396. { 397. WebClient webClient = new WebClient(); 398. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 399. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_favtentor.php? status=2&junk=" + DateTime.Now)); 400. } 401. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 402. { 403. usernameid = new String[1000]; 404. try 405. { 406. 407. jsonString = e.Result.ToString(); 408. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 409. ser = new DataContractJsonSerializer(TotalList.GetType()); 410. TotalList = ser.ReadObject(ms) as RootObject; 411. 412. int i = 0; 413. LongListSelector_MainData.ItemsSource = TotalList.profils; 414. foreach (var t in TotalList.profils) 415. { 416. usernameid[i] = t.username; 417. i++; 418. } 419. ms.Close(); 420. } 421. catch 422. { 423. MessageBox.Show("Tidak dapat menyambung ke internet!"); 424. }



24 425. } 10. Modul pencarian tentor berdasarkan nama 426. Modul ini digunakan untuk mencari dan menampilkan data tentor berdasarkan nama tentor yang dicari. 427. private void buttoncaritentor_Click(object sender, RoutedEventArgs e) 428. { 429. WebClient webClient = new WebClient(); 430. webClient.DownloadStringCompleted += new 431. DownloadStringCompletedEventHandler(webClient_DownloadStri ngCompleted); 432. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/search_byname.php? nama=" + textcaritentor.Text)); 433. } 434. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 435. { 436. try 437. { 438. jsonString = e.Result.ToString(); 439. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 440. ser = new DataContractJsonSerializer(TotalList.GetType()); 441. TotalList = ser.ReadObject(ms) as RootObject; 442. 443. string a = ""; 444. int i = 0; 445. var cek = TotalList.success; 446. if (cek == 1) 447. { 448. LongListSelector_Cari_T.ItemsSource = TotalList.profils; 449. foreach (var t in TotalList.profils) 450. { 451. usernameid[i] = t.username; 452. i++; 453. a = t.tingkat; 454. } 455. } 456. else 457. { 458. MessageBox.Show("Tentor tidak ditemukan."); 459. } 460. ms.Close(); 461. } 462. catch (Exception err) 463. { 464. MessageBox.Show("Tidak dapat menyambung ke internet!");



25 465.



}



466. } 11. Modul pencarian tentor berdasarkan tingkat 467. Modul ini digunakan untuk mencari dan menampilkan data tentor berdasarkan tingkat yang diampu oleh tentor yang dicari. 468. private void buttoncaritentor_Click(object sender, RoutedEventArgs e) 469. { 470. WebClient webClient = new WebClient(); 471. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 472. if (osd.IsChecked == true) 473. { 474. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/search_bygrade.php? tingkat=sd")); 475. } 476. else if (osmp.IsChecked == true) 477. { 478. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/search_bygrade.php? tingkat=smp")); 479. } 480. else if (osma.IsChecked == true) 481. { 482. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/search_bygrade.php? tingkat=sma")); 483. } 484. } 485. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 486. { 487. try 488. { 489. jsonString = e.Result.ToString(); 490. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 491. ser = new DataContractJsonSerializer(TotalList.GetType()); 492. TotalList = ser.ReadObject(ms) as RootObject; 493. 494. string a = ""; 495. int i = 0; 496. var cek = TotalList.success; 497. if (cek == 1) 498. { 499. LongListSelector_Cari_T.ItemsSource = TotalList.profils; 500. foreach (var t in TotalList.profils)



26 501. { 502. usernameid[i] = t.username; 503. i++; 504. a = t.tingkat; 505. } 506. } 507. else 508. { 509. MessageBox.Show("Tentor tidak ditemukan."); 510. } 511. ms.Close(); 512. } 513. catch (Exception err) 514. { 515. MessageBox.Show(err + "Tidak dapat menyambung ke internet!"); 516. }



517. } 12. Modul pencarian tentor berdasarkan keahlian 518. Modul ini digunakan untuk mencari dan menampilkan data tentor berdasarkan keahlian tentor yang dicari. 519. private void buttoncaritentor_Click(object sender, RoutedEventArgs e) 520. { 521. WebClient webClient = new WebClient(); 522. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 523. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/search_byskill.php? keahlian=" + textcaritentor.Text)); 524. } 525. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 526. { 527. try 528. { 529. jsonString = e.Result.ToString(); 530. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 531. ser = new DataContractJsonSerializer(TotalList.GetType()); 532. TotalList = ser.ReadObject(ms) as RootObject; 533. 534. string a = ""; 535. int i = 0; 536. var cek = TotalList.success; 537. if (cek == 1) 538. { 539. LongListSelector_Cari_T.ItemsSource = TotalList.profils;



27 540. foreach (var t in TotalList.profils) 541. { 542. usernameid[i] = t.username; 543. i++; 544. a = t.tingkat; 545. } 546. } 547. else 548. { 549. MessageBox.Show("Tentor tidak ditemukan."); 550. } 551. ms.Close(); 552. } 553. catch (Exception err) 554. { 555. MessageBox.Show(err + "Tidak dapat menyambung ke internet!"); 556. }



557. } 13. Modul untuk mengambil data tentor 558. Modukl ini digunakan untuk mengambil dan menampilkan data dari tentor yang dicari oleh murid. 559. protected override void OnNavigatedTo(NavigationEventArgs e) 560. { 561. bool get_value = NavigationContext.QueryString.TryGetValue("id", out getid); 562. 563. WebClient webClient = new WebClient(); 564. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 565. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_tentorbyusername.ph p?username=%22" + getid + "%22")); 566. getuser = GlobalVariabel.ID; 567. base.OnNavigatedTo(e); 568. } 569. 570. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 571. { 572. try 573. { 574. jsonString = e.Result.ToString(); 575. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 576. ser = new DataContractJsonSerializer(TotalList.GetType()); 577. TotalList = ser.ReadObject(ms) as RootObject; 578.



28 579. string ti = "", bas = ""; 580. foreach (var t in TotalList.profils) 581. { 582. pnama.Text = t.nama; 583. iduser.Text = t.id; 584. pperingkat.Text = t.rating + " / 5.0"; 585. pkeahlian.Text = t.keahlian; 586. palamat.Text = t.alamat; 587. ti = t.tingkat; 588. bas = t.foto; 589. if (t.jk == "1") 590. jenkel.Text = "Laki-laki"; 591. else 592. jenkel.Text = "Perempuan"; 593. } 594. 595. if (bas != "") 596. { 597. Set_Image(bas); 598. } 599. 600. if (ti.Contains("SD")) 601. { 602. psd.IsChecked = true; 603. } 604. 605. if (ti.Contains("SMP")) 606. { 607. psmp.IsChecked = true; 608. } 609. 610. if (ti.Contains("SMA")) 611. { 612. psma.IsChecked = true; 613. } 614. 615. ms.Close(); 616. } 617. catch (Exception err) 618. { 619. MessageBox.Show("Tidak dapat menyambung ke internet!"); 620. NavigationService.GoBack(); 621. }



622. } 14. Modul daftar bimbingan 623. Modul ini digunakan



untuk



bimbingan kepada tentor. 624.



private async void PostJson()



mengirim



permintaan



29 625. { 626. try 627. { 628. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/send_pemberitahuan.php? "); 629. 630. HttpClient aClient = new HttpClient(); 631. 632. Dictionary sendjson = new Dictionary(); 633. sendjson.Add("sender", getuser); 634. sendjson.Add("receiver", getid); 635. 636. FormUrlEncodedContent formContent = new FormUrlEncodedContent(sendjson); 637. 638. HttpResponseMessage aResponse = await aClient.PostAsync(theUri, formContent); 639. 640. if (aResponse.IsSuccessStatusCode) 641. { 642. MessageBox.Show("Pendaftaran berhasil, silahkan menunggu konfirmasi dari tentor yang bersangkutan"); 643. NavigationService.GoBack(); 644. } 645. } 646. catch (Exception er) 647. { 648. MessageBox.Show("Pengiriman permintaan gagal"); 649. }



650. } 15. Modul pemberitahuan 651. Modul ini digunakan untuk mengambil dan menampilkan pemberitahuan untuk pengguna. 652. public void getPemberitahuan() 653. { 654. WebClient webClient = new WebClient(); 655. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(get_Pemberitahuan); 656. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_pemberitahuan.php? receiver=%22" + GlobalVariabel.ID + "%22&junk=" + DateTime.Now)); 657. } 658. void get_Pemberitahuan(object sender, DownloadStringCompletedEventArgs e) 659. { 660. PemberitahuanMe = new ObservableCollection();



30 661. pemberitahuanid = new String[1000]; 662. try 663. { 664. if (TotalList.success == 1) 665. jsonString = e.Result.ToString(); 666. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 667. ser = new DataContractJsonSerializer(TotalList.GetType()); 668. TotalList = ser.ReadObject(ms) as RootObject; 669. 670. int i = 0; 671. 672. if (TotalList.success == 1) 673. { 674. foreach (var t in TotalList.products) 675. { 676. if (j == "1") 677. PemberitahuanMe.Add(new Product() { sender = t.sender.ToUpper(), waktu = t.waktu, teksket = "Menerima permintaan anda" }); 678. else 679. PemberitahuanMe.Add(new Product() { sender = t.sender.ToUpper(), waktu = t.waktu, teksket = "Meminta layanan tentor dari anda" }); 680. pemberitahuanid[i] = t.sender; 681. i++; 682. } 683. 684. Pemberitahuan.ItemsSource = PemberitahuanMe; 685. } 686. ms.Close(); 687. } 688. catch 689. { 690. MessageBox.Show("Tidak dapat menyambung ke internet!"); 691. }



692. } 16. Modul untuk mendapatkan data murid yang mendaftar bimbingan 693. Modul ini digunakan oleh tentor untuk mendapatkan data murid yang mendaftar bimbingannya. 694. protected override void OnNavigatedTo(NavigationEventArgs e) 695. { 696. bool get_value = NavigationContext.QueryString.TryGetValue("id", out getid); 697. 698. WebClient webClient = new WebClient(); 699. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC



31 ompleted); 700. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_tentorbyusername.ph p?username=%22" + getid + "%22")); 701. getuser = GlobalVariabel.ID; 702. 703. base.OnNavigatedTo(e); 704. } 705. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 706. { 707. try 708. { 709. jsonString = e.Result.ToString(); 710. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 711. ser = new DataContractJsonSerializer(TotalList.GetType()); 712. TotalList = ser.ReadObject(ms) as RootObject; 713. 714. string ti = "", bas = "", stat = ""; 715. foreach (var t in TotalList.profils) 716. { 717. pnama.Text = t.nama; 718. palamat.Text = t.alamat; 719. ti = t.tingkat; 720. bas = t.foto; 721. stat = t.status; 722. } 723. 724. if (bas != "") 725. { 726. Set_Image(bas); 727. } 728. 729. ms.Close(); 730. } 731. catch (Exception err) 732. { 733. MessageBox.Show("Tidak dapat menyambung ke internet!"); 734. NavigationService.GoBack(); 735. }



736. } 17. Modul tolak permintaan bimbingan 737. Modul ini digunakan oleh tentor untuk menolak permintaan murid yang mendaftar bimbingannya. 738. 739. 740.



private async void TolakPermintaan() { try



32 741. { 742. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/delete_pemberitahuan.php ?"); 743. 744. HttpClient aClient = new HttpClient(); 745. 746. Dictionary sendjson = new Dictionary(); 747. sendjson.Add("sender", getid); 748. 749. FormUrlEncodedContent formContent = new FormUrlEncodedContent(sendjson); 750. 751. HttpResponseMessage aResponse = await aClient.PostAsync(theUri, formContent); 752. 753. if (aResponse.IsSuccessStatusCode) 754. { 755. NavigationService.GoBack(); 756. } 757. } 758. catch (Exception er) 759. { 760. MessageBox.Show("Penolakan permintaan gagal, silahkan periksa koneksi internet anda"); 761. }



762. } 18. Modul terima permintaan bimbingan 763. Modul ini digunakan oleh tentor untuk menerima permintaan murid yang mendaftar bimbingannya. Modul ini juga otomatis akan menjalankan modul pengiriman data kontak baru. 764. private async void TerimaPermintaan() 765. { 766. try 767. { 768. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/send_kontak.php?"); 769. 770. HttpClient aClient = new HttpClient(); 771. 772. Dictionary sendjson = new Dictionary(); 773. sendjson.Add("user", getuser); 774. sendjson.Add("kontak", getid); 775. 776. FormUrlEncodedContent formContent = new FormUrlEncodedContent(sendjson);



33 777. 778. HttpResponseMessage aResponse = await aClient.PostAsync(theUri, formContent); 779. 780. if (aResponse.IsSuccessStatusCode) 781. { 782. MessageBox.Show("Permintaan berhasil diterima, user akan otomatis ditambahkan ke dalam kontak"); 783. NavigationService.GoBack(); 784. } 785. } 786. catch (Exception er) 787. { 788. MessageBox.Show("Penerimaan permintaan gagal, silahkan periksa koneksi internet anda"); 789. }



790. } 19. Modul pengiriman data kontak baru 791. Modul ini digunakan untuk menambahkan kontak tentor dari murid yang sudah disetujuinya dan sebaliknya. Modul ini langsung terintegrasi dengan modul terima permintaan bimbingan. 20. Modul kontak 792. Modul untuk mendapatkan dan menampilkan kontak dari pengguna. 793. public void getkontaksakiki() 794. { 795. WebClient webClient1 = new WebClient(); 796. webClient1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(get_Kontak); 797. webClient1.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_kontak.php?user= %22" + GlobalVariabel.ID + "%22&junk=" + DateTime.Now)); 798. } 799. void get_Kontak(object sender, DownloadStringCompletedEventArgs e) 800. { 801. KontakMe = new ObservableCollection(); 802. kontakid = new String[1000]; 803. try 804. { 805. jsonString = e.Result.ToString(); 806. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 807. ser = new DataContractJsonSerializer(TotalList.GetType()); 808. TotalList = ser.ReadObject(ms) as RootObject; 809. 810. if (TotalList.success == 1)



34 811. { 812. int i = 0; 813. 814. Kontak.ItemsSource = TotalList.products; 815. 816. foreach (var a in TotalList.products) 817. { 818. KontakMe.Add(new Product() { username = a.username, nama = a.nama, rating = a.rating, keahlian = a.keahlian, tingkat = a.tingkat, status = a.status, foto = a.foto }); 819. kontakid[i] = a.username; 820. i++; 821. } 822. } 823. ms.Close(); 824. } 825. catch 826. { 827. MessageBox.Show("Tidak dapat menyambung ke internet!"); 828. }



829. } 21. Modul untuk mengambil data kontak 830. Modul untuk mendapatkan dan menampilkan data dari kontak yang dipilih oleh pengguna. 831. protected override void OnNavigatedTo(NavigationEventArgs e) 832. { 833. bool get_value = NavigationContext.QueryString.TryGetValue("id", out getid); 834. 835. WebClient webClient = new WebClient(); 836. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 837. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_tentorbyusername.ph p?username=%22" + getid + "%22")); 838. getuser = GlobalVariabel.ID; 839. usernamekontak.Text = getid.ToUpper(); 840. 841. base.OnNavigatedTo(e); 842. } 843. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 844. { 845. try 846. { 847. jsonString = e.Result.ToString(); 848. ms = new



35 MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 849. ser = new DataContractJsonSerializer(TotalList.GetType()); 850. TotalList = ser.ReadObject(ms) as RootObject; 851. 852. string ti = "", bas = "", stat = ""; 853. foreach (var t in TotalList.profils) 854. { 855. pnama.Text = t.nama; 856. pperingkat.Text = t.rating + " / 5.0"; 857. pkeahlian.Text = t.keahlian; 858. iduser.Text = t.id; 859. palamat.Text = t.alamat; 860. ti = t.tingkat; 861. bas = t.foto; 862. stat = t.status; 863. if (t.jk == "1") 864. jenkel.Text = "Laki-laki"; 865. else 866. jenkel.Text = "Perempuan"; 867. } 868. 869. if (stat == "1") 870. { 871. ppperingkat.Visibility = Visibility.Collapsed; 872. pperingkat.Visibility = Visibility.Collapsed; 873. ppkeahlian.Visibility = Visibility.Collapsed; 874. pptingkatan.Visibility = Visibility.Collapsed; 875. pkeahlian.Visibility = Visibility.Collapsed; 876. psd.Visibility = Visibility.Collapsed; 877. psma.Visibility = Visibility.Collapsed; 878. psmp.Visibility = Visibility.Collapsed; 879. } 880. 881. if (bas != "") 882. { 883. Set_Image(bas); 884. } 885. 886. if (ti.Contains("SD")) 887. { 888. psd.IsChecked = true; 889. } 890. 891. if (ti.Contains("SMP")) 892. { 893. psmp.IsChecked = true; 894. } 895. 896. if (ti.Contains("SMA")) 897. {



36 898. psma.IsChecked = true; 899. } 900. 901. ms.Close(); 902. } 903. catch 904. { 905. MessageBox.Show("Tidak dapat menyambung ke internet!"); 906. NavigationService.GoBack(); 907. }



908. } 22. Modul untuk menampilkan daftar pesan 909. Modul untuk mendapatkan dan menampilkan daftar pesan dari pengguna. 910. public void getpesan() 911. { 912. WebClient webClient1 = new WebClient(); 913. webClient1.DownloadStringCompleted += new DownloadStringCompletedEventHandler(get_Pesan); 914. webClient1.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_daftarpesan.php? receiver=%22" + GlobalVariabel.ID + "%22&junk=" + DateTime.Now)); 915. } 916. void get_Pesan(object sender, DownloadStringCompletedEventArgs e) 917. { 918. PesanMe = new ObservableCollection(); 919. pesanid = new String[1000]; 920. try 921. { 922. jsonString = e.Result.ToString(); 923. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 924. ser = new DataContractJsonSerializer(TotalList.GetType()); 925. TotalList = ser.ReadObject(ms) as RootObject; 926. 927. if (TotalList.success == 1) 928. { 929. int i = 0; 930. string getusernamepesan = ""; 931. 932. foreach (var a in TotalList.products) 933. { 934. if (i == 0) 935. { 936. PesanMe.Add(new Product() { username = a.username, nama = a.nama, waktu = a.waktu, pesan = a.pesan,



37 foto = a.foto }); 937. pesanid[i] = a.username; 938. i++; 939. } 940. else if (a.username != getusernamepesan) 941. { 942. PesanMe.Add(new Product() { username = a.username, nama = a.nama, waktu = a.waktu, pesan = a.pesan, foto = a.foto }); 943. pesanid[i] = a.username; 944. i++; 945. } 946. 947. getusernamepesan = a.username; 948. } 949. 950. daftar_pesan.ItemsSource = PesanMe; 951. } 952. ms.Close(); 953. } 954. catch 955. { 956. MessageBox.Show("Tidak dapat menyambung ke internet!"); 957. }



958. } 23. Modul untuk mendapatkan pesan dari pengirim tertentu 959. Modul untuk mendapatkan dan menampilkan semua pesan dari pengirim pesan yang dipilih oleh pengguna. 960. public void Get_Chat() 961. { 962. WebClient webClient = new WebClient(); 963. webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringC ompleted); 964. webClient.DownloadStringAsync(new Uri("http://bimbelku.emaginelabs.com/api/get_chat.php?sender= %22" + GlobalVariabel.ID + "%22&receiver=%22" + getid + "%22&junk=" + DateTime.Now)); 965. } 966. void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 967. { 968. try 969. { 970. Products = new ObservableCollection(); 971. String jsonString = ""; 972. RootObject TotalList = new RootObject(); 973. MemoryStream ms;



38 974. DataContractJsonSerializer ser; 975. jsonString = e.Result.ToString(); 976. ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 977. ser = new DataContractJsonSerializer(TotalList.GetType()); 978. TotalList = ser.ReadObject(ms) as RootObject; 979. if (TotalList.success == 1) 980. { 981. foreach (var a in TotalList.products) 982. { 983. if (a.sender == getid) 984. Products.Add(new Product() { sender = a.sender, pesan = a.pesan, waktu = a.waktu, cek = 1 }); 985. else 986. Products.Add(new Product() { sender = a.sender, pesan = a.pesan, waktu = a.waktu, cek = 2 }); 987. } 988. 989. Products = new ObservableCollection(Products.OrderBy(p => p.waktu)); 990. Chat_Data.ItemsSource = Products; 991. } 992. ms.Close(); 993. } 994. 995. catch (Exception eeee) 996. { 997. MessageBox.Show("Periksa koneksi internet anda."); 998. NavigationService.GoBack(); 999. }



1000. } 24. Modul pengiriman pesan 1001. Modul ini digunakan untuk mengirim pesan dari pengguna kepada penerima yang ditentukan. 1002. private async void PostJson() 1003. { 1004. try 1005. { 1006. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/send_pesan.php?"); 1007. 1008. HttpClient aClient = new HttpClient(); 1009. 1010. Dictionary sendjson = new Dictionary(); 1011. sendjson.Add("sender", GlobalVariabel.ID); 1012. sendjson.Add("receiver", getid); 1013. sendjson.Add("pesan", tekspesan.Text); 1014.



39 1015. FormUrlEncodedContent formContent = new FormUrlEncodedContent(sendjson); 1016. 1017. HttpResponseMessage aResponse = await aClient.PostAsync(theUri, formContent); 1018. 1019. tekspesan.Text = ""; 1020. 1021. Get_Chat(); 1022. } 1023. catch (Exception er) 1024. { 1025. MessageBox.Show("Pengiriman pesan gagal"); 1026. }



1027. } 25. Modul seleksi pengirim pesan untuk treading view 1028. Modul ini digunakan untuk seleksi pengirim pesan agar dapat menampilkan pesan dengan format treading view/ format percakapan. 1029. public DataTemplate RightTemplate { get; set; } 1030. public DataTemplate LeftTemplate { get; set; } 1031. 1032. protected override void OnContentChanged(object oldContent, object newContent) 1033. { 1034. base.OnContentChanged(oldContent, newContent); 1035. 1036. // apply the required template 1037. var Pr = newContent as Product; 1038. if (Pr.cek == 1) 1039. { 1040. ContentTemplate = LeftTemplate; 1041. } 1042. else 1043. { 1044. ContentTemplate = RightTemplate; 1045. }



1046. } 26. Modul edit profil user 1047. Modul ini digunakan untuk merubah data dari pengguna. 1048. private async void PostJson() 1049. { 1050. try 1051. { 1052. Uri theUri = new Uri("http://bimbelku.emaginelabs.com/api/edit_profil.php? ");



40 1053. HttpClient aClient = new HttpClient(); 1054. string json = "keahlian=" + ahli.Text + "&tingkat=" + ti + "&foto=" + str; 1055. StringContent stringContent = new StringContent( 1056. json, 1057. UnicodeEncoding.UTF8, 1058. "application/x-www-form-urlencoded"); 1059. HttpResponseMessage response = await aClient.PostAsync( 1060. theUri, 1061. stringContent); 1062. if (response.IsSuccessStatusCode) 1063. { 1064. MessageBox.Show("Profil berhasil di-update"); 1065. } 1066. else 1067. { 1068. MessageBox.Show("Gagal meng-update profil"); 1069. } 1070. } 1071. catch (Exception er) 1072. { 1073. MessageBox.Show("Periksa koneksi internet anda"); 1074. }



1075. } 27. Pembuatan modul upload foto profil user 1076. Modul ini digunakan untuk memilih foto profil dari pengguna yang kemudian akan dikirim bersama dengan ke database server oleh modul pengiriman data pendaftaran atau modul edit profil user. 1077. private void GetFoto_Click(object sender, RoutedEventArgs e) 1078. { 1079. photoChooserTask = new PhotoChooserTask(); 1080. photoChooserTask.Show(); 1081. photoChooserTask.Completed += new EventHandler(photoChooserTask_Completed); 1082. } 1083. 1084. async void photoChooserTask_Completed(object sender, PhotoResult e) 1085. { 1086. try 1087. { 1088. imageBytes = new byte[e.ChosenPhoto.Length];



41 1089. 1090. e.ChosenPhoto.Read(imageBytes, 0, imageBytes.Length).ToString(); 1091. 1092. MemoryStream ms = new MemoryStream(imageBytes); 1093. bitmapImage.SetSource(ms); 1094. up_foto.Source = bitmapImage; 1095. 1096. await GetString(); 1097. str = new string(chars); 1098. MessageBox.Show(str); 1099. } 1100. catch (Exception eeer) 1101. { 1102. MessageBox.Show("" + eeer); 1103. }



1104. 1105. 1106.



}



1107. BAB IV KESIMPULAN DAN SARAN



A Kesimpulan Berdasarkan hasil pelaksanaan kegiatan praktik industri di PT. Air Media Persada Yogyakarta pada tanggal 1 Juli 2015 sampai dengan 11 September 2015, dapat diambil kesimpulan sebagai berikut: 1. Kegiatan Praktik Industri merupakan salah satu program wajib bagi mahasiswa Fakultas Teknik Universitas Negeri Yogyakarta untuk dapat mengenal dunia kerja secara nyata dan juga sebagai wadah untuk mengembangkan ilmu yang didapat selama di dalam perkuliahan. 2. PT. Air Media Persada adalah Perusahaan Software di Indonesia dengan Badan Hukum (Perseroan Terbatas) yang mengembangkan Sistem Informasi (SI) berbasis Web. Layanan AirMedia secara umum meliputi Layanan Jasa Teknologi Informasi – Perancangan Software Sistem Informasi berbasis Web (Web - based Information Systems). Saat ini, SI Akademik menjadi salah satu Software utama dan terbaik dari AirMedia. 3. Visual Studio adalah IDE besutan Microsoft sebagai alat untuk membuat aplikasi, mulai dari desktop, mobile dan web. Bahasa C# sendiri juga merupakan bahasa yang dikembangkan oleh Microsoft. 4. Extensible Application Markup Language, atau XAML (diucapkan "zammel"), adalah sebuah bahasa berbasis XML markup yang dikembangkan oleh Microsoft. XAML adalah bahasa di belakang tampilan dari sebuah aplikasi yang dikembangkan dengan Microsoft Expression Blend, seperti halnya HTML adalah bahasa di belakang tampilan dari suatu halaman Web. 5. Web Server merupakan suatu Program Komputer yang mempunyai tanggung jawab/ tugas menerima permintaan HTTP dari komputer klien, yang dikenal dengan nama web browser/ web client, dan melayani mereka dengan menyediakan respon HTTP berupa konten data.



39



40 6. JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. 7. Aplikasi BIMBELku merupakan nama dari sebuah sistem informasi pencarian tentor bimbingan belajar berbasis web yang dikembangkan dengan Visual Studio 2013 pada sistem operasi windows phone 8.0 dengan bahasa C# sebagai handling system BIMBELku dan XAML sebagai tampilan aplikasi BIMBELku. 8. H. Saran 9. Berdasarkan pengalaman penulis selama 2,5 bulan melaksanakan praktik industri, ada beberapa saran dari penulis yang bersifat membangun dan untuk kedepannya diharapkan dapat meningkatkan kualitas praktik industri agar menjadi lebih baik lagi. Adapun saransaran tersebut antara lain: 1. Bagi Mahasiswa Praktikan a. Mahasiswa diharapkan melakukan persiapan diri terlebih dahulu dalam menghadapi praktik industri dengan cara mencari gambaran praktik industri dari dosen atau kakak angkatan yang telah sukses dalam menjalankan praktik industri. b. Mahasiswa sebaiknya melakukan survei terlebih dahulu terhadap tempat pelaksanaan praktik industri sebelum pelaksanaan praktik industri. Kemudian menyeleksi industri agar didapat tempat yang sesuai dengan program studi sehingga dapat memberikan pengalaman serta manfaat yang lebih. c. Mahasiswa diharapkan rajin, telaten,



serta



aktif



dalam



pelaksanakan praktik industri. Sehingga akan memudahkan mahasiswa dalam penyelesaian tugas dalam praktik industri dan memudahkan mahasiswa dalam penyusunan laporan praktik industri. d. Mahasiswa harus bisa bersikap sopan dan menjaga nama baik institusi, baik itu universitas maupun industri.



41 e. Mahasiswa juga harus beradaptasi dan menjalin komunikasi yang baik dengan pihak industri, pembimbing industri, serta dosen pembimbing praktik industri. 10. 2. Bagi Universitas a. Pihak universitas terutama dalam lingkup jurusan, diharapkan untuk aktif dalam memberikan saran sertagaris besar mengenai tempat–tempat praktik industri yang sesuai dengan program studi mahasiswa



sehingga



dapat



membantu



mahasiswa



untuk



mendapatkan tempat prakti industri yang sesuai dengan bakat dan bidangnya. b. Meningkatkan komunikasi dan hubungan kerjasama antara pihak universitas dan industri. c. Pembekalan yang lebih intensif kepada mahasiswa tentang gambaran praktik industri dan bagaimana cara menjalaninya. d. Pendampingan yang aktif secara dua arah pada saat mahasiswa melakukan bimbingan kepada dosen pembimbing prktik industri. 11. 3. Bagi Industri a. Memiliki kerja sama yang baik dan berkesinambungan antara pihak industri dan lembaga pendidikan guna memajukan pihak industri dan lembaga pendidikan. b. Terbuka dalam menjalin kerjasama dengan lembaga-lembaga pendidikan guna meningkatkan mutu sumber daya manusia yang melakukan praktikan. 12. 13.



42 14. DAFTAR PUSTAKA 15. 16.



Dwi Kristianto, ST. (2002). Web Server dan Web Client. Diambil tanggal 28



Oktober



2015



dari



http://faculty.petra.ac.id/dwikris/docs/desgrafisweb/browser/webserver_cli ent.html 17.



Tim Praktik Industri. (2015). Pedoman Praktik Industri Fakultas Teknik Universitas Negeri Yogyakarta. Yogyakarta: UNY Press.



18.



______. (2000). Introducing JSON. Diambil tanggal 28 Oktober 2015 dari http://json.org/



19.



______. (2012). Profil Perusahaan Software AirMedia. Diambil tanggal 30 September



2015



dari



http://www.airmediapersada.com/profil-



perusahaan.html 20.



______. (2015). What is XAML. Diambil tanggal 30 Oktober 2015 dari https://msdn.microsoft.com/en-us/library/cc295302.aspx 21.



22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. LAMPIRAN 1. 36. Piagam Lulus Pembekalan Praktik Industri 37.



38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. LAMPIRAN 2. 52. Surat Tugas dari Dekan 53.



54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. LAMPIRAN 3. 68. Jadwal Rencana Kegiatan Praktik Industri 69.



70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. LAMPIRAN 4. 84. Catatan Kegiatan Harian Praktik Industri 85.



86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. LAMPIRAN 5. 100. 101.



Matrik Program Kegiatan Praktik Industri



102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117.



LAMPIRAN 6.



Kesan dan Rekomendasi Industri



118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133.



LAMPIRAN 7.



Ucapan Terima Kasih dari Fakultas kepada Industri



134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149.



LAMPIRAN 8.



Kartu Bimbingan Praktik Industri