shell脚本实验()

 实验题目:                shell脚本实验                                                                               

实验目的:学会利用shell的控制逻辑及语法完成shell的脚本设计并进行脚本功能的验证

实验器材: linux bash                                                                                                      

一、实验功能设计

 1.设计一个超市商品信息管理系统

2.主要包括商品的编号(唯一)、商品名称、商品进价、商品售价这几项信息。

3.通过编码实现商品的增删改查操作

二、源代码
1.商品信息功能选择页面

通过在菜单上选择功能序号跳转到具体的功能实现函数模块。
Goods_Info_page(){

echo -e "\t-----------欢迎使用超市商品管理系统------------"

echo -e "\t*            1.商品信息添加.                  *"

echo -e "\t*            2.商品信息修改.                  *"

echo -e "\t*            3.商品信息删除.                  *"

echo -e "\t*            4.查看单个商品信息.              *"

echo -e "\t*            5.查看所有商品信息.              *"

echo -e "\t*            0.退出系统.                      *"

echo -e "\t*            小组成员:LWJ、LXH、WT           *"

echo -e "\t-----------------------------------------------"

echo -n "请输入功能选择(0~5):"

if [ -f ./Goods_Info.dat ]

then

:

else

touch ./Goods_Info.dat

fi

while [ true ] ; do

read select

case $select in

1) add_Goods_Info  ;;

2) modify_Goods_Info  ;;

3) del_Goods_Info  ;;

4) search_Goods_Single_Info  ;;

5) view_Goods_Info  ;;

0) quit_Program  ;;

*) erro_chose_function  ;;

esac

done

}

运行结果:

2.查看单个商品信息

search_Goods_Single_Info(){

#检测ID有效性

while [ true ] ; do

echo  -n "请输入要查询的商品ID(1000~~):"

read  gid

ID_flag=$(echo "$gid" | grep -c "^[0~9]\{4,10\}$")

if [ "$ID_flag" = "" ]

then

echo "警告:ID输入不合法,请按照要求输入!"

continue

fi

#检测ID是否存在

count=$(grep "$gid" $Goods_Info | wc -l)

if [ "$count" = "0" ]

then

echo "商品ID不存在,请输入正确的ID~"

continue

fi

break

done

lineNum=$(grep -n $gid $Goods_Info |cut -d ":" -f 1)

echo -e "ID\t商品\t进价\t价格\t售价\t价格"

sed -n "${lineNum}p" $Goods_Info

while [ true ] ; do

echo -n "是否继续查询:(Y or N):"

read make_sure

case "$make_sure" in

y | Y) search_Goods_Single_Info;;

n | N) Goods_Info_page ;;

*) echo "警告:输入错误!请按照要求输入!" ;;

esac

done

}

运行结果:

3.商品信息添加

add_Goods_Info(){

#检测ID有效性

while [ true ] ; do

echo -n "输入商品ID(1000~~)"

read gid

ID_flag=$(echo "$gid" |grep -c "^[0-9]\{4,10\}$")

if [ "$ID_flag" = "0" ]

then

echo "警告:ID输入不合法,请按照要求输入!"

continue

fi

#检测ID是否存在

count=$(grep "$gid" $Goods_Info | wc -l)

if [ "$count" = "1" ]

then

echo "商品ID已经存在,无法添加商品~"

continue

fi

break

done

        while [ true ] ; do

read -p "请输入商品名称:" name

if [ "$name" = "" ] ; then

echo "商品名称不能为空!!请重新输入!!"

continue

else

break

fi

done

    echo -ne "$gid\t$name" >> $Goods_Info

#输入商品的进价和售价:

    echo "请输入商品价格(0~100)"

        i=2

while [ "$i" -gt 0 ] ; do

case "$i" in  

"2") cname="进价" ;;

"1") cname="售价" ;;

esac

echo -ne "\t$cname" >> $Goods_Info

#检测价格有效性

while [ true ] ; do

  echo -n "输入$cname:"

  read price

  if [ "$price" = "" ]

  then

  echo "价格不能为空!请重新输入"

  continue

  fi

  if [ "$price" -gt -1  -a "$price" -lt 101 ]                   

  then                                                          

  :                                                         

  else                                                          

  echo "警告:输入不符合要求,请重新输入!范围:0~100"

  continue

  fi

  echo -ne "\t$price" >> $Goods_Info

  break

done

i=$((i-1)) #接下来输入售价

done

        #判断添加完成一条记录的后续操作

        while [ true ] ; do

           echo -n "是否继续添加:(Y or N):"

           read make_sure

           case "$make_sure" in

           y | Y) add_Goods_Info ;;

           n | N) Goods_Info_page ;;

           *)  echo "警告:输入错误! 请按照要求输入!";;

           esac

         done

}

