package main
import “fmt”
/*
項目1,家庭收支記賬軟件項目
/*
類型斷言的最佳實踐3[學院自己完成]
在前面代碼的基礎上,增加判斷student類型和*student類型
項目開發流程説明
項目需求説明
項目的界面
項目代碼實現
實現基本功能(先使用面嚮過程,後面改成面嚮對象)
編寫文件testmyaccount.go完成基本功能
功能1先完成可以顯示主菜單,并且可以退出
功能2完成可以顯示明細的功能
功能3完成了等級收入的功能
完成了等級指出的功能
項目代碼實現改進
1)用戶輸入4退出時,給出提示“你確定要退出嗎?y/n,必須輸入正確的y/n,否則循環輸入指令,知道輸入y或者n。
2)儅沒有任何收支明細時,提示”當前沒有收支明細…來一筆吧!"
3)在支出時,判斷餘額是否夠,並給出相應的提示。
4)將民巷過程的代碼修改成面向對象的方法,編寫myfamilyaccount.go并使用testmyfamilyaccount.go去完成測試。
/
//模拟实现基于文本界面的《家庭记账软件》。
//该软件能够记录家庭的收入、指出,并能够打印收支明细表。
//项目的界面
//项目采用分级菜单方式。主菜单如下:
/————————家庭收支记账软件——————————
1收支明细
2登记收入
3登记支出
4退出
请选择(1-4):1
——————————当前收支明细记录————————
收支 帐户金额 收支金额 说明
——————————————————————————————
——————————————家庭收支记帐软件————————————————
1收支明细
2登记收入
3登记支出
4退出
请选择(1-4):2
本次收入金额1000
本次收入说明:有人发红包
————————————登记完成————————————————
————————————家庭收支记账软件————————————————
1收支明细
2登记收入
3登记支出
4退出
请选择(1-4):1
————————当前收支明细记录————————————
收支 账户金额 收支金额 说明
收入 11000 1000 有人发红包
/
//项目需求说明
/
项目需求说明
1)模拟实现基于文本界面的《家庭记账软件》
2)该软件能够记录家庭的收入、支出,并能够打印收支明细表
项目的界面
*/
//功能1先完成可以顯示主菜單,并且可以退出
//思路分析:
//更加给出的界面完成,主菜单的显示当用户输入4时,就退出该程序
//走代码
func main() {
//声明一个变量,保存接受用户输入的选项
key := “”
//声明一个变量,控制是否退出for
loop := true
//定義賬戶的餘額
balance := 10000.0
//每次收支的金額
money := 0.0
//每次收入的説明
note := “”
//定義個變量,記錄是否有收支的行爲
flag := false
//當有收支時,只需要對details進行拼接處理即可
//儅有收支時,只需要對details 進行拼接處理。
details := “收支\t賬戶金額\t收支金額\t説 明”
//收支的詳情使用字符串來記錄
//显示这个主菜单
for {
fmt.Println("\n------------家庭收支记账软件-------------")
fmt.Println(" 1收支明细")
fmt.Println(" 2登记收入")
fmt.Println(" 3登记支出")
fmt.Println(" 4退出软件")
fmt.Print(“请选择(1-4):”)
fmt.Scanln(&key)
switch key{
case “1”:
fmt.Println("-----------当前收支明细记录------------")
if flag{
fmt.Println(details)
}else{
fmt.Println(“當前沒有手指明細…來一筆吧”)
}
fmt.Println(details)
case "2":
/*
功能2完成可以顯示明細和登記收入功能
思路分析:
1)因爲需要顯示明細,我們定義一個變量details string來記錄
2)還需要定義變量來記錄餘額(balance)、每次收支的金額(money),每次收支的説明(note)
*/
fmt.Println("本次收入金額:")
fmt.Scanln(&money)
balance += money //修改賬戶金額
fmt.Println("本次收入説明:")
fmt.Scanln(¬e)
//收入 11000 1000 有人發紅包
//將這個收入情況,拼接到details變量
details += fmt.Sprintf("\n收入\t%v\t%v\t%v", balance, money, note)
flag = true
case "3":
/*
完成了等級指出的功能
思路分析:
登記指出的功能和登陸收入的功能類似,做些修改即可
走代碼
*/
fmt.Println("本次支出金額:")
fmt.Scanln(&money)
//這裏需要做一個必要的判斷
if money > balance{
fmt.Println("賬戶金額不足")
break
}
balance -= money
fmt.Println("本次指出説明:")
fmt.Scanln("¬e")
details += fmt.Sprintf("\n指出\t%v\t%v\t%v",balance,money,note)
flag = true
case "4":
/*
1)用戶輸入4退出時,給出提示"你確定要推出嗎?yin",必須輸入整的yin,否則循環輸入指令,知道輸入y或者n。
2)當沒有任何收支明細時,提示"當前沒有手指明細..來一筆吧"!
3)在之處是,判斷餘額是否夠,并給出相應的提示。
4)將面嚮過程的代碼修改成面向對象的方法,編寫myFamilyAccount.go,并使用testMyFamilyAccount.go去完成測試。
*/
fmt.Println("你確定要退出嗎?y/n")
choice :=""
for {
fmt.Scanln(&choice)
if choice =="y"|| choice =="n"{
break
}
fmt.Println("你輸入有誤,請重新輸入y/n")
}
if choice =="y"{
loop = false
}
default:
fmt.Println("请输入正确的选项..")
}
if !loop {
break
}
}
fmt.Println("你退出家庭记账软件的使用...")
}