GO语言学习基础-学生管理系统的实现
2021-05-28 18:04
标签:保存 exit 函数 数据 uid 思维 对象 编程 pac ` import ( var smr stuMgr //声明一个全局的全局变量学生管理smr // 菜单函数 func showMenu() { func main() { } `package main import "fmt" // 学生管理系统 // 定义学生结构体 // 造一个学生的管理者 // 查看所有学生 // 增加学生 // 编辑学生 // 删除学生 GO语言学习基础-学生管理系统的实现 标签:保存 exit 函数 数据 uid 思维 对象 编程 pac 原文地址:https://www.cnblogs.com/ofjiasan/p/14775469.html1. 编写 main.go 程序
package main
"fmt"
"os"
)
fmt.Println("------------Welcome to sms!---------------")
fmt.Println( 1. 查看所有学生 2. 添加学生 3. 删除学生 4. 修改学生姓名 5. 退出
)
}smr = stuMgr{
allStudent: make(map[int64]student, 100),
}
for {
showMenu()
fmt.Print("请输入操作(1 2 3 4):")
var choice int
fmt.Scanln(&choice)
fmt.Printf("你输入的是:%d", choice)
switch choice {
case 1:
smr.showStudent()
case 2:
smr.addStudent()
case 3:
smr.editStudent()
case 4:
smr.delStudent()
case 5:
os.Exit(1)
default:
fmt.Println("输入错误!")
}
}
`2. 编写 student_mgr.go 程序
// 有一个物件:
// 1. 它保存了一些数据 ---> 结构体的字段
// 2. 他有三个功能 ---> 结构体的方法 :面向对象编程语言的思维
type student struct {
id int64
name string
}
type stuMgr struct {
allStudent map[int64]student
}
func (s stuMgr) showStudent() {
// 遍历s.allStudent
for _, v := range s.allStudent { // v是具体某个学生
fmt.Printf("学号:%d 姓名:%s\n", v.id, v.name)
}
}
func (s stuMgr) addStudent() {
// 1. 根据用户输入的内容新建一个学生
// 2. 追加数据
var (
id int64
name string
)
// 获取用户输入
fmt.Print("请输入学号:")
fmt.Scanln(&id)
fmt.Print("请输入学生姓名:")
fmt.Scanln(&name)
newStu := student{
id: id,
name: name,
}
s.allStudent[newStu.id] = newStu
fmt.Println("添加成功!")
}
func (s stuMgr) editStudent() {
// 1. 获取用户输入的ID
// 2. 展示学号对应的学生信息,如果没有提示查无此人
// 3. 请输入修改后的学生名
// 4. 更新
var stuid int64
fmt.Print("请输入学生学号:")
fmt.Scanln(&stuid)
stuobj, ok := s.allStudent[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.allStudent[stuid] = stuobj //更新值
fmt.Println("修改成功!")
}
func (s stuMgr) delStudent() {
//1. 请用户输入要删除学生的ID
//2. 找学生,如果没有,打印查无此人
//3. 执行删除操作
fmt.Print("请输入要删除学生的学号:")
var stuid int64
fmt.Scanln(&stuid)
_, ok := s.allStudent[stuid]
if !ok {
fmt.Println("查无此人!")
return
}
delete(s.allStudent, stuid)
fmt.Println("删除成功!")
}
`3. 编译并执行
下一篇:找出元素在排序后数组中的索引