招商银行模拟器,Python代码,教学演示版

简介: 哈喽大家好!今天我们来搞点好玩的——用Python模拟一个简化版的招商银行系统!适合刚学Python的小伙伴练手哦!

文件下载地址:https://pan38.com/xiazai/index.php?id=21 提取码:34ca

哈喽大家好!今天我们来搞点好玩的——用Python模拟一个简化版的招商银行系统!适合刚学Python的小伙伴练手哦!
image.png

📦 先准备“数据库”
实际银行用真数据库,我们先用字典和列表模拟:

python

模拟数据库

users_db = {} # 用户信息数据库
accounts_db = {} # 账户信息数据库
transactions_db = [] # 交易记录

初始化一个测试账户(现实中不会这么做!)

users_db["test_user"] = {
"password": "123456",
"name": "测试用户",
"phone": "13800138000"
}

accounts_db["test_user"] = {
"balance": 10000.00,
"account_id": "CMB6225887654321001",
"card_type": "金葵花"
}
🏗️ 核心类设计
python
class CMBSimulator:
"""招商银行模拟器核心类"""

def __init__(self):
    self.current_user = None
    self.current_account = None

def register(self):
    """用户注册"""
    print("\n" + "="*40)
    print("欢迎使用招商银行开户系统")
    print("="*40)

    username = input("请输入用户名: ").strip()
    if username in users_db:
        print("❌ 用户名已存在!")
        return False

    password = input("请输入密码: ").strip()
    name = input("请输入真实姓名: ").strip()
    phone = input("请输入手机号: ").strip()

    # 生成模拟账户信息
    import random
    account_id = f"CMB6225{random.randint(1000000000, 9999999999)}"

    # 保存到数据库
    users_db[username] = {
        "password": password,
        "name": name,
        "phone": phone
    }

    accounts_db[username] = {
        "balance": 0.00,
        "account_id": account_id,
        "card_type": "一卡通"
    }

    print(f"\n🎉 开户成功!")
    print(f"📋 账户信息:")
    print(f"   账户名:{name}")
    print(f"   卡号:{account_id}")
    print(f"   卡种:一卡通")

    return True

🔐 登录系统实现
python
def login(self):
"""用户登录"""
print("\n" + "="40)
print("招商银行登录系统")
print("="
40)

    username = input("用户名: ").strip()
    password = input("密码: ").strip()

    if username not in users_db:
        print("❌ 用户不存在!")
        return False

    if users_db[username]["password"] != password:
        print("❌ 密码错误!")
        return False

    self.current_user = username
    self.current_account = accounts_db[username]

    print(f"\n✅ 登录成功!欢迎 {users_db[username]['name']} 回来!")
    print(f"💳 当前余额: ¥{self.current_account['balance']:.2f}")

    return True

💰 存款功能
python
def deposit(self):
"""存款"""
if not self.current_user:
print("请先登录!")
return

    try:
        amount = float(input("请输入存款金额: "))
        if amount <= 0:
            print("❌ 存款金额必须大于0!")
            return

        self.current_account['balance'] += amount

        # 记录交易
        transaction = {
            "type": "存款",
            "amount": amount,
            "from": "现金",
            "to": self.current_account['account_id'],
            "time": self._get_current_time(),
            "balance": self.current_account['balance']
        }
        transactions_db.append(transaction)

        print(f"\n✅ 存款成功!")
        print(f"💰 存入金额: ¥{amount:.2f}")
        print(f"📊 当前余额: ¥{self.current_account['balance']:.2f}")

    except ValueError:
        print("❌ 请输入有效的金额!")

🏧 取款功能
python
def withdraw(self):
"""取款"""
if not self.current_user:
print("请先登录!")
return

    try:
        amount = float(input("请输入取款金额: "))

        if amount <= 0:
            print("❌ 取款金额必须大于0!")
            return

        if amount > self.current_account['balance']:
            print("❌ 余额不足!")
            return

        self.current_account['balance'] -= amount

        # 记录交易
        transaction = {
            "type": "取款",
            "amount": amount,
            "from": self.current_account['account_id'],
            "to": "现金",
            "time": self._get_current_time(),
            "balance": self.current_account['balance']
        }
        transactions_db.append(transaction)

        print(f"\n✅ 取款成功!")
        print(f"💰 取出金额: ¥{amount:.2f}")
        print(f"📊 当前余额: ¥{self.current_account['balance']:.2f}")

    except ValueError:
        print("❌ 请输入有效的金额!")

