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
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
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.")
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.")
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!")
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
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.")
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
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!")
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
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
# 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
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)]