GoLang 百行代码实现小项目《家庭收支软件》

这篇具有很好参考价值的文章主要介绍了GoLang 百行代码实现小项目《家庭收支软件》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

界面显示

GoLang 百行代码实现小项目《家庭收支软件》,Go,golang,开发语言,后端

实现思路

GoLang 百行代码实现的小项目《家庭收支软件》是一个简单的家庭收支记账软件,可以通过命令行界面记录和显示收支明细。

在代码中,定义了两个结构体类型:record(代表一条收支记录)和software(代表记账软件):

  • record 结构体包含了记录的名称、金额、累计总额和描述字段:

    type record struct {
    	name  string
    	money float64
    	total float64
    	desc  string
    }
    
  • software 结构体包含了记录列表:

    type software struct {
    	records []record
    	total   float64
    }
    

主函数 main() 实例化了一个 software 对象,并提供了主菜单供用户选择不同的功能。根据用户输入的选择,调用相应的方法进行操作。具体来说:文章来源地址https://www.toymoban.com/news/detail-723986.html

  • printRecords() 方法打印所有的收支明细记录。
  • inCome() 方法登记收入,用户输入收入金额和描述,并将记录添加到列表中。
  • outCome() 方法登记支出,用户输入支出金额和描述,并将记录添加到列表中。

源码

package main

import (
	"fmt"
)

// 记录结构体
type record struct {
	name  string
	money float64
	total float64
	desc  string
}

type software struct {
	records []record
	total   float64
}

func (s *software) printRecords() {
	fmt.Println("-------------------当前收支明细记录-----------------")
	fmt.Println("       余额        收入/支出      金额       描述")
	for _, r := range s.records {
		m := fmt.Sprintf("%.2f", r.money)
		t := fmt.Sprintf("%.2f", r.total)
		fmt.Println("       " + t + "       " + r.name + "      " + m + "       " + r.desc)
	}
}

func (s *software) inCome() {
	r := record{name: "收入"}

	fmt.Println("登记收入:")
	fmt.Scanln(&r.money)

	s.total += r.money
	r.total = s.total

	fmt.Println("描述:")
	fmt.Scanln(&r.desc)

	s.records = append(s.records, r)
	fmt.Println("添加记录成功")
}

func (s *software) outCome() {
	r := record{name: "支出"}

	fmt.Println("登记支出:")
	fmt.Scanln(&r.money)
	s.total -= r.money
	r.total = s.total

	fmt.Println("描述:")
	fmt.Scanln(&r.desc)

	s.records = append(s.records, r)
	fmt.Println("添加记录成功")
}

func main() {

	//输入key
	key := ""

	//初始化 software 及记录切片
	soft := software{}
	soft.records = make([]record, 0)

	//主菜单
a:
	for {
		fmt.Println("-------------------家庭收支记账软件-----------------")
		fmt.Println("                    1 收支明细")
		fmt.Println("                    2 登记收入")
		fmt.Println("                    3 登记支出")
		fmt.Println("                    4 退出软件")
		fmt.Println("请选择(1-4):")

		_, err := fmt.Scanln(&key)
		if err != nil {
			fmt.Println(err)
		}

		switch key {
		case "1":
			soft.printRecords()
		case "2":
			soft.inCome()
		case "3":
			soft.outCome()
		case "4":
			fmt.Println("退出软件")
			//跳出a标签
			break a
		default:
			fmt.Println("请输入正确的选项......")
		}

	}

}

