· 4 years ago · Mar 30, 2021, 06:32 PM
1import random
2import sqlite3 as sq
3
4con = sq.connect("card_database.db")
5cur = con.cursor()
6
7cur.execute("""
8CREATE TABLE IF NOT EXISTS users(
9 card_number TEXT,
10 pin_code TEXT,
11 balance INT
12)
13""")
14
15
16class Bank:
17 __balance = 0
18 __card_number = 0
19 __pin_code = 0
20 i = 0
21
22 def create_card(self):
23 self.__card_number = random.randint(0, 999999999) + 400000000000000
24 self.i = self.__card_number
25
26 def create_pin(self):
27 self.__pin_code = str(random.randint(0, 9999))
28
29 def get_card(self):
30 return self.__card_number
31
32 def get_pin(self):
33 return self.__pin_code
34
35 def get_balance(self):
36 return self.__balance
37
38 def luhn(self):
39 all_sum = 0
40 self.__card_number = str(self.__card_number)
41 self.__card_number = list(self.__card_number)
42 for element in range(len(self.__card_number)):
43 if element % 2 == 0:
44 self.__card_number[element] = int(self.__card_number[element]) * 2
45 if self.__card_number[element] > 9:
46 number = self.__card_number[element]
47 self.__card_number[element] = number // 100 + number // 10 % 10 + number % 10 # sum digits number
48 self.__card_number[element] = int(self.__card_number[element])
49 all_sum += self.__card_number[element]
50 checksum = 0
51 while checksum < 10:
52 if all_sum % 10 == 0:
53 checksum = str(checksum)
54 break
55 else:
56 all_sum += 1
57 checksum += 1
58 self.i = str(self.i)
59 self.i = list(self.i)
60 self.i.append(checksum)
61 self.__card_number = self.i
62
63 self.__card_number = "".join(self.__card_number)
64
65
66while True:
67 print("1. Create an account")
68 print("2. Log into account")
69 print("0. Exit")
70 start = int(input())
71 if start == 1:
72 card = Bank()
73 card.create_card()
74 card.luhn()
75 card.create_pin()
76 print("\nYour card has been created")
77 print("Your card number:")
78 print(card.get_card())
79 print("You card PIN:")
80 print(f"{card.get_pin().zfill(4)}\n")
81
82 cur.execute("INSERT INTO users VALUE ( card.get_card(), card.get_pin(), card.get_balance() );")
83
84 elif start == 2:
85 print("\nEnter your card number:")
86 card_number = str(input())
87 print("Enter your PIN:")
88 pin_code = input()
89
90 not_empty = True
91
92 try:
93 card_number == card.get_card() and pin_code == card.get_pin().zfill(4)
94 except NameError:
95 print("\nWrong card number or PIN! \n")
96 not_empty = False
97
98 if not_empty:
99 if card_number == card.get_card() and pin_code == card.get_pin().zfill(4):
100 print("\nYou have successfully logged in!\n")
101 while True:
102 print("1. Balance")
103 print("2. Log out")
104 print("0. Exit")
105 second_choose = int(input())
106 if second_choose == 1:
107 print(f"\nBalance: {card.get_balance()}\n")
108 elif second_choose == 2:
109 print("\nYou have successfully logged out!\n")
110 break
111 elif second_choose == 0:
112 print("\nBye!")
113 con.close()
114 exit(0)
115 else:
116 print("\nWrong card number or PIN! \n")
117 elif start == 0:
118 print("\nBye!")
119 con.close()
120 exit(0)
121