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()
}