列出对象及属性名称行为...py
'''
人
类名:Person
属性:姓名 身份证号 电话 卡
行为:
卡
类名:Card
属性:卡号 密码 余额
行为:
银行
类名:Bank
属性:用户列表 提款机
提款机
类名:ATM
属性:用户字典
行为:开户 查询 取款 存储 转账 改密 锁定 解锁 补卡 销户
界面
类名:View
属性:
行为: 管理员界面 系统功能界面 管理员登陆
'''
import time
import pickle
import os
from view import View
from atm import ATM
def main():
# 用户管理员开机功能
view = View()
# 管理员开机
view.printAdminView()
if view.adminOption():
return -1
#存储用户所有的信息
# allUser = {}
#提款机对象
filepath = os.path.join(os.getcwd(), "allUsers.txt")
f = open(filepath,"rb")
allUsers = pickle.load(f)
# allUsers = {}
atm = ATM(allUsers)
print(allUsers)
while 1:
view.sysFunctionView()
#等待用户的操作
option = input("请输入您的操作:")
if option =="1":
atm.creatUser()
# print("开户")
elif option == "2":
atm.serchUserInfo()
elif option == "3":
atm.getMoney()
print("取款")
elif option == "4":
print("存款")
elif option =="5":
print("转账")
elif option == "6":
print("改密")
elif option == "7":
atm.lockUser()
elif option == "8":
atm.unlockUser()
elif option == "9":
print("补卡")
elif option == "0":
print("销户")
elif option == "T":
print("退出")
if not view.adminOption():
#将信息保留到文件中
# filepath = os.path.join(os.getcwd(),"allUsers.txt")
f= open(filepath,"wb")
pickle.dump(atm.allUsers,f)
f.close()
return -1
time.sleep(2)
if __name__ =="__main__":
main()
atm.py
from card import Card
from user import User
import random
class ATM (object):
def __init__(self,allUsers):
self.allUsers = allUsers
def creatUser(self):
#目标:想用户字典中添加一对键值对(卡号-用户)
name = input("请输入您的姓名:")
idCard = input("请输入您的身份证号码:")
phone = input("请输入您的电话号码:")
prestoreMoney = int(input("请输入预存款金额:"))
if prestoreMoney<0:
print("输入金额有误!!开户失败")
return -1
onePasswd = int(input("请设置密码"))
#验证密码
if not self.checkPasswd(onePasswd):
print("密码输入错误输入失败")
return -1
#所有需要的信息就全了
cardStr = self.randomCardId()
card = Card(cardStr,onePasswd,prestoreMoney)
user= User(name,idCard,phone,card)
#存到字典
self.allUsers[cardStr] = user
print("开户成功!!请牢记卡号%s!!"%cardStr)
#验证密码
def checkPasswd(self,realPasswd):
for i in range(3):
tempPasswd = int(input("请输入密码:"))
if tempPasswd == realPasswd:
return True
return False
#生成卡号
def randomCardId(self):
while True:
str = ""
for i in range(6):
ch = chr(random.randrange(ord('0'), ord('9') + 1))
str += ch
# 判断是否重复
if not self.allUsers.get(str):
return str
def serchUserInfo(self):
cardNum = input("请输入您要查询的卡号:")
user= self.allUsers.get(cardNum)
if not user:
print("该卡号不存在,查询失败。")
return -1
#验证密码
if not self.checkPasswd(user.card.cardPasswd):
print("密码输入错误!!查询失败")
return -1
print("账号:%s,余额:%d"%(user.card.cardId,user.card.cardMoney))
def getMoney(self):
cardNum = input("请输入您要查询的卡号:")
user = self.allUsers.get(cardNum)
if not user:
print("该卡号不存在,取款失败。")
return -1
# 判断是否锁定
if user.card.cardLock:
print("该卡已被锁定,请解锁后进行其他操作")
return -1
# 验证密码
if not self.checkPasswd(user.card.cardPasswd):
print("密码输入错误!!已被锁定解锁后进行其他操作")
user.card.cardLock = True
return -1
#取款
money =int(input("请输入取款金额"))
if money> user.card.cardMoney:
print("余额不足")
return -1
if money<0:
print("输入错误")
return -1
user.card.cardMoney-=money
print("取款成功余额为:%d"%user.card.cardMoney)
def saveMoney(self):
pass
def transforMoney(self):
pass
def changePasswd(self):
pass
def lockUser(self):
cardNum = input("请输入您要查询的卡号:")
user = self.allUsers.get(cardNum)
if not user:
print("该卡号不存在,锁定失败。")
return -1
# if user.card.cardLock:
# print("该卡号已被锁定!请解锁后再使用其他功能")
# return -1
#判断是否锁定
if user.card.cardLock:
print("该卡已被锁定,请解锁后进行其他操作")
return -1
# 验证密码
if not self.checkPasswd(user.card.cardPasswd):
print("密码输入错误!!锁定失败")
user.card.cardLock = True
return -1
print("账号:%s,余额:%d" % (user.card.cardId, user.card.cardMoney))
tempIdCard = input("请输入您的身份证号:")
if tempIdCard!=user.idCard:
print("身份证输入错误!!锁定失败")
return -1
#锁他
user.card.cardLock= True
print("锁定成功")
def unlockUser(self):
cardNum = input("请输入您要解锁的卡号:")
user = self.allUsers.get(cardNum)
if not user:
print("该卡号不存在,解锁失败。")
return -1
if not user.card.cardLock:
print("该卡没有锁定!无需解锁。")
return -1
# 验证密码
if not self.checkPasswd(user.card.cardPasswd):
print("密码输入错误!!锁定失败")
return -1
#解锁、
user.card.cardLock = False
print("解锁成功!")
def newCard(self):
pass
def killUser(self):
pass
card.py
class Card(object):
def __init__(self,cardId,cardPasswd,cardMoney):
self.cardId = cardId
self.cardPasswd = cardPasswd
self.cardMoney= cardMoney
self.cardLock = False
user.py
class User(object):
def __init__(self,name,idCard,phone,card):
self.name = name
self.idCard = idCard
self.phone = phone
self.card = card
view.py
import time
class View(object):
admin= "1"
passwd = "1"
# def __init__(self,admin):
# self.__admin = admin
def printAdminView(self):
print("************************************************")
print("* *")
print("* *")
print("* 欢迎登陆旺哥银行 *")
print("* *")
print("* *")
print("************************************************")
# inputAdmin = input("请输入管理员账号:")
# if self.admin !=inputAdmin:
# print("输入有误")
# return -1
# inputPasswd = input("请输入管理员密码:")
# if self.passwd !=inputPasswd:
# print("输入有误")
# return -1
def adminOption(self):
inputAdmin = input("请输入管理员账号:")
if self.admin != inputAdmin:
print("输入有误")
return -1
inputPasswd = input("请输入管理员密码:")
if self.passwd != inputPasswd:
print("输入有误")
return -1
#能执行到这里说明账号密码正确
print("操作成功!请稍后。。。")
time.sleep(2)
return 0
def sysFunctionView(self):
print("************************************************")
print("* 开户(1) 查询(2) *")
print("* 取款(3) 存款(4) *")
print("* 转账(5) 改密(6) *")
print("* 锁定(7) 解锁(8) *")
print("* 补卡(9) 销户(0) *")
print("* 退出T *")
print("************************************************")