02_Go游戏-函数版学生管理系统

package main

import (
    "fmt"
    "os"
)

type student struct {
    id   int64
    name string
}

var (
    allStudent map[int64]*student
)

// 构造函数
func newStudent(id int64, name string) *student {
    return &student{
        id:   id,
        name: name,
    }
}

func addStu() {
    var (
        userID   int64
        userName string
    )

    fmt.Print("请输入学生学号:")
    fmt.Scanln(&userID)
    if _, ok := allStudent[userID]; !ok {
        fmt.Print("请输入学生姓名:")
        fmt.Scanln(&userName)
    } else {
        fmt.Println("学生ID已存在!")
    }

    newStu := newStudent(userID, userName) // 初始化分配内存空间
    allStudent[userID] = newStu
}

func delStu() {
    var userID int64
    fmt.Print("请输入要删除的学生ID:")
    fmt.Scanln(&userID)
    if _, ok := allStudent[userID]; ok {
        delete(allStudent, userID)
        fmt.Println("删除成功!")
    } else {
        fmt.Println("学生ID不存在!")
    }
}

func showStu() {
    for _, v := range allStudent {
        fmt.Printf("学生ID: %d, 学生姓名:%s\n", v.id, v.name)
    }
}

func main() {
    var choiceNum int
    allStudent = make(map[int64]*student, 50) // 初始化分配内存空间
    for {
        fmt.Println(`
    欢迎光临学生管理系统!
    您可以:
        1. 添加学生
        2. 删除学生
        3. 查看学生
        0. 退出系统
    请输入数字确定您的操作:
    `)
        fmt.Scanln(&choiceNum)
        switch choiceNum {
        case 1:
            addStu()
        case 2:
            delStu()
        case 3:
            showStu()
        case 0:
            os.Exit(0)
        default:
            fmt.Println("无效的输入!")
        }
    }

}