Go语言基础之结构体练习
Go语言基础之结构体练习
一、创建目录结构
二、实现功能
// 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()
}
三、效果
在当下的阶段,必将由程序员来主导,甚至比以往更甚。