Golang-简单的学生管理系统的实现

简介: 简单的学生管理系统的实现

1. 编写 main.go 程序

package main

import (
    "fmt"
    "os"
)

var smr stuMgr //声明一个全局的全局变量学生管理smr

// 菜单函数

func showMenu() {
    fmt.Println("------------Welcome to sms!---------------")
    fmt.Println(`
    1. 查看所有学生
    2. 添加学生
    3. 删除学生
    4. 修改学生姓名
    5. 退出
    `)
}

func main() {

    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 程序

package main

import "fmt"

// 学生管理系统
// 有一个物件:
// 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. 编译并执行



目录
相关文章
|
Unix Go
Golang 语言中怎么拦截系统信号和优雅退出 http server?
Golang 语言中怎么拦截系统信号和优雅退出 http server?
91 0
|
4月前
|
Go 开发者
|
5月前
|
自然语言处理 Go 数据处理
云计算自旋锁问题之引入Golang插件系统后iLogtail的输入输出通道和处理能力如何解决
云计算自旋锁问题之引入Golang插件系统后iLogtail的输入输出通道和处理能力如何解决
40 1
|
7月前
|
Go
第十三章 Golang客户信息关系系统
第十三章 Golang客户信息关系系统
63 3
|
7月前
|
存储 缓存 Go
Golang底层原理剖析之类型系统,接口与类型断言
Golang底层原理剖析之类型系统,接口与类型断言
96 2
|
Linux Go API
【Golang 快速入门】项目实战:即时通信系统
Golang 实战之即时通信系统 服务端版本一:构建基础 Server 版本二:用户上线功能 版本三:用户消息广播机制 版本四:用户业务层封装 版本五:在线用户查询 版本六:修改用户名 版本七:超时强退功能 版本八:私聊功能
430 0
【Golang 快速入门】项目实战:即时通信系统
|
Go 调度 数据库
Golang:gocron定时任务管理系统的安装与使用
Golang:gocron定时任务管理系统的安装与使用
544 0
Golang:gocron定时任务管理系统的安装与使用
|
小程序 Java Go
用golang实现一个小程序商城后台系统(moshopserver)
用golang实现一个小程序商城后台系统(moshopserver) golang和c/c++比起来是一门新的语言,一直想学,网上搜集了一些资料,有些人说很容易上手,确实是这样,和C/C++比起来,少了很多乱七八糟的语法。
3050 0
用golang实现一个小程序商城后台系统(moshopserver)
|
前端开发 JavaScript IDE
千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)
我曾经多次向人推荐Vim,其热情程度有些类似现在卖保险的,有的时候,人们会因为一些弥足珍贵的美好暗暗渴望一个巨大的负面,比如因为想重温手动挡的快乐而渴望买下一辆二十万公里的老爷车,比如因为所谓完美的音质而舍不得一个老旧的有线耳机,比如因为一个铜炉火锅而期待北京那漫长而寒冷的冬天。
千姿百态,瞬息万变,Win11系统NeoVim打造全能/全栈编辑器(前端/Css/Js/Vue/Golang/Ruby/ChatGpt)
|
Go iOS开发 MacOS
Win11系统下搭建Go lang开发环境更换国内源并且体验宇宙最快框架Iris
最近有同学开始尝试接触Go lang,拥抱新技术永远都会是一个好习惯,之前的一篇文章介绍了[如何在Mac os系统下配置Go lang开发环境](https://v3u.cn/a_id_88),这次我们在Win10系统下进行配置,并且更换国内的安装源,最后再和“全宇宙最快的web框架”--Iris亲密接触一下,对于Iris可能很多朋友并不熟悉,一般Go lang在web开发领域相对著名的框架比如Beego或者Gin都名声在外,这里推荐Iris的原因也并不是因为它源于古希腊女神(彩虹女神)的炫酷名字,而是因为它在goroutine的加持下强大的Go http server的性能。
Win11系统下搭建Go lang开发环境更换国内源并且体验宇宙最快框架Iris