其中复习了前面学习的诸多知识点,里面有详细的知识点讲解,复制下来直接用就可以实现。
银行系统实践.py
# Tkinter与银行系统实战
"""
人
类名:Person
属性:
行为:
卡
类名:Card
属性:卡号 密码 余额
行为:
提款机
类名:ATM
属性:用户字典
行为:开户 查询 取款 存款 转账 改密 锁定 解锁 补卡 销户
管理员
类名:Admin
属性:
行为:管理员界面 管理员验证 系统功能界面 退出
"""
import time
from admin import Admin
from atm import ATM
import pickle
import os
def main():
# 管理员对象
admin = Admin()
# 管理员开机
admin.printAdminView()
if admin.adminOption():
return -1
# 提款机对象
#
# 读取文件中的内容
filepath = os.path.join(os.getcwd(), "allusers.txt")
# rb 以二进制格式打开一个文件用于只读,文件的描述符放在文件开头
f = open(filepath, "rb")
# 用load函数,文件中要先有相同类型的数据
# load 加载
allUsers = pickle.load(f)
print("*************")
print(allUsers)
# 第一次运行需要注释到-1那里,然后加上下面一行
# 目的是写入一个类似的字典
# allUsers = {}
atm = ATM(allUsers)
while True:
admin.printSysFunctionView()
# 等待用户的操作
option = input("请输入您的操作:")
if option == "1":
# 开户
atm.createUser()
elif option == "2":
# 查询
atm.searchUserInfo()
elif option == "3":
# print("取款")
atm.getMoney()
elif option == "4":
# print("存款")
atm.saveMoney()
elif option == "5":
# print("转账")
atm.transferMoney()
elif option == "6":
# print("改密")
atm.changePasswd()
elif option == "7":
# 锁定
atm.lockUser()
elif option == "8":
# 解锁
atm.unlockUser()
elif option == "9":
# print("补卡")
atm.newCard()
elif option == "0":
# print("销户")
atm.killUser()
elif option == "t":
# if条件语句后面需要跟随bool类型的数据,即True或者False。
# 在命令if not 1中,1便会转换为bool类型的True。not是逻辑运算符非,not 1则恒为False。
# 因此if语句if not 1之下的语句,永远不会执行
if not admin.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 createUser(self):
# 可以做出控制,如果输入的不合理
# 向用户字典中添加一对键值对(卡号-用户)
name = input("请输入您的姓名:")
idCard = input("请输入您的身份证号码:")
phone = input("请输入您的电话号码:")
prestoreMoney = int(input("请输入预存款金额:"))
if prestoreMoney < 0:
print("预存款输入有误!!开户失败······")
return -1
onePasswd = input("请设置密码:"