diff --git a/银行系统v1.0/.idea/.gitignore b/银行系统v1.0/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/银行系统v1.0/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/银行系统v1.0/.idea/.name b/银行系统v1.0/.idea/.name
new file mode 100644
index 0000000..fb6e260
--- /dev/null
+++ b/银行系统v1.0/.idea/.name
@@ -0,0 +1 @@
+银行系统.py
\ No newline at end of file
diff --git a/银行系统v1.0/.idea/inspectionProfiles/profiles_settings.xml b/银行系统v1.0/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/银行系统v1.0/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/银行系统v1.0/.idea/misc.xml b/银行系统v1.0/.idea/misc.xml
new file mode 100644
index 0000000..7d23246
--- /dev/null
+++ b/银行系统v1.0/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/银行系统v1.0/.idea/modules.xml b/银行系统v1.0/.idea/modules.xml
new file mode 100644
index 0000000..e03f935
--- /dev/null
+++ b/银行系统v1.0/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/银行系统v1.0/.idea/银行系统v1.0.iml b/银行系统v1.0/.idea/银行系统v1.0.iml
new file mode 100644
index 0000000..a2f61d1
--- /dev/null
+++ b/银行系统v1.0/.idea/银行系统v1.0.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/银行系统v1.0/__pycache__/admin.cpython-37.pyc b/银行系统v1.0/__pycache__/admin.cpython-37.pyc
new file mode 100644
index 0000000..750d461
Binary files /dev/null and b/银行系统v1.0/__pycache__/admin.cpython-37.pyc differ
diff --git a/银行系统v1.0/__pycache__/admin.cpython-39.pyc b/银行系统v1.0/__pycache__/admin.cpython-39.pyc
new file mode 100644
index 0000000..e10c0fe
Binary files /dev/null and b/银行系统v1.0/__pycache__/admin.cpython-39.pyc differ
diff --git a/银行系统v1.0/__pycache__/atm.cpython-37.pyc b/银行系统v1.0/__pycache__/atm.cpython-37.pyc
new file mode 100644
index 0000000..e86f377
Binary files /dev/null and b/银行系统v1.0/__pycache__/atm.cpython-37.pyc differ
diff --git a/银行系统v1.0/__pycache__/atm.cpython-39.pyc b/银行系统v1.0/__pycache__/atm.cpython-39.pyc
new file mode 100644
index 0000000..cc4daa1
Binary files /dev/null and b/银行系统v1.0/__pycache__/atm.cpython-39.pyc differ
diff --git a/银行系统v1.0/__pycache__/card.cpython-37.pyc b/银行系统v1.0/__pycache__/card.cpython-37.pyc
new file mode 100644
index 0000000..f8f3852
Binary files /dev/null and b/银行系统v1.0/__pycache__/card.cpython-37.pyc differ
diff --git a/银行系统v1.0/__pycache__/card.cpython-39.pyc b/银行系统v1.0/__pycache__/card.cpython-39.pyc
new file mode 100644
index 0000000..18ff691
Binary files /dev/null and b/银行系统v1.0/__pycache__/card.cpython-39.pyc differ
diff --git a/银行系统v1.0/__pycache__/user.cpython-37.pyc b/银行系统v1.0/__pycache__/user.cpython-37.pyc
new file mode 100644
index 0000000..0ea8af2
Binary files /dev/null and b/银行系统v1.0/__pycache__/user.cpython-37.pyc differ
diff --git a/银行系统v1.0/__pycache__/user.cpython-39.pyc b/银行系统v1.0/__pycache__/user.cpython-39.pyc
new file mode 100644
index 0000000..9d53d20
Binary files /dev/null and b/银行系统v1.0/__pycache__/user.cpython-39.pyc differ
diff --git a/银行系统v1.0/__pycache__/银行系统.cpython-39.pyc b/银行系统v1.0/__pycache__/银行系统.cpython-39.pyc
new file mode 100644
index 0000000..ecb22bb
Binary files /dev/null and b/银行系统v1.0/__pycache__/银行系统.cpython-39.pyc differ
diff --git a/银行系统v1.0/admin.py b/银行系统v1.0/admin.py
new file mode 100644
index 0000000..9cd95e1
--- /dev/null
+++ b/银行系统v1.0/admin.py
@@ -0,0 +1,21 @@
+class Admin:
+ adminU = '丑陋的妖怪' # 管理员的账号
+ adpwd = '1' # 管理员的密码
+ def printAdminView(self):
+ print("*** 欢迎登录银行系统 ***")
+ def printsysFunctionView(self):
+ print("1.开户(1)\n 2.查询(2) ")
+ print(" 3.取款(3)\n 4.存款(4) ")
+ print(" 5.转账(5)\n 6.锁定(6) \n7.解锁(7)\n退出(8)")
+ def adminOption(self):
+ adminInput = input("请输入管理员账户:")
+ if self.adminU != adminInput:
+ print("管理员账户输入错误......")
+ return -1
+ passwordInput = input("请输入密码:")
+ if self.adpwd != passwordInput:
+ print("输入密码有误......")
+ return -1
+ else:
+ print("操作成功,请稍后......")
+ return 0
diff --git a/银行系统v1.0/atm.py b/银行系统v1.0/atm.py
new file mode 100644
index 0000000..bae00ae
--- /dev/null
+++ b/银行系统v1.0/atm.py
@@ -0,0 +1,137 @@
+from user import User
+from card import Card
+class ATM:
+ def __init__(self, alluser):
+ self.alluser = alluser
+ def randomiCardId(self):
+ import random
+ while True:
+ str_data = '' # 存储卡号
+ for i in range(6):
+ ch = chr(random.randrange(ord('0'), ord('9') + 1))
+ str_data += ch
+ if not self.alluser.get(str): # 判断卡号是否重复
+ return str_data
+ def creatUser(self):
+ name = input("请输入姓名:")
+ Uid = input("请输入身份证号:")
+ phone = input("请输入手机号:")
+ prestMoney = float(input("请输入预存金额:"))
+ if prestMoney <= 0:
+ print("预存款输入有误,开户失败")
+ return -1
+ oncePwd = input("请输入密码:")
+ passWord = input("请再次输入密码:")
+ if passWord != oncePwd:
+ print("两次密码输入不同......")
+ return -1
+ print("密码设置成功,请牢记密码: %s " % passWord)
+ cardId = self.randomiCardId()
+ card = Card(cardId, oncePwd, prestMoney) # 创建卡
+ user = User(name, Uid, phone, card) # 创建用户
+ self.alluser[cardId] = user # 存入用户字典
+ print("您的开户已完成,请牢记开户账号: %s" % cardId)
+ def checkpwg(self, realPwd):
+ for i in range(3):
+ psd2 = input("请输入密码:")
+ if realPwd == psd2:
+ return True
+ print("密码输错三次,系统自动退出......")
+ return False
+ def lockCard(self):
+ inptcardId = input("请输入您的卡号:")
+ user = self.alluser.get(inptcardId)
+ if not self.alluser.get(inptcardId):
+ print("此卡号不存在...锁定失败!")
+ return -1
+ if user.card.cardLock:
+ print("该卡已经被锁定,无需再次锁定!")
+ return -1
+ if not self.checkpwg(user.card.cardPwd): # 验证密码
+ print("密码错误...锁定失败!!")
+ return -1
+ user.card.cardLock = True
+ print("该卡被锁定成功!")
+ def searchUser(self, base=1):
+ if base == 2:
+ inptcardId = input("请输入转出主卡号:")
+ elif base == 3:
+ inptcardId = input("请输入转入卡号:")
+ elif base == 1:
+ inptcardId = input("请输入您的卡号:")
+ user = self.alluser.get(inptcardId)
+ # 如果卡号不存在,下面代码就会执行
+ if not self.alluser.get(inptcardId):
+ print("此卡号不存在...查询失败!")
+ return -1
+ if user.card.cardLock:
+ print("该用户已经被锁定...请解卡后使用!")
+ return -1
+ if not self.checkpwg(user.card.cardPwd): # 验证密码
+ print("密码错误过多...卡已经被锁定,请解卡后使用!")
+ user.card.cardLock = True
+ return -1
+ if not base == 3: #查询转入账户 不打印余额
+ print("账户: %s 余额: %.2f " % (user.card.cardId, user.card.money))
+ return user
+ def getMoney(self):
+ userTF = self.searchUser()
+ if userTF != -1:
+ if userTF.card.cardId != '':
+ inptMoney = float(input("请输入取款金额:"))
+ if inptMoney > float(userTF.card.money):
+ print("输入的金额大于余额,请先查询余额!")
+ return -1
+ userTF.card.money = float(userTF.card.money) - inptMoney
+ print("取款成功! 账户: %s 余额: %.2f " % (userTF.card.cardId, userTF.card.money))
+ else:
+ return -1
+ def saveMoney(self):
+ userTF = self.searchUser()
+ if userTF != -1:
+ if not userTF.card.cardLock == True:
+ if userTF.card.cardId != '':
+ inptMoney = float(input("请输入要存入得金额:"))
+ if inptMoney < 0:
+ print("请输入正确金额")
+ else:
+ userTF.card.money += inptMoney
+ print("存款成功! 账户: %s 余额: %.2f " %
+ (userTF.card.cardId, userTF.card.money))
+ else:
+ return -1
+ def transferMoney(self):
+ MasterTF = self.searchUser(base=2)
+ if (MasterTF == -1):
+ return -1
+ userTF = self.searchUser(base=3)
+ if (userTF == -1):
+ return -1
+ in_tr_Money = float(input("请输入转账金额:"))
+ if MasterTF.card.money >= in_tr_Money:
+ str = input("您确认要继续转账操作吗(Y/N)?:")
+ if str == "Y":
+ MasterTF.card.money -= in_tr_Money
+ print("转账成功! 账户: %s 余额: %.2f " %
+ (MasterTF.card.cardId, MasterTF.card.money))
+ else:
+ print("转账失败,中止了操作")
+ else:
+ print("转账失败,余额不足! 账户: %s 余额: %.2f " %
+ (MasterTF.card.cardId, MasterTF.card.money))
+ def unlockCard(self):
+ inptcardId = input("请输入您的卡号:")
+ user = self.alluser.get(inptcardId)
+ while 1:
+ if not self.alluser.get(inptcardId):
+ print("此卡号不存在...解锁失败!")
+ return -1
+ elif not user.card.cardLock:
+ print("该卡未被锁定,无需解锁!")
+ break
+ elif not self.checkpwg(user.card.cardPwd):
+ print("密码错误...解锁失败!!")
+ return -1
+ user.card.cardLock = False # 解锁
+ print("该卡 解锁 成功!")
+ break
diff --git a/银行系统v1.0/card.py b/银行系统v1.0/card.py
new file mode 100644
index 0000000..3003fb7
--- /dev/null
+++ b/银行系统v1.0/card.py
@@ -0,0 +1,6 @@
+class Card:
+ def __init__(self, cardId, cardPwd, money):
+ self.cardId = cardId
+ self.cardPwd = cardPwd
+ self.money = money
+ self.cardLock = False
\ No newline at end of file
diff --git a/银行系统v1.0/user.py b/银行系统v1.0/user.py
new file mode 100644
index 0000000..4688f1e
--- /dev/null
+++ b/银行系统v1.0/user.py
@@ -0,0 +1,6 @@
+class User:
+ def __init__(self, name, id, phone, card):
+ self.name = name
+ self.id = id
+ self.phone = phone
+ self.card = card
\ No newline at end of file
diff --git a/银行系统v1.0/yinhang.py b/银行系统v1.0/yinhang.py
new file mode 100644
index 0000000..50a7d47
--- /dev/null
+++ b/银行系统v1.0/yinhang.py
@@ -0,0 +1,167 @@
+import tkinter as tk
+from tkinter import messagebox
+from PIL import Image, ImageTk
+
+
+class BankSystem:
+ def __init__(self):
+ self.accounts = {}
+ self.current_id = 0
+
+ def create_account(self, name, amount):
+ if name in self.accounts:
+ messagebox.showerror('错误', '帐户已存在.')
+ else:
+ self.current_id += 1
+ self.accounts[name] = [self.current_id, float(amount)]
+
+ def deposit(self, name, amount):
+ if name not in self.accounts:
+ messagebox.showerror('错误', '找不到帐户.')
+ else:
+ self.accounts[name][1] += float(amount)
+ messagebox.showinfo('成功', f'{amount} 元人民币存入帐户 {name}')
+
+ def withdraw(self, name, amount):
+ if name not in self.accounts:
+ messagebox.showerror('错误', '找不到帐户..')
+ else:
+ if self.accounts[name][1] < float(amount):
+ messagebox.showerror('错误', '余额不足')
+ else:
+ self.accounts[name][1] -= float(amount)
+ messagebox.showinfo('成功', f'{amount} 元人民币从帐户中取出 {name}')
+
+ def transfer(self, sender_name, receiver_name, amount):
+ if sender_name not in self.accounts or receiver_name not in self.accounts:
+ messagebox.showerror('错误', '账号不存在')
+ else:
+ if self.accounts[sender_name][1] < float(amount):
+ messagebox.showerror('错误', '余额不足')
+ else:
+ self.accounts[sender_name][1] -= float(amount)
+ self.accounts[receiver_name][1] += float(amount)
+ messagebox.showinfo('成功', f'{amount} 元人民币从帐户 {sender_name} 转出到帐户 {receiver_name}')
+
+ def check_balance(self, name):
+ if name not in self.accounts:
+ messagebox.showerror('错误', '找不到帐户..')
+ else:
+ balance = self.accounts[name][1]
+ balance = int(balance)
+ messagebox.showinfo('Balance', f'账户 {name} 余额为 {balance} 元')
+
+
+class BankGUI:
+ def __init__(self):
+ self.bank = BankSystem()
+ self.root = tk.Tk()
+ self.root.title('银行管理系统')
+ self.root.geometry('900x800')
+
+ # 设置背景图片
+ self.background_image = Image.open('background.jpg')
+ self.background_photo = ImageTk.PhotoImage(self.background_image)
+ self.background_label = tk.Label(self.root, image=self.background_photo)
+ self.background_label.place(x=0, y=0, relwidth=1, relheight=1)
+
+ # 创建账户
+ self.create_label = tk.Label(self.root, text='创建账户', font=('Arial', 16, 'bold'))
+ self.create_label.place(x=100, y=100)
+ self.name_label = tk.Label(self.root, text='账户名:')
+ self.name_label.place(x=100, y=150)
+ self.name_entry = tk.Entry(self.root)
+ self.name_entry.place(x=200, y=150)
+ self.amount_label = tk.Label(self.root, text='初始金额:')
+ self.amount_label.place(x=100, y=200)
+ self.amount_entry = tk.Entry(self.root)
+ self.amount_entry.place(x=200, y=200)
+ self.create_button = tk.Button(self.root, text='创建', command=self.create_account)
+ self.create_button.place(x=200, y=250)
+
+ # 存款
+ self.deposit_label = tk.Label(self.root, text='存款', font=('Arial', 16, 'bold'))
+ self.deposit_label.place(x=400, y=100)
+ self.deposit_name_label = tk.Label(self.root, text='账户名:')
+ self.deposit_name_label.place(x=400, y=150)
+ self.deposit_name_entry = tk.Entry(self.root)
+ self.deposit_name_entry.place(x=500, y=150)
+ self.deposit_amount_label = tk.Label(self.root, text='存款金额:')
+ self.deposit_amount_label.place(x=400, y=200)
+ self.deposit_amount_entry = tk.Entry(self.root)
+ self.deposit_amount_entry.place(x=500, y=200)
+ self.deposit_button = tk.Button(self.root, text='存款', command=self.deposit)
+ self.deposit_button.place(x=500, y=250)
+
+ # 取款
+ self.withdraw_label = tk.Label(self.root, text='取款', font=('Arial', 16, 'bold'))
+ self.withdraw_label.place(x=100, y=350)
+ self.withdraw_name_label = tk.Label(self.root, text='账户名:')
+ self.withdraw_name_label.place(x=100, y=400)
+ self.withdraw_name_entry = tk.Entry(self.root)
+ self.withdraw_name_entry.place(x=200, y=400)
+ self.withdraw_amount_label = tk.Label(self.root, text='取款金额:')
+ self.withdraw_amount_label.place(x=100, y=450)
+ self.withdraw_amount_entry = tk.Entry(self.root)
+ self.withdraw_amount_entry.place(x=200, y=450)
+ self.withdraw_button = tk.Button(self.root, text='取款', command=self.withdraw)
+ self.withdraw_button.place(x=200, y=500)
+ # 转账
+ self.transfer_label = tk.Label(self.root, text='转账', font=('Arial', 16, 'bold'))
+ self.transfer_label.place(x=400, y=350)
+ self.transfer_sender_label = tk.Label(self.root, text='转出账户:')
+ self.transfer_sender_label.place(x=400, y=400)
+ self.transfer_sender_entry = tk.Entry(self.root)
+ self.transfer_sender_entry.place(x=500, y=400)
+ self.transfer_receiver_label = tk.Label(self.root, text='转入账户:')
+ self.transfer_receiver_label.place(x=400, y=450)
+ self.transfer_receiver_entry = tk.Entry(self.root)
+ self.transfer_receiver_entry.place(x=500, y=450)
+ self.transfer_amount_label = tk.Label(self.root, text='转账金额:')
+ self.transfer_amount_label.place(x=400, y=500)
+ self.transfer_amount_entry = tk.Entry(self.root)
+ self.transfer_amount_entry.place(x=500, y=500)
+ self.transfer_button = tk.Button(self.root, text='转账', command=self.transfer)
+ self.transfer_button.place(x=500, y=550)
+
+ # 查询余额
+ self.balance_label = tk.Label(self.root, text='查询余额', font=('Arial', 16, 'bold'))
+ self.balance_label.place(x=100, y=600)
+ self.balance_name_label = tk.Label(self.root, text='账户名:')
+ self.balance_name_label.place(x=100, y=650)
+ self.balance_name_entry = tk.Entry(self.root)
+ self.balance_name_entry.place(x=200, y=650)
+ self.balance_button = tk.Button(self.root, text='查询', command=self.check_balance)
+ self.balance_button.place(x=200, y=700)
+
+ self.root.mainloop()
+
+ def create_account(self):
+ name = self.name_entry.get()
+ amount = self.amount_entry.get()
+ self.bank.create_account(name, amount)
+ messagebox.showinfo('Success', f'创建成功 账号:{name} 账号余额:{amount}')
+
+ def deposit(self):
+ name = self.deposit_name_entry.get()
+ amount = self.deposit_amount_entry.get()
+ self.bank.deposit(name, amount)
+
+ def withdraw(self):
+ name = self.withdraw_name_entry.get()
+ amount = self.withdraw_amount_entry.get()
+ self.bank.withdraw(name, amount)
+
+ def transfer(self):
+ sender = self.transfer_sender_entry.get()
+ receiver = self.transfer_receiver_entry.get()
+ amount = self.transfer_amount_entry.get()
+ self.bank.transfer(sender, receiver, amount)
+
+ def check_balance(self):
+ name = self.balance_name_entry.get()
+ balance = self.bank.check_balance(name)
+
+
+if __name__ == '__main__':
+ bank_gui = BankGUI()
diff --git a/银行系统v1.0/银行系统.py b/银行系统v1.0/银行系统.py
new file mode 100644
index 0000000..057c0f9
--- /dev/null
+++ b/银行系统v1.0/银行系统.py
@@ -0,0 +1,43 @@
+from admin import Admin
+from atm import ATM
+import time
+class HomePage:
+ def __init__(self):
+ self.allUserD = {} # 使用字典存储数据
+ self.atm = ATM(self.allUserD)
+ self.admin = Admin() # 管理员开机界面
+ def saveUser(self):
+ self.allUserD.update(self.atm.alluser)
+ print("数据存盘成功")
+ def main(self):
+ self.admin.printAdminView()
+ resL = self.admin.adminOption()
+ if not resL:
+ while True:
+ self.admin.printsysFunctionView()
+ option = input("请输入您的操作:")
+ if option not in ("1", "2", "3", "4", "5", "6", "7", "S", "Q"):
+ print("输入操作项有误,请仔细确认!")
+ time.sleep(1)
+ if option == "1": # 开户
+ self.atm.creatUser()
+ elif option == "2": # 查询
+ self.atm.searchUser()
+ elif option == "3": # 取款
+ self.atm.getMoney()
+ elif option == "4": # 存储
+ self.atm.saveMoney()
+ elif option == "5": # 转账
+ self.atm.transferMoney()
+ elif option == "6": # 锁定
+ self.atm.lockCard()
+ elif option == "7": # 解锁
+ self.atm.unlockCard()
+ elif option.upper() == "8":
+ if not (self.admin.adminOption()):
+ self.saveUser()
+ print('退出系统')
+ return -1
+if __name__ == "__main__":
+ homepage = HomePage()
+ homepage.main()