ADD file via upload

master
hnu202178020123 3 years ago
parent 1e9d50570d
commit a2ca665f0c

@ -0,0 +1,447 @@
from PySide2.QtWidgets import QApplication,QMessageBox,QLineEdit,QTableWidgetItem
from PySide2.QtWidgets import QFileDialog
from PySide2.QtUiTools import QUiLoader
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
import sys
import os
class Login():#登录界面窗口
def __init__(self):
self.ui = QUiLoader().load('login.ui')
self.ui.Btn_Login.clicked.connect(self.open_main)
self.worrycount=0#错误计数
self.df=pd.read_excel('社区信息表 .xlsx',dtype=object)
self.pw=self.df[['电话','密码']]
def open_main(self):#登录
ID=self.ui.Login_User_Input.text()
PassWord=self.ui.Login_Pa_Input.text()
if ID in self.pw.values:
if ID=='admin' and PassWord==self.pw[self.pw['电话']==ID].iloc[0,1]:
self.w2= windowgly()#管理员登录
self.w2.ui.show()
self.ui.close()
elif PassWord==self.pw[self.pw['电话']==ID].iloc[0,1]:
row=list(self.df[self.df['电话']==ID].index)
self.w2= windowjm(ID,row[0])#居民登录
self.w2.ui.myself.insertRow(0)
self.w2.ui.myself.setItem(0,0, QTableWidgetItem(self.df.loc[row[0],'姓名']))
self.w2.ui.myself.setItem(0,1, QTableWidgetItem(self.df.loc[row[0],'单元']))
self.w2.ui.myself.setItem(0,2, QTableWidgetItem(self.df.loc[row[0],'楼栋']))
self.w2.ui.myself.setItem(0,3, QTableWidgetItem(str(self.df.loc[row[0],'房间'])))
self.w2.ui.show()
self.ui.close()
QMessageBox.information(self.ui,'公告',self.df.loc[0,'单元'])
# 11714584364
else:
#密码错误重试判断
if self.worrycount<3:
self.worrycount+=1
self.ui.Login_Pa_Input.clear()
self.ui.wgt.setText('密码错误,您还有{}次重试机会'.format(3-self.worrycount))
print('>>>密码错误\n>>>您还有{}次重试机会'.format(3-self.worrycount))
#重复的登录判断
#self.open_main()
else:
print('>>>密码错误次数过多\n>>>请联系系统管理员\n>>>终端关闭')
a=self.df[(self.df['电话']==ID)].index
self.df.loc[a,'0还是1']=1
self.df.to_excel('社区信息表 .xlsx',index=None)
QMessageBox.warning(self.ui,'密码错误次数过多','请联系系统管理员,终端关闭')
self.ui.close()
else:
print('>>>系统中没有此账号\n>>>请联系管理员')
self.ui.wgt.setText('系统中没有此账号,请联系管理员')
class windowgly():#管理员窗口
def __init__(self):
self.ui= QUiLoader().load('windowgly.ui')
self.row=0
self.Things=pd.read_excel('社区物资表 .xlsx',dtype=object)
self.df=pd.read_excel('社区信息表 .xlsx',dtype=object)
self.xsj=pd.read_excel('打卡表.xlsx',dtype=object)
self.ui.Wang_GTgg.append(self.df.loc[0,'单元'])
self.ui.changekey.clicked.connect(self.changekey)
self.ui.Zhou_SJ1.clicked.connect(self.show_frozenusers)
self.ui.rechangekey.clicked.connect(self.rechangekey)
self.ui.newgg.clicked.connect(self.newgg)
self.ui.lookthings.clicked.connect(self.lookthings)
self.ui.changethings.clicked.connect(self.changethings)
self.ui.things.cellChanged.connect(self.newthings)
self.ui.Yang_XT1.clicked.connect(self.lookyang)
self.ui.Yang_XT2.clicked.connect(self.lookmj)
self.ui.Tu.clicked.connect(self.bar_show)
self.ui.daka1.clicked.connect(self.daka)
self.ui.nodaka1.clicked.connect(self.nodaka)
self.ui.in_information.clicked.connect(self.in_information)
self.ui.out_information.clicked.connect(self.out_information)
self.ui.changeuser.clicked.connect(self.changeuser)
self.ui.close1.clicked.connect(self.close)
def changekey(self):#修改管理员密码
Newkey1=self.ui.newkey1.text()
Newkey2=self.ui.newkey2.text()
if(Newkey1!=Newkey2):
QMessageBox.warning(self.ui,'两次输入不一致','请重新输入')
else:
self.df.loc[0,'密码']=Newkey1
self.df.to_excel('社区信息表 .xlsx',index=None)
QMessageBox.information(self.ui,'修改成功','请重新登录')
self.w2=Login()
self.w2.ui.show()
self.ui.close()
def show_frozenusers(self):#查看冻结账号
for i in range(0,len(self.df)):
if self.df.loc[i,'0还是1']==1:
print('%d'%self.row)
self.ui.frozenu_sers.insertRow(self.row)
self.ui.frozenu_sers.setItem(self.row,0, QTableWidgetItem(self.df.loc[i,'姓名']))
self.ui.frozenu_sers.setItem(self.row,1, QTableWidgetItem(self.df.loc[i,'电话']))
self.row+=1
self.ui.rechangekey.setEnabled(True)
self.ui.Zhou_SJ1.setEnabled(False)
def rechangekey(self):#重置冻结账号密码
for i in range(0,len(self.df)):
if self.df.loc[i,'0还是1']==1:
self.df.loc[i,'0还是1']=0
self.df.loc[i,'密码']='123456'
self.ui.frozenu_sers.removeRow(0)
self.df.to_excel('社区信息表 .xlsx',index=None)
QMessageBox.information(self.ui,'重置成功','请继续下一步操作')
self.row=0
self.ui.Zhou_SJ1.setEnabled(True)
self.ui.rechangekey.setEnabled(False)
def newgg(self):#发布新的公告
text=self.ui.Wang_GTnew.toPlainText()
self.ui.Wang_GTgg.clear()
self.ui.Wang_GTgg.append(text)
QMessageBox.information(self.ui,'修改成功','请继续下一步操作')
self.df.loc[0,'单元']=text
self.df.to_excel('社区信息表 .xlsx',index=None)
def lookthings(self):#查看物资情况
for i in range(0,len(self.Things)):
self.ui.things.insertRow(self.row)
self.ui.things.setItem(self.row,0, QTableWidgetItem(self.Things.loc[i,'大类']))
self.ui.things.setItem(self.row,1, QTableWidgetItem(self.Things.loc[i,'类型']))
self.ui.things.setItem(self.row,2, QTableWidgetItem(self.Things.loc[i,'具体']))
self.ui.things.setItem(self.row,3, QTableWidgetItem(str(self.Things.loc[i,'数量'])))
self.ui.things.setItem(self.row,4, QTableWidgetItem(self.Things.loc[i,'单位']))
self.row+=1
self.row=0
self.ui.lookthings.setEnabled(False)
def newthings(self,x,y):#修改物资情况
newthings=self.ui.things.item(x,y).text()
self.Things.iloc[x,y]=newthings
def changethings(self):#确认修改物资情况
self.Things.to_excel('社区物资表 .xlsx',index=None)
QMessageBox.information(self.ui,'修改成功','请继续下一步操作')
self.ui.lookthings.setEnabled(True)
def lookyang(self):#查看阳性名单
for i in list(self.df[self.df['核酸']==''].index):
self.ui.Yangtable.insertRow(self.row)
yxt=self.df.loc[i,'单元']+self.df.loc[i,'楼栋']+str(self.df.loc[i,'房间'])
self.ui.Yangtable.setItem(self.row,0, QTableWidgetItem(self.df.loc[i,'姓名']))
self.ui.Yangtable.setItem(self.row,1, QTableWidgetItem(yxt))
self.ui.Yangtable.setItem(self.row,2, QTableWidgetItem(self.df.loc[i,'电话']))
self.row+=1
self.row=0
print(1)
self.ui.Yang_XT1.setEnabled(False)
def lookmj(self):#查看密接人员
yxt=self.df[['姓名','单元','楼栋','房间','核酸','电话']]
str_value_list=[]
for row_index,row in yxt.iterrows():
str1=str(row['单元'])
str2=str(row['楼栋'])
str3=str(row['房间'])
str_value=str1[0]+str2[0]+str3
str_value_list.append(str_value)
yxt['编码']=str_value_list
yxt=yxt.set_index('编码')
yx=yxt[yxt['核酸']=='']
list1=[i for i in yx.index]
yx=yx.set_index('姓名')
for i in list1:
for row_index,row in yxt.iterrows():
if row_index[0:2]==i[0:2]:
self.ui.mjtable.insertRow(self.row)
yxtt=row['单元']+row['楼栋']+str(row['房间'])
self.ui.mjtable.setItem(self.row,0, QTableWidgetItem(row['姓名']))
self.ui.mjtable.setItem(self.row,1, QTableWidgetItem(yxtt))
self.ui.mjtable.setItem(self.row,2, QTableWidgetItem(row['电话']))
self.row+=1
self.row=0
self.ui.Yang_XT2.setEnabled(False)
def bar_show(self):#查看统计图
yx=self.df[self.df['核酸']=='']
list1=[i for i in yx.index]
yx=yx.set_index('姓名')
list2=[]
for i in list1:
for row_index,row in self.df.iterrows():
if str(row_index)[0:2]==str(i)[0:2]:
list2.append(row)
df_mj=pd.DataFrame(list2)
matplotlib.rcParams['font.family']='simHei'
matplotlib.rcParams['axes.unicode_minus'] =False
dy_list=self.df['单元'].unique()
y1=[]
y2=[]
for i in dy_list:
y1.append(len(yx[yx['单元']==i]))
for i in dy_list:
y2.append(len(df_mj[df_mj['单元']==i]))
x = range((len(dy_list)))
p1=plt.bar(x, y1, width=0.2,color='red',label='阳性')
p2=plt.bar([i + 0.2 for i in x], y2, width=0.2, color='orange',label='密接')
plt.xticks([i + 0.1 for i in x], dy_list)
plt.bar_label(p1,label_type='edge')
plt.bar_label(p2,label_type='edge')
plt.ylabel('人数')
plt.xlabel('单元')
plt.title('小区阳性及密接统计')
plt.legend()
plt.show()
def daka(self):#查看打卡情况
for i in range(0,len(self.xsj)):
self.ui.daka2.insertRow(self.row)
self.ui.daka2.setItem(self.row,0, QTableWidgetItem(self.xsj.loc[i,'姓名']))
self.ui.daka2.setItem(self.row,1, QTableWidgetItem(self.xsj.loc[i,'打卡情况']))
self.ui.daka2.setItem(self.row,2, QTableWidgetItem(self.xsj.loc[i,'今日所在地']))
self.ui.daka2.setItem(self.row,3, QTableWidgetItem(self.xsj.loc[i,'健康码状态']))
self.ui.daka2.setItem(self.row,4, QTableWidgetItem(self.xsj.loc[i,'是否核酸']))
self.ui.daka2.setItem(self.row,5, QTableWidgetItem(self.xsj.loc[i,'是否隔离']))
self.row+=1
self.row=0
def nodaka(self):#查看未打卡名单
for i in range(0,len(self.xsj)):
if(self.xsj.loc[i,'打卡情况']==''):
self.ui.nodaka2.insertRow(self.row)
self.ui.nodaka2.setItem(self.row,0, QTableWidgetItem(self.xsj.loc[i,'姓名']))
self.row+=1
self.row=0
def in_information(self):#导入居民信息
filePath, _ = QFileDialog.getOpenFileName(
self.ui,"选择你导入的文件", r"d:", "类型 (*.xlsx *.xls )")
in1=pd.read_excel(filePath,dtype=object)
#in1即为想要导入的文件将它拼接上去再写入即可
print(in1)
print(filePath)
QMessageBox.information(self.ui,'','导入成功')
def out_information(self):#导出居民信息
filePath, _ = QFileDialog.getSaveFileName(
self.ui,"导出居民信息",r"d:","类型 (*.xlsx)" )
print(filePath)
self.df.to_excel(filePath)
QMessageBox.information(self.ui,'','导出成功')
def changeuser(self):#切换账号
choice = QMessageBox.question(
self.ui,
'确认',
'确定要切换账号吗?')
if choice == QMessageBox.Yes:
self.w2= Login()
self.w2.ui.show()
self.ui.close()
if choice == QMessageBox.No:
print('你选择了no')
def close(self):#退出
choice = QMessageBox.question(
self.ui,
'确认',
'真的要离开吗qaq')
if choice == QMessageBox.Yes:
self.ui.close()
if choice == QMessageBox.No:
print('你选择了no')
class windowjm():#居民端窗口
def __init__(self,ID,index):
self.ui= QUiLoader().load('windowjm.ui')
self.id=ID
self.index=index
self.row=0
self.Things=pd.read_excel('社区物资表 .xlsx',dtype=object)
self.df=pd.read_excel('社区信息表 .xlsx',dtype=object)
self.xsj=pd.read_excel('打卡表.xlsx',dtype=object)
self.applything=pd.read_excel('物资申请表.xlsx',dtype=object)
self.ui.changekey.clicked.connect(self.changekey)
self.ui.lookthings.clicked.connect(self.lookthings)
self.ui.addthings.clicked.connect(self.addthings)
self.ui.myself.cellChanged.connect(self.newmyself)
self.ui.changemyself.clicked.connect(self.changemyself)
self.ui.checkYXT.clicked.connect(self.checkYXT)
self.ui.delete2.clicked.connect(self.delete)
self.ui.sign.clicked.connect(self.sign)
self.ui.lookhistory.clicked.connect(self.history)
self.ui.changeuser.clicked.connect(self.changeuser)
self.ui.close1.clicked.connect(self.close)
self.ui.Wang_GTgg.append(self.df.loc[0,'单元'])
self.ui.province.setText('湖南')
self.ui.city.setText('长沙')
self.ui.area.setText('岳麓')
def changekey(self):#修改密码
Newkey1=self.ui.newkey1.text()
Newkey2=self.ui.newkey2.text()
row=self.index
if(Newkey1!=Newkey2):
QMessageBox.warning(self.ui,'两次输入不一致','请重新输入')
else:
self.df.loc[row,'密码']=Newkey1
self.df.to_excel('社区信息表 .xlsx',index=None)
QMessageBox.information(self.ui,'修改成功','请重新登录')
self.w2=Login()
self.w2.ui.show()
self.ui.close()
def lookthings(self):#查看物资情况
for i in range(0,len(self.Things)):
self.ui.things.insertRow(self.row)
self.ui.things.setItem(self.row,0, QTableWidgetItem(self.Things.loc[i,'大类']))
self.ui.things.setItem(self.row,1, QTableWidgetItem(self.Things.loc[i,'类型']))
self.ui.things.setItem(self.row,2, QTableWidgetItem(self.Things.loc[i,'具体']))
self.ui.things.setItem(self.row,3, QTableWidgetItem(str(self.Things.loc[i,'数量'])))
self.ui.things.setItem(self.row,4, QTableWidgetItem(self.Things.loc[i,'单位']))
self.row+=1
self.row=0
print('lalal')
#self.ui.lookthings.setEnabled(False)
def addthings(self):#增加申领物资
self.ui.thingsadd.insertRow(self.row)
self.row+=1
print(self.row)
def delete(self):#删除申领物资
row=self.ui.deleterow.text()
row=int(row)-1
self.ui.thingsadd.removeRow(row)
self.row-=1
print(row)
def checkYXT(self):#确认申领取物资ID(电话号码/账号)df(社区物资表)df1(物资申请表)yxt(社区信息表)
yxt_dict={}; ID=self.id; df=self.Things
df1=self.applything; yxt=self.df
row=self.ui.thingsadd.rowCount()
for x in range(row):
key=self.ui.thingsadd.item(x,0).text()
value=self.ui.thingsadd.item(x,1).text()
yxt_dict[key]=value
print(yxt_dict)
list1=[]
dict2={}
for key,value in yxt_dict.items():
for row_index, row in df.iterrows():
if row['具体']==key:
dict1=dict(row)
df.loc[row_index,'数量']=int(df.loc[row_index,'数量'])-int(value)
dict1['数量']=value
dict1['电话']=ID
list1.append(dict1)
break
df2=pd.DataFrame(list1)
df=df.set_index('大类')
df.to_excel('社区物资表 .xlsx')
df1=df1.append(df2,ignore_index=True)
for row_index,row in yxt.iterrows():
dict2[row['姓名']]=row['电话']
for i in df1.index:
for key,value in dict2.items():
if value==str(df1.loc[i,'电话']):
df1.loc[i,'姓名']=key
df1=df1.set_index('姓名')
df1.to_excel('物资申请表.xlsx')
yxt_dict.clear()
print(yxt_dict)
QMessageBox.about(self.ui,'申请成功','请等待管理员审核')
def history(self):#df1(物资申请表)
ID=self.id; df1=self.applything
for row_index ,row in df1.iterrows():
if row['电话']==ID:
self.ui.thingshistory.insertRow(self.row)
self.ui.thingshistory.setItem(self.row,0, QTableWidgetItem(row['具体']))
self.ui.thingshistory.setItem(self.row,1, QTableWidgetItem(str(row['数量'])))
self.row+=1
print(row['具体'],row['数量']) #
self.row=0
def newmyself(self,x,y):#读取修改的个人信息
newmyself=self.ui.myself.item(x,y).text()
if(y==0):
self.df.loc[self.index,'姓名']=newmyself
elif(y==1):
self.df.loc[self.index,'单元']=newmyself
elif(y==2):
self.df.loc[self.index,'楼栋']=newmyself
else:
self.df.loc[self.index,'房间']=int(newmyself)
print(newmyself)
def changemyself(self):#确认修改个人信息
self.df.to_excel('社区信息表 .xlsx',index=None)
QMessageBox.information(self.ui,'修改成功','请继续下一步操作')
def sign(self):#打卡
adress=self.ui.province.text()+''+self.ui.city.text()+''+self.ui.area.text()+''
adress=adress+self.ui.detail.text()
jkm=self.ui.jkm.checkedButton().text()
hs=self.ui.hs.checkedButton().text()
gl=self.ui.geli.checkedButton().text()
self.xsj.loc[self.index-1,'打卡情况']='Yes'
self.xsj.loc[self.index-1,'今日所在地']=adress
self.xsj.loc[self.index-1,'健康码状态']=jkm
self.xsj.loc[self.index-1,'是否核酸']=hs
self.xsj.loc[self.index-1,'是否隔离']=gl
print(adress,jkm,hs,gl)
self.xsj.to_excel('打卡表.xlsx',index=None)
QMessageBox.about(self.ui,'','您已完成今日打卡')
def changeuser(self):#切换账号
choice = QMessageBox.question(
self.ui,
'确认',
'确定要切换账号吗?')
if choice == QMessageBox.Yes:
self.w2= Login()
self.w2.ui.show()
self.ui.close()
if choice == QMessageBox.No:
print('你选择了no')
def close(self):#退出
choice = QMessageBox.question(
self.ui,
'确认',
'真的要离开吗qaq')
if choice == QMessageBox.Yes:
self.ui.close()
if choice == QMessageBox.No:
print('你选择了no')
if __name__ == '__main__':
app = QApplication.instance()
if app is None:
app = QApplication(sys.argv)
zp = Login()
zp.ui.show()
sys.exit(app.exec_())
Loading…
Cancel
Save