简易学生管理系统——函数版

练习

需求:实现查看、新增、删除学生等功能。

函数版

package main

import (
	"fmt"
	"os"
)

/*
	函数版学生管理系统
	需求:实现查看、新增、删除学生功能
*/

type student struct {
	id   int64
	name string
}

var (
	allStu map[int64]*student // 变量声明
)

func newStudent(id int64, name string) *student {
	return &student{
		id:   id,
		name: name,
	}
}

func showStu() {
	// 打印所有学生清单
	for k, v := range allStu {
		fmt.Printf("学号:%d 姓名:%v\n", k, v.name)
	}
}

func addStu() {
	// 向stu中添加一个学生
	// 1. 创建一个新学生
	// 1.1 获取学生信息
	var (
		id   int64
		name string
	)
	fmt.Print("请输入学生学号:")
	fmt.Scanln(&id)
	fmt.Print("请输入学生姓名:")
	fmt.Scanln(&name)
	// 1.2 造学生(调用构造函数)
	newStu := newStudent(id, name)
	// 2. 追加到allStu
	allStu[id] = newStu
	showStu()
}

func delStu() {
	// 1. 请用户输入要删除学生的学号
	var (
		delId int64
	)
	fmt.Print("请输入学生学号:")
	fmt.Scanln(&delId)
	// 2. 去allStu这个map中根据学号删除对应的键值对
	delete(allStu, delId)
	showStu()
}

func main() {
	allStu = make(map[int64]*student, 48) // 初始化(开辟内存空间)
	// 1. 打印功能菜单
	fmt.Println("Welcome!")
	fmt.Println(`
		1. 查看所有学生
		2. 新增学生
		3. 删除学生
		4. 退出
	`)
	for {
		fmt.Print("请输入操作所对应编号:")
		// 2. 用户选择功能
		var choice int      // 找一个变量接收用户选择
		fmt.Scanln(&choice) // 等等用户输入
		fmt.Printf("您的选择是%d!\n", choice)
		// 3. 执行对应函数
		switch choice {
		case 1:
			showStu()
		case 2:
			addStu()
		case 3:
			delStu()
		case 4:
			os.Exit(1) // 退出
		default:
			fmt.Scanln("waiting...")
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值