Modul7 8 DBMS
Modul7 8 DBMS
PRAKTIKUM
SISTEM MANAJEMEN BASIS DATA
A. TUJUAN
B. PETUNJUK
- Awali setiap praktikum dengan berdoa agar mendapatkan keberkahan dan kemudahan
dalam mengerjakan praktikum.
- Baca buku/panduan dengan seksama dan pahami tujuan dan dasar teori dengan baik.
- Kerjakan latihan-latihan dan tugas-tugas praktikum dengan baik, benar, sabar, teliti, dan
jujur.
- Tanyakan kepada asisten praktikum/dosen pengampu apabila ada hal dalam buku/panduan
yang kurang jelas.
C. DASAR TEORI
Silahkan membaca buku Pemrograman GUI: Python dan Database dari halaman 80 s.d 122.
Source Code :
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from LineEditKelas import *
class siswa:
nama = ""
def __init__(self,nama):
self.nama = nama
def getNama(self):
return self.nama
class FormKu(QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.tampilPesan)
self.show()
def tampilPesan(self):
objSiswa = siswa(self.ui.leNama.text())
self.ui.LabelOutput.setText("Hallo "+objSiswa.getNama())
if __name__=="__main__":
app = QApplication(sys.argv)
w = FormKu()
w.show
sys.exit(app.exec_())
Penjelasan :
Dengan membuat kelas dengan nama siswa yang mengembalikan nilai
Self.siswa sehingga objek yang dibuat mengambil masukkan dari line edit yang kemudian
dikembalikan oleh class siswa
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from PanggilKelasSiswa import *
class siswa:
nama = ""
def __init__(self,kode,nama):
self.nama = nama
self.kode = kode
def getKode(self):
return self.kode
def getNama(self):
return self.nama
class FormKu(QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.tampilPesan)
self.show()
def tampilPesan(self):
objSiswa = siswa(self.ui.leKode.text() , self.ui.leNama.text())
self.ui.LabelOutput.setText("Kode: "+objSiswa.getKode() +"Nama :
"+objSiswa.getNama())
if __name__=="__main__":
app = QApplication(sys.argv)
w = FormKu()
w.show
sys.exit(app.exec_())
Penjelasan :
Memiliki cara kerja yang sama dengan program nomor 1,namun pada program ini
ditambahkan satu masukkan lagi yaitu line edit untuk meng-input kode siswa. Sehingga
dalam class siswa dibuat satu fungsi lagi yaitu getCode untuk mengembalikan value dari
leKode.
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from pewarisan import *
class siswa:
nama = ""
kode = ""
def __init__(self,kode,nama):
self.nama = nama
self.kode = kode
def getKode(self):
return self.kode
def getNama(self):
return self.nama
class nilai(siswa):
nilaiSejarah = 0
nilaiGeogragi = 0
def __init__(self,kode,nama,nilaiSejarah,nilaiGeografi):
siswa.__init__(self,kode,nama)
self.nilaiSejarah = nilaiSejarah
self.nilaiGeografi = nilaiGeografi
def getNilaiSejarah(self):
return self.nilaiSejarah
def getNilaiGeografi(self):
return self.nilaiGeografi
class FormKu(QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.pushButton.clicked.connect(self.tampilPesan)
self.show()
def tampilPesan(self):
objNilai = nilai(self.ui.lineEdit.text(),
self.ui.lineEdit_2.text(),
self.ui.lineEdit_3.text(),
self.ui.lineEdit_4.text())
self.ui.label_5.setText("Kode : "+objNilai.getKode()+
" Nama : "+objNilai.getNama()+
"\nNilai Sejarah :
"+objNilai.getNilaiSejarah()+
" Nilai Geografi :
"+objNilai.getNilaiGeografi())
if __name__=="__main__":
app = QApplication(sys.argv)
w = FormKu()
w.show
sys.exit(app.exec_())
Penjelasan :
Pada aplikasi ditambahkan 2 line edit untuk menerima masukkan nilai geografi dan
sejarah, dan untuk dua masukkan tersebut dibuatkan class khusus yang dengan nama class
nilai yang mewarisi isi dari class siswa, dan 2 fungsi didalam nya digunakan unutuk
mengembalikan nilai sejarah dan geografi
Screenshot GUI program hasil eksekusi dan bukti komponen GUI-nya aktif tempelkan di
bawah ini:
Source Code :
import sys
from PyQt5.QtWidgets import QDialog, QApplication
from guiApp import *
class siswa:
nama = ""
kode = ""
def __init__(self,kode,nama):
self.kode = kode
self.nama = nama
def getKode(self):
return self.kode
def getNama(self):
return self.nama
class nilai(siswa):
nilaiSejarah = 0
nilaiGeografi = 0
super().__init__(kode, nama)
self.nilaiSejarah = nilaiSejarah
self.nilaiGeografi = nilaiGeografi
def getNilaiSejarah(self):
return self.nilaiSejarah
def getNilaiGeografi(self):
return self.nilaiGeografi
class hasil(nilai):
nilaiTotal = 0
presentase = 0
class formKu(QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.tombol.clicked.connect(self.tampilPesan)
self.show()
def tampilPesan(self):
objHasil = hasil(self.ui.leKode.text(),self.ui.leNama.text(),
int(self.ui.leSejarah.text()),
int(self.ui.leGeografi.text()))
self.ui.leTotal.setText(str(objHasil.getNilaiTotal()))
self.ui.lePresentase.setText(str(objHasil.getPresentase()))
if __name__=="__main__":
app = QApplication(sys.argv)
w = formKu()
w.show()
sys.exit(app.exec_())
Penjelasan :
Program ini merupakan bentuk terakhir dari program 1,2,dan 3. Pada program ini dibuat 1
lagi class presentase() yang mewarisi nilai dari class nilai(), sehingga ada 3 class dalam
program yaitu:
1. Class siswa()
2. Class nilai(siswa)
3. Class presentasi(nilai)
Dimana class siswa adalah parent class dari kedua class nilai dan presentase.
Class presentase digunakan untuk menghitung nilai total dan rata-rata siswa dari nilai
sejarah dan geografi dan mengemballikan nilai total dan rata-rata tersebut.
import sys
from PyQt5.QtWidgets import QDialog,QApplication,QInputDialog
#from design import *
import design as AppUI
class formKu(QDialog):
def __init__(self):
super().__init__()
self.ui = AppUI.Ui_Dialog()
self.ui.setupUi(self)
self.ui.pbNegara.clicked.connect(self.tampilPesan)
self.show()
def tampilPesan(self):
negara = ("Indonesia","Singapura","Malaysia","Jepang","USA","Jerman",
"Indonesia","Indonesia","Indonesia","Indonesia",)
namaNegara, ok = QInputDialog.getItem(self,"Dialog Masukan","Daftar
Negara",negara,
0,False)
if ok and namaNegara:
self.ui.leNegara.setText(namaNegara)
if __name__=="__main__":
app = QApplication(sys.argv)
w = formKu()
w.show()
sys.exit(app.exec_())
Penjelasan :
Pada file hasil convert .ui ke .py sebuah kelas dengan nama dari objek level atas
diciptakan yang dibubuhi awalan Ui_. Jadi, untuk objek level atas Dialog, kelas Ui_Dialog
diciptakan dan menyimpan elemen-elemen antarmuka dari widget
import sys
from PyQt5.QtWidgets import QDialog,QApplication,QColorDialog
from PyQt5.QtGui import QColor
from PyQt5.QtGui import *
# from design import *
import design as AppUI
class formKu(QDialog):
def __init__(self):
super().__init__()
warna = QColor(0,0,0)
self.ui = AppUI.Ui_Dialog()
self.ui.setupUi(self)
self.ui.frameWarna.setStyleSheet("QWidget {background-color:%s}"
%warna.name())
self.ui.pbWarna.clicked.connect(self.tampilWarna)
self.show()
def tampilWarna(self):
warna = QColorDialog.getColor()
if warna.isValid():
self.ui.frameWarna.setStyleSheet("QWidget { background-color:
%s }"
%warna.name())
self.ui.labelWarna.setText("Anda memilih warna dengan kode :
"+str(warna.name()))
if __name__=="__main__":
app = QApplication(sys.argv)
w = formKu()
w.show()
sys.exit(app.exec_())
Penjelasan :
Module QcolorDialog bsia digunakan untuk melakukan custom warna dan mengetahui
code warna yang dipilih.
Screenshot GUI program hasil eksekusi dan bukti komponen GUI-nya aktif tempelkan
dibawah ini:
import sys
from PyQt5.QtWidgets import QDialog,QApplication,QFontDialog
from design import *
class fontKu(QDialog):
def __init__(self):
super().__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.ui.pbFont.clicked.connect(self.ubahFont)
self.show()
def ubahFont(self):
font, ok = QFontDialog.getFont()
if ok:
self.ui.textEdit.setFont(font)
if __name__=="__main__":
app = QApplication(sys.argv)
w = fontKu()
w.show()
sys.exit(app.exec_())
Penjelasan :
Dengan menggunakan QFontDialog, tidak hanya memberi akses untuk mengubah jenis
font pada teks namun langsung memberi fitur untuk melakukan custom ukuran,style,efek.
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QAction,QFileDialog
from design import *
class formKu(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.actionBuka.triggered.connect(self.bukaDialogFile)
self.ui.actionSimpan.triggered.connect(self.simpanDialogFile)
self.show()
def bukaDialogFile(self):
fnama = QFileDialog.getOpenFileName(self,'Buka File','/home')
if fnama[0]:
f = open(fnama[0],'r')
with f:
data = f.read()
self.ui.textEdit.setText(data)
def simpanDialogFile(self):
opsi = QFileDialog.Options()
opsi != QFileDialog.DontUseNativeDialog
namaFile, _ =
QFileDialog.getSaveFileName(self,"QFileDialog.getSaveFileName()",""
,"Semua File (*);;File Teks (*.txt)",
options = opsi)
f = open(namaFile,'w')
teks = self.ui.textEdit.toPlainText()
f.write(teks)
f.close()
if __name__=="__main__":
app = QApplication(sys.argv)
w = formKu()
w.show()
sys.exit(app.exec_())
F. KESIMPULAN
Kesimpulan apa yang telah diperoleh setelah melaksanakan praktikum ini:
Penggunakan OOP untuk membuat sebuah aplikasi tingkat atas yang memerlukan metode
class,pewarisan dll. Dan Menggunakan Module Dialog untuk berbagai kebutuhan spesifik
seperti menyimpan file,melakukan custom warna, dll
G. DAFTAR PUSTAKA