golang家庭收支记账软件---面向过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package main
 
import "fmt"
 
func main() {
    //声明一个变量,保存接受用户输入的选项
    var key int
    //声明一个变量,控制是否退出for循环
    loop := true
    //定义账户余额
    balance := 10000.00
    //每次收支的金额
    money := 0.0
    //每次收支说明
    note := ""
    //定义一个变量作为标识符,记录是否有收支的行为
    flag := false
    //收支的详情使用字符串来记录
    //当有收支时,只需要对details进行拼接处理即可
    details := "收支\t账户金额\t收支金额\t说明\n"
    //显示主菜单
    for {
        fmt.Println("\n--------------家庭收支记账软件--------------")
        fmt.Println("                 1.收支明细")
        fmt.Println("                 2.登记收入")
        fmt.Println("                 3.登记支出")
        fmt.Println("                 4.退出软件")
        fmt.Println("请选择(1-4): ")
 
        fmt.Scanln(&key)
 
        switch key {
        case 1:
            fmt.Println("--------------当前收支明细记录--------------")
            if flag {
                fmt.Println(details)
            } else {
                fmt.Println("还没有收支记录哦,先记一笔账吧~")
            }
        case 2:
            fmt.Println("--------------当前登记收入记录--------------")
            fmt.Println("本次收入金额: ")
            fmt.Scanln(&money)
            balance = balance + money
            fmt.Println("本次收入说明: ")
            fmt.Scanln(&note)
            //将收入情况拼接到details变量
            details = details + fmt.Sprintf("\n收入\t%v\t\t%v\t\t%v", balance, money, note)
            flag = true
        case 3:
            fmt.Println("--------------当前登记支出记录--------------")
            fmt.Println("本次支出金额: ")
            fmt.Scanln(&money)
            //做一个余额判断
            if money > balance {
                fmt.Println("余额不足")
                break
            } else {
                balance = balance - money
                fmt.Println("本次支出说明: ")
                fmt.Scanln(&note)
                //将支出情况拼接到details变量
                details = details + fmt.Sprintf("\n支出\t%v\t\t%v\t\t%v", balance, money, note)
                flag = true
            }
        case 4:
            fmt.Println("你确定要退出吗y/n")
            //定义一个确定变量
            choice := ""
            for {
                fmt.Scanln(&choice)
                if choice == "y" || choice == "n" {
                    break
                }
                fmt.Println("你的输入有误,请重新输入")
            }
            if choice == "y" {
                loop = false
            }
        default:
            fmt.Println("请输入正确选项...")
        }
        if !loop {
            break
        }
    }
    fmt.Println("退出成功")
}

  


__EOF__

本文作者StarGazer
本文链接https://www.cnblogs.com/PatrickStarGazer/p/15991856.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Star_Gazer  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示