Go: 模拟一张银行卡存、取、查的功能(综合练习)

用Go模拟了一张卡的存、取、查的简单功能。未加入对卡号的识别功能。

package main
import (
	"fmt"
)

//定义一个账户的结构体
type Account struct {
	ActNo string
	Pwd string
	Balance float64
}

func (account *Account) Deposite(pwd string,money int) (isOk bool,bal float64) {
	isOk = false
	if pwd != (*account).Pwd || money <= 0 {
		isOk = true
		bal = 0 
	} else {
		isOk = false
		bal = (*account).Balance + float64(money)
	}
	(*account).Balance = bal
	return isOk,bal
}

func (account *Account) WithDraw(pwd string,money int) (isOk bool,bal float64) {
	isOk = false
	if pwd != (*account).Pwd || money > int((*account).Balance) {
		isOk = true
		bal = 0 
	} else {
		isOk = false
		bal = (*account).Balance - float64(money)
	}
	(*account).Balance = bal
	return isOk,bal
}

func (account *Account) Check(pwd string) (isOk bool,balance float64){
	isOk = false
	if pwd != (*account).Pwd {
		isOk = true
	} else {
		isOk = false
		balance = (*account).Balance
	}
	return isOk,balance
}

func main() {
	//模拟一张银行卡
	account := &Account{
		ActNo: "cs10101010",
		Pwd: "888888",
		Balance: 1000.0,
	}
	var (
		money int
		pwd string
		operator int
	)
	//内置函数
	deposite := func (){
		for i := 1; i <= 3; i ++ {
			fmt.Println("请输入密码...")
			fmt.Scanln(&pwd)
			fmt.Println ("请输入存款金额...")
			fmt.Scanln(&money)
			//调用存款功能方法
			isSuccess,balance := (*account).Deposite(pwd,money)
			if !isSuccess {
				fmt.Printf("您存入的金额是 %v, 当前的账户余额是%v \n",money,balance)
				break
			} else {
				fmt.Printf("输入有误,请重新输入,您还有%d次机会 \n", 3-i )
			}
			if i == 3 {
				fmt.Println("输入错误已满3次,系统退出..." )
				break
			}
		}
	}
	//内置函数
	withdraw := func (){
		for i := 1; i <= 3; i ++ {
			fmt.Println("请输入密码...")
			fmt.Scanln(&pwd)
			fmt.Println ("请输入取款金额...")
			fmt.Scanln(&money)
			//调用取款功能方法
			isSuccess,balance := (*account).WithDraw(pwd,money)
			if !isSuccess {
				fmt.Printf("您要取款的金额是 %v, 当前的账户余额是%v \n",money,balance)
				break
			} else {
				fmt.Printf("输入有误,请重新输入,您还有%d次机会 \n", 3-i )
			}
			if i == 3 {
				fmt.Println("输入错误已满3次,系统退出..." )
				break
			}
		}
	}
	//内置函数
	check := func() {
		for i := 1; i <= 3; i ++{
			fmt.Println("请输入密码...")
			fmt.Scanln(&pwd)
			//调用查询功能的方法
			isSuccess,bal := (*account).Check(pwd)
			if isSuccess {
				fmt.Printf("输入有误,请重新输入,您还有%d次机会 \n", 3-i )
			} else {
				fmt.Printf("您的账户余额为: %.2f \n",bal)
				break
			}
                if i == 3 {
				fmt.Println("输入错误已满3次,系统退出..." )
				break
			}
		}
	}
	a://for循环的标签
    for {
		fmt.Println("请输入您需要的服务: 1.存款; 2.取款; 3.查询; 4.退出")
		fmt.Scanln(&operator)
			switch operator {
			case 1:
				deposite() //调用存款的内置函数
			case 2:
				withdraw() //调用取款的内置函数
			case 3:
				check() //调用余额查询的内置函数
			case 4:
				break a
			default:
				fmt.Println("输入有误,没有您选择的服务项目...")
			}
	}
}

输出的结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值