下面是代码,修修改改花了快2小时了,没办法,刚入门,什么也不懂,写的有点慢了,见谅
有兴趣的同学可以参考一下,提供一下思路给你也好,这个写的比较冗长,参考参考就好
#导入模块
import pymssql
#连接导数据
usr=pymssql.connect('KIRIN','sa','123','student',autocommit=True,charset='GBK')
#建立游标
qq=usr.cursor()
qq.execute('''select users from users''')
#获取游标查询到的东西
aa=qq.fetchall()
#建立两个空列表,
user=[]
pwd=[]
#把从游标获取下来带元组的值集合在一个列表里面用于后面的验证
for x in aa:
for xx in x:
user.append(xx)
#执行sql查询语句
qq.execute('''select pwd from users''')
bb=qq.fetchall()
for y in bb:
for yy in y:
pwd.append(yy)
#开始写验证的头部提示信息,下面都是简单的if或者while 就不写注释了,python代码阅读起来就像读文章一样,因为它真的很简洁
def q():
while True:
print('*' * 20)
print(' 1.修改密码')
print(' 2.注册账号')
print(' 3.注销账号')
print(' 4.退出')
print(' 5.登录')
print(' 6.查询用户')
print('*' * 20)
a=int(input('输入你的选项'))
if a==1:
sql_jiumima = int(input('请输入你的旧密码'))
while True:
if sql_jiumima in pwd:
sql_xinmima=int(input('输入你的新密码'))
print('修改成功')
qq.execute('''update users set pwd={} where pwd={}'''.format(sql_xinmima,sql_jiumima))
break
else:
print('旧密码错误,请重试')
break
elif a==2:
sql_zhucezhanghao=int(input('输入注册用户名'))
while True:
if sql_zhucezhanghao in user:
print('账号已经存在,请重试')
break
else:
sql_zhucemima=int(input('输入你的密码'))
sql_zhucemima1=int(input('再次确认你的密码'))
if sql_zhucemima!=sql_zhucemima1:
print('两次密码输入不一致,请重新输入')
break
else:
print('账号注册完成')
qq.execute('''insert into users values({},{})'''.format(sql_zhucezhanghao, sql_zhucemima))
break
elif a==3:
sql_zhuxiao=int(input('输入需要注销的账号'))
while True:
if sql_zhuxiao in user:
zhuxiao_1=int(input('请再次输入账号确认注销'))
if sql_zhuxiao != zhuxiao_1:
print('两次输入不一致,请重新输入')
else:
qq.execute('''delete from users where users={}'''.format(sql_zhuxiao))
print('注销成功')
break
else:
print('需要注销的账号不存在,请重试')
break
elif a==4:
break
elif a==5:
denglu_zhanghao=int(input('请输入你的账号'))
ii=0
while ii<3:
if denglu_zhanghao in user:
denglu_mima=int(input('请输入你的密码'))
if denglu_mima in pwd:
print('登录成功')
break
else:
ii+=1
print('密码错误,请重试,3次错误后将锁定')
else:
print('账号不存在,请重试')
break
if a==6:
qq.execute('''select users from users''')
sql_cha=qq.fetchall()
sql_chaxun1=[]
for x1 in sql_cha:
for x2 in x1:
print(sql_chaxun1.append(x2))
for x3 in sql_chaxun1:
print(x3)
q()
下面附加一段19号为了缩减代码的思路
其中去掉了双重for循环提取账号或密码的环节,替换成了直接查询到账号或者密码用下标的方法去检测输入的账号密码是否在这里变量里面,
大大的减轻了劳动量,也提升了速度,判断精准,一个账号对应一个账号,解决了串号修改密码的bug,
贴上了代码如下
sql.execute('''select users from users where users='123' ''')
aa=[]
qq=sql.fetchall()
sql.execute('''select pwd from users where pwd='123' ''')
qqq=sql.fetchall() print(qq) print(qq[0]) print(han(aa,qq))
qa=int(input('输入账号')) while True: if qa not in qq[0]: print('账号不存在') break elif qa in qq[0]:
qaa = int(input('输入密码')) if qaa in qqq[0]: print('登录成功') break else: print('密码错误')