图书管理系统(python)

图书管理系统

    • 一、 研究背景
    • 二、 功能模块概述
    • 三、 总体框架图
    • 四、完整代码

一、 研究背景

图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用Python语言制作程序来实现增加图书信息、修改图书信息、查询图书信息、删除图书信息、用户登陆、用户注册、图书借阅情况查询、导出图书信息等功能。程序中涉及到列表、字典、文件流的操作和面向对象的思想,包括图书对象定义、用户对象定义、文件的读写及列表存储图书对象。

二、 功能模块概述

  1. 用户登陆:查询用户信息列表,判断用户是否注册且账户密码正确,判断用户身份(普通用户和管理员(默认账号为110))。
  2. 用户注册:创建People类对象,将该对象存入用户信息列表。
  3. 图书信息增加:创建Book类对象,将该对象存入图书信息列表。
  4. 图书信息修改:遍历图书信息列表,找出要修改对象,进行相关信息修改并保存修改后的信息。
  5. 图书信息删除:遍历图书信息列表,找出删除对象,进行相关信息删除并保存删除后的图书信息列表。
  6. 图书信息导出:将图书信息列表以txt文件格式导出。
  7. 图书信息查询:遍历图书信息列表,输入查询图书对象名称,显示该图书对象信息。
  8. 借阅情况查询:遍历图书信息列表,查询已借阅和未借阅图书信息及数量,显示查询结果。
  9. 显示图书信息:遍历图书信息列表,显示所有图书信息。
  10. 用户退出登陆:用户账户退出登陆,返回登陆界面。
  11. 图书建购:用户向图书馆提出建购图书名称、作者及建购原因,存入申请列表。
  12. 展示用户建议:管理员遍历申请列表,展示用户的图书建购信息。

三、 总体框架图

四、完整代码



class Book:
    def __init__(self, name, author, status, index):
        self.name = name
        self.author = author
        self.status = status
        self.index = index

    def __str__(self):
        return f'{self.name},{self.author},{self.status},{self.index}'


class People:
    def __init__(self, name, password):
        self.name = name
        self.password = password

    def __str__(self):
        return f'{self.name},{self.password},{self.mode}'


class PeopleManage:
    def __init__(self):
        self.people_list = []

    def menu(self):
        print("请选择如下功能------------")
        print("1:登陆")
        print("2:注册")
        number = int(input("输入序号:"))

        if number == 1:
            self.login()
        elif number == 2:
            self.register()
        else:
            print("输入错误,请重新输入!")
            print("\n")
            self.menu()

    def login(self):
        print('用户登陆')
        name = input('账号:')
        password = input('密码:')
        if not self.people_list:

            print("恭喜你成为本系统第一个用户")
            print("\n")
            self.register()
        else:
            for i in self.people_list:
                if name == i.name and password == i.password:
                    print('登陆成功!')
                    print("\n")
                    book = BookManagers()
                    if i.name == '110':##默认管理员账号为110
                        print("欢迎管理员登陆!")
                        book.run(1)
                    else:
                        print("欢迎用户登陆!")
                        book.run(0)
                elif name == i.name or password == i.password:
                    print("用户名或密码输入错误")
                    print("\n")
                    self.login()
                else:
                    print('该用户未注册!')
                    print("\n")
                    self.register()

    def register(self):
        print('用户注册')
        name = input('账号:')
        password = input('密码:')
        peoples = People(name, password)
        self.people_list.append(peoples)
        print('注册成功!')
        print("\n")
        self.login()


