Linux--用shell写一个学生成绩管理系统

来源:互联网 发布:老板烟机淘宝和实体店 编辑:程序博客网 时间:2024/05/16 16:04

基本的操作

  1. 增加
  2. 删除
  3. 查询
  4. 展示全部学生信息
  5. 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}clearwhile truedo        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

这里写图片描述
这里写图片描述

原创粉丝点击