一个低级shell简易学生信息管理系统-新增登陆注册功能

时间:2024-02-20 20:08:10

还有bug 不修改了

小声bb一下 这玩意真的要控制版本 随手保存 本来有个超完整的版本 一开心被我rm - f 了 后续还出现了 更多的bug 仔细仔细

 

 

 

 

 

 

 

源码如下:


 

record=stu.db

if [ ! -e $record ]; then

    touch record

fi

if [ ! -e $key.txt ]; then

    touch key.txt

fi

login()

{

i=3

while [ $i -gt 0 ]

do

echo "---->您还有 $i 次机会,请好好把握"

echo -e " 登录姓名:\c"

read Name

echo -e " 登录密码:\c "

read Pwd

echo $content

if [ "$Name" = "lfc" ] && [ "$Pwd" = "123456" ] #管理员账号

then

 echo "---->登录成功!欢迎您 管理员"

sleep 2

return 1

elif content=$(grep -0 "^账户:${Name}|密码:${Pwd}" "key.txt")

then

 echo "---->登录成功!欢迎您 $Name 同学"

sleep 2

return 1

 

else [[ $content = "" ]];

echo "账户或者密码错误"

i=`expr $i - 1`

 

fi

done

echo "---->机会用完了哦!欢迎下次再见"

}

 

#注册

  register()

 {

     echo -e " 注册名:\c"

     read Name

     echo -e " 密  码:\c"

     read Pwd

     content=$(grep -0 "^a账户:${Name}|" "key.txt")

     if [[ $content = "" ]]

     then

               echo "账户:${Name}|密码:$Pwd" >> key.txt

               echo "账户成功!"

                 echo "---->注册成功!欢迎您$Name"

                 echo "---->您的注册名:$Name ;注册密码:$Pwd"

     else

       echo "账户也注册过啦,请换一个好听的账户名字哟"

     fi

 }

 echo "****************************************"

 echo "********欢迎来到学生信息管理系统********"

 echo "******     1、登录帐号             *****"

 echo "******     2、注册帐号             *****"

 echo "****************************************"

 echo -e "---->请输入您的选择:\c"

 read NUM

 if [ $NUM -eq 1 ]

 then

     login

 elif [ $NUM -eq 2 ]

 then

     register

 else

     echo “对不起,无该选项,请重新输入!!!”

fi

 

#查询函数

search()

{

   clear

   echo "请输入你需要查询学号 "

#如果记录为空

    read content

    grep $content $record

    if [ $? -eq 1 ]; then

        echo "未找到相关学生信息"

    fi

  read -s -n1 -p "按任意键继续 ... "

}

 

#增加信息

add() {

clear

echo "请输入学生信息"

printf "%-14s %-12s %-4s %-4s %-11s\n" 学号 姓名 年龄 性别 电话\(以空格区分\)

read no name age sex phone

#echo -e "\c"

 # 判断是否存在

 if [ "$no" -gt 0 ] 2>/dev/null; then

        echo "" >/dev/null

  else

    echo "学号不是数字!请重新输入"

    echo "2s后自动返回首页"

     sleep 2;

       return 1

 

    fi

 checkno=$(awk \'$1=="\'"$no"\'" {print $0}\' $record)

    # 学号已存在

    if [ -n "$checkno" ] >/dev/null; then

       echo "该学号已存在请重新输入"

       echo "2s后返回首页"

        sleep 2;

        return 1

    fi

  printf "%-14s %-12s %-4d %-4s %-11d\n" $no $name $age $sex $phone >>$record

    sort -o $record $record

    echo "添加成功"

    read -s -n1 -p "按任意键继续 ... "

}

 

#删除学生信息

delete()

{

clear

echo "输入要删除学生的学号"

read del

    del=$(awk \'$1=="\'"$del"\'" {print $0}\' $record)

    # 学号空

    if [ -z "$del" ]; then

        echo "未找到相关学生信息"

        return 1

    fi

    echo $del

    sed -i "/$del/d" $record

    echo "删除成功"

}

 

#显示所有的记录函数

display()

{

clear

cat $record

read -s -n1 -p "按任意键继续 ... "

}

 

#修改学生信息

edit()

{

clear

echo "请输入需要修改学生信息的学号"

  

echo "输入要修改的学号"

    read del

    del=$(awk \'$1=="\'"$del"\'" {print $0}\' $record)

    # 学号为空

    if [ -z "$del" ]; then

        echo "未找到相关学生信息"

        return 1

    fi

    sed -i "/$del/d" $record

    echo "输入修改后学生信息"

    sleep 1

    add

    echo "信息修改成功"

 

 

#vim ./record 之前的暴力修改

}

 

#屏幕帮助操作

help()

{

clear

echo "这是使用shell脚本写的学生信息管理系统,若使用有问题请往博客https://www.cnblogs.com/loufangcheng/进行查看"

}

 

#退出程序

quit()

{

clear

exit

}

 

clear

while true

do

echo -e " "

echo "*********************************************"

echo "*******学生信息管理 **************************"

echo "---------------------------------------------"

echo "#############################################"

echo "******* 1-查找学生信息     ******************"

echo "******* 2-增加学生信息     ******************"

echo "******* 3-删除学生信息     ******************"

echo "******* 4-显示所有学生信息 ******************"

echo "******* 5-修改学生信息     ******************"

echo "******* H-帮助            ********************"

echo "******* Q-退出             ******************"

echo "#############################################"

echo -e -n "请输入您的选择:\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 "请重新输入!";

sleep 2;

clear;;

esac

done