基于函数章节—制作用户管理系统
- 用户信息存储
- 内存
- 结构(
切片 [],映射 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 mainimport ( "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("输入错误,请重新输入") } }}