当前位置: 首页 > news >正文

厦门市同安区建设局公开网站seo网站推广公司

厦门市同安区建设局公开网站,seo网站推广公司,郑州公共住宅建设投资有限公司网站,商城网站开发项目文档家庭收支记账软件实现基本功能(先使用面向过程,后面改成面向对象)项目代码实现改进面向过程源码面向对象源码utils包中main包中实现基本功能(先使用面向过程,后面改成面向对象) 编写文件TestMyAccount.go完成基本功能 功能一:先完成可以显示…

家庭收支记账软件

    • 实现基本功能(先使用面向过程,后面改成面向对象)
      • 项目代码实现改进
    • 面向过程源码
    • 面向对象源码
      • utils包中
      • main包中

实现基本功能(先使用面向过程,后面改成面向对象)

编写文件TestMyAccount.go完成基本功能

  • 功能一:先完成可以显示主菜单,并且可以退出
  • 功能二:完成可以显示明细和登记收入的功能
  • 功能三:完成登记支出的功能

项目代码实现改进

1,用户输入4退出时,给出提示“你确定要退出吗y/n”,必须输入正确的y/n,否则循环输入指令,知道输入y或者n

2,当没有任何收支明细时,提示"当前没有收支明细…"

3,在支出时,判断余额是否够,并给出相应的提示

4,将面向过程的代码修改成面向对象的方法,编写myFamilyAccount.go,并使用testMyFanillyAccount.go去完成测试

面向过程源码

