Linux趣事 -- (2.5)学生信息管理系统

这篇是在前面四篇的基础上继续完善学生信息管理系统的功能。

(1)http://blog.csdn.net/wjf_1997/article/details/78474118
(2)http://blog.csdn.net/wjf_1997/article/details/78502039
(3)http://blog.csdn.net/wjf_1997/article/details/78513086
(4)http://blog.csdn.net/wjf_1997/article/details/78513201

实现功能:查找 和 成绩排名

一、功能描述

查找功能:find_stu_info()– 通过姓名查找该学生的相关信息

排名功能:show_stu_grade_info() – 显示成绩排名的情况

二、代码

2.1 find_stu_info()

find_stu_info(){
    echo "请输入学生的姓名:"
    read stuName
    stringLine_one=`grep $stuName $DBStudentInfoPath`
    stringLine_two=`grep $stuName $DBStudentGradeInfoPath`
    echo "查询的学生信息:"
    echo "$stringLine_one"
    echo "$stringLine_two"
    show_stu_info;
    show_stugrade_info;
}

2.2 show_stu_grade_info()

show_stu_grade_info(){

    echo "======================总成绩(相同专业)============================"
    awk 'BEGIN{FS=OFS=","}{
        namearrays[$1]=$2
        arrays[$1]+=$4
    }
    END{for(studentno in arrays)
    print studentno,namearrays[studentno],"总成绩:"arrays[studentno]}' $DBStudentGradeInfoPath

    echo "======================学科排名10(相同专业)============================"
    echo "名次    姓名  总成绩"
    for course in $(cut -d, -f3 $DBStudentGradeInfoPath |sort -n | uniq ) 
    do 
        echo "$course:" 
        grep "$course" $DBStudentGradeInfoPath | sort -t, -k4 -n -r| 
        awk 'BEGIN{FS=","}{if(NR<=10)print NR "\t" $2 "\t" $4}' 
    echo ""  
    done 

    echo "=======================总成绩排名20(相同专业)==========================" 
    echo "名次    姓名  总成绩" 
    awk 'BEGIN{FS=","}{arr[$2]+=$4} 
    END{for(i in arr)print i "," arr[i]}' $DBStudentGradeInfoPath |sort -t, -k2 -n -r| 
    awk 'BEGIN{FS=","}{if(NR<=20)print NR "\t" $1 "\t" $2}' 
    echo "" 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值