Go 语言入门三部曲:能用 Go 语言写管理系统
Posted 看,未来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 语言入门三部曲:能用 Go 语言写管理系统相关的知识,希望对你有一定的参考价值。
文章目录
草草写了个 ATM,颇有收获。数据层我就不写了,毕竟最后一个暑假了,我也想去歇歇。
目录结构
没什么需求分析,管理系统写来写去也就那些功能还能玩出花儿来么哈哈。
main.go
每个项目里总要有个 main 入口嘛。
package main
import (
run "go/run"
ui "go/ui"
)
func main()
run.Run()
ui.Hello_ui()
ui.go
所有界面都在里面了。麻雀虽小,还是跟业务层解耦了。
package ui
import (
"fmt"
run "go/run"
"os"
)
var user_id int
func Hello_ui()
var flag int
fmt.Println("\\t\\t\\t欢迎来到 ATM 系统 \\t\\t\\t")
fmt.Println("\\t\\t\\t\\t\\t1、登录 2、注册")
fmt.Scan(&flag)
choose(flag)
func choose(flag int)
if flag == 1
login()
else if flag == 2
reg()
else
fmt.Println("请重新选择")
fmt.Scan(&flag)
choose(flag)
func get_msg(s []int) int
handle := run.Get_handle(s[0])
role := handle(s)
return role
func login()
var pwd int
fmt.Println("请输入账号:")
fmt.Scan(&user_id)
fmt.Println("请输入密码:")
fmt.Scan(&pwd)
var s = []int1, user_id, pwd
role := get_msg(s)
if 2 == role
fmt.Println("登录失败,请重新登录···")
login()
else
for
menu(role)
func reg()
var pwd int
fmt.Println("请输入密码:")
fmt.Scan(&pwd)
var s = []int2, 123456
id := get_msg(s)
fmt.Println("生成账号为:", id)
fmt.Println("现在切换回登录界面")
login()
func menu(role int)
var choose int
fmt.Println("\\t\\t\\t 菜单选择 \\t\\t\\t")
if 0 == role
//普通用户菜单
fmt.Println("\\t\\t\\t 1、新增管理员 \\t\\t\\t")
fmt.Println("\\t\\t\\t 2、查看用户量 \\t\\t\\t")
fmt.Println("\\t\\t\\t 3、查询流水账 \\t\\t\\t")
fmt.Println("\\t\\t\\t 4、用户 销户 \\t\\t\\t")
fmt.Println("\\t\\t\\t 其他、退出系统 \\t\\t\\t")
fmt.Scan(&choose)
switch choose
case 1:
add_master()
case 2:
search_user_num()
case 3:
search_log()
case 4:
del_user()
default:
os.Exit(1)
else
//管理员菜单
fmt.Println("\\t\\t\\t 1、查询余额 \\t\\t\\t")
fmt.Println("\\t\\t\\t 2、存款 \\t\\t\\t")
fmt.Println("\\t\\t\\t 3、取款 \\t\\t\\t")
fmt.Println("\\t\\t\\t 4、转账 \\t\\t\\t")
fmt.Println("\\t\\t\\t 5、查询交易记录 \\t\\t\\t")
fmt.Println("\\t\\t\\t 其他、退出系统 \\t\\t\\t")
fmt.Scan(&choose)
switch choose
case 1:
search_money()
case 2:
in_money()
case 3:
out_money()
case 4:
move_money()
case 5:
search_user_log()
default:
os.Exit(1)
func add_master()
fmt.Println("跟注册没啥两样,不实现了")
func search_user_num()
user_num := get_msg([]int3)
fmt.Println("用户数量为:%d", user_num)
//这两个查账的业务比较特殊,一会儿单独做
func search_log()
handle := run.Get_handle2(1)
s := handle(user_id)
//开始批量输出
fmt.Println("管理员查询流水账,", s[0])
func del_user()
var id int
fmt.Println("请输入将要注销的用户 id:")
fmt.Scan(&id)
id = get_msg([]int4, id)
if 0 == id
fmt.Println("销户失败")
else
fmt.Println("销户 成功", id)
func search_money()
money := get_msg([]int5, user_id)
fmt.Println("用户账户余额为:", money)
func in_money()
var in int
fmt.Println("请输入存款金额:")
fmt.Scan(&in)
money := get_msg([]int6, user_id, in)
if -1 == money
fmt.Println("存款失败,请联系银行管理员")
else
fmt.Println("用户账户余额为:", money)
func out_money()
var out int
fmt.Println("请输入取款金额:")
fmt.Scan(&out)
money := get_msg([]int6, user_id, out)
if -1 == money
fmt.Println("取款失败,请联系银行管理员")
else
fmt.Println("用户账户余额为:", money)
func move_money()
var move, to_id int
fmt.Println("请输入对方账号:")
fmt.Scan(&to_id)
fmt.Println("请输入转账金额:")
fmt.Scan(&move)
money := get_msg([]int6, user_id, to_id, move)
if -1 == money
fmt.Println("转账失败,请联系银行管理员")
else
fmt.Println("用户账户余额为:", money)
// 这个也比较特殊,稍后处理
func search_user_log()
handle := run.Get_handle2(2)
s := handle(user_id)
//开始批量输出
fmt.Println("用户查询交易记录,", s[0])
worker.go
业务层面,“命令 + 门面” 这套手法是越来越熟了哈。
这里面本该连接数据层的地方我全用注释了。
package worker
type fn func([]int) int
type fn2 func(int) []int
var handle_Map = make(map[int]fn)
var handle_Map2 = make(map[int]fn2)
func login(s []int) int
//校验账号密码
if s[1] == 123456 && s[2] == 123456
return 0
//超级用户 返回0;普通用户,返回1,登录失败,返回2
else
return 2
func reg(s []int) int
//获取 id
var id = s[1]
return id
func search_user_num(s []int) int
//获取用户数量
return 0
func del_user(s []int) int
//销户
return s[1]
func search_money(s []int) int
//查询余额
return 0
func in_money(s []int) int
//用户存款
return 0
func out_money(s []int) int
//用户取款
return 0
func move_money(s []int) int
//用户转账
return 0
func search_log(s int) []int
//查询所有信息
return []int
func search_user_log(s int) []int
//查询用户账本
return []int
func Run()
handle_Map[1] = login
handle_Map[2] = reg
handle_Map[3] = search_user_num
handle_Map[4] = del_user
handle_Map[5] = search_money
handle_Map[6] = in_money
handle_Map[7] = out_money
handle_Map[8] = move_money
handle_Map2[1] = search_log
handle_Map2[2] = search_user_log
func Get_handle(flag int) fn
return handle_Map[flag]
func Get_handle2(flag int) fn2
return handle_Map2[flag]
以上是关于Go 语言入门三部曲:能用 Go 语言写管理系统的主要内容,如果未能解决你的问题,请参考以下文章
Go语言入门指南零基础入门 go 语言 | Golang 入门指南