考勤管理代码:python基础练手用的

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/pingsha_luoyan/article/details/98622432

需求;

1.统计考勤表中一共有多少个打卡用户

2.每个用户打卡多少次

3.每个用户应该打卡多少次

4.每个用户正常打卡多少次

5.主程序,整个四个需求

#encoding:utf-8
import pandas as pd
import config
def need_01():
    csv_info= pd.read_csv(config.url,usecols=[1])
    csv_list=csv_info["姓名"]
    csv_list=list(csv_list)
    csv_set=set(csv_list)
    return len(csv_set)


#encoding:utf-8
import csv
import config
def need_02():
    with open(config.url, 'r', encoding="utf-8") as mycsvfile:
        data = list(csv.reader(mycsvfile))
        data.pop(0)
    dic = {}
    for i in range(len(data)):
        if data[i][10] != "未打卡":
            if data[i][1] not in dic:
                dic[data[i][1]] = 1
            else:
                dic[data[i][1]] += 1
    for a, b in dic.items():
        print (a, "打卡", b, "次")
# encoding:utf-8
import csv
import config
import pandas
from datetime import datetime
# 将用户名去重,得到所有的用户列表
def get_username():
    csv_info= pandas.read_csv(config.url,usecols=[1])
    csv_list=csv_info["姓名"]
    csv_list=list(csv_list)
    csv_set=set(csv_list)
    user_list=list(csv_set)
    user_new_list=[]
    first_time=0
    last_time=0
    days=0
    week=1
    for user in user_list:
        user_new_list.append([user,first_time,last_time,0,days,week])
    # print(user_new_list)
    return user_new_list
# 获得所有的用户名和用户时间
def get_userNameAndTime():
    reader = list(csv.reader(open(config.url, encoding='utf-8')))
    list_nameAndTime=[]
    i = 0
    for re in reader:
        if i==0:
            i=1
            continue
        list_nameAndTime.append([re[0],re[1]])
    return list_nameAndTime
def need_03(user_list,list_time):
    for i in range(len(list_time)):
        for j in range(len(user_list)):
            if list_time[i][1]==user_list[j][0] and user_list[j][3]==0:
                user_list[j][1]=list_time[i][0]
                user_list[j][3]=1
            if list_time[i][1]==user_list[j][0]:
                user_list[j][2] = list_time[i][0]
    return user_list
def get_need_03(list_time_new):
    for i in range(len(list_time_new)):
        date_first=datetime.strptime(list_time_new[i][1],"%Y/%m/%d")
        date_last=datetime.strptime(list_time_new[i][2],"%Y/%m/%d")
        days=date_last-date_first
        day=days.days
        list_time_new[i][3]+=day
        week = datetime.strptime(list_time_new[i][1], "%Y/%m/%d").weekday()
        # print(type(week))
        list_time_new[i][5]+=week
        # print(len(list_time_new))
        # print(type(list_time_new[i][4]))
    return list_time_new
def by_days_week_get_count(list):
    for i in range(len(list)):
        days=list[i][3]
        x=days//7
        list[i][4]=x*6
        y=days%7
        if y!=0:
            temp=y+list[i][5]
            if temp>=7:
                list[i][4]=list[i][4]+y-1
            else:
                list[i][4]=list[i][4]+y
    return list
# encoding:utf-8
import config
import csv
import pandas

# 将用户名去重,得到所有的用户列表
def get_username():
    csv_info= pandas.read_csv(config.url,usecols=[1])
    csv_list=csv_info["姓名"]
    csv_list=list(csv_list)
    csv_set=set(csv_list)
    user_list=list(csv_set)
    user_new_list=[]
    count=0
    for user in user_list:
        user_new_list.append([user,count])
    # print(user_new_list)
    return user_new_list
# 将用户名存储到字典中,方便统计正常打卡次数
# def get_dict(user_list):
#     user_dict={}
#     count=0
#     for user in user_list:
#         user_new=user
#         user_dict[user_new]=count
#     return user_dict
def need_way_04(user_list):
    reader = list(csv.reader(open(config.url, encoding="utf-8")))
    list_user = get_username()
    for i in range(len(reader)):
        for j in range(len(list_user)):
            if reader[i][1] == list_user[j][0] and reader[i][10] == "正常":
                list_user[j][1] += 1
    for us in list_user:
        print("%s 正常打卡的次数是:%s" % (us[0], us[1]))
# encoding:utf-8
import wyf_quchong
import block_04_yanzhenxing
import liu_count
import major_03_yangjun
import config

if __name__ == '__main__':
    print("需求代号")
    print("1:统计考勤表中一共有多少个打卡用户")
    print("2:每个用户打卡多少次")
    print("3:每个用户应该打卡多少次")
    print("4:每个用户正常打卡多少次")
    print("Q:退出程序")
    while 1:
        try:
            print("请输入需求代号")
            need = input("请输入需求代号:例如:1--->")
            if need == "Q":
                break
            if need == str(1):
                print("需求1查询结果:%s" % wyf_quchong.need_01())
                continue
            if need == str(2):
                print("需求2查询结果:")
                liu_count.need_02()
                continue
            if need == str(3):
                print("需求3查询结果: ")
                user = major_03_yangjun.get_username()
                userAndDate = major_03_yangjun.get_userNameAndTime()
                time1 = major_03_yangjun.need_03(user, userAndDate)
                print(time1)
                time2 = major_03_yangjun.get_need_03(time1)
                print(time2)
                count = major_03_yangjun.by_days_week_get_count(time2)
                for i in range(len(time2)):
                    print("%s 应该打卡 %s 次" % (count[i][0], count[i][4] * 2))
                continue
            if need == str(4):
                print("需求4查询结果: ")
                list = block_04_yanzhenxing.get_username()
                block_04_yanzhenxing.need_way_04(list)
                continue
            if need != str(1) and need != str(2):
                if need != str(3) and need != str(4):
                    if need != "Q":
                        print("请输入正确的需求代号:正确的需求代号为:1,2,3,4")
                        continue
        except:
            print('csv文件格式或地址不正确')
            continue

猜你喜欢

转载自blog.csdn.net/pingsha_luoyan/article/details/98622432