小项目练习
基于文本界面的家庭收支情况记录软件
面向过程编程
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("参数错误")
}
}
}
基于文本界面的客户关系管理系统
python防脱发技巧

浙公网安备 33010602011771号