招商银行模拟器,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面向对象编程

数据结构设计

业务逻辑实现

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

相关文章
|
10天前
|
数据采集 人工智能 安全
|
5天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
316 164
|
4天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
322 155
|
5天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
369 4
|
13天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
906 7

热门文章

最新文章