感觉老师的有点乱,所以和老师的不太一样,用的形式比较简单,有问题可留言
package mainimport "fmt"func main() { for { choose := -1 fmt.Println("——————客户信息管理系统——————") fmt.Println("1 增加客户 2 批改客户") fmt.Println("3 删除客户 4 客户列表") fmt.Println("5 退出") fmt.Println("请抉择 (1~5)") fmt.Scanln(&choose) if choose != 5 { if choose == 1 { addCus() } else if choose == 2 { updateCus() } else if choose == 3 { delCus() } else if choose == 4 { listCus() } else { return } } else { return } }}//定义客户构造体type customer struct { id string name string sex string age int phone string email string}//存储客户信息var cusList []customer//增加func addCus() { var addCus customer fmt.Println("————增加客户————") fmt.Print("编号: ") fmt.Scanln(&addCus.id) fmt.Print("姓名: ") fmt.Scanln(&addCus.name) fmt.Print("性别: ") fmt.Scanln(&addCus.sex) fmt.Print("年龄: ") fmt.Scanln(&addCus.age) fmt.Print("电话: ") fmt.Scanln(&addCus.phone) fmt.Print("邮箱: ") fmt.Scanln(&addCus.email) fmt.Println("————增加实现————") cusList = append(cusList, addCus)}//批改func updateCus() { var updateCus customer var upID string fmt.Println("————批改客户————") fmt.Print("请输出待批改的客户编号(-1退出到菜单): ") fmt.Scanln(&upID) if upID != "-1" { for index, value := range cusList { if value.id == upID { fmt.Println("————————批改客户信息(间接回车不批改)———————") fmt.Println("编号:", value.id) fmt.Printf("姓名(%s):", value.name) fmt.Scanln(&updateCus.name) if updateCus.name != "" { cusList[index].name = updateCus.name } fmt.Printf("性别(%s):", value.sex) fmt.Scanln(&updateCus.sex) if updateCus.sex != "" { cusList[index].sex = updateCus.sex } fmt.Printf("年龄(%d):", value.age) fmt.Scanln(&updateCus.age) if updateCus.age != 0 { cusList[index].age = updateCus.age } fmt.Printf("电话(%s):", value.phone) fmt.Scanln(&updateCus.phone) if updateCus.phone != "" { cusList[index].phone = updateCus.phone } fmt.Printf("邮箱(%s):", value.email) fmt.Scanln(&updateCus.email) if updateCus.email != "" { cusList[index].email = updateCus.email } fmt.Println("—————————批改实现————————————") break } } fmt.Println("输出编号不存在") } else { return }}//删除func delCus() { var delID string var choose string fmt.Println("————删除客户————") fmt.Print("请输出待删除的客户编号(-1退出): ") fmt.Scanln(&delID) if delID != "-1" { for index, value := range cusList { //存在输出的id if value.id == delID { fmt.Println("编号:", value.id) fmt.Println("姓名:", value.name) fmt.Println("性别:", value.sex) fmt.Println("年龄:", value.age) fmt.Println("电话:", value.phone) fmt.Println("邮箱:", value.email) fmt.Println("确认删除:(是)Y (否)N") fmt.Scanln(&choose) if choose == "Y" || choose == "y" { //删除的元素在结尾 if index == len(cusList)-1 { cusList = cusList[:index] return //删除的为首元素 } else if index == 0 { cusList = cusList[1:] return } else { //删除的元素在两头:将元素的后面和前面从新拼接,不包含要删除的元素自身 cusList = append(cusList[:index], cusList[index+1:]...) //须要保留开端三个点 return } } else { return } } } // 输出的id没有 fmt.Println("编号输出有误!") return } else { return }}//查问func listCus() { var findID string fmt.Println("输出 id 查找,回车显示全副") fmt.Scanln(&findID) if len(cusList) == 0 { fmt.Println("暂无客户信息,返回菜单") return } else { //全副查问 if findID == "" { fmt.Println("————————客户列表——————————") fmt.Println("编号", "\t姓名", "\t性别", "\t年龄", "\t电话", "\t邮箱") for _, value := range cusList { fmt.Println(value.id, "\t", value.name, "\t", value.sex, "\t", value.age, "\t", value.phone, "\t", value.phone) } fmt.Println("——————————————————————") //依据ID查问 } else { for _, value := range cusList { if value.id == findID { fmt.Println("————————客户信息———————") fmt.Println("编号: ", value.id) fmt.Println("姓名: ", value.name) fmt.Println("性别: ", value.sex) fmt.Println("年龄: ", value.age) fmt.Println("电话: ", value.phone) fmt.Println("邮箱: ", value.email) fmt.Println("——————————————————————") return } } fmt.Println("输出ID不存在,返回菜单") return } }}