Esempio n. 1
0
def main():
    # Program utama F14
    # Admin memasukkan ID Wahana dan dikeluarkan riwayat penggunaan wahana tersebut.
    wahana = load.use ("wahana.csv")
    penggunaan = load.use ("penggunaan.csv")

    id_wahana = str(input("Masukkan ID Wahana: "))
    wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)

    while wahana_found == [] :
        id_wahana = input("Tidak ditemukan wahana dengan ID \"" + id_wahana + '\". Mohon diulang: ')
        wahana_found = aux.find_baris_first(wahana.data, "ID_Wahana", id_wahana)

    riwayat = []

    for i in range(1, aux.length(penggunaan.data)):
        if str(penggunaan.data[i][aux.find_idx(penggunaan.data, "ID_Wahana")]) == id_wahana:
            tanggal_guna = penggunaan.data[i][aux.find_idx(penggunaan.data, "Tanggal_Penggunaan")]
            username = penggunaan.data[i][aux.find_idx(penggunaan.data, "Username")]
            tiket = penggunaan.data[i][aux.find_idx(penggunaan.data, "Jumlah_Tiket")]
            riwayat_baru = (tanggal_guna, username, tiket)
            riwayat = aux.konsDot(riwayat, riwayat_baru)

    print("Riwayat penggunaan " + str(wahana_found[aux.find_idx(wahana.data, "Nama_Wahana")]) + ": ")
    for i in range(aux.length(riwayat)):
        print(str(riwayat[i][0]) + " | " + str(riwayat[i][1]) + " | " + str(riwayat[i][2]))

    return
Esempio n. 2
0
def main():
    # procedure main (input kritiksaran : Rekaman)
    # Mengeluarkan data kritiksaran yang sudah diurut berdasarkan sorting_key
    # KAMUS LOKAL
    # sorting_key : string
    # sorting_idx, i, j, minpos : int
    # temp : array of string
    # ALGORITMA
    kritiksaran = load.use("kritiksaran.csv")

    sorting_key = "ID_Wahana"
    sorting_idx = aux.find_idx(
        kritiksaran.data, sorting_key)  # Mencari indeks kolom <sorting_key>

    for i in range(1, aux.length(kritiksaran.data)):
        minpos = i
        for j in range(i, aux.length(kritiksaran.data)):
            if (kritiksaran.data[j][sorting_idx]) < (
                    kritiksaran.data[minpos][sorting_idx]):
                minpos = j
        temp = kritiksaran.data[i]
        kritiksaran.data[i] = kritiksaran.data[minpos]
        kritiksaran.data[minpos] = temp

    print("Kritik dan saran semua wahana: ")
    for i in range(1, aux.length(kritiksaran.data)):
        print(str(kritiksaran.data[i][2]) + ' | ', end='')
        print(str(kritiksaran.data[i][1]) + ' | ', end='')
        print(str(kritiksaran.data[i][0]) + ' | ', end='')
        print(str(kritiksaran.data[i][3]))
    return
Esempio n. 3
0
def store(filename, new_table):
    # procedure store (input filename : string, input new_table : Rekaman.data, output files[i] : Rekaman)
    # Meng-update (deep copy) salah satu elemen files yang sesuai dengan nama file yang di-input
    # KAMUS LOKAL
    # i, j, newrows, newcolumns : integer
    # isStored : boolean
    # newfile : Rekaman
    # ALGORITMA
    i = 0
    isStored = False
    try:
        while ((i < filecount) and (isStored == False)):
            if (files[i].name == filename):
                newrows = flib.length(new_table)
                newcolumns = flib.length(new_table[0])
                newfile = Rekaman()
                newfile.__init__(filename, newcolumns, newrows)
                for j in range(flib.length(new_table)):
                    newfile.data[j] = new_table[j][:]
                files[i] = newfile
                isStored = True
            i = i + 1
        if (isStored == False):
            raise ValueError
    except ValueError:
        print("GALAT: Filename salah.")
