import openpyxl import hashlib

定义用户结构体

class User: def init(self, id, userName, userPassword, money, status): self.id = id self.userName = userName self.userPassword = userPassword self.money = money self.status = status

读取银行账户信息表格

def read_excel(): # 打开表格文件 wb = openpyxl.load_workbook('bank_accounts.xlsx') # 获取第一个工作表 ws = wb.active # 定义用户结构体数组 users = [] # 遍历表格中的每一行数据,构造用户结构体并存储到数组中 for row in ws.iter_rows(min_row=2): user = User(row[0].value, row[1].value, row[2].value, row[3].value, row[4].value) users.append(user) return users

写入银行账户信息表格

def write_excel(users): # 打开表格文件 wb = openpyxl.load_workbook('bank_accounts.xlsx') # 获取第一个工作表 ws = wb.active # 清空表格中的数据 ws.delete_rows(3, ws.max_row) # 将用户结构体数组中的数据写入表格中 for i in range(len(users)): ws.append([users[i].id, users[i].userName, users[i].userPassword, users[i].money, users[i].status]) # 保存表格文件 wb.save('bank_accounts.xlsx')

登录功能

def Login(users): username = input('请输入用户名:') password = input('请输入密码:') # 对密码进行MD5加密 md5 = hashlib.md5() md5.update(password.encode('utf-8')) password_md5 = md5.hexdigest() for user in users: if user.userName == username and user.userPassword == password_md5: print('登录成功!') # 进入系统功能界面 return print('用户名或密码错误!')

开户功能

def OpenAccount(users): while True: # 获取用户输入的账号、用户名等信息 accountId = input('请输入账号(请将账号设置为16位数字):') # 判断账号是否为16位数字 if len(accountId) != 16 or not accountId.isdigit(): print('账号格式不正确!') continue userName = input('请输入用户名:') userPassword = input('请输入密码(请将密码设置为6位数字):') # 判断密码是否为6位数字 if len(userPassword) != 6 or not userPassword.isdigit(): print('密码格式不正确!') continue # 对密码进行MD5加密 md5 = hashlib.md5() md5.update(userPassword.encode('utf-8')) password_md5 = md5.hexdigest() while True: try: money = float(input('请输入存款金额:')) if money < 0: print('存款金额不能为负数!') continue elif money != round(money, 2): print('存款金额小数点后只能保留两位,请重新输入!') continue except ValueError: print('存款金额格式不正确,请重新输入!') continue else: break # 在银行中创建一个新账户 newUser = User(accountId, userName, password_md5, money, 1) # 将账户信息存储到用户结构体数组中 users.append(newUser) write_excel(users) print('开户成功!') break

销户功能

def CloseAccount(users): # 获取用户输入的账号 accountId = int(input('请输入账号:')) for user in users: if user.id == accountId: # 取出账户余额 money = user.money # 将账户状态更新为销户状态 user.status = 0 write_excel(users) print('销户成功!') print('账户余额:', money) return print('账户不存在!')

存款功能

def Deposit(users): # 获取用户输入的账号和存款金额 accountId = int(input('请输入账号:')) depositMoney = float(input('请输入存款金额:')) for user in users: if user.id == accountId: if user.status == 0: print('账户已被注销!') return elif user.status == 2: print('账户已被挂失!') return else: # 将存款金额加到账户余额中 user.money += depositMoney write_excel(users) print('存款成功!') print('账户余额:', user.money) return print('账户不存在!')

取款功能

def Withdraw(users): # 获取用户输入的账号和取款金额 accountId = int(input('请输入账号:')) withdrawMoney = float(input('请输入取款金额:')) for user in users: if user.id == accountId: if user.status == 0: print('账户已被注销!') return elif user.status == 2: print('账户已被挂失!') return elif withdrawMoney > user.money: print('账户余额不足!') return elif withdrawMoney > 5000: print('单笔取款金额不能超过5000元!') return else: # 将取款金额从账户余额中减掉 user.money -= withdrawMoney write_excel(users) print('取款成功!') print('账户余额:', user.money) return print('账户不存在!')

查询功能

def Query(users): # 获取用户输入的账号 accountId = int(input('请输入账号:')) for user in users: if user.id == accountId: if user.status == 0: print('账户已被注销!') return elif user.status == 2: print('账户已被挂失!') return else: # 查询账户的余额和基本信息 print('账户名:', user.userName) print('账户余额:', user.money) return print('账户不存在!')

挂失功能

def LoseCard(users): # 获取用户输入的账号 accountId = int(input('请输入账号:')) for user in users: if user.id == accountId: if user.status == 0: print('账户已被注销!') return elif user.status == 2: print('账户已被挂失!') return else: # 将账户状态改变为挂失状态 user.status = 2 write_excel(users) print('挂失成功!') return print('账户不存在!')

取消挂失功能

def OpenCard(users): # 获取用户输入的账号 accountId = int(input('请输入账号:')) for user in users: if user.id == accountId: if user.status == 0: print('账户已被注销!') return elif user.status == 1: print('账户未被挂失!') return else: # 将账户状态改变为正常状态 user.status = 1 write_excel(users) print('取消挂失成功!') return print('账户不存在!')

退出功能

def Exit(): # 退出系统 print('退出系统!')

主函数

def main(): # 读取银行账户信息表格 users = read_excel() while True: # 显示功能菜单供用户选择 print('1. 登录') print('2. 开户') print('3. 销户') print('4. 存款') print('5. 取款') print('6. 查询') print('7. 挂失') print('8. 取消挂失') print('9. 退出')

    choice = input('请输入您的选择:')

    if choice == '1':
        Login(users)
    elif choice == '2':
        OpenAccount(users)
    elif choice == '3':
        CloseAccount(users)
    elif choice == '4':
        Deposit(users)
    elif choice == '5':
        Withdraw(users)
    elif choice == '6':
        Query(users)
    elif choice == '7':
        LoseCard(users)
    elif choice == '8':
        OpenCard(users)
    elif choice == '9':
        Exit()
        break
    else:
        print('无效的选择,请重新输入!')

运行主函数

if name == 'main': main()

Python 银行系统:使用 openpyxl 和 hashlib 库管理银行账户信息

原文地址: https://www.cveoy.top/t/topic/oJ7p 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录