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

如何实验系统预警功能?

我的目的是实现系统预警功能,当打开图书管理页面时,系统会统计库存量小于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:52
    关注

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

    要实现系统预警功能,你需要在图书管理页面加载时执行一个查询,获取库存量小于5的图书信息。然后根据这些信息,动态地改变前端界面中的图书名显示颜色并触发警告提示。

    这里是一个基本的步骤指南,结合你的现有代码,我会提供一些修改建议。由于这是一个GUI应用,我将假设你正在使用PyQt5作为图形用户界面库。如果你使用的是其他框架(如Tkinter),那么原理相似,但具体代码会有所不同。

    首先,在初始化界面后添加一个函数来执行库存预警查询和处理。

    # 在你的类定义中添加这个方法
    def load_books(self):
        books = bookDao.get_low_stock_books(5)
        for book in books:
            # 这里假设你有一个名为`self.tableView`的QTableView控件用于展示书籍列表
            # 以及一个名为`self.model`的QStandardItemModel模型
            item = self.model.item(book['ID'])
            if item is not None:
                item.setBackground(QColor('red'))  # 改变背景色为红色
        # 可能需要在这里添加警告提示代码,这取决于你的UI设计
        # 显示警告消息可以使用QMessageBox.information()或其他适合的方法
        self.show_warning_message()
    
    # 修改initTable()方法,调用load_books()
    def initTable(self):
        # ... 原始的初始化代码 ...
        self.load_books()
    

    接下来,你需要创建一个新函数来从数据库中获取库存低于特定数量的图书。

    # 添加到数据库操作类(例如BookDao)
    def get_low_stock_books(self, threshold):
        con = None
        try:
            con = dbUtil.getCon()
            cursor = con.cursor()
            # 查询库存低于阈值的图书
            sql = f"SELECT * FROM t_book WHERE stock < {threshold}"
            cursor.execute(sql)
            rows = cursor.fetchall()
            books = []
            for row in rows:
                book = {
                    'ID': row[0],
                    'bookName': row[1],
                    'author': row[2],
                    'age': row[3],
                    'sex': row[4],
                    'price': row[5],
                    'TID': row[6],
                    'bookDesc': row[7],
                    'stock': row[8]
                }
                books.append(book)
            return books
        except Exception as e:
            print(f"查询低库存图书时发生错误: {e}")
            if con is not None:
                con.rollback()
            return []
        finally:
            dbUtil.closeCon(con)
    

    这样,当你打开图书管理页面时,将会自动检查库存量小于5的图书,并在界面上以红色突出显示它们。为了实现警告提示,你需要根据你的UI框架选择合适的方式来显示。对于PyQt5,你可以使用QMessageBox.information()来弹出一个警告窗口。

    如果你需要一个完整的示例,可能需要一个具体的UI类和主循环,但由于这里的空间限制,我只能提供核心逻辑部分。确保你已经正确设置了QTableView和QStandardItemModel,并将这些更改集成到你的项目中。

    评论 编辑记录

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式
  • ¥15 如果要做一个老年人平板有哪些需求