Fork me on GitHub

golang实战--家庭收支记账软件(面向过程)

1.开发流程

 

 

2.目标

  • 模拟实现一个基于文本界面的(家庭记账软件) ;
  • 初步掌握编程技巧和调试技巧;
  • 主要包含以下知识点:局部变量和基本数据类型、循环语句、分支语句、简单屏幕格式输出、面向对象编程;
  • 该软件能够记录家庭的输入、支出,并能够打印家庭明细表;
  • 采用分级菜单的方式:
  • --------------家庭收支记账软件-----------------
  • 1.收支明细
  • 2.登记收入
  • 3.登记支出
  • 4.退出
  • 请选择(1-4)

3.实现(具体细节看代码吧)

package main

import (
    "fmt"
)

func main() {
    //申明一个变量,保存输入的选择
    key := ""
    //申明一个变量判断是否退出循环
    loop := false
    //定义账户的余额
    balance := 10000.0
    //每次收支的金额
    money := 0.0
    //每次收支的说明
    note := ""
    //收支的详情,使用字符串来记录
    details := "  收支\t账户金额\t收支金额\t说    明"
    //定义一个变量记录是否有收支行为
    flag := false

    //显示菜单
    for {
        fmt.Println("----------------------家庭收支软件-----------------------")
        fmt.Println("                      1.收支明细")
        fmt.Println("                      2.登记收入")
        fmt.Println("                      3.登记支出")
        fmt.Println("                      4.退出软件")
        print("请选择(1-4):")
        fmt.Scanln(&key)
        switch key {
        case "1":
            if flag {
                fmt.Println("----------------------当前收支明细-----------------------")
                fmt.Println(details)
            } else {
                fmt.Println("当前没有收支明细,来一笔吧")
            }
        case "2":
            fmt.Println("本次收入金额:")
            fmt.Scanln(&money)
            balance += money
            fmt.Println("本次收入说明:")
            fmt.Scanln(&note)
            details += fmt.Sprintf("\n  收入 \t%v\t\t  %v\t\t%v", balance, money, note)
            flag = true
        case "3":
            fmt.Println("本次支出金额:")
            fmt.Scanln(&money)
            if money > balance {
                fmt.Println("余额不足!!!")
                break
            }
            balance -= money
            fmt.Println("本次收入说明:")
            fmt.Scanln(&note)
            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 = true
            }
        default:
            fmt.Println("请输入正确的选项")
        }

        if loop {
            break
        }
    }

}

初始金额为10000。0,当然也可以自己定义为0.0。

启动后的界面:

 

如果收支明细中没有记录,选择1的话,会显示“当前没有收支明细,来一笔吧”

选择2:

 

选择3:(如果金额不够,会显示“当前余额不足!”)

 

 选择1:

 

记录了我们的收入与支出,同时金额也在相应进行变化。

选择4:输入y或n,如果没输对,就提示输入错误;输入y,则退出;输入n,则返回;

posted @ 2019-11-24 17:28  西西嘛呦  阅读(667)  评论(0编辑  收藏  举报