Go:实现一个简易的收支记录demo

一 主菜单设计

效果展示:

思路分析:直接输出即可,使用一个变量来记录用户的输入

        key := "" // 记录用户输入
        fmt.Println("-----------小金鱼记账软件-----------")
		fmt.Println("	  1.收支明细记录")
		fmt.Println("	  2.新增输入记录")
		fmt.Println("	  3.新增支出记录记录")
		fmt.Println("	  4.退出本软件")
		fmt.Println("请选择1-4:")
		fmt.Scanln(&key)

二 完成明细记录功能

效果展示:

思路分析:使用Sprintf()函数完成拼接,将每条记录的变量拼接到记录中,当用户输入数字为1时,输出该条记录。

    // 收支详情
	detail := "收支\t账户金额\t收支金额\t说  明"
    fmt.Println("-----------当前收支明细记录-----------")
	fmt.Println(detail)

三 完成收入记录和支出记录功能

效果展示:

思路分析:两个功能的实现思路类似,我们需要设置几个变量接收用户输入的金额和说明数据,并更新总余额的数值以及明细记录的内容。

    // 账户余额
	balance := 0.00
	// 每次收支的金额
	money := 0.00
	// 每次收支的说明
	note := ""

    // 更新收入记录
    fmt.Println("收入金额记录:")
	fmt.Scanln(&money)
	balance += money
	fmt.Println("收入说明")
	fmt.Scanln(&note)
	detail += fmt.Sprintf("\n收入\t %v         \t%v          \t%v", balance, money, note)
	fmt.Println("记录成功!")

    // 更新支出记录
    fmt.Println("支出金额记录:")
	fmt.Scanln(&money)
	if money > balance {
		fmt.Println("余额不足")
		break
	}
	balance -= money
	fmt.Println("支出说明")
	fmt.Scanln(&note)
	detail += fmt.Sprintf("\n支出\t %v         \t%v          \t%v", balance, money, note)
	fmt.Println("记录成功!")

四 完成退出程序功能

效果展示:

思路分析:

使用一个变量记录当前状态,当变量为false时即可退出循环。同时,我们需要一个变量来接收用户输入的值,如果用户输入n则不退出,输入为y则确认退出,退出系统。如果用户输入了其他非法值则弹出相应提示信息。

    fmt.Println("确定要退出吗?y/n")
	choice := ""
	for {
		fmt.Scanln(&choice)
		if choice == "y" || choice == "n" {
		    break
		}
		fmt.Println("输入有误,请检查 y/n")
	}
	if choice == "y" {
		loop = false
	}

五 代码整合与优化

1.将主程序放入一个for循环中,除非用户主动退出程序,否则每个功能完成后均返回主菜单,供用户进行下一步操作。

    if !loop {
		break
	}

2.使用switch语句判断用户选择,并根据用户选择进行相应的功能,注意要对非法值进行提示(default)。

	switch key {
		case "1":
			
		case "2":
			
		case "3":
			
		case "4":

		default:
			fmt.Println("请输入1-4中的一个数字")
		}
	

3.代码整合

package main

import "fmt"

func main() {
	// 记录用户输入
	key := "" 
	// 记录是否退出程序
	loop := true
	// 账户余额
	balance := 0.00
	// 每次收支的金额
	money := 0.00
	// 每次收支的说明
	note := ""
	// 收支详情
	detail := "收支\t账户金额\t收支金额\t说  明"
	// 显示主菜单
	for {
		fmt.Println("-----------小金鱼记账软件-----------")
		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("-----------当前收支明细记录-----------")
			fmt.Println(detail)
		case "2":
			fmt.Println("收入金额记录:")
			fmt.Scanln(&money)
			balance += money
			fmt.Println("收入说明")
			fmt.Scanln(&note)
			detail += fmt.Sprintf("\n收入\t %v         \t%v          \t%v", balance, money, note)
			fmt.Println("记录成功!")
		case "3":
			fmt.Println("支出金额记录:")
			fmt.Scanln(&money)
			if money > balance {
				fmt.Println("余额不足")
				break
			}
			balance -= money
			fmt.Println("支出说明")
			fmt.Scanln(&note)
			detail += fmt.Sprintf("\n支出\t %v         \t%v          \t%v", balance, money, note)
			fmt.Println("记录成功!")
		case "4":
			fmt.Println("确定要退出吗?y/n")
			choice := ""
			for {
				fmt.Scanln(&choice)
				if choice == "y" || choice == "n" {
					break
				}
				fmt.Println("输入有误,请检查 y/n")
			}
			if choice == "y" {
				loop = false
			}
		default:
			fmt.Println("请输入1-4中的一个数字")
		}
		if !loop {
			break
		}
	}
	fmt.Println("退出成功!")
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值