Python版實(shí)驗(yàn)室設(shè)備管理系統(tǒng)源代碼、實(shí)驗(yàn)室儀器借用記錄基于PySide2+sqlite3,用Pyside2開發(fā)的儀器借用記錄系統(tǒng),儲(chǔ)存數(shù)據(jù)用的sqlite,主要就是增查改功能。程序入口main.py。運(yùn)行程序前請(qǐng)安裝pyside2及sqlite3。儀器借用及歸還時(shí)需求注明儀器狀態(tài)。
主界面
借用界面
歸還界面
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', '風(fēng)速儀_1', '風(fēng)速儀_2', '風(fēng)速儀_3', '測(cè)厚儀']
database = 'borrowing.db'
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 從文件中加載UI定義
# self.ui = QUiLoader().load('main_ui.ui')
# 使用ui文件導(dǎo)入定義界面類
self.ui = Ui_MainWindow()
# 初始化界面
self.ui.setupUi(self)
self.at_home = True
# 加載儀器名列表
self.ui.namebox.addItems(instrument_list)
self.load_data()
# 切換儀器名時(shí)更新表中的借用記錄
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()
# 創(chuàng)建連接
con = sqlite3.connect(database)
# 創(chuàng)建游標(biāo)對(duì)象
cur = con.cursor()
# 編寫查詢sql語句
sql = f'select * from {name}'
try:
cur.execute(sql)
# 獲取結(jié)果集
record = cur.fetchall()
# 顯示存放位置
self.ui.placelabel.setText(f'{record[0][-1]}')
for row in record:
# 獲取當(dāng)前表格行數(shù)
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 = ''
# 將獲取的信息填入相應(yīng)行列的單元格中
self.ui.infotable.setItem(rowcount, i, QTableWidgetItem(info))
i += 1
# 獲取最后一次借用記錄
last_row = record[-1]
if last_row[5]:
# 有實(shí)際歸還日期,說明已經(jīng)歸還,設(shè)備在實(shí)驗(yàn)室
self.at_home = True
self.ui.statelabel.setText('設(shè)備狀態(tài):已歸還')
# 操作界面清空
self.ui.borrowtime.clear()
self.ui.exceptback.clear()
self.ui.borrowstate.clear()
self.ui.borrower.clear()
else:
# 實(shí)際歸還日期為空,說明還沒有歸還
self.at_home = False
self.ui.statelabel.setText('設(shè)備狀態(tài):未歸還')
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:
# 關(guān)閉游標(biāo)連接
cur.close()
# 關(guān)閉數(shù)據(jù)庫連接
con.close()
def borrow_button(self):
if self.at_home:
if self.ui.borrowtime.text() == '':
QMessageBox.about(self.ui, '提示', '請(qǐng)?zhí)钊虢栌萌掌冢?)
elif self.ui.exceptback.text() == '':
QMessageBox.about(self.ui, '提示', '請(qǐng)?zhí)钊腩A(yù)計(jì)歸還日期!')
elif self.ui.borrowstate.text() == '':
QMessageBox.about(self.ui, '提示', '請(qǐng)?zhí)钊虢璩鰰r(shí)狀態(tài)!')
elif self.ui.borrower.text() == '':
QMessageBox.about(self.ui, '提示', '請(qǐng)?zhí)钊虢栌萌耍?)
else:
# 信息都填好,往數(shù)據(jù)庫里插入入一條新的借用記錄
name = self.ui.namebox.currentText()
# 創(chuàng)建連接
con = sqlite3.connect(database)
# 創(chuàng)建游標(biāo)對(duì)象
cur = con.cursor()
# 編寫插入的sql語句
sql = f'insert into {name}(借用日期,借用人,預(yù)計(jì)歸還日期,借出時(shí)狀態(tài),存放位置) values(?,?,?,?,?)'
new_row = (self.ui.borrowtime.text(), self.ui.borrower.text(), self.ui.exceptback.text(),
self.ui.borrowstate.text(), self.ui.placelabel.text())
try:
# 執(zhí)行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:
# 關(guān)閉游標(biāo)連接
cur.close()
# 關(guān)閉數(shù)據(jù)庫連接
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, '提示', '請(qǐng)?zhí)钊雽?shí)際歸還日期!')
elif self.ui.backstate.text() == '':
QMessageBox.about(self.ui, '提示', '請(qǐng)?zhí)钊霘w還時(shí)狀態(tài)!')
else:
# 信息都填好,往數(shù)據(jù)庫里插入新的歸還記錄
name = self.ui.namebox.currentText()
# 創(chuàng)建連接
con = sqlite3.connect(database)
# 創(chuàng)建游標(biāo)對(duì)象
cur = con.cursor()
# 編寫修改的sql語句
sql = f'update {name} set 實(shí)際歸還日期=?, 歸還時(shí)狀態(tài)=? where 借用日期=?'
new_back = (self.ui.actualback.text(), self.ui.backstate.text(), self.ui.borrowtime.text())
try:
# 執(zhí)行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:
# 關(guān)閉游標(biāo)連接
cur.close()
# 關(guān)閉數(shù)據(jù)庫連接
con.close()
app = QApplication([])
app.setStyle(QStyleFactory.create('Fusion'))
mainw = MainWindow()
mainw.show()
app.exec_()
完整版Python版實(shí)驗(yàn)室設(shè)備管理系統(tǒng)下載地址:
https://download.csdn.net/download/weixin_42756970/86803665
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
源代碼
+關(guān)注
關(guān)注
96文章
2943瀏覽量
66566 -
SQlite
+關(guān)注
關(guān)注
0文章
78瀏覽量
15871 -
python
+關(guān)注
關(guān)注
54文章
4756瀏覽量
84283
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
實(shí)驗(yàn)室儀器設(shè)備管理制度
實(shí)驗(yàn)室儀器設(shè)備管理制度中北大學(xué)實(shí)驗(yàn)室儀器設(shè)備管理制度一、儀器設(shè)備管理辦法一、為了加強(qiáng)我校實(shí)驗(yàn)室的
發(fā)表于 03-19 16:24
實(shí)驗(yàn)室管理系統(tǒng)
實(shí)驗(yàn)室管理系統(tǒng)主要是解決,本人所在學(xué)校實(shí)驗(yàn)室智能化問題,實(shí)現(xiàn)功能短信查課(TC35模塊);安全報(bào)警短信報(bào)警(溫度,可燃?xì)怏w);
發(fā)表于 10-31 20:29
【Aworks申請(qǐng)】智能實(shí)驗(yàn)室無人管理系統(tǒng)
實(shí)驗(yàn)室無人管理系統(tǒng)。項(xiàng)目描述: 本項(xiàng)目的主要研究?jī)?nèi)容是設(shè)計(jì)并實(shí)現(xiàn)智能實(shí)驗(yàn)室無人管理系統(tǒng)?;谏鲜?/div>
發(fā)表于 06-30 09:50
【FireBLE申請(qǐng)】無線智能實(shí)驗(yàn)室管理系統(tǒng)的研究
的疏忽,導(dǎo)致實(shí)驗(yàn)室某些設(shè)備在無人時(shí)仍然處于工作狀態(tài),增加了安全隱患;另外,有些實(shí)驗(yàn),需要在某一特定時(shí)刻打開設(shè)備來工作,但是由于沒有人在現(xiàn)場(chǎng)而無法完成。如果能夠開發(fā)出一套無線智能
發(fā)表于 07-23 11:36
智慧實(shí)驗(yàn)室教學(xué)管理系統(tǒng)平臺(tái)開發(fā)設(shè)計(jì)案例
自行申請(qǐng)申報(bào)。智慧實(shí)驗(yàn)室教學(xué)管理系統(tǒng)實(shí)驗(yàn)室開放預(yù)約管理實(shí)驗(yàn)室項(xiàng)目開放安排以及
發(fā)表于 12-09 16:20
lims實(shí)驗(yàn)室管理系統(tǒng)是什么?實(shí)驗(yàn)室信息管理系統(tǒng)介紹!
采用實(shí)驗(yàn)室信息管理系統(tǒng)或LIMS可能是提高實(shí)驗(yàn)室生產(chǎn)力的最有效方法之一。此頁面的目的是幫助目前未使用LIMS的科學(xué)家和實(shí)驗(yàn)室人員分析采用LI
發(fā)表于 11-03 11:17
實(shí)驗(yàn)室lims系統(tǒng)解決方案
?lims實(shí)驗(yàn)室信息管理系統(tǒng)是一種軟件產(chǎn)品,旨在幫助實(shí)驗(yàn)室跟蹤其設(shè)備、樣品和測(cè)試結(jié)果,管理其工作
發(fā)表于 11-04 11:18
實(shí)驗(yàn)室儀器設(shè)備管理制度
實(shí)驗(yàn)室儀器設(shè)備管理制度一、儀器設(shè)備管理辦法一、為了加強(qiáng)我校實(shí)驗(yàn)室的建設(shè)和管理,保障學(xué)校的教育質(zhì)量和科學(xué)研究水平,提高辦學(xué)效益,特制定本辦法。
發(fā)表于 03-18 22:17
?46次下載
高校實(shí)驗(yàn)室管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
隨著我國高校教學(xué)體制的改革和完善,出現(xiàn)了一些較為成熟的 實(shí)驗(yàn)室管理系統(tǒng) ,但這些系統(tǒng)往往側(cè)重于資產(chǎn)設(shè)備管理方面,在
發(fā)表于 08-15 09:45
?0次下載
實(shí)驗(yàn)室設(shè)備管理系統(tǒng)開發(fā)中的問題解決思路
針對(duì)當(dāng)前高校實(shí)驗(yàn)室設(shè)備管理的現(xiàn)狀,基于現(xiàn)實(shí)的需求,采用了JSP技術(shù)與SQL Server數(shù)據(jù)庫開發(fā)研制實(shí)驗(yàn)室設(shè)備管理系統(tǒng),并結(jié)合開發(fā)中遇到的
發(fā)表于 04-12 15:06
?55次下載
基于二維碼及小程序的實(shí)驗(yàn)室設(shè)備管理系統(tǒng)
針對(duì)實(shí)驗(yàn)室設(shè)備類型和數(shù)量繁多,造成設(shè)備管理工作復(fù)雜而繁瑣、實(shí)驗(yàn)室管理人員的工作強(qiáng)度高和壓力大等問題,提出基于二維碼技術(shù)及微信小程序的
發(fā)表于 04-23 10:11
?8次下載
計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)-ASP+ACCESS實(shí)驗(yàn)室設(shè)備管理系統(tǒng)(源代碼+論文)
計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)-ASP+ACCESS實(shí)驗(yàn)室設(shè)備管理系統(tǒng)(源代碼+論文)(樹莓派 電源12v)-計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)-ASP+ACCESS實(shí)驗(yàn)室
發(fā)表于 07-26 11:27
?13次下載
淺析RFID技術(shù)在學(xué)校實(shí)驗(yàn)室管理中的應(yīng)用
一直以來,多數(shù)高校實(shí)驗(yàn)室設(shè)備管理采取傳統(tǒng)手工方式,無法滿足當(dāng)前高校的發(fā)展需求。同時(shí),對(duì)于實(shí)驗(yàn)室設(shè)備的資產(chǎn)進(jìn)行清查時(shí)也多是通過掃描手寫編碼或是條形碼標(biāo)簽的方式進(jìn)行核實(shí),這樣的盤查效率極低
實(shí)驗(yàn)室設(shè)備定位管理系統(tǒng)
實(shí)驗(yàn)室設(shè)備定位管理系統(tǒng)是一種用于實(shí)驗(yàn)室設(shè)備管理和定位的系統(tǒng)
評(píng)論