Go语言基础之结构体练习

Go语言基础之结构体练习

一、创建目录结构

image-20211104090541405

image-20211104090559962

二、实现功能

// studeng.go文件
package main

import "fmt"

/*
@author RandySun
@create 2021-11-03-8:00
*/
type Student struct {
	id    int
	name  string
	class string
}

// 学生信息初始化
func NewStudent(id int, name, class string) *Student {
	return &Student{id, name, class}
}

type StudentMgr struct {
	allStudent []*Student
}

// 初始化
func NewStudentMgr() *StudentMgr {
	return &StudentMgr{
		allStudent: make([]*Student, 0, 10),
	}

}

// 添加学生
func (sMgr *StudentMgr) addStudent(student *Student) {
	// StudentMgr要定义指针接收者
	for _, stu := range sMgr.allStudent {
		if stu.id == student.id {
			fmt.Println("添加学员已经存在,请输入其他同学信息!")
			return
		}
	}
	sMgr.allStudent = append(sMgr.allStudent, student)
	fmt.Println("添加成功")
}

// 修改学生
func (sMgr *StudentMgr) modifyStudent(student *Student) {
	// StudentMgr要定义指针接收者
	for index, stu := range sMgr.allStudent {
		if stu.id == student.id {
			sMgr.allStudent[index] = student
			fmt.Println("修改成功")
			return
		}
	}
	fmt.Println("学生信息不存在,请添加学员信息")
}

// 删除学生
func (sMgr *StudentMgr) deleteStudent(id int) {
	if len(sMgr.allStudent) == 0 {
		fmt.Println("学员信息为空")
		return
	}
	// StudentMgr要定义指针接收者
	for index, stu := range sMgr.allStudent {
		if stu.id == id {
			endIndex := index + 1
			sMgr.allStudent = append(sMgr.allStudent[:index], sMgr.allStudent[endIndex:]...)
			fmt.Println("删除成功")
			return
		}
	}
	fmt.Println("学生信息不存在,请添加学员信息")
}

// 展示学生信息
func (sMgr StudentMgr) showStudent() {
	if len(sMgr.allStudent) == 0 {
		fmt.Println("学员信息为空")
		return
	}
	for _, stu := range sMgr.allStudent {
		fmt.Printf("学生编号: %d 学生姓名: %s 学生班级: %s\n", stu.id, stu.name, stu.class)
	}
}

// core.go文件
package main

import "fmt"

/*
@author RandySun
@create 2021-11-04-8:38
*/
// 学生管理系统

// 1. 添加学员
// 2. 编辑学员
// 3. 删除学员
// 4. 展示学员

func inputStudentInfo() *Student {
	var id int
	var name string
	var class string

	fmt.Printf("请输入学生编号:")
	fmt.Scanf("%d\n", &id)
	fmt.Printf("请输入学生姓名:")
	fmt.Scanf("%s\n", &name)
	fmt.Printf("请输入学生班级:")
	fmt.Scanf("%s\n", &class)

	return NewStudent(id, name, class)
}

func inputStudentId() int{
	var id int

	fmt.Printf("请输入学生编号:")
	fmt.Scanf("%d\n", &id)
	return id
}
func showMenu() {
	fmt.Println(" 1. 添加学员")
	fmt.Println(" 2. 编辑学员")
	fmt.Println(" 3. 删除学员")
	fmt.Println(" 4. 展示学员")

}

func Run() {
	var stuMgr = NewStudentMgr()
	for {
		fmt.Println("欢迎来到学生管理系统")
		showMenu()
		fmt.Printf("请输入操作编号:")
		var choice int
		fmt.Scanf("%d\n", &choice)
		switch choice {
		case 1:
			// 添加信息
			stu := inputStudentInfo()
			stuMgr.addStudent(stu)
		case 2:
			// 修改学生信息
			stuMgr.showStudent()
			stu := inputStudentInfo()
			stuMgr.modifyStudent(stu)
		case 3:
			// 删除信息
			stuMgr.showStudent()
			id := inputStudentId()
			stuMgr.deleteStudent(id)
		case 4:
			// 展示学生信息
			stuMgr.showStudent()
		default:
			fmt.Println("请选择已有功能")
		}
	}

}

// main.go文件
package main

/*
@author RandySun
@create 2021-11-03-8:00
*/


func main() {
	Run()
}

三、效果

image-20211104090835371

posted @ 2021-11-06 20:45  RandySun  阅读(127)  评论(0编辑  收藏  举报