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()