用shell设计一个考勤模拟程序,1、脚本启动时首先输出一些初始信息,包括程序名称与编者学号、当前的日期与时间、适当的问候语等,格式自定。例如: ***** routine v1.0 by 202202098 ***** Good Morning!用户名 Today is Tue June 12 19:25:30 CST 2023 2、考勤程序运行后,首先验证用户输入的工号和密码。如果正确则成功登录系统;如果错误,则提示用户重新输入,如果输入密码超过3次,提示用户联系管理员。工号和密码信息保存在userinfo.dat中。 用户登录成功后,实现如下功能选择界面: ********* MENU ********* 欢迎使用XXX考勤系统! 1-上班签到 2-下班签出 3-缺勤信息查阅 4-退出 3、如果是上班签到,记录签到信息,如果签到时间大于上午9时,则提示用户迟到,并记录该迟到信息到check+工号.dat文件中(例如:工号为1001的用户上班签到时,迟到信息记录到check1001.dat文件中)4、如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check+工号.dat文件中(例如:工号为1001的用户下班签到时,早退信息记录到check1001.dat文件中)5、如果用户查询缺勤信息,则将check+工号.dat文件中对应该用户的迟到早退信息查出并显示。6、用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。
时间: 2023-07-24 09:41:44 浏览: 45
好的,我来帮你设计一个这样的考勤模拟程序。
首先,你需要创建一个名为 `routine.sh` 的 shell 脚本,然后在脚本中添加以下代码:
```bash
#!/bin/bash
# 初始信息
echo "***** routine v1.0 by 202202098 *****"
echo "Good Morning!$(whoami)"
echo "Today is $(date "+%a %b %d %T %Z %Y")"
# 用户信息验证
count=0
while [ $count -lt 3 ]
do
read -p "请输入工号:" id
read -p "请输入密码:" password
if [ "$id" = "1001" ] && [ "$password" = "123456" ]
then
echo "登录成功"
break
else
((count++))
echo "工号或密码错误,请重新输入"
fi
done
if [ $count -eq 3 ]
then
echo "输入错误次数超过3次,请联系管理员"
exit 1
fi
# 菜单选择
while true
do
echo "********* MENU *********"
echo "欢迎使用XXX考勤系统!"
echo "1-上班签到 2-下班签出"
echo "3-缺勤信息查阅 4-退出"
read -p "请选择功能:" choice
case $choice in
1)
now=$(date "+%Y-%m-%d %H:%M:%S")
if [ $(date +%H) -gt 9 ]
then
echo "您迟到了,请注意早到"
echo "迟到时间:$now" >> check$id.dat
else
echo "签到时间:$now"
fi
;;
2)
now=$(date "+%Y-%m-%d %H:%M:%S")
if [ $(date +%H) -lt 18 ]
then
echo "您早退了,请注意按时下班"
echo "早退时间:$now" >> check$id.dat
else
echo "签出时间:$now"
fi
;;
3)
if [ -f check$id.dat ]
then
echo "迟到/早退记录:"
cat check$id.dat
else
echo "您没有迟到/早退记录"
fi
;;
4)
echo "谢谢使用!"
exit 0
;;
*)
echo "输入错误,请重新选择"
;;
esac
done
```
让我们来解释一下每段代码的作用:
1. 初始信息:输出程序名称、编者学号、当前日期时间和问候语。
2. 用户信息验证:使用 `while` 循环验证用户输入的工号和密码是否正确,最多允许输入 3 次。如果验证成功,则输出 "登录成功",否则提示用户重新输入。当输入错误次数超过 3 次时,输出 "输入错误次数超过3次,请联系管理员" 并退出程序。
3. 菜单选择:使用 `while` 循环显示菜单,然后根据用户选择执行相应的操作。如果用户输入的不是 1、2、3 或 4,则输出 "输入错误,请重新选择"。
4. 上班签到:获取当前时间,如果签到时间在上午 9 点之后,则输出 "您迟到了,请注意早到" 并将迟到时间记录到 `check+工号.dat` 文件中,否则输出签到时间。
5. 下班签出:获取当前时间,如果签出时间在下午 6 点之前,则输出 "您早退了,请注意按时下班" 并将早退时间记录到 `check+工号.dat` 文件中,否则输出签出时间。
6. 缺勤信息查阅:如果存在 `check+工号.dat` 文件,则输出其中的迟到和早退记录,否则输出 "您没有迟到/早退记录"。
7. 退出:输出 "谢谢使用!" 并退出程序。
你需要将 `1001` 和 `123456` 替换为你自己的工号和密码,然后保存脚本并运行它。当用户登录成功并选择相应的功能时,脚本会执行相应的操作并返回菜单选择界面。