python核心编程第九章(9-12)

来源:互联网 发布:恐龙战队 知乎 编辑:程序博客网 时间:2024/06/05 03:45
import shelve
import time
def login():
    """9–12. 用户名和密码.回顾练习 7-5 , 修改代码使之
    可以支持"上次登录时间".请参阅 time 模块中的文档了解
    如何记录用户上次登录的时间. 另外提供一个"系统管理员",
    它可以导出所有用户的用户名, 密码(如果想要的话,你可
    以把密码加密),以及"上次登录时间".""" 
    prompt = '''
    ---------------------
    [N]ew user login
    [O]ld user login
    [A]dminstrator login
    [E]xit login UI
    ---------------------
    '''
    fun = {'n' : newUser,
           'o' : oldUser,
           'a' : admin}
    while True:       
        slt = raw_input(prompt).strip()[0].lower()
        if slt == 'e': return False
        if slt not in 'noa': print 'Invalid selection,try agin!'
        else: fun[slt]()


def newUser():
    #shelve
    print 'Welcome to the first login!'
    name = raw_input('Please enter username: ').strip()
    pwd = raw_input('Plase enter passward: ').strip()
    if name in getInfo():
        print 'User name have existed!'
        return False
    storeInfo(name,pwd)        
    
def oldUser():
    #shelve
    print 'Welcome back!'
    name = raw_input('Please enter username: ').strip()
    pwd = raw_input('Plase enter passward: ').strip()
    sp = shelve.open('dbm')
    if name in sp.keys():
        if pwd == sp[name][0]:
            if timer(sp[name][1]) < 4:
                 print 'You already logged in at: %s.'\
                 %(time.ctime(sp[name][1]))
            else:
                print 'Login successfully!'
                sp[name][1] = time.time()
        else: print 'Pwd incorrect!'

    else: print 'User name not existed!'

    sp.close()

      
def admin():
    # shelve
    prompt = '''
    --------------------
    [S]how all user info
    [D]elete user info
    --------------------
    '''
    enter = raw_input(prompt).strip()[0].lower()
    sp = shelve.open('dbm')
    if 0 == len(sp.keys()):
        print 'No user info!'
        return False
    if 's' == enter:
        print 'All user info:'
        for key in sp.keys():
            print 'Name: %s - Pwd: %s' %(key,sp[key][0])
    elif 'd' == enter:
        user = raw_input('Please enter the user you want to delet:').strip()
        del sp[user]
        print 'Delete successfully' 

    sp.close()


def storeInfo(nm,pw):
    #shelve
    ctm = time.time()
    with shelve.open('dbm') as sp:
        sp[nm] = [pw,ctm]
    print 'Register successfully!'
    
def getInfo():
    #shelve
    with  shelve.open('dbm') sp:
         return sp.keys()
def timer(tm):
    return (time.time()-tm)/360
0 0
原创粉丝点击