Go语言学习笔记十八-练习篇-Go语言版学生信息管理系统

练习篇-Go语言版简单学生信息管理系统

  1 package main
  2 
  3 import (
  4     "fmt"
  5     "os"
  6 )
  7 
  8 //怎么又是学生信息管理系统
  9 //学生类
 10 type Student struct {
 11     StuId string
 12     StuName string
 13     StuGrade string
 14     StuScore float32
 15 }
 16 //学生构造函数
 17 func NewStudent(id string,name string,grade string,score float32) *Student {
 18     newStu := new(Student)
 19     newStu.StuId = id
 20     newStu.StuName = name
 21     newStu.StuGrade = grade
 22     newStu.StuScore = score
 23     return newStu
 24 }
 25 //定义学生的全局变量
 26 var AllStu = make(map[string]Student,100)
 27 
 28 func Menu()  {
 29     fmt.Println("------------------学生信息管理系统------------------")
 30     fmt.Println("------------------1、添加学生----------------------")
 31     fmt.Println("------------------2、修改学生信息-------------------")
 32     fmt.Println("------------------3、查找学生----------------------")
 33     fmt.Println("------------------4、学生信息展示-------------------")
 34     fmt.Println("------------------0、退出系统----------------------")
 35     fmt.Println("-------------------------------------------------")
 36 }
 37 
 38 func AddStu()  {
 39     var id string
 40     var name string
 41     var grade string
 42     var score float32
 43     fmt.Print("请输入id: ")
 44     fmt.Scanf("%s\n",&id)
 45     fmt.Print("请输入姓名: ")
 46     fmt.Scanf("%s\n",&name)
 47     fmt.Print("请输出年级: ")
 48     fmt.Scanf("%s\n",&grade)
 49     fmt.Print("请输入分数: ")
 50     fmt.Scanf("%f\n",&score)
 51     newStu := NewStudent(id,name,grade,score)
 52     fmt.Println(newStu)
 53     //所有学生加入学生对象
 54     AllStu[newStu.StuId] = *newStu
 55     fmt.Println("添加成功!")
 56 }
 57 func SearchStu(id string) bool {
 58     value,ok := AllStu[id]
 59     if ok  {
 60         fmt.Println("查找到了该学生!")
 61         fmt.Printf("学号:%s  姓名:%s  年级:%s  分数:%.2f\n\n",
 62             value.StuId,value.StuName,value.StuGrade,value.StuScore)
 63         return ok
 64     } else {
 65         fmt.Println("没有该学生!")
 66         return false
 67     }
 68 }
 69 func ModifyStu()  {
 70     var id string
 71     fmt.Print("请输出你要查找的学生的学号:")
 72     fmt.Scanf("%s\n",&id)
 73     res := SearchStu(id)
 74     if res {
 75         var id string
 76         var name string
 77         var grade string
 78         var score float32
 79         fmt.Print("请输入id: ")
 80         fmt.Scanf("%s\n",&id)
 81         fmt.Print("请输入姓名: ")
 82         fmt.Scanf("%s\n",&name)
 83         fmt.Print("请输出年级: ")
 84         fmt.Scanf("%s\n",&grade)
 85         fmt.Print("请输入分数: ")
 86         fmt.Scanf("%f\n",&score)
 87         newStu := NewStudent(id,name,grade,score)
 88         AllStu[id] = *newStu
 89         fmt.Println("修改成功!")
 90     }
 91 }
 92 
 93 func ShowStu()  {
 94     for _, value := range AllStu {
 95         fmt.Printf("学号:%s  姓名:%s  年级:%s  分数:%.2f\n\n",
 96             value.StuId,value.StuName,value.StuGrade,value.StuScore)
 97     }
 98 }
 99 func main() {
100     for {
101         Menu()
102         var opt int
103         var id string
104         fmt.Println("请输入你的操作")
105         fmt.Scanf("%d\n",&opt)
106         switch opt {
107         case 1:
108             AddStu()
109         case 2:
110             ModifyStu()
111         case 3:
112             fmt.Print("请输出你要查找的学生的学号:")
113             fmt.Scanf("%s\n",&id)
114             SearchStu(id)
115         case 4:
116             ShowStu()
117         case 0:
118             os.Exit(0)
119         default:
120             fmt.Println("输入错误!请重新输入")
121 
122         }
123     }
124     
125 }