python-ATM管理系统(面向过程)

基于字典嵌套

import time
import json

info = """
            ATM柜员管理系统
        1,登陆系统
        2,注册帐号
        3,冻结帐号
        4,显示已经注册的用户
        5,退出
"""
logininfo = """   #登录成功后显示的界面
        1,取款
        2,存款
        3,转账
        4,查询余额
        5,修改密码
        6,查看账户信息
        7,退出该界面
"""




def enroll(x):    #注册用户
    info = ['passwd', 'money']
    cardin = raw_input("请输入注册的id:")
    d = readfile()
    if cardin not in d:
        x['cardid'] = cardin
        x['status'] = 0
        for j in info:
            input = raw_input("请输入用户的%s:" % j)
            x[j] = input
        else:
            print "注册成功"
            return cardin,x
    else:
        print '用户已经存在'
        print d.get(cardin)
        main1()


def login(cardin,passwd):    #用户登录函数
    print logininfo
    select1 = raw_input("输入你需要的选项:")
    d=readfile()
    if select1 == '1':
        money3 = input("请输入取款金额:")
        x=d.get(cardin).get('money')
        if int(x) < money3:
            print "余额不足"
            login(cardin,passwd)
        else:
            x1 = d.get(cardin).get('money')
            y1=int(x1)-money3
            d[cardin].update({'money': str(y1)})
            addfile(d)
            print  time.ctime(),"取款成功"
            login(cardin,passwd)
    elif select1 == '2':
        money2 = input("请输入存款金额:")
        x2=d.get(cardin).get('money')
        y2=int(x2)+money2
        print time.ctime(),"存款成功"

        d[cardin].update({'money': str(y2)})
        addfile(d)
        login(cardin,passwd)
    elif select1 == '3':
        cardid2 = raw_input("请输入要转账的账户id:")
        if cardid2 in d.keys():
            money1 = input("请输入转账的金额:")
            if int(d.get(cardin).get('money')) < money1:
                print "余额不足"
                login(cardin)
            else:
                x3=int(d.get(cardin).get('money'))
                y3= x3 - money1
                d[cardin].update({'money':str(y3)})
                x4=int(d.get(cardid2).get('money'))
                y4=x4+money1
                d[cardid2].update({'money': str(y4)})
                print time.ctime(),"转账成功"
                addfile(d)
                login(cardin,passwd)
        else:
            print "该用户不存在"
            login(cardin,passwd)
    elif select1 == '4':
        print "用户余额:{0}元".format(d.get(cardin).get('money'))
        login(cardin,passwd)
    elif select1 == '5':
        newpass = raw_input("请输入新密码:")
        if newpass == d.get(cardin).get('passwd'):
            print "与旧密码重复"
            login(cardin,passwd)
        else:
            d[cardin].update({'passwd': newpass})
            addfile(d)
            print "成功修改密码"
            login(cardin,passwd)
    elif select1 == '6':
        print d.get(cardin)
        login(cardin,passwd)
    else:
        print "请输入正确的选项"
        main1()


def mask():    #用户冻结函数
    d=readfile()
    cardin = raw_input("输入将要冻结的卡号:")
    if cardin  in d.keys():
        if d.get(cardin).get('status') == 1:
            froze=raw_input("该用户已经被冻结,是否要解除冻结?是输入1,否输入0:")
            if froze == 0:
                main1()
            elif froze == '1':
                d[cardin].update({'status':0})
                addfile(d)
                print "成功解除冻结"
                main1()
            else:
                print "请输入正确的选项"
                mask()
        else:
            passwd = raw_input("请输入该用户的密码")
            if passwd == d.get(cardin).get('passwd'):
                d[cardin].update({'status': 1})
                addfile(d)
                print "用户冻结成功"
                main1()
            else:
                print "密码错误"
                mask()
    else:
        print "此用户不存在"


def addfile(x):     #将信息写入文件
    filename = 'atm.txt'
    with open(filename,'w') as f_atm:
        json.dump(x,f_atm)

def readfile():         #从文件中读取信息
    filename = 'atm.txt'
    with open(filename) as f_atm:
        x = json.load(f_atm)
    return x

def main1():      #定义的主函数
    print info
    while True:
        option = input("请输入需要的功能:")
        if option == 1:
            cardin = raw_input("请输入你要登陆的卡号:")
            d = readfile()
            if cardin in d.keys():
                if d.get(cardin).get('status') == 1:
                    print "该用户已经被冻结"
                    main1()
                else:
                    passwd = raw_input("请输入该用户的密码:")
                    if passwd == d.get(cardin).get('passwd'):
                        print time.ctime(),"登陆成功"
                        login(cardin,passwd)
                    else:
                        print "密码错误"
                        main1()
            else:
                print "该用户不存在请先注册"
                print info
        elif option == 2:
            n = {}
            c,d1=enroll(n)
            d = readfile()
            d[c] = d1
            addfile(d)
            main1()
        elif option == 3:
            mask()
            main1()
        elif option == 4:
            if d.keys():
                print d.keys()
                main1()
            else:
                print "目前还没有用户注册"
                main1()
        elif option == 5:
            exit()
        else:
            print "请输入正确的选项"

main1()

猜你喜欢

转载自blog.csdn.net/mashaokang1314/article/details/80144823