用python编写一个系统登录注册(默认管理员账号为admin,密码为root),管理员可进行以下操作 1 添加学生账户 2) 显示所有学生账户 3) 删除学生账户 4) 修改学生账户为黑名单 3. 登录成功进行图书管理系统(提示用户如下) 您已进入图书管理系统,请选择以下操作 1.查询图书(默认存在3本图书,书名自定义) 2.增加图书(书名相同无法新增,所以用户均可操作) 3.删除图书(仅限管理员操作) 3.借阅图书 1.图书不存在或已借出,则无法借阅 2.黑名单用户无法借阅 4.归还图书 5.退出系统
时间: 2024-03-07 16:49:58 浏览: 177
python搭建一个图书管理系统
好的,这是一个相对复杂的问题,需要一步步实现。首先,我们需要实现登录注册的功能。在这里,我们采用文件存储用户信息的方式,将用户信息存储在一个文本文件中。代码如下:
```python
import hashlib
# 定义用户类
class User:
def __init__(self, username, password, is_admin=False, is_black=False):
self.username = username
self.password = password
self.is_admin = is_admin
self.is_black = is_black
# 定义用户管理类
class UserManager:
def __init__(self, file_name):
self.file_name = file_name
# 注册用户
def register(self, username, password):
users = self.get_users()
for user in users:
if user.username == username:
return False, '用户名已存在'
user = User(username, self._encrypt(password))
users.append(user)
self._save_users(users)
return True, '注册成功'
# 登录
def login(self, username, password):
users = self.get_users()
for user in users:
if user.username == username and user.password == self._encrypt(password):
return True, user.is_admin, user.is_black
return False, False, False
# 获取所有用户
def get_users(self):
try:
with open(self.file_name, 'r') as f:
lines = f.readlines()
users = []
for line in lines:
username, password, is_admin, is_black = line.strip().split(',')
user = User(username, password, is_admin == 'True', is_black == 'True')
users.append(user)
return users
except FileNotFoundError:
return []
# 保存用户信息到文件
def _save_users(self, users):
with open(self.file_name, 'w') as f:
for user in users:
f.write(f"{user.username},{user.password},{user.is_admin},{user.is_black}\n")
# 加密密码
def _encrypt(self, password):
return hashlib.md5(password.encode('utf-8')).hexdigest()
```
在这里,我们定义了一个用户类和一个用户管理类,用户类主要存储用户的信息,用户管理类主要实现注册、登录、获取用户信息和保存用户信息的功能。其中,我们使用了 hashlib 库对用户密码进行了加密处理。
接下来,我们需要实现管理员的功能。管理员可以添加学生账户、显示所有学生账户、删除学生账户和将学生账户加入黑名单。代码如下:
```python
# 定义学生类
class Student:
def __init__(self, name):
self.name = name
self.is_black = False
# 定义学生管理类
class StudentManager:
def __init__(self, file_name):
self.file_name = file_name
# 添加学生
def add_student(self, name):
students = self.get_students()
for student in students:
if student.name == name:
return False, '学生已存在'
student = Student(name)
students.append(student)
self._save_students(students)
return True, '添加成功'
# 显示所有学生
def show_students(self):
students = self.get_students()
if not students:
return '无学生信息'
return '\n'.join([f"姓名:{student.name},状态:{'黑名单' if student.is_black else '正常'}" for student in students])
# 删除学生
def del_student(self, name):
students = self.get_students()
for student in students:
if student.name == name:
students.remove(student)
self._save_students(students)
return True, '删除成功'
return False, '学生不存在'
# 加入黑名单
def add_to_black(self, name):
students = self.get_students()
for student in students:
if student.name == name:
student.is_black = True
self._save_students(students)
return True, '加入黑名单成功'
return False, '学生不存在'
# 获取所有学生
def get_students(self):
try:
with open(self.file_name, 'r') as f:
lines = f.readlines()
students = []
for line in lines:
name, is_black = line.strip().split(',')
student = Student(name)
student.is_black = is_black == 'True'
students.append(student)
return students
except FileNotFoundError:
return []
# 保存学生信息到文件
def _save_students(self, students):
with open(self.file_name, 'w') as f:
for student in students:
f.write(f"{student.name},{student.is_black}\n")
```
在这里,我们定义了一个学生类和一个学生管理类,学生类主要存储学生的信息,学生管理类主要实现添加学生、显示所有学生、删除学生和将学生加入黑名单的功能。
最后,我们需要实现一个图书管理系统。在这个图书管理系统中,用户可以查询图书、增加图书、删除图书、借阅图书和归还图书。管理员可以删除图书。代码如下:
```python
# 定义图书类
class Book:
def __init__(self, name):
self.name = name
self.is_borrowed = False
# 定义图书管理类
class BookManager:
def __init__(self, file_name):
self.file_name = file_name
# 查询图书
def query_book(self, name):
books = self.get_books()
for book in books:
if book.name == name:
return not book.is_borrowed
return False
# 增加图书
def add_book(self, name):
books = self.get_books()
for book in books:
if book.name == name:
return False, '图书已存在'
book = Book(name)
books.append(book)
self._save_books(books)
return True, '添加成功'
# 删除图书
def del_book(self, name):
books = self.get_books()
for book in books:
if book.name == name:
if book.is_borrowed:
return False, '图书已被借出,无法删除'
books.remove(book)
self._save_books(books)
return True, '删除成功'
return False, '图书不存在'
# 借阅图书
def borrow_book(self, name, is_black):
books = self.get_books()
for book in books:
if book.name == name:
if book.is_borrowed:
return False, '图书已被借出'
if is_black:
return False, '黑名单用户无法借阅'
book.is_borrowed = True
self._save_books(books)
return True, '借阅成功'
return False, '图书不存在'
# 归还图书
def return_book(self, name):
books = self.get_books()
for book in books:
if book.name == name:
if not book.is_borrowed:
return False, '图书未被借出'
book.is_borrowed = False
self._save_books(books)
return True, '归还成功'
return False, '图书不存在'
# 获取所有图书
def get_books(self):
try:
with open(self.file_name, 'r') as f:
lines = f.readlines()
books = []
for line in lines:
name, is_borrowed = line.strip().split(',')
book = Book(name)
book.is_borrowed = is_borrowed == 'True'
books.append(book)
return books
except FileNotFoundError:
return []
# 保存图书信息到文件
def _save_books(self, books):
with open(self.file_name, 'w') as f:
for book in books:
f.write(f"{book.name},{book.is_borrowed}\n")
```
在这里,我们定义了一个图书类和一个图书管理类,图书类主要存储图书的信息,图书管理类主要实现查询图书、增加图书、删除图书、借阅图书和归还图书的功能。
最后,我们需要实现一个程序入口,让用户进行登录、注册和进入图书管理系统。代码如下:
```python
def main():
# 初始化用户管理器和学生管理器
user_manager = UserManager('users.txt')
student_manager = StudentManager('students.txt')
book_manager = BookManager('books.txt')
# 登录或注册
while True:
choice = input('请选择:\n1.登录\n2.注册\n')
if choice == '1':
username = input('请输入用户名:')
password = input('请输入密码:')
success, is_admin, is_black = user_manager.login(username, password)
if success:
if is_black:
print('您已被加入黑名单,无法登录')
else:
print('登录成功')
break
else:
print('用户名或密码错误')
elif choice == '2':
username = input('请输入用户名:')
password = input('请输入密码:')
success, message = user_manager.register(username, password)
if success:
print('注册成功')
else:
print(message)
else:
print('输入错误,请重新输入')
# 进入图书管理系统
while True:
print('您已进入图书管理系统,请选择以下操作:')
print('1.查询图书')
print('2.增加图书')
print('3.删除图书')
print('4.借阅图书')
print('5.归还图书')
print('6.退出系统')
if is_admin:
print('7.删除学生')
print('8.添加学生')
print('9.显示所有学生')
print('10.将学生加入黑名单')
choice = input('请选择:')
if choice == '1':
name = input('请输入图书名称:')
if book_manager.query_book(name):
print('该图书未被借出')
else:
print('该图书已被借出')
elif choice == '2':
name = input('请输入图书名称:')
success, message = book_manager.add_book(name)
if success:
print('添加成功')
else:
print(message)
elif choice == '3':
name = input('请输入图书名称:')
success, message = book_manager.del_book(name)
if success:
print('删除成功')
else:
print(message)
elif choice == '4':
name = input('请输入图书名称:')
success, message = book_manager.borrow_book(name, is_black)
if success:
print('借阅成功')
else:
print(message)
elif choice == '5':
name = input('请输入图书名称:')
success, message = book_manager.return_book(name)
if success:
print('归还成功')
else:
print(message)
elif choice == '6':
print('感谢使用,再见!')
break
elif choice == '7' and is_admin:
name = input('请输入学生姓名:')
success, message = student_manager.del_student(name)
if success:
print('删除成功')
else:
print(message)
elif choice == '8' and is_admin:
name = input('请输入学生姓名:')
success, message = student_manager.add_student(name)
if success:
print('添加成功')
else:
print(message)
elif choice == '9' and is_admin:
print(student_manager.show_students())
elif choice == '10' and is_admin:
name = input('请输入学生姓名:')
success, message = student_manager.add_to_black(name)
if success:
print('加入黑名单成功')
else:
print(message)
else:
print('输入错误,请重新输入')
```
在程序入口中,我们首先初始化了用户管理器、学生管理器和图书管理器,让用户进行登录或注册。如果登录成功,就进入图书管理系统,让用户选择操作。如果是管理员,还可以进行学生管理。
阅读全文