用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 22:46:17 浏览: 21
好的,我可以为您提供一个基本的 shell 脚本来实现这个考勤模拟程序。请注意,为了保护用户信息,以下代码中的用户名和密码信息只作为示例,实际使用时应该替换为您自己的信息。
```
#!/bin/bash
# 初始化信息
echo "***** 考勤系统 v1.0 by 202202098 *****"
echo "欢迎使用考勤系统!"
echo $(date +"%A %B %d %T %Z %Y")
echo "请输入您的工号和密码:"
# 验证用户输入工号和密码
count=0
while [[ $count -lt 3 ]]
do
read -p "工号:" id
read -s -p "密码:" password
echo
if [[ $id == "1001" && $password == "123456" ]] # 示例用户名和密码
then
echo "登录成功!"
break
else
count=$((count+1))
echo "工号或密码错误,请重新输入!"
fi
done
if [[ $count -eq 3 ]]
then
echo "输入错误次数超过三次,请联系管理员!"
exit 1
fi
# 功能选择界面
while true
do
echo "********* MENU *********"
echo "1-上班签到 2-下班签出"
echo "3-缺勤信息查阅 4-退出"
read -p "请选择功能:" choice
case $choice in
1)
now=$(date +"%T")
if [[ $(date +"%H") -gt 9 ]]
then
echo "您迟到了!"
echo "迟到时间:$now" >> check${id}.dat
else
echo "签到时间:$now"
fi
;;
2)
now=$(date +"%T")
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
```
希望这个脚本能够帮助到您!如果您有任何问题或需要进一步的帮助,请随时告诉我。