学完之后,章节练习:

1、基于函数版本的学生成绩管理系统。

image.png
image.png

2、答案代码

  1. package main
  2. import (
  3. fmt "fmt"
  4. )
  5. func addScore() {
  6. // 输入学号和姓名
  7. var sid, name string
  8. fmt.Println("请分别输入学号和姓名,以空格隔开.如:1001 yuan")
  9. fmt.Scan(&sid, &name)
  10. _, isExist := data[sid]
  11. if isExist {
  12. fmt.Println("该学生已经存在!")
  13. } else {
  14. // 输入成绩
  15. var chinese, math, english string
  16. fmt.Println("请分别输入语数英成绩,以空格隔开.如:100 90 80")
  17. fmt.Scan(&chinese, &math, &english)
  18. // fmt.Println(chinese, math, english)
  19. // 添加学生到data中
  20. data[sid] = map[string]string{
  21. "sid": sid,
  22. "name": name,
  23. "chinese": chinese,
  24. "math": math,
  25. "english": english,
  26. }
  27. fmt.Println("添加成功")
  28. }
  29. }
  30. func checkScore() {
  31. fmt.Println("****************************************************************************")
  32. for _, stu := range data {
  33. fmt.Printf("学号:%-8s 姓名:%-8s 语文成绩:%-8s 数学成绩:%-8s 英语成绩:%-8s",
  34. stu["sid"], stu["name"], stu["chinese"], stu["math"], stu["english"])
  35. fmt.Println()
  36. }
  37. fmt.Println("****************************************************************************")
  38. }
  39. func updateScore() {
  40. var updateSid string
  41. fmt.Println("请输入更新学生成绩学号")
  42. fmt.Scan(&updateSid)
  43. updateStu, isExist := data[updateSid]
  44. if isExist {
  45. // 输入成绩
  46. var chinese, math, english string
  47. fmt.Println("请分别输入语数英成绩,以空格隔开.如:100 90 80")
  48. fmt.Scan(&chinese, &math, &english)
  49. // 更新data中的学生
  50. updateStu["chinese"] = chinese
  51. updateStu["math"] = math
  52. updateStu["english"] = english
  53. fmt.Println("更新成功!")
  54. } else {
  55. fmt.Println("不存在该学生!")
  56. }
  57. }
  58. func deleteScore() {
  59. var delSid string
  60. fmt.Println("请输入删除学生成绩学号")
  61. fmt.Scan(&delSid)
  62. delete(data, delSid)
  63. fmt.Println("删除成功!")
  64. }
  65. var data = make(map[string]map[string]string)
  66. func main() {
  67. for true {
  68. fmt.Print(`
  69. 1、添加学生成绩
  70. 2、查看学生成绩
  71. 3、更新学生成绩
  72. 4、删除学生成绩
  73. `)
  74. var choice int
  75. fmt.Print("请输入选择:")
  76. //stdin := bufio.NewReader(os.Stdin)
  77. //fmt.Fscan(stdin,&choice)
  78. fmt.Scanln(&choice)
  79. switch choice {
  80. case 1:
  81. addScore()
  82. case 2:
  83. checkScore()
  84. case 3:
  85. updateScore()
  86. case 4:
  87. deleteScore()
  88. default:
  89. fmt.Println("非法输入!")
  90. }
  91. }
  92. }