图书馆实现的功能:
1,学生用户需要注册账号后登陆,而管理员可以直接登陆
2,管理员可以增,删,查,改图书
3,学生用户,可以查询,借阅和归还图书
class Book:
def __init__( self, name, author ):
self.isbn = None
self.name = name
self.author = author
self.state = None
def __repr__( self ):
return "isbn: " + str( self.isbn ) + ", 书名: " + self.name + ", 作者: " + self.author + ", 状态: " + self.state
class Library:
def __init__( self ):
self.books = []
self.max_isbn = 0
self.students = []
def generate_isbn_for_new_book( self ):
self.max_isbn += 1
isbn = self.max_isbn
return isbn
class User:
def query_all_book( self ):
for item in lib.books:
print( item )
class Admin( User ):
def __init__( self, name, password ):
self.name = name
self.password = password
def add_book( self, book ):
book.isbn = lib.generate_isbn_for_new_book()
book.state = "可借"
lib.books.append( book )
def delete_book( self, isbn ):
for i in range( len( lib.books ) ):
if str( lib.books[i].isbn ) == isbn:
del lib.books[i]
return True
return False
def login( self ):
# 静态密码和用户名
if self.name == "admin" and self.password == "admin":
return True
return False
class Student( User ):
def __init__( self, name, password ):
self.name = name
self.password = password
self.borrowed_book_list = []
def borrow_book( self, isbn ):
for item in lib.books:
if str( item.isbn ) == isbn and item.state == "可借":
item.state = "已借"
self.borrowed_book_list.append( isbn )
return True
return False
def query_borrowd_book( self ):
for isbn in self.borrowed_book_list:
for book in lib.books:
if str( isbn ) == str( book.isbn ):
print( book )
def return_book( self, isbn ):
for item in lib.books:
if str( item.isbn ) == isbn and item.state == "已借" and isbn in self.borrowed_book_list:
item.state = "可借"
self.borrowed_book_list.remove( isbn )
return True
return False
def login( self ):
for stu in lib.students:
if stu.name == self.name and stu.password == self.password:
return True
return False
def register( self ):
for stu in lib.students:
if stu.name == self.name:
return False
lib.students.append( self )
return True
lib = Library()
def admin_function_menu( admin ):
while True:
e = input( "\n1.添加书籍. 2.查看书籍. 3.删除书籍. 4.退出系统. \n请输入你的选择:" )
if e == "1":
name = input( ">>> 输入书名: " )
author = input( ">>> 输入作者: " )
number = input( ">>> 输入数量: " )
try:
number = int( number )
for i in range( number ):
b = Book( name, author )
admin.add_book( b )
print( " ~^_^~ 书籍添加成功." )
except ValueError:
print( "警告: ~_~' 你输入了非法数量,添加失败 !!!" )
elif e == "2":
admin.query_all_book()
elif e == "3":
isbn = input( "\n输入你要删除的书籍的 isbn 编号: " )
if admin.delete_book( isbn ):
print( "~^_^~ 删除书籍成功" )
else:
print( "T_T 删除书籍失败" )
elif e == "4":
return
else:
print( "T_T 非法输入." )
def admin_menu():
name = input( ">>> 输入管理员姓名: " )
password = input( ">>> 输入管理员姓名: " )
admin = Admin( name, password )
if admin.login():
print( "===== 登陆成功 =====\n" )
admin_function_menu( admin )
else:
print( "===== 用户名或密码错误 =====\n" )
def student_function_menu( student ):
print( "\n========== ~^_^~ 欢迎进入学生功能 ~^_^~ ===========" )
while True:
choice = input( "\n1.查阅图书馆书籍. 2.查看自己所借书籍. 3.还书. 4.借书. 5.退出系统. \n输入你的选择: " )
if choice == "1":
student.query_all_book()
elif choice == "2":
print( "以下是你所借阅的所有书籍." )
student.query_borrowd_book()
elif choice == "3":
isbn = input( "\n输入你要归还的书籍的 isbn 编号:" )
if student.return_book( isbn ):
print( "~^_^~ 归还成功." )
else:
print( "T_T 归还失败,无该书,或不是你本人所借,或者该书尚未被借阅." )
elif choice == "4":
isbn = input( "\n输入你要借阅的书籍的 isbn 编号:" )
if student.borrow_book( isbn ):
print( "~^_^~ 借阅成功." )
else:
print( "T_T 借阅失败,无该书,或已被借阅." )
elif choice == "5":
return
else:
print( "T_T 非法输入." )
def student_menu():
print( "\n========== ~^_^~ 欢迎进入学生入口 ~^_^~ ===========" )
while True:
choice = input( "\n1.学生登陆(已有账号), 2.学生注册(尚无账号). 3.退出学生入口. \n输入你的选择: " )
if choice == "1":
name = input( ">>> 输入姓名: " )
password = input( ">>> 输入密码: " )
s = Student( name, password )
if s.login():
print( "===== ~^_^~ 账号登陆成功. ======" )
student_function_menu( s )
else:
print( "===== T_T 账号登陆失败. =======" )
elif choice == "2":
name = input( ">>> 输入姓名: " )
password = input( ">>> 输入密码: " )
s = Student( name, password )
if s.register():
print( "===== ~^_^~ 注册账号成功. ======" )
else:
print( "===== T_T 注册账号失败: 用户名重复. ======" )
elif choice == "3":
return
else:
print( "T_T 非法输入." )
def main():
while True:
print( "\n======= O(@_@)O 欢迎使用图书管理系统 ~^_^~ =======" )
e = input( "\n1.管理员入口. 2.学生入口. 3.退出系统. \n输入你的选择: " )
if e == "1":
admin_menu()
elif e == "2":
student_menu()
elif e == "3":
print( "欢迎再次使用 ~ ^_^ ~" )
return
else:
print( "T_T 非法输入." )
main()