student.go
package main
import (
"fmt"
)
// 学生
type student struct{
id int
name string
class string
}
// 学生的构造函数
func newStudent(id int, name, class string) *student{
return &student{
id: id,
name: name,
class: class,
}
}
// 学生管理
type manage struct {
allStudent []*student
}
// 学生管理的构造函数
func newManage() *manage{
return &manage{
allStudent: make([]*student, 0, 100),
}
}
// 添加学生
func (s *manage) addStudent(newstu *student){
s.allStudent = append(s.allStudent, newstu)
}
// 编辑学生信息
func (s *manage)modifystudent(newstu *student){
for i, v := range s.allStudent{
if newstu.id == v.id{
s.allStudent[i] = newstu
return
}
}
fmt.Printf("系统不存在学号为%d的这个学生!
", newstu.id)
}
// 展示所有学生信息
func (s *manage) showAllStudent(){
for _, v := range s.allStudent{
fmt.Printf("学号:%d---姓名:%s---班级%s
", v.id, v.name, v.class)
}
}
main.go
package main
import (
"fmt"
"os"
)
func menu(){
fmt.Println("欢迎使用go学生管理系统")
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.Scanf("%d
", &id)
fmt.Println("请输入学生的姓名:")
fmt.Scanf("%s
", &name)
fmt.Println("请输入学生的班级")
fmt.Scanf("%s
", &class)
stu := newStudent(id, name, class)
return stu
}
func main(){
sm := newManage()
for{
//1.打印系统
menu()
//2.用户选择操作
var input int
fmt.Print("请输入你要的操作数:")
fmt.Scanf("%d
", &input)
fmt.Println("你选择的操作是:", input)
// 3.执行操作
switch input{
case 1:
stu := getInput()
sm.addStudent(stu)
break
case 2:
stu := getInput()
sm.modifystudent(stu)
break
case 3:
sm.showAllStudent()
break
case 4:
os.Exit(0)
}
}
}