- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 Shell编程
一.实验名称:
考勤模拟shell程序设计
二.实验目的:
理解Shell程序的设计方法;
熟悉Shell程序的编辑、运行、调试方法与过程。
三.实验内容:
考勤模拟Shell程序设计
用shell设计一个模拟考勤程序,实现如下功能选择界面:
1:上班签到
2:下班签出
3:考勤信息查询
考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat中。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择确信信息查询,则将check.dat中对应的用户迟到早退的信息查询出来并显示。
用户选择功能执行完,Shell程序继续回到功能选择界面等待下一个用户进行操作。
四.实验步骤
新建文件Check.sh,编写程序代码(代码如本文第六部分所示);
把Check.sh赋予可运行权限;
运行Check.sh。
五.运行结果
六.代码片段
#考勤系统
#!/bin/sh
user_names=(admin teacher student)
user_pwd=(admin 123 123)
users=${#user_names[*]}
#echo 用户数:$users
#read
#循环处理
while true; do
flag=0
#清屏
clear
#验证用户名和密码
echo 用户名:S
read name
echo 密 码:
read passwd
i=0
while [ $i -lt $users ]
do
if [ $name = ${user_names[$i]} ]; then
if [ $passwd = ${user_pwd[$i]} ]; then
flag=1
break
fi
fi
let i++
done
if [ $flag -eq 1 ]; then
#打印菜单
echo ------欢迎使用本系统------
echo 1.上班签到
echo 2.下班签出
echo 3.考勤信息查询
#允许管理退出
if [ $name = admin ]; then
echo 0.退出
fi
echo --------------------------
#读取选项
read choice
case $choice in
1)
echo 上班签到
hour=`date +%H`
if [ $hour -gt 8 ]; then
echo 你迟到了!
echo $name 上班迟到 ---日期:`date` check.dat
else
echo 早上好,$name
fi
;;
2)
echo 下班签出
hour=`date +%H`
if [ $hour -lt 18 ]; then
echo 你早退了
echo $name 上班早退 ---日期:`date` check.dat
else
echo 再见,$name
fi
;;
3)
echo 考勤信息查询
echo 你的记录
echo ---------------------------------
cat -b check.dat | grep $name
echo ---------------------------------
;;
0)
if [ $name = admin ]; then
echo 退出
break
fi
;;
esac
fi
read
done
read
clear
文档评论(0)