课程设计的主要内容

1. 录入功能:
可以录入每种图书的基本信息。基本信息包括ISBN、书名、作者、出版社、出版年月、库存量。

2. 查询功能:
可以根据书名或者作者,查询某种图书的所有信息。

3. 出库功能:
可以根据ISBN对某种图书进行出库操作。根据系统提示输入该图书的出库数量:

  • 如果出库数量 < 库存量,更新库存量。
  • 如果出库数量 = 库存量,删除该图书的信息。
  • 如果出库数量 > 库存量,出库失败。

4. 入库功能:
可以根据ISBN对某种图书进行入库操作。

  • 如果入库的图书已经存在,只需要输入入库数量,然后更新该图书的库存量。
  • 如果入库的图书之前并不存在,需要输入该图书的所有信息。

5. 删除功能:
可以根据ISBN删除某种图书的信息。

6. 显示功能:
能输出显示所有图书的信息。

相关代码

library.json
用于模拟数据库,存放书本信息(json格式)

[{"name": "\u7406\u60f3\u56fd", "author": "\u67cf\u62c9\u56fe", "ISBN": "9787222187436", "press": "\u4e91\u5357\u4eba\u6c11", "pbDate": "2021", "stock": 28}, {"name": "JavaScript\u8bbe\u8ba1\u6a21\u5f0f", "author": "\u5f20\u5bb9\u94ed", "ISBN": "9787115396860", "press": "\u4eba\u6c11\u90ae\u7535", "pbDate": "2019", "stock": 78}, {"name": "\u6df1\u5165\u6d45\u51faReact Native", "author": "\u9648\u9646\u626c", "ISBN": "9787115572424", "press": "\u4eba\u6c11\u90ae\u7535", "pbDate": "2021", "stock": 34}]

library.py
主文件

import json


# 图书类
class Book(object):
    def __init__(self, name, author, ISBN, press, pbDate, stock):
        self.name = name
        self.author = author
        self.ISBN = ISBN
        self.press = press
        self.pbDate = pbDate
        self.stock = stock

    def __str__(self):
        return f'书名 : {self.name} 作者 : {self.author} ISBN : {self.ISBN} 出版社 : {self.press} 出版年月 : {self.pbDate} 库存量 : {self.stock}'


# 图书馆
f = open("library.json", "r")
text = f.read()
if len(text) == 0:
    library = []
else:
    libraryJSON = json.loads(text)
    library = [Book(i["name"], i["author"], i["ISBN"], i["press"], i["pbDate"], i["stock"]) for i in libraryJSON]
f.close()


# 管理系统类
class ManagementSystem(object):
    # 显示
    def showAll(self):
        for i in library:
            print(i)

    # 录入
    def typeIn(self):
        ISBN = input("请输入书的ISBN : ")
        if ISBN in [i.ISBN for i in library]:
            print("该书目已经录入过了,如果需要进行入库操作请按4")
            return
        name = input("请输入书的名字 : ")
        author = input("请输入书的作者 : ")
        press = input("请输入书的出版社 : ")
        pbDate = input("请输入书的出版年月 : ")
        stock = int(input("请输入书的库存量 : "))
        library.append(Book(name, author, ISBN, press, pbDate, stock))

    # 查询
    def search(self):
        name = input("请输入书的名字 : ")
        bookList = []
        for i in library:
            if name == i.name:
                print(i)
                bookList.append(i)
        if len(bookList) == 0:
            print("未录入该图书")

    # 入库
    def push(self):
        ISBN = input("请输入书的ISBN : ")
        if ISBN in [i.ISBN for i in library]:
            for i in library:
                if i.ISBN == ISBN:
                    stock = int(input("请输入入库数量 : "))
                    i.stock += stock
                    print("入库成功")
        else:
            name = input("请输入书的名字 : ")
            author = input("请输入书的作者 : ")
            press = input("请输入书的出版社 : ")
            pbDate = input("请输入书的出版年月 : ")
            stock = int(input("请输入书的库存量 : "))
            library.append(Book(name, author, ISBN, press, pbDate, stock))
            print("入库成功")

    # 出库
    def pop(self):
        ISBN = input("请输入书的ISBN : ")
        if ISBN in [i.ISBN for i in library]:
            for i in library:
                if i.ISBN == ISBN:
                    num = int(input("请输入要出库的数量 : "))
                    if num == i.stock:
                        del library[library.index(i)]
                        print("出库成功")
                    elif num < i.stock:
                        i.stock -= num
                        print("出库成功")
                    else:
                        print("出库失败")
        else:
            print("无法出库未录入的书目")

    # 删除
    def remove(self):
        ISBN = input("请输入书的ISBN : ")
        if ISBN in [i.ISBN for i in library]:
            for i in library:
                if i.ISBN == ISBN:
                    del library[library.index(i)]
                    print("删除成功")
        else:
            print("无法删除未录入的书目")

    # 异常
    def error(self):
        print("请输入正确的操作序号")


ms = ManagementSystem()


# 定义不同的功能,代替switch...case...
def operationSheet(x):
    return {
        "1": "ms.showAll",
        "2": "ms.typeIn",
        "3": "ms.search",
        "4": "ms.push",
        "5": "ms.pop",
        "6": "ms.remove",
        "7": "ms.exit"
    }.get(x, "ms.error")


while True:
    print('''操作序号对应表
###########
# 1 : 显示 #
# 2 : 录入 #
# 3 : 查询 #
# 4 : 入库 #
# 5 : 出库 #
# 6 : 删除 #
# 7 : 退出 #
###########''')
    operation = input("请输入操作序号:")
    if operation == "7":
        bookList = []
        for i in library:
            book = {
                "name": i.name,
                "author": i.author,
                "ISBN": i.ISBN,
                "press": i.press,
                "pbDate": i.pbDate,
                "stock": i.stock
            }
            bookList.append(book)
        f = open("library.json", "w")
        f.write(json.dumps(bookList))
        f.close()
        break
    eval(operationSheet(operation))()
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