Tugas Jobsheet 11 [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

DASAR PEMROGRAMAN TUGAS JOB SHEET 11 PROGRAM PENDAFTARAN SISWA



Mata Kuliah : Dasar Pemrograman Dosen



: 1. Mardiyono, S. Kom., M. Sc 2. Angga Wahyu Wibowo, S.Kom., M.Eng



Disusun oleh Nama



: Vedica Widyabriza Rohaly



NIM



: 43320124



PROGRAM STUDI TEKNOLOGI REKAYASA KOMPUTER JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2020/2021



I.



Tujuan Instruksional Khusus Setelah melakukan praktikum ini Mahasiswa mampu menerapkan sistem informasi sederhana menggunakan GUI (Graphical User Interface) / create, read, update, delete (CRUD).



II.



Dasar Teori PyQt adalah toolkit widget GUI. Ini adalah antarmuka Python untuk Qt, salah satu pustaka GUI lintas-platform paling kuat dan populer. PyQt adalah perpaduan dari bahasa pemrograman Python dan perpustakaan Qt. Tutorial pengantar ini akan membantu Anda dalam membuat aplikasi grafis dengan bantuan PyQt. Software XAMPP didirikan oleh suatu perusahaan bernama Apache Friends. Dengan adanya beberapa tools pemrograman seperti MySQL, PHP dan Perl yang dimilikinya tentu mengindikasikan jika anda menekuni salah satu atau semuanya berarti harus memiliki software yang bernama XAMPP ini. Maksud dari Apache yakni selain mengindikasikan nama pengembangnya juga merupakan suatu software yang menghadirkan web server pada komputer anda layaknya web server sesungguhnya.  Apache adalah suatu software yang juga dikembangkan Apache Friends dengan tujuan untuk membuat web server pribadi sehingga anda dapat membuat tampilan web yang dinamis. Istilah ini biasa disebut Localhost. Sebagai suatu software yang bertindak sebagai web server layaknya hosting sesungguhnya tentu saja melibatkan banyak bagian – bagian penting yang ada pada XAMPP. Bagian-bagian tersebut berisi Htdocs, phpmyadmin, dan control panel.



III. Alat dan Bahan 1.



PC / Laptop



2.



Software Anaconda



3.



Anaconda Prompt



IV. 1.



Langkah Kerja Cek Versi Python python



Gambar 1. cek versi python



2.



Download PyQt disesuaikan dengan versi python di PC / laptop anda



Gambar 2. cek versi python



3.



Install PyQt



Gambar 3. Install PyQt



Gambar 4. Install PyQt



Gambar 5. Install PyQt



Gambar 6. Install PyQt



Gambar 7. Install PyQt



Gambar 8. Proses Install PyQt Selesai



4.



Mengecek apakah PyQt sudah terinstal apa belum



Gambar 9. Cek Versi python



5.



Install PyMySQL pip install pymysql



Gambar 10. Proses Install pymysql



6.



Pengecekan PyMySQL Python Import pymysql



Gambar 11. Cek versi python dan import pymysql



7.



Membuat Desain GUI membuat desain GUI sederhana dengan menggunakan Qt Designer. Qt Designer adalah tools bawaan PyQt5. Tools ini dapat diakses di direktori sistem : C:\Program Files\Python34\Lib\site-packages\PyQt5\designer.exe



Gambar 12. Tampilan Awal pyqt designer



8.



Simpan dengan nama siswa.ui



9.



Menjalankan desain GUI di python



10.



Ganti file crud.ui menjadi crud.py python -m PyQt5.uic.pyuic -x siswa.ui -o siswa.py



11.



Hasil dan buka file crud.py dengan text editor



12.



Download XAMPP







buka dan download di website ini apachefriends.org/download.html







Dobel klik file XAMPP yang baru saja Anda download, nanti selanjutnya akan muncul jendela “installer language” seperti di bawah ini:







Selanjutnya pilih bahasa. Pilih yang Bahasa Inggris (English). Klik OK.







Klik tombol Next.







Selanjutnya Anda akan diminta untuk memilih aplikasi yang mau diinstal. Centang saja semua pilihan dan klik tombol Next.







Kemudian Anda akan diminta untuk menentukan lokasi folder penyimpanan file-file dan folder XAMPP. Secara default akan diarahkan ke lokasi c:\xampp. Namun jika Anda ingin menyimpannya di folder lain bisa klik browse dan tentukan secara manual folder yang ingin digunakan. Jika sudah selesai, lanjutkan dan klik tombol Install.







klik tombol Finish untuk menyelesaikannya







Berikutnya, akan muncul jendela dialog seperti gambar di bawah ini yang menanyakan Anda apakah mau langsung menjalankan aplikasi XAMPP atau tidak.



Jika ya, maka klik YES.



13. Menjalankan Aplikasi XAMPP 



Bukalah aplikasi XAMPP, bisa melalui Start Menu atau Desktop







Setelah terbuka, silahkan klik tombol Start pada kolom Action sehingga tombol tersebut berubah menjadi Stop. Dengan mengklik tombol tersebut, artinya itulah aplikasi yang dijalankan. Biasanya menggunakan XAMPP, yang saya start hanyalah aplikasi Apache dan MySQL







Sekarang



bukalah



browser



kesukaan



Anda,



dan



coba



ketikkan http://localhost/xampp di address bar. Jika muncul tampilan seperti gambar di bawah ini, instalasi telah berhasil.



14. Pembuatan Database







Akses localhost http://localhost/phpmyadmin/







Klik Database







Ketikan nama database dbython di field Database name dan klik create







Ketikan nama table, dbython, number of columns 4, klik Go







Buat tabel database seperti gambar berikut, klik Save







Hasilnya sebagai berikut



15. Buka file crud.py dengan teks editor dan Ketikan kode berikut # -*- coding: utf-8 -*# Form implementation generated from reading ui file 'siswa.ui' # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing.



from PyQt5 import QtCore, QtGui, QtWidgets import pymysql



class Ui_MainWindow(object): def koneksi(self): con = pymysql.connect(db='dbython', user='root', passwd='', host='localhost', port=3306, autocommit=True) cur = con.cursor() if(cur):



self.messagebox("Koneksi", "Koneksi Berhasil") else: self.messagebox("Koneksi", "Koneksi Gagal") def messagebox(self, title, message): mess = QtWidgets.QMessageBox() mess.setWindowTitle(title) mess.setText(message) mess.setStandardButtons(QtWidgets.QMessageBox.Ok) mess.exec_() def save(self): fullname = self.plainTextEdit.toPlainText() dateborn = self.plainTextEdit_2.toPlainText() address = self.plainTextEdit_3.toPlainText() school = self.plainTextEdit_4.toPlainText() insert = (fullname, dateborn, address, school) print(insert) con = pymysql.connect(db='dbython', user='root', passwd='', host='localhost', port=3306, autocommit=True) cur = con.cursor() sql = "INSERT INTO dbython(full_name, date_born, address, school)" + \ "VALUES"+str(insert) data = cur.execute(sql) if(data): self.messagebox("SUKSES", "Data Barang Tersimpan") else: self.messagebox("GAGAL", "Data Barang Gagal Tersimpan") def Tampil(self): fullname = self.plainTextEdit.toPlainText() db = pymysql.connect(db='dbython', user='root', passwd='', host='localhost', port=3306, autocommit=True) cursor = db.cursor() cursor.execute("SELECT * FROM dbython WHERE full_name='"+str(fullname)+"'") data = cursor.fetchall() if (data): for tp in data:



self.plainTextEdit.setPlainText("" + tp[0]) self.plainTextEdit_2.setPlainText("" + tp[1]) self.plainTextEdit_3.setPlainText("" + tp[2]) self.plainTextEdit_4.setPlainText("" + tp[3]) self.messagebox("INFO","Data Ada") else: self.messagebox("INFO", "Data belum ada") def update(self): fullname = self.plainTextEdit.toPlainText() dateborn = self.plainTextEdit_2.toPlainText() address = self.plainTextEdit_3.toPlainText() school = self.plainTextEdit_4.toPlainText() con = pymysql.connect(db='dbython', user='root', passwd='', host='localhost', port=3306, autocommit=True) cur = con.cursor() sql = "UPDATE dbython SET date_born=%s, address=%s, school=%s WHERE full_name=%s" data = cur.execute(sql, (dateborn, address, school, fullname)) if (data): self.messagebox("SUKSES", "Data Berhasil Di Update") else: self.messagebox("GAGAL", sql) def delete(self): fullname = self.plainTextEdit.toPlainText() con = pymysql.connect(db='dbython', user='root', passwd='', host='localhost', port=3306, autocommit=True) cur = con.cursor() sql = "DELETE FROM dbython where full_name=%s" data = cur.execute(sql, (fullname)) if (data): self.messagebox("SUKSES", "Data Berhasil Di HAPUS") else: self.messagebox("GAGAL", "Data GAGAL Di HAPUS")



def clear(self): self.plainTextEdit.setPlainText("") self.plainTextEdit_2.setPlainText("") self.plainTextEdit_3.setPlainText("") self.plainTextEdit_4.setPlainText("") def setupUi(self, MainWindow): self.koneksi() MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(320, 20, 331, 50)) self.label.setAutoFillBackground(False) self.label.setObjectName("label") font = QtGui.QFont() font.setPointSize(25) self.label.setFont(font) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(190, 90, 171, 21)) self.label.setAutoFillBackground(False) self.label.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.centralwidget) self.label_3.setGeometry(QtCore.QRect(190, 140, 171, 21)) self.label.setAutoFillBackground(False) self.label.setObjectName("label_3") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(190, 180, 171, 21)) self.label.setAutoFillBackground(False) self.label.setObjectName("label_4") self.label_5 = QtWidgets.QLabel(self.centralwidget) self.label_5.setGeometry(QtCore.QRect(190, 330, 171, 21)) self.label.setAutoFillBackground(False) self.label.setObjectName("label_5")



