• 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!
    "
     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

     

    结果:

     

  • 相关阅读:
    每日优鲜三面:在Spring Cloud实战中,如何用服务链路追踪Sleuth?
    一文就能看懂的Nginx操作详解,你还在查漏补缺吗!
    火花思维三面:说说Redis分布式锁是如何实现的!
    【秋招必备】Dubbo面试题(2021最新版)
    【秋招必备】Elasticsearch面试题(2021最新版)
    熬了一通宵!你竟然都没有弄懂陌陌面试官问的Java虚拟机内存?
    react-native-vector-icons 使用记录
    git
    在iOS项目中嵌入RN代码
    UITabBar 图标上下跳动
  • 原文地址:https://www.cnblogs.com/yuxiuyan/p/9008402.html
Copyright © 2020-2023  润新知