内容:综合应用Python程序设计知识,设计与实现一款简单的手机银行系统。 具体功能要求可参考以下几点: (1)登录功能,使用学号和密码登录,密码连续输错三次则账号冻结; (2)具有账户查询功能:登记账户各项信息,包括:姓名、余额,近一个月的支出和收入,账户挂失; (3)具有存款功能:可按不同货币存款,例如人民币、美元、欧元等; (4)具有取款功能:可快速取1000、2000、3000和其他金额等; (5)具有转账汇款功能:银行账号转账、手机号转账,转账记录,转账限额设置等; (6)具有投资理财功能,如基金投资、购买理财产品、购买个人养老金; (7)期待同学们设计与实现更多其他功能; (8)系统功能完整,程序运行稳定,打包成独立的exe文件

时间: 2024-04-03 15:33:00 浏览: 13
好的,这是一个比较复杂的系统,需要用到多个模块和库。以下是一个基本的框架,你可以根据需要进行修改和扩展: ```python import os import json import random # 定义全局变量 accounts = {} # 存储账户信息 current_user = None # 当前登录用户 currencies = ["CNY", "USD", "EUR"] # 可用货币种类 exchange_rates = { # 货币汇率表 "CNY": {"CNY": 1.0, "USD": 0.16, "EUR": 0.14}, "USD": {"CNY": 6.41, "USD": 1.0, "EUR": 0.86}, "EUR": {"CNY": 7.14, "USD": 1.16, "EUR": 1.0} } # 加载账户信息 def load_accounts(): global accounts if os.path.isfile("accounts.json"): with open("accounts.json", "r") as f: accounts = json.load(f) # 保存账户信息 def save_accounts(): global accounts with open("accounts.json", "w") as f: json.dump(accounts, f) # 注册账户 def register(): global accounts while True: student_id = input("请输入学号:") if student_id in accounts: print("该学号已被注册,请重新输入。") else: break name = input("请输入姓名:") password = input("请输入密码:") account = { "name": name, "password": password, "balance": {"CNY": 0, "USD": 0, "EUR": 0}, "transactions": [] } accounts[student_id] = account save_accounts() print("注册成功!") # 账户登录 def login(): global accounts, current_user student_id = input("请输入学号:") if student_id not in accounts: print("该学号未注册,请重新输入。") return password = input("请输入密码:") account = accounts[student_id] if password != account["password"]: if "login_attempts" not in account: account["login_attempts"] = 1 else: account["login_attempts"] += 1 if account["login_attempts"] >= 3: account["is_locked"] = True print("密码错误次数超过3次,账号已被冻结。") else: print("密码错误,请重新输入。") save_accounts() return if "is_locked" in account and account["is_locked"]: print("该账号已被冻结,请联系管理员。") return current_user = student_id print("登录成功!") # 账户查询 def query(): global accounts, current_user if not current_user: print("请先登录。") return account = accounts[current_user] print("姓名:", account["name"]) print("余额:") for currency, balance in account["balance"].items(): print(currency, ":", balance) print("近一个月支出:") # TODO: 显示近一个月的支出 print("近一个月收入:") # TODO: 显示近一个月的收入 if "is_lost" in account and account["is_lost"]: print("该账户已挂失。") # 存款 def deposit(): global accounts, current_user, currencies if not current_user: print("请先登录。") return account = accounts[current_user] print("请选择货币种类:") for i, currency in enumerate(currencies): print(i+1, currency) choice = input("请输入编号:") if not choice.isdigit() or int(choice) < 1 or int(choice) > len(currencies): print("无效的选择。") return currency = currencies[int(choice)-1] amount = input("请输入存款金额:") if not amount.isdigit(): print("无效的金额。") return amount = int(amount) exchange_rate = exchange_rates["CNY"][currency] cny_amount = amount / exchange_rate account["balance"][currency] += amount account["balance"]["CNY"] += cny_amount account["transactions"].append({ "type": "deposit", "currency": currency, "amount": amount, "exchange_rate": exchange_rate }) save_accounts() print("存款成功!") # 取款 def withdraw(): global accounts, current_user if not current_user: print("请先登录。") return account = accounts[current_user] print("请选择取款金额:") print("1. 1000") print("2. 2000") print("3. 3000") print("4. 其他") choice = input("请输入编号:") if not choice.isdigit() or int(choice) < 1 or int(choice) > 4: print("无效的选择。") return if int(choice) == 4: amount = input("请输入取款金额:") if not amount.isdigit(): print("无效的金额。") return amount = int(amount) else: amount = int(choice) * 1000 if account["balance"]["CNY"] < amount: print("余额不足。") return account["balance"]["CNY"] -= amount account["transactions"].append({ "type": "withdraw", "currency": "CNY", "amount": amount }) save_accounts() print("取款成功!") # 转账汇款 def transfer(): global accounts, current_user if not current_user: print("请先登录。") return account = accounts[current_user] print("请选择转账方式:") print("1. 银行账号转账") print("2. 手机号转账") choice = input("请输入编号:") if not choice.isdigit() or int(choice) < 1 or int(choice) > 2: print("无效的选择。") return if int(choice) == 1: # 银行账号转账 # TODO pass else: # 手机号转账 # TODO pass # 投资理财 def invest(): global accounts, current_user if not current_user: print("请先登录。") return account = accounts[current_user] print("请选择投资方式:") print("1. 基金投资") print("2. 购买理财产品") print("3. 购买个人养老金") choice = input("请输入编号:") if not choice.isdigit() or int(choice) < 1 or int(choice) > 3: print("无效的选择。") return if int(choice) == 1: # 基金投资 # TODO pass elif int(choice) == 2: # 购买理财产品 # TODO pass else: # 购买个人养老金 # TODO pass # 主菜单 def main_menu(): print("欢迎使用手机银行系统!") while True: print("请选择操作:") print("1. 注册账户") print("2. 登录") print("3. 账户查询") print("4. 存款") print("5. 取款") print("6. 转账汇款") print("7. 投资理财") print("8. 退出") choice = input("请输入编号:") if not choice.isdigit() or int(choice) < 1 or int(choice) > 8: print("无效的选择。") continue if int(choice) == 1: register() elif int(choice) == 2: login() elif int(choice) == 3: query() elif int(choice) == 4: deposit() elif int(choice) == 5: withdraw() elif int(choice) == 6: transfer() elif int(choice) == 7: invest() else: print("谢谢使用!") break # 程序入口 if __name__ == "__main__": load_accounts() main_menu() ``` 以上代码实现了一个基本的手机银行系统,包括注册账户、登录、账户查询、存款、取款、转账汇款、投资理财等功能。注意,由于实现这些功能需要大量的代码和算法,因此以上代码只是一个框架,需要你自己完成其中的 TODO 部分,即具体的实现代码。同时,还需要你根据需求进行修改和扩展,例如添加更多的交易类型、货币种类、投资方式等等。 最后,你可以使用 PyInstaller 等工具将代码打包成 exe 文件,这样用户可以直接运行程序,而不需要安装 Python 环境。