self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit.setGeometry(QtCore.QRect(360, 90, 321, 21)) self.plainTextEdit.setObjectName("plainTextEdit") self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit_2.setGeometry(QtCore.QRect(360, 140, 321, 21)) self.plainTextEdit_2.setObjectName("plainTextEdit_2") self.plainTextEdit_3 = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit_3.setGeometry(QtCore.QRect(360, 180, 321, 121)) self.plainTextEdit_3.setObjectName("plainTextEdit_3") self.plainTextEdit_4 = QtWidgets.QPlainTextEdit(self.centralwidget) self.plainTextEdit_4.setGeometry(QtCore.QRect(360, 330, 321, 21)) self.plainTextEdit_4.setObjectName("plainTextEdit_4") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(190, 410, 75, 23)) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.save) self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(290, 410, 75, 23)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(self.update) self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_3.setGeometry(QtCore.QRect(390, 410, 75, 23)) self.pushButton_3.setObjectName("pushButton_3") self.pushButton_3.clicked.connect(self.delete) self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_4.setGeometry(QtCore.QRect(490, 410, 75, 23)) self.pushButton_4.setObjectName("pushButton_4") self.pushButton_4.clicked.connect(self.clear) self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_5.setGeometry(QtCore.QRect(590, 410, 75, 23)) self.pushButton_5.setObjectName("pushButton_5") self.pushButton_5.clicked.connect(self.Tampil) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))



