打卡机

1.题目:

  Problem Description
LPRJ小工厂是刚兴起不久的标准工厂,每天早上八点开始上班,每天工作八小时,但是由于LPRJ小工厂近来员工懈怠于工作,经常迟到,于是经理LP决定用考勤打卡机来记录员工的上班时间,经理为了整顿一下员工的上班态度,决定员工每迟到半小时将扣除10元的工资,若不迟到员工每天的工资有80元,计算每位员工在今天可获得的工资。(要求用类完成)

 

Input
输入数据有多组,每组第一行输入一个整数T,代表接下去有T行员工测试数据
每位员工的资料包含工号,姓名,打卡时间(hh:mm);


Output
输出每位员工的信息以及当天可获得的工资。


  Sample Input
3
12078 LP 07:45
12080 shik 08:00
12012 junl 08:31

 

  Sample Output
12078 LP 07:45 80
12080 shik 08:00 80
12012 junl 08:31 60

 

有两种方法,一种是用整型的来接收时间,一种是用字符串的来接收。

 

 

2.代码一:

 

#include <iostream>
#include <cstring>
using namespace std;

class LPRJ
{

private:
    char id[21], name[21], temp[2];
    int hour, minute, money;

public:
    LPRJ(char a[], char b[], int c, char d[], int e);
    int count();
    void show();

};

LPRJ::LPRJ(char a[], char b[], int c, char d[], int e)
{
    strcpy(id, a);
    strcpy(name, b);
    hour = c;
    minute = e;
}

int LPRJ::count()
{

    int totle = hour * 60 + minute;

    if (totle <= 8 * 60)
        money = 80;
    else if (totle > 11 * 60 + 30)
        money = 0;
    else {
        if (minute == 0)
            money = 80 - (hour - 8) * 20;
        else {
            int i, sum = 0, a;

            for (i = 8; i < 12; i++) {
                if (minute > 0 && minute <= 30)
                    a = 1;
                else if (minute > 30 && minute <= 59)
                    a = 2;
            }

            sum += (hour - 8) * 2 + a;

            money = 80 - sum * 10;
        }
    }

    return money;
}

void LPRJ::show()
{
    printf("%s %s %02d:%02d %d\n", id, name, hour, minute, count());
}

int main()
{
    int hour, minute, t;
    char id[21], name[21], temp[2] = ":";

    while (cin >> t) {
        while (t--) {
            scanf("%s %s %d:%d", id, name, &hour, &minute);

            LPRJ w(id, name, hour, temp, minute);

            w.show();
        }
    }

    return 0;
}


 

 


 代码二:

 

#include<iostream>
#include<string>
using namespace std;

class Time
{

private:
    int id;
    string a;
    string b;
    int m;

public:
    Time(int i, string aa, string bb, int mm): id(i), a(aa), b(bb), m(mm)
    {}

    void set() {
        int t;
        t = ((b[0] - '0') * 10 + (b[1] - '0')) * 60 + (b[3] - '0') * 10 + b[4] - '0' - 480;
        if (t > 0) {
            if (t % 30 == 0)      m -= 10 * (t / 30);
            else       m -= 10 * (t / 30 + 1);
            if (m < 0)      m = 0;
        }
    }

    void show() {
        cout << id << ' ' << a << ' ' << b << ' ' << m << endl;
    }

};

int main()
{
    int t, id, i; string aa, bb;

    while (scanf("%d", &t) != EOF) {
        for (i = 0; i < t; i++) {
            cin >> id >> aa >> bb;

            Time w(id, aa, bb, 80);

            w.set();

            w.show();
        }
    }
    
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、使用须知 1 1.1 用BIOCLOCK 激活软件 2 2、绪论 5 2.1 基本概念 7 2.1.1 用户的登记 7 2.1.2 用户的验证 7 2.1.3 匹配阀值 8 2.1.4 用户的ID号码 9 2.1.5 权限级别 9 2.1.6 初始界面 9 2.2 指纹的按压方式 10 3、登记和验证过程 11 3.1 登记用户 12 3.2 检测登记效果 17 3.3 备份登记 17 3.4 验证身份 17 3.4.1 指纹验证 18 3.4.2 密码验证 18 3.4.3 ID+指纹 19 3.5 登记成功的提示 20 4、设置 21 4.1 系统设置 21 4.1.1 时间设置 22 4.1.2 语言 22 4.1.3 锁驱动 22 4.1.4 高级设置 22 4.2 电源管理 23 4.3 通讯设置 24 4.4 记录设置 25 4.5 门禁功能设置 26 4.5.1、时间段 的功能定义 26 4.5.2、用户门禁设置 27 4.5.3、分组功能定义 28 4.5.4、开锁组合功能定义 28 4.5.5、锁驱动时长 29 4.6 自动检测 29 5 系统信息 29 6 维护 31 7. 软件的安装与卸载 31 8. 考勤管理程序 37 8.1 外接程序 37 8.1.1 下载考勤数据 37 8.1.2 员工及其指纹管理 38 8.1.3 考勤机管理 43 8.2. 维护/设置 44 8.2.1 维护/设置 44 8.2.2 部门表 45 8.2.3 员工维护 47 8.2.4 管理员设置 58 8.2.5 时间段维护 62 8.2.6 班次管理 65 8.2.7 员工排班 67 8.2.8 节日表 71 8.2.9 假类设置 72 8.2.10 考勤规则 73 8.2.11 数据库设置 76 8.3. 考勤处理 78 8.3.1 考勤处理 78 8.3.2 员工公出/请假设置 79 8.3.3 员工忘签到处理 88 8.3.4 员工忘签退处理 90 8.3.5 集体迟到处理 90 8.3.6 集体早退处理 91 8.4. 查询/打印 91 8.4.1 查询/打印 91 8.4.2 出勤记录 91 8.4.3 当前员工在岗情况 98 8.4.4 考勤异常查询与报表 100 8.5 数据 113 8.5.1 数据菜单 113 8.5.2 初始化系统 114 8.5.3 清除过期数据 114 8.5.4 备份数据库 116 8.5.5 导入考勤数据 116 8.5.6 导出考勤数据 118 8.5.7 重新登录系统 119 8.5.8 退出 119 9 附录 120 9.1 操作提示 120 9.1.1 确定起止日期 120 9.1.2 确定日期 120 9.1.3 选择员工 120 9.1.4 选择部门 121 9.1.5 选择部门员工 121 9.1.6 数据表处理工具条 122 9.1.7 导出数据 122 9.2 软件使用许可协议 126 10 常见问题解答 128 10.1 硬件设备 128 10.2 管理程序 129

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值