• 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 := "  收支	账户金额	收支金额	说    明"
        //定义一个变量记录是否有收支行为
        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("
      收入 	%v		  %v		%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("
      支出 	%v		  %v		%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,则返回;

  • 相关阅读:
    [C++] const 限定符
    [国嵌笔记][028][Bootloader设计蓝图]
    [国嵌笔记][027][ARM协处理器访问指令]
    [国嵌笔记][026][ARM伪指令]
    [国嵌笔记][025][ARM指令分类学习]
    [国嵌笔记][024][ARM汇编编程概述]
    [国嵌笔记][023][ARM寻址方式]
    [国嵌笔记][021-022][ARM处理器工作模式]
    [国嵌笔记][020][ARM家族大检阅]
    [国嵌笔记][019][Eclipse集成开发环境]
  • 原文地址:https://www.cnblogs.com/xiximayou/p/11923279.html
Copyright © 2020-2023  润新知