go 结构体版学生管理系统
main.go
package main
import (
"fmt"
"os"
)
func menu() {
fmt.Println("--------------------- welcome to use sms ---------------------")
fmt.Println(`
1.查看所有学生
2.增加学生
3.修改学生
4.删除学生
5.退出
`)
}
var sms studMgr
func main() {
sms = studMgr{
allStud: make(map[int64]stud),
}
var choice int
for {
menu()
fmt.Println("请输入您的选项")
fmt.Scan(&choice)
switch choice {
case 1:
sms.showAllStud()
case 2:
sms.addNewStud()
case 3:
sms.modStud()
case 4:
sms.delStud()
case 5:
os.Exit(1)
default:
fmt.Println("输入有误,请重新输入")
}
}
}
stu_manage.go
package main
import "fmt"
// 学生管理系统
// 有一个物件:
// 1.保存了一些数据 -->结构体的字段
// 2.有三个功能 -->结构体的方法
type stud struct {
id int64
name string
}
//造一个学生的管理者
type studMgr struct {
allStud map[int64]stud
}
// 查看学生
func (s studMgr) showAllStud() {
for _, v := range s.allStud {
fmt.Printf("学号:%d 姓名:%s\n", v.id, v.name)
}
}
//增加学生
func (s studMgr) addNewStud() {
var (
id int64
name string
)
fmt.Println("请输入新学生的学号")
fmt.Scan(&id)
fmt.Println("请输入新学生的姓名")
fmt.Scan(&name)
newStu := stud{id, name}
s.allStud[id] = newStu
}
//修改学生
func (s studMgr) modStud() {
var (
id int64
newName string
)
fmt.Println("请输入要修改新学生的学号")
fmt.Scan(&id)
stu, ok := s.allStud[id]
if !ok {
fmt.Println("查无此人")
return
}
fmt.Println("请输入学生的新姓名")
fmt.Scan(&newName)
stu.name = newName
s.allStud[id] = stu
}
//删除学生
func (s studMgr) delStud() {
var id int64
fmt.Println("请输入要修改新学生的学号")
fmt.Scan(&id)
_, ok := s.allStud[id]
if !ok {
fmt.Println("查无此人")
return
}
delete(s.allStud, id)
fmt.Println("删除成功")
}
目录结构