《嘉工资》--Python实现工资管理系统

这篇博客介绍了使用Python构建的工资管理系统,包括登录注册、个人信息、部门、人事部、财务部等模块。在个人信息模块中,系统能显示用户基本信息、工资条、上下班打卡功能,并通过datetime模块记录打卡时间。数据库操作采用ON DUPLICATE KEY更新策略,同时利用apscheduler模块进行定时任务,如发放工资条。代码中还处理了未填写信息的情况。
摘要由CSDN通过智能技术生成
这个项目会分模块分享,讲一下各个模块中遇到的问题以及运用到的技术

目录

登录注册模块

个人信息模块

部门模块

人事部模块

财务部模块

个人小结

个人信息模块

个人信息模块主要任务:显示该用户基本信息,显示工资条,上下班打卡,完善个人信息
在登录模块中,会传入登录的工号,用以判断显示谁的信息。
显示基本信息,当用户刚注册时,并没有基本信息,该如何显示。
利用插入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][
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值