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 ...
随机推荐
- 全网最详细的Linux命令系列-sed文本处理命令
Sed简介 SED是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑,标准输入可以来自键盘输入.文本重定向.字符串.变量,甚至来自于管道的文本,与VIM编辑器类似,它一次处理一行内容,Sed可 ...
- flink编译支持CDH6.2.0(hadoop3.0.0)
准备工作 因为在编译时需要下载许多依赖包,在执行编译前最好先配置下代理仓库 <mirrors> <mirror> <id>nexus-aliyun</id&g ...
- MongoDB数据库备份和恢复
1.数据库备份 mogodbdump -h dbhost -d dbname -o dbdirectory -h: 服务器地址,也可以指定端口号 -d: 需要备份的数据库的名称 -o: 备份的数据库存 ...
- idea怎么关闭项目
原文地址:https://jingyan.baidu.com/article/a3a3f8112169e78da2eb8a8d.html idea关闭项目可以按File-CloseProject按钮实 ...
- 团队第一次作业(By七个小矮人)
一.团队简介 1.团队名称:七个小矮人 2.团队成员列表 201731024137 马驰(队长) 201731021227 于丁 201731024114 杨汶桐 201731024125 李朋珂 2 ...
- Lobooi 结对作业(24235+24229)
结队作业 GitHub项目地址 https://github.com/Lobooi/PairProgramming.git 伙伴博客地址 https://www.cnblogs.com/lanti/p ...
- 从头开始,如何配置一部纯净好用的Windows
emmm,原因是酱紫的, 鉴于许许多多的人问过我怎么重装系统,装出来的系统干净没有广告什么的, 还有问为什么我的电脑这么卡,是不是要重装系统or更换设备的, 啊,更换设备的土豪请随意
- mysql--->MySQL错误日志
MySQL错误日志 简介 MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息.错误日志的命名通常为hostname.err.其中,hostn ...
- Vmware14 开机黑屏或者以独占方式锁定此配置文件失败等问题解决办法
把VMware14版本卸载掉,然后重装一个12版本的 打开之前创建的虚拟机,提示版本不兼容, 打开配置文件: 修改版本为重装的版本,比如12 然后编辑虚拟机设置指定一个系统,比如centos,即可 就 ...
- Leetcode | 刷题日记(1)
本文记录个人刷题记录 推荐两个刷题网站: 地址:https://leetcode.com/ 另外一个地址:http://www.lintcode.com/ 1.Write a SQL query to ...