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.退出系统