【go基础】手撕一个学生管理系统

337 阅读1分钟

函数版学生管理系统,实现功能点:

  • 查看所有学生
  • 增加学生
  • 更新学生
  • 删除学生
package main

import (
	"fmt"
	"os"
	"strconv"
	"strings"
)
//函数版学生管理系统
/*
	1、查看所有学生
	2、增加学生
	3、更新学生
	4、删除学生

*/
type student struct {
	id int64
	name string
}
type studentMgr struct {
	allStudent map[int64]student
}

func (s studentMgr) showStudents()  {
	for _,v:=range s.allStudent{
		fmt.Printf("学号:%d,学生:%v\n",v.id,v.name)
	}
}
func (s studentMgr)addStudent()  {
//根据输入添加学生
	var(
		id int64
		name string
		inputVal string
	)
	fmt.Printf("请输入: 学号|姓名\n")

	fmt.Scan(&inputVal)
	finvar:=strings.Split(inputVal,"|")
	id, err := strconv.ParseInt(finvar[0], 10, 64)
	if err!=nil{
		print("字符串转整数错误")
	}
	fmt.Print("++++++")
	name=finvar[1]
	fmt.Printf("id:%d,name:%s\n",id,name)
	stu:=student{
		id:id ,
		name: name,
	}
	smr.allStudent[stu.id]=stu
}

func (s studentMgr)editStudent()  {
	var (
		inputId int64
		newName string
	)
	fmt.Printf("请输入要编辑的id号:")
	fmt.Scan(&inputId)
	if val,ok:=smr.allStudent[inputId];ok{
		fmt.Printf("当前要删除的用户 id:%d,name:%v\n", inputId, val)
	}else {
		fmt.Println("不存在value")
	}
	fmt.Printf("请输入新的name:")
	fmt.Scan(&newName)

	smr.allStudent[inputId]=student{
		inputId,
		newName,
	}
}
func (s studentMgr)delStudent()  {
	fmt.Printf("当前所有学生如下:%v\n", smr.allStudent)
	var(
		inId int64
	)
	fmt.Printf("请输入要删除的学生id\n")
	fmt.Scan(&inId)
	delete(smr.allStudent,inId)

}

/*
打印一个菜单
 */

func showMem()  {
	println("--------weclcom--------\n")
	println(`
	1.查看所有学生
	2、增加学生
	3、更新学生
	4、删除学生
	5、退出
`)
}


var smr studentMgr


func main()  {
	smr=studentMgr{ //修改全局变量
		allStudent:make(map[int64]student),
	}
	for  {
		showMem()
		println("请输入你的选择\n")
		var choice int
		fmt.Scan(&choice)


		switch choice {
		case 1:
			smr.showStudents()
		case 2:
			smr.addStudent()
		case 3:
			smr.editStudent()
		case 4:
			smr.delStudent()
		case 5:
			os.Exit(1)
		default:
			println("你输入的有错误,重新输入!!!")
		}

	}
}

持续更新中.....

个人网站

go基础直达

*更多精彩关注公众号"1运维com"