實作練習-家庭收支小app
尚硅谷Golang課
實作練習-家庭收支小app
type MyMoney struct {
key string //鍵入值
note string //收支說明
balance float64 //餘額
money float64 //收支
flag bool //判斷是否有明細
details string //詳細
loop bool //循環
}
//綁定方法
func (mm *MyMoney) MainMenu() {
for {
if !mm.loop {
break
}
fmt.Println("\n-----------------家庭收支记账软件-----------------")
fmt.Println(" 1 收支明细")
fmt.Println(" 2 登记收入")
fmt.Println(" 3 登记支出")
fmt.Println(" 4 退出软件")
fmt.Print("請選擇(1-4)...")
fmt.Scanln(&mm.key)
switch mm.key {
case "1":
mm.showDetails()
case "2":
mm.income()
case "3":
mm.outcome()
case "4":
mm.exit()
default:
fmt.Println("輸入錯誤,返回主選單")
}
}
}
func (mm *MyMoney) showDetails() {
fmt.Println("\n-----------------收支明细-----------------")
if mm.flag {
fmt.Println(mm.details)
} else {
fmt.Println("當前沒有明細")
}
}
func (mm *MyMoney) income() {
fmt.Println("\n-----------------登记收入-----------------")
fmt.Println("輸入收入金額...")
fmt.Scanln(&mm.money)
mm.balance += mm.money
fmt.Println("輸入收入說明...")
fmt.Scanln(&mm.note)
mm.details += fmt.Sprintf("\n收入\t%v\t %v\t %v", mm.balance, mm.money, mm.note)
mm.flag = true
}
func (mm *MyMoney) outcome() {
fmt.Println("本次支出金额:")
fmt.Scanln(&mm.money)
//这里需要做一个必要的判断
mm.balance -= mm.money
fmt.Println("本次支出说明:")
fmt.Scanln(&mm.note)
mm.details += fmt.Sprintf("\n支出\t%v\t %v\t %v", mm.balance, mm.money, mm.note)
mm.flag = true
}
func (mm *MyMoney) exit() {
fmt.Println("確定使否退出?(Y/N)")
choice := ""
for {
fmt.Scanln(&choice)
if choice == "Y" || choice == "N" {
break
}
fmt.Println("錯誤,確定使否退出?(Y/N)")
}
if choice == "Y" {
fmt.Println("\n-----------------結束-----------------")
mm.loop = false
} else {
mm.loop = true
}
}
//工廠模式
func NewMyMoney() *MyMoney {
return &MyMoney{
key: "",
loop: true,
balance: 10000.0,
money: 0.0,
note: "",
flag: false,
details: "收支\t账户金额\t收支金额\t说 明",
}
}
上次修改於 2021-08-01
此篇文章的評論功能已經停用。