Go语言实战案例-使用map实现学生成绩管理
以下是《Go语言100个实战案例》中的 数据结构与算法篇 - 案例22:使用 map 实现学生成绩管理系统 的完整内容,帮助初学者掌握 map
的使用方式和基础数据管理逻辑。
🎯 案例目标
使用 Go 的 map
数据结构,创建一个简单的学生成绩管理系统,实现添加学生成绩、查询成绩、删除成绩、以及打印所有成绩信息。
🧩 应用场景
- • 模拟学生成绩录入与管理系统
- • 学习
map
的基本操作(增删改查) - • 为将来开发更复杂的数据库系统打基础
🧠 涉及知识点
- •
map[string]float64
的定义与使用 - • 控制结构(
switch
、for
、if
) - •
bufio
与os.Stdin
获取用户输入
💻 示例代码:学生成绩管理系统
package mainimport ( \"bufio\" \"fmt\" \"os\" \"strconv\" \"strings\")func main() { // 学生成绩表:key 是学生姓名,value 是成绩 scores := make(map[string]float64) reader := bufio.NewReader(os.Stdin) for { fmt.Println(\"\\n=== 学生成绩管理系统 ===\") fmt.Println(\"1. 添加成绩\") fmt.Println(\"2. 查询成绩\") fmt.Println(\"3. 删除学生\") fmt.Println(\"4. 显示所有成绩\") fmt.Println(\"5. 退出系统\") fmt.Print(\"请选择操作(1-5):\") input, _ := reader.ReadString(\'\\n\') choice := strings.TrimSpace(input) switch choice { case \"1\": fmt.Print(\"请输入学生姓名:\") name, _ := reader.ReadString(\'\\n\') name = strings.TrimSpace(name) fmt.Print(\"请输入成绩(0-100):\") scoreStr, _ := reader.ReadString(\'\\n\') scoreStr = strings.TrimSpace(scoreStr) score, err := strconv.ParseFloat(scoreStr, 64) if err != nil || score 100 { fmt.Println(\"成绩输入不合法\") continue } scores[name] = score fmt.Printf(\"已添加 %s 的成绩:%.2f\\n\", name, score) case \"2\": fmt.Print(\"请输入要查询的学生姓名:\") name, _ := reader.ReadString(\'\\n\') name = strings.TrimSpace(name) score, exists := scores[name] if exists { fmt.Printf(\"%s 的成绩是:%.2f\\n\", name, score) } else { fmt.Println(\"查无此人\") } case \"3\": fmt.Print(\"请输入要删除的学生姓名:\") name, _ := reader.ReadString(\'\\n\') name = strings.TrimSpace(name) _, exists := scores[name] if exists { delete(scores, name) fmt.Println(\"删除成功\") } else { fmt.Println(\"查无此人\") } case \"4\": fmt.Println(\"当前所有学生成绩如下:\") if len(scores) == 0 { fmt.Println(\"暂无数据\") } for name, score := range scores { fmt.Printf(\"%s:%.2f\\n\", name, score) } case \"5\": fmt.Println(\"退出系统,再见!\") return default: fmt.Println(\"无效的选择,请输入1-5\") } }}
🛠 技术说明
map
bufio.NewReader
strconv.ParseFloat
delete(map, key)
📌 示例运行(片段)
=== 学生成绩管理系统 ===1. 添加成绩2. 查询成绩3. 删除学生4. 显示所有成绩5. 退出系统请选择操作(1-5):1请输入学生姓名:Alice请输入成绩(0-100):87.5已添加 Alice 的成绩:87.50请选择操作(1-5):2请输入要查询的学生姓名:AliceAlice 的成绩是:87.50
🧪 拓展练习
- • 添加“修改成绩”功能
- • 支持成绩排序输出(从高到低)
- • 使用
struct
扩展为包含“班级”、“学号”等信息 - • 将成绩保存到文件,实现持久化存储
✅ 小结
本案例帮助你熟悉 Go 语言中 map
的实际应用,并通过模拟一个小型的成绩管理系统,锻炼了输入处理、数据操作和交互式控制逻辑。是掌握数据结构基础的必修内容。