0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python版实验室设备管理系统源代码

汽车电子技术 来源:Python代码大全 作者:Python代码狂人 2023-02-24 10:20 次阅读

Python版实验室设备管理系统源代码、实验室仪器借用记录基于PySide2+sqlite3,用Pyside2开发的仪器借用记录系统,储存数据用的sqlite,主要就是增查改功能。程序入口main.py。运行程序前请安装pyside2及sqlite3。仪器借用及归还时需求注明仪器状态。

主界面

poYBAGP4Hk2AflqoAAIf9XjrOao924.png

借用界面

poYBAGP4HluAZdfPAAHWWtl6Ms8512.png

归还界面

poYBAGP4HmeASdSvAAHTg4c0sFQ915.png

mian.py

import sqlite3
rom PySide2.QtWidgets import QApplication, QMessageBox, QMainWindow, QTableWidgetItem, QStyleFactory
from PySide2.QtUiTools import QUiLoader
from main_ui import Ui_MainWindow

instrument_list = ['浓度仪_1', '浓度仪_2', '风速仪_1', '风速仪_2', '风速仪_3', '测厚仪']
database = 'borrowing.db'


class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 从文件中加载UI定义
        # self.ui = QUiLoader().load('main_ui.ui')
        # 使用ui文件导入定义界面类
        self.ui = Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)

        self.at_home = True
        # 加载仪器名列表
        self.ui.namebox.addItems(instrument_list)
        self.load_data()
        # 切换仪器名时更新表中的借用记录
        self.ui.namebox.currentIndexChanged.connect(self.load_data)
        self.ui.borrowbutton.clicked.connect(self.borrow_button)
        self.ui.backbutton.clicked.connect(self.back_button)

    def load_data(self):
        self.ui.infotable.clearContents()
        self.ui.infotable.setRowCount(0)
        name = self.ui.namebox.currentText()
        # 创建连接
        con = sqlite3.connect(database)
        # 创建游标对象
        cur = con.cursor()
        # 编写查询sql语句
        sql = f'select * from {name}'
        try:
            cur.execute(sql)
            # 获取结果集
            record = cur.fetchall()
            # 显示存放位置
            self.ui.placelabel.setText(f'{record[0][-1]}')
            for row in record:
                # 获取当前表格行数
                rowcount = self.ui.infotable.rowCount()
                # print(row)
                # 在下面插入一行
                self.ui.infotable.insertRow(rowcount)
                i = 0
                for info in row[1:-1]:
                    if info is None:
                        info = ''
                    # 将获取的信息填入相应行列的单元格中
                    self.ui.infotable.setItem(rowcount, i, QTableWidgetItem(info))
                    i += 1
            # 获取最后一次借用记录
            last_row = record[-1]
            if last_row[5]:
                # 有实际归还日期,说明已经归还,设备在实验室
                self.at_home = True
                self.ui.statelabel.setText('设备状态:已归还')
                # 操作界面清空
                self.ui.borrowtime.clear()
                self.ui.exceptback.clear()
                self.ui.borrowstate.clear()
                self.ui.borrower.clear()
            else:
                # 实际归还日期为空,说明还没有归还
                self.at_home = False
                self.ui.statelabel.setText('设备状态:未归还')
                self.ui.borrowtime.setText(last_row[1])
                self.ui.exceptback.setText(last_row[3])
                self.ui.borrowstate.setText(last_row[4])
                self.ui.borrower.setText(last_row[2])
        except Exception as e:
            print(e)
            QMessageBox.about(self.ui, '提示', '查询失败!')
        finally:
            # 关闭游标连接
            cur.close()
            # 关闭数据库连接
            con.close()

    def borrow_button(self):
        if self.at_home:
            if self.ui.borrowtime.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入借用日期!')
            elif self.ui.exceptback.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入预计归还日期!')
            elif self.ui.borrowstate.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入借出时状态!')
            elif self.ui.borrower.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入借用人!')
            else:
                # 信息都填好,往数据库里插入入一条新的借用记录
                name = self.ui.namebox.currentText()
                # 创建连接
                con = sqlite3.connect(database)
                # 创建游标对象
                cur = con.cursor()
                # 编写插入的sql语句
                sql = f'insert into {name}(借用日期,借用人,预计归还日期,借出时状态,存放位置) values(?,?,?,?,?)'
                new_row = (self.ui.borrowtime.text(), self.ui.borrower.text(), self.ui.exceptback.text(),
                           self.ui.borrowstate.text(), self.ui.placelabel.text())
                try:
                    # 执行sql
                    cur.execute(sql, new_row)
                    con.commit()
                    QMessageBox.about(self.ui, '提示', f'{name}借出成功!')
                except Exception as e:
                    print(e)
                    con.rollback()
                    QMessageBox.about(self.ui, '提示', f'{name}借出失败!')
                finally:
                    # 关闭游标连接
                    cur.close()
                    # 关闭数据库连接
                    con.close()
        else:
            QMessageBox.about(self.ui, '提示', '仪器未归还!')

    def back_button(self):
        if self.at_home:
            QMessageBox.about(self.ui, '提示', '仪器未借出!')
        else:
            if self.ui.actualback.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入实际归还日期!')
            elif self.ui.backstate.text() == '':
                QMessageBox.about(self.ui, '提示', '请填入归还时状态!')
            else:
                # 信息都填好,往数据库里插入新的归还记录
                name = self.ui.namebox.currentText()
                # 创建连接
                con = sqlite3.connect(database)
                # 创建游标对象
                cur = con.cursor()
                # 编写修改的sql语句
                sql = f'update {name} set 实际归还日期=?, 归还时状态=? where 借用日期=?'
                new_back = (self.ui.actualback.text(), self.ui.backstate.text(), self.ui.borrowtime.text())
                try:
                    # 执行sql
                    cur.execute(sql, new_back)
                    # 提交事物
                    con.commit()
                    QMessageBox.about(self.ui, '提示', f'{name}归还成功!')
                except Exception as e:
                    print(e)
                    QMessageBox.about(self.ui, '提示', f'{name}归还失败!')
                    con.rollback()
                finally:
                    # 关闭游标连接
                    cur.close()
                    # 关闭数据库连接
                    con.close()


