图书管理系统(一)管理员模块--python版本

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

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

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

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

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

(4)读者信息查询:

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

(5)管理端信息查询:

管理员可以增加、修改、删除图书的信息。

首先 ,我们先完成管理员模块即(增删改查)

一  ·增加新的图书

我首先把所有书的信息都存放到不同的列表里面,即用即拿,由于每一次添加一本书都是放在列表的最后面,所以在写到文件里面时用[-1]

import time
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])
# 1. 添加新的图书
def add_book():
    book_id.append(input("请输入图书ID:"))
    book_name.append(input("请输入图书名称:"))
    book_author.append(input("请输入图书作者:"))
    book_publisher.append(input("请输入图书出版社:"))
    book_type.append(input("请输入图书类型:"))
    book_remind.append(input("请输入共几本书:"))
    book_lend.append(input("请输入可借本数:"))
    with open('book_data.txt', 'a', encoding='utf-8') as f:
        f.write(book_id[-1] + ',' + book_name[-1] + ',' + book_author[-1] + ',' + book_publisher[-1] + ',' + book_type[-1] + ',' + book_remind[-1] + ',' + book_lend[-1] + '\n')
    print("于"+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"图书添加成功!")

对于原有的book_data,我把它放到了book_data.txt文件中,这个部分大家可以自己定义

但是添加书的时候有可能加入的图书时可能同一本书,这是时候只需要增加书本数和可以借阅数量即可

#添加已经存在的图书
def add_book_exist():
    print("添加已经存在的图书")
    id = input("请输入图书编号:")
    book_found = False

    # 1. 读取原始文件数据
    with open('book_data.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()

    # 2. 更新指定图书的数据
    for i, line in enumerate(lines):
        parts = line.strip().split(',')
        if id == parts[0]:
            lend_int = int(parts[6]) if parts[6].isdigit() else 0
            if lend_int > 0:
                book_remind = str(int(parts[5]) + 1)
                book_lend = str(int(parts[6]) + 1)
                lines[i] = ','.join(parts[:4] + [parts[4]] + [book_remind, book_lend]) + '\n'
                book_found = True
            else:
                print("无法添加图书!")
                break

    if not book_found:
        print("图书编号不存在!")
    else:
        # 3. 写回更新后的数据
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            f.writelines(lines)
        print("于"+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"图书数量增加成功!")

二 ·删除图书

def del_book():

    book_id_del = input("请输入要删除的图书ID:")
    if book_id_del in book_id:
        index = book_id.index(book_id_del)
        book_id.pop(index)
        book_name.pop(index)
        book_author.pop(index)
        book_publisher.pop(index)
        book_type.pop(index)
        book_remind.pop(index)
        book_lend.pop(index)
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            for i in range(len(book_id)):
                f.write(book_id[i] + ',' + book_name[i] + ',' + book_author[i] + ',' + book_publisher[i] + ',' + book_type[i] + ',' + book_remind[i] + ',' + book_lend[i] + '\n')
        print("图书删除成功!")
        return True
    else:
        print("图书ID不存在!")
        return False

通过索引值来删除,依靠pop操作实现删除每一个列表的内容

三·修改图书

# 3. 修改图书
def modify_book():
    book_id_modify = input("请输入要修改的图书ID:")
    if book_id_modify in book_id:
        index = book_id.index(book_id_modify)
        book_name[index] = input("请输入新的图书名称:")
        book_author[index] = input("请输入新的图书作者:")
        book_publisher[index] = input("请输入新的图书出版社:")
        book_type[index] = input("请输入新的图书类型:")
        book_remind[index] = input("请输入总共几本书:")
        book_lend[index] = input("请输入可借本数:")
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            for i in range(len(book_id)):
                f.write(book_id[i] + ',' + book_name[i] + ',' + book_author[i] + ',' + book_publisher[i] + ',' + book_type[i] + ',' + book_remind[i] + ',' + book_lend[i] + '\n')
                print("图书修改成功!")
                return True
    else:
        print("图书ID不存在!")
        return False

四·查询图书

# 4. 查询图书
def query_book():
    book_id_query = input("请输入要查询的图书ID:")
    if book_id_query in book_id:
        index = book_id.index(book_id_query)
        print("图书ID:", book_id[index])
        print("图书名称:", book_name[index])
        print("图书作者:", book_author[index])
        print("图书出版社:", book_publisher[index])
        print("图书类型:", book_type[index])
        print("共几本书:", book_remind[index])
        print("可借本数:", book_lend[index])
        return True
    else:
        print("图书ID不存在!")
        return False

最后,通过一个主函数把这些函数都链接起来,并由用户来决定操作

# 该模块用于管理图书信息,包括添加、删除、修改、查询等功能。
# 功能包括:
# 1. 添加图书:输入图书信息,将图书信息写入文件中。
# 2. 删除图书:输入图书ID,从文件中删除该图书信息。
# 3. 修改图书:输入图书ID,修改图书信息,并将修改后的信息写入文件中。
import time
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])
# 1. 添加新的图书
def add_book():
    book_id.append(input("请输入图书ID:"))
    book_name.append(input("请输入图书名称:"))
    book_author.append(input("请输入图书作者:"))
    book_publisher.append(input("请输入图书出版社:"))
    book_type.append(input("请输入图书类型:"))
    book_remind.append(input("请输入共几本书:"))
    book_lend.append(input("请输入可借本数:"))
    with open('book_data.txt', 'a', encoding='utf-8') as f:
        f.write(book_id[-1] + ',' + book_name[-1] + ',' + book_author[-1] + ',' + book_publisher[-1] + ',' + book_type[-1] + ',' + book_remind[-1] + ',' + book_lend[-1] + '\n')
    print("于"+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"图书添加成功!")