class BookManagers:
    def __init__(self):
        self.book_list = []  # 建立一个存储数据用的列表
        self.apply = []  # 图书建购表

    def run(self, number):  # 程序入口函数
        if number == 1:
            while True:
                self.show_menu()  # 显示功能菜单
                menun_num = int(input("请输入您需要的功能序号:"))  # 用户输入功能序号

                # 根据输入的序号,执行不同的功能
                if menun_num == 1:  # 添加图书
                    self.add_book()
                    self.save_book()
                elif menun_num == 2:  # 查询图书信息
                    self.search_book()
                elif menun_num == 3:  # 显示所有图书信息
                    self.show_book()
                elif menun_num == 4:  # 保存图书信息
                    self.save_book()
                elif menun_num == 5:  # 删除图书信息
                    self.del_book()
                    self.save_book()
                elif menun_num == 6:  # 修改图书信息
                    self.modify_book()
                    self.save_book()
                elif menun_num == 7:  # 统计借出
                    self.data_statistic()
                elif menun_num == 8:
                    self.show_apply()
                elif menun_num == 9:  # 退出登陆
                    peoples = PeopleManage()
                    peoples.menu()
        else:
            while True:
                self.show_menu1()
                menun_num = int(input("请输入您需要的功能序号:"))  # 用户输入功能序号

                # 根据输入的序号,执行不同的功能
                if menun_num == 1:  # 查询图书信息
                    self.search_book()
                elif menun_num == 2:  # 显示所有图书信息
                    self.show_book()
                elif menun_num == 3:
                    self.buy_book()  # 图书建购
                elif menun_num == 4:  # 退出系统
                    peoples = PeopleManage()
                    peoples.menu()

    # 定义功能函数

    def show_menu(self):  # 显示功能菜单
        print("请选择如下功能------------")
        print("1:添加书籍")
        print("2:查询书籍信息")
        print("3:显示所有书籍")
        print("4:导出书籍信息")
        print("5:信息删除书籍")
        print("6:修改书籍信息")
        print("7:统计借出")
        print("8:展示建议")
        print("9:退出登陆")

    def show_menu1(self):  # 显示功能菜单
        print("请选择如下功能------------")
        print("1:查询书籍信息")
        print("2:显示所有书籍")
        print("3:图书建购")
        print("4:退出登陆")

    def add_book(self):  # 添加图书

        # 用户输⼊图书名称、作者、状态、编码
        name = input("请输入书籍名称:")
        author = input("请输入书籍作者:")
        status = input("请输入书籍状态:")
        index = input("请输入书籍编码:")

        book = Book(name, author, status, index)  # 创建图书对象
        self.book_list.append(book)  # 将该图书对象添加到列表

        print(self.book_list)  # 打印信息
        print(book)  # 打印信息

    def del_book(self):  # 删除图书
        del_name = input('请输⼊要删除的书籍名称:')  # 用户输入目标图书名

        # 如果用户输入的目标存在则删除,否则提示目标不存在
        for i in self.book_list:  # 遍历图书信息列表
            if i.name == del_name:  # 查找图书是否存在
                self.book_list.remove(i)  # 删除图书信息
                print("成功删除该图书信息!")
                print("\n")
                break
        else:
            print("查无此书!")
            print("\n")

        print(self.book_list)  # 打印图书列表,验证删除功能

    def modify_book(self):  # 修改图书信息
        modify_name = input('请输⼊要修改的书籍名称:')  # 用户输入目标名称

        # 如果用户输入的目标存在,则修改信息,否则提示图书不存在
        for i in self.book_list:  # 遍历图书信息列表
            if i.name == modify_name:  # 查找图书是否存在
                # 更改学员信息
                i.name = input('请输⼊书籍名称:')
                i.author = input('请输⼊书籍作者:')
                i.status = input('请输⼊书籍状态:')
                i.index = input('请输入书籍编码:')
                print("成功修改该图书信息!")
                print(
                    f'书籍:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')  # 打印图书信息,验证是否更改成功
                print("\n")
                break
        else:
            print('查无此书!')
            print("\n")

    def search_book(self):  # 查询图书信息
        search_name = input('请输⼊要查询的书籍名称:')  # 用户输入目标图书名
        # 如果用户输入的目标存在,则打印目标信息,否则提示目标不存在
        for i in self.book_list:  # 遍历目标信息列表
            if i.name == search_name:  # 查找目标图书是否存在
                print(
                    f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
                print("\n")
                break
        else:
            print('查无此书!')
            print("\n")

    def show_book(self):  # 显示所有图书信息
        print('姓名\t作者\t\t状态\t编码')  # 打印信息名称
        for i in self.book_list:  # 遍历信息列表
            print(f'{i.name}\t{i.author}\t\t{i.status}\t\t{i.index}')  # 打印图书信息
            print("\n")

    def save_book(self):  # 导出图书信息
        f = open('book.txt', 'w', encoding='utf-8')  # 打开文件
        new_list = [i.__dict__ for i in self.book_list]  # 将图书数据转换成列表字典数据
        print(new_list)  # 打印信息
        f.write(str(new_list))  # 转换成字符串,存入文档
        f.close()  # 关闭文件

    def data_statistic(self):  # 统计图书借出状态
        yes = no = 0
        for i in self.book_list:
            if i.status == '借出':
                yes += 1
            else:
                no += 1
        print("已借出图书{}册:".format(yes))
        for i in self.book_list:
            if i.status == '借出':
                print(f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
                print("\n")
        print("未借出图书{}册:".format(no))
        for i in self.book_list:
            if i.status == '未借出':
                print(f'书籍名:{i.name}, 作者:{i.author}, 状态:{i.status}, 编码:{i.index}')
                print("\n")

    def buy_book(self):  # 读者建购图书
        name = input("请输入书籍名称:")
        author = input("请输入书籍作者:")
        reason = input("建购原因:")
        self.apply.append(['图书名称:{},作者:{},建购原因:{}'.format(name, author, reason)])
        f = open('apply.txt', 'w', encoding='utf-8')  # 打开文件
        f.write(str(self.apply))  # 转换成字符串,存入文档
        f.close()  # 关闭文件

    def show_apply(self):  # 展示读者建购表
        f = open('apply.txt', 'r', encoding='utf-8')  # 打开文件
        data=f.read()
        print(data)
        print("\n")
        f.close()  # 关闭文件


if __name__=='__main__':

    people = PeopleManage()
    people.menu()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年5月11日
下一篇 2023年5月11日

相关推荐