任务:

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

1.上班签到

2.下班签出

3.缺勤信息查阅

4.退出

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

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

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

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

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

代码:

  1. #!/usr/bin/env bash
  2. # 考勤模拟程序
  3. #作者:于修彦
  4. #date //
  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 [[ == ]];
  18. do
  19. menu;
  20. read -p "请输入您的选择:" choice
  21. case $choice in
  22. )
  23. signIn $username;
  24. ;;
  25. )
  26. logOff $username;
  27. ;;
  28. )
  29. absenceConsult $username;
  30. ;;
  31. )
  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
  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 ]]; 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 ]]; 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
  97. }
  98.  
  99. #创建配置文件
  100. function createInfoFile(){
  101. if [[ ! -e userinfo.dat ]]; then
  102. touch userinfo.dat #保存用户名和密码
  103. chmod userinfo.dat
  104. fi
  105. if [[ ! -e check.dat ]]; then
  106. touch check.dat #保存迟到早退信息
  107. chmod check.dat
  108. fi
  109.  
  110. }
  111.  
  112. #执行main函数
  113. 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. equals()与hashCode()方法协作约定

    翻译人员: 铁锚 翻译时间: 2013年11月15日 原文链接: Java equals() and hashCode() Contract 图1 Java所有对象的超类 java.lang.Obje ...

  2. H5学习之旅-H5的元素属性(3)

    1.标签可以拥有属性,为标签提供更多的信息 2.属性以键值对的形式呈现例如:href = "www.baidu.com" 3.常用标签属性 :align对其方式 ,对齐方式,包括上 ...

  3. Html5的学习之旅-Html5的web Storage概述(16)

    在html5中除了canvas,另外一个非常重要的功能是客户端本地存储web storage,之前可以在用户端Cookies存贮用户名等信息,后来发现Cookies存储存在以下问题: 大小:Cooki ...

  4. wing带你玩转自定义view系列(3)模仿微信下拉眼睛

    发现了爱神的自定义view系列,我只想说一个字:凸(艹皿艹 ) !!相见恨晚啊,早看到就不会走这么多弯路了 另外相比之下我这完全是小儿科..所以不说了,这篇是本系列完结篇....我要从零开始跟随爱哥脚 ...

  5. 【Java编程】Eclipse快捷键

    Alt+左箭头,右箭头        以在编辑窗口切换标签 Alt+上下箭头,                以自动选择鼠标所在行,并将其上下移动 Ctrl+f6                    ...

  6. Java进阶(十九)利用正则表达式批处理含链接内容文档

    利用正则表达式批处理含链接内容文档 由于项目需求,自己需要将带有链接的标签去除,例如 <a href="/zhaoyao/17-66.html">头晕</a> ...

  7. SpannableString 给TextView添加不同的显示样式

    TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色.字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置 myT ...

  8. mysql导入导出.sql数据

    导入sql的命令:source "路径名"+/mytest_emp_dept.sql 常用source 命令 进入mysql数据库控制台, 如mysql -u root -p my ...

  9. utl_file包的使用

    首先看一下oracle 脚本 /* # $Header: HTMomse12.sql 12.0.4 20121015 Support $ #+============================= ...

  10. 更改EBS服务器域名/IP

    more: 341322.1 : How to change the hostname of an Applications Tier using AutoConfig 338003.1 : How  ...