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 "":
if flag {
fmt.Println("----------------------当前收支明细-----------------------")
fmt.Println(details)
} else {
fmt.Println("当前没有收支明细,来一笔吧")
}
case "":
fmt.Println("本次收入金额:")
fmt.Scanln(&money)
balance += money
fmt.Println("本次收入说明:")
fmt.Scanln(&note)
details += fmt.Sprintf("\n 收入 \t%v\t\t %v\t\t%v", balance, money, note)
flag = true
case "":
fmt.Println("本次支出金额:")
fmt.Scanln(&money)
if money > balance {
fmt.Println("余额不足!!!")
break
}
balance -= money
fmt.Println("本次收入说明:")
fmt.Scanln(&note)
details += fmt.Sprintf("\n 支出 \t%v\t\t %v\t\t%v", balance, money, note)
flag = true
case "":
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,则返回;

golang实战--家庭收支记账软件(面向过程)的更多相关文章

  1. golang实战--家庭收支记账软件(面向对象)

    首先是具体的目录结构: 其中myAccount.go中调用utils包中的函数:utils.go实现记账软件的一些相应的功能: myAccount.go package main import ( & ...

  2. Java项目之家庭收支记账软件

    模拟实现基于文本界面的家庭记账软件,该软件能够记录家庭的收入支出,并能够打印收支明细表. 项目采用分级菜单方式.主菜单如下: 假设家庭起始的生活基本金为10000元. 每次登记收入(菜单2)后,收入的 ...

  3. go-家庭收支记账软件例子

    家庭收支记账软件项目 项目需求说明 1) 模拟实现基于文本界面的<家庭记账软件> 2) 该软件能够记录家庭的收入.支出,并能够打印收支明细表 项目的界面 看代码效果 项目代码实现 实现基本 ...

  4. 61 C项目------家庭收支软件

    1,目标: ①模拟实现一个基于文本界面的<家庭收支软件> ②涉及知识点 局部变量和基本数据类型 循环语句 分支语句 简单的屏幕输出格式控制 2,需求说明: ①模拟实现基于文本界面的< ...

  5. android软件简约记账app开发day09-主页面模块,收支记账信息的展示

    android软件简约记账app开发day09-主页面模块,收支记账信息的展示 我们第一天已经绘制了记账条目的界面,也在主界面设置了LietView来展示记账条目,今天来实现记账后再主界面的展示效果 ...

  6. 如何从普通程序员晋升为架构师 面向过程编程OP和面向编程OO

    引言 计算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训练就可以做 ...

  7. 从记账软件看工具类APP的存量运营之道

    随着移动互联网的发展,APP的种类越来越多,一些工具类 APP 增长乏力,难以实现长期增长.只有提高用户留存时间,实现流量变现,才能在激烈的市场竞争中持续发展. 工具类APP的特点: 替代性很强: 用 ...

  8. 大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)

    一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认 ...

  9. “面向对象"和"面向过程"到底有什么区别?

    链接:http://www.zhihu.com/question/27468564/answer/101951302 当软件还非常简单的时候,我们只需要面向过程编程: 定义函数函数一函数二函数三函数四 ...

随机推荐

  1. 手动创建分区以及软硬raid的问题

    本文章旨在介绍安装centos7时手动分区问题,及其所对应的软硬raid问题.在新建centos7系统时,需要手动分区时,提供给我们三个选项: 在上图中,默认选项为“Standard Partitio ...

  2. 21个Java Collections面试问答

    Java Collections框架是Java编程语言的核心API之一. 这是Java面试问题的重要主题之一.在这里,我列出了一些重要的Java集合面试问题和解答,以帮助您进行面试.这直接来自我14年 ...

  3. attention 汇总(持续)

    Seq2seq Attention Normal Attention 1.  在decoder端,encoder state要进行一个线性变换,得到r1,可以用全连接,可以用conv,取决于自己,这里 ...

  4. 一些常见的http状态码

    HTTP状态码是服务器和客户端之间交流信息的语言,下面列出一些常见的HTTP状态码. 1XX系列 指定客户端应相应的某些动作,代表请求已被接受,需要继续处理.由于在HTTP/1.0协议中没有定义任何1 ...

  5. vscode 通过ftp发布vue到azure服务器

    参考资料:vs code配置ftp连接远程服务器实现代码文自动上传 1.在vscode应用商店中搜索拓展sftp插件,然后进行安装.2.安装完成后重启窗口,按快捷键Ctrl+shift+p,输入sft ...

  6. Python入门36道经典练习题

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? num_list=[] cou=0 for i in range(1,5): for j in rang ...

  7. 脚本自动统计安卓log中Anr、Crash等出现的数量(Python)

    作为测试,在测试工作中一定会经常抓log,有时log收集时间很长,导致log很大,可能达到几G,想找到能打开如此大的log文件的工具都会变得困难:即使log不大时,我们可以直接把log发给开发同学去分 ...

  8. H5常用新特性

    html5新特性 [注意]这些新特性都有兼容性的问题,基本是IE9+以上版本的浏览器才支持,如果不考兼容性问题,可以大量使用这些新特性 html5新增的语义话标签 <header> :头部 ...

  9. WebLogic任意文件上传漏洞复现与分析 -【CVE-2018-2894 】

    CVE-2018-2894 漏洞影响版本:10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3 下载地址:http://download.oracle.com/otn/nt/m ...

  10. 0基础入门学习Python(第4章)

    第四章,了不起的分支和循环 4.1 分支和循环 Python主要依靠缩进来区分代码块 4.2 快速上手 成绩按照分数来划分等级,90分以上为A,80~90 为B,60~80 为C,60以下为D p4_ ...