Skip to content

项目 1:控制台版学生管理系统

增删改查学生信息

功能需求

  • 添加学生信息
  • 查询学生信息
  • 修改学生信息
  • 删除学生信息
  • 显示所有学生信息

数据结构设计

go
type Student struct {
    ID    int
    Name  string
    Age   int
    Score float64
}

切片 / Map 存储数据

使用切片存储

go
var students []Student

使用 Map 存储

go
var students map[int]Student

菜单交互

完整代码

go
package main

import (
    "fmt"
    "os"
)

type Student struct {
    ID    int
    Name  string
    Age   int
    Score float64
}

var students []Student
var nextID = 1

func main() {
    for {
        showMenu()
        var choice int
        fmt.Print("请选择操作: ")
        fmt.Scan(&choice)
        
        switch choice {
        case 1:
            addStudent()
        case 2:
            queryStudent()
        case 3:
            modifyStudent()
        case 4:
            deleteStudent()
        case 5:
            showAllStudents()
        case 6:
            fmt.Println("退出系统")
            os.Exit(0)
        default:
            fmt.Println("无效选择,请重新输入")
        }
        fmt.Println()
    }
}

func showMenu() {
    fmt.Println("============= 学生管理系统 ============")
    fmt.Println("1. 添加学生")
    fmt.Println("2. 查询学生")
    fmt.Println("3. 修改学生")
    fmt.Println("4. 删除学生")
    fmt.Println("5. 显示所有学生")
    fmt.Println("6. 退出系统")
    fmt.Println("======================================")
}

func addStudent() {
    var name string
    var age int
    var score float64
    
    fmt.Print("请输入学生姓名: ")
    fmt.Scan(&name)
    fmt.Print("请输入学生年龄: ")
    fmt.Scan(&age)
    fmt.Print("请输入学生成绩: ")
    fmt.Scan(&score)
    
    student := Student{
        ID:    nextID,
        Name:  name,
        Age:   age,
        Score: score,
    }
    
    students = append(students, student)
    nextID++
    fmt.Println("学生添加成功!")
}

func queryStudent() {
    var id int
    fmt.Print("请输入学生ID: ")
    fmt.Scan(&id)
    
    for _, s := range students {
        if s.ID == id {
            fmt.Printf("ID: %d, 姓名: %s, 年龄: %d, 成绩: %.2f\n", s.ID, s.Name, s.Age, s.Score)
            return
        }
    }
    fmt.Println("未找到该学生")
}

func modifyStudent() {
    var id int
    fmt.Print("请输入学生ID: ")
    fmt.Scan(&id)
    
    for i, s := range students {
        if s.ID == id {
            var name string
            var age int
            var score float64
            
            fmt.Print("请输入新的姓名: ")
            fmt.Scan(&name)
            fmt.Print("请输入新的年龄: ")
            fmt.Scan(&age)
            fmt.Print("请输入新的成绩: ")
            fmt.Scan(&score)
            
            students[i] = Student{
                ID:    id,
                Name:  name,
                Age:   age,
                Score: score,
            }
            fmt.Println("学生信息修改成功!")
            return
        }
    }
    fmt.Println("未找到该学生")
}

func deleteStudent() {
    var id int
    fmt.Print("请输入学生ID: ")
    fmt.Scan(&id)
    
    for i, s := range students {
        if s.ID == id {
            students = append(students[:i], students[i+1:]...)
            fmt.Println("学生删除成功!")
            return
        }
    }
    fmt.Println("未找到该学生")
}

func showAllStudents() {
    if len(students) == 0 {
        fmt.Println("暂无学生信息")
        return
    }
    
    fmt.Println("============= 学生列表 ============")
    for _, s := range students {
        fmt.Printf("ID: %d, 姓名: %s, 年龄: %d, 成绩: %.2f\n", s.ID, s.Name, s.Age, s.Score)
    }
    fmt.Println("===================================")
}

运行效果

============= 学生管理系统 ============
1. 添加学生
2. 查询学生
3. 修改学生
4. 删除学生
5. 显示所有学生
6. 退出系统
======================================
请选择操作: 1
请输入学生姓名: Alice
请输入学生年龄: 20
请输入学生成绩: 95
学生添加成功!

============= 学生管理系统 ============
1. 添加学生
2. 查询学生
3. 修改学生
4. 删除学生
5. 显示所有学生
6. 退出系统
======================================
请选择操作: 5
============= 学生列表 ============
ID: 1, 姓名: Alice, 年龄: 20, 成绩: 95.00
===================================

© 2026 编程马·菜鸟教程 版权所有