Go学生管理系统(基于map增删改查)

package main

import (
	"fmt"
	"os"
)

//学生管理系统
//2.1声明一个全局变量名为allstudent的map主键为id(每个学生都有一个id编号,学生名字可能重复但id不会。)值为名为student的结构体。
var (
	allstudent map[int64]*student
)

type student struct {
	id   int64
	name string
}

//1.构建一个循环菜单
func mem() {
	var choice int
	for {
		fmt.Print(`欢迎来到学生管理系统
1.退出系统
2.增加学生
3.删除学生
4.修改学生
5.查看学生
请输入您的选择:`)
		fmt.Scanln(&choice)
		switch choice {
		case 1:
			os.Exit(0)
		case 2:
			createStudent()
		case 3:
			delStudent()
		case 4:
			chStudent()
		case 5:
			searchStudent()
		default:
			fmt.Println("==输入有误!==")
		}
	}
}

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

//3 创建学生
func createStudent() {
	////3.1 创建接收学生
	var (
		id   int64
		name string
	)
	//3.2 接收学生信息输入
	fmt.Print("请输入学生id:")
	fmt.Scanln(&id)
	for k := range allstudent {
		if id == k {
			fmt.Printf("学生id:%d已存在\n", k)
			mem()
		}
	}
	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)
	//3.4 使用构造函数接收
	stu := newStudent(id, name)
	allstudent[id] = stu
}

//4 删除学生
func delStudent() {
	var (
		deleteID int64
	)
	fmt.Print("请输入学生id:")
	fmt.Scanln(&deleteID)
	delete(allstudent, deleteID)
}

//5 修改学生
func chStudent() {
	////5.1 创建接收学生
	var (
		id   int64
		name string
	)
	//5.2 接收学生信息输入
	fmt.Print("请输入要修改的id:")
	fmt.Scanln(&id)
	for k := range allstudent {
		fmt.Printf("学生id:%d\n", k)
		//5.3 根据id判断学生是否存在
		if id != k {
			fmt.Printf("学生id:%d不存在\n", k)
			mem()
		}
	}
	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)
	//5.4 使用构造函数接收
	stu := newStudent(id, name)
	allstudent[id] = stu
	fmt.Print("修改成功!")
}

//2.查询学生
func searchStudent() {
	//2.3循环输出allstudent的学生
	for k, v := range allstudent {
		fmt.Printf("学生id:%d 学生姓名:%s\n", k, v.name)
	}
}
func main() {
	//2.2初始化allstudent使用make开辟空间
	allstudent = make(map[int64]*student, 64)
	mem()
}

posted @ 2022-01-25 14:39  iXiAo9  阅读(72)  评论(0编辑  收藏  举报