标签:Println FamilyAccount money fmt 收支 面向对象 func Go balance
记账软件 面向对象
main.go
package main
import (
"fmt"
"go_code/family/utils"
)
func main() {
fmt.Println("这个是面向对象的方式完成~")
utils.NewFamilyAccount().MainMenu()
}
familyAccount.go
package utils
import "fmt"
type FamilyAccount struct {
key string
loop bool
balance float64
money float64
note string
count bool
details string
}
//编写要给工厂模式的构造方法,返回一个*FamilyAccount实例
func NewFamilyAccount() *FamilyAccount {
return &FamilyAccount{
key: "",
loop: true,
balance: 10000.0,
count: false,
money: 0.0,
note: "",
details: "收支\t账户金额\t收支金额\t说明",
}
}
func (t *FamilyAccount) showDetails() {
fmt.Println("-------当前收支明细记录---------")
if !t.count {
fmt.Println("当前没有收支明细")
} else {
fmt.Println(t.details)
}
}
func (t *FamilyAccount) income() {
fmt.Println("本次收入金额:")
fmt.Scanln(&t.money)
t.balance += t.money
fmt.Println("本次收入说明:")
fmt.Scanln(&t.note)
t.details += fmt.Sprintf("\n收入\t%v\t\t%v\t\t%v", t.balance, t.money, t.note)
t.count = true
}
func (t *FamilyAccount) pay() {
fmt.Println("本次支出金额:")
fmt.Scanln(&t.money)
if t.money > t.balance {
fmt.Println("余额不足")
return
}
t.balance -= t.money
fmt.Println("本次支出说明:")
fmt.Scanln(&t.note)
t.details += fmt.Sprintf("\n支出\t%v\t\t%v\t\t%v", t.balance, t.money, t.note)
t.count = true
}
func (t *FamilyAccount) exit() {
fmt.Println("你确定要退出吗?y/n")
flag := ""
for {
fmt.Scanln(&flag)
if flag == "y" {
t.loop = false
break
} else if flag == "n" {
break
} else {
fmt.Println("你的输入有误,请重新输入 y/n")
}
}
}
func (t *FamilyAccount) MainMenu() {
for {
fmt.Println("\n-----------家庭收支记账软件-------------")
fmt.Println(" 1.收支明细")
fmt.Println(" 2.登记收入")
fmt.Println(" 3.登记支出")
fmt.Println(" 4.退出软件")
fmt.Println("请选择(1-4)")
fmt.Scanln(&t.key)
switch t.key {
case "1":
t.showDetails()
case "2":
t.income()
case "3":
t.pay()
case "4":
t.exit()
default:
fmt.Println("请输入正确的选项..")
}
if !t.loop {
break
}
}
}
标签:Println,FamilyAccount,money,fmt,收支,面向对象,func,Go,balance 来源: https://www.cnblogs.com/jgg54335/p/15841039.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。