go语言实现一个简单的学生管理系统

记得不管是学c还是c++,基本都会被要求写一个学生管理系统,那学了go之后不例外也来实现一个简单的。

主要功能:

  • 1.添加学生信息
  • 2.修改学生信息
  • 3.展示全部学生信息

代码部分:

首先是student.go,这一部分主要是定义学生和管理的结构体以及对应的方法

package main

import "fmt"

//学生
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,
	}
}

//学生管理
type manage struct {
	allstudent []*student
}

//学生管理的构造函数
func newmanage() *manage {
	return &manage{allstudent: make([]*student, 0, 100)} //容量是100
}

//1.添加学生
func (s *manage) addstudent(newstu *student) {
	s.allstudent = append(s.allstudent, newstu)
}

//2.编辑学生信息
func (s *manage) modifystudent(newstu *student) {
	for i, v := range s.allstudent {
		if newstu.id == v.id {
			s.allstudent[i] = newstu
			return
		}
	}
	fmt.Printf("系统中不存在学号为%d的这个学生!\n", newstu.id)
}

//3.展示所有学生信息
func (s *manage) showallstudent() {
	for _, v := range s.allstudent {
		fmt.Printf("学号:%d,姓名:%s,班级:%s\n", v.id, v.name, v.class)
	}
}

然后main.go,这主要是实现简单的输入和菜单提示

package main

import (
	"fmt"
	"os"
)

func menu() {
	fmt.Println("欢迎使用go学生管理系统")
	fmt.Println("1:添加学生")
	fmt.Println("2:编辑学生信息")
	fmt.Println("3:展示所有学生信息")
	fmt.Println("4:退出")
}

func getinput() *student {
	var (
		id    int
		name  string
		class string
	)
	fmt.Println("请输入学生的学号:")
	fmt.Scanf("%d\n", &id)
	fmt.Println("请输入学生的姓名:")
	fmt.Scanf("%s\n", &name)
	fmt.Println("请输入学生的班级")
	fmt.Scanf("%s\n", &class)

	stu := newstudent(id, name, class)
	return stu
}

func main() {
	sm := newmanage()
	for {
		//1.打印菜单
		menu()
		//2.用户选择操作
		var input int
		fmt.Print("请输入你要的操作数:")
		fmt.Scanf("%d\n", &input)
		fmt.Println("你选择的操作是:", input)
		//3.执行操作
		switch input {
		case 1: //添加学生
			stu := getinput()
			sm.addstudent(stu)
		case 2: //编辑学生
			stu := getinput()
			sm.modifystudent(stu)
		case 3: //展示所有学生
			sm.showallstudent()
		case 4: //退出
			os.Exit(0)
		}
	}
}

运行和结果

运行:cd到文件夹下然后go build
在这里插入图片描述
在这里插入图片描述

运行结果:
在这里插入图片描述
在这里插入图片描述

发布了85 篇原创文章 · 获赞 55 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/shelgi/article/details/103894195