点名考勤系统

自编一个在已有名单基础上的点名考勤系统,简单实用

首先需准备人同名单:用记事本即可,每行一个,空行会自动剔除。

 

全部代码如下:

import os
import tkinter as tk
import tkinter.messagebox as msgbox
from datetime import date
def cb_checked():
    l1['text'] = []
    global name1
    for ctr, int_var in enumerate(cb_intvar):
        if int_var.get():
            l1['text'] = '%s,' %(l1['text'].strip()+names[ctr].strip())
    name1 = l1['text'].split(',')
    l2.configure(text=len(name1)-1)
    l4.configure(text=str(len(names)-len(name1) + 1))
    if l1['text']:
        b1.configure(command=insert_kq, background='yellow')
    else:
        b1.configure(command=insert_kqbky,background='gray')
def opentxt1():
    f = open('人员名单.txt', 'r')  # x创建,a追加,w写入
    global names
    txt=[]
    for line in f.readlines():
        if line != '\n':
            txt.append(line)
    names=list(txt)
def insert_kq():
    if name1!=[]:
        file1 = open('抽签名单.txt', 'w')
        file2 = open('考勤在位名单.txt', 'w')
        file = open('考勤记录.txt', 'a')
        file.write(str(date.today()) + ' 考勤信息 ')
        file.write('(应到%d人,实到%d人):\n'%(len(names),len(name1)-1))
        for i in range(len(name1)):
            if name1[i]!='':
                s = str(name1[i]+'\n')
                file.write(s)
                file1.write(s)
                file2.write(s)
        file.close()
        file2.close()
        file1.close()
        b1.configure(command=insert_kqbky, background='gray')
        msgbox.askokcancel('提示', '考勤信息已登记!是否转到抽签系统?')
        if True:
            root.destroy()
    else:
        msgbox .showerror('错误提示', '未选取任何人!')
def insert_kqbky():
    if name1 == []:
        msgbox.showerror('错误提示', '未选取任何人!')
    else:
        msgbox.showerror('错误提示', '请勿重复登记!')
def qcsyjl():
    file1 = open("考勤记录.txt", "r")
    file2 = open('考勤记录(备份).txt', 'a')
    s = file1.read()
    file2.write(s)
    file1.close()
    file2.close()
    os.remove('.\考勤在位名单.txt')
    os.remove('.\考勤记录.txt')
    msgbox.showerror('提示', '已删除:考勤记录、考勤在位名单!')
root = tk.Tk()
root.state("zoomed")
opentxt1()
cb_intvar = []
name1= []
i=12
j=0
l3 = tk.Label(root, bg='white', text='总人数:' + str(len(names)), font=('微软雅黑', 20))  # 总人数统计
l3.grid(row=0, column=0, sticky='e')
l0 = tk.Label(root, bg='white', text='选中数:', font=('微软雅黑', 20))#选中数标签
l0.grid(row=0, column=1,sticky='e')
l2 = tk.Label(root, bg='lightgreen', text='', font=('微软雅黑', 20))  #选中数量
l2.grid(row=0, column=2, sticky='w')
l5 = tk.Label(root, bg='white', text='缺席人数:', font=('微软雅黑', 20))#未到位人数标签
l5.grid(row=0, column=3,sticky='e')
l4 = tk.Label(root, bg='goldenrod', text='', font=('微软雅黑', 20))#未到位人数
l4.grid(row=0, column=4,sticky='w')
l1 = tk.Label(root, bg='green', text='', width=60, font=('微软雅黑', 20))  # 选中内容清单
b1 = tk.Button(root,text='登记考勤信息',background='gray',font=('微软雅黑',18),command=insert_kqbky)
b1.grid(row=0, column=5,padx=5,pady=5)
b2 = tk.Button(root,text='清空考勤信息记录',background='red',font=('微软雅黑',18),command=qcsyjl)
b2.grid(row=1, column=5,padx=5,pady=5)
for k in names:
    cb_intvar.append(tk.IntVar())
    tk.Checkbutton(root, text=k.strip(), variable=cb_intvar[-1],width = 11,font=('微软雅黑', 20),
       indicatoron = False,anchor = 'center',bg='white', relief = 'groove',selectcolor = 'limegreen',
       command=cb_checked).grid(row=i//6, column=j%6, sticky='w',padx=18,pady=5)
    i += 1
    j += 1
root.mainloop()

因配合抽签系统,代码中加入了准备抽签的在位人员名单,为方便测试,加了生成文档的删除按钮,可根据需要修改。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值