图书管理系统
"""
------图书管理系统------
1.首先要求学生登录或者注册(1.登录 2.注册),
2.注册: 输入用户名和密码,确认密码 则注册成功
3.登录:输入用户名和密码,如果匹配正确则登录成功,否则失败
4.登录成功 可以1.借书 2.还书 3. 修改密码 4.退出,否则只能查看图书
5.借书:输入书名 必须在books列表中存在的才可以借,如果借书成功,books中对应的number要减少1(注意不可以借阅同名书籍)
6.还书:输入书名,必须在你的所借书籍中存在,才可以还书成功!还书成功,对应books中的number要加1
7.修改密码:输入原有的密码,如果输入正确才可以,更新自己的登录密码
books.txt
《活着》 0
《骆驼祥子》 28
《巴黎圣母院》 0
《白夜行》 49
《告白》 70
《耶路撒冷三千年》 10
《万历十五年》 23
《我是猫》 28
---------------------------------------------------------------
lend_books_register.txt
panbijin 《活着》
panbijin 《我是猫》
---------------------------------------------------------------
student.txt
panbijin:123
"""
def register():
user_name = input("请输入注册用户名:")
password = input("请输入用户密码:")
repeat_password = input("请确认用户密码:")
user_name_exits = False
with open(r"C:\Users\86132\Desktop\图书管理系统\student.txt", "r", encoding="utf-8") as f:
while True:
readlines = f.readline()
if user_name in readlines:
print("此用户名已经存在")
break
if not readlines:
break
if repeat_password == password:
with open(r"C:/Users/86132/Desktop/图书管理系统/student.txt", "a", encoding="utf-8") as f:
f.write(f"{user_name}:{password}\n")
print('用户注册成功!')
else:
print('密码不一致!')
def login():
user_name = input("请输入用户名:")
password = input("请输入密码:")
if user_name and password:
with open(r"C:/Users/86132/Desktop/图书管理系统/student.txt", "r", encoding="utf-8") as f:
while True:
readlines = f.readline()
input_user = f'{user_name}:{password}\n'
if readlines == input_user:
print('用户登录成功!')
return user_name
if not readlines:
print('登录失败!用户名或密码错误')
return False
def login_request(func):
def wrapper(*args, **kwargs):
global user_name
if user_name:
func(*args, **kwargs)
else:
print("没有登录,请登录")
print('登录状态:', user_name)
return wrapper
def show_books():
print('---------图书馆里面的图书有:----------')
with open(r"C:\Users\86132\Desktop\图书管理系统\books.txt", "r", encoding="utf-8") as f:
print("书名", "数量")
readline = f.readlines()
for book in readline:
print(book, end="")
print("")
@login_request
def lend_books(user_name):
to_lend = '《' + input('要借的书名') + '》'
tm = False
not_exist = True
book_i = 0
book_find = False
booksbuffer = []
with open(r'C:/Users/86132/Desktop/图书管理系统/books.txt', 'r', encoding='utf-8') as f:
books = f.readlines()
for i, book in enumerate(books):
if to_lend in book:
print('查找到该书!')
book_i = i
book_find = True
break
if book_find == False:
print('不存在这本书!')
return False
booksbuffer = books
if int(booksbuffer[book_i].split(' ')[1]) > 0:
with open(r'C:/Users/86132/Desktop/图书管理系统/lend_books_register.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
for i, line in enumerate(lines):
if user_name in line:
book_exist = False
user_line = i
if to_lend in line:
tm = True
print('不可以借阅同名书籍')
if not_exist == False:
lines[user_line] = lines[user_line].rsplit('\n')[0] + ',' + to_lend + '\n'
if tm == False:
with open(r'C:\Users\86132\Desktop\图书管理系统\lend_books_register.txt', 'w', encoding='utf-8') as f:
for i in lines:
f.write(i)
print('借书成功')
else:
msg = user_name + ' ' + to_lend + '\n'
with open(r'C:\Users\86132\Desktop\图书管理系统\lend_books_register.txt', 'a', encoding='utf-8') as f:
f.write(msg)
print('借书成功')
if tm == False:
booksbuffer[book_i] = booksbuffer[book_i].split(' ')[0] + ' ' + str(int(booksbuffer[book_i].split(' ')[1]) - 1) + '\n'
with open('C:/Users/86132/Desktop/图书管理系统/books.txt', 'w', encoding='utf-8') as f:
for i in booksbuffer:
f.write(i)
else:
print('该书已借完')
@login_request
def return_books(user_name):
to_return = '《' + input('要还的书名') + '》'
user_find = False
book_i = 0
book_find = False
userbuffer = []
with open(r'C:\Users\86132\Desktop\图书管理系统\lend_books_register.txt', 'r', encoding='utf-8') as f:
users = f.readlines()
for i, user in enumerate(users):
if user_name in user:
user_find = True
tmp = user.split(' ')[1].split(',')
msg = user_name + ' '
tmp_list = []
for i in tmp:
if i != to_return:
tmp_list.append(i)
msg = msg + ','.join(tmp_list)
userbuffer.append(msg)
continue
userbuffer.append(user)
if user_find == False:
print('不存在这本书!')
return False
else:
with open(r'C:\Users\86132\Desktop\图书管理系统\lend_books_register.txt', 'w', encoding='utf-8') as f:
for i in userbuffer:
f.write(i)
with open('C:/Users/86132/Desktop/图书管理系统/books.txt', 'r', encoding='utf-8') as f:
books = f.readlines()
for i, book in enumerate(books):
if to_return in book:
book_i = i
book_find = True
if book_find:
books[book_i] = books[book_i].split(' ')[0] + ' ' + str(int(books[book_i].split(' ')[1]) + 1) + '\n'
with open('C:/Users/86132/Desktop/图书管理系统/books.txt', 'w', encoding='utf-8') as f:
for i in books:
f.write(i)
print('还书成功!')
else:
print('该书在书架中不存在!')
@login_request
def mod_pwd(user_name):
pwd_i = 0
pwd_check = False
password = input('输入原密码:')
with open('C:/Users/86132/Desktop/图书管理系统/student.txt', 'r', encoding='utf-8') as f:
pwds = f.readlines()
for i, pwd in enumerate(pwds):
if password in pwd:
new_pwd = input('输入新密码:')
pwd_i = i
pwd_check = True
break
else:
print('请输入正确的密码')
if pwd_check:
pwds[pwd_i] = user_name + ' ' + new_pwd + '\n'
with open('Users.txt', 'w', encoding='utf-8') as f:
for i in pwds:
f.write(i)
print('修改密码成功')
@login_request
def logout():
global user_name
user_name = False
print('已退出登录')
user_name = False
while 1:
try:
LR = int(input('-----1.登录 2.注册 3.看书 4.借书 5.还书 6.修改密码 7.退出登录-------'))
if LR == 1:
user_name = login()
print('登录:', user_name)
elif LR == 2:
register()
elif LR == 3:
show_books()
elif LR == 4:
lend_books(user_name)
elif LR == 5:
return_books(user_name)
elif LR == 6:
mod_pwd(user_name)
elif LR == 7:
logout()
elif LR == -1:
break
else:
print('请检查输入')
except:
print('请输入数字!')