· 5 years ago · Nov 20, 2020, 07:16 AM
1import random
2import sqlite3
3
4conn = sqlite3.connect('card.s3db')
5cur = conn.cursor()
6cur.execute('''CREATE TABLE if not exists card
7 (id INTEGER NOT NULL PRIMARY KEY,
8 number TEXT,
9 pin TEXT,
10 balance INTEGER DEFAULT 0
11 );''')
12conn.commit()
13
14
15option = 5
16class Card:
17 def __init__(self):
18 self.acc_no = None
19 self.pin = None
20 self.balance = 0
21
22 def create_account(self):
23 ############################################################
24 a = str(random.randint(10 ** 8, (10 ** 9)-1))
25 b = list(a)
26 calc = [int(b[0]) * 2, int(b[2]) * 2, int(b[4]) * 2, int(b[6]) * 2, int(b[8]) * 2]
27 calc_ano = int(b[1]) + int(b[3]) + int(b[5]) + int(b[7])
28 if calc[0] > 9:
29 calc[0] -= 9
30 if calc[1] > 9:
31 calc[1] -= 9
32 if calc[2] > 9:
33 calc[2] -= 9
34 if calc[3] > 9:
35 calc[3] -= 9
36 if calc[4] > 9:
37 calc[4] -= 9
38 checksum = 8 + calc_ano
39 for i in calc:
40 checksum += i
41 if checksum % 10 == 0:
42 checksum = 0
43 else:
44 checksum = 10 - (checksum % 10)
45 ############################################################
46 bin = "400000" + a + str(checksum)
47 self.acc_no = int(bin)
48 self.pin = random.randint(10 ** 3, (10 ** 4)-1)
49 print()
50 print("Your card has been created")
51 print("Your card number:")
52 print(self.acc_no)
53 print("Your card PIN:")
54 print(self.pin)
55 print()
56
57 def log_in(self, acc, pin):
58 if self.acc_no == acc and self.pin == pin:
59 print("You have successfully logged in!")
60 inp_value = 5
61 while inp_value != 0:
62 print("1. Balance")
63 print("2. Log out")
64 print("0. Exit")
65 inp_value = int(input())
66 if inp_value == 1:
67 print("Balance: {}".format(self.balance))
68 elif inp_value == 2:
69 print("You have successfully logged out!")
70 break
71 else:
72 exit()
73 else:
74 print("Wrong card number or PIN!")
75
76
77
78while option != 0:
79 print("1. Create an account")
80 print("2. Log into account")
81 print("0. Exit")
82 option = int(input())
83 if option == 1:
84 user = Card()
85 user.create_account()
86 cur.execute("INSERT INTO card (number, pin) VALUES (?, ?)", (user.acc_no, user.pin))
87 conn.commit()
88 elif option == 2:
89 user.log_in(int(input("Enter your card number:")), int(input("Enter your PIN:")))
90 cur.execute("SELECT number,pin,balance FROM card WHERE number=?", (user.acc_no,))
91 print(cur.fetchone())
92 else:
93 print("Bye")