【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏
作者:mmseoamin日期:2023-12-25

【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第1张

  • 博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。
  • 博主主页: @是瑶瑶子啦
  • 所属专栏: Go语言核心编程
  • 近期目标:写好专栏的每一篇文章

【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第2张

学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个简易的学生信息管理系统来练练手吧!

文章目录

  • 一、学生信息管理系统程序介绍
  • 二、功能分析和实现
    • 2.1:项目目录结构:
    • 2.2:开始菜单:
    • 2.3:类型构建
    • 2.3:整体逻辑:
    • 2.5:功能1:添加学员信息
    • 2.6:功能2:根据id修改学员信息
    • 2.7:展示所有学员信息、退出程序
    • 三、总结

      一、学生信息管理系统程序介绍

      • 功能介绍
        • 添加学员信息
        • 根据学号(id)编辑学员信息
        • 展示所有学员信息
        • 退出系统

          【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第3张

          二、功能分析和实现

          2.1:项目目录结构:

          • stuInfoProject:项目文件夹
            • go.mod
            • main.go:主程序,核心逻辑代码
            • student.go:学生类型结构体的定义、构造函数、方法等
            • studentSys:学生信息管理系统类型结构体的定义、构造函数、方法等

              2.2:开始菜单:

              在main.go中定义显示菜单函数

              func showMenu() {
              	info := `
              	*********************欢迎来到学生管理系统***********
              		1、添加学员信息
              		2、编辑学员信息
              		3、展示所有学员信息
              		4、退出系统
              	************************************************
              `
              	fmt.Print(info)
              }
              

              2.3:类型构建

              在这个项目中,我们需要两个结构体:

              • 学生结构体:student,定义等封装在student.go文件中
                package main
                // 定义一个学生类型结构体
                type student struct {
                	id    int    //学号
                	name  string //姓名
                	class string
                }
                // 构造函数
                func newStudent(id int, name, class string) *student {
                	return &student{
                		id:    id,
                		name:  name,
                		class: class,
                	}
                }
                
                • 学生信息管理系统结构体studentSys,定义和方法等封装在studentSys.go中
                  package main
                  import "fmt"
                  type studentSys struct {
                  	num      int        //学生的数量
                  	students []*student //存储学生实体的切片
                  }
                  //构造函数
                  func newStudentSys() *studentSys {
                  	return &studentSys{
                  		num:      0,
                  		students: make([]*student, 0, 100),
                  	}
                  }
                  // 1)这个管理系统所具备的方法:添加学生
                  func (sys *studentSys) addStudent(stu *student) {
                  	sys.students = append(sys.students, stu)
                  	sys.num += 1
                  	fmt.Println("************添加成功**********")
                  }
                  // 2)编辑学生
                  func (sys *studentSys) updateStudent(stu *student) {
                  	for i, v := range sys.students {
                  		if stu.id == v.id { //当学号相同时,找到要修改学生
                  			sys.students[i] = stu
                  			fmt.Println("***************修改成功***************")
                  			return
                  		}
                  	}
                  	fmt.Println("*********找不到该学号学生,修改失败*********")
                  }
                  // 3)展示学生
                  func (sys *studentSys) showStudents() {
                  	for _, v := range sys.students {
                  		fmt.Println("学号:", v.id, "姓名:", v.name, "班级", v.class)
                  	}
                  }
                  

                  2.3:整体逻辑:

                  func main() {
                  	//构造一个学生管理系统
                  	stuSys := newStudentSys() //指针类型的,只创建一次,因为只有一个系统
                  	for {
                  		//打印菜单
                  		showMenu()
                  		//接收用户输入数据
                  		var input int
                  		fmt.Scanf("%d\n", &input)
                  		//switch-case进行流程空指
                  		switch input {
                  		case 1: //添加学生
                  			
                  		case 2: //根据id修改学生信息
                  		
                  		case 3: //展示所有学生的信息
                  		
                  		case 4:
                  			os.Exit(0) //退出系统
                  		default:
                  			fmt.Println("err:你输入选项格式有误,请重新输入!")
                  		}
                  	}
                  }
                  

                  2.5:功能1:添加学员信息

                  【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第4张

                  • 根据用户输入生成学员实例
                    // 获取用户输入的信息,创造学员的函数
                    func newStuByUser() (*student, error) {
                    	var (
                    		id    int
                    		name  string
                    		class string
                    	)
                    	//读取用户输入
                    	_, err := fmt.Scanln(&id, &name, &class)
                    	//出错,给出错误信息,并且将错误返回
                    	if err != nil {
                    		fmt.Println("输入出错,err:", err)
                    	}
                    	return newStudent(id, name, class), err
                    }
                    
                    • case1:内核心逻辑代码
                      	case 1: //添加学生
                      	fmt.Print("请输入学员的学号、名字、班级:(以空格隔开)")
                      	s1, err := newStuByUser()
                      	//调用学生管理系统所具备的方法,像其中添加学生
                      	
                      	//没有出错才添加
                      	if err == nil {
                      		stuSys.addStudent(s1)
                      	}
                      

                      2.6:功能2:根据id修改学员信息

                      【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第5张

                      • 根据用户输入生成学员实例

                        同上

                      • case2:内核心逻辑代码
                        		case 2:
                        			fmt.Println("请输入该学生的学号,及其要修改的名称和班级:(用空格隔开)")
                        			s1, err := newStuByUser()
                        			if err == nil {
                        				stuSys.updateStudent(s1)
                        			}
                        

                        2.7:展示所有学员信息、退出程序

                        	case 3:
                        			fmt.Println("以下是所有学生信息展示:")
                        			stuSys.showStudents()
                        		case 4:
                        			os.Exit(0) //退出系统
                        		default:
                        			fmt.Println("err:你输入选项格式有误,请重新输入!")
                        		}
                        

                        三、总结

                        综上,就是一个比较简单的,适合巩固基础的学生信息管理系统的小项目。涉及到函数、结构体、方法、构造函数等基础知识,非常适合小白拿来练手和巩固知识!


                        欢迎在评论区交流和留下你的想法和建议

                        如果对你有用,还请:💭评论+👍🏻点赞+⭐收藏+➕关注

                        【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏,在这里插入图片描述,第6张

                        • Java岛冒险记【从小白到大佬之路】

                        • LeetCode每日一题–进击大厂
                        • 算法
                        • C/C++
                        • Go语言核心编程
                        • 数据结构