使用“面向对象”的思维方式用Go语言编写一个学生信息管理系统。
- 学生有id、姓名、年龄、分数等信息
- 程序提供展示学生列表、添加学生、编辑学生信息、删除学生等功能
main.go
package main
import (
"fmt"
"os"
)
func showMenu() {
fmt.Println("欢迎来到学员信息管理系统")
fmt.Println("1.展示所有学员信息")
fmt.Println("2.添加学员信息")
fmt.Println("3.编辑学员信息")
fmt.Println("4.删除学员信息")
fmt.Println("5.退出系统")
}
func getInput() *student {
var (
id int
age int
score int
name string
class string
)
fmt.Println("请按照系统要求输入学生信息")
fmt.Print("请输入学员的学号:")
fmt.Scanf("%d\n", &id)
fmt.Print("请输入学员的姓名:")
fmt.Scanf("%s\n", &name)
fmt.Print("请输入学员的年龄:")
fmt.Scanf("%d\n", &age)
fmt.Print("请输入学员的分数:")
fmt.Scanf("%d\n", &score)
fmt.Print("请输入学员的班级:")
fmt.Scanf("%s\n", &class)
stu := newStudent(id, age, score, name, class)
return stu
}
func main() {
sm := newManagementStudent()
for {
showMenu()
var input int
fmt.Print("请输入你要操作的序号:")
fmt.Scanf("%d\n", &input)
switch input {
case 1:
//展示所有学员信息
sm.showStudent()
case 2:
//添加学员信息
stu := getInput()
sm.addStudent(stu)
case 3:
//编辑学员信息
stu := getInput()
sm.editStudent(stu)
case 4:
//删除学员信息
var id int
fmt.Print("请输入要删除的学员的学号:")
fmt.Scanf("%d\n", &id)
sm.delStudent(id)
case 5:
//退出系统
os.Exit(0)
}
}
}
student.go
package main
import "fmt"
//定义student类型
type student struct {
id int
age int
score int
name string
class string
}
//student类型的构造函数
func newStudent(id, age, score int, name, class string) *student {
return &student{
id: id,
age: age,
score: score,
name: name,
class: class,
}
}
//定义managementStudent类型
type managementStudent struct {
allStudent []*student
}
//managementStudent类型的构造函数
func newManagementStudent() *managementStudent {
return &managementStudent{
allStudent: make([]*student, 0, 100),
}
}
//添加学生
func (m *managementStudent) addStudent(newStu *student) {
m.allStudent = append(m.allStudent, newStu)
}
//编辑学生
func (m *managementStudent) editStudent(newStu *student) {
for i,v := range m.allStudent{
if newStu.id == v.id{
m.allStudent[i] = newStu
return
}
}
fmt.Printf("系统中没有学号为%d的学生\n",newStu.id)
}
//删除学生
func (m *managementStudent) delStudent(id int) {
for i,v := range m.allStudent{
if id == v.id{
m.allStudent = append(m.allStudent[:i],m.allStudent[i+1:]...)
return
}
}
fmt.Printf("系统中没有学号为%d的学生\n",id)
}
//展示学生
func (m *managementStudent) showStudent() {
for _, v := range m.allStudent {
fmt.Printf("学号:%d 姓名:%s 年龄:%d 分数:%d 班级:%s\n",v.id,v.name,v.age,v.score,v.class)
}
}
可参考文章:Go语言全栈开发:结构体