編程練習

#!/bin/bash
echo "小學生測驗 面向小學1~2年級學生,隨機選擇兩個整數進行四則運算,要求學生解答。 功能要求:
(1)電腦隨機出10道題,每題10分,程序結束時顯示學生得分;
(2)確保算式沒有超出1~2年級的水平,只允許進行100以內的四則運算,不允許兩數或運算結果超出0~100的範圍,負數更是不允許的;
(3)每道題學生有三次機會輸入答案,當學生輸入錯誤答案時,提醒學生重新輸入,如果三次機會結束則輸出正確答案;
(4)對於每道題,學生第一次輸入正確答案得10分,第二次輸入正確答案得7分,第三次輸入正確答案得5分,否則不得分;
(5)總成績90以上顯示“SMART” ,80-90顯示“GOOD”,70-80顯示“OK, 60-70顯示“PASS”,60以下“TRY AGAIN”
(6)保存學生做過的題目,保存的細節自己考慮。可以加載瀏覽。"
let count=0
let scount1=0
let scount2=0
let scount3=0
let scount4=0
let scount5=0
path=pwd

function chakan()
{
echo " ___"
echo "| 請選擇 |"
echo "|*1.下一輪考試 ****|"
echo "|*
2.查看我的成績單 *|"
echo "|***
3.退 出 **|"
while true
do
read -p '請輸入操作序號:' xz
case $xz in
[1])
sh $0
;;
[2])
cat $path/$id
;;
[3])
echo "感謝使用!"
break
;;
esac
done
}

function chengji()
{
if [ $sum -ge 90 ];then
echo "SMART"
echo "SMART">>$path/$id
elif [ $sum -ge 80 ] && [ $sum -lt 90 ];then
echo "GOOD"
echo "GOOD">>$path/$id
elif [ $sum -ge 70 ] && [ $sum -lt 80 ];then
echo "OK"
echo "OK">>$path/$id
elif [ $sum -ge 60 ] && [ $sum -lt 70 ];then
echo "PASS"
echo "PASS">>$path/$id
elif [ $sum -lt 60 ];then
echo "TRY AGAIN"
echo "TRY AGAIN">>$path/$id
fi
chakan $id
}

let sum=0
while true
do
read -p "請輸入八位數字學號:" id
id=${id:=0}
if [ $id -gt 0 ] >>/dev/null;then
len=expr length $id
jilu=find $path -name $id
jilu=${jilu:=0}

fi
RET=expr match $id "[0-9][0-9]*$"
RET=${RET:=0}

