shell 编程实验--实现学生成绩管理系统




主要函数:


colour ()    设置界面颜色

search ()  查询学生信息

add()         增加记录

delete()     删除记录

display()   显示所有记录

edit()         编辑

help()       帮助

quit()        退出



使用截图:

主界面

shell 编程实验--实现学生成绩管理系统_第1张图片


1、添加

shell 编程实验--实现学生成绩管理系统_第2张图片

shell 编程实验--实现学生成绩管理系统_第3张图片

2、显示全部

shell 编程实验--实现学生成绩管理系统_第4张图片

3、查找



4、删除

删除存在的人:

shell 编程实验--实现学生成绩管理系统_第5张图片

删除不存在的人:

shell 编程实验--实现学生成绩管理系统_第6张图片


5、显示全部

shell 编程实验--实现学生成绩管理系统_第7张图片


参考代码:

#!/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

总结:

1、sort -o  file file 可以将本文件排序后再写回

2、grep -v  "string"  file 可以将除string 之外的信息过滤出来  

3、进一步熟悉流程控制函数等概念。


你可能感兴趣的:(linux,shell,脚本)