打卡系统练习

这是一个关于在Linux系统中开发打卡系统的实践项目,包括main.c主程序文件,clock_in.h头文件,以及clock_in.c实现文件。
摘要由CSDN通过智能技术生成

打卡系统

main.c

#include "clock_in.h"

int main()
{
   
    clockin_machine_start();
    return 0;
}

clock_in.h

#ifndef __CLOCK_IN_H__
#define __CLOCK_IN_H__

#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>


#define ONEDAY 144                 //一天144秒
#define ONEHOUR 6                  //一小时6秒
#define WORKTIME 9                 //工作时间

typedef struct st
{
   
    int age;
    int number;
    int phone;
    char name[20];
    char sex[10];
    char email[20];
    struct work_inf{
   
        time_t clock_in_time;              //上班打卡时间
        time_t clock_out_time;             //下班打卡时间        
        //int clock_frequency;            //打卡次数
        int clock_in_frequency;           //班打卡次数
        int clock_out_frequency;           //下班打卡次数
        int be_late_number;                //迟到次数
        int leave_early_number;            //早退次数
     }work;
}st;

st s1,s2,s3,s4,s5;


int number_out;                    //下班打卡工号
time_t clock_in_time;              //上班打卡时间
time_t start_time;              //上班打卡时间
time_t clock_out_time;             //下班打卡时间
time_t clock_time;                  //判断打卡时间
time_t judge_time;                   //判断关机时间 
long int time_start;               //理论开机时间周一7am
int number_in;                        //上班打卡工号 

int clock_in_frequency[5];           //上班打卡次数
int clock_out_frequency[5];           //下班打卡次数
int be_late_number[5];                //迟到次数
int leave_early_number[5];            //早退次数    


void clockin_machine_start();           //打卡机
void creat_staff();                     //创建员工信息
int judge_staff(int num);               //判断工号
int clock_in();                         //上班打卡
int clock_out();                        //下班打卡
int clock_suc();                        //判断出勤
int Week_Report();                      //周报
void InsertSort1(int a[], int n);       //排序


#endif

clock_in.c

#include "clock_in.h"

void clockin_machine_start()          //打卡机
{
      
    int a,b;
    printf("开机\n");
    printf("=====================\n");
    start_time = time(NULL);                    //设定开机时间(s)
    //printf("%ld\n",start_time); 
    time_start=start_time+(ONEHOUR*7);   
    creat_staff();                              //创建员工信息
    //printf("%ld\n",time_start);

    while(1)
    {
   
        clock_time=time(NULL);                  //判断打卡时间
        if(((clock_time-start_time)%ONEDAY)/ONEHOUR<=12)  //上班打卡
        {
   
            a=clock_in();
            if(a==0)
            {
      
                if(number_in==s1.number)
                {
      
                    s1.work.clock_in_time=time(NULL);
                }
                else if(number_in==s2.number)
                {
      
                    s2.work.clock_in_time=time(NULL);
                    //printf("s2work=%ld\n",s2.work.clock_in_time);
                }
                else if(number_in==s3.number)
                {
      
                    s3.work.clock_in_time=time(NULL);
                    //printf("s2work=%ld\n",s3.work.clock_in_time);
                }   
                else if(number_in==s4.number)
                {
      
                    s4.work.clock_in_time=time(NULL);
                    //printf("s2work=%ld\n",s4.work.clock_in_time);
                }   
                else if(number_in==s5.number)
                {
     
                    s5.work.clock_in_time=time(NULL);
                    //printf("s2work=%ld\n",s5.work.clock_in_time);
                } 

                else
                {
   
                    printf("=============================\n");
                    printf("||       上班打卡失败      ||\n");
                    printf("||       请重新打卡!       ||\n");
                    printf("=============================\n");
                }
            }
        }
        else                                           //下班打卡
        {
   
            b=clock_out();
            if(b==0)
            {
   
                if(number_out==s1.number)
                {
   
                    s1.work.clock_out_time=time(NULL);
                }
                else if(number_out==s2.number)
                {
   
                    s2.work.clock_out_time=time(NULL);
                }
                else if(number_out==s3.number)
                {
   
                    s3.work.clock_out_time=time(NULL);
                }
                else if(number_out==s4.number)
                {
   
                    s4.work.clock_out_time=time(NULL);
                }
                else if(number_out==s5.number)
                {
   
                    s5.work.clock_out_time=time(NULL);
                }
                else
                {
   
                    printf("=============================\n");
                    printf("||       下班打卡失败      ||\n");
                    printf("||       请重新打卡!       ||\n");
                    printf("=============================\n");
                }
            }
        }
        //通过开机时间、打卡时间判断打卡是否成功
        clock_suc();
        
        judge_time=time(NULL
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joyce 周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值