Golang项目之函数版学生管理系统
前言
学习第3天,基于函数的方式编写小项目:学生管理系统
代码
package main import ( "fmt" "os" ) /* 函数版学生管理系统 写一个系统能够查看所有的学生/新增学生/删除学生 */ var ( allStudent map[int64]*student // 变量声明 ) type student struct{ id int64 name string } // newStudent是一个student类型的构造函数 func newStudent(id int64,name string)*student{ return &student{ id: id, name: name, } } func showAllStudent(){ if len(allStudent) != 0{ // 如果map不为空,把所有学生都打印出来 for k,v := range allStudent{ fmt.Printf("学号:%d 姓名:%s\n",k,v.name) } } else{ // 否则,提示学生信息为空 fmt.Println("msg:学生信息为空") } } func addStudent(){ // 想allStudent中添加一个新的学生 // 1.创建一个新学生 // 1.1 获取用户输入 var ( id int64 name string ) fmt.Print("请输入学生的学号:") fmt.Scanln(&id) fmt.Print("请输入学生的姓名:") fmt.Scanln(&name) // 1.2 判断学生是否存在 if _,ok := allStudent[id];! ok{ // 学生不存在,则添加 // 1.3造学生(调用student的构造函数) newStu := newStudent(id,name) // 2.追加到allStudent这个map中 allStudent[id] = newStu }else{ // 学生存在,则提示 fmt.Println("msg:添加的学生已存在") } } func deleteStudent(){ // 1.请用户输入要删除的学生的序号 var ( deleteId int64 ) fmt.Print("请输入学生的学号:") fmt.Scanln(&deleteId) // 2.判断学生是否存在 if _,ok := allStudent[deleteId];!ok{ fmt.Println("msg:学生不存在") }else{ // 2.去allStudent这个map中根据学号删除对应的键值对 delete(allStudent,deleteId) } } func main(){ allStudent = make(map[int64]*student, 48) // 初始化(开辟内存空间) for { // 1.打印菜单 fmt.Println("欢迎光临学生管理系统!") fmt.Println(` 1.查看所有学生 2.新增学生 3.删除学生 4.退出 `) fmt.Print("请输入编号:") // 2.等待用户选择下一步要做什么 var choice int fmt.Scanln(&choice) fmt.Printf("你选择了> %d <这个选项!\n",choice) // 3.执行对应的函数 switch choice { case 1: fmt.Println("------学生信息-----") showAllStudent() fmt.Println("--------end-------") case 2: addStudent() case 3: deleteStudent() case 4: os.Exit(1) default: fmt.Println("输入编号不存在") } } }