golang实战--家庭收支记账软件(面向对象)

golang实战--家庭收支记账软件(面向对象),第1张

概述首先是具体的目录结构: 其中myAccount.go中调用utils包中的函数;utils.go实现记账软件的一些相应的功能; myAccount.go package main import ( &

首先是具体的目录结构:

其中myAccount.go中调用utils包中的函数;utils.go实现记账软件的一些相应的功能;

myAccount.go

package mainimport (    "fmt"    go_code/project_5/utils")func main() {    fmt.Println(这个是面向对象的方法完成的)    utils.NewFamilyAccount().MainMenu()}

utils.go

package utilsimport type familyAccount struct {    //声明一些常用的字段    申明一个字段,保存输入的选择    key string    申明一个字段判断是否退出循环    loop bool    定义账户的余额    balance float64    每次收支的金额    money float64    每次收支的说明    note 收支的详情,使用字符串来记录    details 定义一个字段记录是否有收支行为    flag bool}func NewFamilyAccount() *familyAccount {    return &familyAccount{        key:     "",loop:    false10000.00.0\n  收入 \t金额\t\t  明细\t\t说明给结构体定义相应的方法显示菜单func (f *familyAccount) MainMenu() {    for {        fmt.Println(----------------------家庭收支软件-----------------------)        fmt.Println(                      1.收支明细                      2.登记收入                      3.登记支出                      4.退出软件)        print(请选择(1-4):)        fmt.Scanln(&f.key)        switch f.key {        case 1:            f.ShowDetails()        2:            f.Income()        3:            f.Outcome()        4:            f.logout()        default:            fmt.Println(请输入正确的选项)        }        if f.loop {            break        }    }}func (f *familyAccount) ShowDetails() {     f.flag {        fmt.Println(----------------------当前收支明细-----------------------)        fmt.Println(f.details)    } else当前没有收支明细,来一笔吧)    }}func (f *familyAccount) Income() {    fmt.Println(本次收入金额:)    fmt.Scanln(&f.money)    f.balance += f.money    fmt.Println(本次收入说明:f.note)    f.details += fmt.Sprintf(\n  收入 \t%v\t\t  %v\t\t%vtrue}func (f *familyAccount) Outcome() {    fmt.Println(本次支出金额:f.money)    if f.money > f.balance {        fmt.Println(余额不足!!!)        break    }  {        f.balance -= f.money        fmt.Println(f.note)        f.details += fmt.Sprintf(\n  支出 \t%v\t\t  %v\t\t%v    }}func (f *familyAccount) logout() {    fmt.Println(你确定要退出吗?y/n)    choice := ""     {        fmt.Scanln(&choice)        if choice == y" || choice == n {                    }        fmt.Println(您的输入有误!!请重新输入!)    }     {        f.loop =     }}

对上一节面向过程的收支软件的改进。

首先要将一些相干的变量存储到结构体中,然后用一个工厂方法进行初始化,最后将相应的功能封装成方法;

总结

以上是内存溢出为你收集整理的golang实战--家庭收支记账软件(面向对象)全部内容,希望文章能够帮你解决golang实战--家庭收支记账软件(面向对象)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1262160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存