2401_83940696 2024-03-27 22:23 采纳率: 2.1%
浏览 1
已结题

如何实现图书无法借出的功能(语言-python|开发工具-pycharm)

以下是我的代码,我的期望是添加一个判断语句,使得索引到的书籍的库存量小于1或者库存量小于被借阅量时,图书无法借出的功能,该如何实现

def add(rbook: Rbook) -> int:
    """
    图书借阅
    :param rbook:
    :return:
    """
    # 检查是否存在同名书
    con = dbUtil.getCon()
    cursor = con.cursor()
    check_sql = f"SELECT COUNT(*) FROM borrow WHERE bookName='{rbook.bookName}' AND author='{rbook.author}'"
    cursor.execute(check_sql, (rbook.bookName, rbook.author))
    count = cursor.fetchone()[0]
    if count > 0:
        return 0

    # 插入记录
    con = None
    try:
        con = dbUtil.getCon()
        cursor = con.cursor()
        borrow_date = datetime.date.today()
        return_date = borrow_date + datetime.timedelta(days=7)
        sql = "INSERT INTO borrow (TID,ID,bookName,author,age,sex,price,bookDesc,borrowDate,returnDate,stock) VALUES " \
              "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
        params = (rbook.TID, rbook.ID, rbook.bookName, rbook.author, rbook.age, rbook.sex, rbook.price, rbook.bookDesc,
                  borrow_date, return_date, rbook.stock)

        cursor.execute(sql, params)
        con.commit()
        return cursor.rowcount
    except Exception as e:
        print(f"插入数据时发生错误: {e}")
        if con is not None:
            con.rollback()
        return 0
    finally:
        dbUtil.closeCon(con)

def add(self):
    """
    添加图书信息
    :return:
    """
    bookName = self.bookNameInput.text()
    if bookName.strip() == "":
        self.x = show_custom_message_box("系统提示", "图书名称不能为空!")
        return
    ID = self.idInput.text()
    if ID.strip() == "":
        self.x = show_custom_message_box("系统提示", "图书编号不能为空!")
        return
    author = self.authorInput.text()
    if author.strip() == "":
        self.x = show_custom_message_box("系统提示", "图书作者不能为空!")
        return
    age = self.ageInput.text()
    if age.strip() == "":
        self.x = show_custom_message_box("系统提示", "年龄不能为空!")
        return
    sex = ''
    if self.manRadio.isChecked():
        sex = '男'
    else:
        sex = '女'
    price = self.priceInput.text()
    if price.strip() == "":
        self.x = show_custom_message_box("系统提示", "图书价格不能为空!")
        return
    stock = self.stockInput.text()
    if stock.strip() == "":
        self.x = show_custom_message_box("系统提示", "借阅量不能为空!")
        return
    stock = int(stock)
    if stock <= 0:
        self.x = show_custom_message_box("系统提示", "请重新借阅!")
        return

    TID = self.bookTypeComboBoX.currentData()
    if bookName == -1:
        self.x = show_custom_message_box("系统提示", "请选择图书类别!")
        return
    bookDesc = self.bookDescInput.toPlainText()
    rbook = Book.my_construtor2(ID, bookName, author, age, sex, price, TID, bookDesc, stock)
    if borrowDao.add(rbook) > 0:
        self.x = show_custom_message_box("系统提示", "借阅成功!")
    else:
        if bookName == bookName:
            self.x = show_custom_message_box("系统提示", "请勿重复借阅!")

  • 写回答

3条回答 默认 最新

  • 专家-皆知 2024-03-27 22:23
    关注

    引自免费微信小程序:皆我百晓生

    为了实现图书无法借出的功能,您可以在borrowDao.add()方法中添加一个判断语句。当索引到的书籍的库存量小于1或者库存量小于被借阅量时,图书应显示为无法借出。以下是如何实现这一功能的示例代码:

    def add(self):
        """
        添加图书信息
        :return:
        """
        bookName = self.bookNameInput.text()
        if bookName.strip() == "":
            self.x = show_custom_message_box("系统提示", "图书名称不能为空!")
            return
        ID = self.idInput.text()
        if ID.strip() == "":
            self.x = show_custom_message_box("系统提示", "图书编号不能为空!")
            return
        author = self.authorInput.text()
        if author.strip() == "":
            self.x = show_custom_message_box("系统提示", "图书作者不能为空!")
            return
        age = self.ageInput.text()
        if age.strip() == "":
            self.x = show_custom_message_box("系统提示", "年龄不能为空!")
            return
        sex = ''
        if self.manRadio.isChecked():
            sex = '男'
        else:
            sex = '女'
        price = self.priceInput.text()
        if price.strip() == "":
            self.x = show_custom_message_box("系统提示", "图书价格不能为空!")
            return
        stock = self.stockInput.text()
        if stock.strip() == "":
            self.x = show_custom_message_box("系统提示", "借阅量不能为空!")
            return
        stock = int(stock)
        if stock <= 0:
            self.x = show_custom_message_box("系统提示", "请重新借阅!")
            return
    
        TID = self.bookTypeComboBoX.currentData()
        if bookName == -1:
            self.x = show_custom_message_box("系统提示", "请选择图书类别!")
            return
        bookDesc = self.bookDescInput.toPlainText()
        rbook = Book.my_construtor2(ID, bookName, author, age, sex, price, TID, bookDesc, stock)
    
        # 添加判断语句,判断库存量是否小于1或被借阅量
        con = dbUtil.getCon()
        cursor = con.cursor()
        cursor.execute("SELECT COUNT(*) FROM borrow WHERE bookName='%s' AND author='%s'" % (bookName, author))
        count = cursor.fetchone()[0]
        if count == 0:
            borrow_date = datetime.date.today()
            return_date = borrow_date + datetime.timedelta(days=7)
            sql = "INSERT INTO borrow (TID,ID,bookName,author,age,sex,price,bookDesc,borrowDate,returnDate,stock) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
            params = (rbook.TID, rbook.ID, bookName, author, age, sex, price, bookDesc, borrow_date, return_date, rbook.stock)
    
            cursor.execute(sql, params)
            con.commit()
            return cursor.rowcount
        else:
            # 显示无法借出的提示
            self.x = show_custom_message_box("系统提示", "此书已被借出,请稍后再借!")
            return 0
        finally:
            dbUtil.closeCon(con)
    

    这段代码将在尝试借阅图书时显示"此书已被借出,请稍后再借!"的提示,并在库存量不足时阻止图书借出。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月17日
  • 创建了问题 3月27日