使用shell编写“学生成绩管理系统“,按照要求完成相应的功能
功能要求
实现代码
#!/bin/bash
_TRUE= 1
_FALSE= 0
DATA_FILE_NAME= 'student.txt'
function fun_test_data_format {
if test 1 -eq ` echo $1| grep -c -e '^[0-9]\{5\}:[^:]\{1,\}:[男女]:[^:]\{1,\}$' `
then
return $_TRUE
fi
return $_FALSE
}
function echo_erro {
echo -e "\033[31m $1 \033[0m"
}
function echo_info {
echo $1
}
function fun_show_help {
echo_info '[1].-h [num]将显示前num行数据'
echo_info '[2].-t [num]将显示后num行数据'
echo_info '[3].-o num按学号升序排序输出,-o dep按系别排序'
echo_info '[4].-a 追加内容,存在则输出'
echo_info '[5].-d 删除数据'
echo_info '[6].-s 查看信息'
echo_info '[7].--help 打印帮助'
echo_info '**如需打印所有信息,则无需加任何选项'
}
if [ -f $DATA_FILE_NAME ]
then
for line in ` cat $DATA_FILE_NAME`
do
fun_test_data_format $line
if test $_TRUE -ne $?
then
echo_erro '已存在的数据格式不正确,建议删除已有的错误文件!'
exit
fi
done
else
echo_info '数据文件不存在,自动创建'
echo '00101:张三:男:计算机' > $DATA_FILE_NAME
fi
case $1 in
'-h' )
if test -z "$2 "
then
head $DATA_FILE_NAME
else
head -n $2 $DATA_FILE_NAME
fi
; ;
'-t' )
if test -z "$2 "
then
tail $DATA_FILE_NAME
else
tail -n $2 $DATA_FILE_NAME
fi
; ;
'-o' )
if test $2 == 'num'
then
sort --field-separator= ":" --key= 1 $DATA_FILE_NAME
else
sort --field-separator= ":" --key= 4 $DATA_FILE_NAME
fi
; ;
'-a' )
if test -n "$2 "
then
student_id= ` echo $2| cut -d ':' -f 1`
if test 1 -eq ` grep -c -e "^$student_id :" $DATA_FILE_NAME`
then
echo_info '学生已存在!!'
echo_info ` grep -m 1 -e "^$student_id :" $DATA_FILE_NAME`
else
fun_test_data_format $2
if test $_TRUE -eq $?
then
echo $2 >> $DATA_FILE_NAME
else
echo_erro '输入的学生信息格式不符合要求!'
fi
fi
else
echo_erro '信息不完整'
fi
; ;
'-d' )
if test -n "$2 "
then
if test 1 -eq ` grep -c -e "^$2 :" $DATA_FILE_NAME`
then
read -p '是否确定删除[y/n]:' input
if test $input == 'yes' -o $input == 'y'
then
sed -i "/^$2 :/g" $DATA_FILE_NAME
fi
else
echo_erro '学生信息不存在'
fi
else
echo_erro '缺少学号'
fi
; ;
'-s' )
if test -n "$2 "
then
if test 1 -eq ` grep -c -e "^$2 :" $DATA_FILE_NAME`
then
echo_info ` grep -m 1 -e "^$2 :" $DATA_FILE_NAME`
else
echo_erro '学生信息不存在'
fi
else
echo_erro '缺少学号'
fi
; ;
'--help' )
fun_show_help
; ;
'' )
cat $DATA_FILE_NAME
; ;
*)
echo_erro '参数选项错误,--help查看帮助'
echo_info '------------------------------'
fun_show_help
; ;
esac
效果截图