Dokumen Final Project Python

Embed Size (px)

Citation preview

  • 8/18/2019 Dokumen Final Project Python

    1/61

     

    FINAL PROJECT DOCUMENT

    MATA KULIAH ALGORITMA DAN PEMROGRAMAN

    Penjualan Warnet 

    OLEH:

    Nazar Bhakti

    2015.201.00099

    Executive 1

    PROGRAM STUDI ALGORITMA DAN PEMROGRAMAN

    STMIK SENTRA PENDIDIKAN BISNIS 2015

  • 8/18/2019 Dokumen Final Project Python

    2/61

     

    KATA PENGANTAR

     Assalamu’alaikum warahmatullahi wabarakatuh.

     Alhamdulillahirabbilalamin, banyak nikmat yang Allah berikan, tetapi

    sedikit sekali yang kita ingat. Segala puji hanya layak untuk Allah atas segala

    berkat, rahmat, taufik, serta hidayah-Nya yang tiada terkira besarnya,

    sehingga saya dapat menyelesaikan tugas hasil laporan Final Project ini.

    Dalam penyusunannya, saya mengucapkan terimakasih kepada Dosen

    yang mengajar dan teman-teman seperjuangan saya di kelas yaitu Bapak

     Yusuf Wibisono , Bapak Thami Rusdi Agus, Iwan Sutandi , Natanael , dan

    seluruh Executive 1 yang telah memberikan dukungan, kasih, dan

    kepercayaan yang begitu besar. Dari sanalah semua kesuksesan ini berawal,

    semoga semua ini bisa memberikan sedikit kebahagiaan dan menuntun pada

    langkah yang lebih baik lagi.

    Meskipun saya berharap isi dari laporan program saya ini bebas dari

    kekurangan dan kesalahan, namun selalu ada yang kurang. Oleh karena itu,

    saya mengharapkan kritik dan saran yang membangun agar tugas makalah

    praktikum kimia ini dapat lebih baik lagi.

     Akhir kata saya mengucapkan terimakasih, semoga hasil laporan

    praktikum saya ini bermanfaat.

    Samarinda , 4 Januari 2016

  • 8/18/2019 Dokumen Final Project Python

    3/61

    DAFTAR ISI

    KATA PENGANTAR…………….……………….……………………………….…………………2

    DAFTAR ISI……………………………………………………………………………………………3

    BAB I PENDAHULUAN……………………………………………………………………………..4

     A.  LATAR BELAKANG…………………………………………………………………………4

    B.  TUJUAN & MANFAAT…………………………………………………………………….4

    C.  RUANG LINGKUP………………………………………………………………………….5

    D.  METODE PENELITIAN……………………………………………………………………5

    E.  PERANGKAT YANG DIGUNAKAN…………………………………………………….5

    BAB II DOKUMENTASI TEKNIS………………………………………………………………..6

     A.  GAMBARAN PROSES……………………………………………………………………..6

    B.  DATABASE YANG DIGUNAKAN……………………………………………………….6

    C.  DOKUMENTASI PROGRAM…………………………………………………………….8

    BAB III HASIL PROGRAM………………………………………………………………………..7

     A.  MENU UTAMA…………………………………………………………………………….56

    B.  ENTRY DATA………………………………………………………………………………57

    C.  PROSES…….……………………………………………………………………………….60

    D.  LAPORAN..…………………………………………………………………………………60

  • 8/18/2019 Dokumen Final Project Python

    4/61

    BAB I

    PENDAHULUAN

     A.  Latar Belakang

    Komputer merupakan suatu alat hasil teknologi hasil

    perkembangan manusia, di zaman globalisasi ini rasanya kurang lengkap

    apabila dalam suatu instansi/perusahaan atau pun usaha pribadi tidak

    dilengkapi dengan komputer. Salah satu media untuk mempercepat

    pekerjaan dan hasilnya pun memuaskan.

    Dalam Final Project yang saya ambil ini membuat sebuah aplikasi

    yang membantu penjualan dalam bisnis rata-rata milik pribadi yaitu

    warung internet (warnet). Dalam warung internet sebuah kios yang

    memiliki banyak komputer untuk di sewakan bagi pengakses Internet.

    Harus ada software untuk pembelian waktu disana, Karena itu saya

    tertarik untuk membuat aplikasi simple untuk bisnis rata-rata yang dibuat

    secara pribadi tersebut.

    B.  Tujuan & Manfaat

     Aplikasi yang saya buat berguna pada usaha-usaha mata

    pencaharian dalam bisnis Warung Internet (warnet). Dengan Aplikasi

    yang saya buat ini usaha warnet dapat berjalan lancar karena kita dapat

    menghitung dan mencatat tarif, waktu dan jenis penyewaan secara tepat.

    Begitu banyak keuntungan apabila kita menggunakan Aplikasi ini dalam

    usaha warnet. Diantaranya tadi seperti yang disebutkan sebelumnya,

    tidak akan ada yang saling dirugikan antara pihak klien (user) dengan

    pemilik (owner), selain itu pula untuk pihak pemilik (owner) tidak perlu

    khawatir akan kecurangan pegawai (operator) dalam menjaga usaha

  • 8/18/2019 Dokumen Final Project Python

    5/61

    pemilik warnet tersebut, karena semua kegiatan jual beli jasa warnet

    akan tercatat pada Aplikasi ini.

    C. 

    Ruang Lingkup

     Aplikasi yang saya buat ini masih dalam tahap penjualan,

    pendaftaran member , data operator , ganti password, laporan penjualan.

    Sedangkan dalam program warnet kita harus membuat sedetail mungkin

    dimana pc client dan server itu berbeda program, penghitungan waktu

    pemain saat menyewa sebuah computer.

    D. 

    Metode Penelitian

    Metode yang saya gunakan untuk membuat program ini

    memahami dari latihan-latihan yang diberikan oleh Pak Yusuf Wibisono ,

    Pak Thami Rusdi. Dan saya sering minta saran kepada teman sekelas

    saya Iwan Sutandi, Natanael. Ada pula mencari sedikit refrensi di google.

    E. 

    Perangkat Yang Digunakan

    Perangkat keras yang saya gunakan dalam membuat program

    tugas akhir ialah:

    Laptop dengan spesifikasi:

     Acer Aspire 4738

    Dan Perangkat lunak yang saya gunakan ialah:

    Python 3.4

    Xampp mysql

    HeidiSQL

  • 8/18/2019 Dokumen Final Project Python

    6/61

    BAB II

    DOKUMENTASI TEKNIS

     A.  Gambaran Proses

     Awal membuka aplikasi yakni Invsplash , setelah itu langsung

    keluar login untuk ke menu program. Login wajib memakai user operator

    dan yang bisa login di form tersebut adalah operator dan owner warnet,

    karena data login terhubung langsung ke database pegawai. Setelah

    berhasil login langsung di tampilkan dengan MenuWarnet sederhana

    program saya. Disana terdapat image button untuk memproses program-

    program yang saya buat yaitu:

    1.  Pembelian Vocher

    2.  Data Member

    3.  Pendaftaran Member

    4.  Ganti Password Member

    5.  Penambahan Tarif

    6.  Penambahan Operator

    7.  Laporan Transaksi

    8.  Laporan Data Member

    B.  Database Yang Digunakan

  • 8/18/2019 Dokumen Final Project Python

    7/61

    Dalam program yang saya buat saya memberi nama database

    tersebut yaitu ONENET, saya ingin sedikit menjelaskan tentang database

    ini yabg berisi 4 table di dalam nya.

    1.  Data_operator

     

    Data operator ini untuk data pegawai yang bekerja di warnet

    tersebut, database ini juga kunci dari program saya dimana

    orang yang terdata dalam yang database yang bisa membuka

    program warnet, karena saya membuat form login langsung

    terhubung dengan nama operator dan password.

    2.  Data_penyewa

    Data penyewa database ini untuk menampung data penyewa ,

    dalam form pembelian terhubung dengan id_member

  • 8/18/2019 Dokumen Final Project Python

    8/61

    3.  Pembelian_vocher

    Pembelian vocher ini yang paling penting dalam program yang

    saya buat, database ini menampung semua transaksi dalam

    program warnet , dalam untuk laporan penjualan pun

    mengambil dari database ini.

    4.  Tarif

    Tarif database ini terhubung pada form pembelian dimana

    untuk menentukan waktu penyewaan computer dan harga

    yang akan di bayar.

    C.  Dokumentasi Program

    1. 

    MenuWarnet

    from tkinter import *

    import tkinter.ttk as ttk

    import tkinter.messagebox as mb

    from FormPembelian import *

  • 8/18/2019 Dokumen Final Project Python

    9/61

    from Daftar_Member import *

    from addOP import *

    from addtarif import *

    from Data_Penyewa import *

    from Ganti_Pass import *

    from Laporan import *

    class MenuUtama():

    def __init__(self, parent, title):

    self.parent = parentparent.title(title)

    parent.geometry("+220+20")

    parent.resizable(width=False, height=False)

    parent.protocol('WM_DELETE_WINDOW', self.onPass)

    self.aturKomponen()

    def pembelianvocher(self):

    root = Tk()

    FormPembelian(root, "Pembelian Vocher")

    root.mainloop()

    def addmember(self):

    root = Tk()

    EntryMember(root, ":: DAFTAR MEMBER ::")

    root.mainloop()

    def addOP(self):

    root = Tk()

    EntryOperator(root, ":: TAMBAH OPERATOR ::")

  • 8/18/2019 Dokumen Final Project Python

    10/61

      root.mainloop()

    def addtarif(self):

    root = Tk()

    EntryMember(root, "Tambah Tarif")

    root.mainloop()

    def datamember(self):

    root = Tk()

    TampilStock(root, "Data Member ONENET e-spot")root.mainloop()

    def gantipass(self):

    root = Tk()

    EditStock(root, "GANTI PASSWORD")

    root.mainloop()

    def onClose(self, event=None):

    self.parent.destroy()

    def onPass(self):

    self.onClose()

    pass

    def aturKomponen(self):

    # atur main frame

    btnFrame = Frame(self.parent,bg='black')

  • 8/18/2019 Dokumen Final Project Python

    11/61

      btnFrame.pack(fill=BOTH, expand=YES)

    MainFrame = Frame(self.parent,bg='black')

    MainFrame.pack(fill=BOTH, expand=YES)

    Label(btnFrame, text=' ',bg='black').grid(row=0,column=0,

    pady=20)

    #button image

    self.imgTambah = PhotoImage(file='./icon/member.gif')

    self.btnTambah = Button(btnFrame, text='Member',

    command=self.datamember ,bg='black',fg='white',image=self.imgTambah,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=0)

    self.imgBuy = PhotoImage(file='./icon/buy.gif')

    self.btnTambah = Button(btnFrame, text='Buy',

    command=self.pembelianvocher, bg='black',fg='white',

    image=self.imgBuy,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=1)

    self.imgReqmem = PhotoImage(file='./icon/addmem.gif')

    self.btnTambah = Button(btnFrame,

    text='AddMember',command=self.addmember, bg='black',fg='white',

    image=self.imgReqmem,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=2)

  • 8/18/2019 Dokumen Final Project Python

    12/61

     

    self.imgReqOP = PhotoImage(file='./icon/addoperator.gif')

    self.btnTambah = Button(btnFrame,

    text='AddOP',command=self.addOP, bg='black',fg='white',

    image=self.imgReqOP,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=3)

    self.imgReqjam = PhotoImage(file='./icon/addjam.gif')

    self.btnTambah = Button(btnFrame,

    text='AddTarif',command=self.addtarif, bg='black',fg='white',image=self.imgReqjam,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=4)

    self.imgPass = PhotoImage(file='./icon/Pass.gif')

    self.btnTambah = Button(btnFrame,

    text='Password',command=self.gantipass ,bg='black',fg='white',

    image=self.imgPass,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=5)

    self.imgTrs = PhotoImage(file='./icon/reportmember.gif')

    self.btnTambah = Button(btnFrame,

    text='ReportTrs',command=lap_Transaksi , bg='black',fg='white',

    image=self.imgTrs,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=6)

    self.imgRmember = PhotoImage(file='./icon/reportmem.gif')

  • 8/18/2019 Dokumen Final Project Python

    13/61

      self.btnTambah = Button(btnFrame,

    text='ReportMem',command=lap_member, bg='black',fg='white',

    image=self.imgRmember,

    compound='top', width=70)

    self.btnTambah.grid(row=0, column=7)

    # setting tampilan menu

    self.mainMenu = Menu(self.parent)

    self.parent.config(menu=self.mainMenu)

    # sub menu :: File

    self.input = Menu(self.mainMenu)

    self.input.add_command(label='Data Member',

    underline=5, command=self.datamember)

    self.input.add_command(label='Pendaftaran Member',

    underline=5, command=self.addmember)

    self.input.add_command(label='Pendaftaran Operator',

    underline=5,command=self.addOP)

    self.input.add_command(label='Tambah Tarif',

    underline=5,command=self.addtarif)

    self.input.add_command(label='Ganti Password',

    underline=5, command=self.gantipass)

    self.mainMenu.add_cascade(label='File',

    menu=self.input, underline=0)

    # sub menu :: Transaksi

    self.transaksi = Menu(self.mainMenu)

    self.transaksi.add_command(label='Transaksi Penjualan',

    underline=10, command=self.pembelianvocher)

  • 8/18/2019 Dokumen Final Project Python

    14/61

      self.mainMenu.add_cascade(label='Transaksi',

    menu=self.transaksi, underline=0)

    # sub menu :: Laporan

    self.laporan = Menu(self.mainMenu)

    self.laporan.add_command(label='Penjualan Vocher',

    underline=16, command=lap_Transaksi)

    self.laporan.add_command(label='Data Member',

    underline=16, command=lap_member)

    self.mainMenu.add_cascade(label='Laporan',

    menu=self.laporan, underline=0)

    # sub menu :: Sistem

    self.sistem = Menu(self.mainMenu)

    self.sistem.add_command(label='Tentang Program',

    underline=0)

    self.mainMenu.add_cascade(label='Sistem',

    menu=self.sistem, underline=0)

    # setting background image via Canvas

    self.bgImage = PhotoImage(file="./data/background.GIF")

    bgCanvas = Canvas(MainFrame, width=901, height=600)

    bgCanvas.pack(fill=BOTH, expand=YES)

    bgCanvas.create_image(0, 0, image=self.bgImage,

    anchor=NW)

    self.statusBar = Label(MainFrame, text="", bd=1,

    relief=SUNKEN, anchor=E)

    self.statusBar.pack(side=BOTTOM, fill=X)

  • 8/18/2019 Dokumen Final Project Python

    15/61

     

    if __name__ == '__main__':

    root = Tk()

    aplikasi = MenuUtama(root, "MENU ONENET e-Sport ")

    root.mainloop()

    2.  FormPembelian

    import tkinter

    from tkinter import *

    from tkinter import ttk

    import datetime

    import time

    import pymysql

    import random

     judul_kolom = ("Menit","Harga")

    class FormPembelian:

    def __init__(self, parent, title):

    self.parent = parent

  • 8/18/2019 Dokumen Final Project Python

    16/61

      self.parent.title(title)

    self.parent.protocol("WM_DELETE_WINDOW",

    self.onClose)

    lebar = 600

    tinggi = 600

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i"

    %(lebar,tinggi,setTengahX,setTengahY))

    self.parent.resizable(False, False)

    self.parent['bg']='orange'self.aturKomponen()

    def aturKomponen(self):

    labelFrame = Frame(self.parent,bg='orange')

    labelFrame.pack(side=TOP)

    notransFrame = Frame(self.parent,bg='orange')

    notransFrame.pack(side=TOP)

    mainFrame = Frame(self.parent,bg='orange')

    mainFrame.pack(side=TOP)

    btnFrame = Frame(self.parent,bg='orange')

    btnFrame.pack(side=BOTTOM)

    Label(labelFrame, text=' ',bg='orange').grid(row=0,column=0)

    Label(notransFrame, text='

    ',bg='orange').grid(row=1,column=0, pady=10)

    Label(btnFrame, text=' ',bg='orange').grid(row=3,column=0)

  • 8/18/2019 Dokumen Final Project Python

    17/61

  • 8/18/2019 Dokumen Final Project Python

    18/61

     

    Label(btnFrame, text='Total Pembayaran

    ',bg='orange').grid(row=0,\

    column=0, sticky=W, pady=15)

    self.entTtlPembayaran = Entry(btnFrame, width=23)

    self.entTtlPembayaran.grid(row=0, column=1, sticky=E)

    Label(btnFrame, text='Total Waktu

    ',bg='orange').grid(row=1,\

    column=0, sticky=W)self.entTtlWaktu = Entry(btnFrame, width=23)

    self.entTtlWaktu.grid(row=1, column=1, sticky=E)

    Label(btnFrame,

    text='Operator',bg='orange').grid(row=2,column=0, sticky=W, pady=15)

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="localhost",

    port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT Nama_Operator FROM

    data_operator")

    data_Operator = cur.fetchall()

    self.cbOperator =

    ttk.Combobox(btnFrame,values=data_Operator,

    state='readonly',width=15)

    self.cbOperator.grid(row=2,column=1,sticky=W,padx=10)

  • 8/18/2019 Dokumen Final Project Python

    19/61

     

    self.btnBeli = Button(btnFrame,

    text='Beli',bg="blue",fg="white",width=20,command=self.onSave)

    self.btnBeli.grid(row=3, column=1)

    self.btnReset = Button(btnFrame,

    text='Reset',bg="red",fg="white",width=10,command=self.onReset)

    self.btnReset.grid(row=3, column=2,padx=10)

    self.fr_data = Frame(mainFrame, bd=10)

    self.fr_data.pack(fill=BOTH, expand=YES)self.trvTabel = ttk.Treeview(self.fr_data,

    columns=judul_kolom,show='headings')

    self.trvTabel.bind("", self.OnDoubleClick)

    sbVer = Scrollbar(self.fr_data,

    orient='vertical',command=self.trvTabel.yview)

    sbHor = Scrollbar(self.fr_data,

    orient='horizontal',command=self.trvTabel.yview)

    sbVer.pack(side=RIGHT, fill=Y)

    sbHor.pack(side=BOTTOM, fill=X)

    self.trvTabel.pack(side=TOP, fill=BOTH)

    self.table()

    def onCari(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12', host='localhost',\

    port=3306, autocommit=True)

    cur = con.cursor()

  • 8/18/2019 Dokumen Final Project Python

    20/61

      cKode = self.entCekID.get()

    if len(cKode) == 0:

    messagebox.showwarning(title="Peringatan",message="Nama

    Member jangan kosong dong.")

    self.entCekID.focus_set()

    return

    sql1 = "SELECT Password "

    sql2 = "FROM data_penyewa WHERE ID_Member = %s"

    cur.execute(sql1+sql2,cKode)data = cur.fetchone()

    if cur.rowcount> 0:

    messagebox.showinfo(title="Informasi",\

    message="Data Benar")

    else:

    messagebox.showinfo(title="Informasi",\

    message="Data tidak ditemukan")

    self.entKode.focus_set()

    return

    cur.close()

    con.close()

    def OnDoubleClick(self, event):

    self.entTtlWaktu.delete(0, END)

  • 8/18/2019 Dokumen Final Project Python

    21/61

      self.entTtlPembayaran.delete(0, END)

    it = self.trvTabel.selection()[0]

    ite = self.trvTabel.item(it)["values"]

    self.entTtlWaktu.insert(END, ite[0])

    self.entTtlPembayaran.insert(END, ite[1])

    def table(self):

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="localhost",

    port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT * FROM tarif")

    data_table = cur.fetchall()

    for kolom in judul_kolom:

    self.trvTabel.heading(kolom,text=kolom)

    self.trvTabel.column("Menit", width=110,anchor="n")

    self.trvTabel.column("Harga", width=240,anchor="n")

    i=0

    for dat in data_table:

  • 8/18/2019 Dokumen Final Project Python

    22/61

      if(i%2):

    baris="genap"

    else:

    baris="ganjil"

    self.trvTabel.insert('','end', values=dat, tags=baris)

    i+=1

    self.trvTabel.tag_configure("ganjil", background="#FFFFFF")

    self.trvTabel.tag_configure("genap",

    background="whitesmoke")

    cur.close()

    con.close()

    def onSave(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12',

    host='127.0.0.1', port=3306,autocommit=True)

    cur = con.cursor()

    cTglKeluar = self.entTglKeluar.get()

    cNoTrans = self.entNoTrans.get()

    cCekID = self.entCekID.get()

    cTtlWaktu = self.entTtlWaktu.get()

    nTtlPembayaran = int(self.entTtlPembayaran.get())

    cOperator = self.cbOperator.get()

    sql = "INSERT INTO pembelian_vocher (No_Transaksi,

    ID_Member, Tgl_Pembelian, Paket_Jam, Harga, Operator)"+\

    "VALUES(%s,%s,%s,%s,%s,%s)"

  • 8/18/2019 Dokumen Final Project Python

    23/61

     

    cur.execute(sql,(cNoTrans,cCekID,cTglKeluar,cTtlWaktu,nTtlPembaya

    ran,cOperator))

    messagebox.showinfo(title="Informasi", \

    message="Data sudah di tersimpan.")

    self.onReset()

    cur.close()

    con.close()

    def onReset(self):

    self.entCekID.delete(0, END)

    self.entTtlWaktu.delete(0, END)

    self.entTtlWaktu.delete(0, END)

    self.entTtlPembayaran.delete(0, END)

    self.cbOperator.delete(0, END)

    self.entCekID.focus_set()

    def onClose(self, event=None):

    self.parent.destroy()

    ##root = Tk()

    ##FormPembelian(root, "Pembelian Vocher")

    ##root.mainloop()

    3.  Data_Penyewa

  • 8/18/2019 Dokumen Final Project Python

    24/61

    import tkinter.ttk

    from tkinter import *

    import pymysql

     judul_kolom = ("NO MEMBER","ID

    MEMBER","PASSWORD","TANGGAL DAFTAR")

    class TampilStock:

    def __init__(self,parent,judul):

    self.parent = parentself.parent.title(judul)

    lebar = 570

    tinggi = 400

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i" %(lebar, tinggi, setTengahX,

    setTengahY))

    self.parent.protocol("WM_DELETE_WINDOW", self.Tutup)

    self.parent.resizable(False,False)

    self.parent['bg']='orange'

    self.aturKomponen()

    self.isiTabel()

    def aturKomponen(self):

    kodeFrame = Frame(self.parent,bg='orange')

    kodeFrame.pack(side=TOP)

    mainFrame = Frame(self.parent)

    mainFrame.pack(fill=BOTH, expand=YES)

    fr_data = Frame(mainFrame, bd=10)

  • 8/18/2019 Dokumen Final Project Python

    25/61

      fr_data.pack(fill=BOTH, expand=YES)

    self.trvTabel = ttk.Treeview(fr_data,

    columns=judul_kolom,show='headings')

    sbVer = Scrollbar(fr_data,

    orient='vertical',command=self.trvTabel.yview)

    sbHor = Scrollbar(fr_data,

    orient='horizontal',command=self.trvTabel.yview)

    sbVer.pack(side=RIGHT, fill=Y)

    sbHor.pack(side=BOTTOM, fill=X)

    self.trvTabel.pack(side=LEFT, fill=BOTH)

    Label(kodeFrame, text='ONENET e-

    Sport',bg='orange').grid(row=0,column=1,sticky=N)

    Label(kodeFrame, text=' Data Member

    ',bg='orange').grid(row=1,column=1,sticky=N)

    def isiTabel(self):

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="localhost",

    port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT * FROM data_penyewa")

    data_penyewa = cur.fetchall()

    for kolom in judul_kolom:

    self.trvTabel.heading(kolom,text=kolom)

    self.trvTabel.column("NO MEMBER", width=80,anchor="center")

    self.trvTabel.column("ID MEMBER", width=180,anchor="n")

    self.trvTabel.column("PASSWORD",width=120,anchor="n")

  • 8/18/2019 Dokumen Final Project Python

    26/61

      self.trvTabel.column("TANGGAL

    DAFTAR",width=180,anchor="n")

    i=0

    for dat in data_penyewa:

    if(i%2):

    baris="genap"

    else:

    baris="ganjil"

    self.trvTabel.insert('', 'end', values=dat, tags=baris)

    i+=1

    self.trvTabel.tag_configure("ganjil", background="#FFFFFF")

    self.trvTabel.tag_configure("genap", background="whitesmoke")

    cur.close()

    con.close()

    def Tutup(self, event=None):

    self.parent.destroy()

    #root = Tk()

    #TampilStock(root, "Data Member ONENET e-spot")

    #root.mainloop()

    4. 

    Data_Member

    import tkinter

    from tkinter import *

    import pymysql

  • 8/18/2019 Dokumen Final Project Python

    27/61

    import datetime

    import time

    class EntryMember:

    def __init__(self, parent, title):

    self.parent = parent

    self.parent.title(title)

    self.parent.protocol("WM_DELETE_WINDOWS",

    self.onClose)

    lebar = 500tinggi = 220

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i" %(lebar,

    tinggi,setTengahX, setTengahY))

    self.parent.resizable(False,False)

    self.parent['bg']='orange'

    self.aturKomponen()

    def aturKomponen(self):

    mainFrame = Frame(self.parent,bg='orange')

    mainFrame.pack(side=TOP)

    btnFrame = Frame(self.parent,bg='orange')

    btnFrame.pack(side=BOTTOM)

    Label(mainFrame, text='ONENET e-

    Sport',bg='orange').grid(row=0,column=1,sticky=N)

  • 8/18/2019 Dokumen Final Project Python

    28/61

      Label(mainFrame, text='Pendaftaran

    Member',bg='orange').grid(row=1,column=1,sticky=N,pady=5)

    Label(mainFrame, text='ID

    Member',bg='orange').grid(row=2, column=0, sticky=W)

    self.entMember = Entry(mainFrame, width=25)

    self.entMember.grid(row=2, column=1,pady=5)

    self.btnCek = Button(mainFrame, text='Cek

    Member',bg='blue', fg='white',\

    command=self.onCekMember, width=10)self.btnCek.grid(row=2, column=2)

    Label(mainFrame, text="NO

    MEMBER",bg='orange').grid(row=3, column=0, sticky=W)

    self.entNomer = Entry(mainFrame, width=25)

    self.entNomer.grid(row=3, column=1,pady=5)

    Label(mainFrame, text="Password",bg='orange').grid(row=4,

    column=0, sticky=W)

    self.entPass = Entry(mainFrame, width=25)

    self.entPass.grid(row=4, column=1,pady=5)

    Label(mainFrame, text="Tanggal

    Pembuatan",bg='orange').grid(row=5, column=0, sticky=W)

    self.entTgl = Entry(mainFrame, width=25,)

    self.entTgl.grid(row=5, column=1)

    tgl = time.strftime("%Y%m%d")

    self.entTgl.insert(0, tgl)

  • 8/18/2019 Dokumen Final Project Python

    29/61

      self.btnSave = Button(btnFrame,

    text='Save',bg='blue',fg='white',\

    command=self.onSave, width=10)

    self.btnSave.grid(row=0, column=1, padx=5)

    self.btnCancel = Button(btnFrame,

    text='Clear',bg='red',fg='white',\

    command=self.onCancel, width=10)

    self.btnCancel.grid(row=0,column=2)

    def onClose(self, event=None):

    self.parent.destroy()

    def onCancel(self):

    self.entMember.delete(0, END)

    self.entNomer.delete(0, END)

    self.entPass.delete(0, END)

    self.entMember.focus_set()

    def onCekMember(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12',

    host='127.0.0.1', port=3306, autocommit=True)

    cur = con.cursor()

    cKode = self.entMember.get()

    if len(cKode) == 0:

    tkinter.messagebox.showwarning(title="Peringatan",\

  • 8/18/2019 Dokumen Final Project Python

    30/61

  • 8/18/2019 Dokumen Final Project Python

    31/61

  • 8/18/2019 Dokumen Final Project Python

    32/61

    5.  Add Op

    import tkinter

    from tkinter import *

    import pymysql

    class EntryOperator:

    def __init__(self, parent, title):

    self.parent = parent

    self.parent.title(title)self.parent.protocol("WM_DELETE_WINDOWS",

    self.onClose)

    lebar = 500

    tinggi = 240

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i" %(lebar,

    tinggi,setTengahX, setTengahY))

    self.parent.resizable(False,False)

    self.parent['bg']='orange'

    self.aturKomponen()

    def aturKomponen(self):

    mainFrame = Frame(self.parent,bg='orange')

    mainFrame.pack(side=TOP)

    btnFrame = Frame(self.parent,bg='orange',pady=10)

    btnFrame.pack(side=BOTTOM)

  • 8/18/2019 Dokumen Final Project Python

    33/61

      Label(mainFrame, text='ONENET e-

    Sport',bg='orange').grid(row=0,column=1,sticky=N)

    Label(mainFrame, text='Pendaftaran

    Operator',bg='orange').grid(row=1,column=1,sticky=N,pady=5)

    Label(mainFrame, text='Nama

    Operator',bg='orange').grid(row=2, column=0, sticky=W)

    self.entOP = Entry(mainFrame, width=25)

    self.entOP.grid(row=2, column=1,pady=5)

    self.btnCek = Button(mainFrame, text='Cek',bg='blue',fg='white',\

    command=self.onCekMember, width=10)

    self.btnCek.grid(row=2, column=2)

    Label(mainFrame, text="No

    Operator",bg='orange').grid(row=3, column=0, sticky=W)

    self.entNomer = Entry(mainFrame, width=25)

    self.entNomer.grid(row=3, column=1,pady=5)

    Label(mainFrame, text="Password",bg='orange').grid(row=4,

    column=0, sticky=W)

    self.entPass = Entry(mainFrame, width=25)

    self.entPass.grid(row=4, column=1,pady=5)

    Label(mainFrame, text="Alamat",bg='orange').grid(row=5,

    column=0, sticky=W)

    self.entalamat = Entry(mainFrame, width=25,)

    self.entalamat.grid(row=5, column=1,pady=5)

  • 8/18/2019 Dokumen Final Project Python

    34/61

      Label(mainFrame, text="Waktu

    Jaga",bg='orange').grid(row=6, column=0, sticky=W)

    Label(mainFrame,

    text="PAGI/MALAM",bg='orange').grid(row=6, column=2, sticky=W)

    self.entjaga = Entry(mainFrame, width=25)

    self.entjaga.grid(row=6, column=1,pady=5)

    self.btnSave = Button(btnFrame,

    text='Save',bg='blue',fg='white',\

    command=self.onSave, width=10)

    self.btnSave.grid(row=0, column=1, padx=5)

    self.btnCancel = Button(btnFrame,

    text='Clear',bg='red',fg='white',\

    command=self.onCancel, width=10)

    self.btnCancel.grid(row=0,column=2)

    def onClose(self, event=None):

    self.parent.destroy()

    def onCancel(self):

    self.entOP.delete(0, END)

    self.entNomer.delete(0, END)

    self.entPass.delete(0, END)

    self.entalamat.delete(0, END)

    self.entjaga.delete(0, END)

    self.entOP.focus_set()

  • 8/18/2019 Dokumen Final Project Python

    35/61

      def onCekMember(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12',

    host='127.0.0.1', port=3306, autocommit=True)

    cur = con.cursor()

    cKode = self.entOP.get()

    if len(cKode) == 0:

    tkinter.messagebox.showwarning(title="Peringatan",\

    message="Nama Operator tidak

    boleh kosong.")self.entOP.focus_set()

    else:

    sql = "SELECT No_Operator FROM data_operator

    WHERE Nama_Operator = %s"

    cur.execute(sql,cKode)

    data = cur.fetchall()

    pjg = len(data)

    if pjg > 0:

    curkode = con.cursor()

    sqlkode = "SELECT max(Nama_Operator) FROM

    data_operator"

    curkode.execute(sqlkode)

    maxkode = curkode.fetchone()

    tkinter.messagebox.showwarning(title="Peringatan",\

    message="Nama Operator

    sudah digunakan. Gunakan kode yang lain. "+\

    "kode terakhir yang telah

    digunakan adalah "+\

  • 8/18/2019 Dokumen Final Project Python

    36/61

  • 8/18/2019 Dokumen Final Project Python

    37/61

      con.close()

    #root = Tk()

    #EntryOperator(root, ":: TAMBAH OPERATOR ::")

    #root.mainloop()

    6. 

     Add Tarif

    import tkinter

    from tkinter import *

    import pymysql

    class EntryMember:

    def __init__(self, parent, title):

    self.parent = parent

    self.parent.title(title)

    self.parent.protocol("WM_DELETE_WINDOWS",

    self.onClose)

    lebar = 450

    tinggi = 160

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i" %(lebar,

    tinggi,setTengahX, setTengahY))

    self.parent.resizable(False,False)

  • 8/18/2019 Dokumen Final Project Python

    38/61

      self.parent['bg']='orange'

    self.aturKomponen()

    def aturKomponen(self):

    mainFrame = Frame(self.parent,bg='orange')

    mainFrame.pack(side=TOP)

    btnFrame = Frame(self.parent,bg='orange')

    btnFrame.pack(side=BOTTOM)

    Label(mainFrame, text='ONENET e-Sport',bg='orange').grid(row=0,column=1,sticky=N)

    Label(mainFrame, text='Penambahan

    Tarif',bg='orange').grid(row=1,column=1,sticky=N)

    Label(mainFrame, text='Waktu

    (Menit)',bg='orange').grid(row=2, column=0, sticky=W,pady=15)

    self.entWaktu = Entry(mainFrame, width=25)

    self.entWaktu.grid(row=2, column=1)

    self.btnCek = Button(mainFrame, text='Cek',bg='blue',

    fg='white',\

    command=self.onCekMember, width=10)

    self.btnCek.grid(row=2, column=2,padx=5)

    Label(mainFrame, text="Masukan

    Harga",bg='orange').grid(row=3, column=0, sticky=W)

    self.entHarga = Entry(mainFrame, width=25)

    self.entHarga.grid(row=3, column=1)

  • 8/18/2019 Dokumen Final Project Python

    39/61

     

    self.btnSave = Button(btnFrame,

    text='Save',bg='blue',fg='white',\

    command=self.onSave, width=10)

    self.btnSave.grid(row=0, column=1)

    self.btnCancel = Button(btnFrame,

    text='Clear',bg='red',fg='white',\

    command=self.onCancel, width=10)

    self.btnCancel.grid(row=0,column=2)

    def onClose(self, event=None):

    self.parent.destroy()

    def onCancel(self):

    self.entWaktu.delete(0, END)

    self.entHarga.delete(0, END)

    self.entWaktu.focus_set()

    def onCekMember(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12',

    host='127.0.0.1', port=3306, autocommit=True)

    cur = con.cursor()

    cKode = self.entWaktu.get()

  • 8/18/2019 Dokumen Final Project Python

    40/61

      if len(cKode) == 0:

    tkinter.messagebox.showwarning(title="Peringatan",\

    message="Wajib Masukan Waktu

    yang ingin di tambah.")

    self.entWaktu.focus_set()

    else:

    sql = "SELECT Harga FROM tarif WHERE Menit = %s"

    cur.execute(sql,cKode)

    data = cur.fetchall()

    pjg = len(data)

    if pjg > 0:curkode = con.cursor()

    sqlkode = "SELECT max(Menit) FROM tarif"

    curkode.execute(sqlkode)

    maxkode = curkode.fetchone()

    tkinter.messagebox.showwarning(title="Peringatan",\

    message="Kode sudah

    digunakan. Gunakan kode yang lain. "+\

    "kode terakhir yang telah

    digunakan adalah "+\

    str(maxkode[0])+".")

    self.entWaktu.focus_set()

    self.entHarga.get()

    else:

    tkinter.messagebox.showinfo(title="Amam", \

    message="Bisa digunakan")

    self.entHarga.focus_set()

    cur.close()

  • 8/18/2019 Dokumen Final Project Python

    41/61

      con.close()

    def onSave(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12',

    host='127.0.0.1', port=3306,autocommit=True)

    cur = con.cursor()

    cWaktu = self.entWaktu.get()

    nHarga = int(self.entHarga.get())

    sql = "INSERT INTO tarif (Menit, Harga)"+\

    "VALUES(%s,%s)"cur.execute(sql,(cWaktu,nHarga))

    messagebox.showinfo(title="Informasi", \

    message="Data sudah di tersimpan.")

    self.onCancel()

    cur.close()

    con.close()

    #root = Tk()

    #EntryMember(root, "Tambah Tarif")

    #root.mainloop()

    7.  Ganti_Pass

    from tkinter import *

    import pymysql

  • 8/18/2019 Dokumen Final Project Python

    42/61

     

    class EditStock:

    def __init__(self, parent, title):

    self.parent = parent

    self.parent.title(title)

    self.parent.protocol("WM_DELETE_WINDOW",

    self.onClose)

    lebar = 500

    tinggi = 185

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2self.parent.geometry("%ix%i+%i+%i"

    %(lebar,tinggi,setTengahX,setTengahY))

    self.parent.resizable(False, False)

    self.parent['bg']='orange'

    self.aturKomponen()

    def aturKomponen(self):

    kodeFrame = Frame(self.parent,bg='orange')

    kodeFrame.pack(side=TOP)

    btnFrame = Frame(self.parent,bg='orange')

    btnFrame.pack(side=BOTTOM)

    Label(kodeFrame, text='ONENET e-

    Sport',bg='orange').grid(row=0,column=1,sticky=N)

    Label(kodeFrame, text='Penggantian Password

    Member',bg='orange').grid(row=1,column=1,sticky=N,pady=15)

  • 8/18/2019 Dokumen Final Project Python

    43/61

     

    Label(kodeFrame, text='Nama

    Member',bg='orange').grid(row=2,column=0,sticky=E)

    self.entMember = Entry(kodeFrame,width=20)

    self.entMember.grid(row=2, column=1,sticky=N)

    self.btnCari = Button(kodeFrame, text='Cari',

    command=self.onCari,width=8,bg="blue",fg="white")

    self.btnCari.grid(row=2,column=3,sticky=E)

    Label(kodeFrame, text='Masukan Password

    Baru',bg='orange').grid(row=3,column=0, sticky=E, pady=5)

    self.entPass = Entry(kodeFrame, width=20)

    self.entPass.grid(row=3,column=1)

    self.cek = IntVar()

    self.btShowPass = Checkbutton(kodeFrame,

    text='Sembunyikan Password',bg='orange',

    variable=self.cek, command=self.LihatPassword)

    self.btShowPass.grid(row=4, column=1, sticky=W)

    self.btnSave = Button(btnFrame,

    text='Save',bg="blue",fg="white", command=self.onSave, width=10)

    self.btnSave.grid(row=0, column=1)

    self.btnCancel = Button(btnFrame,

    text='Clear',bg="red",fg="white",command=self.onClear, width=10)

    self.btnCancel.grid(row=0, column=2)

  • 8/18/2019 Dokumen Final Project Python

    44/61

     

    self.btnDelete = Button(btnFrame,

    text='Delete',bg="red",fg="white", command=self.onDelete, width=10)

    self.btnDelete.grid(row=0, column=3)

    def onClose(self, event=None):

    self.parent.destroy()

    def onClear(self):

    self.entPass.delete(0, END)

    def LihatPassword(self, event=None):

    nilaiCek = self.cek.get()

    if nilaiCek== 1:

    self.entPass['show'] = '*'

    else:

    self.entPass['show'] = ''

    def onCari(self):

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12', host='localhost',\

    port=3306, autocommit=True)

    cur = con.cursor()

    cKode = self.entMember.get()

    if len(cKode) == 0:

  • 8/18/2019 Dokumen Final Project Python

    45/61

     

    messagebox.showwarning(title="Peringatan",message="Nama

    Member jangan kosong dong.")

    self.entMember.focus_set()

    return

    sql1 = "SELECT Password "

    sql2 = "FROM data_penyewa WHERE ID_Member = %s"

    cur.execute(sql1+sql2,cKode)

    data = cur.fetchone()

    if cur.rowcount> 0:self.onClear()

    self.entPass.insert(0, data[0])

    else:

    messagebox.showinfo(title="Informasi",\

    message="Data tidak ditemukan")

    self.onClear()

    self.entMember.focus_set()

    return

    cur.close()

    con.close()

    def onSave(self):

    cKode = self.entMember.get()

    cNama = self.entPass.get()

    if len(cKode) == 0:

    messagebox.showwarning(title="Peringatan",message="Kode barang

    kosong.")

  • 8/18/2019 Dokumen Final Project Python

    46/61

      self.entMember.focus_set()

    elif len(cNama) == 0 :

    messagebox.showwarning(title="Peringatan",message="Kode barang

    belum valid.")

    self.btnCari.focus_set()

    else:

    con = pymysql.connect(db='onenet', user='warnet',passwd='samarinda12', host="localhost",\

    port=3306, autocommit=True)

    cur = con.cursor()

    cKode = self.entMember.get()

    cNama = self.entPass.get()

    sql = "UPDATE data_penyewa SET Password=%s"+\

    "WHERE ID_Member =%s"

    cur.execute(sql,(cNama,cKode))

    messagebox.showinfo(title="Informasi", \

    message="Data sudah di tersimpan.")

    self.onClear()

    cur.close()

    con.close()

  • 8/18/2019 Dokumen Final Project Python

    47/61

      def onDelete(self):

    con = pymysql.connect(db='onenet', user='warnet',\

    passwd='samarinda12', host="localhost",

    port=3306,autocommit=True)

    cur = con.cursor()

    cKode = self.entMember.get()

    sql = "DELETE FROM data_penyewa WHERE ID_Member

    =%s"

    cur.execute(sql,cKode)

    messagebox.showinfo(title="Informasi", \

    message="Data sudah di hapus.")self.onClear()

    cur.close()

    con.close()

    #root = Tk()

    #EditStock(root, "GANTI PASSWORD")

    #root.mainloop()

    8.  Invsplash

    from invlogin import *

    from tkinter import *

    from PIL import Image, ImageTk

    class DemoSplashScreen:

    def __init__(self, parent):

    self.parent = parent

    self.aturSplash()

  • 8/18/2019 Dokumen Final Project Python

    48/61

      self.aturWindow()

    def aturSplash(self):

    self.gambar = Image.open('welcome.jpg')

    self.imgSplash = ImageTk.PhotoImage(self.gambar)

    def aturWindow(self):

    lebar, tinggi = self.gambar.size

    setengahLebar = (self.parent.winfo_screenwidth()-lebar)//2

    setengahTinggi = (self.parent.winfo_screenheight()-tinggi)//2

    self.parent.geometry("%ix%i+%i+%i" %(lebar, tinggi,setengahLebar,setengahTinggi))

    Label(self.parent, image=self.imgSplash).pack()

    if __name__ == '__main__':

    root = Tk()

    root.overrideredirect(True)

    app = DemoSplashScreen(root)

    root.after(4000, root.destroy)

    root.mainloop()

    root = Tk()

    root['bg']= "pink"

    app = LoginInv(root, "Login Menu Warnet")

    9. 

    Invlogin

    import subprocess

    from tkinter import *

    from tkinter import ttk

  • 8/18/2019 Dokumen Final Project Python

    49/61

    import pymysql

    class LoginInv:

    def __init__(self, parent, judul):

    self.parent = parent

    self.parent.title(judul)

    self.parent.protocol("WM_DELETE_WINDOW", self.Tutup)

    lebar = 310

    tinggi = 160

    setTengahX = (self.parent.winfo_screenwidth()-lebar)//2

    setTengahY = (self.parent.winfo_screenheight()-tinggi)//2self.parent.geometry("%ix%i+%i+%i" %(lebar, tinggi, setTengahX,

    setTengahY))

    self.parent.resizable(False, False)

    bg='orange'

    self.aturKomponen()

    self.cbLogin.focus_set()

    def aturKomponen(self):

    frameUtama = Frame(self.parent, bg='orange',bd=10)

    frameUtama.pack(fill=BOTH, expand=YES)

    frData = Frame(frameUtama, bg='orange', bd=5)

    frData.pack(fill=BOTH, expand=YES)

    Label(frData, text='Nama Pengguna', bg='orange').grid(row=0,

    column=0, sticky=W)

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="localhost",

    port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT Nama_Operator FROM data_operator")

  • 8/18/2019 Dokumen Final Project Python

    50/61

      data_Login = cur.fetchall()

    self.cbLogin = ttk.Combobox(frData,values=data_Login,

    state='readonly',width=18)

    self.cbLogin.grid(row=0,column=1,sticky=W,pady=10)

    Label(frData, text='Password', bg='orange',width=18).grid(row=1,

    column=0, sticky=W)

    self.entPass = Entry(frData, show='*')

    self.entPass.grid(row=1, column=1)

    self.cek = IntVar()

    self.cbShowPass = Checkbutton(frData, text='Tampilkan

    Password', bg='orange',variable=self.cek, command=self.lihatPassword)

    self.cbShowPass.grid(row=2, column=1, sticky=E)

    frTombol = Frame(frameUtama, bg='orange', bd=5)

    frTombol.pack(fill=BOTH, expand=YES)

    self.btnLogin = Button(frTombol, text='Login', bg='blue',

    command=self.prosesLogin)

    self.btnLogin.pack(side=LEFT, fill=BOTH, expand=YES)

    self.btnBatal = Button(frTombol, text='Batal', bg='red',

    command=self.Tutup)

    self.btnBatal.pack(side=LEFT, fill=BOTH, expand=YES)

    def prosesLogin(self, event=None):

    nmUser = self.cbLogin.get()

    passUser = self.entPass.get()

    con = pymysql.connect(db='onenet', user='warnet',

    passwd='samarinda12', host='127.0.0.1',

    port=3306,autocommit=True)

    cur = con.cursor()

  • 8/18/2019 Dokumen Final Project Python

    51/61

      if nmUser=='' or passUser=='':

    tkinter.messagebox.showwarning('Warning', 'User atau

    Password tidak boleh kosong', parent=self.parent)

    self.cbLogin.focus_set()

    else:

    sql = "SELECT Nama_Operator, Password FROM

    data_operator WHERE Nama_Operator = %s AND Password = %s"

    cur.execute(sql,(nmUser,passUser))

    if cur.rowcount > 0:

    self.Tutup()

    subprocess.call("MenuWarnet.py",shell=True)else:

    messagebox.showwarning('Warning', 'User atau Password

    SALAH!!', parent=self.parent)

    self.Hapus()

    def lihatPassword(self, event=None):

    nilaiCek = self.cek.get()

    if nilaiCek== 1:

    self.entPass['show'] = ''

    else:

    self.entPass['show'] = '*'

    def Tutup(self, event=None):

    self.parent.destroy()

    def Hapus(self, event=None):

    self.cbLogin.delete(0, END)

    self.entPass.delete(0, END)

  • 8/18/2019 Dokumen Final Project Python

    52/61

      self.cbLogin.focus_set()

    10.Laporan

    from reportlab.lib.pagesizes import letter

    from reportlab.pdfgen import canvas

    from reportlab.lib.colors import pink, black, red, blue, green, gray

    import datetime

    import pymysql

    import subprocess

    def lap_member():

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="127.0.0.1",\

    port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT * FROM data_penyewa")

    data_member = cur.fetchall()

    c = canvas.Canvas("Lap_Member.pdf", pagesize=letter)

    c.setFont("Helvetica-Bold", 12)

    c.setFillColor(blue)

    c.drawString(72,750,"ONENET e-Sport")

    c.drawString(72,735,"LAPORAN DATA MEMBER")

    c.setFillColor(blue)

    c.drawString(440,750,str(datetime.date.today()))

    c.setFillColor(black)

    c.line(72,715,515,715)

    c.drawString(72,700,"NO MEMBER")

  • 8/18/2019 Dokumen Final Project Python

    53/61

      c.drawString(190,700,"ID MEMBER")

    c.drawString(300,700,"PASSWORD")

    c.drawString(400,700,"TANGGAL DAFTAR")

    c.line(72,695,515,695)

    c.setFont("Helvetica", 10)

     j= 0

    t= 0

    for i in data_member:

    nomember = i[0]

    namamember = i[1]

    password = i[2]tgldaf = i[3]

     j += 1

    c.drawCentredString(100,695-j*12,nomember)

    c.drawString(190,695-j*12,namamember)

    c.drawString(300,695-j*12,password)

    c.drawString(420,695-j*12,str(tgldaf))

    c.line(72,701-(j+1)*12,515,701-(j+1)*12)

    c.drawString(72,701-(j+2)*12,"Total Member = "+str(j)+"")

    c.drawRightString(500,701-(j+2)*12,str(t))

    c.save()

    subprocess.Popen("Lap_Member.pdf",shell=True)

    def lap_Transaksi():

    con = pymysql.connect(db="onenet", user="warnet",

    passwd="samarinda12", host="127.0.0.1",\

  • 8/18/2019 Dokumen Final Project Python

    54/61

      port=3306,autocommit=True)

    cur = con.cursor()

    cur.execute("SELECT * FROM pembelian_vocher")

    data_masuk = cur.fetchall()

    c = canvas.Canvas("Lap_Transaksi.pdf", pagesize=letter)

    c.setFont("Helvetica-Bold", 12)

    c.setFillColor(blue)

    c.drawString(72,750,"ONENET e-Spot")

    c.drawString(72,735,"LAPORAN PENJUALAN")

    c.setFillColor(blue)c.drawString(440,750,str(datetime.date.today()))

    c.setFont("Helvetica-Bold", 10)

    c.setFillColor(black)

    c.line(72,712,500,712)

    c.drawString(75,700,"NOTA")

    c.drawString(145,700,"TANGGAL")

    c.drawString(225,700,"ID MEMBER")

    c.drawString(320,700,"PAKET")

    c.drawString(383,700,"OPERATOR")

    c.drawString(455,700,"HARGA")

    c.line(72,695,500,695)

    c.setFont("Helvetica-Bold", 10)

     j=0

    t=0

    for i in data_masuk:

    nota = i[0]

    member = i[1]

    tgl = i[2]

    paket = i[3]

  • 8/18/2019 Dokumen Final Project Python

    55/61

  • 8/18/2019 Dokumen Final Project Python

    56/61

    BAB III

    HASIL PROGRAM

     A.  Menu Utama

    Inilah Menu Utama dalam program yang saya buat, menu utama yang saya buat ini

    memakai image button.

  • 8/18/2019 Dokumen Final Project Python

    57/61

  • 8/18/2019 Dokumen Final Project Python

    58/61

    Daftar Member

    Sesuai dengan namanya , form ini untuk memasukan data ke database

    data_penyewa.

     Add Operator

     Add Operator untuk menambahkan Operator sewaktu waktu ada pegawai

    baru, dan form ini pun mengentry langsung ke database data_operator

  • 8/18/2019 Dokumen Final Project Python

    59/61

    Ganti Password

    Form ini bertujuan untuk mengganti password member , yang sewaktu

    waktu member lupa akan passwordnya, atau teman mengetahuinya dan

    bisa memakai waktunya. Form ini langsung mengedit database

    data_penyewa – Password.

    Tambah Tarif

    form ini untuk menambahkan waktu apabila owner warnet ingin

    menambahkan paket waktu baru. Dan ini langsung terhubung dengan

    database tariff.

  • 8/18/2019 Dokumen Final Project Python

    60/61

  • 8/18/2019 Dokumen Final Project Python

    61/61

     

    Laporan Member

    Bertujuan untuk mengecek berapa total member warnet tersebut.