简易的学员信息管理系统
本地的,在命令行模式下下的,一个练手小demo。
需求:
- 添加学员信息
- 编辑学员信息
- 展示所有学员信息
成果展示:
1、创建 stuMgr 项目
mkdir stuMgr
go mod init stuMgr
touch main.go
touch student.go
2、student.go代码
package main
import "fmt"
// Student类型 存放学生信息数据结构
type Student struct {
Id int // 学号
Name string // 姓名
Class string // 班级
}
// 生成一个新学员实例的构造函数
func newStudent(id int, name string, class string) *Student { // 返回的是一个结构体类型的指针
return &Student{
Id: id,
Name: name,
Class: class,
}
}
// StudentMgr类型 存放所有学员数据
type StudentMgr struct {
allStudents []*Student // 字段的数据是一个切片,切片的值是Student结构体类型的指针
}
// 初始化一个StudentMgr结构体实例
func newStudentMgr() *StudentMgr {
return &StudentMgr{
allStudents: make([]*Student, 0, 100),
}
}
// 1. 添加学员方法
func (s *StudentMgr) addStudent(student *Student) {
s.allStudents = append(s.allStudents, student)
}
// 2. 编辑学员
func (s *StudentMgr) modifyStudent(student *Student) {
for idx, stu := range s.allStudents {
if stu.Id == student.Id {
s.allStudents[idx] = student
return
}
}
fmt.Printf("系统中不存在%d学号的学生\n", student.Id)
}
// 3. 展示所有学员
func (s *StudentMgr) showAllStudents() {
for _, stu := range s.allStudents {
fmt.Printf("学号:%d, 姓名:%s, 班级:%s\n", stu.Id, stu.Name, stu.Class)
}
}
3、main.go代码
package main
import (
"fmt"
"os"
)
func showMenu() {
fmt.Println("**************************")
fmt.Println("欢迎来到学员信息管理系统")
fmt.Println("1. 添加学员")
fmt.Println("2. 编辑学员")
fmt.Println("3. 展示所有学员")
fmt.Println("4. 退出系统")
fmt.Println("**************************")
}
// 接收用户输入的学生参数,并生成一个学生结构体的实例
func getStuInfo() *Student {
var (
Id int
Name string
Class string
)
fmt.Print("请输入学号:")
fmt.Scanf("%d\n", &Id)
fmt.Print("请输入姓名:")
fmt.Scanf("%s\n", &Name)
fmt.Print("请输入班级:")
fmt.Scanf("%s\n", &Class)
return &Student{
Id: Id,
Name: Name,
Class: Class,
}
}
func main() {
// 提前生成学员管理实例,方便下面循环中使用
stuMgrInstance := newStudentMgr()
for { // 为了避免执行一次命令后,程序直接退出
// 1. 打印系统操作菜单
showMenu()
// 2. 接收用户输入的参数
var input int
fmt.Printf("请输入您的选项:")
fmt.Scanf("%d\n", &input) // 注意这里 \n 不要漏了
fmt.Printf("你输入的选项是:%d\n", input)
// 3. 根据用户的选项,执行具体的动作
switch input {
case 1:
// 添加学员
// 此时应该打印让用户输入学员信息的提示文本,然后生成一个学员结构体类型的实例,最后调用学生管理的添加方法
stuMgrInstance.addStudent(getStuInfo())
case 2:
// 编辑学员
stuMgrInstance.modifyStudent(getStuInfo())
case 3:
// 展示学员
stuMgrInstance.showAllStudents()
case 4:
// 退出系统
os.Exit(0)
}
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接