首页 > 后端开发 > Golang > 正文

如何用Golang实现学生成绩管理系统_Golang数据增删改查与表格生成

P粉602998670
发布: 2025-12-16 22:08:06
原创
261人浏览过
答案:使用Golang通过定义Student结构体实现增删改查,利用切片存储数据,结合tablewriter库以表格形式输出学生成绩信息,包含ID、姓名、各科成绩及平均分,通过命令行交互完成操作。

如何用golang实现学生成绩管理系统_golang数据增删改查与表格生成

用Golang实现一个学生成绩管理系统,重点在于数据的增删改查(CRUD)操作和结果的可视化输出,比如以表格形式展示。Golang本身没有内置数据库或UI框架,但可以通过标准库和第三方包高效完成这些任务。下面一步步说明如何构建这样一个系统。

定义学生结构体与数据存储

首先定义一个Student结构体,包含学号、姓名、各科成绩等字段。使用切片(slice)作为临时数据存储,适合小型应用或演示。

示例代码:

type Student struct {
    ID     int
    Name   string
    Math   float64
    English float64
    Science float64
}

var students []Student
var nextID = 1
登录后复制

这里用全局变量students保存所有学生数据,nextID自动递增分配唯一ID。

立即学习go语言免费学习笔记(深入)”;

实现增删改查功能

围绕Student结构体实现四个核心操作:

  • 添加学生(Create):接收姓名和各科成绩,生成新ID并追加到切片。
  • 查询学生(Read):支持按ID查找单个学生,或返回全部学生列表。
  • 更新学生(Update):根据ID找到对应学生,修改其字段值。
  • 删除学生(Delete):通过ID定位并从切片中移除。

例如添加学生的函数:

func addStudent(name string, math, english, science float64) {
    student := Student{
        ID:      nextID,
        Name:    name,
        Math:    math,
        English: english,
        Science: science,
    }
    students = append(students, student)
    nextID++
}
登录后复制

删除操作需遍历查找索引并用切片操作移除:

MCP市场
MCP市场

中文MCP工具聚合与分发平台

MCP市场 211
查看详情 MCP市场
func deleteStudent(id int) bool {
    for i, s := range students {
        if s.ID == id {
            students = append(students[:i], students[i+1:]...)
            return true
        }
    }
    return false
}
登录后复制

使用第三方库生成表格

Golang标准库不提供表格渲染功能,推荐使用github.com/olekukonko/tablewriter格式化输出

安装方式:

go get github.com/olekukonko/tablewriter
登录后复制

将学生数据输出为表格:

func printStudents() {
    table := tablewriter.NewWriter(os.Stdout)
    table.SetHeader([]string{"ID", "Name", "Math", "English", "Science", "Average"})

    for _, s := range students {
        avg := (s.Math + s.English + s.Science) / 3
        table.Append([]string{
            strconv.Itoa(s.ID),
            s.Name,
            fmt.Sprintf("%.2f", s.Math),
            fmt.Sprintf("%.2f", s.English),
            fmt.Sprintf("%.2f", s.Science),
            fmt.Sprintf("%.2f", avg),
        })
    }
    table.Render()
}
登录后复制

运行后会在终端打印出对齐美观的表格,包含每名学生的平均分。

主程序与交互逻辑

使用fmt.Scanlnbufio.Scanner读取用户输入,驱动CRUD操作。

简单菜单示例:

func main() {
    for {
        fmt.Println("\n1. 添加学生")
        fmt.Println("2. 查看所有学生")
        fmt.Println("3. 更新学生")
        fmt.Println("4. 删除学生")
        fmt.Println("5. 退出")
        fmt.Print("选择操作: ")

        var choice int
        fmt.Scanln(&choice)

        switch choice {
        case 1:
            // 输入信息并调用addStudent
        case 2:
            printStudents()
        case 5:
            return
        default:
            fmt.Println("无效选项")
        }
    }
}
登录后复制

基本上就这些。通过结构体管理数据,手动实现CRUD逻辑,配合tablewriter输出表格,就能快速搭建一个命令行版学生成绩管理系统。后续可扩展文件持久化(如JSON)或接入SQLite数据库提升实用性。

以上就是如何用Golang实现学生成绩管理系统_Golang数据增删改查与表格生成的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号