Python登陆系统
前言
#源码见文末公众号哈#
登录系统
一个简单的登录系统包含了登录账户、注册账户、修改密码以及注销账户的操作。
1. 登录账户
登录系统主要需要判断账户是否存在,不存在就注册一个账户,如果第一次登录系统,我们需要先新建一个文件,保存管理员的账户以及密码,具体代码如下:
def user_login():
user_name=name.get()
user_key=key.get()
try:
with open('d:\\user.pickle','rb') as user_file:
user_info=pickle.load(user_file)
except FileNotFoundError:
with open('d:\\user.pickle','wb') as user_file:
user_info={'admin':'12345'}
pickle.dump(user_info,user_file)
user_file.close()
if user_name in user_info:
if user_key == user_info[user_name]:
tkinter.messagebox.showinfo(title='提示', message='登录成功!' )
else:
tkinter.messagebox.showerror('提示','密码错误!请重新输入')
else:
exist = tkinter.messagebox.askyesno('提示','该用户名未注册,是否立即注册?')
if exist:
user_sign()
2. 注册账户
注册账户时需要判断该账户是否存在,如果已经存在时提醒用户重新注册即可。
注册时还要输入两次密码,判断是否一致。
具体代码如下:
def user_sign():
sign_root=tk.Toplevel(root)
sign_root.title('注册账户')
screenheight=sign_root.winfo_screenheight()
screenwidth=sign_root.winfo_screenwidth()
h=220
w=300
x=(screenwidth-w)//2
y=(screenheight-h)//2
sign_root.geometry("%dx%d+%d+%d"%(w,h,x,y))
new_name=tk.StringVar()
tk.Label(sign_root,text='欢迎来到注册系统',font=('宋体',20),bg='white',fg='red',width=20,height=1).place(x=7,y=10)
tk.Label(sign_root,text='新的账户',font=('宋体',12)).place(x=20,y=60)
entry_name=tk.Entry(sign_root,textvariable=new_name,font=('宋体',12),show=None).place(x=100,y=60)
new_key=tk.StringVar()
tk.Label(sign_root,text='新的密码',font=('宋体',12)).place(x=20,y=100)
entry_key=tk.Entry(sign_root,textvariable=new_key,font=('宋体',12),show='*').place(x=100,y=100)
same_key=tk.StringVar()
tk.Label(sign_root,text='请确认密码',font=('宋体',12)).place(x=10,y=140)
entry_keys=tk.Entry(sign_root,textvariable=same_key,font=('宋体',12),show='*').place(x=100,y=140)
def sign_check():
name=new_name.get()
key1=new_key.get()
key2=same_key.get()
with open('d:\\user.pickle','rb') as user_file:
user_info=pickle.load(user_file)
user_file.close()
if name in user_info:
tkinter.messagebox.showerror('提示','该账户已存在!')
elif key1!=key2:
tkinter.messagebox.showerror('提示','两次输入密码不一致,请重新输入!')
else:
user_info[name]=key1
with open(r'd:\\user.pickle','wb') as user_file:
pickle.dump(user_info,user_file)
user_file.close()
tkinter.messagebox.showinfo('提示','注册成功!')
sign_root.destroy()
tk.Button(sign_root,text='注册',font=('宋体',12),bg='red',fg='white',width=5,height=1,command=sign_check).place(x=130,y=180)
3. 修改密码
修改密码时需要先确定需要修改密码的账户是否存在,不存在无法修改密码。
修改密码时如果账户存在,还要判断原密码是否一致以及新输入的两次密码是否一致。
具体源码如下:
def user_change():
change_root=tk.Toplevel(root)
old_name=tk.StringVar()
old_key=tk.StringVar()
new_key=tk.StringVar()
same_key=tk.StringVar()
change_root.title('修改密码')
screenheight=change_root.winfo_screenheight()
screenwidth=change_root.winfo_screenwidth()
h=220
w=300
x=(screenwidth-w)//2
y=(screenheight-h)//2
change_root.geometry("%dx%d+%d+%d"%(w,h,x,y))
tk.Label(change_root,text='欢迎来到修改密码系统',font=('宋体',20),bg='white',fg='green',width=20,height=1).place(x=5,y=10)
tk.Label(change_root,text='请输入你的账号',font=('宋体',12),width=15,height=1).place(x=5,y=60)
tk.Entry(change_root,textvariable=old_name,show=None).place(x=130,y=60)
tk.Label(change_root,text='请输入原始密码',font=('宋体',12),width=15,height=1).place(x=5,y=90)
tk.Entry(change_root,textvariable=old_key,show=None).place(x=130,y=90)
tk.Label(change_root,text='请输入修改密码',font=('宋体',12),width=15,height=1).place(x=5,y=120)
tk.Entry(change_root,textvariable=new_key,show='*').place(x=130,y=120)
tk.Label(change_root,text='请确认你的密码',font=('宋体',12),width=15,height=1).place(x=5,y=150)
tk.Entry(change_root,textvariable=same_key,show='*').place(x=130,y=150)
def change_check():
name=old_name.get()
key1=old_key.get()
key2=new_key.get()
key3=same_key.get()
with open("d:\\user.pickle",'rb') as user_file:
user_info=pickle.load(user_file)
user_file.close()
if name in user_info:
if key1==user_info[name]:
if key2==key3:
user_info[name]=key2
with open('d:\\user.pickle','wb') as user_file:
pickle.dump(user_info,user_file)
user_file.close()
tkinter.messagebox.showinfo('提示',"修改成功!")
change_root.destroy()
else:
tkinter.messagebox.showerror('提示','两次密码不一致,请重新输入!')
else:
tkinter.messagebox.showerror('提示','密码错误,请重新输入!')
else:
exist=tkinter.messagebox.askyesno('提示','该账户不存在,是否立即注册账户?')
if exist:
user_sign()
tk.Button(change_root,text='修改',font=('宋体',12),bg='green',fg='white',command=change_check).place(x=130,y=180)
4. 注销账户
注销账户时需要先判断账户是否存在,然后输入两次原密码,当输入的两次原密码相同时即可注销
成功。
具体代码如下:
def user_del():
old_name=tk.StringVar()
old_key=tk.StringVar()
same_key=tk.StringVar()
del_root=tk.Toplevel(root)
del_root.title('注销账户')
screenheight=del_root.winfo_screenheight()
screenwidth=del_root.winfo_screenwidth()
h=220
w=300
x=(screenwidth-w)//2
y=(screenheight-h)//2
del_root.geometry("%dx%d+%d+%d"%(w,h,x,y))
tk.Label(del_root,text='欢迎来到注销账户系统',font=('宋体',20),bg='white',fg='black',width=20,height=1).place(x=5,y=10)
tk.Label(del_root,text='请输入你的账号',font=('宋体',12),width=15,height=1).place(x=5,y=60)
tk.Entry(del_root,textvariable=old_name,show=None).place(x=130,y=60)
tk.Label(del_root,text='请输入原始密码',font=('宋体',12),width=15,height=1).place(x=5,y=100)
tk.Entry(del_root,textvariable=old_key,show=None).place(x=130,y=100)
tk.Label(del_root,text='请确认你的密码',font=('宋体',12),width=15,height=1).place(x=5,y=140)
tk.Entry(del_root,textvariable=same_key,show='*').place(x=130,y=140)
def del_check():
name=old_name.get()
key1=old_key.get()
key2=same_key.get()
with open('d:\\user.pickle','rb') as user_file:
user_info=pickle.load(user_file)
user_file.close()
if name in user_info:
if key1==key2:
if key1==user_info[name]:
user_info.pop(name)
with open('d:\\user.pickle','wb') as user_file:
pickle.dump(user_info,user_file)
user_file.close()
tkinter.messagebox.showinfo('提示','注销成功!')
else:
tkinter.messagebox.showerror('提示','密码错误!')
else:
tkinter.messagebox.showerror('提示','两次密码不一致!')
else:
exist=tkinter.messagebox.askyesno('提示','该账户不存在,是否立即注册?')
if exist:
user_sign()
tk.Button(del_root,text='注销',font=('宋体',12),bg='black',fg='white',command=del_check).place(x=130,y=180)
相关文章:

