Python银行账户管理系统

本系统使用Python的openpyxlhashlib库来实现基本的银行账户管理功能,包括登录、开户、销户、存款、取款、查询、挂失和取消挂失。

导入库

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():
    with openpyxl.load_workbook('bank_accounts.xlsx') as wb:
        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):
    with openpyxl.load_workbook('bank_accounts.xlsx') as wb:
        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('请输入密码:')
    password_md5 = hashlib.md5(password.encode('utf-8')).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位数字):')
        if len(accountId) != 16 or not accountId.isdigit():
            print('账号格式不正确!')
            continue
        userName = input('请输入用户名:')
        userPassword = input('请输入密码(请将密码设置为6位数字):')
        if len(userPassword) != 6 or not userPassword.isdigit():
            print('密码格式不正确!')
            continue
        password_md5 = hashlib.md5(userPassword.encode('utf-8')).hexdigest()
        money = float(input('请输入存款金额:'))
        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 str(user.id) == str(accountId):
            money = user.money
            users.remove(user)
            write_excel(users)
            print('销户成功!')
            print('账户余额:', money)
            return
    print('账户不存在!')

存款功能

def Deposit(users):
    accountId = int(input('请输入账号:'))
    depositMoney = float(input('请输入存款金额:'))
    for user in users:
        if str(user.id) == str(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 str(user.id) == str(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 str(user.id) == str(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 str(user.id) == str(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 str(user.id) == str(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()

总结

该系统实现了基本的银行账户管理功能,可以使用 openpyxl 库读取和写入 Excel 文件,使用 hashlib 库对密码进行 MD5 加密。您可以根据需要扩展该系统,例如添加交易记录功能、用户权限管理功能等。

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

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

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