大家好,本篇博客目的是建立存储和查询用户名和密码的python系统,基础好的可跳过中间小干货,源码在末尾,喜欢的留下小赞哦!

系统主要功能

主要功能如下:

创建一个新用户及其密码

修改值定用户的密码

显示所有用户

创建一个新的CSV文件存储数据

退出系统

若用户选择1,则应输入需创建的新用户ID。检查用户ID是否已经存在系统中。如果用户已存在,则要求重新选择另一个用户名(User ID)。输入适当的用户名(User ID)后,应要求输入密码。密码满足以下任何一个条件得1分:

 至少应包含8个字符;

 应包括大写字母;

 应包含小写字母;

 应该包括数字;和

 应至少包含一个特殊字符,例如!, $, %, ^, &, *, (, ), ?, @, #

如果用户输入的密码得分score<=2,则应拒绝并提示它是弱密码;

如果得分为2<=score<=4,请告诉他们“可以改进此密码” ,并询问用户是否想加强密码。

如果score=5,强密码,设置成功。将此用户ID和密码添加到.csv文件中。

如果他们从菜单中选择2,则输入用户ID以及密码,检查是否为系统用户并原密码正确,则允许用户更改密码并保存更改到.csv文件。

如果用户从菜单中选择3,则显示所有用户ID,但不显示密码。

如果用户从菜单中选择4,则新建CSV文件存储数据。

如果用户从菜单中选择5,则停止并退出该程序。

如果用户没有在第一个菜单上选择相关选项,应该显示适当的提示消息。

需提前掌握的知识

如果想要亲手一句代码一句代码完成本项目,需要掌握基本的python语法,如何打开文件、追加、关闭

pandas包

csv包

列表的细节应用

正则表达式

项目相关资料

这里列举一些本人查阅的相关资源,省去大家搜寻资源的时间。

打印功能提示函数

# 打印功能提示

def printMenu():

print("************************")

print("1.创建一个用户ID")

print("2.修改密码")

print("3.显示所有用户")

print("4.创建一个新的CSV文件记录数据")

print("5.退出系统")

print("************************")

创建新用户及密码函数

# 创建用户ID及密码

def CreateUserID():

global NewID

global PassWord

path = "aa.csv" #通过CreateCsvFile()函数提前创建

NewID = input('请输入你想创建的用户名:')

data=pd.read_csv(path,sep=',',encoding='utf-8') #encoding='unicode_escape' 'utf-8' 'GBK'注意区分这几种编码格式

a=data['UserID'].tolist() #将此列转换成列表

while True:

if NewID in a:

print("用户名已存在,请重新选择\n")

NewID = input('请重新输入你想创建的用户名:')

else:

PassWord = ScorePassword()

#a+:追加模式,将新用户名和密码追加到文件末尾

with open(path,'a+',newline="") as f: #使用csv包操作文件,若出现空行,则应加上newline=""参数

csv_write = csv.writer(f)

data_row = [NewID,PassWord]

csv_write.writerow(data_row)

break

利用open操作文件的参数详解,注意实践区别各参数的不同

密码强弱评分函数

#密码评分

def ScorePassword():

yourpassword = input("请你为该用户设置密码:")

strength_level = 0

if len(yourpassword) >= 8: #字符串长度至少为8

strength_level += 1

if len(yourpassword) >= 8:

strength_level += 1

upper = re.compile('[A-Z]+')

match = upper.findall(yourpassword) #findall函数查询参数是否存在大写

if match:

strength_level += 1

lower = re.compile('[a-z]+')

match = lower.findall(yourpassword) #findall函数查询参数是否存在小写

if match:

strength_level += 1

num = re.compile('[0-9]+') #findall函数查询参数是否存在数字

match = num.findall(yourpassword)

if match:

strength_level += 1

else:

print('密码设置失败,至少含有8位')

ScorePassword()

symbol = re.compile('([^a-zA-Z0-9])+') #findall函数查询参数是否存在特殊字符

match = symbol.findall(yourpassword)

if match:

strength_level += 1

else:

strength_level = 0

print('应至少含有一个特殊字符')

ScorePassword()

if strength_level <= 2:

print('密码设置简单,请重试')

ScorePassword() #这里可以采用其它方式,我采用的是递归的方法重试

elif strength_level <=4:

if input('密码中等强度可使用,是否设置更强密码?(Please input Yes or no)\n') != 'Yes':

print("恭喜你设置成功\n")

return yourpassword

else:

ScorePassword(input("请你输入更强的密码:"))

elif strength_level == 5:

print('恭喜你设置成功,完美密码!\n')

return yourpassword

其它密码强弱判断方式

方式众多,但是原理大致相同,我再列举几种,大家可供参考、修改,有疑问可以留言,看到必回。

Python字符串:

str.isnumeric() ------检测字符串是否只有数字 返回True or False(注意是只有数字)

str.isalpha() ------检测字符串中是否只有字母 返回True or False

str.islower() ------检测字符串中是否都为小写

str.isupper() ------检测字符串中是否都为大写

len(str) ------检测字符串长度

