主函數:
import adminView import os import pickle from bankFunction import BankFunction import time def main(): # pass # 歡迎界面 adminView.welcomeView() if adminView.loginView() == 1: pass adminView.functionView() bank = BankFunction({}) while True: number = input("請輸入您要選擇的功能編號: ") if number == "1": bank.createUser() elif number == "2": # 查詢 bank.questUser() elif number == "3": # 存款 bank.saveMoney() elif number == "4": # 取款 bank.getMoney() elif number == "5": # 轉賬 bank.transferMoney() elif number == "6": # 改密碼 bank.editPasswd() elif number == "7": # 鎖卡 bank.lockCard() elif number == "8": # 解鎖 bank.unlockCard() elif number == "9": # 補卡 bank.fillCard() elif number == "0": # 銷戶 bank.killCard() elif number == "q": print("正在推出系統,請稍后......") time.sleep(2) print("退出成功") break else: print("您輸入的數字有誤,請重新輸入") def test(): adminView.welcomeView() adminView.loginView() adminView.functionView() if __name__ == '__main__': main() # test()
調用數據庫的部分:

""" 類:bankFunction 銀行對象 屬性:銀行功能 """ import random import adminView import pymysql global db db = pymysql.connect( host='localhost', port=3306, user='root', password='caiyishuai', db='bank', charset='utf8mb4' ) global cursor cursor = db.cursor() class BankFunction(object): def __init__(self, dictUser): self.dictUser = dictUser # 開戶 def createUser(self): # 請輸入您的姓名 name = input("請輸入您的姓名: ") # 請輸入您的身份證號碼 idCard = input("請輸入您的身份證號碼: ") # 請輸入您的電話號碼 phone = input("請輸入您的電話號碼: ") cardNumber = self.createCardNumber() passwd = self.setPasswd() if passwd == -1: print("創建失敗") return -1 # 設置金額:錢 money = float(input("請輸入您想存入的金額: ")) # 目的:創建一個user,並且保存字典(數據庫) sql = "INSERT INTO user VALUES(%s,%s,%s,%s)" cursor.execute(sql, (name, idCard, phone, cardNumber)) db.commit() # 提交數據 sql = "INSERT INTO card VALUES(%s,%s,%s,%s)" cursor.execute(sql, (cardNumber, passwd, money, 1)) db.commit() # 提交數據 print("%s,你好,你的卡號是 %s" % (name, cardNumber)) # 設置密碼 def setPasswd(self): for i in range(3): passwd1 = input("請輸入您的密碼: ") passwd2 = input("請再次輸入您的密碼: ") if passwd1 == passwd2: return passwd1 if i == 2: return -1 print("對不起,您兩次輸入的密碼不相同,請重新輸入") # 隨機生成卡號 def createCardNumber(self): while True: cardNumber = "" for i in range(6): cardNumber += str(random.randrange(0, 10)) cursor.execute("SELECT * FROM card where cardNumber = '%s' " % cardNumber) card = cursor.fetchone() print("card", card) if card is None: return cardNumber print(cardNumber) # 查詢 def questUser(self): cardNumber = input("請輸入您的卡號: ") # 使用execute()方法執行SQL語句 cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) # 使用fetall()獲取全部數據 card = cursor.fetchone() # 打印獲取到的數據 # print(card) if card is None: print("對不起,您輸入的卡號不存在!") elif card[3]=='0': print("對不起,您的卡已被鎖定") else: cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber) data = cursor.fetchall()[0] print(data[0], "您好!") for i in range(3): pswd = input("請輸入您的密碼: ") if pswd == card[1]: print("您有金額: ", card[2]) break else: print("對不起,您輸入的密碼錯誤") if i == 2: print("非法用戶!強制退出!") # 存款 def saveMoney(self): print('輸入賬號') cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 # 獲得卡 cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber) data = cursor.fetchall()[0] print(data[0], "您好!") if card[3] == '0': print("你的卡被鎖了,不能存款") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 savemoney = float(input("請輸入您要存入的金額:")) money = str(float(card[2]) + savemoney) cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (money,cardNumber)) db.commit() # 提示消息 print("存款成功,您當前用戶可用余額為:%s元" % (money)) # 取款 def getMoney(self): # 輸入賬號 cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 # 獲得卡 cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber) data = cursor.fetchall()[0] print(data[0], "您好!") if card[3] == '0': print("你的卡被鎖了,不能存款") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 getmoney = float(input("請輸入您要取出的金額:")) if getmoney > float(card[2]): print("對不起,您的余額當前余額為%s元,余額不足!!!" % float(card[2])) return -1 else: card_money = str(float(card[2]) - getmoney) cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (card_money,cardNumber)) db.commit() print("取款成功,您當前用戶可用余額為:%s元" % (card_money)) # 轉賬 def transferMoney(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 elif card[3] == '0': print("你的卡被鎖了,不能存款") return -1 else: cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber) data = cursor.fetchall()[0] print(data[0], "您好!") for i in range(3): pswd = input("請輸入您的密碼: ") # 密碼輸入正確 if pswd == card[1]: # 你有的錢 have_money = float(card[2]) print("您有金額: ", have_money) cardNumber2 = input("請輸入您要轉賬的卡號: ") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber2) card2 = cursor.fetchone() if card2 is None: print("對不起,您輸入的卡號不存在!") elif card2[3] == '0': print("此人的卡被鎖了,不能轉賬") else: while True: turn_money = float(input("請輸入您要轉的金額: ")) if turn_money > have_money: print("對不起,您沒有那么多錢,請重新輸入") else: your_card_money =str( float(card[2])-turn_money) his_card_money =str( float( card2[2])+turn_money) cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (your_card_money,cardNumber)) db.commit() cursor.execute("UPDATE card SET money = '%s' WHERE cardNumber = '%s' " % (his_card_money,cardNumber2)) db.commit() print("恭喜你轉賬成功,你還有", your_card_money, "元") break break else: print("對不起,您輸入的密碼錯誤") if i == 2: print("非法用戶!強制退出!") def checkPwd(self, cardNumber): cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() card_p = card[1] for i in range(3): # 最多驗證3次 Pwd = input("請輸入您的密碼:") if Pwd == card_p: return 0 # 表示密碼輸入正確 if i == 2: return -1 # 3次輸入密碼錯誤 print("您的密碼輸入不正確,請重新輸入:") # 改密 def editPasswd(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") else: cursor.execute("SELECT * FROM user where cardNumber='%s' " % cardNumber) data = cursor.fetchall()[0] print(data[0], "您好!") for i in range(3): pswd = input("請輸入您的密碼: ") if pswd == card[1]: print("您有金額: ", card[2]) while True: new_passwd1 = input("請輸入您新密碼: ") new_passwd2 = input("請再次輸入您新密碼: ") if new_passwd1 != new_passwd2: print("對不起,您兩次輸入的新密碼不同,請重新輸入!") else: cursor.execute("UPDATE card SET passwd = '%s' WHERE cardNumber = '%s' " % (new_passwd1,cardNumber)) db.commit() print("恭喜你!改密成功!") break break else: print("對不起,您輸入的密碼錯誤") if i == 2: print("非法用戶!強制退出!") # 鎖卡 def lockCard(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 flag = input("請問您確認鎖卡嗎?(YSE/NO)") if flag == "YES": cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('0',cardNumber)) db.commit() print("您的賬號已成功鎖定") else: return # 解鎖 def unlockCard(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 cursor.execute("UPDATE card SET isLock = '%s' WHERE cardNumber = '%s' " % ('1',cardNumber)) db.commit() print("您的賬號已成功解鎖") # 補卡 def fillCard(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 if input("是否確認補卡號為:%s的賬戶(y/n)" % cardNumber) == "y": new = self.createCardNumber() cursor.execute("UPDATE card SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber)) db.commit() cursor.execute("UPDATE user SET cardNumber = '%s' WHERE cardNumber = '%s' " % (new,cardNumber)) db.commit() print("補卡成功,新卡號為%s,即將返回功能選擇頁面" % new) return 0 # 表示補卡成功 # 銷戶 def killCard(self): cardNumber = input("請輸入您的卡號:") cursor.execute("SELECT * FROM card where cardNumber= '%s' " % cardNumber) card = cursor.fetchone() if card is None: print("您輸入的卡號有誤,請重新輸入:") return -1 res = self.checkPwd(cardNumber) if res == -1: # 密碼輸入錯誤次數過多 card[3] = '0' return -1 if input("是否確認注銷卡號為:%s的賬戶(y/n)" % cardNumber) == "y": sql = "DELETE FROM card WHERE cardNumber = %s" cursor.execute(sql, (cardNumber)) db.commit() # 提交數據 sql = "DELETE FROM user WHERE cardNumber = %s" cursor.execute(sql, (cardNumber)) db.commit() # 提交數據 print("銷戶成功,已注銷賬戶:%s,即將返回功能選擇頁面" % cardNumber) return 0 # 表示銷戶成功
""" 模塊:adminView.py 歡迎頁界面-----登錄------主功能 """ import time def welcomeView(): print("*****************************") print("******* *******") print("****** 浙江帥帥銀行 ******") print("****** V4.1.1 ******") print("******* *******") print("*****************************") # 讓用戶多看會兒廣告/logo #time.sleep(1) # 登錄界面 # 模擬銀行賬號和密碼 dictUser = {"cys": "1", "ss": "11"} def loginView(): userNameInput = input("請輸入您的管理員賬號: ") passwdInput = input("請輸入您的管理員密碼: ") # 驗證 # 判斷用戶名存不存在 if userNameInput not in dictUser: # 判斷它不存在 print("您輸入的賬號不存在") return -1 # 表示不存在 # 先根據用戶名來獲取密碼 passwd = dictUser[userNameInput] # 判斷密碼是否正確 if passwd != passwdInput: print("您輸入的密碼不正確...算了,讓你進吧") return -1 # 登錄成功 print("恭喜你登錄成功,系統正在加載中......") #time.sleep(3) # 主功能界面 def functionView(): print("********************************") print("******* 主功能 *******") print("****** 開戶(1) 查詢(2) ******") print("****** 存款(3) 取款(4) ******") print("****** 轉賬(5) 改密(6) ******") print("****** 鎖卡(7) 解鎖(8) ******") print("****** 補卡(9) 銷戶(0) ******") print("******* 退出(q) *******") print("********************************")
數據庫部分:
設計思路(部分):