Esempio n. 4
0
def main_auto():
    # procedure main_auto (output files : array [0..7] of Rekaman)
    # I.S. file.data terdefinisi sembarang
    # F.S. ke-8 file .csv di-load ke files
    # main_auto() merupakan prosedur sama dengan main(), tetapi diotomasikan.
    # Prosedur ini dipakai untuk masa testing program ini, dan akan dimatikan
    # saat program final dikeluarkan.
    # KAMUS LOKAL
    # filename : string
    # i, filerows, filecolumns : integer
    # reader : _csv.reader object
    # f : SEQFILE of
    #   (*) data : Rekaman.data
    #   (1) ""
    # actual_filenames : array [0..7] of string
    # ALGORITMA
    actual_filenames = [
        "user.csv", "wahana.csv", "pembelian.csv", "penggunaan.csv",
        "tiket.csv", "refund.csv", "kritiksaran.csv", "hilang.csv"
    ]
    for i in range(flib.length(actual_filenames)):
        filename = actual_filenames[i]
        with open(__file__[:-10] + "data\\" + actual_filenames[i],
                  mode='r') as f:
            reader = list(csv.reader(f))
            filerows = flib.length(reader)
            filecolumns = flib.length(reader[0])
            files[i].__init__(filename, filerows, filecolumns)
            files[i].data = reader
    print("File perusahaan Willy Wangky's Chocolate Factory telah di-load.")
Esempio n. 5
0
def main_auto(datatosave):
    # procedure main (input datatosave : array [0..7] of F01.Rekaman)
    # I.S. datatosave terdefinisi
    # F.S. isi dari datatosave telah disalin ke 8 file .csv
    # datatosave = load.files
    # KAMUS LOKAL
    # i, j : integer
    # filename : string
    # writer : _csv.writer object
    # f : SEQFILE of
    #   (*) data : F01.Rekaman.data
    #   (1) ""
    # actual_filenames : array [0..7] of string
    # ALGORITMA
    actual_filenames = [
        "user.csv", "wahana.csv", "pembelian.csv", "penggunaan.csv",
        "tiket.csv", "refund.csv", "kritiksaran.csv", "hilang.csv"
    ]
    for i in range(flib.length(actual_filenames)):
        filename = actual_filenames[i]
        # Save datatosave[i] ke <nama file>.csv
        with open(__file__[:-10] + "data\\" + str(filename),
                  mode='w',
                  newline='') as f:
            writer = csv.writer(f)
            writer.writerows(datatosave[i].data)
    print("Data berhasil disimpan!")
Esempio n. 6
0
def main():
    # procedure main ()
    # I.S. Abstrak
    # F.S. Dikeluarkan tiga wahana 'terbaik' (diurut sesuai jumlah tiket terjual)
    # Syarat: Pasti sudah ada wahana sebanyak >= N_best pada wahana.csv
    # KAMUS LOKAL
    # wahana : Rekaman
    # wahana_ticket_data : array of tuple (string, string, integer)
    # constant N_best : integer = 3
    # i, j, maks_idx : integer
    # wahana_id, wahana_name : string
    # wahana_tickets : integer
    # ALGORITMA
    wahana = load.use("wahana.csv")
    wahana_ticket_data = [("", "", 0)
                          for i in range(1, aux.length(wahana.data))]

    for i in range(1, aux.length(wahana.data)):
        wahana_id = wahana.data[i][aux.find_idx(wahana.data, "ID_Wahana")]
        wahana_name = wahana.data[i][aux.find_idx(wahana.data, "Nama_Wahana")]
        wahana_tickets = total_sold_tickets(wahana_id)
        wahana_ticket_data[i - 1] = (wahana_id, wahana_name, wahana_tickets)

    # Sorting sesuai jumlah tiket yang terjual
    for i in range(0, aux.length(wahana_ticket_data)):
        maks_idx = i
        for j in range(i, aux.length(wahana_ticket_data)):
            if wahana_ticket_data[maks_idx][2] < wahana_ticket_data[j][2]:
                maks_idx = j
        temp = wahana_ticket_data[i]
        wahana_ticket_data[i] = wahana_ticket_data[maks_idx]
        wahana_ticket_data[maks_idx] = temp

    # Output terbaik
    N_best = 3  # konstanta, menyatakan berapa wahana terbaik yang dikeluarkan ke layar.
    for i in range(0, N_best):
        # Yang dikeluarkan ke layar: "Urutan | ID Wahana | Nama Wahana | Jumlah Tiket"
        print(i + 1, end=' | ')  # Urutan
        print(wahana_ticket_data[i][0], end=' | ')  # ID Wahana
        print(wahana_ticket_data[i][1], end=' | ')  # Nama Wahana
        print(wahana_ticket_data[i][2])  # Jumlah Tiket

    return
