'''
使用面向对象编程完成ATM系统
1.注册功能:用户名,手机号,身份证号(18位),密码(两次确认,长度6位)
2.查询功能:账号必须存在,密码(三次机会,不对就锁卡)
3.取款功能:账号必须存在,密码(三次机会,不对就锁卡),取款金额不能大于存款
4.存款功能:账号必须存在,存款金额不能低于0
5.转帐功能:你的账户,转款账户都必须存在,密码(三次机会,不对就锁卡),转账金额不能超过余额
6.锁卡功能:账号必须存在,可以使用密码冻结,还可以使用身份证号冻结
7.解卡功能:账号必须存在,只能使用身份证号进行解锁
8.补卡功能:使用身份证进行补卡,每个身份证只能有一张卡,之前的卡作废
9.改密功能:愿密码进行改密,也可以使用身份证进行改密
10.退出功能:保存数据
扩展功能
给当前ATM增加一个交易记录的功能
就像存折一样,每次对金额的变动都需要记录下来
每个银行卡都有自己的交易记录
记录的格式:
[2019/12/12 12:12:12]存款200元,余额300元。
[2019/12/12 13:13:13]转账向用户:张三,卡号: 100100转账100元,余额200元。
'''
main.py
from operation import Operation
#主程序
class Main:
def begin():
while True:
print('***欢迎使用ATM自动存取款系统***')
print('有以下功能可供选择:')
print(' 1.注册 2.查询')
print(' 3.取款 4.存款')
print(' 5.转账 6.锁卡')
print(' 7.解卡 8.补卡')
print(' 9.改密 0.退出')
print('****************************')
n=int(input('请输入序号选择相应功能:'))
if n==1:
o.zhuce()
elif n==2:
o.chaxun()
elif n==3:
o.get_money()
elif n==4:
o.save_money()
elif n==5:
o.trans_money()
elif n==6:
o.lock()
elif n==7:
o.unlock()
elif n==8:
o.new_card()
elif n==9:
o.change_pwd()
elif n==0:
print('退出系统成功,欢迎下次使用!')
o.save()
break
else:
print('输入不符合规范,请重新输入')
if __name__=='__main__':
o = Operation()
Main.begin()
operation.py
from card import Card
from person import Person
import random
import pickle
import os
import time
class Operation():
def __init__(self):
#加载卡号用户
self.load_user()
#加载用户身份证号
self.load_user_id()
#保存
def save(self):
with open('user.txt', 'wb') as f:
pickle.dump(self.user_dict, f)#dump 写入
with open('userid.txt', 'wb') as f:
pickle.dump(self.user_id_dict, f)
#读取
def load_user(self):
#如果文件存在 读取文件内容给字典
if os.path.exists('user.txt'):
with open('user.txt', 'rb') as f:
self.user_dict = pickle.load(f)
else:
#如果不存在 字典为空
self.user_dict = {
}
#读取user_id
def load_user_id(self):
#如果文件存在,则进行读取
if os.path.exists('userid.txt'):
with open('userid.txt', 'rb') as f:
self.user_id_dict = pickle.load(f)
#不存在就把user_id_dict设置为空字典
else:
self.user_id_dict = {
}
#####################################################################
#1.注册功能:用户名,手机号,身份证号(18位),密码(两次确认,长度6位)
def zhuce(