栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Golang实现通讯录小案例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang实现通讯录小案例

代码:

package main

import "fmt"

func main() {
	for {
		menu()
	}
}

type User struct {
	userName string
	
	addressPhone map[string]string
}

// 定义切片
var userList = make([]User, 0)

func menu() {

	// 1、给出提示
	fmt.Println("添加联系人信息,请按1")
	fmt.Println("删除联系人信息,请按2")
	fmt.Println("编辑联系人信息,请按3")
	fmt.Println("查看联系人信息,请按4")
	fmt.Println("退出,请按5")
	fmt.Println("--------------------")
	// 2、对用户输入的数字进行判断
	var num int
	fmt.Scan(&num)

	switch num {
	// 添加
	case 1:
		addUser()
	// 删除
	case 2:
		deleteUser()
	// 编辑
	case 3:
		editUser()
	// 查看
	case 4:
		findUser()
	case 5:
		break 
	}
}

func addUser() {
	// 1、添加
	var name string
	var phoneType string
	var phone string
	var exit string
	var userPhone = make(map[string]string)

	fmt.Println("请输入姓名:")
	fmt.Scan(&name)

	for {
		// 2、保存电话类型
		fmt.Println("请输入电话类型:")
		fmt.Scan(&phoneType)

		// 3、保存电话号码
		fmt.Println("请输入电话号码:")
		fmt.Scan(&phone)

		// 4、把电话以及电话类型存储到userPhone中
		userPhone[phoneType] = phone

		fmt.Println("结束录入输入Q")
		fmt.Scan(&exit)

		if exit == "Q" {
			break
		} else {
			continue
		}
	}
	// 5、将联系人的信息添加到切片中
	userList = append(userList, User{userName: name, addressPhone: userPhone})
	fmt.Println("添加成功")
}


func showUser() {
	// 1、判断切片中是否有数据
	if len(userList) == 0 {
		fmt.Println("通讯录为空,请先添加联系人")
	} else {
		for _, value := range userList {
			fmt.Println("姓名:", value.userName)
			for key, v := range value.addressPhone {
				fmt.Println("电话类型:", key)
				fmt.Println("电话号码:", v)
			}
		}
	}
}


func deleteUser() {
	// 1、根据联系人姓名删除,判断切片中是否有要删除的联系人
	var name string
	index := -1
	fmt.Println("请输入要删除联系人的姓名:")
	fmt.Scan(&name)

	// 2、记录要删除联系人的的索引
	for i := 0; i < len(userList); i++ {
		if userList[i].userName == name {
			index = i
			break
		}
	}
	// 3、执行删除操作
	
	if index != -1 {
		userList = append(userList[:index], userList[index+1:]...)
	}
	showUser()
}

func findUser() *User {
	// 1、根据联系人姓名查询,判断切片中是否有要查询的联系人
	var name string
	index := -1
	fmt.Println("请输入要查询联系人的姓名:")
	fmt.Scan(&name)

	for key, value := range userList {
		if value.userName == name {
			index = key
			fmt.Println("联系人姓名", value.userName)
			for k, v := range value.addressPhone {
				fmt.Printf("%s:%sn", k, v)
			}
		}
	}
	if index == -1 {
		fmt.Println("没有查询到该联系人")
		return nil
	} else {
		return &userList[index]
	}
}

func editUser() {
	// 1、添加
	var name string
	var user *User
	var num int
	menu := make([]string, 0) // 保存电话类型
	var userNum int
	var newPhone string

	user = findUser()
	if user != nil {
		for {
			fmt.Println("编辑用户名称请按1,编辑用户电话请按2,退出请按3")
			fmt.Scan(&num)

			switch num {
			case 1:
				fmt.Println("请输入新的用户姓名:")
				fmt.Scan(&name)
				user.userName = name
				showUser()
			case 2:
				// 显示联系人所有的电话信息
				var n int
				for key, value := range user.addressPhone {
					fmt.Println("编辑(", key, ")", value, "请按:", n)
					menu = append(menu, key)
					n++
				}
				// 修改
				fmt.Println("请输入编辑号码的类型:")
				fmt.Scan(&userNum)

				for key, value := range menu {
					if key == userNum {
						fmt.Println("请输入新的电话号码:")
						fmt.Scan(&newPhone)
						user.addressPhone[value] = newPhone
					}
				}
			case 3:
				break
			}
			break
		}
	} else {
		fmt.Println("没有查询到要编辑的联系人")
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/727851.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号