Go语言全栈开发:结构体作业解答

使用“面向对象”的思维方式用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语言全栈开发:结构体

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值