golang家庭收支记账软件---面向过程
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(¬e) //将收入情况拼接到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(¬e) //将支出情况拼接到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("退出成功") }