Esempio n. 7
0
def main():
    # procedure main (output files : array [0..7] of Rekaman)
    # I.S. Rekaman ter-assign ke files
    # F.S. ke-8 file .csv di-load ke files
    # KAMUS LOKAL
    # filename : string
    # i, filerows, filecolumns : integer
    # reader : _csv.reader object
    # f : SEQFILE of
    #   (*) data : Rekaman.data
    #   (1) ""
    # ALGORITMA
    for i in range(filecount):
        # Masukkan <nama file> yang akan di-load
        filename = str(input("Masukkan nama " + filedescription[i] + ": "))
        # Load <nama file>.csv ke file.data
        with open(__file__[:-10] + "data\\" + str(filename), mode='r') as f:
            reader = list(csv.reader(f))
            filerows = flib.length(reader)
            filecolumns = flib.length(reader[0])
            files[i].__init__(filename, filerows, filecolumns)
            files[i].data = reader
    print("File perusahaan Willy Wangky's Chocolate Factory telah di-load.")
Esempio n. 8
0
def total_sold_tickets(wahana_id):
    # function total_sold_tickets (wahana_id : string) -> integer
    # Menghasilkan total tiket wahana yang telah terjual.
    # KAMUS LOKAL
    # pembelian : Rekaman
    # tickets_sold, i : integer
    # ALGORITMA
    pembelian = load.use("pembelian.csv")
    tickets_sold = 0

    for i in range(1, aux.length(pembelian.data)):
        if str(pembelian.data[i][aux.find_idx(pembelian.data,
                                              "ID_Wahana")]) == wahana_id:
            tickets_sold += int(pembelian.data[i][aux.find_idx(
                pembelian.data, "Jumlah_Tiket")])

    return tickets_sold
Esempio n. 9
0
def main(datatosave):
    # procedure main (input datatosave : array [0..7] of F01.Rekaman)
    # I.S. datatosave terdefinisi
    # F.S. isi dari datatosave telah disalin ke 7 file .csv
    # datatosave = load.files
    # KAMUS LOKAL
    # i, j : integer
    # filename : string
    # writer : _csv.writer object
    # f : SEQFILE of
    #   (*) data : F01.Rekaman.data
    #   (1) ""
    # ALGORITMA
    for i in range(flib.length(datatosave)):
        # Masukkan <nama file> yang akan di-save
        filename = str(input("Masukkan nama " + filedesc[i] + ": "))
        # Save datatosave[i] ke <nama file>.csv
        with open(__file__[:-10] + "data\\" + str(filename),
                  mode='w',
                  newline='') as f:
            writer = csv.writer(f)
            writer.writerows(datatosave[i].data)
    print("Data berhasil disimpan!")
