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