Python版实验室设备管理系统源代码、实验室仪器借用记录基于PySide2+sqlite3,用Pyside2开发的仪器借用记录系统,储存数据用的sqlite,主要就是增查改功能。程序入口main.py。运行程序前请安装pyside2及sqlite3。仪器借用及归还时需求注明仪器状态。
主界面
借用界面
归还界面
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
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
源代码
+关注
关注
96文章
2944浏览量
66655 -
SQlite
+关注
关注
0文章
78浏览量
15900 -
python
+关注
关注
55文章
4778浏览量
84439
发布评论请先 登录
相关推荐
【FireBLE申请】无线智能实验室管理系统的研究
的疏忽,导致实验室某些设备在无人时仍然处于工作状态,增加了安全隐患;另外,有些实验,需要在某一特定时刻打开设备来工作,但是由于没有人在现场而无法完成。如果能够开发出一套无线智能
发表于 07-23 11:36
lims实验室管理系统是什么?实验室信息管理系统介绍!
采用实验室信息管理系统或LIMS可能是提高实验室生产力的最有效方法之一。此页面的目的是帮助目前未使用LIMS的科学家和实验室人员分析采用LI
发表于 11-03 11:17
实验室仪器设备管理制度
实验室仪器设备管理制度一、仪器设备管理办法一、为了加强我校实验室的建设和管理,保障学校的教育质量和科学研究水平,提高办学效益,特制定本办法。
发表于 03-18 22:17
•46次下载
实验室设备管理系统开发中的问题解决思路
针对当前高校实验室设备管理的现状,基于现实的需求,采用了JSP技术与SQL Server数据库开发研制实验室设备管理系统,并结合开发中遇到的
发表于 04-12 15:06
•55次下载
基于二维码及小程序的实验室设备管理系统
针对实验室设备类型和数量繁多,造成设备管理工作复杂而繁琐、实验室管理人员的工作强度高和压力大等问题,提出基于二维码技术及微信小程序的
发表于 04-23 10:11
•8次下载
计算机专业毕业设计-ASP+ACCESS实验室设备管理系统(源代码+论文)
计算机专业毕业设计-ASP+ACCESS实验室设备管理系统(源代码+论文)(树莓派 电源12v)-计算机专业毕业设计-ASP+ACCESS实验室
发表于 07-26 11:27
•13次下载
浅析RFID技术在学校实验室管理中的应用
一直以来,多数高校实验室设备管理采取传统手工方式,无法满足当前高校的发展需求。同时,对于实验室设备的资产进行清查时也多是通过扫描手写编码或是条形码标签的方式进行核实,这样的盘查效率极低
评论