一个学生管理者,拥有 3 项能力:
- 查看所有学生信息。
- 新增学生信息。
- 删除学生信息。
package main
import (
"fmt"
"os"
)
func main() {
all_students := NewManager()
for {
// 提示信息用户输入
message()
// 获取用户输入,判断后续行为
var input int
fmt.Scanln(&input)
switch input {
case 1:
// 查看所有学生信息
fmt.Printf("您选择了 %v\n\n", input)
all_students.Show()
case 2:
// 新增学生信息
fmt.Printf("您选择了 %v\n\n", input)
var name string
var age int
fmt.Printf("请输入学生姓名:")
fmt.Scanln(&name)
fmt.Printf("请输入学生年龄:")
fmt.Scanln(&age)
all_students.Add(name, age)
case 3:
// 删除学生信息
fmt.Printf("您选择了 %v\n\n", input)
fmt.Printf("请输入需要删除的学生姓名:")
var name string
fmt.Scanln(&name)
all_students.Del(name)
case 4:
fmt.Printf("您选择了 %v\n\n", input)
os.Exit(0)
default:
fmt.Printf("您输入了未知指令 %v\n\n", input)
}
}
}
func message() {
fmt.Printf("\n=== 欢迎使用学生管理系统,指令:\n")
fmt.Printf("\t\t1. 查看所有学生信息\n")
fmt.Printf("\t\t2. 新增学生信息\n")
fmt.Printf("\t\t3. 删除学生信息\n")
fmt.Printf("\t\t4. 退出\n")
fmt.Printf("请输入您需要的指令:")
}
type Student struct {
name string
age int
}
type Manager struct {
AllStudents []Student
}
func NewStudent(name string, age int) Student {
return Student{name, age}
}
func NewManager() Manager {
return Manager{make([]Student, 0, 10)}
}
func (a *Manager) Show() {
if len(a.AllStudents) == 0 {
fmt.Println("[暂时没有学生]")
return
}
fmt.Println("所有学生信息如下:")
for _, s := range a.AllStudents {
fmt.Printf("|%s\t|%d|\n", s.name, s.age)
}
fmt.Println("============== 结束符 ==============")
}
func (a *Manager) Add(name string, age int) {
a.AllStudents = append(a.AllStudents, Student{name, age})
}
func (a *Manager) Del(name string){
newManager := make([]Student, 0, len(a.AllStudents))
for _, s := range a.AllStudents {
if s.name == name {
fmt.Printf("删除了学生 %s 信息", name)
}else{
newManager = append(newManager, s)
}
}
a.AllStudents = newManager
}