if [ ${RET} -eq 8 ] && [ "$jilu" = "0" ] ; then
echo "您的學號是$id,開始考試!"
sleep 2
########################################
echo "考試記錄單" >>$path/$id
echo "date -d "today" +%Y%m%d-%T">>$path/$id
for((i=1;i<100;i++))
do
a[$i]=$i
done
########################################
while true
do
a=echo ${a[$RANDOM % ${#a[@]}]}
b=echo ${a[$RANDOM % ${#a[@]}]}
v=(1 2 3 4)br/>len=${#v[@]}
index=$(( RANDOM % len ))
c=echo ${v[$index]}
###加法
if [ $c -eq 1 ];then
let num=a+b
if [ $num -ge 0 ] && [ $num -le 99 ];then
let scount1=scount1+1
let scount5=scount1+scount2+scount3+scount4

echo ""
echo "
">>$path/$id
echo "第$scount5題:"
echo "第$scount5題:">>$path/$id
echo "$a + $b = (?)"
echo "$a + $b = (?)">>$path/$id
while true
do
read -p '請輸入答案:' as
let count=count+1

if [ "$num" == "$as" ];then
echo "你的回答是$as,回答正確!"
echo "你的回答是$as,回答正確!">>$path/$id

if [ $count -eq 1 ];then
let sum=sum+10
elif [ $count -eq 2 ];then
let sum=sum+7
elif [ $count -eq 3 ];then
let sum=sum+5
else
let sum=sum+0
fi

let count=0
break
else
echo "你的回答是$as,答案錯誤,請重新輸入!"
echo "你的回答是$as,答案錯誤,請重新輸入!">>$path/$id
if [ $count -ge 3 ];then
echo "回答錯誤超過三次,正確答案爲$num"
echo "回答錯誤超過三次,正確答案爲$num">>$path/$id
let count=0
break
fi
fi

done

if [ $scount5 -eq 10 ];then
echo "考試結束!"
echo "考試結束!">>$path/$id
echo
echo " ">>$path/$id
echo "你的成績是$sum"
echo "你的成績是$sum">>$path/$id
chengji $chengji
break
fi

fi

fi

##減法
if [ $c -eq 2 ];then
let num=a-b
if [ $num -ge 0 ] && [ $num -le 99 ];then
let scount2=scount2+1
let scount5=scount1+scount2+scount3+scount4

echo ""
echo "第$scount5題:"
echo "$a - $b = (?)"
echo "
">>$path/$id
echo "第$scount5題:">>$path/$id
echo "$a - $b = (?)">>$path/$id
while true
do
read -p '請輸入答案:' as
let count=count+1

if [ "$num" == "$as" ];then
echo "你的回答是$as,回答正確!"
echo "你的回答是$as,回答正確!">>$path/$id

if [ $count -eq 1 ];then
let sum=sum+10
elif [ $count -eq 2 ];then
let sum=sum+7
elif [ $count -eq 3 ];then
let sum=sum+5
else
let sum=sum+0
fi

let count=0
break
else
echo "你的回答是$as,答案錯誤,請重新輸入!"
echo "你的回答是$as,答案錯誤,請重新輸入!">>$path/$id
if [ $count -ge 3 ];then
echo "回答錯誤超過三次,正確答案爲$num"
echo "回答錯誤超過三次,正確答案爲$num">>$path/$id
let count=0
break
fi
fi

done

if [ $scount5 -eq 10 ];then
echo "考試結束!"
echo "考試結束!">>$path/$id
echo
echo " ">>$path/$id
echo "你的成績是$sum"
echo "你的成績是$sum">>$path/$id
chengji $chengji
break
fi

fi

fi

##乘法
if [ $c -eq 3 ];then
let num=a-b
if [ $num -ge 0 ] && [ $num -le 99 ];then
let scount3=scount3+1
let scount5=scount1+scount2+scount3+scount4

echo ""
echo "第$scount5題:"
echo "$a - $b = (?)"
echo "
">>$path/$id
echo "第$scount5題:">>$path/$id
echo "$a - $b = (?)">>$path/$id
while true
do
read -p '請輸入答案:' as
let count=count+1

if [ "$num" == "$as" ];then
echo "你的回答是$as,回答正確!"
echo "你的回答是$as,回答正確!">>$path/$id

if [ $count -eq 1 ];then
let sum=sum+10
elif [ $count -eq 2 ];then
let sum=sum+7
elif [ $count -eq 3 ];then
let sum=sum+5
else
let sum=sum+0
fi

let count=0
break
else
echo "你的回答是$as,答案錯誤,請重新輸入!"
echo "你的回答是$as,答案錯誤,請重新輸入!">>$path/$id
if [ $count -ge 3 ];then
echo "回答錯誤超過三次,正確答案爲$num"
echo "回答錯誤超過三次,正確答案爲$num">>$path/$id
let count=0
break
fi
fi

done

if [ $scount5 -eq 10 ];then
echo "考試結束!"
echo "考試結束!">>$path/$id
echo
echo " ">>$path/$id
echo "你的成績是$sum"
echo "你的成績是$sum">>$path/$id
chengji $chengji
break
fi

fi

fi

##除法
if [ $c -eq 4 ];then
let num=a/b
let ys=a%b
if [ $num -ge 0 ] && [ $num -le 99 ];then
let scount3=scount3+1
let scount5=scount1+scount2+scount3+scount4

echo ""
echo "第$scount5題:"
echo "$a ÷ $b = (?)"
echo "
">>$path/$id
echo "第$scount5題:">>$path/$id
echo "$a ÷ $b = (?)">>$path/$id
while true
do
read -p '請輸入答案:' as
if [ "$ys" != "0" ];then
read -p '請輸入餘數:' yushu
fi
let count=count+1

if [ "$num" == "$as" ] && [ "$ys" == "$yushu" ];then
echo "你的回答是$as,餘數爲$yushu,回答正確!"
echo "你的回答是$as,餘數爲$yushu,回答正確!">>$path/$id

if [ $count -eq 1 ];then
let sum=sum+10
elif [ $count -eq 2 ];then
let sum=sum+7
elif [ $count -eq 3 ];then
let sum=sum+5
else
let sum=sum+0
fi

let count=0
break
else
echo "你的回答是$as,餘數爲$yushu,答案錯誤,請重新輸入!"
echo "你的回答是$as,餘數爲$yushu,答案錯誤,請重新輸入!">>$path/$id
if [ $count -ge 3 ];then
echo "回答錯誤超過三次,正確答案爲$num,餘數爲$ys"
echo "回答錯誤超過三次,正確答案爲$num,餘數爲$ys">>$path/$id
let count=0
break
fi
fi

done

if [ $scount5 -eq 10 ];then
echo "考試結束!"
echo "考試結束!" >>$path/$id
echo
echo "" >>$path/$id
echo "你的成績是$sum"
echo "你的成績是$sum" >>$path/$id
chengji $chengji
break
fi

fi

fi

done
break
else
echo "輸入非法或你已經參加過考試!"
fi
done

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章