shell模拟考勤程序(无数据库)

1:用户信息维护

 2:上班签到
3:下班签出
4:缺勤信息查阅

5:退出

考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
用户信息维护:提供用户添加、删除功能如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择考勤信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。

根据下面代码路径提前创建文件userinfo.dat,check.dat

#!/bin/bash

USER_FILE="userinfo.dat"
RECORD_FILE="check.dat"

# 检查文件是否存在,若不存在则创建
[ ! -f "$USER_FILE" ] && touch "$USER_FILE"
[ ! -f "$RECORD_FILE" ] && touch "$RECORD_FILE"

# 添加用户
function add_user() {
  read -p "请输入要添加的用户名: " new_username
  read -s -p "请输入密码: " new_password
  if ! grep -q "^$new_username:" "$USER_FILE"; then
    echo "$new_username:$new_password" >> "$USER_FILE"
    echo "用户添加成功"
  else
    echo "用户已存在"
  fi
}

# 删除用户
function delete_user() {
  read -p "请输入要删除的用户名: " del_username
  if grep -q "^$del_username:" "$USER_FILE"; then
    sed -i "/^$del_username/d" "$USER_FILE"
    echo "用户删除成功"
  else
    echo "用户不存在"
  fi
}

# 上班签到
function clock_in() {
  read -p "请输入用户名: " username
  read -s -p "请输入密码: " password
  if grep -q "^$username:$password$" "$USER_FILE"; then
    currentTime=$(date +%H%M)
    if (( currentTime > 800 )); then
      echo "迟到"
      echo "$(date) - $username 迟到" >> "$RECORD_FILE"
    else
      echo "签到成功"
    fi
  else
    echo "用户名或密码错误"
  fi
}

# 下班签出
function clock_out() {
  read -p "请输入用户名: " username
  read -s -p "请输入密码: " password
  if grep -q "^$username:$password$" "$USER_FILE"; then
    currentTime=$(date +%H%M)
    if (( currentTime < 1800 )); then
      echo "早退"
      echo "$(date) - $username 早退" >> "$RECORD_FILE"
    else
      echo "签出成功"
    fi
  else
    echo "用户名或密码错误"
  fi
}

# 考勤信息查询
function check_records() {
  read -p "请输入用户名查询考勤记录: " query_username
  grep "$query_username" "$RECORD_FILE"
}

# 用户信息维护
function manage_users() {
  echo "用户信息维护"
  echo "1. 添加用户"
  echo "2. 删除用户"
  echo "3. 返回主菜单"
  read -p "请选择功能编号: " choice
  case $choice in
    1) add_user ;;
    2) delete_user ;;
    3) return ;;
    *) echo "无效选择" ;;
  esac
}

# 主程序循环
while true; do
  echo "===== 考勤管理系统 ====="
  echo "1. 用户信息维护"
  echo "2. 上班签到"
  echo "3. 下班签出"
  echo "4. 考勤信息查询"
  echo "5. 退出"
  read -p "请选择功能编号: " main_choice
  case $main_choice in
    1) manage_users ;;
    2) clock_in ;;
    3) clock_out ;;
    4) check_records ;;
    5)
      echo "谢谢使用,再见!"
      exit 0
      ;;
    *) echo "无效选择" ;;
  esac
done

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值