• 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

      

  • 相关阅读:
    redis 笔记
    经验
    增加模块-概念图
    node API buffer
    VS2010中使用CL快速 生成DLL的方法
    WIN7下VS2010中使用cl编译的步骤
    Win7下VS2010编译的程序在XP报错:找不到msvcp100d.dll或者msvcp100.dll
    C#速学
    Windows下架设SVN服务
    Redis 压力测试
  • 原文地址:https://www.cnblogs.com/minkillmax/p/8305062.html
Copyright © 2020-2023  润新知