Linux——实验一:Shell程序设计
[ 实验目的 ]
理解Shell程序的设计方法;熟悉Shell程序的编辑、运行、调试方法与过程。
[ 实验内容 ] 考勤模拟Shell程序设计
用shell设计一个考勤模拟程序,实现如下功能选择界面:
1.上班签到
2.下班签出
3.缺勤信息查阅
4.退出
考勤程序运行后,提示用户输入上述功能选择,并验证用户输入的用户名和密码;用户信息保存在userinfo.dat中。
如果是上班签到,记录签到信息,如果签到时间大于上午8时,则提示用户迟到,并记录该迟到信息到check.dat。
如果是下班签出,记录签出信息,如果签出时间小于下午6时,则提示用户早退,并记录该早退信息到check.dat。
如果用户选择缺勤信息查询,则将check.dat中对应该用户的迟到早退信息查出并显示。
用户选择功能执行完,shell程序继续回到功能选择界面等待下一个用户进行操作。
[实验要求 ]
1、掌握Shell程序的编辑、运行、调试方法
2、完成实验内容要求实现的功能,并且上班签到、下班签出、缺勤信息查阅都要求用函数实现
3、撰写实验报告
[实验方法 ]
1、Shell程序的编辑可使用vi,emacs等Linux下的各种文本编辑器。本课程实验可使用Red Hat Linux9.0下的Text Editor 。
2、Shell程序的执行有两种方式:sh [Shell程序名] 或 ./ [Shell程序名]
例:设Shell程序名称为test.sh,则可以通过sh test.sh 或./test.sh。但是要注意在使用./ [Shell程序名]时必须确保对Shell程序具有可执行权限。
3、Shell程序的调试可以通过建立多个工作区交互进行。
新建文件Attendance.sh,源码如下:
#! /bin/bash
function show(){
clear;
echo "******** Welcome to Attendance System ********";
echo "******** 1.Check in ********";
echo "******** 2.Check out ********";
echo "******** 3.The record ********";
echo "******** 4.Exit ********";
echo "**********************************************";
echo "Input your choice:";
}
function check_in(){
echo " Please input your name";
read name;
echo " Please input your password";
read password;
if test -e /home/userdata.dat
then
while read tem_name tem_password
do
#echo "name is $name";
#echo "Input name is $tem_name";
#echo "Input password is $tem_password";
if test "$name" = "$tem_name"
then
#echo "Right";
break;
else
#echo "False";
continue;
fi
done < /home/userdata.dat
else
echo "No such File,Please Check!";
fi
if test "$name" != "$tem_name"
then
echo "No such user! Please check!";
elif test "$password" != "$tem_password"
then
echo "Incorrect Password!";
else
hour=`date +%k`;
#echo "$hour";
if test $hour -ge 8
then
echo "Check in Successfully ^_^ You are late!!";
echo "$name ---Late for Work ---Time: `date` " >>/home/check.dat
else
echo "Check in Successfully ^_^ ";
fi
fi
}
function check_out(){
echo " Please input your name";
read name;
echo " Please input your password";
read password;
if test -e /home/userdata.dat
then
while read temp_name temp_password
do
#echo "name is $name";
#echo "Input name is $tem_name";
#echo "Input password is $tem_password";
if test "$name" = "$temp_name"
then
#echo "Right";
break;
else
#echo "False";
continue;
fi
done < /home/userdata.dat
else
echo "No such File,Please Check!";
fi
if test "$name" != "$temp_name"
then
echo "No such user! Please check!";
elif test "$password" != "$temp_password"
then
echo "Incorrect Password!";
else
hour=`date +%k`;
#echo "$hour";
if test $hour -lt 18
then
echo "Check out Successfully ^_^ Leave early!!";
echo "$name ---Leave Early ---Time: `date` " >>/home/check.dat
else
echo "Check out Successfully ^_^ ";
fi
fi
}
function display_record(){
#echo "$# parameters";
if test $# -ne 0
then
echo "$1,Here are your records:";
grep "$1" /home/check.dat;
else
echo "Sorry,please check in first!";
fi
}
function exit(){
echo "Thanks for your use ^_^ ";
isExit="1";
#exit
}
function main(){
while test "1"="1"
do
show;
read choice;
case $choice in
1)check_in;;
2)check_out;;
3)display_record $name;;
4)exit;;
*)echo "Incorrect input!";;
esac
read delay;
#clear;
if test "$isExit" = "1"
then
clear;
break;
fi
done
}
main;
运行结果:
【1】主界面:
【2】签到成功,但是迟到!
【3】用户名错误:
【4】签出成功,但是早退!
【5】查看迟到早退记录:
【6】退出程序,返回主界面:
【7】home文件夹下所有与本程序有关的文件:
更多推荐
所有评论(0)