record-09 ATM 对象思想 综合练习

#__author: hasee
#date:  2018/1/17
# 明确在程序执行期间,有哪些对象参与-取款机
# 分析对象的行为、数据属性
# 数据属性-所有用户的信息
# 行为属性-登陆校验、显示余额、取款服务、转账服务

# 定义类
class ATM:
    user_info = 0

    def __init__(self):
        f = open('user_info.txt')
        ATM.user_info = f.readlines()
        f.close()

    def login_check(self, n, p):
        result = 0
        for w, u in enumerate(ATM.user_info):
            # print(u)
            u1 = u.split()
            # print(u1)
            if u1[0] == n and u1[1] == p:
                result = 1
                break
            elif u1[0] == n and u1[1] != p:
                result = 2
                break
            else:
                result = 3
        return result, u1, w

    def show_money(self, u):
        print('当前账户余额:%s' % u[2])

    def get_money(self, u, w):
        print('请输入取款金额:')
        money = int(input())
        if money % 50 != 0:
            print('金额不合法')
        elif money > 1000:
            print('不能超过单笔限额')
        elif money > int(u[2]):
            print('余额不足')
        else:
            u[2] = str(int(u[2]) - money)
            ATM.user_info[w] = ' '.join(u) + '
'

            f = open('user_info.txt', 'w')
            f.writelines(ATM.user_info)
            f.close()

    def move_money(self, u, w):
        print("请输入收款账号:")
        name1 = input()
        result2 = 0
        for w2, u2 in enumerate(ATM.user_info):
            u21 = u2.split()
            if u21[0] == name1:
                result2 = 1
                break
        if result2 == 0:
            print('收款账号不存在')
        else:
            print('收款账号有效,开始进行转账交易')
            print('请输入转账金额')
            money2 = int(input())
            if money2 > 2000:
                print('不能超过单笔限额')
            elif money2 > int(u21[2]):
                print('余额不足')
            else:
                print('金额有效,开始转账')
                u[2] = str(int(u[2]) - money2)     #对列表的索引重新赋值
                ATM.user_info[w] = ' '.join(u) + '
'  
          #将新的列表u通过join转换为字符串,通过前面的ATM.user_info[w]确定位置 u21[2] = str(int(u21[2]) + money2) ATM.user_info[w2] = ' '.join(u21) + ' ' f = open('user_info.txt', 'w') f.writelines(ATM.user_info) #writeline后面接的是列表 f.close() atm = ATM() # print(ATM.user_info) result1 = 0 while result1 != 1: print('请输入账号:') name = input() print('请输入密码:') password = input() result1, user1, w1 = atm.login_check(name, password) print(user1) if result1 == 1: print('登陆成功') elif result1 == 2: print('密码不正确') else: print('账号不存在') choice = None while choice != '0': print('请选择服务 1-查询余额 2-取款 3-转账 0-退出') choice = input() if choice == '1': atm.show_money(user1) if choice == '2': atm.get_money(user1, w1) atm.show_money(user1) if choice == '3': atm.move_money(user1, w1) atm.show_money(user1) if choice =='0': break

  

原文地址:https://www.cnblogs.com/minkillmax/p/8305062.html