程序1:登录系统类

import shelve
import time

class UserData(object):
    """13-4. 用户注册."""
    def __init__(self, fn):
        self.op = shelve.open(fn)

    def __del__(self):
        self.op.close()

    def register(self):
        nm = self.cmdInput('UserName:')
        if self.isExit(nm):
            print('Username"%s"have been exited' % nm)
            return False
        pwd = self.cmdInput('Passward:')
        c_pwd = self.cmdInput('Confirm:')
        if pwd != c_pwd:
            print('Passward not match!')
            return False

        self.op[nm] = [pwd]

        print('Register new user successfully!')

    def login(self):
        nm = self.cmdInput('UserName:')

        if not self.isExit(nm):
            print('Username"%s"not exited!' % nm)
            return False

        pwd = self.cmdInput('Passward:')
        if pwd == self.op[nm][0]:
            if len(self.op[nm]) < 2:
                List = self.op[nm]
                List.append(self.timer())
                self.op[nm] = List
                print('Welcome Login!')
                return

            if self.checkLoginTime(nm):
                print('Welcome Back!you already login time:%s.' \
                      % (time.ctime(self.op[nm][1]) ))
            else:
                self.op[nm][1] = self.timer()
                print(time.ctime(self.op[nm][1]))
                print('Welcome Login!')
        else:
            print('Passward incorrect!')

    def checkLoginTime(self, nm):
        if (self.timer() - self.op[nm][1]) / 3600 <= 4:
            return True
        return False

    def timer(self):
        return time.time()

    def isExit(self, nm):
        if self.op:
            for name in self.op.keys():
                if nm == name:
                    return True
                return False

    def updatePwd(self):
        nm = self.cmdInput('UserName:')

        if not self.isExit(nm):
            return False

        pwd = self.cmdInput('OriginPassward:')

        if pwd == self.op[nm][0]:

            npwd = self.cmdInput('NewPassward:')
            List = self.op[nm]

            List[0] = npwd

            self.op[nm] = List

        else:

            print('Origin Passward incorrect!')

    def cmdInput(self, string, flag=True):
        try:
            if True == flag:
                reciever = input(string).strip()
            else:
                reciever = input(string).strip()[0].lower()

        except(KeyboardInterrupt, SystemExit):
            reciever = 'Error'
            print('Abort bymanually!')

        return reciever

    def admin(self):
        enter = self.cmdInput('Delete user info? YES or NO?', False)

        if 'n' == enter:
            print(self.op.keys())
        elif 'y' == enter:
            nm = self.cmdInput('Enter user name:')
            try:
                self.op.pop(nm)
            except Exception:
                print(nm, 'not found!')
        return

def menu():
    prompt = '''
          ---------------------
          [R]egister
          [L]ogin
          [U]pdatePwd
          [A]dminstrator
          ---------------------
          '''
    ud = UserData('DBM')
    func = {
            'r': ud.register,
            'l': ud.login,
            'u': ud.updatePwd,
            'a': ud.admin
            }

    while True:
        enter = ud.cmdInput(prompt, False)
        if 'Error' == enter:
            break
        if enter in 'urla':
            func[enter]()
        else:
            print('choose from ''URLA''')

menu()

 

posted on 2017-01-23 13:41  wzxds02  阅读(208)  评论(0编辑  收藏  举报

导航