1. 编写 main.go 程序
package main
import (
"fmt"
"os"
)
var smr stuMgr //声明一个全局的全局变量学生管理smr
// 菜单函数
func showMenu() {
fmt.Println("------------Welcome to sms!---------------")
fmt.Println(`
1. 查看所有学生
2. 添加学生
3. 删除学生
4. 修改学生姓名
5. 退出
`)
}
func main() {
smr = stuMgr{
allStudent: make(map[int64]student, 100),
}
for {
showMenu()
fmt.Print("请输入操作(1 2 3 4):")
var choice int
fmt.Scanln(&choice)
fmt.Printf("你输入的是:%d", choice)
switch choice {
case 1:
smr.showStudent()
case 2:
smr.addStudent()
case 3:
smr.editStudent()
case 4:
smr.delStudent()
case 5:
os.Exit(1)
default:
fmt.Println("输入错误!")
}
}
}
2. 编写 student_mgr.go 程序
package main
import "fmt"
// 学生管理系统
// 有一个物件:
// 1. 它保存了一些数据 ---> 结构体的字段
// 2. 他有三个功能 ---> 结构体的方法 :面向对象编程语言的思维
// 定义学生结构体
type student struct {
id int64
name string
}
// 造一个学生的管理者
type stuMgr struct {
allStudent map[int64]student
}
// 查看所有学生
func (s stuMgr) showStudent() {
// 遍历s.allStudent
for _, v := range s.allStudent { // v是具体某个学生
fmt.Printf("学号:%d 姓名:%s\n", v.id, v.name)
}
}
// 增加学生
func (s stuMgr) addStudent() {
// 1. 根据用户输入的内容新建一个学生
// 2. 追加数据
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 stuMgr) editStudent() {
// 1. 获取用户输入的ID
// 2. 展示学号对应的学生信息,如果没有提示查无此人
// 3. 请输入修改后的学生名
// 4. 更新
var stuid int64
fmt.Print("请输入学生学号:")
fmt.Scanln(&stuid)
stuobj, ok := s.allStudent[stuid]
if !ok {
fmt.Println("查无此人!")
return
}
fmt.Printf("你要修改的学生信息如下:学号-%d 姓名-%s\n", stuobj.id, stuobj.name)
fmt.Print("请输入学生的新名字:")
var newname string
fmt.Scanln(&newname)
stuobj.name = newname
s.allStudent[stuid] = stuobj //更新值
fmt.Println("修改成功!")
}
// 删除学生
func (s stuMgr) delStudent() {
//1. 请用户输入要删除学生的ID
//2. 找学生,如果没有,打印查无此人
//3. 执行删除操作
fmt.Print("请输入要删除学生的学号:")
var stuid int64
fmt.Scanln(&stuid)
_, ok := s.allStudent[stuid]
if !ok {
fmt.Println("查无此人!")
return
}
delete(s.allStudent, stuid)
fmt.Println("删除成功!")
}
3. 编译并执行