答案:使用Golang通过定义Student结构体实现增删改查,利用切片存储数据,结合tablewriter库以表格形式输出学生成绩信息,包含ID、姓名、各科成绩及平均分,通过命令行交互完成操作。

用Golang实现一个学生成绩管理系统,重点在于数据的增删改查(CRUD)操作和结果的可视化输出,比如以表格形式展示。Golang本身没有内置数据库或UI框架,但可以通过标准库和第三方包高效完成这些任务。下面一步步说明如何构建这样一个系统。
定义学生结构体与数据存储
首先定义一个Student结构体,包含学号、姓名、各科成绩等字段。使用切片(slice)作为临时数据存储,适合小型应用或演示。
示例代码:
type Student struct { ID int Name string Math float64 English float64 Science float64}var students []Studentvar 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++}
删除操作需遍历查找索引并用切片操作移除:
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.Scanln或bufio.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数据增删改查与表格生成的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1428882.html
微信扫一扫
支付宝扫一扫