>  기사  >  운영 및 유지보수  >  Shell이 ​​학생 성과 관리 시스템을 구현하는 방법

Shell이 ​​학생 성과 관리 시스템을 구현하는 방법

小云云
小云云원래의
2018-05-10 13:54:553941검색

이 글은 학생 성과 관리 시스템을 구현하기 위한 쉘을 주로 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

기본 작업

Add
Delete
Query
모든 학생 정보 표시
정보를 저장하는 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 쉘 구현 라이브러리 관리 시스템 자세한 예시

위 내용은 Shell이 ​​학생 성과 관리 시스템을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.