fs.isdigit() ------检测字符串是否都为数字。

def checkio(s):

fs = ''.join(filter(str.isalnum, s)) # keep only letters and digits

return (

len(fs) >= 1 # There is at least one letter or digit

and len(s) >= 10 # ... and there are at least 10 characters

and not fs.isalpha() # ... and there is at least one digit

and not fs.isdigit() # ... and there is at least one letter

and not fs.islower() # ... and not all letters are lowercase

and not fs.isupper() # ... and not all letters are uppercase

)

import re

def checkio(data):

return True if re.search("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$", data) and len(data) >= 10 else False

if __name__ == '__main__':

修改值定用户的密码

# 修改用户密码

def ChangeUserPassword():

path = "aa.csv"

YourID = input('请输入你想修改密码的用户名:') #

YourPassword = input('请输入原密码:')

r = csv.reader(open(path,newline=""))

lines = [l for l in r] #将读取的数据转换成列表

# print(lines.index([YourID,YourPassword]))

NewIndes = lines.index([YourID,YourPassword]) #列表查找特定的值

lines[NewIndes][1] = ScorePassword() #列表索引处修改其值

# print(lines)

writer = csv.writer(open(path, 'w',newline="")) #将修改后的数据重新输入进去csv文件

writer.writerows(lines)

显示当前所有用户信息

#显示当前所有用户信息

def SelectAllUserInfo():

path = "aa.csv"

with open(path,"r+",encoding='utf-8') as f:

csv_read = csv.reader(f)

for line in csv_read:

print(line[0])

print("\n")

可运行源码

import csv

import re

import pandas as pd

import numpy as np

from pandas.core.frame import DataFrame

global NewID

global PassWord

# 打印功能提示

def printMenu():

print("************************")

print("1.创建一个用户ID")

print("2.修改密码")

print("3.显示所有用户")

print("4.创建一个新的CSV文件记录数据")

print("5.退出系统")

print("************************")

#打开一个csv文件,若没有则创建,用于存储用户id和密码

def CreateCsvFile():

path = input("请输入新csv文件名——用于记录数据")

with open(path,'w+',newline="") as f:

csv_write = csv.writer(f)

csv_head = ['UserID','PassWord']

csv_write.writerow(csv_head)

# 创建用户ID及密码

def CreateUserID():

global NewID

global PassWord

path = "aa.csv"

NewID = input('请输入你想创建的用户名:')

data=pd.read_csv(path,sep=',',encoding='utf-8') #encoding='unicode_escape' 'utf-8' 'GBK'注意区分这几种编码格式

a=data['UserID'].tolist()

while True:

if NewID in a:

print("用户名已存在,请重新选择\n")

NewID = input('请重新输入你想创建的用户名:')

else:

PassWord = ScorePassword()

with open(path,'a+',newline="") as f:

csv_write = csv.writer(f)

data_row = [NewID,PassWord]

csv_write.writerow(data_row)

break

#密码评分

def ScorePassword():

yourpassword = input("请你为该用户设置密码:")

strength_level = 0

if len(yourpassword) >= 8:

strength_level += 1

if len(yourpassword) >= 8:

strength_level += 1

upper = re.compile('[A-Z]+')

match = upper.findall(yourpassword)

if match:

strength_level += 1

lower = re.compile('[a-z]+')

match = lower.findall(yourpassword)

if match:

strength_level += 1

num = re.compile('[0-9]+')

match = num.findall(yourpassword)

if match:

strength_level += 1

else:

print('密码设置失败,至少含有8位')

ScorePassword()

symbol = re.compile('([^a-zA-Z0-9])+')

match = symbol.findall(yourpassword)

if match:

strength_level += 1

else:

strength_level = 0

print('应至少含有一个特殊字符')

ScorePassword()

if strength_level <= 2:

print('密码设置简单,请重试')

ScorePassword()

elif strength_level <=4:

if input('密码中等强度可使用,是否设置更强密码?(Please input Yes or no)\n') != 'Yes':

print("恭喜你设置成功\n")

return yourpassword

else:

ScorePassword(input("请你输入更强的密码:"))

elif strength_level == 5:

print('恭喜你设置成功,完美密码!\n')

return yourpassword

# 修改用户密码

def ChangeUserPassword():

path = "aa.csv"

YourID = input('请输入你想修改密码的用户名:') #

YourPassword = input('请输入原密码:')

r = csv.reader(open(path,newline=""))

lines = [l for l in r]

# print(lines.index([YourID,YourPassword]))

NewIndes = lines.index([YourID,YourPassword])

lines[NewIndes][1] = ScorePassword()

# print(lines)

writer = csv.writer(open(path, 'w',newline=""))

writer.writerows(lines)

# 显示当前所有用户信息

def SelectAllUserInfo():

path = "aa.csv"

with open(path,"r+",encoding='utf-8') as f:

csv_read = csv.reader(f)

for line in csv_read:

print(line[0])

print("\n")

while True:

printMenu()

key = input("Enter selection:")

print("\n")

if key == '1':

CreateUserID()