app = QApplication([])
app.setStyle(QStyleFactory.create('Fusion'))
mainw = MainWindow()
mainw.show()
app.exec_()

完整版Python版实验室设备管理系统下载地址:

https://download.csdn.net/download/weixin_42756970/86803665

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 源代码
    +关注

    关注

    94

    文章

    2926

    浏览量

    66061
  • SQlite
    +关注

    关注

    0

    文章

    78

    浏览量

    15763
  • python
    +关注

    关注

    51

    文章

    4674

    浏览量

    83464
收藏 人收藏

    评论

    相关推荐

    实验室仪器设备管理制度

    实验室仪器设备管理制度中北大学实验室仪器设备管理制度一、仪器设备管理办法一、为了加强我校实验室
    发表于 03-19 16:24

    [原创]认证与实验室

    认证、实验室特写、电磁兼容、走进实验室、Q博士案例栏目。认证实验室专题范围:认证程序、工厂审查、标准理解、测试设备管理、标准的差异化等。栏目将对一次或多次不能通过认证的企业或产品,提出
    发表于 10-29 16:57

    实验室管理系统

    实验室管理系统主要是解决,本人所在学校实验室智能化问题,实现功能短信查课(TC35模块);安全报警短信报警(温度,可燃气体);
    发表于 10-31 20:29

    如何制作实验室人员物品管理系统

    实验室人员物品管理系统 对登记进入实验室人员,包括统计进入人员姓名,编号,时间,次数等信息。记录到文件中(Exel)。并能生成统计报告。对物品进行
    发表于 06-08 12:58

    【Aworks申请】智能实验室无人管理系统

    实验室无人管理系统。项目描述: 本项目的主要研究内容是设计并实现智能实验室无人管理系统。基于上述
    发表于 06-30 09:50

    【FireBLE申请】无线智能实验室管理系统的研究

    的疏忽,导致实验室某些设备在无人时仍然处于工作状态,增加了安全隐患;另外,有些实验,需要在某一特定时刻打开设备来工作,但是由于没有人在现场而无法完成。如果能够开发出一套无线智能
    发表于 07-23 11:36

    智慧实验室教学管理系统平台开发设计案例

    自行申请申报。智慧实验室教学管理系统实验室开放预约管理实验室项目开放安排以及
    发表于 12-09 16:20

    lims实验室管理系统是什么?实验室信息管理系统介绍!

    采用实验室信息管理系统或LIMS可能是提高实验室生产力的最有效方法之一。此页面的目的是帮助目前未使用LIMS的科学家和实验室人员分析采用LI
    发表于 11-03 11:17

    实验室lims系统解决方案

    ?lims实验室信息管理系统是一种软件产品,旨在帮助实验室跟踪其设备、样品和测试结果,管理其工作
    发表于 11-04 11:18

    实验室仪器设备管理制度

    实验室仪器设备管理制度一、仪器设备管理办法一、为了加强我校实验室的建设和管理,保障学校的教育质量和科学研究水平,提高办学效益,特制定本办法。
    发表于 03-18 22:17 46次下载

    实验室设备管理系统开发中的问题解决思路

    针对当前高校实验室设备管理的现状,基于现实的需求,采用了JSP技术与SQL Server数据库开发研制实验室设备管理系统,并结合开发中遇到的
    发表于 04-12 15:06 55次下载
    <b class='flag-5'>实验室</b><b class='flag-5'>设备管理</b><b class='flag-5'>系统</b>开发中的问题解决思路

    基于二维码及小程序的实验室设备管理系统

    针对实验室设备类型和数量繁多,造成设备管理工作复杂而繁琐、实验室管理人员的工作强度高和压力大等问题,提出基于二维码技术及微信小程序的
    发表于 04-23 10:11 8次下载
    基于二维码及小程序的<b class='flag-5'>实验室</b><b class='flag-5'>设备管理</b><b class='flag-5'>系统</b>

    计算机专业毕业设计-ASP+ACCESS实验室设备管理系统(源代码+论文)

    计算机专业毕业设计-ASP+ACCESS实验室设备管理系统(源代码+论文)(树莓派 电源12v)-计算机专业毕业设计-ASP+ACCESS实验室
    发表于 07-26 11:27 13次下载
    计算机专业毕业设计-ASP+ACCESS<b class='flag-5'>实验室</b><b class='flag-5'>设备管理</b><b class='flag-5'>系统</b>(<b class='flag-5'>源代码</b>+论文)

    Python版超市管理系统源代码

    Python版超市管理系统源代码,基于django+mysql安装步骤
    的头像 发表于 02-24 09:59 1127次阅读
    <b class='flag-5'>Python</b>版超市<b class='flag-5'>管理</b><b class='flag-5'>系统</b><b class='flag-5'>源代码</b>

    实验室设备定位管理系统

    实验室设备定位管理系统是一种用于实验室设备管理和定位的系统
    的头像 发表于 01-10 16:13 208次阅读