【shell系列】shell编程实现学生成绩管理系统

DATE: 2019-7-6


转载自:https://blog.csdn.net/a1414345/article/details/73840876

1、shell编程实现学生成绩管理系统
#!/bin/bash
 
#colour 函数
colour ()
{
	#格式为背景:前景m,主要实现屏幕颜色显示
	case $1 in 
		black_white ) #背景为黑色,前景为白色
			echo -e "\033[40;37m"
			;;
		black_green ) #背景为黑色,前景为绿色
			echo -e "\033[40;32m"
			;;
		black_cyan ) #背景为黑色,前景为青色
			echo -e "\033[40;36m"
			;;
		red_yellow ) #背景为红色,前景为黄色
			echo -e "\033[41;33m"
			;;
		yellow_blue ) #背景为黄色,前景为蓝色
			echo -e "\033[43;34m"
			;;
	esac
}
 
#查询函数
search()
{
	colour black_white
	clear
	echo -e "Please Enter Name >>>\c"
	read NAME
	# 如果无记录时
	if [ ! -f ./record ]; then
		echo "You mush have some scores before you can search !"
		sleep 2
		clear
		return
	fi
 
	# 没有输入名字查询时候
	if [ -z "$NAME" ]; then
		echo "You didn't enter a name!"
		echo -e "Please Enter Name >>>\c"
	fi
	echo "你查询的信息是: $NAME"
 
	
	grep   "$NAME" ./record 2> /dev/null
	
	case "$?" in
		1 ) echo "Name not in record."
			;;
		2 ) echo "You didn't enter a name to search."
			sleep 2
			search # 继续查询
			;;
	esac
}
 
#增加记录函数
add()
{
	clear
	echo "Enter name and score of a record."
	echo -e "\c"
 
	if [ ! -f ./record ]; then
		touch record
	fi
 
	read NEWNAME
	echo "$NEWNAME" >> ./record
 
	# 排序后写回文件
	sort -o ./record ./record
	echo "添加成功"
	sleep 2
}
 
 
#删除记录函数
delete()
{
	clear
	echo -e "Please Enter Name >>> "
	read NAME
 
	if [ ! -f ./record ]; then
		echo "记录为空请先添加!"
	else
		cp record record.bak
 
		grep "$NAME" ./record.bak > /dev/null
		if [ $? != 0 ]; then
			echo "此人不存在"
		else
		    # -v 表示 not
		    grep -v "$NAME" ./record.bak > record
		    echo "删除成功"
		fi
		rm -f record.bak
	fi
	sleep 1
}
 
#显示所有记录
display()
{
	colour black_white
	more ./record
}
 
#利用vim编辑器编译
edit()
{
	vim ./record
}
 
#屏幕帮助函数
help()
{
	clear
	colour black_cyan
	echo "This is a student's record program by!"
}
 
#退出程序
quit()
{
	clear
	colour black_white
	exit
}
 
clear
while :
do
	colour red_yellow
	echo "***********************************************************"
	echo "*                  STUDENT'S RECORD MENU                  *"
	echo "***********************************************************"
	colour yellow_blue
	echo "###########################################################"
	echo "#                       1. 查找                           #"
	echo "#                       2. 添加                           #"
	echo "#                       3. 删除                           #"
	echo "#                       4. 显示全部                       #"
	echo "#                       5. 编辑记录                       #"
	echo "#                       H: Help Screen                    #"
	echo "#                       Q: Exit Program                   #"
	echo "###########################################################"
 
	colour black_green
	echo -e -n "  Please Enter Your Choice [1, 2, 3, 4, 5, H, Q]:\c"
	read choice
 
	case $choice in
		1 ) search
			;;
		2 ) add; clear
			;;
		3 ) delete; clear
			;;
		4 ) display
			;;
		5 ) edit; clear
			;;
		H | h ) help
			;;
		Q | q ) quit
			;;
		* ) echo "Invalid Choice !"
			sleep 2
			clear
			;;
	esac
done
2、效果图

【shell系列】shell编程实现学生成绩管理系统_第1张图片

3、用法说明

<1>. echo -e "\033[背景颜色;字体颜色m

echo -e "\033[30;32m"   ##背景颜色为黄色,字体颜色为绿色

字背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
46:深绿
47:白色

字颜色:30-----------39
30:黑
31:红
32:绿
33:黄
34:蓝色
35:紫色
36:深绿
37:白色

ANSI控制码的说明 :
\33[0m 关闭所有属性
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m – \33[37m 设置前景色
\33[40m – \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标


THE END!

你可能感兴趣的:(【shell系列】shell编程实现学生成绩管理系统)