到了这里,关于GoLang 百行代码实现小项目《家庭收支软件》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang gRPC:根据.protobuf文件生成go代码

    安装 protoc 编译器。如果没有安装,可以参考官方文档进行安装。 使用 protoc 命令生成 gRPC 代码: 此命令将生成 .pb.go 和 _grpc.pb.go 文件,其中包含 protobuf 和 gRPC 的代码实现. –go_out选项会生成纯粹的Protocol Buffer消息代码,这包括Go语言的消息结构体和一些辅助方法。如果你只

    2024年02月14日
    浏览(44)
  • Golang 打包go项目部署到linux服务器

    我们可以在终端中输入以下代码: 然后就会生成main-linux的二进制可执行文件,然后我们就可以将main-linux放到服务器中的任一目录中,然后我们就可以执行以下命令运行。 这是我们在网上可以搜索到的方法,但是我相信很多人通过这个方法尝试后发现,它并不能运行。我相信

    2024年02月16日
    浏览(67)
  • golang利用go mod巧妙替换使用本地项目的包

      拉了两个项目下来,其中一个项目依赖另一个项目,因为改动了被依赖的项目,想重新导入测试一下。   go.mod文件的require中想要被代替的包名在replace中进行一个替换,注意:用来替换的需要用绝对路径,一开始我用~/Documents/xboot/xboot/tools/reflect没有效果。   这样原

    2024年02月15日
    浏览(56)
  • 学习如何在VS Code中创建一个Golang/Go项目,并运行一个简单的Golang程序

     学习如何在VS Code中创建一个Golang项目,并运行一个简单的Golang程序。 在VS Code 手动输入命令创建一个Golang项目 在VS Code 不输入命令创建一个Golang项目 1. 在VS Code 手动输入命令创建一个Golang项目 步骤1:在VS Code中创建一个新文件夹,用于存放Golang项目文件。 步骤2:打开VS

    2024年02月14日
    浏览(61)
  • Go新项目-Golang使用RemoteAddr()获取远程主机地址的注意事项(9)

    http.Request 下的方法RemoteAddr() 可以获取客户端的地址和端口号,最近的一个项目中用到了这个方法。 使用过程中一直都没有什么问题,但是当项目上线之后就发现不管怎么获取ip,客户端地址都是127.0.0.1 。 对于这个问题一直百思不得其解,最后搞了半天才发现是nginx 的原因。

    2024年01月20日
    浏览(59)
  • 不到百行代码,使用Whisper进行视频字幕生成。

      最近在学习视频剪辑的时候,希望找一款软件进行翻译;发现大多数是调用某云的Api进行翻译。通过查询资料,打算使用Whisper进行本地视频语音的识别,然后进行字幕文件的编辑(srt),最后通过ffmpeg添加到视频中。   Whisper 是 OpenAI 构建的通用语音识别模型。它于 2

    2024年03月19日
    浏览(47)
  • 猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释

    猜谜游戏在编程语言实践都已经和 HelloWord 程序成为必不可少的新手实践环节,毕竟,它能够让我们基本熟悉 for 循环、变量定义、打印、if else 语句等等的使用,当我们基本熟悉该语言基础之后,就要学会其优势方面的程序实践,比如 Golang 所具备的爬虫及其并发优势。我们

    2024年02月05日
    浏览(31)
  • 【Go学习】macOS+IDEA运行golang项目,报command-line-arguments,undefined

    1、写在前面的话:idea如何配置golang,自行百度 2、送福利:国内好用的ChatGpt有很多,比如:天工、文心一言、讯飞星火、通义万相等 问题1:通过idea的terminal执行go test报错 这个问题就是当前目录没有go.mod文件,直接用go命令生成一个即可(example.com/m 可以随便自定义,比如:

    2024年01月18日
    浏览(53)
  • 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期在学习 golang plan9 汇编,总算基本做到了手写汇编,并整理了很多笔记。 plan9 汇编的资料少,难学,难用。可能也有想学习汇编的人会遇到与我一样的问题。 于是把

    2024年02月06日
    浏览(52)
  • 百行Python代码开发出游戏,原来Python可以这么强大!

    安装pygame 下载对应python版本的pygame 运行以下命令 创建Pygame窗口及响应用户输入 新建一个文件夹alien_invasion,并在文件夹中新建alien_invasion.py文件,输入如下代码。 运行上述代码,我们可以得到一个灰色界面的窗口: 创建设置类 为了在写游戏的过程中能便捷地创建一些新功

    2024年04月22日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包