基于函数章节—制作用户管理系统
- 用户信息存储
- 内存
- 结构(
切片 []
,映射 map
) - 用户
ID
name
age
tel
addr
- 用户创建
- 用户的修改
- 请输入需要修改的用户ID:
users[id]
=> 在 不在(你输入的用户ID不正确)- 打印用户信息,提示用户是否确认修改(Y/N)
- Y 提示用户输入修改后内容
name
,age
,tel
,addr
- 用户的查询
- 用户的删除
- 请输入需要删除的用户ID:
users[id]
=> 在 不在(你输入的用户ID不正确)- 打印用户信息,提示用户是否确认修改(Y/N)
delete()
- 用户登录:
- 在程序中定义PASSWORD = “1qaz!QAZ”,提示输入密码,如果密码输入3次都失败,提示并退出,如果输入成功在进行操作。
package main
import (
"fmt"
"os"
"strings"
)
func AddUser(base string) string {
fmt.Println(base)
fmt.Scan(&base)
return base
}
func add(pk int, users map[string]map[string]string) {
var (
id string = fmt.Sprintf("%d", pk)
name string
age string
tel string
addr string
)
name = AddUser("请输入姓名:")
age = AddUser("请输入年龄:")
tel = AddUser("请输入电话:")
addr = AddUser("请输入地址:")
fmt.Println(id, name, age, tel, addr)
users[id] = map[string]string{
"id": id,
"name": name,
"age": age,
"tel": tel,
"addr": addr,
}
}
//查询用户
func query(users map[string]map[string]string) {
var q string
fmt.Printf("请输入查询的信息:\n")
fmt.Scan(&q)
title := fmt.Sprintf("%5s|%20s|%5s|%20s|%50s\n", "ID", "Name", "Age", "Tel", "Addr")
fmt.Printf(title)
fmt.Println(strings.Repeat("-", len(title)))
for _, v := range users {
if q == "q" || strings.Contains(v["name"], q) || strings.Contains(v["tel"], q) || strings.Contains(v["addr"], q) {
fmt.Printf("%5s|%20s|%5s|%20s|%50s\n", v["id"], v["name"], v["age"], v["tel"], v["addr"])
}
}
}
// 修改用户
func modify(users map[string]map[string]string) {
var q string
fmt.Printf("请输入需要修改的用户ID:\n")
fmt.Scan(&q)
for k, v := range users {
if k == q {
var yn string
fmt.Printf("%5s|%20s|%5s|%20s|%50s\n", v["id"], v["name"], v["age"], v["tel"], v["addr"])
fmt.Printf("是否修改以上信息(y/n):")
fmt.Scan(&yn)
for {
if yn == "y" || yn == "Y" {
v["name"] = AddUser("请输入新姓名:")
v["age"] = AddUser("请输入新年龄:")
v["tel"] = AddUser("请输入新电话:")
v["addr"] = AddUser("请输入新地址:")
break
} else if yn == "N" || yn == "n" {
fmt.Println("取消修改,程序退出")
break
} else {
fmt.Println("输入错误,请重新输入!!!")
fmt.Printf("是否修改以上信息(y/n):")
fmt.Scan(&yn)
}
}
break
} else {
fmt.Println("输入错误请重新输入")
}
}
}
// 删除用户
func dele(users map[string]map[string]string) {
var dele string
fmt.Println("请输入需要删除的用户ID:")
fmt.Scan(&dele)
for k, v := range users {
if k == dele {
var fn string
fmt.Printf("%5s|%20s|%5s|%20s|%50s\n", v["id"], v["name"], v["age"], v["tel"], v["addr"])
fmt.Printf("是否删除以上信息(y/n):")
fmt.Scan(&fn)
for {
if fn == "y" || fn == "Y" {
delete(users, dele)
break
} else if fn == "N" || fn == "n" {
fmt.Println("取消删除,程序退出")
break
} else {
fmt.Println("输入错误,请重新输入!!!")
fmt.Printf("是否删除以上信息(y/n):")
fmt.Scan(&fn)
}
}
break
} else {
fmt.Println("输入错误,程序退出")
}
}
}
const (
maxAuth = 3
password = "123456"
)
func auth() bool {
var input string
for i := 0; i < maxAuth; i++ {
fmt.Println("请输入程序密码:")
fmt.Scan(&input)
if input == password {
return true
} else {
fmt.Println("密码输入错误,请重新输入!")
}
}
return false
}
func main() {
if !auth(){
fmt.Printf("密码%d次错误,程序退出\n",maxAuth)
return
}
//存储用户信息
users := make(map[string]map[string]string)
id := 0
fmt.Println("欢迎使用大冬系统")
for {
var op string
fmt.Print(`
1.新建用户
2.修改用户
3.删除用户
4.查询用户
5.退出
请输入指令:`)
fmt.Scan(&op)
if op == "1" {
id++
add(id, users)
} else if op == "2" {
modify(users)
} else if op == "3" {
dele(users)
} else if op == "4" {
query(users)
} else if op == "5" {
os.Exit(0)
} else {
fmt.Println("输入错误,请重新输入")
}
}
}