小项目练习

基于文本界面的家庭收支情况记录软件

面向过程编程

package main

import "fmt"

func main() {
	var sendMessage string = ""
	// 余额
	balance := 0.0

	// 每次收支的金额
	money := 0.0

	// 收支说明
	explain := ""

	// 表头
	details := "收支\t\t账户余额\t\t收支金额\t\t说    明\n"

	for {
		fmt.Println("家庭收支记账软件")
		fmt.Println("1.收支明细")
		fmt.Println("2.登记收入")
		fmt.Println("3.登记支出")
		fmt.Println("4.退   出")
		fmt.Print("请选择(1-4):")
		fmt.Scanln(&sendMessage)

		switch sendMessage {
		case "1":
			fmt.Println("收支明细")
			fmt.Printf(details)
		case "2":
			fmt.Println("本次收入金额:")
			fmt.Scanln(&money)
			fmt.Println("本次收入说明:")
			fmt.Scanln(&explain)

			// 修改账户余额
			balance += money
			// 将这笔收入情况,拼接到details字符串中
			details += fmt.Sprintf("收入\t\t%v\t\t\t%v\t\t\t\t%v\n", balance, money, explain)
		case "3":
			fmt.Println("本次支出金额:")
			fmt.Scanln(&money)
			fmt.Println("本次支出说明:")
			fmt.Scanln(&explain)

			// 修改账户余额
			balance -= money
			// 将这笔收入情况,拼接到details字符串中
			details += fmt.Sprintf("支出\t\t%v\t\t\t%v\t\t\t\t%v\n", balance, money * -1, explain)
		case "4":
			fmt.Println("退出程序")
			return
		default:
			fmt.Println("参数错误")
		}
	}
}


面向对象编程

package main

import "fmt"

type FamilyAccount struct {
	// 余额
	balance float64
	// 收支金额
	money float64
	// 字段说明
	explain string
	// 表头
	details string
}
// 基于工厂模式,创建一个构造方法,返回一个*FamilyAccount 实例,以便于将来可以在别的包中访问
func (family *FamilyAccount) NewFamilyAccount() *FamilyAccount {
	return  &FamilyAccount{
		balance: 0.0,
		money:   0.0,
		explain: "",
		details: "收支\t\t账户余额\t\t收支金额\t\t说    明\n",
	}
}


func (family *FamilyAccount) record()  {
	fmt.Println(family.details)
}


func (family *FamilyAccount) incomeRecord(sendMessage string) {
	//money := 0.0
	//explain := ""
	fmt.Println("本次收入金额:")
	fmt.Scanln(&family.money)
	fmt.Println("本次收入说明:")
	fmt.Scanln(&family.explain)
	family.balance += family.money

	family.details += fmt.Sprintf("收入\t\t%v\t\t\t%v\t\t\t\t%v\n", family.balance, family.money, family.explain)
}

func (family *FamilyAccount) expendRecord(sendMessage string) {
	//money := 0.0
	//explain := ""
	fmt.Println("本次支出金额:")
	fmt.Scanln(&family.money)
	fmt.Println("本次支出说明:")
	fmt.Scanln(&family.explain)
	family.balance -= family.money

	family.details += fmt.Sprintf("支出\t\t%v\t\t\t%v\t\t\t\t%v\n", family.balance, family.money, family.explain)
}

func main() {
	family := FamilyAccount{
		balance: 0.0,
		money:   0.0,
		explain: "",
		details: "收支\t\t账户余额\t\t收支金额\t\t说    明\n",
	}

	sendMessage := ""
	for {
		fmt.Println("家庭收支记账软件")
		fmt.Println("1.收支明细")
		fmt.Println("2.登记收入")
		fmt.Println("3.登记支出")
		fmt.Println("4.退   出")
		fmt.Print("请选择(1-4):")
		fmt.Scanln(&sendMessage)
		switch sendMessage {
		case "1":
			family.record()
		case "2":
			// 收入记录调用的函数
			family.incomeRecord(sendMessage)
		case "3":
			family.expendRecord(sendMessage)
		case "4":
			fmt.Println("退出程序")
			return
		default:
			fmt.Println("参数错误")

		}
	}
}

基于文本界面的客户关系管理系统

posted @ 2021-09-26 11:29  河图s  阅读(29)  评论(0)    收藏  举报