相关推荐

最新推荐

recommend-type

[Python语言程序设计-第11期] 测验1: Python基本语法元素 (第1周)

2.以下关于Python语言中“缩进”说法正确的是:缩进在程序中长度统一且强制使用 3.以下不属于IPO模型的是:Program 4.字符串是一个字符序列,给字符串s,以下表示s从右侧向左第三个字符的是:s[-3] 5.以下不是Python...
recommend-type

EduCoder实践课程——Python程序设计入门答案

记:由于疫情暂时返不了校,然后学校大四毕业年级布置了在线实训的任务,我选择了实践课程Python程序设计入门。以前没有学过,可能是之前有过acm经验,感觉Python挺好入门的,把自己学习过程中的代码记录下来,一是...
recommend-type

Python3程序设计课后习题参考答案.pdf.pdf

Python 3 程序设计课后习题答案 译作者: 唐永华 刘德山 李玲 出版社:人民邮电出版社
recommend-type

电子学会Python一级考试知识点总结

一、了解Python有多种开发环境,熟练使用Python自带的IDLE开发 环境,能够进行程序编写、调试和分析,具备使用Python开发环 境进行程序设计的能力: (1)了解Python常见的几种编程环境:IDLE、Visual Studio Code...
recommend-type

Python 面向对象程序设计(一)

# 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法。 #对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。