下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PythOn管理系统系列PythOn实现用户管理系统一、题目描述USerPW2.pya下面的问题和例题7.1中的管理划字-密码的键值对数据程序有关。(a) 修改那个脚本,使他能记录用户上次的登陆日期和时间(用廿me模块),并与用户密码 一起保存起来。程序的界而要求用户输入用户划和密码的提示。无论用户名是否登陆成功, 都应有提示,在用户登陆成功后,应更新相应用户的上次登陆时间戳。如果本次登陆与上次 登陆在时间上相差不超过四个小时,则通知该用户:"You already in at:<lastjogin-timestamp> ,(b) 添加一个岳理菜单,其中有以下两项:(1)
2、删除一个用户(2)显示系统中所有用户的 名字和他们密码的淸单。(C) 口令目前没有加密。请添加一段对口令加密的代码(d) 为程序添加图形界面,例如,用TkinterO (图形化界面开发比较复杂,这里没有用到。)(e) 要求用户划布区分大小写。(f) 加强对用户名的限制,不允许符号和空白符。(g) 合并“新用户”和“老用户”两个选项。如果一个新用户试图用一个不存在的用户名登 陆,询问该用户是否是新用户,如果是肯泄的,就创建该用户。否则按老用户的方式登陆。二、程序中用到的模块,解释如下:(l)re:正则表达式引擎,PythOn中调用正则表达式的方法pickle:对象持久化,将数据写入到磁盘中(3)
3、 datetime:时间处理,用于记录用户登陆时间戳base64: base64加密模块(5) hashlib: hash 加密模块完整代码:#-*- COding:utf-8 -*-#2017.7.17import reimport PiCkleimport base64,hashlibfrom datetime import datetimedef InitialiZatiOn(file_name):程序初始化,创建user.ini和time.ini文件小 dict3st=,admin,db69fc039dcbd2962cb4d28f5891aael, #创建超级管理员 > 默认密码
4、为 adminf = file(file-name,a+') #以追加的方式打开文件,避免文件被修改if len(f.readlines() =0: #判断程序是否为空,只在第一次运行的时候初始化if file-name=,user.i nilPiCkIe.dump(cIiCteteStZ f, TrUe)else:PiCkle.dump( TrUe)f.close()def Gn COdePaSS(PaSSWd):采用base64和md5双层加密,破解可能几乎为0,"m = hashlib.md5()PWd = base64.b64encode(passwd)m.updat
5、e(pwd)return m.he×digest()def time_Order(User):”'记录用户登陆时间,结果保存在time.ini文件中”ft = file(,time.ini,rl)dbt = PiCkle.load(ft)if USer not in dbt:dbt.setdefault(userzdatetime.today)else:time-value = dbtusert = datetime.today()-time_VaIUetry:if t.hour<=4:Print 'You already IOgged in at:<la
6、stogin-timestamp>, except:Print ,You already IOgged in atz<lastjogin-timestamp>, dbtuser = datetime.today()ft = file(,time.ini,wl)PiCkIe.dump(dbt, ft, TrUe)ft.close()def n ewuser(db):用户创建程序,由OldUSer调用WhiIe True:name = rawjnput(,Please inPUt the username:1)if re.match(r,w, name): #采用正则表达式检测用
7、户名是否合法PaSSelse:Print ,USername should be made of AZ、az、0zv9>COntinUefor value name in db.keys():if nameoWero = ValUenameower):breakelse:breakPaSSWd = rawjnput(,Please inPUt the PaSSWOreI:')dbname = Gn COdePaSS(PaSSWd)def olduserdb):用户登陆程序n ame = rawJnput(,Logi n:)if name in db:PWd = rawjnput(
8、,passwd:')PaSSWd = db.get( name)if PaSSWCl = GnCOdePaSS(PWd):Print 'Welcome back!nametime-order( name)else:Print login incorrent!'else:YN = rawnput('Do you Want to instead a new user? YeS Or No:1)ifYN.Iower()=,yes,:n ewuser(db)Print ln,zdef deluser(db):删除一个用户,但必须以管理员的身份”Print 'Pl
9、ease IOgin as admin, #管理员的身份才能删除用户n ame = rawJnput(,Logi n)PWd = raw-i nput('passwd:')PaSSWd = db.get name)if PaSSWd = enCOdePaSS(PWd) and name=,admin,:USer = raw_input(Pease input a USer name:1)if USer != ,admin,:if db.pop(user):Print 'Delete Current!1else:Print ,Con not delete admin!
10、39;else:Print ,WrOng PaSSWPrd,def CheCkUSer(db):查看所有用户,但必须以管理员的身份“Print 'Please IOgin as admin, #管理员的身份才能査看所有用户n ame = raw-i nput('Logi n:')PWd = raw_i nput('passwd:')PaSSWd = db.get( name)if PaSSWd = GnCOdePaSS(PWCl) and name = Iadmir:for key in db:Print ,username: %10s => Pa
11、SSWOrd: %10s, % (key,dbkey) else:Print ,You Can not CheCk all users!'def resetuser(db):修改密码,但必须正确的输入老密码name = rawjnput(,Please inPUt the USername:,)PaSSWd = rawjnput(,Please inPUt Old PaSSWOrd:,)if dbname = enCOdePaSS(PaSSWd):PaSSWd = rawnput,Please inPUt new PaSSWOrd:,)CIbn ame = encodepass(pas
12、swd)else:Print 'Wrong password!1def ShOWme nu():程序运行的主函数fu = file(,user.ini,r')db = PiCkle.load(fu)PrOmPt = ,(L)Ogin NOW(Q)Uit(D)elet USer(C)heck AIl USer(R)eset PaSSWOrdEntGr choice:'"done = FaISeWhiIe not done:ChOSen = FaISeWhile not ChOSen:try:ChOiCe = rawn PUt(PrOmPt).split()0.l
13、ower()except (EOFErroGKeyboardInterrupt):ChOiCe = ,q,Print ,nYou PiCked:%s* % ChOiCeif ChOiCe not in ,lqdcr,:Print 'inValid OPtiOn,try again1else:ChOSe n = TrUeif ChOiCe = ,q,rdOnG 二 TrUeif choice = T:OldUSer(db)if ChOiCe = ,d,deluser(db)if ChOiCe = ,c,:CheCkUSer(db)if choice = ,r,resetuser(db)fu = file(,user.ini,z,w,)PiCkIe.dump(db
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年窗口工作人员工作证件识别题库
- 2026年技能提升与自我挑战题集
- 2026年粮食和物资储备局公务员面试应急物资保障
- 2026年畜牧系统动物防疫社会化服务组织培育题库
- 长春科技学院《口腔生物学》2025-2026学年期末试卷
- 中国矿业大学《中国文化通论》2025-2026学年期末试卷
- 2024年古代文化历史学习方法:热点把握和掌握中国古代的治乱兴衰问题
- 通信及基础工程28
- 2024年材料采购合同
- 元宇宙赋能中华传统文化数字传播的新质生产力
- 交换机基本原理培训课件
- 叉车工作奖罚管理制度
- 6管道保温质量通病防治措施
- 企业ESG治理体系构建
- 下肢深静脉血栓形成
- 燃料电池电动汽车用高压电子风扇技术条件
- 火工校正原则工艺标准
- 机动车检测站内审报告(依据补充技术要求)
- 集控值班员(技师)第二版理论题库
- GB/T 7233.2-2023铸钢件超声检测第2部分:高承压铸钢件
- 威纶触摸屏和CP1E的串口的无线通讯说明
评论
0/150
提交评论