Python 银行系统:使用 openpyxl 和 hashlib 库管理银行账户信息
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()
原文地址: https://www.cveoy.top/t/topic/oJ7p 著作权归作者所有。请勿转载和采集!