linux小实验-考勤模拟程序
任务:
设计一个考勤模拟程序,实现如下功能选择界面,要求使用函数
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小实验-考勤模拟程序的更多相关文章
- 私人定制自己的linux小系统
私人定制自己的linux小系统 一.前言 linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个linux爱好者都为其贡献了自己的一份力,不管是在 ...
- MongoDB 主从复制小实验
MongoDB 主从复制小实验 操作环境描述:WIN8 64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...
- 为自己打造Linux小系统
一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...
- PBR综合小实验视频-狮子XL
这个是上学时候录的一个策略路由小实验
- ubuntu下格式化内存当硬盘使的小实验
内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...
- PS小实验-去除水印
PS小实验-去除水印 水印是一些品牌商覆盖在图片或视频上的一个商标logo或小文本,比如大家最讨厌的百度logo,作者本人也是比较讨厌水印的,让好端端的一张图片变得美中不足. 个人觉得用photosh ...
- 基于busybox的Linux小系统制作 (initrd)
我们有时候有需要在busybox基础上,制作linux,可是却不知道具体怎么做,这里将对基于busybox的linux小系统制作做出详细的步骤说明.准备环境:1.一个Redhat完整系统的虚拟机,本次 ...
- 1.4 Crack小实验
0_day 第一章 基础知识 1.4 Crack小实验 <0day_2th>王清 著 电子书 下载链接:https://pan.baidu.com/s/11TgibQSC3-kYwCInm ...
- arduino新入手体验:三个小实验
新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...
随机推荐
- 1034. Head of a Gang (30) -string离散化 -map应用 -并查集
题目如下: One way that the police finds the head of a gang is to check people's phone calls. If there is ...
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...
- Android图片色彩变幻
最近在做图片相关的应用,所以就各方积累到一些常用的操作,一般来说会有多种方式来实现这一功能,比如 采用色度变换 采用ColorMatrix颜色矩阵 采用对像素点的直接操作 等等,今天就复习一下第一种方 ...
- Linux 之归档与压缩
首先我们思考一下,归档和解压是一个概念吗?答案很明显不是啊,所谓归档,就是将一些文件归到一起,并没有对其进行压缩的操作.然而压缩则不同,见名知意.下面我们就来深入的研究一下这两个知识点吧! ----- ...
- 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建Cubemaps
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- Linux进程模型
----原文链接:http://www.cnblogs.com/biyeymyhjob/archive/2012/08/01/2617884.html------ Linux进程通过一个task_st ...
- 集群通信组件Tribes之整体介绍
接下来一系列文章会对集群通信框架tribes进行源码级别的分析,欢迎讨论. 把若干机器组合成一个集群,集群为了能协同工作,成员之间的通信是必不可少的,当然可以说这也是集群实现中重点需要解决的核心问题, ...
- of这个变态
英式口语还能听懂,一到美式,连读,爆破,就让人疯掉. 尤其big bang theory, of就是个变态,其读法有,英[əv, əv, v, f] 美[əv, ɑv,əv].但大部分都是/əv/. ...
- Xcode中通过删除原先版本的程序来复位App
可以在Xcode菜单中点击 Product->Clean Build Folder (按住Option键,在windows键盘中是Alt键.) 此时Xcode将会从设备中删除(卸载uninsta ...
- iOS实现时间线列表效果(例如订单详情页面的效果)
之前看到美团的订单详情页面很有特色,于是决定模仿一下这个效果. 其实就是简单的 TableView 技巧,下面我们就来一步一步实现它. 设计 TableViewCell 原型 子类化一个新的 UITa ...