当前位置 博文首页 > shell实现学生成绩管理系统

    shell实现学生成绩管理系统

    作者:sayhello_world 时间:2021-02-15 09:10

    本文实例为大家分享了shell实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

    基本的操作

    增加
    删除
    查询
    展示全部学生信息
    vim编辑保存信息的文件

    遇到的问题

    1.增加学生信息时

    增加学生信息时,我用的echo重定向到文件里,这里开始用的一个>,会导致覆盖。以前的数据没有了。

    总结:重定向符号:

    >:覆盖型写法 (文件里原来的内容被覆盖)

    echo "hello world" > myfile

    >>:添加型写法 (新内容添加在原来内容的后面)

    echo "hello world" >> myfile

    2.删除某一行学生信息

    开始不知道怎么删除,最后查到了grep -v命令。
    他表示反向选择,亦即显示出没有 ‘搜寻字符串' 内容的那一行。

    具体实现代码

    #! /bin/bash
    
    #查询函数
    search()
    {
      clear
      echo -e "Please enter name >>>\c"
      read NAME
      #如果记录为空
      if [ ! -f ./record ];then
        echo "you must have some scores before you can search!"
        sleep 2
        clear
        return 
      fi
      #没有输入名字进行查询
      if [ -z "$NAME" ];then
        echo "you didn't enter a name!"
        echo -e "Please enter name >>>\c"
        read NAME
      fi
    
      grep -i "$NAME" ./record 2> /dev/null
    
      case "$?" in
       1) echo "Name not in record."
        ;;
       2) echo "you didnt eter a name to search";
        sleep 2;
        search;;
      esac
    }
    
    #增加信息
    add()
    {
      clear
      echo "Enter name and score of a record"
      echo -e "\c"
      if [ ! -f ./record ];then
        touch record
      fi
    
      read NEWNAME
      #关于输出重定向,>代表覆盖式的写入 ,>>代表添加式的写入
      echo "$NEWNAME" >>./record
    
      sort -o ./record ./record
    }
    
    #删除学生信息
    delete()
    {
      clear 
      echo -e "Please enter delete name"
      read NAME
    
      if [ ! -f ./record ];then
       echo "this name is not in record"
      else
       cp record record.bak
       rm -f record
       grep -v "$NAME" ./record.bak > record
       rm -f record.bak
       fi
    }
    
    #显示所有的记录函数
    display()
    {
      more ./record
    }
    
    #利用vim编辑器编辑函数
    edit()
    {
     vim ./record
    }
    
    #屏幕帮助操作
    help()
    {
     clear
     echo "this is a student record program by unix shell language!"
    }
    
    #推出程序
    quit()
    {
     clear
     exit
    }
    
    clear
    while true
    do
      echo "*********************************************"
      echo "****   student record menu  ****"
      echo "*********************************************"
      echo "---------------------------------------------"
      echo "#############################################"
      echo "    1-search a record    "
      echo "    2-add a record     "
      echo "    3-delete a record    "
      echo "    4-dispaly all records   "
      echo "    5-edit record with vim   "
      echo "    H-help       "
      echo "    Q-exit       "
      echo "#############################################"
      echo -e -n "Please enter your choice [1,2,3,4,5,6,H,Q]:\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 "Invailid choice!";
      sleep 2;
      clear;;
      esac
     done
    
    

    更多学习资料请关注专题《管理系统开发》。

    js
    下一篇:没有了