图书馆管理系统
python-列表-元组-字符串等基础语法实现
功能:
图书管理系统 LIBRARY_SYSTEM
1.登陆 —>1.登陆方式(1.账号(三次错误冻结) 2.ID(三次错误(1.使用身份证号找回账号ID 2.系统收回账号ID)))
3.注销账号
2.注册 —>验证码(2次) 密码安全性检查 (身份证 随机账号ID)
1.添加书籍 2.删除(1.书名 2.作者 3.价格) 3.修改 4.查找(1.书名 2.作者 3.价格)
5.查看 6.借阅 7.归还 8.主界面 0.退出
#830464
import sys
import time
import random
import copy
创建一个列表存储书籍信息
books = [[‘悲伤逆流成河’, ‘郭敬明’, 59], [‘从你的全世界路过’, ‘张嘉佳’, 68],
[‘左耳’, ‘安妮宝贝’, 68], [‘左耳’, ‘饶雪漫’, 55], [‘南极之恋’, ‘吴有音’, 76]]
创建一个空列表存储借阅的书籍
borrow_books = []
创建一个空列表存储账户ID
ID_book = []
创建一个身份证列表存储用户身份证
ID_cards = []
创建一个列表存储用户信息
users = [[‘kxq’, ‘123’], [‘cqq’, ‘456’]]
创建一个存储密码的列表
password_list = []
主界面
def main():
while True:
print(‘’)
print(’ 欢迎登陆图书管理系统 ')
print('’)
print(‘’)
print(' 登陆------1 ’)
print(' 注册------2 ’)
print(' 退出------0 ’)
print('’)
print(’*******************************’)
n = int(input(‘请输入你的操作:’))
if n == 1:
login()
time.sleep(2)
function()
if n == 2:
register()
if n == 0:
sys.exit(0)
登陆系统(可修改密码) —1
count = 3
def login():
print(‘1.登陆方式 2.修改密码 3.注销账号’)
t = int(input(‘请输入:’))
#登陆方式(1.账号 2.ID)
if t == 1:
#1.账号 2.ID(ID忘记可用身份证找回)
print(‘请选择登陆方式:\t1.账号\t2.ID’)
e = int(input())
global count
#1.账号
if e == 1:
print(‘请输入用户名:’, end=’ ‘)
username = input()
print(‘请输入用户密码:’, end=’ ')
password = input()
if [username,password] not in users:
print('用户名或密码错误!')
count = count - 1
print('你还有%d次登陆机会' % count)
time.sleep(2)
if count <= 0:
print('---------')
print('输入错误次数超过3次,该账号被冻结')
print('账号冻结3小时.')
print('---------')
time.sleep(10)
count = 3
login()
else:
login()
else:
if [username, password] in users:
print('登陆成功!')
time.sleep(2)
#2.ID
if e == 2:
print('请输入账号ID:', end=' ')
IDD = input()
print('请输入用户密码:', end=' ')
password = input()
if [IDD,password] not in ID_book:
print('账号ID或密码错误!')
count = count - 1
print('你还有%d次登陆机会' % count)
time.sleep(2)
#ID登陆3次机会用完,可以使用身份证找回ID
if count <= 0:
print('---------->')
print('是否要找回账号ID?\t1.是 \t2.否')
z = int(input())
#1.是
if z == 1:
print('请输入您的身份证号:',end=' ')
id_card = str(input())
for i in ID_cards:
if id_card == i:
print('身份证号验证正确')
time.sleep(1.5)
print('您的账号ID为:',ID)
print('请记好您的账号ID')
time.sleep(2)
login()
#2.否(将会删除账号ID)
if z == 2:
print('---------')
print('输入错误次数超过3次,该账号ID将被收回')
#收回账号ID(清空ID_book列表)
ID_book.clear()
print('该账号ID已被收回')
#收回后返回主界面
time.sleep(2)
main()
else:
login()
else:
if [IDD, password] in ID_book:
print('登陆成功!')
time.sleep(2)
#修改密码(1.根据账号密码 2.根据账号ID)
if t == 2:
alter_password()
#注销账号
if t == 3:
print('请选择注销内容:\t1.账号 2.ID',end=' ')
n = int(input())
#1.账号
if n == 1:
username = input('请输入要注销的账号:')
password = input('请输入要注销的密码:')
if [username, password] in users:
users.remove([username, password])
print('\t\t\t......')
time.sleep(3)
print('注销成功!')
print('---------')
print('\t\t---------')
login()
else:
print('账号或密码错误')
time.sleep(2)
login()
#2.ID
if n == 2:
IDD = input('请输入要注销的ID:')
password = input('请输入要注销的密码:')
if [IDD, password] in ID_book:
users.remove([IDD, password])
print('\t\t\t......')
time.sleep(3)
print('注销成功!')
print('---------')
print('\t\t---------')
login()
else:
print('账号或密码错误')
time.sleep(2)
login()
注册系统 —2
def register():
global ID,password,n1,m1
ccount = 3
CCOUNT = 2
username = input(‘请输入用户名:’)
password = input(‘请输入用户密码:’)
#第一次输入密码就判断是否是数字开头
security_varify()
varify_password = input(‘请再次输入密码:’)
#如果两次密码不一样,退出注册系统,返回主界面main()
while True:
# 两次密码一样,继续注册
if password == varify_password:
ID_card = input(‘请输入身份证号:’)
ID_cards.append(ID_card)
#调用密码安全性检测函数
security_varify()
#调用验证码函数
auth_code_produce()
#判断验证码 注册成功
if n1 == m1:
print('验证成功')
time.sleep(2)
users.append([username, password])
#print('users:',users)
print('恭喜您,注册成功!')
#注册成功随机分配账号ID(三位)
ID = random.randrange(100000,1000000)
print('您的随机账号ID为:%d'%ID)
#注意:写进列表时要将int转化为str
ID = str(ID)
ID_book.append([ID,password])
time.sleep(2)
main()
#验证码错误 重新输入验证码
else:
while True:
#第二次验证码正确
if n1 == m1:
print('验证成功')
time.sleep(2)
users.append([username, password])
print('恭喜您,注册成功!')
time.sleep(2)
#第二次验证码错误
else:
print('验证码不正确,请重新输入')
CCOUNT -= 1
print('还有%d次机会重新输入' % CCOUNT)
print('\t\t------>')
if CCOUNT == 0:
time.sleep(1)
print('正在退出注册')
time.sleep(2)
main()
n = input('请再次输入验证码:')
# 输入内容转化为小写
n1 = n.lower()
#两次密码不一样,返回主界面main()
else:
print('两次密码不一样,请重新输入')
ccount -= 1
print('还有%d次机会重新输入'%ccount)
print('\t\t------>')
if ccount == 0:
time.sleep(1)
print('正在退出注册')
time.sleep(2)
main()
varify_password = input('请再次输入密码:')
#安全等级验证
def security_varify():
global password
# 定义数字,字母,特殊字符
number = ‘0123456789’
letter = ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’
symblo = r’~!@#$%^&*()|<>:;,.=-?[]{}’
# 当密码为空时,提示
while len(password) == 0 or password.isspace():
print('您的密码为空,请重新输入!')
password = input('请再次输入密码:')
# 判断密码的长度
# 低级
if len(password) <= 8:
flag_len = 0
# 高级
elif len(password) > 16:
flag_len = 2
# 中级
else:
flag_len = 1
flag_con = 0
# 判断是否含有数字
for each in password:
if each in number:
flag_con += 1
break
# 判断是否含有字母
for each in password:
if each in letter:
flag_con += 1
break
# 判断是否含有特殊字符
for each in password:
if each in symblo:
flag_con += 1
break
# 记录 低级密码重新输入的次数
count = 3
# 根据密码的长度和包含的字符种类判断结果
while count > 0:
if (password[0] not in number and flag_len == 0) or (password[0] not in number and flag_con == 1):
print('您的密码安全级别为:', end='')
print('低(建议修改密码)')
break
elif flag_len == 2 and flag_con == 3 and password[0] in letter:
print('您的密码安全级别为:', end='')
print('高\n\n\n')
break
elif password[0] in number:
print('密码不能以数字开头')
count -= 1
print('还有%d次机会重新输入' % count)
if count == 0:
print('正在退出注册')
time.sleep(2)
main()
password = input('请重新输入密码:')
else:
print('您的密码安全级别为:', end='')
print('中(安全性适中)')
break
#生成验证码
def auth_code_produce():
global n1,m1
# 生成验证码 不区分大小写
l = []
# 通过for循环遍历asii追加到空列表中
for i in range(65, 91):
l.append(chr(i))
for j in range(97, 123):
l.append(chr(j))
for k in range(48, 58):
l.append(chr(k))
# 获取到的为列表
m = random.sample(l, 6)
# 将列表转化为字符串
m = ‘’.join(m)
print(’-------->’)
print(’\t\t\t请识别图中验证信息\t\t’, end=’ ‘)
print(’\33[4;32;43m %s\033[0m’ % m)
# 验证码转化为小写
m1 = m.lower()
n = input(‘请输入验证码:’)
# 输入内容转化为小写
n1 = n.lower()
#修改密码
def alter_password():
COUNT = 3
username = input(‘请输入要修改的账号:’)
password = input(‘请输入旧密码:’)
#循环遍历users
for i in users:
for j in i:
password_list.append(j)
while True:
# 判断输入的密码是否正确,3次错误,冻结
if password not in password_list:
print('旧密码不正确')
COUNT -= 1
print('还有%d次机会重新输入'%COUNT)
print('\t\t------>')
if COUNT == 0:
time.sleep(1)
print('正在冻结账户')
time.sleep(10)
main()
new_password = input('请再次输入密码:')
# 密码正确,继续修改
else:
if [username, password] in users:
users.remove([username, password])
print('-------------------')
username = input('请输入修改后的账号:')
password = input('请输入新密码:')
users.append([username, password])
print('修改密码成功!')
print('---------')
print('\t\t---------')
login()
else:
print('账号或密码错误')
time.sleep(2)
login()
主要功能
def function():
print(’*******************************’)
print(’***** 添加书籍------1 ’)
print(' 删除书籍------2 ’)
print(' 修改书籍------3 ’)
print(' 查找书籍------4 ’)
print(' 查看所有书籍—5 ’)
print(' 借阅书籍------6 ’)
print(' 归还书籍------7 ’)
print(' 查看借阅书籍—8 ’)
print(' 返回主界面-----9 ’)
print(' 退出------0 *****’)
n = int(input('请输入你的操作:'))
#添加书籍
if n == 1:
book_increase()
time.sleep(2)
function()
#删除书籍
elif n == 2:
book_delete()
time.sleep(2)
function()
#修改书籍
elif n == 3:
book_alter()
time.sleep(2)
function()
#查找书籍
elif n == 4:
book_find_one()
time.sleep(2)
function()
#查看所有书籍
elif n == 5:
book_find_all()
time.sleep(2)
function()
#借阅书籍
elif n == 6:
book_borrow()
time.sleep(2)
function()
#归还书籍
elif n == 7:
book_back()
time.sleep(2)
function()
#查看借阅书籍
elif n == 8:
book_find_borrow()
time.sleep(2)
function()
#返回主界面
elif n == 9:
main()
time.sleep(2)
elif n == 0:
exit()
else:
print('请输入正确的操作')
#增加书籍 .append() —1
def book_increase():
bookname = input(‘请输入添加书籍的书名:’)
author = input(‘请输入添加书籍的作者:’)
price = int(input(‘请输入添加书籍的价格:’))
#如果不写作者,默认BLUE
if author == ‘’ or ’ ‘:
author = ‘BLUE’
# 添加操作 .append()
books.append([bookname, author, price])
print(‘添加书籍成功!’)
print(’\t\t\t您添加书籍的信息:’)
print(‘书名\t:%s\t’%bookname, ‘作者 :%s\t’%author, ‘价格 :%s’%price)
time.sleep(2)
#如果写作者,正常添加
else:
# 添加操作 .append()
books.append([bookname, author, price])
print(‘添加书籍成功!’)
print(’\t\t\t您添加书籍的信息:’)
print(‘书名\t:%s\t’%bookname, ‘作者\t:%s\t’%author, ‘价格\t:%s’%price)
time.sleep(2)
#删除书籍
#选择删除方式:1.根据书名 2.根据作者 3.根据价格区间
def book_delete():
global books
time.sleep(1)
print(‘1.书名删除 2.作者删除 3.价格删除’)
time.sleep(0.6)
u = int(input(‘请输入你的删除方式:’))
# 书名删除
if u == 1:
books_copy = copy.deepcopy(books)
bookname = input(‘请输入书名:’)
print()
j = 0
for i in books:
if i[0] == bookname:
j = 1
print(‘删除书籍信息:\t书名:’, i[0], ‘作者:’, i[1], ‘价格:’, i[2])
books_copy.remove(i)
books = books_copy
if j == 0:
print(‘该书籍不存在’)
print()
print(‘删除结束’)
time.sleep(2)
# 作者删除
if u == 2:
books_copy = copy.deepcopy(books)
author = input(‘请输入作者:’)
print()
j = 0
for i in books:
if i[1] == author:
j = 1
print(‘删除书籍信息:\t书名:’, i[0], ‘作者:’, i[1], ‘价格:’, i[2])
books_copy.remove(i)
books = books_copy
if j == 0:
print(‘该书籍不存在’)
print()
print(‘删除结束’)
time.sleep(2)
# 价格删除
if u == 3:
print(‘请输入价格区间:’)
price_qj = input(“输入区间值:”)
m, n = map(int, price_qj.split())
print(‘价格区间为:[%d,%d]’ % (m, n))
books_copy = copy.deepcopy(books)
print()
j = 0
for i in books:
if m <= i[2] <= n:
j = 1
print(‘书名:’, i[0], ‘作者:’, i[1], ‘价格:’, i[2])
books_copy.remove(i)
books = books_copy
if j == 0:
print(‘该书籍不存在!’)
print('查找结束!')
time.sleep(2)
#修改书籍
def book_alter():
bookname = input(‘请输入您要修改书籍的书名:’)
author = input(‘请输入您要修改书籍的作者:’)
price = int(input(‘请输入您要修改书籍的价格:’))
# 修改操作 .remove() .append()
if [bookname, author, price] in books:
books.remove([bookname, author, price])
bookname = input('请输入修改书籍的书名:')
author = input('请输入修改书籍的作者:')
price = int(input('请输入修改书籍的价格:'))
books.append([bookname, author, price])
print('修改书籍成功!')
else:
print('该书籍不存在!')
time.sleep(2)
#查找书籍
#选择查找方式:1.根据书名 2.根据作者 3.根据价格区间
def book_find_one():
time.sleep(1)
print(‘1.书名查找 2.作者查找 3.价格查找’)
time.sleep(0.6)
k = int(input(‘请输入你的查找方式:’))
# 书名查找
if k == 1:
bookname = input(‘请输入书名:’)
print()
j = 0
for i in books:
if i[0] == bookname:
j = 1
print(‘书名:’, i[0], ‘作者:’, i[1], ‘价格:’, i[2])
if j == 0:
print(‘该书籍不存在!’)
print('查找结束!')
time.sleep(2)
# 作者查找
if k == 2:
author = input('请输入作者:')
print()
j = 0
for i in books:
if i[1] == author:
j = 1
print('书名:', i[0], '作者:', i[1], '价格:', i[2])
if j == 0:
print('该书籍不存在!')
print('查找结束!')
time.sleep(2)
# 价格区间查找 m < n
if k == 3:
print('请输入价格区间:')
price_qj = input("输入区间值:")
m, n = map(int, price_qj.split())
print('价格区间为:[%d,%d]' % (m, n))
print()
j = 0
for i in books:
if m <= i[2] <= n:
j = 1
print('书名:', i[0], '作者:', i[1], '价格:', i[2])
if j == 0:
print('该书籍不存在!')
print('查找结束!')
time.sleep(2)
#查看所有书籍
def book_find_all():
print(’\t书名:\t\t’.ljust(22), ‘作者:\t\t’.ljust(22), ‘价格:\n’.ljust(22))
for i in books:
print(i[0].ljust(22), '\t\t', i[1].ljust(22), '\t\t', i[2])
print()
time.sleep(2)
#借阅书籍
def book_borrow():
bookname = input(‘请输入借阅的书籍:’)
author = input(‘请输入借阅书籍的作者:’)
price = int(input(‘请输入借阅书籍的价格:’))
# 借阅操作 .remove() .append()
if [bookname, author, price] in books:
books.remove([bookname, author, price])
borrow_books.append([bookname, author, price])
print(‘借阅成功!’)
print(‘您借阅的书籍:’, borrow_books)
else:
print(‘该书不存在!’)
time.sleep(2)
#归还书籍
def book_back():
bookname = input(‘请输入归还的书籍:’)
author = input(‘请输入归还书籍的作者:’)
price = int(input(‘请输入归还书籍的价格:’))
# 归还操作 .append()
if [bookname, author, price] in borrow_books:
books.append([bookname, author, price])
borrow_books.remove([bookname, author, price])
print(‘归还成功!’)
else:
print(‘该书不存在!’)
time.sleep(2)
#查看借阅书籍
def book_find_borrow():
print(’\t书名:\t\t\t’, ‘作者:\t\t\t’, ‘价格:’)
for i in borrow_books:
print(i[0], '\t\t\t', i[1], '\t\t\t', i[2])
print()
time.sleep(2)
if name == ‘main’:
main()