#添加已经存在的图书
def add_book_exist():
    print("添加已经存在的图书")
    id = input("请输入图书编号:")
    book_found = False

    # 1. 读取原始文件数据
    with open('book_data.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()

    # 2. 更新指定图书的数据
    for i, line in enumerate(lines):
        parts = line.strip().split(',')
        if id == parts[0]:
            lend_int = int(parts[6]) if parts[6].isdigit() else 0
            if lend_int > 0:
                book_remind = str(int(parts[5]) + 1)
                book_lend = str(int(parts[6]) + 1)
                lines[i] = ','.join(parts[:4] + [parts[4]] + [book_remind, book_lend]) + '\n'
                book_found = True
            else:
                print("无法添加图书!")
                break

    if not book_found:
        print("图书编号不存在!")
    else:
        # 3. 写回更新后的数据
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            f.writelines(lines)
        print("于"+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"图书数量增加成功!")

# 2. 删除图书
def del_book():

    book_id_del = input("请输入要删除的图书ID:")
    if book_id_del in book_id:
        index = book_id.index(book_id_del)
        book_id.pop(index)
        book_name.pop(index)
        book_author.pop(index)
        book_publisher.pop(index)
        book_type.pop(index)
        book_remind.pop(index)
        book_lend.pop(index)
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            for i in range(len(book_id)):
                f.write(book_id[i] + ',' + book_name[i] + ',' + book_author[i] + ',' + book_publisher[i] + ',' + book_type[i] + ',' + book_remind[i] + ',' + book_lend[i] + '\n')
        print("图书删除成功!")
        return True
    else:
        print("图书ID不存在!")
        return False
# 3. 修改图书
def modify_book():
    book_id_modify = input("请输入要修改的图书ID:")
    if book_id_modify in book_id:
        index = book_id.index(book_id_modify)
        book_name[index] = input("请输入新的图书名称:")
        book_author[index] = input("请输入新的图书作者:")
        book_publisher[index] = input("请输入新的图书出版社:")
        book_type[index] = input("请输入新的图书类型:")
        book_remind[index] = input("请输入总共几本书:")
        book_lend[index] = input("请输入可借本数:")
        with open('book_data.txt', 'w', encoding='utf-8') as f:
            for i in range(len(book_id)):
                f.write(book_id[i] + ',' + book_name[i] + ',' + book_author[i] + ',' + book_publisher[i] + ',' + book_type[i] + ',' + book_remind[i] + ',' + book_lend[i] + '\n')
                print("图书修改成功!")
                return True
    else:
        print("图书ID不存在!")
        return False
# 4. 查询图书
def query_book():
    book_id_query = input("请输入要查询的图书ID:")
    if book_id_query in book_id:
        index = book_id.index(book_id_query)
        print("图书ID:", book_id[index])
        print("图书名称:", book_name[index])
        print("图书作者:", book_author[index])
        print("图书出版社:", book_publisher[index])
        print("图书类型:", book_type[index])
        print("共几本书:", book_remind[index])
        print("可借本数:", book_lend[index])
        return True
    else:
        print("图书ID不存在!")
        return False

def main():
    while True:
        print("欢迎使用图书管理系统!")
        print("1. 添加图书")
        print("2. 删除图书")
        print("3. 修改图书")
        print("4. 查询图书")
        print("5. 退出系统")
        choice = input("请输入您的选择:")
        if choice == '1':
            add_book()
        elif choice == '2':
            del_book()
        elif choice == '3':
            modify_book()
        elif choice == '4':
            query_book()
        elif choice == '5':
            print("欢迎下次使用!")
            break
        else:
            print("输入错误,请重新输入!")

if __name__ == '__main__':
    main()

至此,管理员的操作完成!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值