python作业atm_python完成ATM(分目录)
importosimporthashlibimportjsonfrom conf importsettingsfrom lib importcommon#登录状态
status_dic ={'username': None,'status': False
}
flag=True
li=os.listdir(settings.user_path)#登录函数
deflogin():
count=0while count < 3:
username= input("请输入姓名:").strip()
password= input("请输入密码:").strip()
ret=hashlib.md5()
ret.update(password.encode("utf-8"))
pwd=ret.hexdigest()
with open(settings.user_path+'\\'+username +".json",encoding="utf-8") as f:
s=json.loads(f.readline())if username+'.json' in li and s[username] ==pwd:
status_dic["username"] =username
status_dic['status'] = True #状态改为True
print("登陆成功")returnTrueelse:print("账号或密码错误,请重新登录")
count+= 1
#注册函数
defregister():
count=0while count < 3:
username= input("请输入新账号:").strip()
password= input("请输新入密码:").strip()if username in li: #判断用户是否在文件中存在
print("用户名已存在,请重新输入")continue
elif not username.isalnum(): #判断用户是否是字母或数字组成
print("账号含有非法字符,请重新输入")continue
elif 5 < len(password) < 15: #限制密码在6-14位之间
dic ={}
md5=hashlib.md5()
md5.update(password.encode("utf-8"))
pwd=md5.hexdigest()
with open(settings.user_path+'\\'+username +".json", encoding="utf-8", mode="w") as f1:
dic[username]=pwd
dic.setdefault("money",0)
s=json.dumps(dic)
f1.write(s+"\n")print("恭喜!注册成功")returnTrueelse:print("密码不合规范,请重新输入")
count+= 1@common.authdeflook_money():print("您已进入查看余额功能")
with open(settings.user_path+ '\\' + status_dic["username"] + '.json', encoding="utf-8", mode="r") as f:
ret=json.loads(f.read())print(f'余额为:{ret["money"]}')
@common.authdefmoney():print("您已进入存钱功能")
c_money= input("请输入要存储的金额:").strip()
cq_money=int(c_money)
with open(settings.user_path+'\\'+status_dic["username"] +'.json',encoding="utf-8",mode="r") as f3,\
open(settings.user_path+'\\'+status_dic["username"] +'.bak',encoding="utf-8",mode="w") as f4:
ret=json.loads(f3.readline())
ret["money"] +=cq_money
s=json.dumps(ret)
f4.write(s)
os.remove(settings.user_path+'\\'+status_dic["username"] +'.json')
os.rename(settings.user_path+'\\'+status_dic["username"] +'.bak',settings.user_path+'\\'+status_dic["username"] +'.json')print(f"恭喜存钱成功")
@common.authdefzq_money():print("您已进入转账功能")
zz_user= input("请输入对方账户:").strip()
zz_money= int(input("请输入要转的金额:").strip())
zz_user1= zz_user + ".json"
if zz_user1 not in li: #判断用户是否在文件中存在
print("用户名不存在")else:
with open(settings.user_path+ '\\' + status_dic["username"] + '.json', encoding="utf-8", mode="r") as f1, \
open(settings.user_path+ '\\' + status_dic["username"] + '.bak', encoding="utf-8", mode="w") as f2:
ret=json.loads(f1.readline())
ret["money"] -=zz_money
s=json.dumps(ret)
f2.write(s)
os.remove(settings.user_path+ '\\' + status_dic["username"] + '.json')
os.rename(settings.user_path+ '\\' + status_dic["username"] + '.bak',
settings.user_path+ '\\' + status_dic["username"] + '.json')
with open(settings.user_path+ '\\' + zz_user1, encoding="utf-8", mode="r") as f2, \
open(settings.user_path+ '\\' + zz_user1+".bak", encoding="utf-8", mode="w") as f3:
ret=json.loads(f2.readline())
ret["money"] +=zz_money
s=json.dumps(ret)
f3.write(s)
os.remove(settings.user_path+ '\\' +zz_user1)
os.rename(settings.user_path+ '\\' + zz_user1+".bak",
settings.user_path+ '\\' +zz_user1)print("转账交易成功")
@common.authdefch_user():print("您已进入查看账户流水功能")
logger=common.record_logger()
logger.info(f'status_dic["username"]进行了流水操作')#退出程序
defexit_program():globalflag
flag=Falsereturnflagdefrun():
choice_dict={1: login,2: register,3: look_money,4: money,5: zq_money,6: ch_user,7: exit_program,
}whileflag:print('''欢迎来到ATM系统
1:请登录
2:请注册
3:查看余额
4:存钱
5:转账
6:查看账户流水
7:退出程序''')
choice= input('请输入您选择的序号:').strip()ifchoice.isdigit():
choice=int(choice)if 0 < choice <=len(choice_dict):
choice_dict[choice]()else:print("您输入的超出范围")else:print("输入不合规范,重新输入")
python作业atm_python完成ATM(分目录)相关推荐
- python atm作业详解_python完成ATM(分目录)
模块跳转: 项目需求: 用**规范化项目目录**的格式模拟一个ATM系统. 项目功能: 1. 登录(可支持多个账户(非同时)登录). 2. 注册. 3. 查看余额. 4. 存钱. 5. 转账(给其他用 ...
- python算法完整教程专栏完整目录
python算法完整教程专栏完整目录 专栏说明如下 专栏目录 专栏说明如下 内容:python算法完整教程 数量:692篇博文(2023年2月15日截止) 更新时间至:2023年2月15日(后续加上去 ...
- github标星11600+:最全的吴恩达机器学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...
吴恩达老师的机器学习课程,可以说是机器学习入门的第一课和最热门课程,我在github开源了吴恩达机器学习个人笔记,用python复现了课程作业,成为热门项目,star数达到11671+,曾经有相关报道 ...
- python作业爬取xxx大学排行
python作业爬取xxx大学排名榜单,python-selenium爬虫解决(本文章仅学习,网站数据也是公开的) 文章目录 前言 一.分析网页 二.需要实现过程 三.代码实现 1.引入库 2.全部代 ...
- HIT暑假python作业三《超级画板》
HIT暑假python作业三<超级画板> 作业上交版代码 编译版 程序运行效果**(运行时确保同目录下有文件夹img,里面有pen,eraser,plus,minus四个png图象,如果没 ...
- 模式识别与机器学习(Python实现):决策树分男女
模式识别与机器学习(Python实现):决策树分男女 欢迎大家来到安静到无声的<模式识别与人工智能(程序与算法)>,如果对所写内容感兴趣请看模式识别与人工智能(程序与算法)系列讲解 - 总 ...
- 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件.清除缓存文件.解救C盘.拒绝C盘爆炸 目录
- Python中import导入上一级目录模块及循环import问题的解决
Python中import导入上一级目录模块及循环import问题的解决 参考文章: (1)Python中import导入上一级目录模块及循环import问题的解决 (2)https://www.cn ...
- python打开指定文件-python打包压缩、读取指定目录下的指定类型文件
下面通过代码给大家介绍python打包压缩指定目录下的指定类型文件,具体代码如下所示: import os import datetime import tarfile import fnmatch ...
最新文章
- 多模态人物识别技术及其在视频场景中的应用 | CSDN技术公开课
- 联想服务器 重装系统u盘启动,联想_Lenovo BIOS Setup Utility 设置U盘启动教程
- caffe读书笔记1 CIFAR-10在caffe上进行训练与学习
- pycharm解决pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool
- Mac是大脑,iPad是四肢 如何实现的呢?右键而已
- Android 程序打包及签名
- concat特征融合_深度特征融合---理解add和concat之多层特征融合
- 使用Nginx+uWSGI部署Django项目
- 深入谈一谈iOS模块独立运行
- 基于TCP协议的网络摄像头的设计与实现
- java获取文件大小_Java获取文件大小
- 学以致用二十四-----shell脚本中的列表及space
- 立创开源|PCIE X1转PCIE X16
- composer 换国内镜像
- 全球与中国多模连续光纤激光器市场现状及未来发展趋势
- 水晶报表中如何创建自定义的纸张大小格式?
- Android Gatekeeper梳理
- OLTP vs OLAP 区别和联系
- 果园篱笆c语言算法,凸包问题(果园篱笆)
- php视频转音频文件怎么打开,视频怎么转音频格式 MP4格式怎样转MP3格式
热门文章
- 创建表的时候要添加目标语句use
- 人民大学的《统计学》
- Python通过正则表达式去除(过滤)HTML标签,提取文字
- 使用mybatis插入数据(insert)时返回主键的问题
- day17 appium环境搭建
- 【剑指Offer学习】【面试题66:矩阵中的路径】
- Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明
- 【转载】100多个很有用的JavaScript函数以及基础写法大集合
- leetcode. Intersection of Two Linked Lists
- 游戏里的---Change