运行结果:

4.商品信息修改

modify_Goods_Info(){

        #检测ID有效性

        while [ true ] ; do

          echo -n "输入要修改的商品ID (1000~~):"

          read gid

          ID_flag=$(echo "$gid" |grep -c "^[0-9]\{4,10\}$")

          if [ "$ID_flag" = "0"  ]

          then

              echo "警告:ID输入不合法,请按照要求输入!"

              continue

          fi

          count=$(grep "$gid" $Goods_Info | wc -l)

          if [ "$count" = "0" ]

          then

              echo "警告:商品ID不存在!无法修改~"

              continue

          fi

          break

        done

        #获取指定商品编号和名称

        lineNum=$(grep -n $gid $Goods_Info |cut -d ":" -f 1 )

        name=$(cat $Goods_Info | awk '{print $2 }'| sed -n ''"$lineNum"'p')

        newInfo=$gid"\t"$name

        #统一输入商品要修改的进价与售价:

        echo "请修改价格(0~100)"

        i=2

        while [ "$i" -gt 0 ] ; do

 case "$i" in

"2")  cname="进价" ;;

"1")  cname="售价" ;;

esac

newInfo=$newInfo"\t"$cname

#检测价格有效性

while [ true ] ; do

  echo -n "请输入$cname价格:"

  read price

  if [ "$price" = "" ]

  then

  echo "价格不能为空,请重新输入!"

  continue

  fi

  if [ "$price" -gt -1 -a "$price" -lt 101 ]                   

                  then                                                          

                      :                                                         

                  else                                                          

                      echo "警告:输入不符合要求,请重新输入!范围:0~100"

                      continue

                  fi  

break

                done

                i=$((i-1))

                newInfo=$newInfo"\t"$price

        done

echo "原记录为:"

echo -e $(grep $gid $Goods_Info )

echo "新纪录为:"

echo -e $newInfo

lineNum=$(grep -n $gid $Goods_Info |cut -d ":" -f 1)

while [ true ] ; do

echo -n "确定要记录修改?(Y or N):"

read make_sure

case "$make_sure" in

Y | y) sed -i ' '"$lineNum"'s/.*/'"$newInfo"'/ ' $Goods_Info

echo "修改成功!"

break  ;;

N | n) Goods_Info_page  ;;

*) echo "警告:输入错误!请重新输入!"  ;;

esac

done

#判断修改完成一条记录的后续操作

while [ true ] ; do

echo -n "是否继续修改:(Y or N):"

read make_sure

case "$make_sure" in

Y | y) modify_Goods_Info  ;;

N | n) Goods_Info_page  ;;

*) echo "警告:输入错误!请按照要求输入!"  ;;

esac

done

}

运行结果:

5.商品信息删除

del_Goods_Info(){

while [ true ] ; do

echo -n "输入要删除的商品ID(1000~~):"

read gid

ID_flag=$(echo "$gid" |grep -c "^[0-9]\{4,10\}$")

if [ "$ID_flag" = "0" ]

then

echo "警告:ID输入不合法,请按照要求输入!"

continue

fi

count=$(grep "$gid" $Goods_Info | wc -l)

if [ "$count" = "0" ]

then

echo "警告:该商品ID不存在!无法删除~"

continue

fi

break

done

echo "原记录为:"

echo -e $(grep $gid $Goods_Info)

while [ true ] ; do

echo -n "确定要删除记录?(Y or N):"

read make_sure

case "$make_sure" in

Y | y) sed -i '/'"$gid"'/d' $Goods_Info

echo "删除成功!"

break  ;;

N | n) Goods_Info_page  ;;

*) echo echo "警告:输入错误!请重新输入!"

esac

done

#判断删除完成一条记录的后续操作

while [ true ] ; do

echo -n "是否继续删除:(Y or N):"

read make_sure

case "$make_sure" in

Y | y) del_Goods_Info  ;;

N | n) Goods_Info_page  ;;

*) echo "警告:输入错误!请按要求输入!"  ;;

esac

done

}

运行结果:

6.显示全部商品信息

view_Goods_Info(){

    echo -e "------------------------------------------------------------"

echo -e "商品信息列表:"

echo -e "ID\t商品名\t进价\t价格\t售价\t价格"

cat   $Goods_Info

echo -e "------------------------------------------------------------"

echo -e "按回车键退出!"

read some

Goods_Info_page

}

运行结果:

7.退出程序

quit_Program(){

        echo "bye! 欢迎下次使用~"

        exit

}
运行结果:

三、实验结果及分析总结

通过设计增删改查函数实现了商品信息的增删改查操作,能在终端上实现对应功能。

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值