Python登陆系统
前言 #源码见文末公众号哈# 登录系统 一个简单的登录系统包含了登录账户、注册账户、修改密码以及注销账户的操作。 1. 登录账户 登录系统主要需要判断账户是否存在,不存在就注册一个账户,如果第一次登录系统,我们需要先新建一个文件&…...
【新2023】华为OD机试 - 重组字符串(Python)
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 重组字符串 题目 给定一个非空字符串 S,其被 N 个‘-’分隔成 N+1 的子串,给定正整数 K, 要求除第一个子串外,其余的子串每 K 个字符组成新的子串,并用‘-’分隔。 对于新组成的每一个子串,如果它…...
视频监控流程图
<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/> <link rel"stylesheet" type"text/css" href"visio.css"/> <title> 视频监控流程图 </title> <…...

普通单双面板的生产工艺流程之图形转移,华秋一文告诉你
衔接上文,继续为朋友们分享普通单双面板的生产工艺流程。 如图,第五道主流程为图形转移。 图形转移的目的为: 利用光化学原理,将图形线路的形状转移到印制板上,再利用化学原理,将图形线路在印制板上制作出…...
1.8 providers
生成providersnest g service <name>providers的注入方式构造函数注入Injectable() export class KeywordService {constructor(private readonly httpService: HttpService,private readonly pro: ProService,) {} }Inject()注入export class KeywordController {Inject…...

如何编写一个基本的 Verilog Module(模块)
1、概述这篇文章主要介绍了 Verilog 在 FPGA 设计中的概念和使用方法。首先讨论使用模块(module)关键字构造 Verilog 设计的方式,以及这与所描述的硬件的关系。这包括对参数、端口(port)和例化(instantiato…...

让乔布斯想要「发动核战争」的 Android,为何成了占有率最高的系统?
2008 年 9 月 23 日,Apple 的创始人和 CEO 史蒂夫乔布斯像往常一样走进了公司,此时距离初代 iPhone 的发布会才过了一年半,这款充满了争议的产品就像一块从山崖滚落的巨岩,一路电光石火的给手机市场的《小石潭记》来了场焚书坑儒。…...

FPGA开发软件(vivado + modelsim)环境搭建(附详细安装步骤+软件下载)
本文详细介绍了vivado软件和modelsim软件的安装,以及vivado中配置modelsim仿真设置,每一步都加文字说明和图片。一、软件安装包下载1、vivado vivado版本很多,目前最新的已更新到vivado2022.2,版本越高,安装包越大&…...
TypeScript 学习之类型
布尔类型 类型: boolean最简单的类型,值只有 true/false let isDone: boolean true;数字类型 类型:number数字都是浮点数,支持二进制、八进制、十进制、十六进制。 let decLiteral: number 16; // 十进制 let hexLiteral: number 0xf0…...

基于MATLAB计算MIMO信道容量(附完整代码与分析)
目录 一.介绍 二. 代码 三. 运行结果及分析 3.1 MIMO信道容量:固定发射天线数为4 3.2 MIMO信道容量:固定接收天线数为4 3.3 AWGN信道与瑞利信道容量 四. 总结 一.介绍 本文章将在MATLAB环境中分析MIMO信道容量,AWGN信道容量…...

CSDN城市开发者联盟、C友会期待你的加入
文章目录🌟 课前小差🌟 chatGPT🌟 CSDN中的持续学习🌟 23年原力计划🌟 C友会、CDC🌟 如何关联本地的开发者?🌟 写在最后🌟 课前小差 哈喽,大家好,…...
【新2023】华为OD机试 - 吃火锅(Python)
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 吃火锅 题目 入职后,导师会请你吃饭,你选择了火锅, 火锅里会在不同时间下很多菜, 不同食材要煮不同时间,才能变得刚好合适, 你希望吃到最多的刚好合适的菜, 但是你的手速不够快用m代替手速, 每次…...

类似LeetCode的登录页面(小程序版)
前言每一个项目都会有用户端的注册和登录页面,对于刚入门的小白来说,在UI设计方面不太擅长,就算大致的UI界面设计出来了,但是落实到代码上来实现的时候就很容易卡住。这篇博客主要介绍的就是仿作一个类似LeetCode登录的简约大方页…...

CUDA的统一内存
CUDA的统一内存 文章目录CUDA的统一内存N.1. Unified Memory IntroductionN.1.1. System RequirementsN.1.2. Simplifying GPU ProgrammingN.1.3. Data Migration and CoherencyN.1.4. GPU Memory OversubscriptionN.1.5. Multi-GPUN.1.6. System AllocatorN.1.7. Hardware Coh…...
MySQL-其他函数(补充)
格式化函数FORMAT(x, n) 例:将数字x进行格式化,以四舍五入的方式保留n位小数,结果以字符串的形式返回mysql> select format(12.3456,3),format(2.2,4),format(9.333,0); --------------------------------------------------- | format(12…...

MySQL Study Notes Design in 2023
文章目录1 概述1.1 MySQL相关概述1.2 数据模型1.3 SQL分类2 数据库设计-DDL2.1 约束2.2 字段3 数据库操作-DML3.1 增加(insert)1 概述 1.1 MySQL相关概述 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 数据库管理系统…...

C++ 修改防火墙firewall设置(Windows)
文章目录1、简介1.1 防火墙概述1.2 入站,还是出站?1.3 防火墙规则优先级2、系统界面方式3、命令行方式3.1 防火墙基本状态设置3.2 入站出站规则设置3.3 其他设置3.4 telnet检测端口4、C方式4.1 注册表4.2 COM(Windows XP)4.3 COM&…...

Spring 入门教程详解
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

day43【代码随想录】动态规划之一和零、完全背包理论基础
文章目录前言一、一和零(力扣474)二、完全背包前言 1、一和零 2、完全背包理论基础 一、一和零(力扣474) 求装满这个背包最多有多少个物品 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集…...

GEE学习笔记 七十八:干涸的洪泽湖
今天看了一篇报道直击60年一遇气象干旱:洪泽湖缩小近一半,鱼蟹受灾严重!_新华报业网(直击60年一遇气象干旱:洪泽湖缩小近一半,鱼蟹受灾严重!),既然玩GEE那就要玩出点花样…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
LOOI机器人的技术实现解析:从手势识别到边缘检测
LOOI机器人作为一款创新的AI硬件产品,通过将智能手机转变为具有情感交互能力的桌面机器人,展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家,我将全面解析LOOI的技术实现架构,特别是其手势识别、物体识别和环境…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...