0. 前言
这个小案例将会用到go的很多基本概念,涉及的内容挺多的,项目虽小,五脏俱全,能完整做完,学到的知识应该不少。
需求:记录家庭的收入、支出,并能够打印收支明细表
一个简单的界面,我们把主要放到后台go的逻辑上面
1. 退出
我们冲最简单的功能开始开发,第一个来写退出,这个肯定是最容易写的,直接上代码、、
package main
import (
"fmt"
)
func main(){
//声明一个变量,保存接收用户输入的选项
key := ""
//声明一个变量,控制是否退出for
loop := true
//显示这个主菜单
for{
fmt.Print1n("-------收支记账------")
fmt.Println("1收支明细")
fmt.Println("2登记收入")
fmt.Println("3登记支出")
fmt.Println("4退出软件")
fmt.Print("请选择(1-4):")
switch key
case "1":
fmt.Print.1n(”---------当前收支明细记录----------)
case "2":
fmt.Print.1n(”---------登记----------)
case "3":
fmt.Print.1n(”---------支出----------)
case "4":
loop = false
default:
fmt.println("请输入正确选项")
}
if !loop{
break
}
fmt.println("已退出")
}
2. 显示明细和登记收入
第二个完成可以显示明细和登记收入的功能。
思路:
- 因为需要显示明细,我们定义一个变量details string来记录
- 还需要定义变量来记录余额(balance)、每次收支的金额(money),每次收支的说明(note)
func main(){
//声明一个变量,保存接收用户输入的选项
key := ""
//声明一个变量,控制是否退出for
loop := true
//定义账户的余额[]
ba1ance:= 10000.0
//每次收支的金额
money := 0.0
//每次收支的说明
note := ""
}
3. 改进代码
- 用户输入4退出时,给出提示"你确定要退出吗?y",必须输入正确的yn,否则循环输入指令,直到输入y或者n
- 当没有任何收支明细时,提示"当前没有收支明细…来一笔吧!"
- 在支出时,判断余额是否够,并给出相应的提示
- 将面向过程的代码修改成面向对象的方法,编写myFamilyAccount.go,并使用testMyFamilyAccount.go去完成测试
思路分析: 把记账软件的功能,封装到一个结构体中,然后调用该结构体的方法,来实现记账,显示明细。结构体的名字FamilyAccount.在通过在main方法中,创建一个结构体FamilyAccount实例,实现记账即可.
package main
import (
"fmt"
)
type FamilyAccount struct{
//声明必须的字段.
//声明一个字段,保存接收用户输入的选项
key s
string
//声明一个字段,控制是否退出or
loop bool
//定义账户的余额门
balance float64
//每次收支的金额
money float64
//每次收支的说明
note string
//定义个字段,记录是否有收支的行为
flag bool
//收支的详情使用字符串来记录
//当有收支时,只需要对details进行拼接处理即可
details string
}
//编写要给工厂模式的构造方法,返回一个*FamilyAccount实例
func NewFamilyAccount()*FamilyAccount{
return &FamilyAccount
key:",
loop true,
balance:10000.0.
money 0.0,
note:""
flag false
}
//将退出系统写成一个方法,和*FamilyAccount绑定
func (this *FamilyAccount)exit(){
fmt.Println("你确定要退出吗?yn")
choice :"
for{
fmt.Scanln(&choice)
if choice -"y"choice -"n"
break
fmt.Println("你的输入有误,请重新输入yn")
}
if choice ="y"{
this.loop false
}
}
到这,简单的一个案例就完成了,希望对你有帮助。
本文正在参加技术专题18期-聊聊Go语言框架