elif key == '2':

ChangeUserPassword()

elif key == "3":

SelectAllUserInfo()

elif key == "4":

CreateCsvFile()

elif key == "5":

break

else:

print("请输入1-5选项\n")

系统如何进一步完善

开发GUI,可使用pyqt5或者其它

密码判断函数可以更加简便

记录并显示增加、修改数据的操作时间的功能

增加删除值定用户名的功能

大家加油学习啊!男儿当自强!

python用户名和密码登录函数_基于Python构建用户ID和密码存储查询系统,python,建立,一个,用户名,UserID,Password,的...相关推荐

  1. mysql存储登录密码_用户身份验证:存储用户ID和密码在一个MySQL数据库

    //我们必须永远不会忘记启动会话 session_start(); $errorMessage = ''; if (isset($_POST['txtUserId']) && isse ...

  2. 实训代码java毕业设计_基于SSM框架的王者荣耀游戏攻略系统

    基于SSM框架的王者荣耀游戏攻略系统mysql数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统oracle数据库创建语句 基于SSM框架的王者荣耀游戏攻略系统sqlserver数据库创建语句 基于 ...

  3. arm linux考勤,定稿毕业论文_基于ARM与Linux的员工刷卡考勤系统喜欢就下吧(范文1)...

    <毕业论文_基于ARM与Linux的员工刷卡考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)毕业论文_基于ARM与Linux的员工刷卡考勤系统(喜欢就下吧)> ...

  4. mysql存密码_存储用户ID和密码到mysql数据库的方法

    对用户身份验证,最常用的方法就是将用户id与密码保存进数据库中了,然后再写一些登录检测代码,就可以使用了. 创建用户信息表: 复制代码 代码如下: CREATE TABLE tbl_auth_user ...

  5. 基于微信小程序的企业职工薪资查询系统小程序

    文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/my ...

  6. 基于MRS-ClickHouse构建用户画像系统方案介绍

    业务场景 用户画像是对用户信息的标签化.用户画像系统通过对收集的各维度数据,进行深度的分析和挖掘,给不同的用户打上不同的标签,从而刻画出客户的全貌.通过用户画像系统,可以对各个用户进行精准定位,从而将 ...

  7. php保存账号密码到数据库,php中存储用户ID和密码到mysql数据库的方法

    创建用户信息表: 复制代码 代码如下: CREATE TABLE tbl_auth_user ( user_id VARCHAR(10) NOT NULL, user_password CHAR(32 ...

  8. python用户名密码登录退出_用户登录登出

    一.功能需求分析 1.登录功能分析 1.1登录流程 1.2功能(一个请求为一个功能) -登录页面 -登录功能 -登出功能 二.登录页面 1.接口设计 1.1.接口说明 类目 说明 请求方式 GET u ...

  9. python cut函数_基于python cut和qcut的用法及区别详解

    我就废话不多说了,直接上代码吧: from pandas import Series,DataFrame import pandas as pd import numpy as np from num ...

最新文章

  1. winform实现翻书效果_虚拟翻书系统解决方案
  2. Jquery操作表单Select元素常用方法
  3. 跳一跳201803-1
  4. Leetcode--20. 有效的括号
  5. 安装openCV到VS2010,Win764位机时遇到的问题的解决办法
  6. 作业四 | 个人项目-小学四则运算 “软件”之初版
  7. 【软件使用技巧】二(Word文档损坏)
  8. 记忆模糊知识点5-11
  9. android 电视安装apk文件损坏,智能电视无法安装APK文件?原因都在这里!
  10. talfta---动态故障树分析软件产品介绍
  11. 物联网基础设施安全防护
  12. centos7输入ifconfg找不到ens33/eth0网卡信息,且service network restart重启网络失败
  13. java无侵入埋点 point_无侵入埋点
  14. 菜菜学paddle第六篇:利用LeNet卷积神经网络识别手写数字
  15. appendChild()方法
  16. R语言rjags使用随机效应进行臭氧数据分析
  17. Spring事务不生效的原因
  18. java 日历工具_【Java】太强了,这款开源日历工具库堪称神器!
  19. 用C语言编写一个申请内存的程序
  20. 【阅读论文】第六章--计算机辅助检测--博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病

热门文章

  1. R语言rms包生存分析之限制性立方样条(RCS, Restricted cubic spline)分析详解实战:拟合连续性自变量和事件风险之间的关系:基于survival包lung数据
  2. R读取json文件并转化为dataframe
  3. Windows下查看已经安装的GPU的情况
  4. 使用KNN进行缺失值填补详解及实践
  5. 基于Keras Application和Densenet迁移学习(transfer learning)的乳腺癌图像分类模型(良性、恶性)
  6. java centos7_centos7.0安装java环境
  7. 第二章 实验设计的考虑因素
  8. 下载的TXT小说如何去除广告、去除多余空行?
  9. 【文本分类】Deep Pyramid Convolutional Neural Networks for Text Categorization
  10. LeetCode 37. Sudoku Solver--数独求解(回溯法)--Java 3ms,Python 80ms 解法