8 0 6 MB
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