图书馆---python

图书馆实现的功能:

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值