golang 结构体之学生管理系统
1、题目要求
使用golang结构体完成一个简易版学生管理系统的开发,要求满足提供用户选择操作菜单,进入到对应菜单中的功能,完成对数据的增删改查。
2、思路分析
2.1 结构
main.go
、stuManager.go
前者为程序主入口,后者为对学生各种操作函数的定义及业务功能的实现。
2.2 main.go解析
1、声明全局的学生管理对象
2、菜单函数
3、main函数,for循环获取用户输入功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| package main
import ( "fmt" "os" )
var smr stuManager
func menu() { fmt.Println("--------------欢迎使用学生管理系统-------------") fmt.Println(` 1.查看所有学生 2.添加学生 3.修改学生 4.删除学生 5.退出系统 `) }
func main() { var smr = stuManager{ allStu: make(map[int64]student, 100), } for { menu() fmt.Println("请输入序号:") var chioce int fmt.Scan(&chioce) fmt.Println("你输入的是:", chioce) switch chioce { case 1: smr.queryStu() case 2: smr.addStu() case 3: smr.updateStu() case 4: smr.delStu() case 5: os.Exit(1) default: fmt.Println("输入异常!!!") } } }
|
2.3 stuManager.go解析
学生管理系统
1、他保存了一些数据(结构体字段)
2、他有四个功能(结构体方法)
3、创建学生类型的结构体
4、创建一个学生管理者
5、定义对学生增删改查的四个方法并实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| package main
import "fmt"
type student struct { id int64 name string }
type stuManager struct { allStu map[int64]student }
func (s stuManager) addStu() { var ( stuID int64 stuName string ) fmt.Print("请输入学号:") fmt.Scanln(&stuID) fmt.Print("请输入姓名:") fmt.Scanln(&stuName)
newStu := student{ id: stuID, name: stuName, } s.allStu[newStu.id] = newStu }
func (s stuManager) delStu() {
var stuID int64 fmt.Print("请输入要删除学生的学号:") fmt.Scanln(&stuID) _, ok := s.allStu[stuID] if !ok { fmt.Println("查无此人!!!") return } delete(s.allStu, stuID) fmt.Println("删除成功!") }
func (s stuManager) updateStu() {
var stuID int64 fmt.Print("请输入学生学号:") fmt.Scanln(&stuID) stuObj, ok := s.allStu[stuID] if !ok { fmt.Println("查无此人!") return } fmt.Printf("你要修改的学生信息如下:学号:%d 姓名:%s\n", stuObj.id, stuObj.name) fmt.Print("请输入修改后的学生姓名:") var newName string fmt.Scanln(&newName) stuObj.name = newName s.allStu[stuID] = stuObj }
func (s stuManager) queryStu() { for _, stu := range s.allStu { fmt.Printf("学号%d 姓名%s\n", stu.id, stu.name) } }
|