main/main.go
package main import ( "laurence/utils" ) func main() { //面向对象 familAccount := utils.NewFamilyAccount() familAccount.MainMenu() }
utils/familAccount.go
package utils import "fmt" type FamilAccount struct { Option string `json:option` Loop bool `json:loop` Balance float64 `json:balance` Money float64 `json:money` Note string `json:note` Flag bool `json:flag` Detail string `json:detail` } //工厂模式返回一个指针给前端用 func NewFamilyAccount() *FamilAccount { return &FamilAccount{ Option: "", Loop: true, Balance: 10000.00, Money: 0.00, Note: "", Flag: false, Detail: "收支\t账号余额\t收支金额\t说明\n", } } func (familAccount *FamilAccount) showDetail() { if familAccount.Flag { fmt.Println(familAccount.Detail) }else{ fmt.Println("暂无记录!!!!!!!!!!") } fmt.Println() } func (familAccount *FamilAccount) Income() { fmt.Print("本次收入金额:") fmt.Scanln(&familAccount.Money) fmt.Print("本次收入说明:") fmt.Scanln(&familAccount.Note) familAccount.Balance += familAccount.Money //格式化拼接 familAccount.Detail += fmt.Sprintf("收入\t%v\t\t%v\t\t%v\n",familAccount.Balance,familAccount.Money,familAccount.Note) familAccount.Flag = true } func (familAccount *FamilAccount) Pay() { fmt.Print("本次支出金额:") fmt.Scanln(&familAccount.Money) fmt.Print("本次支出说明:") fmt.Scanln(&familAccount.Note) if familAccount.Money > familAccount.Balance { fmt.Print("尴尬,余额不足!!!!!!!!!!!!!!") } familAccount.Balance -= familAccount.Money //格式化拼接 familAccount.Detail += fmt.Sprintf("支出\t%v\t\t%v\t\t%v\n",familAccount.Balance,familAccount.Money,familAccount.Note) familAccount.Flag = true } func (familAccount *FamilAccount) Exit() { fmt.Print("您确定要退出吗? y/n:") choice := "" for { fmt.Scanln(&choice) if choice == "y" || choice == "n" { break } fmt.Print("输入有误,请重新输入:") } if choice == "y" { familAccount.Loop = false } } func (familAccount *FamilAccount) MainMenu() { for { fmt.Println("----------家庭收支记账明细------------") fmt.Println(" 1 收支明细") fmt.Println(" 2 登记收入") fmt.Println(" 3 登记支出") fmt.Println(" 4 退 出") fmt.Println(" 请选择(1-4)") fmt.Println("--------------------------------------") fmt.Print("请选择您要操作的选项:") fmt.Scanln(&familAccount.Option) switch familAccount.Option { case "1": familAccount.showDetail() case "2": familAccount.Income() case "3": familAccount.Pay() case "4": familAccount.Exit() default: fmt.Println("输入有误,请重新选择:") } if !familAccount.Loop { fmt.Println("欢迎下次光临,Goodbay!!!!!!!!!!!!") break } } } //TODO //验证是否登录 //完成转账功能
原文:https://www.cnblogs.com/Essaycode/p/12677743.html