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(¬e) 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(¬e) 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,则返回;