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

如何实现系统警告功能?

我的目的是实现检查所有图书的库存量,当有图书库存量小于5时,会弹出警示框提示库存不足,在数据库模块和功能实现模块如何编写?
功能实现模块

def initTable(self):
    """
    根据条件初始化表格
    :return:
    """
    bookName = self.s_bookNameInput.text()
    authorName = self.s_authorInput.text()
    TID = self.s_ComboBox.currentData()
    s_book = Book(bookName, authorName, TID)
    result = bookDao.list(s_book)
    row = 0
    if result:
        row = len(result)
    self.bookListTable.setColumnCount(9)
    self.bookListTable.setRowCount(row)
    self.bookListTable.verticalHeader().setVisible(False)  # 隐藏垂直标题 序号
    self.bookListTable.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)  # 禁止编辑单元格
    self.bookListTable.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
    self.bookListTable.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOn)
    self.bookListTable.setHorizontalHeaderLabels(
        ['图书编号', '图书名称', '图书作者', '作者年龄', '作者性别', '图书价格', '库存量', '图书类别', '图书简介'])
    self.bookListTable.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.Stretch)  # 列头自适应
    self.bookListTable.setSelectionBehavior(
        QAbstractItemView.SelectionBehavior.SelectRows)  # 设置选择行为,以行为单位

    for i in range(row):
        for j in range(9):
            data = QTableWidgetItem(str(result[i][j]))
            # 设置单元格内容居中对齐
            data.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
            self.bookListTable.setItem(i, j, data)
def initForm(self, index: QModelIndex):
    """
    初始化Form
    :param index:
    :return:
    """
    rowIndex = index.row()  # 获取行索引
    self.idInput.setText(self.bookListTable.item(rowIndex, 0).text())  # 设置id编号
    self.idInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    self.bookNameInput.setText(self.bookListTable.item(rowIndex, 1).text())  # 设置图书名称
    self.bookNameInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    column_index_for_intro = 1
    self.bookListTable.horizontalHeader().setSectionResizeMode(column_index_for_intro,
                                                               QHeaderView.ResizeMode.ResizeToContents)
    self.authorInput.setText(self.bookListTable.item(rowIndex, 2).text())  # 设置作者名称
    self.authorInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    self.ageInput.setText(self.bookListTable.item(rowIndex, 3).text())  # 设置作者年龄
    self.ageInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    if self.bookListTable.item(rowIndex, 4).text() == "男":  # 设置性别
        self.manRadio.setChecked(True)
    else:
        self.femaleRadio.setChecked(True)

    self.priceInput.setText(self.bookListTable.item(rowIndex, 5).text())  # 设置图书价格
    self.priceInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    self.stockInput.setText(self.bookListTable.item(rowIndex, 6).text())  # 设置图书库存量
    self.stockInput.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
    self.bookTypeComboBoX.setCurrentText(self.bookListTable.item(rowIndex, 7).text())  # 设置图书类别
    self.bookDescInput.setPlainText(self.bookListTable.item(rowIndex, 8).text())  # 设置图书简介
    column_index_for_intro = 8
    self.bookListTable.horizontalHeader().setSectionResizeMode(column_index_for_intro,
                                                               QHeaderView.ResizeMode.ResizeToContents)


数据库模块





def check(book: Book) -> int:
    """
    更新数据
    :param s_book:
    :return:
    """
    con = None
    try:
        con = dbUtil.getCon()
        cursor = con.cursor()
        # 更新数据
        sql = f"SELECT bid,stock FROM t_book WHERE stock<5"
        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条回答 默认 最新

  • 关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    要实现系统警告功能,可以按照以下步骤进行:

    1. 定义库存警告的阈值

    在代码中定义一个库存警告的阈值,例如库存量小于5时触发警告。

    1. 检查图书库存

    在检索图书列表时,在数据库模块中添加函数check,用来检查所有图书的库存量,找出库存量小于阈值的图书。

    1. 实现警告框的弹出

    在功能实现模块中,当检查出有图书的库存量小于阈值时,弹出警告框提示库存不足。

    具体实现代码如下:

    1. 在功能实现模块中,在initTable函数中调用check函数检查库存量并弹出警告框:
    def initTable(self):
        """
        根据条件初始化表格
        :return:
        """
        bookName = self.s_bookNameInput.text()
        authorName = self.s_authorInput.text()
        TID = self.s_ComboBox.currentData()
        s_book = Book(bookName, authorName, TID)
    
        # 检查库存警告
        if check(s_book) > 0:
            QMessageBox.warning(self, '库存警告', '有图书库存量低于5本,请及时补货!')
    
        result = bookDao.list(s_book)
        ...
    
    1. 在数据库模块中添加check函数,用来检查所有图书的库存量,并返回库存量小于阈值的图书数量:
    def check(book: Book) -> int:
        """
        检查所有图书的库存量,返回库存量小于阈值的图书数量
        :param book: 图书实例
        :return: 库存量小于阈值的图书数量
        """
        con = None
        try:
            con = dbUtil.getCon()
            cursor = con.cursor()
            # 查找库存量小于阈值的图书
            sql = f"SELECT bid,stock FROM t_book WHERE stock<5"
            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)
    

    注意:在检查库存量时,应该返回库存量小于阈值的图书数量,而不是具体的图书信息。如果需要查看具体的库存量信息,可以在弹出的警告框中提供相应的入口,例如点击“确定”按钮跳转到库存不足图书的列表界面。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 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 如果要做一个老年人平板有哪些需求