Go语言基础练习四
2021-12-25 本文已影响0人
羋学僧
结构体版学生管理系统
student_magr.go
package main
import "fmt"
// 有一个个体
// 1.它保存了一些数据 ---> 结构体的字段
// 2.它有4个功能 ---> 结构体的方法
// 造一个学生
type student struct {
id int64
name string
}
// 造一个学生的管理者
type studentMgr struct {
allStudent map[int64]student
}
// 查看学生
func (s studentMgr) showStudent() {
// 从s.allStudent这个map中把所有的学生stu逐个遍历
for _, stu := range s.allStudent {
fmt.Printf("学号:%d 姓名:%s\n", stu.id, stu.name)
}
}
// 增加学生
func (s studentMgr) addStudent() {
// 1.根据用户输入的内容创建一个新的学生
var (
stuID int64
stuName string
)
// 获取用户输入
fmt.Print("请输入学生学号:")
fmt.Scanln(&stuID)
fmt.Print("请输入学生姓名:")
fmt.Scanln(&stuName)
// 根据用户输入创建构造体对象
newStu := student {
id : stuID,
name : stuName,
}
// 2.把新的学生放到s.allStudent这个map中
s.allStudent[newStu.id] = newStu
fmt.Println("添加成功!")
}
// 修改学生
func (s studentMgr) editStudent() {
//1.获取用户输入的学号
var stuID int64
fmt.Print("请输入你要修改的学生学号:")
fmt.Scanln(&stuID)
//2.展示该学号对应的学生信息,如果没有,提示查无此人
stuObj, ok := s.allStudent[stuID]
if !ok {
fmt.Println("查无此人!")
return
}
fmt.Printf("你要修改的学生信息如下:学号:%d 姓名:%s\n", stuObj.id, stuObj.name)
//3.请输入修改后的学生名
var newNmae string
fmt.Print("请输入学生新名字:")
fmt.Scanln(&newNmae)
//4.更新学生的姓名
stuObj.name = newNmae
s.allStudent[stuID] = stuObj
}
// 删除学生
func (s studentMgr) deleteStudent() {
//1.获取用户输入的学号
var stuID int64
fmt.Print("请输入你要删除的学生学号:")
fmt.Scanln(&stuID)
//2.展示该学号对应的学生信息,如果没有,提示查无此人
stuObj, ok := s.allStudent[stuID]
if !ok {
fmt.Println("查无此人!")
return
}
fmt.Printf("你要删除的学生信息如下:学号:%d 姓名:%s\n", stuObj.id, stuObj.name)
//3.请输入修改后的学生名
delete(s.allStudent,stuID)
fmt.Println("删除成功!")
}
main.go
package main
import (
"fmt"
"os"
)
// 学生管理系统
// 声明一个全局的变量学生管理对象神秘人
var smr studentMgr
// 菜单函数
func showMenu() {
fmt.Println("--------welcome sms!--------")
fmt.Println(`
1. 查看所有学生
2. 添加学生
3. 修改学生
4. 删除学生
5. 退出
`)
}
func main() {
var smr = studentMgr {
allStudent: make(map[int64]student,100),
}
for {
showMenu()
// 等待用户输入选项
fmt.Print("请输入序号:")
var choice int
fmt.Scanln(&choice)
fmt.Println("你输入的是:",choice)
switch choice {
case 1:
smr.showStudent()
case 2:
smr.addStudent()
case 3:
smr.editStudent()
case 4:
smr.deleteStudent()
case 5:
os.Exit(1)
default:
fmt.Println("请离开!")
}
}
}