用shell设计一个考勤模拟程序, 1、脚本启动时首先输出一些初始信息,包括程序名称与编者学号、当前的日期与时间、适当的问候语等,格式自定。例如: ***** routine v1.0 by 202202098 ***** Good Morning!用户名 Today is Tue June 12 19:25:30 CST 2023 2、考勤程序运行后,首先验证用户输入的工号和密码。如果正确则成功登录系统;如果错误,则提示用户重新输入,如果输入密码超过3次,提示用户联系管理员。工号和密码信息保存在userinfo.dat中。 用户登录成功后,实现如下功能选择界面: ********* MENU ********* 欢迎使用XXX考勤系统! 1-上班签到 2-下班签出 3-缺勤信息查阅 4-退出 3、如果是上班签到,记录签到信息,如果签到时间大于上午9时,则提示用户迟到,并记录该迟到信息到check+工号.dat文件中(例如:工号为1001的用户上班签到时,迟到信息记录到check1001.dat文件中) 4、如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check+工号.dat文件中(例如:工号为1001的用户下班签到时,早退信息记录到check1001.dat文件中) 5、如果用户查询缺勤信息,则将check+工号.dat文件中对应该用户的迟到早退信息查出并显示。 6、用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。

时间: 2023-07-24 22:46:17 浏览: 21
好的,我可以为您提供一个基本的 shell 脚本来实现这个考勤模拟程序。请注意,为了保护用户信息,以下代码中的用户名和密码信息只作为示例,实际使用时应该替换为您自己的信息。 ``` #!/bin/bash # 初始化信息 echo "***** 考勤系统 v1.0 by 202202098 *****" echo "欢迎使用考勤系统!" echo $(date +"%A %B %d %T %Z %Y") echo "请输入您的工号和密码:" # 验证用户输入工号和密码 count=0 while [[ $count -lt 3 ]] do read -p "工号:" id read -s -p "密码:" password echo if [[ $id == "1001" && $password == "123456" ]] # 示例用户名和密码 then echo "登录成功!" break else count=$((count+1)) echo "工号或密码错误,请重新输入!" fi done if [[ $count -eq 3 ]] then echo "输入错误次数超过三次,请联系管理员!" exit 1 fi # 功能选择界面 while true do echo "********* MENU *********" echo "1-上班签到 2-下班签出" echo "3-缺勤信息查阅 4-退出" read -p "请选择功能:" choice case $choice in 1) now=$(date +"%T") if [[ $(date +"%H") -gt 9 ]] then echo "您迟到了!" echo "迟到时间:$now" >> check${id}.dat else echo "签到时间:$now" fi ;; 2) now=$(date +"%T") if [[ $(date +"%H") -lt 18 ]] then echo "您早退了!" echo "早退时间:$now" >> check${id}.dat else echo "签退时间:$now" fi ;; 3) if [[ -f check${id}.dat ]] then echo "以下是您的迟到早退信息:" cat check${id}.dat else echo "您没有迟到早退记录!" fi ;; 4) echo "再见!" exit 0 ;; *) echo "无效的选择,请重新输入!" ;; esac done ``` 希望这个脚本能够帮助到您!如果您有任何问题或需要进一步的帮助,请随时告诉我。

相关推荐

最新推荐

recommend-type

Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

主要介绍了Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

Linux通用java程序启动脚本代码实例

虽然写起动shell的频率非常不高。。。但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell。 在网上找到一个挺好的通用shell...#也可以作为启动java程序的独立脚本来使用。 # #Author: tudaxia.
recommend-type

ubuntu中编写shell脚本开机自动启动(推荐)

主要介绍了ubuntu中编写shell脚本开机自动启动,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

在shell脚本中获取上个月最后一天的日期方法

今天小编就为大家分享一篇在shell脚本中获取上个月最后一天的日期方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

Linux shell脚本输出日志笔记整理(必看篇)

下面小编就为大家带来一篇Linux shell脚本输出日志笔记整理(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。