学生管理系统
本程序是为了联系Go语言前期知识,包括常量、变量、结构体、文件调用等。
StudentManage.go
负责学生管理系统功能的实现
package main
import "fmt"
// 学生信息管理系统
// 1. 保存数据 --> 结构体字段
// 2. 三个功能 --> 结构体方法
type student struct {
id int64
name string
}
type studentManager struct {
allStudent map[int64]*student
}
// 查看学生
func (s *studentManager) showStudents(){
for k, v := range s.allStudent{
fmt.Printf("学号:%d, 姓名:%s\n", k, v.name)
}
}
// 增加学生
func (s *studentManager) addStudent() {
// 根据输入创建一个新的学生
var(
id int64
name string
)
fmt.Println("请输入学号:")
_, _ = fmt.Scanln(&id)
fmt.Println("请输入姓名:")
_, _ = fmt.Scanln(&name)
newStu := student{
id: id,
name: name,
}
// 将新的学生添加到slice中
s.allStudent[newStu.id] = &newStu
fmt.Println("添加成功!")
}
// 修改学生
func (s *studentManager) updateStudent() {
// 获取用户输入学号
var id int64
fmt.Println("请输入修改学生的学号:")
_, _ = fmt.Scanln(&id)
// 展示该学生信息,否则输出查无此人
// 判断map是由包含该键
// 1. value := map[key], 若value为该类型的零值,表示查无此项
// 2,value, ok := map[key, 若key = false,表示查无此项
stuObj, ok := s.allStudent[id]
if ok != true{
fmt.Println("查无此人,请查证后输入!")
return
}
fmt.Printf("学号:%d, 姓名:%s\n", stuObj.id, stuObj.name)
// 输入修改后的相关信息
var newName string
fmt.Println("请输入修改学生的新姓名:")
_, _ = fmt.Scanln(&newName)
stuObj.name = newName
// 更新学生信息
s.allStudent[id].name = newName
}
// 删除学生
func (s *studentManager) deleteStudent() {
// 获取用户输入学生的id
var id int64
fmt.Println("请输入删除学生的学号:")
_, _ = fmt.Scanln(&id)
// 查找该学生信息,有则删除,否则输出查无此人
_, ok := s.allStudent[id]
if !ok{
fmt.Println("查无此人,请查证后输入!")
return
}
delete(s.allStudent, id)
fmt.Println("删除成功!")
}
studentManagerSys.go
Main入口,负责各功能的调用。
package main
import (
"fmt"
"os"
)
// 学生信息管理系统
var smr studentManager
// 菜单函数
func showMenu() {
fmt.Println("----------Welcome sms!----------")
fmt.Println(
`
1. 查看所有学生
2. 添加学生
3. 修改学生
4. 删除学生
5. 退出`)
}
func main() {
smr = studentManager{
allStudent: make(map[int64]*student, 100),
}
var choice int
showMenu()
for {
// 等待用户输入
fmt.Println("请选择要进行的操作:")
_, _ = fmt.Scanln(&choice)
switch choice {
case 1:
smr.showStudents()
case 2:
smr.addStudent()
case 3:
smr.updateStudent()
case 4:
smr.deleteStudent()
case 5:
os.Exit(1)
default:
fmt.Println("输入无效,请重新输入选项!")
}
}
}