引言:
最近刚刚接触python,以前学过一些VB语言,上手可能比较快,对计算机有一定的基础,基础算法思路也是比较了解的,最近就ATM这个想法,通过网上的查阅资料,自己花了一天一夜的时间编写了这一段程序,来实现ATM计算机的各项操作,将其拆分成了如下的基本模块:
1.登陆系统
2.注册账户系统
3.存款取款操作
4.查询余额系统
5.退出系统
大致思路:
大概就是拆分成各个模块,然后各模块定义函数,最后汇总。
过程中遇到的问题:
1.刚开始完成的第一代程序是没有注册功能的,也没有存储用户各项信息的功能
解决办法:后来查阅大佬博客学会引入了json模块,新建一个json模块来保存储存用户数据,来实现下次进入程序也能够继承数据。
2.在测试中发现:注册时输入ID重复后那边总是有BUG报错,可能是逻辑不通顺的问题
解决办法:后来引入了几个变量并且衔接While 循环来实现ID重复后,系统给出提示:重新输入,返回之前的输入ID这样一个步骤(试错了很久。。。)
3.也是逻辑问题,一个小BUG,注册时的密码应该为6位数,忘记限制了,后来用True和False这两个变量的引入解决了这个BUG,不知道有没有更好的解决办法,望大佬指点。
数据库模块:
引入json函数模块
需要建立一个"save.json"的文件,在文件中写入[],来方便存储数据
import json
with open('save.json', 'r') as f:
bankuser = json.load(f)
def save(person):
# 保存json,读取格式要写成‘w’,可以对文件内容进行更改,
# 这边将用户数据存储在save.json 这个文件中
with open('save.json', 'w') as f:
json.dump(person, f) # 写入这个人的数据,进行更新
注册模块:
# 创建用户
def create():
newuser = {}
newuser['user'] = input("提示:请输入您的姓名:")
x=True # 引入一个x的布尔变量来判断这个ID是否被注册过
z=True # 引入一个z的变量判断是否能够进行下一步
while z is True:
x=True
for user in bankuser:
if user['user'] == newuser['user']:
print("提示:该账户已被注册")
x=False
if x==True: # 如果x没有改变TF,那么表示这个ID没有被注册过,就直接break出这个While循环
break
else:newuser['user'] = input("提示:请重新输入您的姓名:")
# 如果x=False 就说明ID被注册过了,再输入一次ID,然后返回到上一个步骤比较是否重复
while x is True: # 如果x为True那么就进行预存和密码设置
y=True # 引入一个y变量来判断银行密码是否为6位数
newuser['bank_balance'] = int(input("提示:请输入您的预存金额:"))
newuser['password'] = input("提示:请输入您的六位银行密码&#x