界面显示
实现思路
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
对象,并提供了主菜单供用户选择不同的功能。根据用户输入的选择,调用相应的方法进行操作。具体来说:
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("添加记录成功")}funcmain(){//输入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("请输入正确的选项......")}}}
本文转载自: https://blog.csdn.net/qq_20185737/article/details/133321461
版权归原作者 I'm Jie 所有, 如有侵权,请联系我们删除。
版权归原作者 I'm Jie 所有, 如有侵权,请联系我们删除。