GO语言项目实战之家庭收支记账软件(2)面向过程(OPP)代码实现

一、思路分析:

1、功能1:先完成可以显示主菜单,并且可以退出
分析思路:
1) 使用一个for循环,循环显示菜单
2) 根据用户的输入来完成对应的功能
3) 如果用户输入了4, 就退出该软件
代码:

/*面向过程实现*/
func MyFamilyAccount()  {
    var num int 
    var flag bool = false
    var isMX bool = false
    var details string
    for {
        menu()
        fmt.Scanln(&num)
        switch num {
        case 1:
            if isMX {
                incomeAndexpense(details)
            }else{
                fmt.Println("没有明细")
            }

        case 2: 
            isMX = true
            details += income()

        case 3:
            isMX = true
            details +=expense()
        case 4:
            flag = true
        default:
            fmt.Println("输入有误!!!")
        }       
        if flag {
            break
        }
    }
}

2、功能2:完成可以显示明细和登记收入的功能
分析思路:
1) 定义两个变量 money float64: 表示支出或者收入的金额, balance float64 : 表示账号金额,
2) 当有一笔支出或是收入时,我们就直接把这个具体情况拼接到一个 details string 中即可。
代码:


func income() string {
    fmt.Println("本次收入金额:",1000)
    fmt.Println("本次收入说明:","有人发红包")
    details := "收入" + "\t10000" + "\t1000" + "\t有人发红包" + "\n"
    // fmt.Println(details)
    return details
}
func incomeAndexpense(details string)  {
    fmt.Println("------------------------当前收支明细记录------------------------")
    fmt.Println("收支"+"\t账户金额"+"\t收支金额"+"\t明细")
    fmt.Println(details)
    fmt.Println("--------------------------------------------------------------")

}

3、功能3:完成了登记支出的功能
思路分析:
由于登记支出和登记收入几乎一样,修改一下即可.
代码实现:

func expense() string {
    fmt.Println("本次支出金额:",500)
    fmt.Println("本次支出说明:","发红包")
    details := "支出" + "\t10000" + "\t500" + "\t发红包" + "\n"
    // fmt.Println(details)
    return details
}

二、完整代码:

utils/familyAccount.go

package utils

import (
    "fmt"
)

/*面向过程实现*/
func MyFamilyAccount()  {
    var num int 
    var flag bool = false
    var isMX bool = false
    var details string
    for {
        menu()
        fmt.Scanln(&num)
        switch num {
        case 1:
            if isMX {
                incomeAndexpense(details)
            }else{
                fmt.Println("没有明细")
            }

        case 2: 
            isMX = true
            details += income()

        case 3:
            isMX = true
            details +=expense()
        case 4:
            flag = true
        default:
            fmt.Println("输入有误!!!")
        }       
        if flag {
            break
        }
    }
}

func expense() string {
    fmt.Println("本次支出金额:",500)
    fmt.Println("本次支出说明:","发红包")
    details := "支出" + "\t10000" + "\t500" + "\t发红包" + "\n"
    // fmt.Println(details)
    return details
}


func income() string {
    fmt.Println("本次收入金额:",1000)
    fmt.Println("本次收入说明:","有人发红包")
    details := "收入" + "\t10000" + "\t1000" + "\t有人发红包" + "\n"
    // fmt.Println(details)
    return details
}

func incomeAndexpense(details string)  {
    fmt.Println("------------------------当前收支明细记录------------------------")
    fmt.Println("收支"+"\t账户金额"+"\t收支金额"+"\t明细")
    fmt.Println(details)
    fmt.Println("--------------------------------------------------------------")

}

func menu()  {
    fmt.Println("------------家庭收支记账软件------------")
    fmt.Println("              1 收支明细")
    fmt.Println("              2 登记收入")
    fmt.Println("              3 登记支出") 
    fmt.Println("              4 退出")
    fmt.Println("              请选择(1-4)")
    fmt.Println("--------------------------------------")

}

main/main.go

package main

import (
    "go_code/softwaredev/family/code/utils"
)

func main()  {
    utils.MyFamilyAccount()

}

猜你喜欢

转载自blog.csdn.net/TDCQZD/article/details/81784100
今日推荐