记录自己得python学习之路,也希望帮助新手小白能更快得学习python,那就 直接上代码 ,我只是简单的写了点注释。
import time,random
# ---------------- 书籍信息列表 -------------------
book_list = [
{'book_name':"天龙八部",'author':"金庸",'type':"武侠",'price':"20"},
{'book_name':"还珠格格",'author':"琼瑶",'type':"古装言情",'price':"10"},
{'book_name':"斗破苍穹",'author':'天蚕土豆','type':'玄幻','price':'15'},
{'book_name':"大主宰",'author':'天蚕土豆','type':'玄幻','price':'16'}]
# ------------ 已冻结账号 -------------
frozen_user = [{'username': 'dabiao', 'password': 'zxcv123...456','tight_lock':'64545431','secret_key': '4961002','error_count':3}]
# ------------ 正常用户列表 ---------------
user_list = [{'username':'admin','password':'admin123...','tight_lock':'64541554','secret_key':'4961007','error_count':0},
{'username': 'enguang', 'password': 'qwer123456...','tight_lock':'87646155','secret_key': '4961046','error_count':0}]
# -----------------初级密码----------------
def primary_pwd(password):
len_pwd = len(password)
if (password.isdigit() or password.isalpha()) or len_pwd <= 8:
return False
else:
return True
# -----------------中级密码------------------
def intermediate_pwd(password):
if password[0].isdigit():
return False
else:
num_num = 0
letter_num = 0
len_pwd = len(password)
for i in password:
if i.isdigit():
num_num += 1
if i.isalpha():
letter_num += 1
symbol_num = len_pwd - num_num - letter_num
if symbol_num>=0:
if num_num > 0 or letter_num > 0:
return True
else:
return False
#-----------------高级密码------------------
def advancedd_pwd(password):
num_num = 0
letter_num = 0
len_pwd = len(password)
for i in password:
if i.isdigit():
num_num += 1
if i.isalpha():
letter_num += 1
symbol_num = len_pwd - num_num - letter_num
if symbol_num >0:
if num_num > 0 and letter_num > 0 and len_pwd > 16:
return True
else:
return False
# --------------------判断密码-------------
def check_pwd(password):
if primary_pwd(password):
if advancedd_pwd(password):
time.sleep(1.5)
print('您的密码安全性等级为高,可以使用,非常棒!')
return True
else:
if intermediate_pwd(password):
time.sleep(1.5)
print('您的密码安全等级为中,可以使用,如果需要安全性更高的密码请前往系统中修改密码!')
return True
else:
print('密码不能是数字,不能用全符号,请重新输入密码!')
return False
else:
print('密码等级太低,不能使用,请重新输入密码!')
return False
# ---------------- 注册块 --------------
def register(username,password):
print('信息安全性检测中...')
time.sleep(1.5)
for i in user_list:
if i['username'] == username:
print('账号已存在,请重新输入!')
print('-' * 40)
return False
else:
if check_pwd(password):
password2 = input('请再次输入密码:')
if password2 == password:
secret_lock = random.randint(10000000,99999999) # 每个账号生成 密锁和密钥 用来解冻账号
secret_key = random.randint(1000000,9999999)
user_NPSSC = {'username':username,'password':password,'secret_lock':secret_lock,'secret_key':secret_key,'error_count':'0'} # NPSSC 用户名字密码密锁密钥错误次数开头
user_list.append(user_NPSSC)
print('您的密锁是%d,密钥是%d。'%(secret_lock,secret_key))
print(user_list)
print('注册中...')
time.sleep(1)
print('注册成功,请记好您的账号密码,密锁和密钥是您冻结账号和解冻账号的条件,请勿告诉他人!')
print('-' * 40)
return True
else:
print('两次输入的密码不一致,请重新输入!')
print('-' * 40)
return False
# --------------- 登陆块 ---------------
def login(username,password):
print('登陆中...')
time.sleep(1.5)
for i in user_list:
if i['username'] == username and i['password'] == password:
print('登陆成功!')
print('-' * 40)
return True
else:
print('登陆失败!')
for i in user_list:
if i['username'] == username:
i['error_count'] += 1
print('第%d次输错密码,剩余%d次机会,剩余次数为0即冻结账号!' % (i['error_count'],3-i['error_count']))
print('-' * 40)
if i['error_count'] == 3:
print('账号冻结中...')
time.sleep(1.5)
user_list.remove(i)
frozen_user.append(i)
print('账号已冻结,如需解冻请前往解冻系统!')
print('-' * 40)
print(user_list)
print(frozen_user)
# --------------- 解冻账号 ---------------
def thaw_account(tight_lock,secret_key):
print('密锁密钥验证中...')
time.sleep(1.5)
for i in frozen_user:
if i['tight_lock'] == tight_lock and i['secret_key'] == secret_key:
i['error_count'] = 0
print('验证成功,正在解冻...')
time.sleep(1.5)
frozen_user.remove(i)
user_list.append(i)
print('您的账号密码是%s,%s。'%(i['username'],i['password']))
print('账号解冻成功,请文明使用账号!')
print('-' * 40)
return True
else:
print('凭证不正确,请重新输入!')
print('-' * 40)
return False
# --------------- 添加书籍 --------------
def add_book():
bookname = input('请输入需要添加书籍的名字:')
for i in book_list:
if i['book_name'] == bookname:
print('不可添加,该书籍已存在!')
print('-'*40)
return False
else:
choice = input('请选择是否输入作者名:')
if choice == '1':
author = input('请输入作者名字:')
type = input('请输入书籍类型:')
price = input('请输入书籍价格:')
book_NATP = {'book_name': bookname, 'author': author, 'type': type, 'price': price} # book_NATP 书名作者名类型价格首字母
book_list.append(book_NATP)
print('书籍添加中...')
time.sleep(1.5)
print('书籍添加成功!')
print('-' * 40)
return True
elif choice == '2':
type = input('请输入书籍类型:')
price = input('请输入书籍价格:')
book_NATP = {'book_name': bookname, 'author': '佚名', 'type': type,'price': price} # book_NATP 书名作者名类型价格首字母
book_list.append(book_NATP)
print('书籍添加中...')
time.sleep(1.5)
print('书籍添加成功!')
print('-' * 40)
return True
else:
print('指令输入错误,请重新输入!')
print('-'*40)
return False
# ---------------- 查看书籍信息 -----------
def find_book(choice):
if choice == '1': # 查看单本书籍信息
bookname = input('请输入需要查看的书籍名:')
print('书籍信息查询中...')
time.sleep(1.5)
for i in book_list:
if bookname == i['book_name']:
print('书名:%s,作者:%s,类型:%s,价格:%s。'%(i['book_name'],i['author'],i['type'],i['price']))
print('-' * 40)
return True
else:
print('系统中不存在该书籍哟!')
print('-' * 40)
return False
elif choice == '2': # 查询所有书籍信息
for i in book_list:
print('书名:%s,作者:%s,类型:%s,价格:%s。' % (i['book_name'], i['author'], i['type'], i['price']))
time.sleep(0.5)
print('-' * 40)
time.sleep(1)
elif choice == '3': # 按照书籍类型查找
book_type = input('请输入要查找的书籍类型:')
print('书籍信息查询中...')
time.sleep(1.5)
flag = 0
for i in book_list:
if i['type'] == book_type:
print('书名:%s,作者:%s,类型:%s,价格:%s。' % (i['book_name'], i['author'], i['type'], i['price']))
flag = 1
print('-' * 40)
if flag == 0:
print('系统中不存在该类型的书籍哟!')
print('-' * 40)
return False
elif choice == '4': # 按照书籍作者查找
author = input('请输入要查找作者:')
print('书籍信息查询中...')
time.sleep(1.5)
flag = 0
for i in book_list:
if i['author'] == author:
print('书名:%s,作者:%s,类型:%s,价格:%s。' % (i['book_name'], i['author'], i['type'], i['price']))
flag = 1
print('-' * 40)
if flag == 0:
print('系统中不存在该作者的书籍哟!')
print('-' * 40)
return False
elif choice == '5': # 按照价格区间查找
low_price = int(input('请输入最低价格:'))
high_price = int(input('请输入最高价格:'))
flag = 0
print('书籍信息查询中...')
time.sleep(1.5)
for i in book_list:
if low_price <= int(i['price']) <= high_price:
print('书名:%s,作者:%s,类型:%s,价格:%s。' % (i['book_name'], i['author'], i['type'], i['price']))
flag = 1
print('-' * 40)
if flag == 0:
print('系统中不存在该价格区间的书籍哟!')
print('-' * 40)
return False
else:
print('指令输入错误!')
print('-' * 40)
return False
# --------------- 删除书籍信息 ------------
def del_book(bookname):
print('书籍信息查询中...')
time.sleep(1.5)
for i in book_list:
if i['book_name'] == bookname:
print(i)
choice = input('请选择是否删除:')
if choice =='1':
book_list.remove(i)
print('书籍删除中...')
time.sleep(1.5)
print('书籍删除成功!')
print('-' * 40)
return True
if choice == '2':
print('放弃删除!')
print('-' * 40)
break
else:
print('系统中不存在该书籍哟!')
print('-' * 40)
return False
# --------------- 修改书籍信息 ------------
def modify_book(bookname):
print('书籍信息查询中...')
time.sleep(1.5)
for i in book_list:
if i['book_name'] == bookname:
print('书名:%s,作者名:%s,类型:%s,价格:%s。'%(i['book_name'],i['author'],i['type'],i['price']))
rbookname = input('请输入修改后的书名:')
rauthor = input('请输入修改后的作者名:')
rtype = input('请输入修改后的类型:')
rprice = input('请输入修改后的价格:')
print('书籍信息修改中...')
time.sleep(1.5)
i['book_name'] = rbookname
i['author'] = rauthor
i['type'] = rtype
i['price'] = rprice
print('书籍信息修改保存成功!')
print('-' * 40)
return True
else:
print('系统中不存在该书籍哟!')
print('-' * 40)
return False
# --------------- 修改登陆密码 -----------
def change_pwd(username,password):
flag = 0
for i in user_list:
if i['username'] == username and i['password'] == password:
new_pwd1 = input('请输入新密码:')
if check_pwd(new_pwd1):
new_pwd2 = input('请再次输入密码:')
if new_pwd1 == new_pwd2:
print('密码修改中...')
i['password'] = new_pwd1
time.sleep(1.5)
print('密码修改成功,请保管好您的密码!')
print('-'*40)
flag = 1
else:
print('两次输入的密码不一致!')
print('-' * 40)
return False
if flag == 0:
print('用户信息不存在!')
print('-' * 40)
return False
# --------------- 注册登陆解锁 ------------
def reg_log():
while 1:
choice = input('请选择操作,1:新用户注册,2:老用户登陆,3:账号解冻,0:退出系统。:')
if choice == '1':
register(username=input('请输入注册用户名:'),password=input('请输入注册密码:'))
continue
elif choice == '2':
if login(username=input('请输入用户名:'),password=input('请输入密码:')):
break
elif choice == '3':
thaw_account(tight_lock = input('请输入唯一密锁:'),secret_key = input('请输入唯一密钥:'))
continue
elif choice == '0':
print('期待您的下次使用!')
quit() # 不能使用break 如果使用会退出主界面后执行功能界面。
# ---------------- 主函数 ----------------
def run():
print('-'*37)
print('欢迎来到图书管理系统'.center(30,'-'))
print('1.新用户注册'.center(34,'-'))
print('2.老用户登陆'.center(34,'-'))
print('3. 账号解冻'.center(34,'-'))
print('0. 退出系统'.center(34,'-'))
print('-' * 37)
reg_log()
while 1:
choice = input('请输入指令操作,1:添加书籍,2:查看书籍,3:删除书籍,4:修改书籍,5:改密,0:退出:')
if choice == '1':
add_book()
elif choice == '2':
find_book(choice=input('请选择查看方式:'))
elif choice == '3':
del_book(bookname=input('请输入需要删除的书籍名:'))
elif choice == '4':
modify_book(bookname=input('请输入想要修改的书籍:'))
elif choice == '5':
change_pwd(username=input('请输入用户名:'), password=input('请输入密码:'))
elif choice == '0':
print('期待您的下次使用!')
time.sleep(1.5)
print('-' * 40)
break
else:
print('指令错误,请重新输入!')
print('-' * 40)
# ---------------- 主函数 ----------------
if __name__ == '__main__':
run()