package main
import ("fmt"
)func main() {//声明一个变量,保存接受用户输入的选项key := ""//声明一个变量,控制是否退出for循环loop := true//定义账户的金额balance := 10000.0//每次收支的金额money := 0.0//每次收支的说明note := ""//定义一个变量,记录是否有收支行为flag := false//收支的详情使用字符串来记录//当有收支的时候,只需要对details进行拼接处理details := "收支\t账户余额\t收支金额\t说   明"//循环显示菜单for{fmt.Println("\n--------------------家庭收支记账软件------------------")fmt.Println("                      1 收支明细")fmt.Println("                      2 登记收入")fmt.Println("                      3 登记支出")fmt.Println("                      4 退出软件")fmt.Println("                      请选择(1-4):")fmt.Scanln(&key) switch key {case "1":fmt.Println("-----------------当前收支明细记录----------------")if flag {fmt.Println(details)} else {fmt.Println("你的卡里没钱钱,存一笔吧")}case "2":fmt.Println("本次收入的金额:")fmt.Scanln(&money)balance += money //修改账户余额fmt.Println("本次收入说明:")fmt.Scanln(&note)//将这个收入的情况,拼接到details//收入    11000      10000       血汗钱details += fmt.Sprintf("\n收入\t%v\t%v\t%v", balance, money, note)flag = truecase "3":fmt.Println("本次支出的金额:")fmt.Scanln(&money)//这里做一个必要的判断if money > balance {fmt.Println("余额不足")break}balance -= moneyfmt.Println("本次支出的说明:")fmt.Scanln(&note)details += fmt.Sprintf("\n支出\t%v\t%v\t%v", balance, money, note)flag = truecase "4":fmt.Println("你确定要退出吗? y/n")choice := ""for {fmt.Scanln(&choice)if choice == "y" || choice == "n" {break}fmt.Println("你的输入有误,请重新输入 y/n")}if choice == "y" {loop = false}default :fmt.Println("请输入正确的选项")}if !loop {break}}fmt.Println("你退出了家庭记账软件的使用")}

面向对象源码

思路:

把记账软件的功能,封装到一个结构体中,然后调用该结构体的方法,来实现记账,显示明细

再通过在main方法中,创建一个结构体FamilyAccount实例,实现记账即可

utils包中

package utils
import ("fmt"
)type FamilyAccount struct {//声明必须的字段//声明一个字段,保存接受用户输入的选项key string//声明一个字段,控制是否退出for循环loop bool//定义账户的金额balance float64//每次收支的金额money float64//每次收支的说明note string//定义一个变量,记录是否有收支行为flag bool//收支的详情使用字符串来记录//当有收支的时候,只需要对details进行拼接处理details string
}//编写一个工厂模式的构造方法,返回一个*FanilyAccount实例
func NewFamilyAccount() *FamilyAccount {return &FamilyAccount{key :"",loop : true,balance : 10000.0,money: 0.0,note : "",flag :false,details : "收支\t账户余额\t收支金额\t说   明"}
}//将显示明细写成一个方法
func (this *FamilyAccount) showDetails() {fmt.Println("-----------------当前收支明细记录----------------")if this.flag {fmt.Println(this.details)} else {fmt.Println("你的卡里没钱钱,存一笔吧")}
}//将登记收入写成一个方法
func (this *FamilyAccount) income() {fmt.Println("本次收入的金额:")fmt.Scanln(&this.money)this.balance += this.money //修改账户余额fmt.Println("本次收入说明:")fmt.Scanln(&this.note)//将这个收入的情况,拼接到details//收入    11000      10000       血汗钱this.details += fmt.Sprintf("\n收入\t%v\t%v\t%v", this.balance, this.money, this.note)flag = true
}//将支出写成一个方法
func (this *FamilyAccount) pay() {fmt.Println("本次支出的金额:")fmt.Scanln(&this.money)//这里做一个必要的判断if this.money > this.balance {fmt.Println("余额不足")//break}this.balance -= this.moneyfmt.Println("本次支出的说明:")fmt.Scanln(&this.note)this.details += fmt.Sprintf("\n支出\t%v\t%v\t%v", this.balance, this.money, this.note)this.flag = true
}//将退出写成一个方法
func (this *FamilyAccount) exit() {fmt.Println("你确定要退出吗? y/n")choice := ""for {fmt.Scanln(&choice)if choice == "y" || choice == "n" {break}fmt.Println("你的输入有误,请重新输入 y/n")}if choice == "y" {this.loop = false}}//给该结构体绑定相应的方法
//显示主菜单
func (this *FamilyAccount) MainMenu() {for{fmt.Println("\n--------------------家庭收支记账软件------------------")fmt.Println("                      1 收支明细")fmt.Println("                      2 登记收入")fmt.Println("                      3 登记支出")fmt.Println("                      4 退出软件")fmt.Println("                      请选择(1-4):")fmt.Scanln(&this.key) switch this.key {case "1":this.showDetails()case "2":this.income()case "3":this.pay()case "4":this.exit()default :fmt.Println("请输入正确的选项")}if !this.loop {break}fmt.Println("你退出了家庭记账软件的使用")}
}

main包中

package main
import ("go_code/Familycount/main"
)func main(){utils.NewFamilyAccount().MainMenu()
}
http://www.ds6.com.cn/news/88880.html

相关文章:

  • 做网站要先做商标吗宁波建站模板系统
  • 撮合交易网站建设方案推蛙网络
  • 门户网站建设要点推广注册app拿佣金
  • wordpress页头关键词优化软件排行
  • table做的电脑端网站改成手机板中国重大新闻
  • 可靠的东莞网站推广百度推广如何计费
  • 做网站客服去哪应聘下载百度到桌面
  • 麻涌仿做网站互联网广告推广是做什么的
  • h5开发是什么意思百度seo关键词优化排行
  • 苏州建站长春网站建设公司哪个好
  • 百度网页制作网站建设百度官网认证免费
  • 网站开发好了如何上线关键词优化需要从哪些方面开展
  • 地名网站建设方案怎么找到当地的微信推广
  • 网站建设与网页设计制作点击器
  • 合肥公共资源交易中心seo全站优化全案例
  • 做婚纱的网站广州十大营销策划公司
  • 毕节市住房和城乡建设局网站新人跑业务怎么找客户
  • 聚通达网站建设整站优化和关键词优化的区别
  • 网站建设中山百度网址提交入口平台
  • 科技局网站建设方案青岛百度代理公司
  • 用dw做的个人网站seo详细教程
  • 做好网站内能另外做链接吗友情链接交易平台
  • axure可以做网站吗免费视频外链生成推荐
  • 大型b2c网站备案查询
  • 手表网站建设成都网络营销推广
  • 棋牌类网站怎么做爱网站
  • 网站移动端是什么问题站牛网是做什么的
  • 做的网站怎么上传图片护肤品推广软文
  • 品牌网站建设特色大蝌蚪网站友情链接购买
  • wordpress宽屏宁波seo搜索排名优化