shell阶段-模拟银行取款流程脚本
银行取款流程脚本
模拟功能:登录、查询、提现、转账、存款、清屏、退出
登录次数限制:3次错误强制退出程序
登录用户1:zzp/123
登录用户2:cj/456
模拟执行
[root@k8s-master01 shell]# sh qukuan.sh
请输入您的账户名>>>zzp
请输入取款密码>>>1234
密码输入错误,还剩2次机会!
请输入您的账户名>>>zzp
请输入取款密码>>>123
正在验证用户···
用户“ZhangZhenPeng”登陆成功!正在进入您的个人账户,请稍后···
1) 查询余额
2) 提现
3) 转账
4) 存款
5) 清屏
6) 退出
请输入功能编号来选择您的操作>>>1
正在查询您的账户余额,请稍后···
您的账户余额为6000000元
请输入功能编号来选择您的操作>>>2
请输入提款金额>>>10000
正在为您提款,请稍后...
已成功提款10000元,请取钞。
当前账户余额还剩5990000元。
请输入功能编号来选择您的操作>>>3
请输入对方银行卡号或手机号>>>00000
正在核对验证用户“00000”的账户信息,请稍后...
您要转账的用户为“一夜暴富”,是否继续转账?(输入(Y/N)选择)>>>y
请输入转账金额>>>15
请放入面值为100元人民币
请输入转账金额>>>1000
正在处理请稍后···
正在汇款给“一夜暴富”,请稍后···
已成功向对方汇款1000元(人民币)!
当前账户余额为5989000元
正在返回主菜单,请稍后···
请输入功能编号来选择您的操作>>>4
请将钞票摆放整齐放置存款口>>>15
请放入面值为100元人民币
请将钞票摆放整齐放置存款口>>>1000
正在为您存款,请稍后...
已成功存款1000元!正在为您查询当前账户余额,请稍等...
当前账户余额还剩5990000元,3秒后返回主菜单···
当前账户余额还剩5990000元,2秒后返回主菜单···
当前账户余额还剩5990000元,1秒后返回主菜单···
1) 继续存款
2) 返回主菜单
请选择操作>>>2
1) 查询余额
2) 提现
3) 转账
4) 存款
5) 清屏
6) 退出
请选择操作>>>6
[root@k8s-master01 shell]#
qukuan.sh
#!/bin/bash
declare -A name
name=(["zzp"]="123" ["cj"]="456")
declare -A ming
ming=(["zzp"]="ZhangZhenPeng" ["cj"]="CuiJian")
function LOGIN() {
while :
do
for i in {1..3}
do
read -p "请输入您的账户名>>>" user
read -p "请输入取款密码>>>" pwd
if [ $i == 3 ];then
echo "已错误登录超过三次,为了保护您的财产安全,账户已被锁定!请咨询客服进行解锁。" && exit 1
fi
if [ -z $user -o -z $pwd ];then
echo "用户名或密码不能为空,错误输入$((3-$i))次将自动退出银行系统!请重新输入~" && continue
fi
if [[ ! $user =~ [a-Z0-9]+ || ! $pwd =~ [a-Z0-9]+ ]];then
echo "用户名或密码不能为空,必须是以字母或数字的组合~" && continue
fi
for uname in ${!name[*]}
do
#echo $uname ${name[$user]} $user $pwd ${ming[$user]}
if [ "$user" == "$uname" ] && [ "$pwd" == "${name[$user]}" ];then
echo "正在验证用户···" && sleep 1
echo "用户“${ming[$user]}”登陆成功!正在进入您的个人账户,请稍后···" && sleep 1 && break 2
fi
done
if [ "$user" != "$uname" ] || [ "$pwd" != "${name[$user]}" ];then
echo "密码输入错误,还剩$((3-$i))次机会!"
if [ "$user" != "$uname" ];then
echo "当前用户未注册,请注册后登陆!"
continue
fi
continue
else
echo "用户名或密码输入错误,请重新输入,还剩$((3-$i))次机会!"
continue
fi
break
done
break
done
}
function MENU() {
PS3='请输入功能编号来选择您的操作>>>'
yue=6000000
select choice in {"查询余额","提现","转账","存款","清屏","退出"}
do
for (( i = 1; i < 4; i++ ))
do
case $choice in
"查询余额")
echo "正在查询您的账户余额,请稍后···" && sleep 2
echo "您的账户余额为$yue元" && break
;;
"提现")
sleep 1
read -p "请输入提款金额>>>" rmb
if [ $rmb -gt $yue ];then
echo "余额不足!" && continue
elif [[ $rmb =~ ^[0-9]+$ ]];then
let "yue = $yue - $rmb"
echo "正在为您提款,请稍后..." && sleep 3
echo "已成功提款$rmb元,请取钞。" && sleep 1
echo "当前账户余额还剩$yue元。" && break
else
echo "仅支持阿拉伯数字,请重新输入~" && continue
fi
;;
"转账")
sleep 1
read -p "请输入对方银行卡号或手机号>>>" num
while :
do
if [[ $num =~ ^[0-9]+$ ]];then
echo "正在核对验证用户“$num”的账户信息,请稍后..." && sleep 1
while :
do
read -p "您要转账的用户为“一夜暴富”,是否继续转账?(输入(Y/N)选择)>>>" choice
if [ $choice == "y" -o $choice == "Y" ];then
while :
do
read -p "请输入转账金额>>>" rmb
[ -z $rmb ] && echo "不能为空~" && continue
[ $(($rmb%100)) != 0 ] && echo "请放入面值为100元人民币" && continue
if [[ $rmb =~ ^[0-9]+$ ]];then
sleep 1
echo "正在处理请稍后···"
echo "正在汇款给“一夜暴富”,请稍后···" && sleep 2
echo "已成功向对方汇款$rmb元(人民币)!" && sleep 1
let "yue = $yue - $rmb"
echo "当前账户余额为$yue元" && sleep 1
echo "正在返回主菜单,请稍后···" && break
else
echo "金额输入仅支持阿拉伯数字,请重新输入转账金额~" && continue
fi
done
break
elif [ $choice == "n" -o $choice == "N" ];then
echo "您已取消转账!正在返回主菜单,请稍后···" && sleep 1 && break
else
continue
fi
done
break
else
echo "仅支持阿拉伯数字,请重新输入~" && break
fi
done
;;
"存款")
while :
do
sleep 1
read -p "请将钞票摆放整齐放置存款口>>>" rmb
[ -z $rmb ] && echo "不能为空~" && continue
[ $(($rmb%100)) != 0 ] && echo "请放入面值为100元人民币" && continue
if [[ $rmb =~ ^[0-9]+$ && $rmb -ge 100 ]];then
let "yue = $yue + $rmb"
echo "正在为您存款,请稍后..." && sleep 2
echo "已成功存款$rmb元!正在为您查询当前账户余额,请稍等..." && sleep 2 && clear
echo "当前账户余额还剩$yue元,3秒后返回主菜单···" && sleep 1 && clear
echo "当前账户余额还剩$yue元,2秒后返回主菜单···" && sleep 1 && clear
echo "当前账户余额还剩$yue元,1秒后返回主菜单···" && sleep 1 && clear
PS3="请选择操作>>>"
select choice in {"继续存款","返回主菜单"}
do
case $choice in
"继续存款")
continue 2
;;
"返回主菜单")
break 3
esac
done
fi
done
break
;;
"清屏")
clear
;;
"退出")
exit
esac
done
done
}
LOGIN
MENU

浙公网安备 33010602011771号