# 查询缺勤信息函数 function display_record() { if [ -f check$id.dat ]; then echo "您的迟到早退记录如下:" cat check$id.dat else echo "您没有迟到早退记录!" fi } # 退出函数 function exit_program() { echo "再见!" exit } # 主函数 function main() { # 输出初始信息 echo "***** 考勤模拟程序 v1.0 by 202202098 *****" echo "Good Morning!$USER" echo "Today is $(date)" # 循环等待用户操作 while true; do echo "********* MENU *********" echo "欢迎使用XXX考勤系统!" echo "1-上班签到 2-下班签出" echo "3-缺勤信息查阅 4-退出" read choice case $choice in 1) check_in;; 2) check_out;; 3) display_record;; 4) exit_program;; *) echo "无效的选择,请重新输入!";; esac done } # 调用主函数 main分析脚本
时间: 2024-02-17 08:15:18 浏览: 21
这段脚本是一个考勤模拟程序,主要功能包括上班签到、下班签出、查询缺勤信息和退出程序。主函数通过循环等待用户选择不同的操作,然后根据用户的选择调用不同的函数来完成相应的功能。其中,上班签到和下班签出的具体实现并没有给出,需要用户自行定义。查询缺勤信息的函数是display_record(),它首先判断当前用户的缺勤信息文件是否存在,如果存在则显示缺勤信息,否则提示用户没有缺勤记录。退出程序的函数是exit_program(),它简单地输出一条消息并调用exit命令退出程序。
相关问题
shell编写display_record()方法查询缺勤信息 根据输入的用户名,将check.dat中对应该用户的迟到早退信息查出并显示。
好的,我来为您编写一个display_record()方法,用于查询缺勤信息:
```bash
#!/bin/bash
display_record() {
# 获取输入的用户名
read -p "请输入要查询的用户名:" username
# 在check.dat文件中查找对应该用户的迟到早退信息
record=$(grep "$username" check.dat)
# 如果查找到了记录,则显示出来
if [ -n "$record" ]; then
echo "用户 $username 的迟到早退记录如下:"
echo "$record"
else
echo "没有找到 $username 的迟到早退记录!"
fi
}
```
这个方法首先会提示用户输入要查询的用户名,然后在check.dat文件中查找对应该用户的迟到早退信息,如果找到了记录,就将其显示出来,否则提示用户没有找到该用户的迟到早退记录。
您可以将这个方法添加到您的shell脚本中,然后在需要查询缺勤信息的时候调用它即可。
用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程序继续回到功能选择界面等待下一个用户进行操作。
以下是一个简单的考勤模拟程序的shell脚本实现:
```shell
#!/bin/bash
# 初始信息
echo "***** XXX考勤系统 v1.0 by 202202098 *****"
echo "Good Morning!$USER"
echo "Today is $(date '+%a %b %d %T %Z %Y')"
# 验证用户登录
count=0
while [ $count -lt 3 ]
do
echo "请输入工号:"
read id
echo "请输入密码:"
read -s password
if grep -q "^$id:$password$" userinfo.dat; then
echo "登录成功!"
break
else
count=$[$count+1]
if [ $count -lt 3 ]; then
echo "工号或密码错误,请重新输入。"
else
echo "工号或密码错误超过3次,请联系管理员。"
exit 1
fi
fi
done
# 功能选择界面
while true
do
echo "********* MENU *********"
echo "欢迎使用XXX考勤系统!"
echo "1-上班签到 2-下班签出 3-缺勤信息查阅 4-退出"
read -p "请选择功能:" choice
case $choice in
1) # 上班签到
now=$(date +%T)
if [ $(date +%H) -gt 9 ]; then
echo "迟到了!"
echo "$USER $now 迟到" >> check$id.dat
else
echo "上班签到成功!"
echo "$USER $now" >> check$id.dat
fi
;;
2) # 下班签出
now=$(date +%T)
if [ $(date +%H) -lt 18 ]; then
echo "早退了!"
echo "$USER $now 早退" >> check$id.dat
else
echo "下班签出成功!"
echo "$USER $now" >> check$id.dat
fi
;;
3) # 缺勤信息查阅
if [ -f check$id.dat ]; then
echo "迟到/早退记录如下:"
cat check$id.dat
else
echo "没有迟到/早退记录。"
fi
;;
4) # 退出
exit 0
;;
*) # 输入非法
echo "输入非法,请重新输入。"
;;
esac
done
```
在此示例中,假设用户信息存储在userinfo.dat文件中,格式为每行一个工号和密码,用冒号分隔。例如:
```
1001:password1
1002:password2
```
另外,迟到/早退记录分别保存在check+工号.dat文件中,每行记录一个签到/签出信息。例如:
```
张三 09:10 迟到
张三 18:00
李四 09:15 迟到
李四 17:50 早退
```
请根据实际需要修改代码。