題目:學生成績統(tǒng)計管理系統(tǒng)
一? 實訓任務
以VM ware虛擬機軟件和Ubuntu12.04操作系統(tǒng)為平臺,使用shell腳本編寫程序,實現(xiàn)對學生成績的統(tǒng)計計算等功能。要求使用linux shell編寫程序腳本(Bash風格),并提供友好的的交互界面。
二? 實訓要求
- 基本功能要求
按照題目要求完成程序源碼編寫、調試及關鍵代碼注釋。
-
- 以文本的形式存儲各門功課成績,生成成績統(tǒng)計表
- 實現(xiàn)成績的計算、統(tǒng)計、排序、查詢等功能
- 能夠以管理員身份對成績進行管理
2、擴展功能要求
-
- 可以統(tǒng)計不同成績段的人數,相同成績的人數
- 擴展其它功能,如界面的改進、增加提示信息等。
三? 實訓原理
圖1 參考系統(tǒng)框圖
四? 實訓步驟(根據實際情況修改)
1、根據設計任務要求進行功能分析,畫出設計流程圖;
2、參閱相關資料,進行模塊設計;
3、編寫shell腳本,完成功能模塊;
4、調試腳本程序,修改錯誤,測試功能,實現(xiàn)任務要求;
6、撰寫實訓報告(包括設計與調試的全過程,附上有關資料、shell腳本代碼,心得體會)。
部分程序:
#!/bin/bash
#顏色顯示
colour ()
{
#格式為背景:前景m,主要實現(xiàn)屏幕顏色顯示
case $1 in
white_black ) #背景為白色,前景為黑色
echo -e "?33[47;30m"
;;
green_white ) #背景為綠色,前景為白色
echo -e "?33[42;37m"
;;
black_green ) #背景為黑色,前景為綠色
echo -e "?33[40;32m"
;;
black_cyan ) #背景為黑色,前景為青色
echo -e "?33[40;36m"
;;
black_blue ) #背景為黑色,前景為藍色
echo -e "?33[40;34m"
;;
red_yellow ) #背景為紅色,前景為黃色
echo -e "?33[41;33m"
;;
yellow_blue ) #背景為黃色,前景為藍色
echo -e "?33[43;34m"
;;
esac
}
#添加
Student_add()
{
clear
colour black_green
if test -f Student.txt
then
echo -e "請輸入學生學號:c"
read xuehao
echo -e "請輸入學生姓名:c"
read name
echo -e "請輸入語文成績:c"
read Chinese
echo -e "請輸入數學成績:c"
read Math
echo -e "請輸入英語成績:c"
read English
sum=`expr $Chinese "+" $Math "+" $English`
ave=`expr $sum "/" 3`
if [ $ave -ge "90" -a $ave -le "100" ];then
echo "學號$xuehao $name 同學的語文,數學,英語成績,總成績,平均分,成績等級為.$Chinese.$Math.$English.$sum.$ave.A!" >> Student.txt
elif [ $ave -ge "80" -a $ave -lt "90" ];then
echo "學號$xuehao $name 同學的語文,數學,英語成績,總成績,平均分,成績等級為.$Chinese.$Math.$English.$sum.$ave.B!" >> Student.txt
elif [ $ave -ge "70" -a $ave -lt "80" ];then
echo "學號$xuehao $name 同學的語文,數學,英語成績,總成績,平均分,成績等級為.$Chinese.$Math.$English.$sum.$ave.C!" >> Student.txt
elif [ $ave -ge "60" -a $ave -lt "70" ];then
echo "學號$xuehao $name 同學的語文,數學,英語成績,總成績,平均分,成績等級為.$Chinese.$Math.$English.$sum.$ave.D!" >> Student.txt
else
echo "學號$xuehao $name 同學的語文,數學,英語成績,總成績,平均分,成績等級為.$Chinese.$Math.$English.$sum.$ave.E!" >> Student.txt
echo "添加成功"
fi
sleep 1
else
echo "成績文件不存在!"
echo "正在創(chuàng)建!"
touch Student.txt
sleep 1
echo "成績文件創(chuàng)建成功!"
sleep 1
fi
}
#查詢
Student_refer()
{
clear
colour yellow_blue
# 如果無成績文件時
if [ ! -f Student.txt ]; then
echo "5沒有成績文件請先添加!"
else
echo -e " 請輸入你要查找的學號:c"
read xuehao
echo -e " 請輸入你要查找的名字:c"
read name
# 沒有輸入名字查詢時候
if [ -z "$name" ]; then
echo "你沒有輸入名字!"
echo -e "請輸入你要查找的名字:c"
else
grep "$name" Student.txt
case "$?" in
1 ) echo "該同學成績尚未錄入系統(tǒng)!"
;;
esac
fi
fi
}
#排序
Student_sort()
{
clear
colour black_cyan
# 如果無成績文件時
if [ ! -f Student.txt ]; then
echo "沒有成績文件請先添加!"
else
echo "排序方式:1.按學號排序;2.按總成績排序;3.按平均分排序;"
echo -e "請選擇你想要的排序方式:c"
read G_sort
case $G_sort in
1)
sort -n ?Student.txt
;;
2)
sort -n -r -t. -k 5 Student.txt
;;
3)
sort -n -r -t. -k 6 Student.txt
;;
*)
echo "選擇錯誤,請重新選擇"
Student_sort
;;
esac
fi
}
#統(tǒng)計
Student_statistics()
{
clear
colour yellow_blue
# 如果無成績文件時
if [ ! -f Student.txt ]; then
echo "沒有成績文件請先添加!"
else
for((i=0;i<5;i++))
do
echo ?"請輸入你想統(tǒng)計的成績等級人數:"
read number
grep "$number" Student.txt | wc -l
done
fi
}
#查看成績
Student_display()
{
clear
colour black_blue
# 如果無成績文件時
if [ ! -f Student.txt ]; then
echo "沒有成績文件請先添加!"
else
cat Student.txt
fi
}
#刪除
Student_delete()
{
clear
colour green_white
if [ ! -f Student.txt ]; then
echo "沒有成績文件請先添加!"
else
echo -e "請輸入你要查找的名字c"
read name
cp Student.txt Studentfu.txt
grep "$name" Studentfu.txt > /dev/null
if [ $? != 0 ]; then
echo "沒有該同學成績!"
else
# -v 表示 not
grep -v "$name" Studentfu.txt > Student.txt
echo "刪除成功!"
fi
rm -rf Studentfu.txt
fi
}
#退出
Quit()
{
clear
exit
}
clear
while :
do
colour black_green
echo " ? ?^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 請選擇你的身份: ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1.老師 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.學生 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.退出系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo "請輸入你的選擇: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
read choose1
clear
case $choose1 in
1)
echo -e "請輸入管理員密碼:c"
read password
if [ $password = 123456 ];
then
clear
while :
do
colour white_black
echo " ?&———————————————————————————————————————————————————————————————& ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? " 成績統(tǒng)計系統(tǒng)" ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo "*———————————————————————————————————————————————————————————————————*"
echo " ? ? ? ? ? ? ? ? ? ? ? ? 老師您好,請選擇 ? ? ? ? ? ? ? ? ? ? ? ? ? ? "
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 1.成績添加 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 2.成績查詢 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 3.成績排序 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 4.成績統(tǒng)計 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 5.刪除同學成績 ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 6.查看全班成績 ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo " ? ? ? ? ? ? ? ? ? ? ? ? ? 0.退出系統(tǒng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"
echo "*————————————————————
資料包括:
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網盤下載地址及提取碼。
紛傳點擊用微信打開即可,過程有點繁瑣請見諒。