main.go:
package main
import (
"fmt"
"os"
)
//学员信息管理系统
//1.添加学员信息
//2.编辑学员信息
//3.展示所有学员信息
func showMenu() {
fmt.Println("欢迎来到学员信息管理系统")
fmt.Println("1.添加学员")
fmt.Println("2.编辑学员信息")
fmt.Println("3.展示所有学员信息")
fmt.Println("4.退出系统")
}
// 获取用户输入的学员信息
func getInput() *student{
var(
id int
name string
class string
)
fmt.Println("请按照要求输入学员信息")
fmt.Print("请输入学员的学号:")
fmt.Scanf("%d
",&id)
fmt.Print("请输入学员的姓名:")
fmt.Scanf("%s
",&name)
fmt.Print("请输入学员的班级:")
fmt.Scanf("%s
",&class)
stu := newStudent(id,name,class)
return stu
}
func main() {
sm := newStudentMgr()
for {
//1.打印系统菜单
showMenu()
//2.等待用户选择要执行的选项
var input int
fmt.Scanf("%d
", &input) //想要改变input变量的值必须传一个指针进来
fmt.Println("用户输入的是:", input)
//3.执行用户选择的动作
switch input {
case 1:
//添加学员
stu := getInput()
sm.addStudent(stu)
case 2:
//编辑学员
stu := getInput()
sm.modifyStudent(stu)
case 3:
//展示所有学员
sm.showStudent()
case 4:
//退出
os.Exit(0)
}
}
}
student.go:
package main
import "fmt"
type student struct {
id int
name string
class string
}
func newStudent(id int,name string,class string) *student {
return &student{
id: id,
name: name,
class: class,
}
}
//学员管理的类型
type studentMgr struct {
allStudents []*student
}
func newStudentMgr() *studentMgr {
return &studentMgr{allStudents:make([]*student,0,100)}
}
//1.添加学生 使用值类型的接收者s studentMgr时,添加学生失败,需要修改接收者中的值记得用指针接收者
func (s *studentMgr) addStudent(newStu *student) {
s.allStudents = append(s.allStudents,newStu)
}
//2.编辑学生
func (s *studentMgr) modifyStudent(newStu *student) {
for i,v := range s.allStudents{
if v.id == newStu.id { //要修改的学生
s.allStudents[i] = newStu
return
}
}
fmt.Printf("输入的学生信息有误,系统中没有学号是:%d的学生
",newStu.id)
}
//3.展示学生
func (s *studentMgr) showStudent() {
for _,v:= range s.allStudents{
fmt.Printf("学号:%d 姓名:%s 班级:%s
",v.id,v.name,v.class)
}
}
欢迎来到学员信息管理系统 1.添加学员 2.编辑学员信息 3.展示所有学员信息 4.退出系统 1 用户输入的是: 1 请按照要求输入学员信息 请输入学员的学号:001 请输入学员的姓名:han 请输入学员的班级:01 欢迎来到学员信息管理系统 1.添加学员 2.编辑学员信息 3.展示所有学员信息 4.退出系统 3 用户输入的是: 3 学号:1 姓名:han 班级:01 欢迎来到学员信息管理系统 1.添加学员 2.编辑学员信息 3.展示所有学员信息 4.退出系统