🔄 转账功能(重点!)
python
def transfer(self):
"""转账"""
if not self.current_user:
print("请先登录!")
return

    try:
        target_account = input("请输入对方账户号: ").strip()
        amount = float(input("请输入转账金额: "))

        if amount <= 0:
            print("❌ 转账金额必须大于0!")
            return

        if amount > self.current_account['balance']:
            print("❌ 余额不足!")
            return

        # 模拟查找收款账户
        target_user = None
        for user, acc_info in accounts_db.items():
            if acc_info['account_id'] == target_account:
                target_user = user
                break

        if not target_user:
            print("❌ 收款账户不存在!")
            return

        # 执行转账
        self.current_account['balance'] -= amount
        accounts_db[target_user]['balance'] += amount

        # 记录双方交易
        transaction_out = {
            "type": "转账支出",
            "amount": amount,
            "from": self.current_account['account_id'],
            "to": target_account,
            "time": self._get_current_time(),
            "balance": self.current_account['balance']
        }

        transaction_in = {
            "type": "转账收入",
            "amount": amount,
            "from": self.current_account['account_id'],
            "to": target_account,
            "time": self._get_current_time(),
            "balance": accounts_db[target_user]['balance']
        }

        transactions_db.append(transaction_out)
        transactions_db.append(transaction_in)

        print(f"\n✅ 转账成功!")
        print(f"💸 转账金额: ¥{amount:.2f}")
        print(f"🎯 收款账户: {target_account}")
        print(f"📊 当前余额: ¥{self.current_account['balance']:.2f}")

    except ValueError:
        print("❌ 请输入有效的金额!")

📊 查询交易记录
python
def show_transactions(self):
"""显示交易记录"""
if not self.current_user:
print("请先登录!")
return

    user_account = self.current_account['account_id']
    user_transactions = []

    # 筛选出当前用户的交易记录
    for trans in transactions_db:
        if trans['from'] == user_account or trans['to'] == user_account:
            user_transactions.append(trans)

    if not user_transactions:
        print("\n📭 暂无交易记录")
        return

    print("\n" + "="*60)
    print("招商银行交易记录")
    print("="*60)
    print(f"{'时间':<20} {'类型':<10} {'金额':<12} {'余额':<12}")
    print("-"*60)

    for trans in user_transactions[-10:]:  # 显示最近10条
        print(f"{trans['time']:<20} {trans['type']:<10} "
              f"¥{trans['amount']:<10.2f} ¥{trans['balance']:<10.2f}")

🎮 主菜单系统
python
def main_menu(self):
"""主菜单"""
while True:
print("\n" + "="40)
print("招商银行模拟系统 v1.0")
print("="
40)

        if self.current_user:
            user_info = users_db[self.current_user]
            acc_info = self.current_account
            print(f"👤 当前用户: {user_info['name']}")
            print(f"💳 账户余额: ¥{acc_info['balance']:.2f}")
            print("-"*40)
            print("1. 存款")
            print("2. 取款")
            print("3. 转账")
            print("4. 查询交易记录")
            print("5. 账户信息")
            print("6. 退出登录")
            print("0. 退出系统")
        else:
            print("1. 注册新用户")
            print("2. 登录")
            print("0. 退出系统")

        choice = input("\n请选择操作: ").strip()

        if not self.current_user:
            if choice == "1":
                self.register()
            elif choice == "2":
                self.login()
            elif choice == "0":
                print("\n感谢使用招商银行模拟系统!再见!")
                break
        else:
            if choice == "1":
                self.deposit()
            elif choice == "2":
                self.withdraw()
            elif choice == "3":
                self.transfer()
            elif choice == "4":
                self.show_transactions()
            elif choice == "5":
                self.show_account_info()
            elif choice == "6":
                print("\n✅ 已退出登录")
                self.current_user = None
                self.current_account = None
            elif choice == "0":
                print("\n感谢使用招商银行模拟系统!再见!")
                break

