图书管理系统(二)--用户模块--Python版

本课题要求编写Python程序实现对图书信息录入、图书信息查询、图书借阅等方面的管理。一个综合的图书借阅管理系统,要求能够管理图书的基本信息(包含新图书入库、读者图书查询借阅等),需要实现以下功能:读取以数据文件形式存储的图书信息;管理员可以增加、修改、删除图书的信息;读者可以按照图书名、作者名、索书号等查询图书,并可通过该系统实现对图书的借阅、续借和归还;读者还可查询自己所借图书的信息(是否归还、归还日期等)。

系统内的所有信息必须以文件的方式存储在硬盘中,图书信息文件,存放了图书的索书号、书名、作者、出版社、类别、库存总量、可借本数。格式如下:

O141.4/3-6 数学模型 《数学模型》编写组编 华南理工大学出版社 数学 10 8

T311.5/3-1 Python程序设计 丁亚涛              中国水利水电出版社 计算机 5 3

I247.5/2-3 天龙八部壹(2版) 金庸   广州出版社 文学 3 2

……

2 要求及提示

2.1 基本要求

要能提供以下几个基本功能:

(1)系统内的相关信息文件由程序设计人员预先从键盘上录入,文件中的数据记录不得少于20条;

(2)设计并实现系统的相关界面,提供良好的交互界面;

(3)登录时输入帐号以区分读者和管理员;

(4)读者信息查询:

  1. 图书查询借阅功能:输入一个书名(或索书号、作者等其他信息),查出相关图书的基本信息并显示输出,同时提示是否需要借阅该图书;
  2. “我的”功能:显示个人图书借阅历史,显示所借图书的状态(是否归还、归还日期)、并选择是否归还或续借。

