golang实战--家庭收支记账软件(面向过程)
时间:2022-07-23
本文章向大家介绍golang实战--家庭收支记账软件(面向过程),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.开发流程
2.目标
- 模拟实现一个基于文本界面的(家庭记账软件) ;
- 初步掌握编程技巧和调试技巧;
- 主要包含以下知识点:局部变量和基本数据类型、循环语句、分支语句、简单屏幕格式输出、面向对象编程;
- 该软件能够记录家庭的输入、支出,并能够打印家庭明细表;
- 采用分级菜单的方式:
- --------------家庭收支记账软件-----------------
- 1.收支明细
- 2.登记收入
- 3.登记支出
- 4.退出
- 请选择(1-4)
3.实现(具体细节看代码吧)
package main
import (
"fmt"
)
func main() {
//申明一个变量,保存输入的选择
key := ""
//申明一个变量判断是否退出循环
loop := false
//定义账户的余额
balance := 10000.0
//每次收支的金额
money := 0.0
//每次收支的说明
note := ""
//收支的详情,使用字符串来记录
details := " 收支t账户金额t收支金额t说 明"
//定义一个变量记录是否有收支行为
flag := false
//显示菜单
for {
fmt.Println("----------------------家庭收支软件-----------------------")
fmt.Println(" 1.收支明细")
fmt.Println(" 2.登记收入")
fmt.Println(" 3.登记支出")
fmt.Println(" 4.退出软件")
print("请选择(1-4):")
fmt.Scanln(&key)
switch key {
case "1":
if flag {
fmt.Println("----------------------当前收支明细-----------------------")
fmt.Println(details)
} else {
fmt.Println("当前没有收支明细,来一笔吧")
}
case "2":
fmt.Println("本次收入金额:")
fmt.Scanln(&money)
balance += money
fmt.Println("本次收入说明:")
fmt.Scanln(¬e)
details += fmt.Sprintf("n 收入 t%vtt %vtt%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%vtt %vtt%v", balance, money, note)
flag = true
case "4":
fmt.Println("你确定要退出吗?y/n")
choice := ""
for {
fmt.Scanln(&choice)
if choice == "y" || choice == "n" {
break
}
fmt.Println("您的输入有误!!请重新输入!")
}
if choice == "y" {
loop = true
}
default:
fmt.Println("请输入正确的选项")
}
if loop {
break
}
}
}
初始金额为10000。0,当然也可以自己定义为0.0。
启动后的界面:
如果收支明细中没有记录,选择1的话,会显示“当前没有收支明细,来一笔吧”
选择2:
选择3:(如果金额不够,会显示“当前余额不足!”)
选择1:
记录了我们的收入与支出,同时金额也在相应进行变化。
选择4:输入y或n,如果没输对,就提示输入错误;输入y,则退出;输入n,则返回;
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 小白学PyTorch | 8 实战之MNIST小试牛刀
- 干货:用好VSCode这13款插件和8个快捷键,工作效率提升10倍
- 使用dplyr包对表格整理
- 安利 5 个拍案叫绝的 Matplotlib 骚操作!
- 多媒体程序开发
- 本地 IDE 已废!编辑器大结局!GitHub 的云 VSCode 实测
- 实战 | Python 编写端口扫描器
- 我这几年踩过的十个坑,每一条都是血泪教训
- 在 Python 中如何快速创建一个只读字典?
- 现场打脸:如何使用Selenium批量上传文件?
- 一日一技:FastAPI如何关闭接口文档?
- 什么叫做类比,为什么有些 Python 入门教程结构不合理?
- 贼好用的 Java 工具类库,墙裂推荐!
- 万字长文,Thread 类源码解析!
- lintCode 31 题解