微型用户信息管理系统MUIMS(Micro User Information Management System)V1.0
来源:互联网 发布:matlab遍历一个矩阵 编辑:程序博客网 时间:2024/06/13 22:14
【说明】自学Python,初学者,图形化界面暂时没学习到,这部分没做,以下是简单的用户信息管理系统含有的功能:
(1)新用户注册(r):会判断用户名是否合法,这里只考虑了用户名只能包含字母和下划线且长度小于等于9,其他的暂时没考虑;
(2)老用户登陆(l):如果距离上一次登陆间隔小于4小时,会给出提示,如果输入一个不存在的用户名,会询问是否新用户,选y则进入注册账号,选n则继续登陆已有账号;
(3)查看用户名和密码(管理员专属)(v):选y查看所有用户名和密码,选n查看指定用户名和密码,选q退出当前选项;
(4)删除老用户(管理员专属)(d):选y确定删除,选n不删除;
(5)老用户修改密码(c)
(6)退出本程序(q)
(7)其他:密码双重加密,破解可能性几乎为零,用户名忽略大小写……
代码如下,写的比较粗糙,而且没优化,打算后期有空再来修改代码。
#-*-coding:utf-8-*-#!/usr/bin/env pythonimport datetimeimport stringimport base64import hashlibdb_namepwd = {}db_logtime = {}#判断新用户注册的用户名是否合法:(1)只能由字母和数字组成,字母忽略大小写;(2)长度小于等于9def checkUserName(usr_name): check_str = string.letters[:26] + string.digits name_len = len(usr_name) if name_len > 9: check_re = False else: for i in range(0,name_len): if usr_name[i] in check_str: check_re = True else: check_re = False break return check_re#密码双重加密,几乎无法破解def encodePsw(psw): m = hashlib.md5() psw_encode = base64.b64encode(psw) m.update(psw_encode) return m.hexdigest()#薪用户注册def myRegister(): while True: name = raw_input('Please enter a username: ').strip().lower() if checkUserName(name) == False: print 'Invalid username or username is too long! Please try again!' continue if db_namepwd.has_key(name): print 'This name is already used! Please try another: ' continue else: break pwd = raw_input('Pleas enter your passwd: ') print 'Register finished!' db_namepwd[name] = encodePsw(pwd)#老用户登陆def myLogin(): log_choice = '' while True: log_name = raw_input('username: ').lower() if log_name not in db_namepwd.keys(): while True: print 'This username doesen\'t exists! Are you a new user? Please choose "y" or "n"!' try: log_choice = raw_input('Are you a new user? ').strip().lower() except (IOError, KeyboardInterrupt): continue if log_choice not in 'yn': print 'Error choose! Are you a new user?' else: break if log_choice == 'y': print 'Please register a new account!' myRegister() print 'Please login by your new account!' continue else: print 'Please login your account!' continue else: log_pwd = encodePsw(raw_input('passwd: ')) passwd = db_namepwd.get(log_name) if passwd == log_pwd: print 'welcome back',log_name break else: print 'login incorrect! Please try again!' return log_name#新增:判断用户上次登陆和本次登陆时间差是否在4h之内def judge4hTime(usr_name): if db_logtime.has_key(usr_name): last_logtime = db_logtime[usr_name] this_logtime = datetime.datetime.now() temp_time = last_logtime + datetime.timedelta(hours=4) if this_logtime <= temp_time: print 'In the past 4 hours, you\'ve already login!' print 'Your last logtime is: ', last_logtime db_logtime[usr_name] = this_logtime else: db_logtime[usr_name] = datetime.datetime.now()#老用户修改密码功能def changePsw(): origin_name = raw_input('Please enter your username:').strip().lower() if origin_name not in db_namepwd.keys(): print 'This username does\'t exists!' else: origin_psw = encodePsw(raw_input('Please enter your original password:')) if origin_psw == db_namepwd[origin_name]: new_psw1 = encodePsw(raw_input('Please enter your new password:')) if new_psw1 == origin_psw: print '[Error!] New password is the same as old password!' else: new_psw2 = encodePsw(raw_input('Please enter your new password again:')) if new_psw1 == new_psw2: print 'Change password finished!' db_namepwd[origin_name] = new_psw1 else: print 'Change password failed! Two new passwords are different!' else: print 'Change password failed! You may forget your password! Please try again!'#删除用户def delUser(): print 'Are you sure to delete an user? Please choose "y" or "n"' while True: try: del_choice = raw_input('Please enter your decision! ').strip().lower() except (IOError, KeyboardInterrupt): del_choice = 'n' if del_choice not in 'yn': print 'Error choose! You must choose one from "y" and "n"! Please Try again!' else: break if del_choice == 'y': del_name = raw_input('Which user do you want to delete?').strip().lower() if del_name not in db_namepwd.keys(): print 'This user does not exists!' else: try: db_namepwd.pop(del_name) db_logtime.pop(del_name) print 'Delete user', del_name, 'finished' except (KeyError): print 'Delete user', del_name, 'finished'#查看用户名和密码def viewUser(): print 'Do you want to view all users? Please choose one from "y", "n", "q"!' view_choice = '' while True: while True: try: view_choice = raw_input("Please choose: ").strip().lower() except (IOError, KeyboardInterrupt): view_choice = 'q' if view_choice not in 'ynq': print 'Error choose! You must choose one from "y" and "n"! Please try again!' else: break if view_choice == 'q': break if view_choice == 'y': user_num = len(db_namepwd) print 'This system has',user_num,'users! Every user\'s name and password is below: ' for i in range(0,user_num): name = db_namepwd.keys()[i] psw = db_namepwd[name] print 'Username:',name,', Password:',psw if view_choice == 'n': view_name = raw_input('Which user do you want to view?').strip().lower() if view_name not in db_namepwd.keys(): print 'This user does not exists!' else: print 'Username:',view_name,', Password:',db_namepwd[view_name]#"主"函数def myShow(): #系统一启动,自动生成管理员账号密码 super_name = 'admin' super_psw = raw_input('************Please enter the password for administrator!************\n') db_namepwd[super_name] = encodePsw(super_psw) choice = 'q' while True: while True: try: choice = raw_input('Please choose:').strip().lower() except (IOError, KeyboardInterrupt): choice = 'q' if choice not in 'rldvcq': print 'Error choose! You must choose one from "r","l","d","v","c","q"! Try again!' else: break if choice == 'q': print 'We always waiting for you!' break if choice == 'r': print 'Please register!' myRegister() if choice == 'l': print 'Please login!' name = myLogin() judge4hTime(name) if choice == 'v': #只有管理员才能查看系统中所有用户 print '[Notice!]Only administrator can use this function!' try_name = raw_input('Administrator username: ').strip().lower() try_psw = encodePsw(raw_input('Administrator password: ')) if try_name == super_name and try_psw == db_namepwd[try_name]: viewUser() else: print '[Warning!]You have no permission!' if choice == 'd': #只有管理员才能删除用户 print '[Notice!]Only administrator can use this function!' try_name = raw_input('Administrator username: ').strip().lower() try_psw = encodePsw(raw_input('Administrator password: ')) if try_name == super_name and try_psw == db_namepwd[try_name]: delUser() else: print '[Warning!]You have no permission!' if choice == 'c': print 'Please change your password!' changePsw() print '==========================Next Choose=========================='if __name__ == '__main__': print '***************************************************************' print ' Welcome to Micro User Information Management System' print ' [New User Register] Please press "r" on your keyboard!' print ' [Old User Login] Please press "l" on your keyboard!' print ' [View All Users] Please press "v" on your keyboard!' print ' [Delete User] Please press "d" on your keyboard!' print ' [Change Password] Please press "c" on your keyboard!' print ' [Quit System] Please press "q" on your keyboard!' print '***************************************************************' myShow()
1 0
- 微型用户信息管理系统MUIMS(Micro User Information Management System)V1.0
- 微型用户信息管理系统MUIMS(Micro User Information Management System)V2.0
- MIS(管理信息系统--Management Information System)系统
- 绩效管理系统(Performance Management System)
- MIS(管理信息系统--Management Information System)
- MIS(管理信息系统--Management Information System)
- MIS-管理信息系统(Management Information System)
- 信息技术下的时间管理(Information Technology Time Management)
- MIS(管理信息系统——Management Information System)
- Security Information and Event Management System
- 数据库和数据库管理系统(Database and DBMS:Database Management System)
- wince系统内存管理 System Memory Management in Windows CE
- cms(Content Management System,内容管理系统)
- 小学生管理系统V1.0
- Management Information
- The business enterprise information system and the management information system development trend
- LTE:系统信息(System Information)的调度
- The construction of enterprise computer network management information system
- shell脚本中整数型变量自增(加1)的实现方式
- async 函数的含义和用法
- Unity 屏幕坐标
- 酷炫的Activity切换动画,打造更好的用户体验
- 【HPU 1195 Mod 】+ 思维 +DFS + 区间剖分
- 微型用户信息管理系统MUIMS(Micro User Information Management System)V1.0
- 你看,那个人好像一只狗耶。(转)
- 一段简单的代码,解决了数据乱码的问题。?characterEncoding=utf8
- Tomcat 6 --- 你很少使用的安全管理SecurityManager
- 文件系统
- matlab提升(1):用matlab求图像的均值和方差
- POJ 2259 Team Queue
- 【BZOJ】1012 [JSOI2008] 最大数maxnumber
- Hebernate-hql 插入一条 和 批量插入多条记录