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
posted @ 2022-06-09 18:18  秋风お亦冷  阅读(81)  评论(0)    收藏  举报