【IT】关于Code打卡机时遇到的问题及解决

news/2024/10/28 0:16:10/

用C语言编写打卡机

  • 任务描述
  • 开发环境
  • 代码结构
  • 在Code过程中遇到的问题和解决
    • C语言里没有class的,可以写 .c 和 .h 把代码从main() 里分离出来
    • static 和 extern 定义的变量的使用
    • 指针和数组的使用
    • goto跳出循环的使用
    • 常用的函数及库函数
    • QT Creator 设置编辑好的注释块添加注释格式

任务描述

一款记录员工上下班打卡时间的C语言程序。首先输入员工的编号以及验证码。验证码的输入有三次机会。输入正确的验证码,程序会询问员工是否要打卡。

每天要记录上班和下班的打卡时间。是否迟到以及加班时间长短也要同时记录到员工当天的信息里去。实行弹性工作制,迟到的计算要考虑到上一天的加班时长。

下班的时候打卡会记录当天的工作时长,如果没有达到规定的上班时长,程序会询问是否要重新打卡,获得员工的输入之后再记录。

每周五下班之后生成本周的考勤记录,记录里包括本周上班的平均时长、迟到和早退的次数以及缺卡次数。

开发环境

Windows 10
QT Creator 4.11.1(Community)

代码结构

打卡机flowchart的流程图:

Created with Raphaël 2.2.0 提示输入用户信息 员工编号、验证码 判断验证码是否正确 确认? 结束 yes no

在Code过程中遇到的问题和解决

C语言里没有class的,可以写 .c 和 .h 把代码从main() 里分离出来

  • C语言仅仅支持的容器时原生数组,字符串是用原生字符数组来实现的
  • 可以用struct存储不同类型的数据项[^1]
#include <stdio.h>2#include <time.h>34int main(int argc, char *argv[]) {5    char len[20] = {0};67    time_t timep;8    time(&timep);9
10    struct tm *p;
11    p = gmtime(&timep);
12
13    snprintf(len, 20, "%d-%d-%d %d:%d:%d", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday, 8 + p->tm_hour, p->tm_min, p->tm_sec);
14
15    printf("\n%s\n", len);
16    return 0;
17}

运行结果

1baoshaohua:test bao$ ./test 
2
32020-3-25 9:51:42
4baoshaohua:test bao$ 

static 和 extern 定义的变量的使用

  • 在程序中按照星期的每一天定义了两个一维int数组,在每个数组里存储了打卡的时间、星期一到星期五分别以数字1 - 5来代替、加班时长和是否早退的信息。这十个int类型的一维数组定义为static在包含main()方法的main.c里, 其它文件里使用extern关键字来获取这些变量。
main.cint WEEKDAY_DATA_IN[10];
calculatorAndWriteData.cextern int WEEKDAY_DATA_IN[10];
  • static 和 extern的区别
staticextern
只能在本文件中访问,写在方法外部用来获取全局变量的值
只有一份内存不能用于定义变量
所有文件共享extern联合使用先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找

指针和数组的使用

  • 在转换系统当前时间为一个 int 类型的数组时,返回值用了指针,因为在C语言里是不能返回数组的。
  • int 类型的数组用来存放关于时间的信息,包括 {second, minute, hour, day in month, month, year, day in week, amount of extra work, if late to work}
  • 指针在使用前必须先赋值

goto跳出循环的使用

  • 和 goto 有同样功能可以跳出循环的有 return 和 break
  • retuen 是跳出整个函数体,break跳出循环体执行下一行代码
  • goto 它本身有一个label 用来标记从循环体跳出后去哪里执行,有可能是循环体的下一行代码或者是函数体的某个位置

常用的函数及库函数

  • 在代码里用到的函数有 scanf, printf, sort, fopen, getchar, putchar, malloc, free, abs, pow等
  • UTF-8的编码格式输出不了中文,应采用GBK系列的编码

QT Creator 设置编辑好的注释块添加注释格式

设置QT添加注释


http://www.ppmy.cn/news/144388.html

相关文章

人脸识别打卡机怎么调sj_人脸识别考勤机怎么代打卡

展开全部 人脸识别考32313133353236313431303231363533e59b9ee7ad9431333431363632勤机无法代为打卡。 无法代为打卡的原因&#xff1a; 1、人脸识别考勤机将射频及光学感应技术和数码摄像技术相互结合&#xff0c;在用指纹或感应卡打卡的同时&#xff0c;自动拍摄员工的图像信…

【开发教程10】AI语音人脸识别(会议记录仪/人脸打卡机)-WIFI-TCP网络通信

CC3200AI实验教程 ——疯壳开发板系列 WIFI-TCP网络通信 TCP&#xff08;Transmission Control Protocol 传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c;TCP与UDP的主要区别如表1.0.1所示。 表1.0.1 TCP与UDP的…

C语言-打卡机(sqlite数据库、多线程)

C语言-打卡机 一.功能1.上班打卡2.下班打卡3.设置每日工作时长4.测试需要6s1h5.弹性打卡制6.周报 二.整体构思三.自定义时间四.Sqlite3数据库基本操作&#xff08;增删改查&#xff09;及其封装形式五.打卡机&#xff1a;多线程同时实现定时自动退出和用户主动退出六.通过宏定义…

打卡机核心功能实现(C语言)

打卡机核心功能实现&#xff08;C语言&#xff09; 任务分析 应市场需求&#xff0c;某工程师现设计了一款新上下班打卡机&#xff0c;打卡机具有以下功能&#xff1a; &#xff08;1&#xff09;上班打卡&#xff0c;员工具有编号&#xff08;首位为 1 的六位编号&#xff0…

用树莓派制作刷脸打卡机——硬件部分

软件部分&#xff1a;https://blog.csdn.net/d_l_w_d_l_w/article/details/112273581 一.上手树莓派 1.安装系统 1.1 下载链接&#xff1a; ​ https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit 1.2写入镜像 使用 Win32DiskImager 写入 …

用 node-xlsx 将从打卡机中导出的考勤信息处理生成考勤表

导出来的考勤信息表&#xff08;只是获取打卡信息并处理成报表.xlsx , 初始的表格没了&#xff09; 下图是 “报表.xlsx ” 看起来乱糟糟的&#xff0c;虽然能看但是需要花费大量的精力去处理才能成标准表格&#xff0c;下面我直接上代码&#xff08;代码里已有注释&#xff09…

视频打卡机是否可以应用了?

从GOOGLE近来公布的视频来看&#xff0c;视频识别还是蛮高的。举个例子&#xff0c;如果用在公司打卡上&#xff0c;就非常方便&#xff0c;只要从门口走进来&#xff0c;视频摄像头对准录一下&#xff0c;就可以实现打卡了&#xff0c;无接触&#xff0c;无停留。 如下图这样…

OpenHarmony成长计划#校园极客秀#碰一碰智能NFC打卡机

作品创意 NFC——近距离无线通讯技术目前已成为我们生活中随处可见、随手可用的技术&#xff0c;它可以提供轻松、安全、迅速的通信无线连接&#xff0c;被广泛地应用于各种场合&#xff0c;如公交一卡通、学生校园卡等。现在越来越多的智能手机都有NFC的功能&#xff0c;在这…