Python实现图书信息管理系统,从零开始用flask+vue做一个前后端分离的案例
手把手教你制作图书信息管理系统,文章末尾还有视频教程
话不多说 马上开始
用户注册
def logon():
print("欢迎来到图书管理系统注册页面~")
username = input("请输入用户名:")
if len(username)<6:
print("用户名不能小于6个字符")
else:
email = input("请输入邮箱:")
password = input("请输入密码:")
if len(password)<8:
print("密码不能少于8位")
else:
rpassword = input("请确认密码:")
if password ==rpassword:
print("注册成功!")
# 函数调用,每追加一列数据都进行换行 每个数据之间都有空格
preserve_data(path,[username,' '+ email,' '+ password + '\n'])
login_tips = input('是否登录?(yes/no)')
if login_tips =='yes':
login()
else:
pass
return True
else:
print("两次输入的密码不一致,请重新输入!")
# 递归调用
logon()
保存数据到文件
path = r'/Users/mozili/PYTHONWORKSPACE/bookManage/user.txt'
python学习交流Q群:770699889 ###
def preserve_data(file_path,data):
# 将字符串转换为bytes,因为write写入的是字节流,不能是字符串 当为w时需要解码
# data = data.encode()
# 打开文件,追加数据到文件
with open(file_path,'a') as wstream:
# 判断是否可写
if wstream.writable():
wstream.writelines(data)
else:
print("没有权限!")
用户登录
python学习交流Q群:770699889 ###
def login():
print("欢迎来到图书管理系统登录页面~")
tips = input("是否已经注册?(yes/no)")
if tips =='yes':
while True:
username = input("输入用户名:")
password = input("输入密码:")
# 读取文件时可能会出现找不到文件的异常,因此使用try except
try:
# 读取文件中的内容
with open(path, 'rb') as stream:
# 读取多行保存到列表中,列表中保存的是二进制,字节
result = stream.readlines()
# print(result)
# 列表推导式,循环遍历列表,将字节解码为字符串放在一个新列表uesr_list
uesr_list = [i.decode() for i in result]
# print(uesr_list)
# 循环遍历列表,检查输入的用户名和密码是否在字符串中
for i in uesr_list:
info = i.split(' ')
# print(info)
if username == info[0] and password == info[2].rstrip('\r\n'):
print("登录成功")
operate(book_path,username)
break
else:
raise Exception("用户名或密码错误,请重新输入!")
except Exception as err:
print(err)
# 没有异常时执行else语句
else:
break
else:
print("您还未注册,请先注册后再登录!")
# 递归
logon()
查询图书
def find_books(path):
try:
with open(path, 'r') as rstream:
# readlines读到的内容是一个列表
container = rstream.readlines()
# 通过列表推导式得到新的列表,即每个元素去掉后面的换行符号
new_container = [books_name.rstrip('\n') for books_name in container]
for b_name in new_container:
# 打印图书+《》
print("《{}》".format(b_name))
except Exception as err:
print("错误原因:",err)
添加图书
def add_book(b_path,username):
# 添加前首先判断是否是管理员
permission(b_path, username)
# 追加图书 不能是w ,否则会清空之前的内容
with open(b_path, 'a') as wstream:
# 判断是否可写
if wstream.writable:
msg = input("请输入书名:")
try:
# 添加书籍之前判断某本书是否已经添加
with open(b_path) as rstream:
while True:
line