Golang-demo练习

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
//验证是否登录
//完成转账功能

  

posted @ 2020-04-11 09:19  爱跑步的乌龟  阅读(311)  评论(0编辑  收藏  举报