(5)管理端信息查询:

  1. 管理员可以增加、修改、删除图书的信息。
  2. 在完成管理员模块后,我们需要完成用户模块,
    import time
    import random
    import datetime
    
    book_id = []
    book_type = []
    book_name = []
    book_author = []
    book_publisher = []
    book_remind = []
    book_lend = []
    with open('book_data.txt', 'r', encoding='utf-8') as f:
        for lines in f:
            parts = lines.strip().split(',')
            book_id.append(parts[0])
            book_type.append(parts[4])
            book_name.append(parts[1])
            book_author.append(parts[2])
            book_publisher.append(parts[3])
            book_remind.append(parts[5])
            book_lend.append(parts[6])
    
    
    # 图书类型查询
    def user_search_by_type():
        while True:
            print("*l图书类型查询")
            print("1. 文学 2. 数学 3. 计算机4. 医学")
            type_name = input("请输入图书类型:")
            for i in range(len(book_type)):
                if type_name == book_type[i]:
                    print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:",
                          book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i])
                    print("-" * 150)
            print("是否继续查询图书类型?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    def user_search_by_name():
        while True:
            print("图书名称查询")
            name = input("请输入图书名称:")
            for i in range(len(book_name)):
                if name in book_name[i]:
                    print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:",
                          book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i])
                    print("-" * 150)
            print("是否继续查询图书名称?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    def user_search_by_author():
        while True:
            print("图书作者查询")
            author = input("请输入图书作者:")
            for i in range(len(book_author)):
                if author in book_author[i]:
                    print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:",
                          book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i])
                    print("-" * 150)
            print("是否继续查询图书作者?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    def user_search_by_id():
        while True:
            print("图书编号查询")
            id = input("请输入图书编号:")
            for i in range(len(book_id)):
                if id == book_id[i]:
                    print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i], "图书出版社:",
                          book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i])
                    print("-" * 150)
    
    
    # 用户是否借阅图书
    def user_borrow_book():
        while True:
            print("借阅图书")
            id = input("请输入图书编号:")
            for i in range(len(book_id)):
                if id == book_id[i]:
                    # 将库存从字符串转换为整数
                    remind_int = int(book_remind[i]) if book_remind[i].isdigit() else 0
    
                    if remind_int > 0:  # 检查转换后的库存是否足够
                        book_remind[i] = str(remind_int - 1)  # 更新库存为新的字符串值
                        book_lend[i] = str(int(book_lend[i]) - 1)  # 增加借出数量,确保借出数量也是字符串类型
                        print("图书借阅成功!")
                        print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i],
                              "图书出版社:",
                              book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i])
                        print("-" * 150)
                        break
                    else:
                        print("图书借阅失败!图书库存不足!")
                        break
            print("是否继续借阅图书?y/n")
            choice = input()
            if choice == 'n':
                break
            else:
                remind_int = int(book_remind[i]) if book_remind[i].isdigit() else 0
                if remind_int > 0:  # 检查转换后的库存是否足够
                    book_remind[i] = str(remind_int)  # 更新库存为新的字符串值
                    book_lend[i] = str(int(book_lend[i]))  # 增加借出数量,确保借出数量也是字符串类型
                    print("图书续借阅成功!")
                    print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i],
                          "图书出版社:",
                          book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i])
                    print("-" * 150)
                    break
    
    
    
    
    
    
    # 用户是否归还图书
    def user_return_book():
        while True:
            print("归还图书")
            id = input("请输入图书编号:")
            for i in range(len(book_id)):
                if id == book_id[i]:
                    # 将库存从字符串转换为整数
                    lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0
                    if lend_int > 0:  # 检查转换后的借出数量是否足够
                        book_remind[i] = str(int(book_remind[i]) + 1)
                        book_lend[i] = str(int(book_lend[i]) + 1)
                        print("图书归还 成功!")
                        print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i],
                              "图书出版社:",
                              book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i])
                        # 归还后,生成一个归还时间
                        return_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                        print("归还时间:", return_time)
                        print("-" * 150)
                        break
                    else:
                        print("图书归还失败!图书未被借阅!")
                        break
            print("是否继续归还图书?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    # 查看用户借阅状态
    def user_borrow_status():
        while True:
            print("查看借阅状态")
            id = input("请输入图书编号:")
            for i in range(len(book_id)):
                if id == book_id[i]:
                    lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0
                    if lend_int > 0:  # 检查图书是否已被借出
                        print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i],
                              "图书出版社:",
                              book_publisher[i], "图书剩余数量:", book_remind[i], "图书已借数量:", book_lend[i])
                        # 借出状态,生成一个借出时间
                        borrow_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                        print("借出时间:", borrow_time)
                        print("-" * 150)
                        break
                    else:
                        print("图书未被借阅!")
                        break
            print("是否继续查看借阅状态?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    def user_renew_book():
        while True:
            print("续借图书")
            id = input("请输入图书编号:")
            for i in range(len(book_id)):
                if id == book_id[i]:
                    # 将库存从字符串转换为整数
                    lend_int = int(book_lend[i]) if book_lend[i].isdigit() else 0
                    if lend_int > 0:  # 检查转换后的借出数量是否足够
                        book_remind[i] = str(int(book_remind[i]))
                        book_lend[i] = str(int(book_lend[i]))
                        print("图书续借 成功!")
                        print("图书编号:", book_id[i], "图书名称:", book_name[i], "图书作者:", book_author[i],
                              "图书出版社:",
                              book_publisher[i], "图书剩余数量:", book_remind[i], "图书可借数量:", book_lend[i])
                        # 续借后,生成一个续借时间
                        renew_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                        print("续借时间:", renew_time)
                        print("-" * 150)
                        break
                    else:
                        print("图书续借失败!图书已经被借阅!")
                        break
    
            print("是否继续续借图书?y/n")
            choice = input()
            if choice == 'n':
                break
    
    
    def main():
        search_options = {
            "1": user_search_by_type,
            "2": user_search_by_name,
            "3": user_search_by_author,
            "4": user_search_by_id,
        }
    
        while True:
            print("请选择查询方式:")
            print("1. 图书类型")
            print("2. 图书名称")
            print("3. 图书作者")
            print("4. 图书编号")
            print("5. 退出")
            option = input("请输入选项:")
    
            if option in search_options:
                search_options[option]()
            elif option == "5":
                print("已退出查找程序")
                break
            else:
                print("无效的选项,请重新输入")
    
    
    def main_b():
        user_borrow_lend_options = {
            "1": user_borrow_book,
            "2": user_return_book,
            "3": user_renew_book,
            "4": user_borrow_status
        }
        while True:
            print("请选择借阅/归还图书/续借图书方式:")
            print("1. 借阅图书")
            print("2. 归还图书")
            print("3. 续借图书")
            print("4. 查看借阅状态")
            print("5. 退出")
            option = input("请输入选项:")
    
            if option in user_borrow_lend_options:
                user_borrow_lend_options[option]()
            elif option == "5":
                print("已退出借阅/归还程序")
                break
            else:
                print("无效的选项,请重新输入")
    
    
    # 将主程序放在最后
    if __name__ == "__main__":
        main()
    if __name__ == "__main__":
        main_b()
    

    这里给出代码。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值