golang-练习ATM
package main import "fmt" var (
action int
loop bool = true
save_money int
money int
draw_money int
) func find() {
fmt.Printf("余额为:%d \n",money)
}
func save() {
fmt.Println("请输入存款金额:")
//fmt.Scanf("%d\n",&save_money) //使用scanf必须加\n不然会打印两次
fmt.Scanln(&save_money)
fmt.Println(save_money)
money += save_money
fmt.Printf("存款金额%d,存款成功\n",save_money)
}
func draw() {
fmt.Println("请输入具体取款金额:")
fmt.Scanln(&draw_money)
if draw_money <= money{
money -= draw_money
fmt.Printf("成功取款,余额为:%d\n",money)
}else {
fmt.Println("余额不足")
}
}
func manager() {
fmt.Println("-----欢迎登陆中国银行-----")
fmt.Println("\t1:查询余额")
fmt.Println("\t2:存款")
fmt.Println("\t3:取款")
fmt.Println("\t4:退出")
fmt.Println("请输入你的操作:")
fmt.Scanln(&action)
switch action {
case 1:
find()
case 2:
save()
case 3:
draw()
case 4:
loop = false
default:
fmt.Println("输入有误,请输入1-4之间的数字")
}
} func main() {
for {
manager()
if loop == false{
fmt.Println("----欢迎使用,再见----")
break
}
}
}
package main import (
"fmt"
"strings"
) var (
action int
loop bool = true
save_money int
money int
draw_money int
) func find() {
fmt.Printf("余额为:%d \n",money)
}
func save() {
fmt.Println("请输入存款金额:")
//fmt.Scanf("%d\n",&save_money) //使用scanf必须加\n不然会打印两次
fmt.Scanln(&save_money)
fmt.Println(save_money)
money += save_money
fmt.Printf("存款金额%d,存款成功\n",save_money)
}
func draw() {
fmt.Println("请输入具体取款金额:")
fmt.Scanln(&draw_money)
if draw_money <= money{
money -= draw_money
fmt.Printf("成功取款,余额为:%d\n",money)
}else {
fmt.Println("余额不足")
}
}
func add_goods(g *map[string]int) {
for{
var(
name string
price int
)
fmt.Println("输入新增的商品名称,按Q退出:")
fmt.Scanln(&name)
if strings.ToUpper(name)=="Q"{
break
}
fmt.Println("输入该商品价格:")
fmt.Scanln(&price)
(*g)[name]= price
}
} func shop_car(gn string,gl *[]string) {
for{
fmt.Println("输入要购买的商品(Q退出):")
fmt.Scanln(&gn)
if gn =="Q" {
break
}
*gl = append(*gl,gn)
} }
func shoping() {
shop_goods := make(map[string]int)
goods_list := make([]string,0)
var goodName string
var shopmany int
if len(shop_goods)==0 {
add_goods(&shop_goods)
}
fmt.Println(shop_goods)
shop_car(goodName ,&goods_list)
for i:=0 ; i<len(goods_list);i++{
v,_ :=shop_goods[goods_list[i]]
shopmany += v
}
if money < shopmany{
fmt.Println("购物失败,余额不足,请及时充值")
}else{
money -= shopmany
}
}
func manager() {
fmt.Println("-----欢迎登陆中国银行-----")
fmt.Println("\t1:查询余额")
fmt.Println("\t2:存款")
fmt.Println("\t3:取款")
fmt.Println("\t4:购物")
fmt.Println("\t5:退出")
fmt.Println("请输入你的操作:")
fmt.Scanln(&action)
switch action {
case 1:
find()
case 2:
save()
case 3:
draw()
case 4:
shoping()
case 5:
loop = false
default:
fmt.Println("输入有误,请输入1-4之间的数字")
}
} func main() {
for {
manager()
if loop == false{
fmt.Println("----欢迎使用,再见----")
break
}
}
}
golang-练习ATM的更多相关文章
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- 说说Golang的使用心得
13年上半年接触了Golang,对Golang十分喜爱.现在是2015年,离春节还有几天,从开始学习到现在的一年半时间里,前前后后也用Golang写了些代码,其中包括业余时间的,也有产品项目中的.一直 ...
- TODO:Golang指针使用注意事项
TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...
- Golang 编写的图片压缩程序,质量、尺寸压缩,批量、单张压缩
目录: 前序 效果图 简介 全部代码 前序: 接触 golang 不久,一直是边学边做,边总结,深深感到这门语言的魅力,等下要跟大家分享是最近项目 服务端 用到的图片压缩程序,我单独分离了出来,做成了 ...
- golang struct扩展函数参数命名警告
今天在使用VSCode编写golang代码时,定义一个struct,扩展几个方法,如下: package storage import ( "fmt" "github.c ...
- golang语言构造函数
1.构造函数定义 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.特别的一个类可以有多个构造函数 ,可根据其参数个 ...
- TODO:Golang语言TCP/UDP协议重用地址端口
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...
- golang的安装
整理了一下,网上关于golang的安装有三种方式(注明一下,我的环境为CentOS-6.x, 64bit) 方式一:yum安装(最简单) rpm -Uvh http://dl.fedoraprojec ...
- 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
随机推荐
- Java 遍历集合时产生的ConcurrentModificationException异常
前几天做Java实验的时候,打算用foreach遍历一个ArrayList集合,并且当集合中的某个元素符合某个值时删除这个元素.写完运行时抛出了ConcurrentModificationExcept ...
- max count混合使用
SELECT MAX(a1.人数) FROM (SELECT COUNT(category_id) AS "人数",category_id FROM course_category ...
- CDH安装详细测试正确
1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...
- eclipse反编译插件 jadclipse jad
eclipse常用反编译插件jadclipse.jad 1.下载jadclipse:net.sf.jadclipse_3.3.0.jar,放到eclipse-plugins 2.下载jad.exe,放 ...
- 本地Git绑定Gitee仓库
前言 Window的小伙伴如果还没在本地配好Git环境可以参考:https://www.cnblogs.com/poloyy/p/12185132.html 创建Gitee仓库 Gitee绑定本地Gi ...
- flask模板 flask-bootstrap
1.模板 a.block块中继承前面block块的内容,需要添加{{super()}} b.macro 宏: 作用:在模板中定义函数(定义函数->注意添加()->可以使用from 模板 ...
- python 打印乘法表
for i in range(1, 10): for j in range(1, i+1): print('%s * %s = %s' % (i, j, i*j), end=' ') print('' ...
- rhel
1.查看硬盘大小 df -h 2.查看内存大小 free -h 3.配置主键名称 vim /etc/hostname# 查看 hostnamehostname 4.挂载镜像 mkdir -p /med ...
- Java入门 - 高级教程 - 06.邮件收发
原文地址:http://www.work100.net/training/java-email.html 更多教程:光束云 - 免费课程 邮件收发 序号 文内章节 视频 1 概述 2 发送一封简单的邮 ...
- JSON解析值富文本
解析前端传递的JSON数据中可能如下 { "result": "<input value="Test" type="button&qu ...