任务:
设计一个考勤模拟程序,实现如下功能选择界面,要求使用函数
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
结果: