shell模拟银行系统

运用awk if语句 函数调用 case语句 死循环。

1.先创建个用户管理文件(info.txt)

me      passwd  money
ws      123     30000
qq      456     30000

2.创建银行系统(bank.sh)

#!/bin/bash

menu1="===============
=    1.登录   =
=    2.退出   =
===============
请选择您的操作[1|2]: "

menu2="++++++++++++++++
+++  1.查询  +++
+++  2.存款  +++
+++  3.取款  +++
+++  4.转账  +++
+++  5.退出  +++
++++++++++++++++
请选择您的操作[1|2|3|4|5]: "

login(){
    read -p "输入您的帐号: " account
    read -p "输入您的密码: " password
    passwd=`awk -v account=$account ‘{if($1==account)print $2}‘ ./info.txt`
    if [ -z "$passwd" ]    查看密码是否为空.
    then
        echo "帐号密码错误"
    elif [ $password == $passwd ]
    then
        echo "登录中....稍后....."
        sleep 1
        echo "登录成功"
        sleep 1
        clear
    else
        echo "帐号密码错误"
    fi
}

query(){
    money=`awk -v account=$account ‘{if($1==account)print $3}‘ ./info.txt`
    echo "当前账户余额: $money"
}

storemoney(){
    read -p "请输入存入金额: " var
    money=`awk -v account=$account ‘{if($1==account)print $3}‘ ./info.txt`
    all_money=$(($money+$var))
    sed -i "/$account/s/$money/$all_money/" ./info.txt
    query
}

getmoney(){
    read -p "请输入存入金额: " var
    money=`awk -v account=$account ‘{if($1==account)print $3}‘ ./info.txt`
    all_money=$(($money-$var))
    sed -i "/$account/s/$money/$all_money/" ./info.txt
    query

}

forwardmoney(){
    read -p "输入转账帐号: " new_name
    if awk -v account=$new_name ‘{if($1==new_name)print $1}‘ ./info.txt&>/dev/null
    then
        read -p "输入转账金额: " for_money
        money1=`awk -v account=$account ‘{if($1==account)print $3}‘ ./info.txt`
        if [ $money1 -lt $for_money ]
        then
            echo "余额不足!"
        else
            all_money1=$(($money1-$for_money))
            sed -i "/$account/s/$money1/$all_money1/" ./info.txt
            money2=`awk -v account=$new_name ‘{if($1==account)print $3}‘ ./info.txt`
            all_money2=$(($money2+$for_money))
            sed -i "/$new_name/s/$money2/$all_money2/" ./info.txt
            echo "转账成功"
            query
        fi
    else
        echo "转账帐号不存在!请确认"
    fi
}

while true
do
    clear
    read -p "$menu1" num1
    if [ $num1 -eq 1 ]
    then
        login
        while true
        do
            read -p "$menu2" num2
            case $num2 in
            1)
                query
            ;;
            2)
                storemoney
            ;;
            3)
                getmoney
            ;;
            4)
                forwardmoney
            ;;
            5)
                break
            ;;
            *)
                echo "请选择正确编号"
            ;;
            esac
        done
    elif [ $num1 -eq 2 ]
    then
        exit
    else
        echo "选择正确的编号"
    fi
done

登陆成功之后进入当前界面

原文地址:https://www.cnblogs.com/MR-ws/p/11110978.html

时间: 2024-08-01 16:26:31

shell模拟银行系统的相关文章

shell 模拟银行系统,后期会进行完善。

今天我们要用shell做一个简易的银行系统,暂时开放了登录安全验证.查询.存款.取款的功能,后期会进行完善. 先说一下我们的银行系统所用到的知识点: 函数库的创建和加载.自定义函数的使用.for循环.if判断.case语句.awk.sed 等命令,熟练掌握. 我们创建了三个文件 [[email protected] bank]# ls yhku.sh yh.sh yh.txt 第一个文件是函数库代码.第二个文件是银行系统的框架代码.第三个文件是测试文件. 第一个文件内容: #!/bin/bash

shell 模拟二维数组解析配置文件

前几日项目组内出shell OJ题进行练习, 题目大概为: 现有配置文件conf.ini如下,编写shell,输入title和key,输出其值, 如输入FIFO1 a1 ,则输出11 #this is a config file [FIFO1] a1=11 b1=12 c1=13 [FIFO2] a2=21 b2=22 c2=23 [FIFO3] a3=31 b3=32 c3=33 恰因这几日内在学习数组的用法,故使用shell来模拟二维数组,现博客之,以飨同学,共研讨. 注:本解法未考虑性能,

appium+python自动化37-adb shell模拟点击事件(input tap)

前言 appium有时候定位一个元素很难定位到,或者说明明定位到这个元素了,却无法点击,这个时候该怎么办呢? 求助大神是没用的,点击不了就是点击不了,appium不是万能的,这个时候应该转换思路,换其它的方法去点击,比如我们可以用adb去执行点击事件 input事件 1.先查看input事件语法有哪些,首先确保手机连上电脑(我这里是电脑上打开的手机模拟器) > adb device > adb shell > input C:\Users\Gloria>adb devices Li

shell模拟并发执行

参考: http://www.51testing.com/html/28/116228-238978.html http://blog.chinaunix.net/uid-27571599-id-3473078.html         在bash中,使用后台任务来实现任务的多进程化.在不加控制的模式下,不管有多少任务,全部都后台执行.也就是说,在这种情况下,有多少任务就有多少"进程"在同时执行.   实例一:正常脚本(脚本功能:查看一个文件中的IP列表循环测试主机连通性) [[ema

---模拟银行系统---

本程序实现了简单的银行系统 据有开户.存款.转账.取款.查询.改密等基本功能 还加上了注销账户.解挂.挂失.银行信息统计等功能. 本程序共5个文件: 它们的代码是: 文件 main.cpp #include <iostream> #include "bank.h" using namespace std; /*主函数:*/ int main() { cout<<endl; cout<<" $$$$$$$$$$$$$$$$$$$$$$$$$$

Bash Shell模拟密码输入

function inpasswd {read -s -p "Enter You Password:" passwd1echoread -s -p "Please Check Password" passwd2echoif [[ $passwd1 == $passwd2 ]]         then                echo "correct" && exit 1         else             

linux shell 模拟post请求

curl -d "param1=value1&param2=value2" http://www.baidu.com 参考:http://blog.sina.com.cn/s/blog_6e2d53050101k230.html

linux 模仿shell操作

linux的文件系统,是把硬盘空间格式化为若干node和block数据块,一般文件的创建,目录的创建,都会占用一个node,如果创建的是文件,具体的数据保存在若干block数据块中,node记录数据块的号码,所有的node和block在文件系统中都已经编号好:如果创建的是目录,会占用一个node,一个block,block中记录着该目录中所有的文件名,block号码记录在node中. 根据linux文件系统的大体结构,用文件的方式,采用C++语言来模拟一些在shell中执行的命令:cd.mkdi

Shell Step by Step (4) —— Cron &amp; Echo

6.脚本定时任务 # Example of job definition: # .------------------------- minute (0 - 59) # | .--------------------- hour (0 - 23) # | | .----------------- day of month (1 - 31) # | | | .------------- month (1 - 12) # | | | | .--------- day of week (0 - 6)