这个项目会分模块分享,讲一下各个模块中遇到的问题以及运用到的技术
目录
登录注册模块
个人信息模块
部门模块
人事部模块
财务部模块
个人小结
个人信息模块
个人信息模块主要任务:显示该用户基本信息,显示工资条,上下班打卡,完善个人信息
在登录模块中,会传入登录的工号,用以判断显示谁的信息。
显示基本信息,当用户刚注册时,并没有基本信息,该如何显示。
利用插入None会报错的特性,用try 判断是否为未填写信息的用户
try:
for i in range(0,11):
self.labelinfo[i].setText(self.info[i])
except:
for i in range(0,11):
self.labelinfo[i].setText(" ")
调用datetime模块,显示打卡时间,将打卡时间记录在数据表中,并每日定时清理打卡数据库。
问题:
数据库怎么处理,上班打卡之后,下班打卡信息用update吗,那上班下班分开处理吗?如果分开处理,那些只打一次卡的情况如何处理?
我的方法是:获取当前时间,根据当前时间判断上下班打卡,分开处理,首先要设置数据库上下班的默认值,如果进行插入操作,则未被赋值的为默认值。
def insert_dika(self,jobnum,day,time):
if time < '09:30' and time > '08:00':
self.cursor.execute("insert into dika set 工号 = ('%s'),day = ('%s'),startWork = ('%s')"%(jobnum,day,time))
elif time > '18:00' and time < '22:59':
# 若记录存在则更新,不存在则插入
self.cursor.execute("insert into dika set 工号 = ('%s'),day = ('%s') ON DUPLICATE KEY UPDATE endWork = ('%s')"%(jobnum,day,time))
else:
pass
self.con.commit()
数据库操作 ON DUPLICATE KEY 如果出现重复主键,则更新。所以表首先要设置主键
定时操作是用apscheduler 模块处理,这么模块真的很神奇,可以很方便的设置定时任务,且不会阻塞主进程,定时任务会在线程池中不断的运行监视。
# 定时任务 -- 每天23:00 以后处理打卡信息
def delWithdika():
dbase = database()
dika_info = dbase.select_dika()
for i in range(0,len(dika_info)):
if dika_info[i][2] == '-1' or dika_info[i][