還有bug 不修改了
小聲bb一下 這玩意真的要控制版本 隨手保存 本來有個超完整的版本 一開心被我rm - f 了 后續還出現了 更多的bug 仔細仔細
源碼如下:
record=stu.db if [ ! -e $record ]; then touch record fi if [ ! -e $key.txt ]; then touch key.txt fi login() { i=3 while [ $i -gt 0 ] do echo "---->您還有 $i 次機會,請好好把握" echo -e " 登錄姓名:\c" read Name echo -e " 登錄密碼:\c " read Pwd echo $content if [ "$Name" = "lfc" ] && [ "$Pwd" = "123456" ] #管理員賬號 then echo "---->登錄成功!歡迎您 管理員" sleep 2 return 1 elif content=$(grep -0 "^賬戶:${Name}|密碼:${Pwd}" "key.txt") then echo "---->登錄成功!歡迎您 $Name 同學" sleep 2 return 1
else [[ $content = "" ]]; echo "賬戶或者密碼錯誤" i=`expr $i - 1`
fi done echo "---->機會用完了哦!歡迎下次再見" }
#注冊 register() { echo -e " 注冊名:\c" read Name echo -e " 密 碼:\c" read Pwd content=$(grep -0 "^a賬戶:${Name}|" "key.txt") if [[ $content = "" ]] then echo "賬戶:${Name}|密碼:$Pwd" >> key.txt echo "賬戶成功!" echo "---->注冊成功!歡迎您$Name" echo "---->您的注冊名:$Name ;注冊密碼:$Pwd" else echo "賬戶也注冊過啦,請換一個好聽的賬戶名字喲" fi } echo "****************************************" echo "********歡迎來到學生信息管理系統********" echo "****** 1、登錄帳號 *****" echo "****** 2、注冊帳號 *****" echo "****************************************" echo -e "---->請輸入您的選擇:\c" read NUM if [ $NUM -eq 1 ] then login elif [ $NUM -eq 2 ] then register else echo “對不起,無該選項,請重新輸入!!!” fi
#查詢函數 search() { clear echo "請輸入你需要查詢學號 " #如果記錄為空 read content grep $content $record if [ $? -eq 1 ]; then echo "未找到相關學生信息" fi read -s -n1 -p "按任意鍵繼續 ... " }
#增加信息 add() { clear echo "請輸入學生信息" printf "%-14s %-12s %-4s %-4s %-11s\n" 學號 姓名 年齡 性別 電話\(以空格區分\) read no name age sex phone #echo -e "\c" # 判斷是否存在 if [ "$no" -gt 0 ] 2>/dev/null; then echo "" >/dev/null else echo "學號不是數字!請重新輸入" echo "2s后自動返回首頁" sleep 2; return 1
fi checkno=$(awk '$1=="'"$no"'" {print $0}' $record) # 學號已存在 if [ -n "$checkno" ] >/dev/null; then echo "該學號已存在請重新輸入" echo "2s后返回首頁" sleep 2; return 1 fi printf "%-14s %-12s %-4d %-4s %-11d\n" $no $name $age $sex $phone >>$record sort -o $record $record echo "添加成功" read -s -n1 -p "按任意鍵繼續 ... " }
#刪除學生信息 delete() { clear echo "輸入要刪除學生的學號" read del del=$(awk '$1=="'"$del"'" {print $0}' $record) # 學號空 if [ -z "$del" ]; then echo "未找到相關學生信息" return 1 fi echo $del sed -i "/$del/d" $record echo "刪除成功" }
#顯示所有的記錄函數 display() { clear cat $record read -s -n1 -p "按任意鍵繼續 ... " }
#修改學生信息 edit() { clear echo "請輸入需要修改學生信息的學號"
echo "輸入要修改的學號" read del del=$(awk '$1=="'"$del"'" {print $0}' $record) # 學號為空 if [ -z "$del" ]; then echo "未找到相關學生信息" return 1 fi sed -i "/$del/d" $record echo "輸入修改后學生信息" sleep 1 add echo "信息修改成功"
#vim ./record 之前的暴力修改 }
#屏幕幫助操作 help() { clear echo "這是使用shell腳本寫的學生信息管理系統,若使用有問題請往博客https://www.cnblogs.com/loufangcheng/進行查看" }
#退出程序 quit() { clear exit }
clear while true do echo -e " " echo "*********************************************" echo "*******學生信息管理 **************************" echo "---------------------------------------------" echo "#############################################" echo "******* 1-查找學生信息 ******************" echo "******* 2-增加學生信息 ******************" echo "******* 3-刪除學生信息 ******************" echo "******* 4-顯示所有學生信息 ******************" echo "******* 5-修改學生信息 ******************" echo "******* H-幫助 ********************" echo "******* Q-退出 ******************" echo "#############################################" echo -e -n "請輸入您的選擇:\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 "請重新輸入!"; sleep 2; clear;; esac done |