有客自远方来52 2024-04-22 16:41 采纳率: 15.3%
浏览 6
已结题

如何系统实现预警功能?

我想实现当图书库存量小于5时,系统会给出警告,使对应的书名变红并给出库存不足提示,我该如何修改?
功能实现模块

def update(self):
    """
    更新表单
    :return:
    """
    ID = self.idInput.text()
    if ID.strip() == "":
        self.x = show_custom_message_box("系统提示", "请您选中需要编辑的内容!")
        return
    bookName = self.bookNameInput.text()
    if bookName.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("系统提示", "请输入图书作者年龄!")
    sex = "男"
    if self.femaleRadio.isChecked():
        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
    TID = self.bookTypeComboBoX.currentData()
    if TID == -1:
        self.x = show_custom_message_box("系统提示", "请选择图书类别!")
        return
    bookDesc = self.bookDescInput.toPlainText()
    book = Book.my_construtor2(ID, bookName, author, age, sex, price, TID, bookDesc, stock)
    if bookDao.update(book) > 0:
        self.x = show_custom_message_box("系统提示", "修改成功!")
        self.initTable()
        self.resetForm()
    else:
        self.x = show_custom_message_box("系统提示", "修改失败!")

数据库模块

def update(book: Book) -> int:
    """
    更新数据
    :param s_book:
    :return:
    """
    con = None
    try:
        con = dbUtil.getCon()
        cursor = con.cursor()
        # 更新数据
        sql = f"update t_book set bookName='{book.bookName}',author='{book.author}' ,age='{book.age}',sex='{book.sex}',price='{book.price}',TID={book.TID},bookDesc='{book.bookDesc}',stock='{book.stock}'where ID={book.ID}"
        cursor.execute(sql)
        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)
  • 写回答

5条回答 默认 最新

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

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

    为了在图书库存量低于5本时提供警告,你需要在以下几个部分进行修改:

    1. update函数中添加对库存检查的逻辑。
    2. 如果库存不足,改变书名的颜色并在界面上显示警告信息。

    首先,我们可以在update函数内部增加一个条件判断,当库存低于5时执行相应的操作。然后,我们需要创建一个方法来更改界面中的书名颜色,并且弹出库存不足的警告信息。这里我们将使用PyQt5库来完成UI的交互。

    以下是修改后的代码:

    import sys
    from PyQt5.QtWidgets import QApplication, QMessageBox
    
    # 假设这是你的Book类
    class Book:
        def my_construtor2(self, ID, bookName, author, age, sex, price, TID, bookDesc, stock):
            self.ID = ID
            self.bookName = bookName
            self.author = author
            self.age = age
            self.sex = sex
            self.price = price
            self.TID = TID
            self.bookDesc = bookDesc
            self.stock = stock
    
    def show_custom_message_box(title, message):
        # 这是用于显示自定义消息框的方法
        app = QApplication(sys.argv)
        dialog = QMessageBox()
        dialog.setWindowTitle(title)
        dialog.setText(message)
        dialog.exec_()
        sys.exit(app.exec_())
    
    def update(self):
        """
        更新表单
        :return:
        """
        ID = self.idInput.text()
        if ID.strip() == "":
            self.show_error_message("系统提示", "请您选中需要编辑的内容!")
            return
        bookName = self.bookNameInput.text()
        if bookName.strip() == "":
            self.show_error_message("系统提示", "请输入图书类别名称!")
            return
        author = self.authorInput.text()
        if author.strip() == "":
            self.show_error_message("系统提示", "请输入图书作者名称!")
            return
        age = self.ageInput.text()
        if age.strip() == "":
            self.show_error_message("系统提示", "请输入图书作者年龄!")
        sex = "男"
        if self.femaleRadio.isChecked():
            sex = "女"
        price = self.priceInput.text()
        if price.strip() == "":
            self.show_error_message("系统提示", "请输入图书价格!")
            return
        stock = self.stockInput.text()
        if stock.strip() == "":
            self.show_error_message("系统提示", "库存量不能为空!")
            return
        TID = self.bookTypeComboBoX.currentData()
        if TID == -1:
            self.show_error_message("系统提示", "请选择图书类别!")
            return
        bookDesc = self.bookDescInput.toPlainText()
    
        # 检查库存是否低于5
        if int(stock) < 5:
            self.bookNameInput.setStyleSheet('color: red')
            self.show_error_message("系统提示", f"库存不足!书籍 '{bookName}' 的库存为 {stock},建议补充。")
    
        book = Book.my_construtor2(ID, bookName, author, age, sex, price, TID, bookDesc, stock)
        if bookDao.update(book) > 0:
            self.show_success_message("系统提示", "修改成功!")
            self.initTable()
            self.resetForm()
        else:
            self.show_error_message("系统提示", "修改失败!")
    
    def show_error_message(title, message):
        # 显示错误消息的方法
        app = QApplication(sys.argv)
        dialog = QMessageBox(QMessageBox.Warning, title, message)
        dialog.exec_()
        sys.exit(app.exec_())
    
    def show_success_message(title, message):
        # 显示成功消息的方法
        app = QApplication(sys.argv)
        dialog = QMessageBox(QMessageBox.Information, title, message)
        dialog.exec_()
        sys.exit(app.exec_())
    

    在这个版本的代码中,我们添加了一个新的show_error_message方法用于显示警告信息,以及一个show_success_message方法用于显示成功信息。当库存低于5时,我们会将书名输入框的字体颜色设置为红色,并显示一条库存不足的警告信息。

    注意:这个示例假设你已经有一个实现了getCon()closeCon()方法的dbUtil模块来管理数据库连接,以及一个已经正确初始化的PyQt5应用程序环境。如果你还没有这些,请确保你已经正确设置了它们。此外,你可能还需要根据你的实际应用调整样式表的其他属性,例如字体大小、背景色等。

    评论 编辑记录

报告相同问题?

问题事件

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