任务:

设计一个考勤模拟程序,实现如下功能选择界面,要求使用函数

1.上班签到

2.下班签出

3.缺勤信息查阅

4.退出

考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。

如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。

如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。

如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。

用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。

代码:

 #!/usr/bin/env bash
# 考勤模拟程序
#作者:于修彦
#date //
function main(){
echo "------------------------------------------------------------"
echo " 欢迎使用考勤程序! "
echo "------------------------------------------------------------" createInfoFile; read -p "请输入您的账号: " username
read -p "请输入您的密码: " password isLogin $username $password; while [[ == ]];
do
menu;
read -p "请输入您的选择:" choice
case $choice in
)
signIn $username;
;;
)
logOff $username;
;;
)
absenceConsult $username;
;;
)
exit1;
;;
* )
echo -e "请选择功能 1 or 2 or 3 or 4!\n"
;;
esac
done }
#菜单
function menu(){
echo "------------------------------------------------------------"
echo " 1.上班签到 "
echo " 2.下班签出 "
echo " 3.缺勤信息查阅 "
echo " 4.退出 "
echo "------------------------------------------------------------"
} #检查账号密码
function isLogin(){
while read line
do
if [[ "$line" == "$1:$2" ]]; then
return
fi
done < userinfo.dat #从文件读入
echo "用户名或密码错误,请重新输入哦"
read -p "请输入您的账号: " username
read -p "请输入您的密码: " password
isLogin $username $password;
} #上班签到
function signIn(){
hour=`date +%H`
if [[ $hour -gt ]]; then
echo "你上班迟到了呀!已经将迟到信息记录在check.dat中。"
echo "$1 上班迟到————日期:`date`" >> check.dat
else
echo "上班签到成功!"
fi
main;
} #下班迁出
function logOff(){
echo "下班签出成功!"
hour=`date +%H`
if [[ $hour -lt ]]; then
echo "你现在属于早退哦!已经将早退信息记录在check.dat中。"
echo "$1 下班早退————日期:`date`" >> check.dat
fi
main;
} #缺勤查阅
function absenceConsult(){
cat check.dat|grep -n "$1" } #退出程序
function exit1(){
exit
} #创建配置文件
function createInfoFile(){
if [[ ! -e userinfo.dat ]]; then
touch userinfo.dat #保存用户名和密码
chmod userinfo.dat
fi
if [[ ! -e check.dat ]]; then
touch check.dat #保存迟到早退信息
chmod check.dat
fi } #执行main函数
main

结果:

linux小实验-考勤模拟程序的更多相关文章

  1. 私人定制自己的linux小系统

     私人定制自己的linux小系统 一.前言    linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个linux爱好者都为其贡献了自己的一份力,不管是在 ...

  2. MongoDB 主从复制小实验

    MongoDB 主从复制小实验 操作环境描述:WIN8  64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...

  3. 为自己打造Linux小系统

     一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...

  4. PBR综合小实验视频-狮子XL

    这个是上学时候录的一个策略路由小实验

  5. ubuntu下格式化内存当硬盘使的小实验

    内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...

  6. PS小实验-去除水印

    PS小实验-去除水印 水印是一些品牌商覆盖在图片或视频上的一个商标logo或小文本,比如大家最讨厌的百度logo,作者本人也是比较讨厌水印的,让好端端的一张图片变得美中不足. 个人觉得用photosh ...

  7. 基于busybox的Linux小系统制作 (initrd)

    我们有时候有需要在busybox基础上,制作linux,可是却不知道具体怎么做,这里将对基于busybox的linux小系统制作做出详细的步骤说明.准备环境:1.一个Redhat完整系统的虚拟机,本次 ...

  8. 1.4 Crack小实验

    0_day 第一章 基础知识 1.4 Crack小实验 <0day_2th>王清 著 电子书 下载链接:https://pan.baidu.com/s/11TgibQSC3-kYwCInm ...

  9. arduino新入手体验:三个小实验

    新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...

随机推荐

  1. Deep Learning with Torch

    原文地址:https://github.com/soumith/cvpr2015/blob/master/Deep%20Learning%20with%20Torch.ipynb Deep Learn ...

  2. Android开机键失灵启动手机的解决办法

    问题描述 Android手机的关机键损坏,无法开机. 解决方法 将手机通过USB线链接电脑,进入命令行,找到adb命令所在目录,运行如下命令: adb reboot 注意:用这种方法的前提是,如果你当 ...

  3. 看到个有趣的方法批量下载rtf模板

    一般想要批量下载rtf模板我们都是用fndload来实现或者 perl download.pl来实现,今天看到一个比较有趣的方法 Hi, Blob column 'template file data ...

  4. GDAL库中WFS服务中含有中文不能获取数据的问题

    GDAL库中目前提供了对WFS服务发布的数据进行获取,目前发现对于中文的服务名称或者图层名为中文,GDAL不能正确识别.通过调试发现,其原因有下面两点: 1.输入的URL路径没有使用UTF8编码而从网 ...

  5. Android指南针之加速度传感器地磁传感器-android学习之旅(67)

    由于andorid不推荐用传统的方向传感器,推荐用加速度传感器和地磁传感器来构造得到方向传感器的数据,其实主要是z轴的旋转角度 具体代码示例 代码如下 public class MainActivit ...

  6. 单点登录之CAS SSO从入门到精通(第三天)

    开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 ...

  7. javascript语法之字符串转换成数字

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. [MSSQL]SQL Server里面导出SQL脚本(表数据的insert语句)(转)

    最近需要导出一个表的数据并生成insert语句,发现SQL Server的自带工具并米有此功能.BAIDU一下得到如下方法(亲测OK) 用这个存储过程可以实现:CREATE PROCEDURE dbo ...

  9. Demonstration of DB Query Analyzer 6.03 Installation and Running on Microsoft Windows 8

    Demonstration of DB Query Analyzer 6.03 Installation and Running on Microsoft Windows 8 Ma Genfeng ( ...

  10. "《算法导论》之‘线性表’":基于静态分配的数组的顺序表

    首先,我们来搞明白几个概念吧(参考自网站数据结构及百度百科). 线性表 线性表是最基本.最简单.也是最常用的一种数据结构.线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外, ...