1. 程式人生 > >shell 程式設計實驗--實現學生成績管理系統

shell 程式設計實驗--實現學生成績管理系統

主要函式:

colour ()    設定介面顏色

search ()  查詢學生資訊

add()         增加記錄

delete()     刪除記錄

display()   顯示所有記錄

edit()         編輯

help()       幫助

quit()        退出

使用截圖:

主介面


1、新增



2、顯示全部


3、查詢


4、刪除

刪除存在的人:


刪除不存在的人:


5、顯示全部


參考程式碼:

#!/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、進一步熟悉流程控制函式等概念。