有客自远方来52 2024-04-23 11:41 采纳率: 15.3%
浏览 1
已结题

如何实现不同的报错提示页面?(语言-python|开发工具-pycharm)

我想实现当借阅量大于库存量会节借阅失败并弹出库存量不足的界面,但现在库借阅量大于库存量时,反而会借阅成功,我该如何修改?
逻辑功能


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 or stock > 10:
        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.check1(rbook) > 0:
        self.x = show_custom_message_box("系统提示", "库存量不足!")
    elif borrowDao.add(rbook) > 0:
        self.x = show_custom_message_box("系统提示", "借阅成功!")
        self.resetForm()
        self.initTable()
    else:
        self.x = show_custom_message_box("系统提示", "借阅失败!")

数据库模块

def check1(rbook: Rbook):
    con = dbUtil.getCon()
    cursor = con.cursor()
    # 检查库存量
    check_sql = f"SELECT stock FROM t_book WHERE ID='{rbook.ID}' AND author='{rbook.author}'"
    cursor.execute(check_sql)
    con.commit()
    count = cursor.fetchone()
    print(rbook.stock)
    print(count)
    if count[0] <= rbook.stock:
        return 0
    dbUtil.closeCon(con)


  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-23 11:41
    关注

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

    根据您的描述,您想要在图书借阅时检查库存量是否足够,并在库存不足的情况下显示相应的错误消息。首先,我们需要修复add方法中的逻辑错误,确保在调用borrowDao.check1()之前已经将用户输入的借阅量与库存量进行比较。

    这里是修改后的add方法代码:

    def add(self):
        """
        添加图书信息
        :return:
        """
        bookName = self.bookNameInput.text().strip()
        if not bookName:
            self.x = show_custom_message_box("系统提示", "请选择借阅图书!")
            return
    
        ID = self.idInput.text().strip()
        if not ID:
            self.x = show_custom_message_box("系统提示", "图书编号不能为空!")
            return
    
        author = self.authorInput.text().strip()
        if not author:
            self.x = show_custom_message_box("系统提示", "图书作者不能为空!")
            return
    
        age = self.ageInput.text().strip()
        if not age:
            self.x = show_custom_message_box("系统提示", "年龄不能为空!")
            return
    
        sex = ''
        if self.manRadio.isChecked():
            sex = '男'
        else:
            sex = '女'
    
        price = self.priceInput.text().strip()
        if not price:
            self.x = show_custom_message_box("系统提示", "图书价格不能为空!")
            return
    
        stock = self.stockInput.text().strip()
        if not stock.isdigit() or (int(stock) <= 0 or int(stock) > 10):
            self.x = show_custom_message_box("系统提示", "借阅量必须为1到10之间的整数!")
            return
    
        TID = self.bookTypeComboBoX.currentText()
        if not TID:
            self.x = show_custom_message_box("系统提示", "请选择图书类别!")
            return
    
        bookDesc = self.bookDescInput.toPlainText()
    
        rbook = Book.my_construtor2(
            ID,
            bookName,
            author,
            age,
            sex,
            price,
            TID,
            bookDesc,
            int(stock)
        )
    
        # 检查库存量
        if int(stock) > self.check_stock(rbook):
            self.x = show_custom_message_box("系统提示", "库存量不足!")
            return
    
        if borrowDao.add(rbook) > 0:
            self.x = show_custom_message_box("系统提示", "借阅成功!")
            self.resetForm()
            self.initTable()
        else:
            self.x = show_custom_message_box("系统提示", "借阅失败!")
    
    # 新增一个用于获取图书库存的方法
    def check_stock(self, rbook: Rbook):
        con = dbUtil.getCon()
        cursor = con.cursor()
        check_sql = f"SELECT stock FROM t_book WHERE ID='{rbook.ID}' AND author='{rbook.author}'"
        cursor.execute(check_sql)
        con.commit()
        count = cursor.fetchone()[0]
        dbUtil.closeCon(con)
        return count
    

    在这个版本中,我们添加了一个新的方法check_stock,它从数据库中查询指定图书的库存量。然后在add方法中,在调用borrowDao.add()之前,我们先检查用户请求的借阅量是否小于等于当前库存量。这样就能确保在库存不足的情况下,程序会显示正确的错误消息。

    注意:这个答案假设了Book.my_construtor2方法可以正确地创建一个Rbook对象,并且show_custom_message_box是一个可以显示自定义对话框的函数。如果您没有这些部分的实现,可能需要自行补充或调整。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月9日
  • 创建了问题 4月23日