self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Save")) self.pushButton_2.setText(_translate("MainWindow", "Update")) self.pushButton_3.setText(_translate("MainWindow", "Delete")) self.pushButton_4.setText(_translate("MainWindow", "Clear")) self.pushButton_5.setText(_translate("MainWindow", "Check")) self.label.setText(_translate("MainWindow", "PENDAFTARAN SISWA")) self.label_2.setText(_translate("MainWindow", "Full Name")) self.label_3.setText(_translate("MainWindow", "Date Born")) self.label_4.setText(_translate("MainWindow", "Address")) self.label_5.setText(_translate("MainWindow", "School")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())



16. Jalankan programnya 



Buka folder, dan klik cmd nya



phyton crud.py



V.



Hasil



VI.



Kesimpulan Aplikasi Create, Read, Update, Detele (CRUD) adalah aplikasi standar yang pasti ada jika kita ingin membuat aplikasi web dinamis. Dengan fungsi CRUD kita dapat melakukan manipulasi data di dalam database melalui aplikasi yang dibuat. Pada tugas praktikum ini kita belajar bagaimana membuat aplikasi CRUD dengan menggunakan Python dengan database yang dipakai adalah MySQL. Untuk membuat aplikasi web CRUD di python kalian perlu menyiapkan beberapa hal seperti: 



Modul PyMySQL



PyMySQL merupakan salah satu interface atau modul yang tersedia di dalam python, library ini berfungsi untuk menghubungkan ke server database mysql dengan menggunakan python. 



XAMPP XAMPP adalah perangkat lunak bebas, yang mendukung banyak sistem operasi, merupakan kompilasi dari beberapa program. Fungsinya adalah sebagai server yang berdiri sendiri, yang terdiri atas program Apache HTTP Server, MySQL database, dan penerjemah bahasa yang ditulis dengan bahasa pemrograman PHP dan Perl.







Modul PyQt PyQt merupakan aplikasi lintas-platform dan UI framework yang dipakai untuk mengembangkan aplikasi-aplikasi GUI. PyQy dikenal juga sebagai toolkit widget karena menyediakan sejumlah widget seperti  tombol, label, textbox dan lain-lain yang diperlukan dalam merancang sebuah GUI.



VII.



Referensi



1. https://medium.com/ngulikid/https-medium-com-ngulikid-pyhton-2-belajar-crudkoneksi-database-dengan-pymysql-3e29870c60e9 2. https://medium.com/ngulikid/python-1-belajar-membuat-desain-aplikasi-destkop-guimenggunakan-pyqt5-tools-5f0b894cba47