学生管理系统(结构体实现)
学习go语言的第4天,用结构体写个学生管理系统,功能不严谨,只是学习过程中随便练手的代码。前文用函数实现点击跳转
package main
import (
"fmt"
"os"
)
//学生管理系统
//学生
type student struct {
id int64
name string
}
//造一个学生的管理者
type studentManager struct {
allStudent map[int64]student
}
var stumanger studentManager
//菜单函数
func showMenu() {
fmt.Println("-----------------学生管理系统-------------------")
fmt.Println(`
1.查看所有学生
2.添加学生
3.修改学生
4.删除学生
5.退出
`)
}
//查看学生
func (s studentManager) showStudent() {
for _, stu := range s.allStudent {
fmt.Printf("学号:%d 姓名:%s\n", stu.id, stu.name)
}
}
//增加学生
func (s studentManager) addStudent() {
//1.用户输入添加学生信息
var (
id int64
name string
)
//获取用户输入
fmt.Print("请输入学号:")
fmt.Scanln(&id)
fmt.Print("请输入姓名:")
fmt.Scanln(&name)
newStu := student{
id: id,
name: name,
}
//增加
s.allStudent[newStu.id] = newStu
fmt.Println("添加成功")
}
//修改学生
func (s studentManager) updateStudent() {
//获取用户输入的学号
var stuID int64
fmt.Print("请输入学号:")
fmt.Scanln(&stuID)
//show该学号对应的学生信息
stuObj, ok := s.allStudent[stuID]
if !ok {
fmt.Println("查无此人")
return
} else {
fmt.Printf("你要修改的学生信息:学号:%d 姓名:%s\n", stuObj.id, stuObj.name)
}
//输入修改后的学生名
fmt.Print("请输入修改后的名字:")
var stuName string
fmt.Scanln(&stuName)
//更新学生的姓名
stuObj.name = stuName
s.allStudent[stuID] = stuObj
fmt.Println("修改成功")
}
//删除学生
func (s studentManager) delectStudent() {
//请用户输入要删除学生的id
var stuID int64
fmt.Print("请输入要删除学生的学号:")
fmt.Scanln(&stuID)
//show该学号对应的学生信息//找有没有对应的学生
_, ok := s.allStudent[stuID]
if !ok { f
mt.Println("查无此人")
return
} else {
//删除
delete(s.allStudent, stuID)
fmt.Println("删除成功")
}
}
//主函数func main() {
stumanger = studentManager{
allStudent: make(map[int64]student, 100),
}
for {
//打印功能菜单
showMenu()
//用户输入
fmt.Print("请输入序号:")
var choice int64
fmt.Scanln(&choice)
fmt.Println("你输入的是:", choice)
switch choice {
case 1:
stumanger.showStudent()
case 2:
stumanger.addStudent()
case 3:
stumanger.updateStudent()
case 4:
stumanger.delectStudent()
case 5:
os.Exit(1)
default:
fmt.Println("输入有误,请重新输入")
}
}
}