其他分享
首页 > 其他分享> > Go语言学习基础-学生管理系统的实现

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



标签:语言,管理系统,stuid,fmt,学生,Println,Go,allStudent,name
来源: https://www.cnblogs.com/ofjiasan/p/14779285.html