Go语言学习基础-学生管理系统的实现

Posted 甲三

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言学习基础-学生管理系统的实现相关的知识,希望对你有一定的参考价值。

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. 编译并执行



以上是关于Go语言学习基础-学生管理系统的实现的主要内容,如果未能解决你的问题,请参考以下文章

go语言实现学生管理系统

go语言实现简单的学生管理系统

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

Go语言基础之切片

GO语言编程基础-复合类型结构体

Golang学习之路:结合GO+的学生管理系统