打卡系统
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