Go语言实现学生管理系统

使用go来实现一个学生管理系统,要实现的功能也很简单,拥有查看、添加、修改、删除功能。代码分为两个文件main.go、student.go,main作为程序入口有功能展示模块,student是实现上述功能的方法和函数。当然也可以把两个文件合到一起,把student中的代码拷贝到main即可。

注意:

1. 代码都在一个文件是可以直接go run或go build

2. 代码分为两个文件存放,需要先go build,然后执行build生成的可执行文件,不能直接go run 会提示找不到主程序里引用的代码

代码实现

main.go

package main

import (
	"fmt"
	"os"
)

// 声明一个学生管理属性对象
var instu studentMgs

// 同一个package里只能有一个main函数
// 同一个package里如果要调用另一个文件里的函数需要编译以后才能使用,就是go build以后执行build生成的可执行文件
func main() {
	gotest()
	instu = studentMgs{ // 不要放到for循环内,重新赋值会覆盖已存数据
		stuMgs: make(map[string]student, 100),
	}
	for {
		fmt.Println("欢迎进入学生管理系统")
		fmt.Println(`
			1. 查看所有学生信息
			2. 添加学生信息
			3. 修改学生信息
			4. 删除学生信息
			5. 退出
		`)
		fmt.Print("请输入你的选择:")
		var i int8
		fmt.Scanln(&i)
		fmt.Printf("你的选择是:%d\n", i)
		switch i {
		case 1:
			instu.showstu()
		case 2:
			instu.addstu()
		case 3:
			instu.editstu()
		case 4:
			instu.delstu()
		case 5:
			os.Exit(1)
		default:
			fmt.Println("无效的参数!")
		}
	}

}

student.go

package main

import (
	"fmt"
	"sort"
)

func gotest() {
	fmt.Println("但行好事莫问前程")
}

// 定义一个学生类型
type student struct {
	id   int64
	name string
}

// 创建学生信息管理者,要调用方法的那种就要创建一个结构体
type studentMgs struct {
	stuMgs map[string]student 
}

// 定义方法
// 查看所有学生
func (s studentMgs) showstu() {
	// 添加排序功能
	stuID := make([]string, 0, len(s.stuMgs))
	for i := range s.stuMgs {
		stuID = append(stuID, i)
	}
	sort.Strings(stuID)
	for i, v := range stuID {
		fmt.Printf("序号:%d  学号:%v  姓名:%v\n", i+1, v, s.stuMgs[v].name)
	}
}

// 添加学生
func (s studentMgs) addstu() {
	var (
		newid   int64
		newname string
	)
	fmt.Print("请输入要添加的学生id:")
	fmt.Scanln(&newid)
	fmt.Print("请输入要添加的学生姓名:")
	fmt.Scanln(&newname)
	strID := fmt.Sprintf("%d", newid)
	_, v := s.stuMgs[strID] // v值为ture或flase
	if v {                  // v值为空为false,不为空为true
		fmt.Printf("%v已存在\n", strID)
	} else {
		newstu := student{
			id:   newid,
			name: newname,
		}
		// stuMgs接受一个student类型的值,所以要先创建一个student类型的对象再赋值
		s.stuMgs[strID] = newstu
	}
}

// 修改学生
func (s studentMgs) editstu() {
	var (
		newid   int64
		newname string
	)
	fmt.Print("请输入要修改的学生id:")
	fmt.Scanln(&newid)
	fmt.Print("请输入要修改学生姓名为:")
	fmt.Scanln(&newname)
	strID := fmt.Sprintf("%d", newid)
	_, v := s.stuMgs[strID] // v值为ture或flase
	if !v {                 // v值为空为true,不为空为false
		fmt.Printf("%v不存在\n", strID)
	} else {
		newstu := student{
			id:   newid,
			name: newname,
		}
		// stuMgs接受一个student类型的值,所以要先创建一个student类型的对象再赋值
		s.stuMgs[strID] = newstu
	}
}

// 删除学生
func (s studentMgs) delstu() {
	var newid int64
	fmt.Print("请输入要删除的学生id:")
	fmt.Scanln(&newid)
	strID := fmt.Sprintf("%d", newid)
	_, v := s.stuMgs[strID] // v值为ture或flase
	if !v {                 // v值为空为true,不为空为false
		fmt.Printf("%v不存在\n", strID)
	} else {
		delete(s.stuMgs, strID)
	}
}

运行效果

D:\Software\godata\src\1222>1222.exe
但行好事莫问前程
欢迎进入学生管理系统

                        1. 查看所有学生信息
                        2. 添加学生信息
                        3. 修改学生信息
                        4. 删除学生信息
                        5. 退出

请输入你的选择:

添加学生

请输入你的选择:2
你的选择是:2
请输入要添加的学生id:10086
请输入要添加的学生姓名:移动
# 当添加的学号已存在会提示
10086已存在

查看学生信息

请输入你的选择:1
你的选择是:1
序号:1  学号:10000  姓名:对象
序号:2  学号:10010  姓名:联通
序号:3  学号:10086  姓名:移动

修改学生信息

请输入你的选择:3
你的选择是:3
请输入要修改的学生id:10000
请输入要修改学生姓名为:电信
欢迎进入学生管理系统

                        1. 查看所有学生信息
                        2. 添加学生信息
                        3. 修改学生信息
                        4. 删除学生信息
                        5. 退出

请输入你的选择:1
你的选择是:1
序号:1  学号:10000  姓名:电信
序号:2  学号:10010  姓名:联通
序号:3  学号:10086  姓名:移动
# 如果输入的学号不存在会提示
10000不存在

删除学生信息

请输入你的选择:4
你的选择是:4
请输入要删除的学生id:10010
欢迎进入学生管理系统

                        1. 查看所有学生信息
                        2. 添加学生信息
                        3. 修改学生信息
                        4. 删除学生信息
                        5. 退出

请输入你的选择:1
你的选择是:1
序号:1  学号:10000  姓名:电信
序号:2  学号:10086  姓名:移动
# 如果删除的学号不存在也会提示
10010不存在

选择退出的话就会直接退出程序

结语

初学go有纰漏的地方,欢迎各位小伙伴留言

 

你可能感兴趣的:(GO)