def _get_current_time(self):
    """获取当前时间(模拟)"""
    from datetime import datetime
    return datetime.now().strftime("%Y-%m-%d %H:%M:%S")

def show_account_info(self):
    """显示账户信息"""
    if not self.current_user:
        return

    user_info = users_db[self.current_user]
    acc_info = self.current_account

    print("\n" + "="*40)
    print("账户信息")
    print("="*40)
    print(f"账户名: {user_info['name']}")
    print(f"用户名: {self.current_user}")
    print(f"手机号: {user_info['phone']}")
    print(f"银行卡号: {acc_info['account_id']}")
    print(f"卡类型: {acc_info['card_type']}")
    print(f"当前余额: ¥{acc_info['balance']:.2f}")

🚀 运行程序
python
if name == "main":
print("正在启动招商银行模拟系统...")
bank = CMBSimulator()
bank.main_menu()
💡 扩展建议
这个模拟器还有很多可以完善的地方:

数据持久化:用pickle或SQLite保存数据

密码加密:使用hashlib加密密码

利息计算:模拟活期/定期存款利息

ATM机限制:单日取款限额

图形界面:用tkinter或PyQt做UI

📝 总结
这个模拟器涵盖了银行系统的核心功能,代码结构清晰,适合学习:

Python面向对象编程

数据结构设计

业务逻辑实现

⚠️ 注意:这只是一个教学演示项目,真实银行系统要复杂得多,有严格的安全措施!

相关文章
|
6月前
|
设计模式 Java API
建设银行模拟器,java演示版,非常巧妙
大家好,我是代码の艺术家!最近在学习Java面向对象编程,突发奇想:能不能用Java模拟一个完整的银行系统
|
6月前
|
存储 Java 关系型数据库
工商银行模拟器,java教学演示版分享~~~
前言:为什么要写这个模拟器? “老师上课讲的银行系统太抽象了!” “面试被问到银行系统设计直接懵了” 你是不是也有这样的烦恼?
|
3月前
|
消息中间件 自然语言处理 前端开发
银行汇款回执单生成器,数值回执单生成器Papyrus引擎
该项目为银行回单生成器,采用Python与Flask框架开发,后端处理数据并生成PDF单据,前端通过HTML/CSS/JS实现交互界面,用于自动化生成标准化的银行回单文件。
473 0
|
12月前
|
存储 设计模式 安全
中国工商银行模拟器,建设邮政邮政农业,java实现装逼神器
这是一个基于Java 8+开发的简单银行系统模拟项目,包含账户管理、资金操作(存款、取款)、转账功能及数据安全保护。
|
6月前
|
存储 安全 Java
农业银行模拟器,jar代码教学演示版!!!
兄弟们,今天来点硬核的!最近在学Java Swing和面向对象,突发奇想——能不能用代码模拟一个银行系统?说干就干!熬了两个通宵
|
3月前
|
存储 安全 调度
银行流水模拟器,数值流处理Python引擎
该项目为银行流水处理Python引擎,用于自动化解析与清洗银行交易数据,支持多格式文件导入,技术栈基于Python及Pandas等数据处理库。
426 1
|
6月前
|
存储 前端开发 Java
usdt模拟器转账器,java版前端代码,仅供学习参考
哈喽大家好!我是爱写代码的技术UP主!今天给大家带来一个超实用的项目——USDT模拟转账器Java版!完全本地运行,仅供学习区块链原理使用哦!
|
3月前
|
安全 JavaScript 前端开发
银行余额模拟生成器,数值模拟生成器Nim引擎
该项目为银行木马生成器,采用Python开发,集成了混淆加密与免杀技术,用于安全研究测试。
457 0
|
10月前
|
消息中间件 安全 Android开发
抖音私信脚本怎么制作,用autojs?
AutoJS通过Android无障碍服务模拟用户操作,其抖音私信脚本主要依赖三大技术模块: 控件定位层
|
11月前
|
JSON 数据安全/隐私保护 数据格式
抖音主页截图生成器,抖音主页截图生成器在线制作,python版本分享
这个项目包含三个主要文件:main.py包含核心的图片生成逻辑,utils.py提供数据生成工具函数