Esempio n. 10
0
def main():
    # PROCEDURE main ()
    # I.S tiket dan wahana sudah terdefinisi
    # F.S ditampilkan ID Wahana, Nama Wahana, dan jumlah tiket suatu user (user yang dicari inputan dari admin)
    # KAMUS LOKAL
    # userfile, wahana, tiket = Rekaman
    # name = string
    # finduser, user_in_db = Rekaman.data
    # i = integer
    # name = string
    userfile = load.use("user.csv")
    wahana = load.use("wahana.csv")
    tiket = load.use("tiket.csv")

    name = str(input("Masukkan username: "******"Username", name)
    user_in_db = aux.find_baris_first(userfile.data, "Username", name)

    if user_in_db == []:
        print("Tidak ditemukan pengguna dengan username \"" + name + "\".")
    elif finduser == [[]]:
        print(name + " tidak memiliki tiket satupun.")
    else:
        print("Kepemilikan tiket pemain: ")
        for i in range(aux.length(finduser)):
            detect_ID = finduser[i][aux.find_idx(tiket.data, "ID_Wahana")]
            print(str(detect_ID) + " | ", end='')
            findwahana = aux.find_baris_first(wahana.data, "ID_Wahana",
                                              detect_ID)
            print(str(findwahana[aux.find_idx(wahana.data, "Nama_Wahana")]) +
                  ' | ',
                  end='')
            print(str(finduser[i][aux.find_idx(tiket.data, "Jumlah_Tiket")]))

    return
Esempio n. 11
0
def main ():
    # procedure main ()
    # I.S. Abstrak
    # F.S. Wahana sesuai batasan pencarian ditampilkan.
    # Program utama F06
    wahana = load.use ("wahana.csv")

    print ("Jenis batasan umur: ")
    print ("1. Anak-anak (<17 tahun)")
    print ("2. Dewasa (>=17 tahun)")
    print ("3. Semua umur")
    print (" ")
    print ("Jenis batasan tinggi badan: ")
    print ("1. Lebih dari 170 cm")
    print ("2. Tanpa batasan")
    print (" ")
    while True:
        umur = int(input("Batasan umur pemain: "))
        if isBatasUmurTrue(umur):  # 1, 2, 3
            break
        else:  # selain 1, 2, 3
            print("Batasan umur tidak valid!")
            return

    while True:
        tinggi = int(input("Batasan tinggi pemain: "))
        if isBatasTinggiTrue(tinggi):  # 1, 2
            break
        else:  # selain 1, 2
            print("Batasan tinggi tidak valid!")
            return
        # data_wahana = load.use(wahanafile)
    
    if umur == 1 :
        if tinggi == 1:
            u = "anak-anak"
            t = ">170"
        elif tinggi == 2:
            u = "anak-anak"
            t = "tanpa batasan"
    elif umur == 2:
        if tinggi == 1:
            u = "dewasa"
            t = ">170"
        elif tinggi == 2:
            u = "dewasa"
            t = "tanpa batasan"
    elif umur == 3:
        if tinggi == 1:
            u = "semua umur"
            t = ">170"
        elif tinggi == 2:
            u = "semua umur"
            t = "tanpa batasan"
            
    umur_true = aux.merge([wahana.data[0]], aux.find_baris_all(wahana.data, "Batasan_Umur", u))

    if umur_true[1:] == []:
        print("Tidak ada wahana sesuai batasan yang dimasukkan.")
        return
    
    validasi = aux.find_baris_all(umur_true, "Batasan_Tinggi", t)

    if validasi == [[]]:
        print("Tidak ada wahana sesuai batasan yang dimasukkan.")
        return

    print("Hasil pencarian: ")
    for i in range(aux.length(validasi)):
        id_wahana = validasi[i][aux.find_idx(wahana.data, "ID_Wahana")]
        nama_wahana = validasi[i][aux.find_idx(wahana.data, "Nama_Wahana")]
        harga_tiket = validasi[i][aux.find_idx(wahana.data, "Harga_Tiket")]
        print (id_wahana, "|", nama_wahana, "|", harga_tiket)
    
    return
Esempio n. 12
0
#                  data : array [0..rows-1] of array [0..columns-1] of string >
class Rekaman:
    def __init__(self, name="", columns=1, rows=1):
        self.name = name
        self.columns = columns
        self.rows = rows
        self.data = [["*" for i in range(columns)] for j in range(rows)]


# constant filedescription : array [0..7] of string = ["File User", "File Daftar Wahana", "File Pembelian Tiket", "File Penggunaan Tiket", "File Kepemilikan Tiket", "File Refund Tiket", "File Kritik dan Saran", "File Laporan Kehilangan Tiket"]
filedescription = ("File User", "File Daftar Wahana", "File Pembelian Tiket",
                   "File Penggunaan Tiket", "File Kepemilikan Tiket",
                   "File Refund Tiket", "File Kritik dan Saran",
                   "File Laporan Kehilangan Tiket")
# constant filecount : integer = flib.length(filedescription)
filecount = flib.length(filedescription)
# files : array [0..filecount-1] of Rekaman
# Saat modul ini dijalankan, data ke-8 file .csv akan disimpan ke dalam files
# files inilah yang kemudian akan diakses, diubah valuenya, dst. selama program dijalankan
# Modul lain akan akan mengurus penyimpanan kembali files ke 8 file .csv

# ALGORITMA PROGRAM UTAMA
files = [Rekaman() for i in range(filecount)]

# REALISASI FUNGSI/PROSEDUR


def main():
    # procedure main (output files : array [0..7] of Rekaman)
    # I.S. Rekaman ter-assign ke files
    # F.S. ke-8 file .csv di-load ke files
Esempio n. 13
0
 def __init__(self):
     self.datadesc = ("nama pemain", "tanggal lahir pemain (DD/MM/YYYY)",
                      "tinggi badan pemain (cm)", "username pemain",
                      "password pemain", "role pemain", "saldo pemain")
     self.datacount = flib.length(self.datadesc)
     self.data = ["*" for i in range(self.datacount)]