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

2、答案代码
package mainimport ( 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("非法输入!") } }}