这篇文章主要说明:
一、对项目完成一个转账功能。
二、在使用改软件前,有一个登录功能,只有输入正确的用户名和密码才能操作。
(1)完成转账功能代码如下:
familyAccount.go
将转账写成一个方法:
//将转账写成一个方法
func (this *FamilyAccount) Transfer() {
fmt.Println("---------------转账功能--------------------")
fmt.Println("本次转账金额:")
//用户输入转账金额
fmt.Scanln(&this.money)
//根据用户余额对转账的金额做出判断
if this.money > this.balance {
fmt.Println("你的余额不足,不足以完成转账...")
}
//转账后用户的余额发生变化
this.balance -= this.money
fmt.Println("本次转账说明:")
fmt.Scanln(&this.note)
//将转账情况拼接到details变量
this.details += fmt.Sprintf("\n转账\t%v\t%v\t%v", this.balance, this.money, this.note)
this.flag = true
}
主菜单MainMenu()
func (this *FamilyAccount) MainMenu() {
for {
//显示主菜单
fmt.Println("\n-------------家庭收支记账软件-------------")
fmt.Println(" 1 收支明细")
fmt.Println(" 2 登记收入")
fmt.Println(" 3 登记支出")
fmt.Println(" 4 选择转账")
fmt.Println(" 5 退出软件")
fmt.Println("请选择(1-5):")
//接收用户输入(1-5)
fmt.Scanln(&this.key)
//对用户输入进行判断
switch this.key {
case "1":
//调用
this.showDetails()
case "2":
this.income()
case "3":
this.pay()
case "4":
this.Transfer()
case "5":
this.exit()
default:
fmt.Println("请输入" +
"正确的选项")
}
//退出for循环
if !this.loop {
break
}
}
(2)实现登录功能代码如下:
在结构体FamilyAccount中新增加字段
//密码
pwd string
//账号
account string
返回*FamilyAccount实例:
func NewFamilyAccount() *FamilyAccount {
return &FamilyAccount{
key: "",
loop: true,
balance: 10000.0,
money: 0.0,
note: "",
flag: false,
details: "详情\t账户金额\t收支金额\t说明",
pwd: "88888888",
account: "中国工商银行",
}
}
将密码写成一个方法Showcode
func (this *FamilyAccount) Showcode(accountnumber string, code string) {
for {
fmt.Println("请输入你的系统账号..")
fmt.Scanln(&accountnumber)
fmt.Println("请输入你的系统密码..")
fmt.Scanln(&code)
//逻辑判断
if code != this.pwd || accountnumber != this.account {
fmt.Println("你输入的账号或者密码不正确,请重新输入..")
//递归调用
this.Showcode("", "")
} else {
fmt.Println("恭喜你!正在进入系统...")
//如果成功进入,调用主菜单
this.MainMenu()
}
}
}
在main.go直接调用Showcode
func main() {
fmt.Println("这个是面向对象的方式完成..\n")
//调用登录页面Showcode
utils.NewFamilyAccount().Showcode("","")
}
(3)项目测试页面如下:
欢迎大家指正补充,感谢阅读。