Fakultas Ilmu Komputer UI

TP8_1_1806196806.py 3.94 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
def beli_gas(nama_pembeli, jumlah_pembelian, alamat):
    try:
        data = open(alamat)
        data_input = []
        ditemukan = False
        for line in data:
            nama, jumlah = line.split()
            if nama.lower() == nama_pembeli:
                ditemukan = True
                jumlah =int(jumlah) + jumlah_pembelian
                print('Total pembelian',nama,'adalah',jumlah) 
            data_input.append(nama+' '+str(jumlah))

        if ditemukan == False:
            data_input.append(nama_pembeli+' '+str(jumlah_pembelian))
            print('Total pembelian',nama_pembeli,'adalah',jumlah_pembelian)
        data.close()
        
        data_baru = open('TP8_1_1806196806.txt', 'w')
        for i in range(len(data_input)):
            data_baru.write(data_input[i]+'\n')
        data_baru.close()
    except TypeError:
        print('input ke dalam file harus berupa string')
    except FileNotFoundError:
        print('\nFile tidak ditemukan')
        print('Pastikan file input_order2.txt berada dalam folder yang sama dengan script ini')
        print('Pastikan juga terminal anda terhubung dengan folder ini\n')
        print('Silahkan keluar dulu dari program')

def refund_gas(nama_pembeli, jumlah_refund, alamat):
    try:
        data = open(alamat)
        data_input = []
        ditemukan = False
        for line in data:
            nama, jumlah = line.split()
            if nama.lower() == nama_pembeli:
                jumlah =int(jumlah) - jumlah_refund
                print('Total pembelian',nama,'adalah',jumlah)
                ditemukan = True

            if int(jumlah) > 0:
                data_input.append(nama+' '+str(jumlah))

        if ditemukan == False:
            print(nama_pembeli,'belum membeli apapun')
        data.close()
        
        data_baru = open('TP8_1_1806196806.txt', 'w')
        for i in range(len(data_input)):
            data_baru.write(data_input[i]+'\n')
        data_baru.close()
    except TypeError:
        print('input ke dalam file harus berupa string')
    except FileNotFoundError:
        print('\nFile tidak ditemukan')
        print('Pastikan file input_order2.txt berada dalam folder yang sama dengan script ini')
        print('Pastikan juga terminal anda terhubung dengan folder ini\n')
        print('Silahkan keluar dulu dari program')

def input_awal():
    print("\npilihan :\n\tbeli\n\trefund\n\tkeluar")
    pilihan = input("Masukkan pilihan :").lower()
    return pilihan

def cek_nama_eror():
    input_nama_eror = True
    while input_nama_eror == True:
        nama_input = input('masukkan nama anda:').lower()
        if nama_input.isalpha() == True:
            input_nama_eror = False
        else:
            print('\nnama harus berupa huruf tanpa angka\n')
    return nama_input

def cek_input_angka_eror():
    input_pembelian_eror = True
    while input_pembelian_eror == True:
        try:
            angka = int(input('masukkan jumlah:'))
            input_pembelian_eror = False
        except:
            print('input harus berupa angka tanpa huruf')
    return angka

pilihan = input_awal()
alamat_file = 'input_order2.txt'
while pilihan != 'keluar':
    if pilihan == 'beli':
        nama_input = cek_nama_eror()
        pembelian = cek_input_angka_eror()
        while pembelian <= 0:
            print('\nPermintaan harus lebih besar dari 0\n')
            pembelian = cek_input_angka_eror()
        beli_gas(nama_input,pembelian,alamat_file)
        pilihan = input_awal()
    elif pilihan == 'refund':
        nama_input = cek_nama_eror()
        permintaan_refund = cek_input_angka_eror()
        while permintaan_refund <= 0:
            print('\nPermintaan harus lebih besar dari 0\n')
            permintaan_refund = cek_input_angka_eror()
        refund_gas(nama_input,permintaan_refund,alamat_file)
        pilihan = input_awal()
    else:
        print("Input anda salah, silahkan masukkan pilihan sesuai pilihan")
        pilihan = input_awal()
    alamat_file= 'TP8_1_1806196806.txt'