Go---练习demo(记账)

1.目录结构

2.familyAccount.go

package pojo

import (

  "fmt"

)

type FamilyAccount struct{

    //用于接收输入的选项

     key string

    loop bool

    //定义账户余额

     balance float64

    //每次收支的金额

     money float64

    //每次收支的说明

     note string

     //判断是否有收支行为

     flag bool

    //收支的详情使用字符串来记录

    //当有收支时,只需要对details进行拼接处理即可

    details string

}

//工厂模式的构造方法

func NewFamilyAccount() *FamilyAccount{

    return &FamilyAccount{

       key : "",

       loop : true,

       balance : 10000.0,

       money : 0.0,

       note :"",

       flag :false,

       details : "收支\t账户余额\t收支金额\t说明\n",

    }

}

//给结构体绑定相应的方法

//显示明细

func (this *FamilyAccount) showDetails(){

    fmt.Println("\n--------------当前收支明细记录-------------")

            if this.flag {

                fmt.Println(this.details)

            }else{

                fmt.Println("当前没有收支明细,,,快存钱吧")

            }

}

//登记收入

func (this *FamilyAccount) income(){

    fmt.Println("本次收入金额:")

            fmt.Scanln(&this.money)

            this.balance += this.money //修改账户余额

            fmt.Println("本次收入说明:")

            fmt.Scanln(&this.note)

            //将这个收入情况,拼接到details变量

            this.details += fmt.Sprintf("\n收入\t%v\t\t%v\t\t%v",this.balance,this.money,this.note)

            this.flag=true

}

//登记支出

func (this *FamilyAccount) output(){

    fmt.Println("本次支出金额:")

            fmt.Scanln(&this.money)

            if this.money >this.balance{

                fmt.Println("余额不足")

                //break

            }

            this.balance -= this.money

            fmt.Println("本次支出说明:")

            fmt.Scanln(&this.note)

             //将这个收入情况,拼接到details变量

             this.details += fmt.Sprintf("\n支出\t%v\t\t%v\t\t%v",this.balance,this.money,this.note)

             this.flag=true

}

func (this *FamilyAccount) exit(){

    fmt.Println("你确定要退出程序嘛?y/n")

    choice := ""

    for {

        fmt.Scanln(&choice)

        if choice == "y" || choice =="n"{

            break

        }

        fmt.Println("你的输出有误,请重新输入 y/n")

    }

    if choice=="y"{

        this.loop =false

    }

}

//显示主菜单

func (this *FamilyAccount) MainMenu(){

    //显示主菜单

    for{

        fmt.Println("--------------家庭收支记账软件-----------")

        fmt.Println("                1.收支明细")

        fmt.Println("                2.登记收入")

        fmt.Println("                3.登记支出")

        fmt.Println("                4.退出")

        fmt.Printf("请选择(1-4):")

        fmt.Scanln(&this.key)

        //处理用户选择的

        switch this.key{

        case "1":

            this.showDetails()

        case "2":

            this.income()

        case "3":

            this.output()

        case "4":

            this.exit()

           

        default :

            fmt.Println("请输入正确的选项")

        }

        //退出循环

        if !this.loop{

            break

        }

    }

    fmt.Println("已退出软件")

}

3.main.go

package main

import (

    "secondGo/finance/pojo"

)

func main(){

  pojo.NewFamilyAccount().MainMenu()

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值