跳到主要内容

做个练习

添加客户:

截屏2022-08-04 16.09.01

查看客户和删除客户:

截屏2022-08-04 16.09.40

修改客户:

截屏2022-08-04 16.12.27

package main

import (
"bufio"
"fmt"
"os"
"strings"
)

// 构建数据存储结构
var customers []map[string]interface{}
var customersId int

func findById(id int) int {
index := -1
//遍历this.customers切⽚
for i := 0; i < len(customers); i++ {

if customers[i]["cid"] == id {
index = i
}
}
return index
}

func isBack() bool {
// 引导用户选择继续还是返回
fmt.Print("请问是否返回上一层【Y/N】:")
var backChoice string
fmt.Scan(&backChoice)

if strings.ToUpper(backChoice) == "Y" {
return true
} else {
return false
}
}

func inputInfo() (string, string, int8, string) {
var name string
fmt.Print("请输入客户姓名:")
fmt.Scan(&name)

var gender string
fmt.Print("请输入客户性别:")
fmt.Scan(&gender)

var age int8
fmt.Print("请输入客户年龄:")
fmt.Scan(&age)

var email string
fmt.Print("请输入客户邮箱:")
fmt.Scan(&email)

return name, gender, age, email
}

func addCustomer() {
for true {
// 引导用户输入学号和姓名
fmt.Printf("\033[1;35;40m%s\033[0m\n", "---------------------------添加客户开始-----------------------------")
name, gender, age, email := inputInfo()
// 创建客户的map对象
customersId++ // 客户编号不需要输入,系统自增即可
newCustomer := map[string]interface{}{
"cid": customersId,
"name": name,
"gender": gender,
"age": age,
"email": email,
}
// 添加客户map对象添加到客户切片中
customers = append(customers, newCustomer)
fmt.Printf("\033[1;35;40m%s\033[0m\n", "---------------------------添加客户完成-----------------------------")
b := isBack()
if b {
break
}
}
}

func listCustomer() {
for true {
fmt.Printf("\033[1;32;40m%s\033[0m\n", "----------------------------------客户列表开始-----------------------------------")
for _, customer := range customers {
fmt.Printf("编号:%-8d 姓名:%-8s 性别:%-8s 年龄:%-8d 邮箱:%-8s \n",
customer["cid"], customer["name"], customer["gender"], customer["age"], customer["email"])
}
fmt.Printf("\033[1;32;40m%s\033[0m\n", "----------------------------------客户列表完成-----------------------------------")
b := isBack()
if b {
break
}
}
}

func updateCustomer() {
fmt.Printf("\033[1;36;40m%s\033[0m\n", "---------------------------客户修改开始----------------------------")
for true {
var updateCid int
fmt.Print("请输入更新客户编号:")
fmt.Scan(&updateCid)
updateIndex := findById(updateCid)
if updateIndex == -1 {
fmt.Println("删除失败,输入的编号ID不存在")
continue
}
fmt.Println("请输入修改客户的信息")
name, gender, age, email := inputInfo()

customers[updateIndex]["name"] = name
customers[updateIndex]["gender"] = gender
customers[updateIndex]["age"] = age
customers[updateIndex]["email"] = email

fmt.Printf("\033[1;36;40m%s\033[0m\n", "---------------------------客户修改完成----------------------------")
b := isBack()
if b {
break
}
}
}

func deleteCustomer() {
fmt.Printf("\033[1;31;40m%s\033[0m\n", "---------------------------删除客户开始----------------------------")
var delCid int
fmt.Print("请输入删除客户编号:")
fmt.Scan(&delCid)

delIndex := findById(delCid)
if delIndex == -1 {
fmt.Println("删除失败,输入的编号ID不存在")
return
}

customers = append(customers[:delIndex], customers[delIndex+1:]...)
fmt.Printf("\033[1;31;40m%s\033[0m\n", "---------------------------删除客户完成----------------------")
}

var data = make(map[string]map[string]string)

func main() {
for true {
fmt.Printf("\033[1;33;40m%s\033[0m\n", `

----------------客户信息管理系统--------------

1、添加客户
2、查看客户
3、更新客户
4、删除客户
5、退出
-------------------------------------------
`)

var choice int
fmt.Printf("\033[1;38;40m%s\033[0m", "请输入选择【1-5】:")
stdin := bufio.NewReader(os.Stdin)
fmt.Fscan(stdin, &choice)

switch choice {
case 1:
addCustomer()
case 2:
listCustomer()
case 3:
updateCustomer()
case 4:
deleteCustomer()
default:
fmt.Println("非法输入!")
os.Exit(0)
}
}
}