linux小实验-考勤模拟程序
任务:
设计一个考勤模拟程序,实现如下功能选择界面,要求使用函数
1.上班签到
2.下班签出
3.缺勤信息查阅
4.退出
考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。
用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。
代码:
1 #!/usr/bin/env bash 2 # 考勤模拟程序 3 #作者:于果 4 #date 2018/04/08 5 function main(){ 6 echo "------------------------------------------------------------" 7 echo " 欢迎使用考勤程序! " 8 echo "------------------------------------------------------------" 9 10 createInfoFile; 11 12 read -p "请输入您的账号: " username 13 read -p "请输入您的密码: " password 14 15 isLogin $username $password; 16 17 while [[ 1 == 1 ]]; 18 do 19 menu; 20 read -p "请输入您的选择:" choice 21 case $choice in 22 1 ) 23 signIn $username; 24 ;; 25 2 ) 26 logOff $username; 27 ;; 28 3 ) 29 absenceConsult $username; 30 ;; 31 4 ) 32 exit1; 33 ;; 34 * ) 35 echo -e "请选择功能 1 or 2 or 3 or 4!\n" 36 ;; 37 esac 38 done 39 40 } 41 #菜单 42 function menu(){ 43 echo "------------------------------------------------------------" 44 echo " 1.上班签到 " 45 echo " 2.下班签出 " 46 echo " 3.缺勤信息查阅 " 47 echo " 4.退出 " 48 echo "------------------------------------------------------------" 49 } 50 51 #检查账号密码 52 function isLogin(){ 53 while read line 54 do 55 if [[ "$line" == "$1:$2" ]]; then 56 return 0 57 fi 58 done < userinfo.dat #从文件读入 59 echo "用户名或密码错误,请重新输入哦" 60 read -p "请输入您的账号: " username 61 read -p "请输入您的密码: " password 62 isLogin $username $password; 63 } 64 65 #上班签到 66 function signIn(){ 67 hour=`date +%H` 68 if [[ $hour -gt 8 ]]; then 69 echo "你上班迟到了呀!已经将迟到信息记录在check.dat中。" 70 echo "$1 上班迟到————日期:`date`" >> check.dat 71 else 72 echo "上班签到成功!" 73 fi 74 main; 75 } 76 77 #下班迁出 78 function logOff(){ 79 echo "下班签出成功!" 80 hour=`date +%H` 81 if [[ $hour -lt 18 ]]; then 82 echo "你现在属于早退哦!已经将早退信息记录在check.dat中。" 83 echo "$1 下班早退————日期:`date`" >> check.dat 84 fi 85 main; 86 } 87 88 #缺勤查阅 89 function absenceConsult(){ 90 cat check.dat|grep -n "$1" 91 92 } 93 94 #退出程序 95 function exit1(){ 96 exit 0 97 } 98 99 #创建配置文件 100 function createInfoFile(){ 101 if [[ ! -e userinfo.dat ]]; then 102 touch userinfo.dat #保存用户名和密码 103 chmod 777 userinfo.dat 104 fi 105 if [[ ! -e check.dat ]]; then 106 touch check.dat #保存迟到早退信息 107 chmod 777 check.dat 108 fi 109 110 } 111 112 #执行main函数 113 main
结果: