ホームページ >運用・保守 >Linuxの運用と保守 >シェルが生徒のパフォーマンス管理システムを実装する方法

シェルが生徒のパフォーマンス管理システムを実装する方法

小云云
小云云オリジナル
2018-05-10 13:54:554038ブラウズ

この記事では主に学生の成績管理システムを実装するシェルについて詳しく紹介しますので、興味のある方は参考にしていただければ幸いです。

基本操作

追加
削除
クエリ
すべての生徒情報を表示
vimで情報を保存するファイルを編集

発生した問題

1.生徒情報を追加するとき

学生を追加する情報として、私が使用するエコーはファイルにリダイレクトされます。これにより、上書きが発生します。以前のデータは消えてしまいました。

概要: リダイレクトシンボル:

>: 上書きスタイル (ファイル内の元のコンテンツが上書きされます)

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

関連する推奨事項:

学生スコア管理システム

Laravel5 学生スコア管理システム-07-サイドバーの追加

Linux シェル実装ライブラリ管理システム詳細例

以上がシェルが生徒のパフォーマンス管理システムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。