golang 学生管理系统

golang 学生管理系统

golang 结构体之学生管理系统

1、题目要求

使用golang结构体完成一个简易版学生管理系统的开发,要求满足提供用户选择操作菜单,进入到对应菜单中的功能,完成对数据的增删改查。

2、思路分析

2.1 结构

main.gostuManager.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("输入异常!!!")
}
}
}

main

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"

/* 学生管理系统
1、他保存了一些数据(结构体字段)
2、他有四个功能(结构体方法) */

type student struct {
id int64
name string
}

// 造一个学生管理者
type stuManager struct {
allStu map[int64]student
}

// 四个方法,学生的增删改查

// 增加学生
func (s stuManager) addStu() {
// 根据用户输入的内容创建一个新的学生 将该学生放入map中
var (
stuID int64
stuName string
)
// 获取用户输入
fmt.Print("请输入学号:")
fmt.Scanln(&stuID)
fmt.Print("请输入姓名:")
fmt.Scanln(&stuName)

// 根据用户输入创造结构体对象
newStu := student{
id: stuID,
name: stuName,
}
// 把新的学生放到s.allStu这个map中
s.allStu[newStu.id] = newStu
}

// 删除学生
func (s stuManager) delStu() {
/* 1.获取用户输入的学号
2.如果查询不到输出查无此人
3.如果匹配到用户数据执行删除操作 */
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() {
/* 1.获取用户输入的学号
2.展示该学号对应的学生,如没有输出查无此人
3.让用户输入修改后的学生名字
4.更新学生的姓名 */
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() {
// 从s.allStu中把所有的学生遍历出来
for _, stu := range s.allStu { // stu=每个 学生
fmt.Printf("学号%d 姓名%s\n", stu.id, stu.name)
}
}

stuManager

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×