Go语言学习——函数版学生管理系统

学生管理系统

package main

import (
	"fmt"
	"os"
)

/*
	函数版学生管理系统
	写一个系统能够查看、新增、删除、学生
*/

var (
	allStudent map[int64]*student // 变量声明
)

type student struct {
	id   int64
	name string
}

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

func showAllStudent() {
	// 把所有的学生都遍历出来
	for k, v := range allStudent {
		fmt.Printf("学号:%d 姓名:%s\n", k, v.name)
	}
	fmt.Println("查看所有学生成功!")
}

func addStudent() {
	// 向allStudent中添加一个新的学生
	// 1. 创建一个新学生
	// 1.1 获取用户输入
	var (
		id   int64
		name string
	)
	fmt.Print("请输入学生学号:")
	fmt.Scanln(&id)
	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)
	// 1.2 造学生(调用student的构造函数)
	newStu := newStudent(id, name)
	// 2. 追加到allStudent这个map中
	allStudent[id] = newStu
	fmt.Println("新增学生成功!")
}

func deleteStudent() {
	// 1. 请用户输入要删除的学生的学号
	var (
		deleteId int64
	)
	fmt.Print("请输入您要删除的学生的学号:")
	fmt.Scanln(&deleteId)
	// 2. 去allStudent这个map中根据学号删除对应的键值对
	delete(allStudent, deleteId)
	fmt.Println("删除学生成功!")
}

func main() {
	allStudent = make(map[int64]*student, 50) // 初始化(开辟内存空间)
	for {
		// 1. 打印菜单
		fmt.Println("欢迎光临学生管理系统!")
		fmt.Println(`
			1. 查看所有学生
			2. 新增学生
			3. 删除学生
			4. 退出
		`)
		fmt.Print("请输入您要执行的操作:")

		// 2. 等待用户选择要做什么
		var choice int
		fmt.Scanln(&choice)
		fmt.Printf("您选择了%d这个选项!\n", choice)
		// 3. 执行对应的函数

		switch choice {
		case 1:
			showAllStudent()
		case 2:
			addStudent()
		case 3:
			deleteStudent()
		case 4:
			os.Exit(1)
		default:
			fmt.Println("请输入正确的操作选项!")
		}
	}
}

思考:把学员信息管理系统改写成方法版

posted @ 2022-05-31 23:51  寻月隐君  阅读(55)  评论(0编辑  收藏  举报