Linux趣事 -- (2.6)学生信息管理系统(完结)
来源:互联网 发布:freebsd 源码 编辑:程序博客网 时间:2024/06/08 20:18
这篇是对前面五篇代码的整理。
(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
(5)http://blog.csdn.net/wjf_1997/article/details/78513267
代码
#!/bin/bash#!/bin/awk -f#建立存储路径 DBCollegeInfoPath="./DBCollegeInfo.txt"DBStudentInfoPath="./DBStudentInfo.txt"DBStudentGradeInfoPath="./DBStudentGradeInfo.txt"#一、显示功能show_college_info(){ echo "=================================================================" echo "学院编号,学院名称" cat $DBCollegeInfoPath}show_stu_info(){ echo "=================================================================" echo "学生编号,学生姓名,学院编号,说明信息" cat $DBStudentInfoPath}show_stugrade_info(){ echo "=================================================================" echo "学生编号,学生姓名,科目名称,成绩,说明信息" cat $DBStudentGradeInfoPath}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 "" }#二、增加功能insert_college_info(){ show_college_info; echo "请输入要添加的学院编号(若存在,则插入失败!):" read collegeNo export existFlag=false while read line do lineCollegeNo=${line/,*/} if [ "$lineCollegeNo" = "$collegeNo" ]; then { export existFlag=true break } fi done<$DBCollegeInfoPath if [ "$existFlag" == "true" ]; then { export exitFlag=false echo "此学院已经存在,插入失败!" } else { echo "请输入学院的名称:" read collegeName echo "$collegeNo,$collegeName" >> $DBCollegeInfoPath echo "学院记录插入成功!" show_college_info; } fi}insert_stu_info(){ show_stu_info; echo "请输入要添加的学生编号(若存在,则插入失败!)" read studentNo export existFlag=false while read line do lineStuNo=${line/,*/} if [ "$lineStuNo" = "$studentNo" ]; then { export existFlag=true break } fi done<$DBStudentInfoPath if [ "$existFlag" = "true" ]; then echo "输入的学生编号已经存在,插入失败!" else { export existFlag=false echo "请输入学生的姓名:" read stuName echo "请输入该学生所在的院校编号(必须是已经有记录的学院):" read stuCollegeNo while read line do collegeNo=${line/,*/} if [ "$collegeNo" = "$stuCollegeNo" ]; then { export existFlag=true break } fi done<$DBCollegeInfoPath if [ "$existFlag" = "false" ]; then { echo "输入的学院编号不存在!" } else { echo "请输入该学生的说明信息( 1.在校inschool 2.休学suspend 3.辍学dropout ):" read choice case $choice in "1") echo "$studentNo,$stuName,$stuCollegeNo,inschool" >> $DBStudentInfoPath echo "学生记录插入成功!" show_stu_info; ;; "2") echo "$studentNo,$stuName,$stuCollegeNo,suspend" >> $DBStudentInfoPath echo "学生记录插入成功!" show_stu_info; ;; "3") echo "$studentNo,$stuName,$stuCollegeNo,dropout" >> $DBStudentInfoPath echo "学生记录插入成功!" show_stu_info; ;; *) echo "Usage:$0{1|2|3}" echo "学生记录插入失败!" show_stu_info; ;; esac } fi } fi}insert_stugrade_info(){ show_stugrade_info; echo "请输入要添加的学生编号(若不存在,则插入失败!):" read studentNo export existFlag=false export nowline=0; export stuName="" while read line do lineStudentNo=${line/,*/} export nowline=$(($nowline+1)) if [ "$lineStudentNo" = "$studentNo" ]; then { export existFlag=true export stuName=`echo "$line" | awk -F',' '{print $2}'` break } fi done<$DBStudentInfoPath if [ "$existFlag" = "false" ]; then { echo "学生记录中没有这个学生,插入失败!" } else { export existFlag=false echo "请科目名称:" read objectName echo "请输入科目成绩(0-100):" read gradeResult if [ $gradeResult -le 100 ] && [ $gradeResult -ge 0 ]; then { echo "请输入该成绩的说明信息( 1.期末final 2.补考makeup ):" read choice case $choice in "1") echo "$studentNo,$stuName,$objectName,$gradeResult,final" >> $DBStudentGradeInfoPath echo "插入成功!" show_stugrade_info; ;; "2") echo "$studentNo,$stuName,$objectName,$gradeResult,makeup" >> $DBStudentGradeInfoPath echo "插入成功!" show_stugrade_info; ;; *) echo "Usage:$0{1|2}" echo "插入失败!" show_stugrade_info; ;; esac } else { echo "输入成绩不符合要求,插入失败!" } fi } fi}#三、删除功能delete_college_info(){ show_college_info; echo "请输入要删除的学院的编号(若不存在,删除失败!):" read collegeNo export nowLine=0; while read line do export nowLine=$(($nowLine+1)) nowCollegeNo=${line/,*/} if [ "$nowCollegeNo" = "$collegeNo" ]; then { sed "$nowLine"d $DBCollegeInfoPath > $DBCollegeInfoPath"_back" mv $DBCollegeInfoPath"_back" $DBCollegeInfoPath echo "删除成功!" } else { echo "删除失败!" } fi done<$DBCollegeInfoPath show_college_info;}delete_stu_info(){ show_stu_info; echo "请输出要删除学生的编号(若不存在,删除失败!):" read studentNo export nowLine=0; while read line do export nowLine=$(($nowLine+1)) echo $line":"$nowLine lineStudentNo=${line/,*/} if [ "$lineStudentNo" = "$studentNo" ]; then { #echo $nowLine "是当前行" sed "$nowLine"d $DBStudentInfoPath > $DBStudentInfoPath"_back" export delCount=$(($delCount+1)) mv $DBStudentInfoPath"_back" $DBStudentInfoPath echo "删除成功!" } else { echo "删除失败!" } fi done<$DBStudentInfoPath show_stu_info; } delete_stugrade_info(){ show_stugrade_info; echo "请输出要删除学生的编号(若不存在,删除失败!):" read studentNo #export existFlag=false export nowLine=0; while read line do export nowLine=$(($nowLine+1)) lineStudentNo=${line/,*/} if [ "$lineStudentNo" = "$studentNo" ]; then { sed "$nowLine"d $DBStudentGradeInfoPath > $DBStudentGradeInfoPath"_back" mv $DBStudentGradeInfoPath"_back" $DBStudentGradeInfoPath echo "删除成功!" } else { echo "删除失败!" } fi done<$DBStudentGradeInfoPath #while read line #do # lineStudentNo=${line/,*/} #if [ "$lineStudentNo" = "$studentNo" ]; then #{ # export existFlag=true # break #} #fi # done<$DBStudentInfoPath #if [ "$existFlag" = "true" ]; then #{ # export existFlag=false # sed -i '/$studentNo/d' $DBStudentGradeInfoPath > $DBStudentGradeInfoPath"_back" # mv $DBStudentGradeInfoPath"_back" $DBStudentGradeInfoPath # echo "删除成功!" # show_stugrade_info; #} #else { # echo "删除失败!" #} show_stugrade_info; }#四、修改功能update_stuName_info(){ show_stu_info; echo "请输入要修改信息的学生编号(默认仅可以修改自己的信息):" read studentNo export nowLine=0; stringLine=`grep $studentNo $DBStudentInfoPath` stuName=`echo "$stringLine" | awk -F ',' '{print $2}'` stuCollegeNo=`echo "$stringLine" | awk -F ',' '{print $3}'` studentSay=`echo "$stringLine" | awk -F ',' '{print $4}'` echo "要更新的学生信息记录为:$stringLine" echo "请输入新的名字:" read newStudentName while read line do lineStudentNo=${line/,*/} export nowLine=$(($nowLine+1)) if [ "$lineStudentNo" = "$studentNo" ]; then { sed "$nowLine"d $DBStudentInfoPath > $DBStudentInfoPath"_back" mv $DBStudentInfoPath"_back" $DBStudentInfoPath echo "$studentNo,$newStudentName,$stuCollegeNo,$studentSay" >> $DBStudentInfoPath echo "更新成功!" show_stu_info; } fi done<$DBStudentInfoPath}update_stuCollege_info(){ show_stu_info; echo "请输入要修改信息的学生编号(默认仅可以修改自己的信息):" read studentNo export nowLine=0; stringLine=`grep $studentNo $DBStudentInfoPath` stuName=`echo "$stringLine" | awk -F ',' '{print $2}'` stuCollegeNo=`echo "$stringLine" | awk -F ',' '{print $3}'` studentSay=`echo "$stringLine" | awk -F ',' '{print $4}'` echo "要更新的学生信息记录为:$stringLine" echo "请输入新学院编号:" read newstuCollegeNo while read line do lineStudentNo=${line/,*/} export nowLine=$(($nowLine+1)) if [ "$lineStudentNo" = "$studentNo" ]; then { sed "$nowLine"d $DBStudentInfoPath > $DBStudentInfoPath"_back" mv $DBStudentInfoPath"_back" $DBStudentInfoPath echo "$studentNo,$stuName,$newstuCollegeNo,$studentSay" >> $DBStudentInfoPath echo "更新成功!" show_stu_info; } fi done<$DBStudentInfoPath}#五、查找功能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;}while true do echo "=========================学生信息管理系统========================="echo "0.退出"echo "1.显示"echo "2.增加"echo "3.删除"echo "4.修改"echo "5.查找"echo "输入choice:"read choicecase $choice in#零、退出"0")echo "退出!"exit 0;;#一、显示(show)"1")echo "1.显示所有学院信息"echo "2.显示所有学生信息"echo "3.显示所有学生成绩信息"echo "4.显示学生成绩统计结果"echo "输入choice:"read choice case $choice in"1")show_college_info;;"2")show_stu_info;;"3")show_stugrade_info;;"4")show_stu_grade_info;;*)echo "Usage:$0{1|2|3|4}";;esac ;;#二、增加(insert)"2")echo "1.增加学院信息"echo "2.增加学生信息"echo "3.增加学生成绩信息"echo "输入choice"read choicecase $choice in"1")insert_college_info;;"2")insert_stu_info;;"3")insert_stugrade_info;;*)echo "Usage:$0{1|2|3}"esac ;;#三、删除(delete)"3")echo "1.删除学院信息"echo "2.删除学生信息"echo "3.删除学生成绩信息"echo "输入choice"read choicecase $choice in"1")delete_college_info;;"2")delete_stu_info;;"3")delete_stugrade_info;;*)echo "Usage:$0{1|2|3}"esac ;;#四、修改(update)"4")echo "1.修改学生的姓名"echo "2.修改学院编号"echo "输入choice"read choicecase $choice in"1")update_stuName_info;;"2")update_stuCollege_info;;*)echo "Usage:$0{1|2}"esac ;;#五、查找(find)"5")find_stu_info;;*)echo "Usage:$0{0|1|2|3|4|5}";;esacdone
阅读全文
0 0
- Linux趣事 -- (2.6)学生信息管理系统(完结)
- Linux趣事 -- (2.1)学生信息管理系统
- Linux趣事 -- (2.2)学生信息管理系统
- Linux趣事 -- (2.3)学生信息管理系统
- Linux趣事 -- (2.4)学生信息管理系统
- Linux趣事 -- (2.5)学生信息管理系统
- 学生信息管理系统的完结
- 学生信息管理系统(一)
- 学生信息管理系统(c++)
- 学生信息管理系统(一)
- 学生信息管理系统(一)
- 学生信息管理系统(二)
- 学生信息管理系统(sqlite3)
- 学生信息管理系统(第一次.....)
- 学生信息管理系统(三)
- 学生信息管理系统(四)
- 学生信息管理系统(三)
- linux学习笔记-学生信息管理系统(shell编程)
- 数据库主从复制
- MySQL备份恢复--Xtrabackup
- 关于pymysql与SQL alchemy连接失败的解决方案
- WKWebView API精讲(OC)
- jsp hibernate技术开发实现电子通讯录后台管理系统
- Linux趣事 -- (2.6)学生信息管理系统(完结)
- php环境安装说明
- 编写拦截器进行拦截
- 简单易懂的命名空间及use的使用
- Vector Space Model (向量空间模型)
- Cracking the Coding Interview 之测试
- 5.1从键盘上任意输入一个实数,不使用计算绝对值函数编程计算并输出该实数的绝对值
- 2017.11.12心得
- 数据结构(1)-递归