简易的学员信息管理系统

学习地址

本地的,在命令行模式下下的,一个练手小demo。

需求:

  1. 添加学员信息
  2. 编辑学员信息
  3. 展示所有学员信息

成果展示:

简易的学员信息管理系统

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 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
躺平大叔 @ 躺平社区
文章
136
粉丝
15
喜欢
102
收藏
59
排名:274
访问:3.5 万
私信
所有博文
社区赞助商