Go-家庭收支软件(面向对象)很重要
记账软件 面向对象
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
}
}
}
转载请注明出处,欢迎讨论和交流!
分类:
GO
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
2021-06-11 PyQt5-使用可视化设计窗体的GUI程序