学完之后,章节练习:
1、基于函数版本的学生成绩管理系统。

2、答案代码
package main
import (
fmt "fmt"
)
func addScore() {
// 输入学号和姓名
var sid, name string
fmt.Println("请分别输入学号和姓名,以空格隔开.如:1001 yuan")
fmt.Scan(&sid, &name)
_, isExist := data[sid]
if isExist {
fmt.Println("该学生已经存在!")
} else {
// 输入成绩
var chinese, math, english string
fmt.Println("请分别输入语数英成绩,以空格隔开.如:100 90 80")
fmt.Scan(&chinese, &math, &english)
// fmt.Println(chinese, math, english)
// 添加学生到data中
data[sid] = map[string]string{
"sid": sid,
"name": name,
"chinese": chinese,
"math": math,
"english": english,
}
fmt.Println("添加成功")
}
}
func checkScore() {
fmt.Println("****************************************************************************")
for _, stu := range data {
fmt.Printf("学号:%-8s 姓名:%-8s 语文成绩:%-8s 数学成绩:%-8s 英语成绩:%-8s",
stu["sid"], stu["name"], stu["chinese"], stu["math"], stu["english"])
fmt.Println()
}
fmt.Println("****************************************************************************")
}
func updateScore() {
var updateSid string
fmt.Println("请输入更新学生成绩学号")
fmt.Scan(&updateSid)
updateStu, isExist := data[updateSid]
if isExist {
// 输入成绩
var chinese, math, english string
fmt.Println("请分别输入语数英成绩,以空格隔开.如:100 90 80")
fmt.Scan(&chinese, &math, &english)
// 更新data中的学生
updateStu["chinese"] = chinese
updateStu["math"] = math
updateStu["english"] = english
fmt.Println("更新成功!")
} else {
fmt.Println("不存在该学生!")
}
}
func deleteScore() {
var delSid string
fmt.Println("请输入删除学生成绩学号")
fmt.Scan(&delSid)
delete(data, delSid)
fmt.Println("删除成功!")
}
var data = make(map[string]map[string]string)
func main() {
for true {
fmt.Print(`
1、添加学生成绩
2、查看学生成绩
3、更新学生成绩
4、删除学生成绩
`)
var choice int
fmt.Print("请输入选择:")
//stdin := bufio.NewReader(os.Stdin)
//fmt.Fscan(stdin,&choice)
fmt.Scanln(&choice)
switch choice {
case 1:
addScore()
case 2:
checkScore()
case 3:
updateScore()
case 4:
deleteScore()
default:
fmt.Println("非法输入!")
}
}
}